Raspbian Package Auto-Building

Build log for vim (2:8.0.0022-1) on armhf

vim2:8.0.0022-1armhf → 2016-10-11 02:37:21

sbuild (Debian sbuild) 0.70.0 (03 Aug 2016) on bm-wb-03

+==============================================================================+
| vim 2:8.0.0022-1 (armhf)                     Tue, 11 Oct 2016 01:29:14 +0000 |
+==============================================================================+

Package: vim
Version: 2:8.0.0022-1
Source Version: 2:8.0.0022-1
Distribution: stretch-staging
Machine Architecture: armhf
Host Architecture: armhf
Build Architecture: armhf

I: NOTICE: Log filtering will replace 'var/lib/schroot/mount/stretch-staging-armhf-sbuild-da091a1a-93c1-4f3f-b7eb-1041f344b19d' with '<<CHROOT>>'

+------------------------------------------------------------------------------+
| Update chroot                                                                |
+------------------------------------------------------------------------------+

Get:1 http://172.17.0.1/private stretch-staging InRelease [11.3 kB]
Get:2 http://172.17.0.1/private stretch-staging/main Sources [9336 kB]
Get:3 http://172.17.0.1/private stretch-staging/main armhf Packages [11.3 MB]
Fetched 20.6 MB in 22s (901 kB/s)
Reading package lists...
W: No sandbox user '_apt' on the system, can not drop privileges

+------------------------------------------------------------------------------+
| Fetch source files                                                           |
+------------------------------------------------------------------------------+


Check APT
---------

Checking available source versions...

Download source files with APT
------------------------------

Reading package lists...
NOTICE: 'vim' packaging is maintained in the 'Git' version control system at:
https://anonscm.debian.org/cgit/pkg-vim/vim.git/
Please use:
git clone https://anonscm.debian.org/cgit/pkg-vim/vim.git/
to retrieve the latest (possibly unreleased) updates to the package.
Need to get 13.1 MB of source archives.
Get:1 http://172.17.0.1/private stretch-staging/main vim 2:8.0.0022-1 (dsc) [2932 B]
Get:2 http://172.17.0.1/private stretch-staging/main vim 2:8.0.0022-1 (tar) [12.9 MB]
Get:3 http://172.17.0.1/private stretch-staging/main vim 2:8.0.0022-1 (diff) [149 kB]
Fetched 13.1 MB in 1s (9985 kB/s)
Download complete and in download only mode
I: NOTICE: Log filtering will replace 'build/vim-XFPoUg/vim-8.0.0022' with '<<PKGBUILDDIR>>'
I: NOTICE: Log filtering will replace 'build/vim-XFPoUg' with '<<BUILDDIR>>'

+------------------------------------------------------------------------------+
| Install build-essential                                                      |
+------------------------------------------------------------------------------+


Setup apt archive
-----------------

Merged Build-Depends: build-essential, fakeroot
Filtered Build-Depends: build-essential, fakeroot
dpkg-deb: building package 'sbuild-build-depends-core-dummy' in '/<<BUILDDIR>>/resolver-2HpFDd/apt_archive/sbuild-build-depends-core-dummy.deb'.
dpkg-scanpackages: warning: Packages in archive but missing from override file:
dpkg-scanpackages: warning:   sbuild-build-depends-core-dummy
dpkg-scanpackages: info: Wrote 1 entries to output Packages file.
gpg: keybox '/<<BUILDDIR>>/resolver-2HpFDd/gpg/pubring.kbx' created
gpg: /<<BUILDDIR>>/resolver-2HpFDd/gpg/trustdb.gpg: trustdb created
gpg: key 3CA43A8AAD304FAC: public key "Sbuild Signer (Sbuild Build Dependency Archive Key) <buildd-tools-devel@lists.alioth.debian.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: key 3CA43A8AAD304FAC: "Sbuild Signer (Sbuild Build Dependency Archive Key) <buildd-tools-devel@lists.alioth.debian.org>" not changed
gpg: key 3CA43A8AAD304FAC: secret key imported
gpg: Total number processed: 1
gpg:              unchanged: 1
gpg:       secret keys read: 1
gpg:   secret keys imported: 1
gpg: using "Sbuild Signer" as default secret key for signing
Ign:1 copy:/<<BUILDDIR>>/resolver-2HpFDd/apt_archive ./ InRelease
Get:2 copy:/<<BUILDDIR>>/resolver-2HpFDd/apt_archive ./ Release [957 B]
Get:3 copy:/<<BUILDDIR>>/resolver-2HpFDd/apt_archive ./ Release.gpg [342 B]
Get:4 copy:/<<BUILDDIR>>/resolver-2HpFDd/apt_archive ./ Sources [349 B]
Get:5 copy:/<<BUILDDIR>>/resolver-2HpFDd/apt_archive ./ Packages [433 B]
Fetched 2081 B in 0s (3417 B/s)
Reading package lists...
W: No sandbox user '_apt' on the system, can not drop privileges
Reading package lists...

Install core build dependencies (apt-based resolver)
----------------------------------------------------

Installing build dependencies
Reading package lists...
Building dependency tree...
Reading state information...
The following packages were automatically installed and are no longer required:
  dirmngr fuse2fs gnupg-l10n kbd libffi6 libfuse2 libgnutls30 libhogweed4
  libldap-2.4-2 libnettle6 libp11-kit0 libsasl2-2 libsasl2-modules
  libsasl2-modules-db libssl1.0.2 libtasn1-6 manpages netbase psmisc
Use 'apt autoremove' to remove them.
The following NEW packages will be installed:
  sbuild-build-depends-core-dummy
0 upgraded, 1 newly installed, 0 to remove and 14 not upgraded.
Need to get 762 B of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 copy:/<<BUILDDIR>>/resolver-2HpFDd/apt_archive ./ sbuild-build-depends-core-dummy 0.invalid.0 [762 B]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 762 B in 0s (0 B/s)
Selecting previously unselected package sbuild-build-depends-core-dummy.
(Reading database ... 13385 files and directories currently installed.)
Preparing to unpack .../sbuild-build-depends-core-dummy_0.invalid.0_armhf.deb ...
Unpacking sbuild-build-depends-core-dummy (0.invalid.0) ...
Setting up sbuild-build-depends-core-dummy (0.invalid.0) ...
W: No sandbox user '_apt' on the system, can not drop privileges

+------------------------------------------------------------------------------+
| Check architectures                                                          |
+------------------------------------------------------------------------------+

Arch check ok (armhf included in any all)

+------------------------------------------------------------------------------+
| Install package build dependencies                                           |
+------------------------------------------------------------------------------+


Setup apt archive
-----------------

Merged Build-Depends: libacl1-dev, libgpmg1-dev, autoconf, debhelper (>= 9), libtinfo-dev | libncurses5-dev, libselinux1-dev, libgtk2.0-dev, libgtk-3-dev, libxaw7-dev, libxt-dev, libxpm-dev, libperl-dev, tcl-dev, python3-dev, ruby, ruby-dev, lua5.2, liblua5.2-dev
Merged Build-Conflicts: autoconf2.13, ruby1.8 (<< 1.8.7.358-8), ruby1.8-dev (<< 1.8.7.358-8)
Filtered Build-Depends: libacl1-dev, libgpmg1-dev, autoconf, debhelper (>= 9), libtinfo-dev, libselinux1-dev, libgtk2.0-dev, libgtk-3-dev, libxaw7-dev, libxt-dev, libxpm-dev, libperl-dev, tcl-dev, python3-dev, ruby, ruby-dev, lua5.2, liblua5.2-dev
Filtered Build-Conflicts: autoconf2.13, ruby1.8 (<< 1.8.7.358-8), ruby1.8-dev (<< 1.8.7.358-8)
dpkg-deb: building package 'sbuild-build-depends-vim-dummy' in '/<<BUILDDIR>>/resolver-xbPVxk/apt_archive/sbuild-build-depends-vim-dummy.deb'.
dpkg-scanpackages: warning: Packages in archive but missing from override file:
dpkg-scanpackages: warning:   sbuild-build-depends-vim-dummy
dpkg-scanpackages: info: Wrote 1 entries to output Packages file.
gpg: keybox '/<<BUILDDIR>>/resolver-xbPVxk/gpg/pubring.kbx' created
gpg: /<<BUILDDIR>>/resolver-xbPVxk/gpg/trustdb.gpg: trustdb created
gpg: key 3CA43A8AAD304FAC: public key "Sbuild Signer (Sbuild Build Dependency Archive Key) <buildd-tools-devel@lists.alioth.debian.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: key 3CA43A8AAD304FAC: "Sbuild Signer (Sbuild Build Dependency Archive Key) <buildd-tools-devel@lists.alioth.debian.org>" not changed
gpg: key 3CA43A8AAD304FAC: secret key imported
gpg: Total number processed: 1
gpg:              unchanged: 1
gpg:       secret keys read: 1
gpg:   secret keys imported: 1
gpg: using "Sbuild Signer" as default secret key for signing
Ign:1 copy:/<<BUILDDIR>>/resolver-xbPVxk/apt_archive ./ InRelease
Get:2 copy:/<<BUILDDIR>>/resolver-xbPVxk/apt_archive ./ Release [957 B]
Get:3 copy:/<<BUILDDIR>>/resolver-xbPVxk/apt_archive ./ Release.gpg [342 B]
Get:4 copy:/<<BUILDDIR>>/resolver-xbPVxk/apt_archive ./ Sources [492 B]
Get:5 copy:/<<BUILDDIR>>/resolver-xbPVxk/apt_archive ./ Packages [552 B]
Fetched 2343 B in 0s (3886 B/s)
Reading package lists...
W: No sandbox user '_apt' on the system, can not drop privileges
Reading package lists...

Install vim build dependencies (apt-based resolver)
---------------------------------------------------

Installing build dependencies
Reading package lists...
Building dependency tree...
Reading state information...
The following packages were automatically installed and are no longer required:
  dirmngr fuse2fs gnupg-l10n kbd libfuse2 libldap-2.4-2 libsasl2-2
  libsasl2-modules libsasl2-modules-db manpages netbase psmisc
Use 'apt autoremove' to remove them.
The following additional packages will be installed:
  adwaita-icon-theme autoconf automake autopoint autotools-dev bsdmainutils
  ca-certificates dconf-gsettings-backend dconf-service debhelper
  dh-autoreconf dh-python dh-strip-nondeterminism file fontconfig
  fontconfig-config fonts-dejavu-core gettext gettext-base gir1.2-atk-1.0
  gir1.2-atspi-2.0 gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0
  gir1.2-gtk-2.0 gir1.2-gtk-3.0 gir1.2-pango-1.0 glib-networking
  glib-networking-common glib-networking-services gnome-icon-theme groff-base
  gsettings-desktop-schemas gtk-update-icon-cache hicolor-icon-theme
  icu-devtools intltool-debian libacl1-dev libarchive-zip-perl
  libatk-bridge2.0-0 libatk-bridge2.0-dev libatk1.0-0 libatk1.0-data
  libatk1.0-dev libatspi2.0-0 libatspi2.0-dev libattr1-dev libavahi-client3
  libavahi-common-data libavahi-common3 libbsd0 libcairo-gobject2
  libcairo-script-interpreter2 libcairo2 libcairo2-dev libcolord2 libcroco3
  libcups2 libdatrie1 libdbus-1-dev libdconf1 libelf1 libepoxy-dev libepoxy0
  libexpat1 libexpat1-dev libfile-stripnondeterminism-perl libfontconfig1
  libfontconfig1-dev libfreetype6 libfreetype6-dev libgdk-pixbuf2.0-0
  libgdk-pixbuf2.0-common libgdk-pixbuf2.0-dev libgirepository-1.0-1
  libglib2.0-0 libglib2.0-bin libglib2.0-data libglib2.0-dev libgmp-dev
  libgmpxx4ldbl libgpm-dev libgpm2 libgraphite2-3 libgraphite2-dev
  libgssapi-krb5-2 libgtk-3-0 libgtk-3-common libgtk-3-dev libgtk2.0-0
  libgtk2.0-common libgtk2.0-dev libharfbuzz-dev libharfbuzz-gobject0
  libharfbuzz-icu0 libharfbuzz0b libice-dev libice6 libicu-dev libicu57
  libjbig0 libjpeg62-turbo libjson-glib-1.0-0 libjson-glib-1.0-common
  libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 liblcms2-2 liblua5.2-0
  liblua5.2-dev liblzo2-2 libmagic-mgc libmagic1 libmpdec2 libpango-1.0-0
  libpango1.0-dev libpangocairo-1.0-0 libpangoft2-1.0-0 libpangoxft-1.0-0
  libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libperl-dev libpipeline1
  libpixman-1-0 libpixman-1-dev libpng-dev libpng16-16 libproxy1v5
  libpthread-stubs0-dev libpython3-dev libpython3-stdlib libpython3.5
  libpython3.5-dev libpython3.5-minimal libpython3.5-stdlib libreadline-dev
  libreadline7 librest-0.7-0 librsvg2-2 librsvg2-common libruby2.3
  libselinux1-dev libsepol1-dev libsigsegv2 libsm-dev libsm6
  libsoup-gnome2.4-1 libsoup2.4-1 libtcl8.6 libthai-data libthai0 libtiff5
  libtimedate-perl libtinfo-dev libtool libunistring0 libx11-6 libx11-data
  libx11-dev libxau-dev libxau6 libxaw7 libxaw7-dev libxcb-render0
  libxcb-render0-dev libxcb-shm0 libxcb-shm0-dev libxcb1 libxcb1-dev
  libxcomposite-dev libxcomposite1 libxcursor-dev libxcursor1 libxdamage-dev
  libxdamage1 libxdmcp-dev libxdmcp6 libxext-dev libxext6 libxfixes-dev
  libxfixes3 libxft-dev libxft2 libxi-dev libxi6 libxinerama-dev libxinerama1
  libxkbcommon-dev libxkbcommon0 libxml2 libxml2-utils libxmu-dev
  libxmu-headers libxmu6 libxpm-dev libxpm4 libxrandr-dev libxrandr2
  libxrender-dev libxrender1 libxt-dev libxt6 libxtst-dev libxtst6 libyaml-0-2
  lua5.2 m4 man-db mime-support openssl pkg-config po-debconf python3
  python3-dev python3-minimal python3.5 python3.5-dev python3.5-minimal rake
  ruby ruby-dev ruby-did-you-mean ruby-minitest ruby-net-telnet
  ruby-power-assert ruby-test-unit ruby2.3 ruby2.3-dev rubygems-integration
  shared-mime-info tcl tcl-dev tcl8.6 tcl8.6-dev ucf x11-common
  x11proto-composite-dev x11proto-core-dev x11proto-damage-dev
  x11proto-fixes-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev
  x11proto-record-dev x11proto-render-dev x11proto-xext-dev
  x11proto-xinerama-dev xkb-data xorg-sgml-doctools xtrans-dev zlib1g-dev
Suggested packages:
  autoconf-archive gnu-standards autoconf-doc wamerican | wordlist whois
  vacation dh-make gettext-doc libasprintf-dev libgettextpo-dev groff
  libcairo2-doc colord cups-common libglib2.0-doc gmp-doc libgmp10-doc
  libmpfr-dev gpm krb5-doc krb5-user gvfs libgtk-3-doc libgtk2.0-doc
  libice-doc icu-doc liblcms2-utils imagemagick libpango1.0-doc readline-doc
  librsvg2-bin libsm-doc libtool-doc gfortran | fortran95-compiler gcj-jdk
  libxaw-doc libxcb-doc libxext-doc libxt-doc less www-browser
  libmail-box-perl python3-doc python3-tk python3-venv python3.5-venv
  python3.5-doc binfmt-support ri bundler tcl-doc tcl-tclreadline tcl8.6-doc
Recommended packages:
  curl | wget | lynx-cur at-spi2-core xdg-user-dirs libgtk-3-bin
  libgail-common libgtk2.0-bin python krb5-locales libtool-bin libpng-tools
  libltdl-dev libx11-doc xml-core libmail-sendmail-perl zip fonts-lato
  libjs-jquery
The following NEW packages will be installed:
  adwaita-icon-theme autoconf automake autopoint autotools-dev bsdmainutils
  ca-certificates dconf-gsettings-backend dconf-service debhelper
  dh-autoreconf dh-python dh-strip-nondeterminism file fontconfig
  fontconfig-config fonts-dejavu-core gettext gettext-base gir1.2-atk-1.0
  gir1.2-atspi-2.0 gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0
  gir1.2-gtk-2.0 gir1.2-gtk-3.0 gir1.2-pango-1.0 glib-networking
  glib-networking-common glib-networking-services gnome-icon-theme groff-base
  gsettings-desktop-schemas gtk-update-icon-cache hicolor-icon-theme
  icu-devtools intltool-debian libacl1-dev libarchive-zip-perl
  libatk-bridge2.0-0 libatk-bridge2.0-dev libatk1.0-0 libatk1.0-data
  libatk1.0-dev libatspi2.0-0 libatspi2.0-dev libattr1-dev libavahi-client3
  libavahi-common-data libavahi-common3 libbsd0 libcairo-gobject2
  libcairo-script-interpreter2 libcairo2 libcairo2-dev libcolord2 libcroco3
  libcups2 libdatrie1 libdbus-1-dev libdconf1 libelf1 libepoxy-dev libepoxy0
  libexpat1 libexpat1-dev libfile-stripnondeterminism-perl libfontconfig1
  libfontconfig1-dev libfreetype6 libfreetype6-dev libgdk-pixbuf2.0-0
  libgdk-pixbuf2.0-common libgdk-pixbuf2.0-dev libgirepository-1.0-1
  libglib2.0-0 libglib2.0-bin libglib2.0-data libglib2.0-dev libgmp-dev
  libgmpxx4ldbl libgpm-dev libgpm2 libgraphite2-3 libgraphite2-dev
  libgssapi-krb5-2 libgtk-3-0 libgtk-3-common libgtk-3-dev libgtk2.0-0
  libgtk2.0-common libgtk2.0-dev libharfbuzz-dev libharfbuzz-gobject0
  libharfbuzz-icu0 libharfbuzz0b libice-dev libice6 libicu-dev libicu57
  libjbig0 libjpeg62-turbo libjson-glib-1.0-0 libjson-glib-1.0-common
  libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 liblcms2-2 liblua5.2-0
  liblua5.2-dev liblzo2-2 libmagic-mgc libmagic1 libmpdec2 libpango-1.0-0
  libpango1.0-dev libpangocairo-1.0-0 libpangoft2-1.0-0 libpangoxft-1.0-0
  libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libperl-dev libpipeline1
  libpixman-1-0 libpixman-1-dev libpng-dev libpng16-16 libproxy1v5
  libpthread-stubs0-dev libpython3-dev libpython3-stdlib libpython3.5
  libpython3.5-dev libpython3.5-minimal libpython3.5-stdlib libreadline-dev
  libreadline7 librest-0.7-0 librsvg2-2 librsvg2-common libruby2.3
  libselinux1-dev libsepol1-dev libsigsegv2 libsm-dev libsm6
  libsoup-gnome2.4-1 libsoup2.4-1 libtcl8.6 libthai-data libthai0 libtiff5
  libtimedate-perl libtinfo-dev libtool libunistring0 libx11-6 libx11-data
  libx11-dev libxau-dev libxau6 libxaw7 libxaw7-dev libxcb-render0
  libxcb-render0-dev libxcb-shm0 libxcb-shm0-dev libxcb1 libxcb1-dev
  libxcomposite-dev libxcomposite1 libxcursor-dev libxcursor1 libxdamage-dev
  libxdamage1 libxdmcp-dev libxdmcp6 libxext-dev libxext6 libxfixes-dev
  libxfixes3 libxft-dev libxft2 libxi-dev libxi6 libxinerama-dev libxinerama1
  libxkbcommon-dev libxkbcommon0 libxml2 libxml2-utils libxmu-dev
  libxmu-headers libxmu6 libxpm-dev libxpm4 libxrandr-dev libxrandr2
  libxrender-dev libxrender1 libxt-dev libxt6 libxtst-dev libxtst6 libyaml-0-2
  lua5.2 m4 man-db mime-support openssl pkg-config po-debconf python3
  python3-dev python3-minimal python3.5 python3.5-dev python3.5-minimal rake
  ruby ruby-dev ruby-did-you-mean ruby-minitest ruby-net-telnet
  ruby-power-assert ruby-test-unit ruby2.3 ruby2.3-dev rubygems-integration
  sbuild-build-depends-vim-dummy shared-mime-info tcl tcl-dev tcl8.6
  tcl8.6-dev ucf x11-common x11proto-composite-dev x11proto-core-dev
  x11proto-damage-dev x11proto-fixes-dev x11proto-input-dev x11proto-kb-dev
  x11proto-randr-dev x11proto-record-dev x11proto-render-dev x11proto-xext-dev
  x11proto-xinerama-dev xkb-data xorg-sgml-doctools xtrans-dev zlib1g-dev
0 upgraded, 255 newly installed, 0 to remove and 14 not upgraded.
Need to get 181 MB/182 MB of archives.
After this operation, 516 MB of additional disk space will be used.
Get:1 copy:/<<BUILDDIR>>/resolver-xbPVxk/apt_archive ./ sbuild-build-depends-vim-dummy 0.invalid.0 [890 B]
Get:2 http://172.17.0.1/private stretch-staging/main armhf groff-base armhf 1.22.3-8 [1087 kB]
Get:3 http://172.17.0.1/private stretch-staging/main armhf libbsd0 armhf 0.8.3-1 [89.0 kB]
Get:4 http://172.17.0.1/private stretch-staging/main armhf bsdmainutils armhf 9.0.11 [177 kB]
Get:5 http://172.17.0.1/private stretch-staging/main armhf libpipeline1 armhf 1.4.1-2 [23.7 kB]
Get:6 http://172.17.0.1/private stretch-staging/main armhf man-db armhf 2.7.5-1 [975 kB]
Get:7 http://172.17.0.1/private stretch-staging/main armhf libexpat1 armhf 2.2.0-1 [61.7 kB]
Get:8 http://172.17.0.1/private stretch-staging/main armhf libpng16-16 armhf 1.6.25-1 [261 kB]
Get:9 http://172.17.0.1/private stretch-staging/main armhf libfreetype6 armhf 2.6.3-3+b1 [385 kB]
Get:10 http://172.17.0.1/private stretch-staging/main armhf ucf all 3.0036 [70.2 kB]
Get:11 http://172.17.0.1/private stretch-staging/main armhf fonts-dejavu-core all 2.37-1 [1068 kB]
Get:12 http://172.17.0.1/private stretch-staging/main armhf fontconfig-config all 2.11.0-6.7 [271 kB]
Get:13 http://172.17.0.1/private stretch-staging/main armhf libfontconfig1 armhf 2.11.0-6.7 [313 kB]
Get:14 http://172.17.0.1/private stretch-staging/main armhf fontconfig armhf 2.11.0-6.7 [402 kB]
Get:15 http://172.17.0.1/private stretch-staging/main armhf libjbig0 armhf 2.1-3.1 [27.5 kB]
Get:16 http://172.17.0.1/private stretch-staging/main armhf liblzo2-2 armhf 2.08-1.2 [47.6 kB]
Get:17 http://172.17.0.1/private stretch-staging/main armhf libpcrecpp0v5 armhf 2:8.39-2 [149 kB]
Get:18 http://172.17.0.1/private stretch-staging/main armhf libxau6 armhf 1:1.0.8-1 [19.9 kB]
Get:19 http://172.17.0.1/private stretch-staging/main armhf libxdmcp6 armhf 1:1.1.2-1.1 [24.9 kB]
Get:20 http://172.17.0.1/private stretch-staging/main armhf libxcb1 armhf 1.12-1 [129 kB]
Get:21 http://172.17.0.1/private stretch-staging/main armhf libx11-data all 2:1.6.3-1 [128 kB]
Get:22 http://172.17.0.1/private stretch-staging/main armhf libx11-6 armhf 2:1.6.3-1 [678 kB]
Get:23 http://172.17.0.1/private stretch-staging/main armhf libxcomposite1 armhf 1:0.4.4-1 [16.8 kB]
Get:24 http://172.17.0.1/private stretch-staging/main armhf libxext6 armhf 2:1.3.3-1 [48.1 kB]
Get:25 http://172.17.0.1/private stretch-staging/main armhf libxrender1 armhf 1:0.9.9-2 [28.9 kB]
Get:26 http://172.17.0.1/private stretch-staging/main armhf libxft2 armhf 2.3.2-1 [48.3 kB]
Get:27 http://172.17.0.1/private stretch-staging/main armhf libxi6 armhf 2:1.7.6-1 [75.9 kB]
Get:28 http://172.17.0.1/private stretch-staging/main armhf x11-common all 1:7.7+16 [251 kB]
Get:29 http://172.17.0.1/private stretch-staging/main armhf libxtst6 armhf 2:1.2.2-1+b1 [25.5 kB]
Get:30 http://172.17.0.1/private stretch-staging/main armhf libpython3.5-minimal armhf 3.5.2-6 [565 kB]
Get:31 http://172.17.0.1/private stretch-staging/main armhf python3.5-minimal armhf 3.5.2-6 [1437 kB]
Get:32 http://172.17.0.1/private stretch-staging/main armhf python3-minimal armhf 3.5.1-4 [35.3 kB]
Get:33 http://172.17.0.1/private stretch-staging/main armhf mime-support all 3.60 [36.7 kB]
Get:34 http://172.17.0.1/private stretch-staging/main armhf libmpdec2 armhf 2.4.2-1 [67.5 kB]
Get:35 http://172.17.0.1/private stretch-staging/main armhf libpython3.5-stdlib armhf 3.5.2-6 [2088 kB]
Get:36 http://172.17.0.1/private stretch-staging/main armhf python3.5 armhf 3.5.2-6 [222 kB]
Get:37 http://172.17.0.1/private stretch-staging/main armhf libpython3-stdlib armhf 3.5.1-4 [18.6 kB]
Get:38 http://172.17.0.1/private stretch-staging/main armhf dh-python all 2.20160818 [83.0 kB]
Get:39 http://172.17.0.1/private stretch-staging/main armhf python3 armhf 3.5.1-4 [21.7 kB]
Get:40 http://172.17.0.1/private stretch-staging/main armhf libreadline7 armhf 7.0-1 [130 kB]
Get:41 http://172.17.0.1/private stretch-staging/main armhf libmagic-mgc armhf 1:5.28-4 [210 kB]
Get:42 http://172.17.0.1/private stretch-staging/main armhf libmagic1 armhf 1:5.28-4 [104 kB]
Get:43 http://172.17.0.1/private stretch-staging/main armhf file armhf 1:5.28-4 [62.7 kB]
Get:44 http://172.17.0.1/private stretch-staging/main armhf gettext-base armhf 0.19.8.1-1 [117 kB]
Get:45 http://172.17.0.1/private stretch-staging/main armhf libgpm2 armhf 1.20.4-6.2 [33.0 kB]
Get:46 http://172.17.0.1/private stretch-staging/main armhf libkeyutils1 armhf 1.5.9-9 [11.9 kB]
Get:47 http://172.17.0.1/private stretch-staging/main armhf libkrb5support0 armhf 1.14.3+dfsg-2 [57.5 kB]
Get:48 http://172.17.0.1/private stretch-staging/main armhf libk5crypto3 armhf 1.14.3+dfsg-2 [110 kB]
Get:49 http://172.17.0.1/private stretch-staging/main armhf libkrb5-3 armhf 1.14.3+dfsg-2 [262 kB]
Get:50 http://172.17.0.1/private stretch-staging/main armhf libgssapi-krb5-2 armhf 1.14.3+dfsg-2 [131 kB]
Get:51 http://172.17.0.1/private stretch-staging/main armhf libicu57 armhf 57.1-4 [7407 kB]
Get:52 http://172.17.0.1/private stretch-staging/main armhf libxml2 armhf 2.9.4+dfsg1-2 [805 kB]
Get:53 http://172.17.0.1/private stretch-staging/main armhf libsigsegv2 armhf 2.10-5 [28.4 kB]
Get:54 http://172.17.0.1/private stretch-staging/main armhf m4 armhf 1.4.17-5 [239 kB]
Get:55 http://172.17.0.1/private stretch-staging/main armhf hicolor-icon-theme all 0.15-1 [9550 B]
Get:56 http://172.17.0.1/private stretch-staging/main armhf libglib2.0-0 armhf 2.50.0-1 [2520 kB]
Get:57 http://172.17.0.1/private stretch-staging/main armhf libjpeg62-turbo armhf 1:1.5.0-1 [109 kB]
Get:58 http://172.17.0.1/private stretch-staging/main armhf libtiff5 armhf 4.0.6-2 [203 kB]
Get:59 http://172.17.0.1/private stretch-staging/main armhf shared-mime-info armhf 1.7-1 [717 kB]
Get:60 http://172.17.0.1/private stretch-staging/main armhf libgdk-pixbuf2.0-common all 2.36.0-1 [305 kB]
Get:61 http://172.17.0.1/private stretch-staging/main armhf libgdk-pixbuf2.0-0 armhf 2.36.0-1 [149 kB]
Get:62 http://172.17.0.1/private stretch-staging/main armhf gtk-update-icon-cache armhf 3.22.0-2+rpi1 [3719 kB]
Get:63 http://172.17.0.1/private stretch-staging/main armhf libpixman-1-0 armhf 0.34.0-1 [451 kB]
Get:64 http://172.17.0.1/private stretch-staging/main armhf libxcb-render0 armhf 1.12-1 [104 kB]
Get:65 http://172.17.0.1/private stretch-staging/main armhf libxcb-shm0 armhf 1.12-1 [95.9 kB]
Get:66 http://172.17.0.1/private stretch-staging/main armhf libcairo2 armhf 1.14.6-1+b1 [686 kB]
Get:67 http://172.17.0.1/private stretch-staging/main armhf libcroco3 armhf 0.6.11-2 [131 kB]
Get:68 http://172.17.0.1/private stretch-staging/main armhf libthai-data all 0.1.25-1 [165 kB]
Get:69 http://172.17.0.1/private stretch-staging/main armhf libdatrie1 armhf 0.2.10-2 [32.5 kB]
Get:70 http://172.17.0.1/private stretch-staging/main armhf libthai0 armhf 0.1.25-1 [48.5 kB]
Get:71 http://172.17.0.1/private stretch-staging/main armhf libpango-1.0-0 armhf 1.40.3-2 [300 kB]
Get:72 http://172.17.0.1/private stretch-staging/main armhf libgraphite2-3 armhf 1.3.8-1 [62.5 kB]
Get:73 http://172.17.0.1/private stretch-staging/main armhf libharfbuzz0b armhf 1.2.7-1+b1 [589 kB]
Get:74 http://172.17.0.1/private stretch-staging/main armhf libpangoft2-1.0-0 armhf 1.40.3-2 [196 kB]
Get:75 http://172.17.0.1/private stretch-staging/main armhf libpangocairo-1.0-0 armhf 1.40.3-2 [186 kB]
Get:76 http://172.17.0.1/private stretch-staging/main armhf librsvg2-2 armhf 2.40.16-1 [266 kB]
Get:77 http://172.17.0.1/private stretch-staging/main armhf librsvg2-common armhf 2.40.16-1 [193 kB]
Get:78 http://172.17.0.1/private stretch-staging/main armhf adwaita-icon-theme all 3.22.0-1 [11.5 MB]
Get:79 http://172.17.0.1/private stretch-staging/main armhf autoconf all 2.69-10 [338 kB]
Get:80 http://172.17.0.1/private stretch-staging/main armhf autotools-dev all 20160430.1 [72.6 kB]
Get:81 http://172.17.0.1/private stretch-staging/main armhf automake all 1:1.15-4 [735 kB]
Get:82 http://172.17.0.1/private stretch-staging/main armhf autopoint all 0.19.8.1-1 [433 kB]
Get:83 http://172.17.0.1/private stretch-staging/main armhf openssl armhf 1.0.2j-1 [671 kB]
Get:84 http://172.17.0.1/private stretch-staging/main armhf ca-certificates all 20160104 [200 kB]
Get:85 http://172.17.0.1/private stretch-staging/main armhf libdconf1 armhf 0.26.0-2 [33.3 kB]
Get:86 http://172.17.0.1/private stretch-staging/main armhf dconf-service armhf 0.26.0-2 [30.1 kB]
Get:87 http://172.17.0.1/private stretch-staging/main armhf dconf-gsettings-backend armhf 0.26.0-2 [22.5 kB]
Get:88 http://172.17.0.1/private stretch-staging/main armhf libtool all 2.4.6-2 [545 kB]
Get:89 http://172.17.0.1/private stretch-staging/main armhf dh-autoreconf all 12 [15.8 kB]
Get:90 http://172.17.0.1/private stretch-staging/main armhf libarchive-zip-perl all 1.59-1 [95.5 kB]
Get:91 http://172.17.0.1/private stretch-staging/main armhf libfile-stripnondeterminism-perl all 0.028-1 [14.6 kB]
Get:92 http://172.17.0.1/private stretch-staging/main armhf libtimedate-perl all 2.3000-2 [42.2 kB]
Get:93 http://172.17.0.1/private stretch-staging/main armhf dh-strip-nondeterminism all 0.028-1 [9020 B]
Get:94 http://172.17.0.1/private stretch-staging/main armhf libunistring0 armhf 0.9.6+really0.9.3-0.1 [252 kB]
Get:95 http://172.17.0.1/private stretch-staging/main armhf gettext armhf 0.19.8.1-1 [1433 kB]
Get:96 http://172.17.0.1/private stretch-staging/main armhf intltool-debian all 0.35.0+20060710.4 [26.3 kB]
Get:97 http://172.17.0.1/private stretch-staging/main armhf po-debconf all 1.0.20 [247 kB]
Get:98 http://172.17.0.1/private stretch-staging/main armhf debhelper all 10.2.1 [827 kB]
Get:99 http://172.17.0.1/private stretch-staging/main armhf libgirepository-1.0-1 armhf 1.50.0-1 [76.4 kB]
Get:100 http://172.17.0.1/private stretch-staging/main armhf gir1.2-glib-2.0 armhf 1.50.0-1 [139 kB]
Get:101 http://172.17.0.1/private stretch-staging/main armhf libatk1.0-data all 2.22.0-1 [172 kB]
Get:102 http://172.17.0.1/private stretch-staging/main armhf libatk1.0-0 armhf 2.22.0-1 [70.4 kB]
Get:103 http://172.17.0.1/private stretch-staging/main armhf gir1.2-atk-1.0 armhf 2.22.0-1 [53.5 kB]
Get:104 http://172.17.0.1/private stretch-staging/main armhf libatspi2.0-0 armhf 2.22.0-1 [51.5 kB]
Get:105 http://172.17.0.1/private stretch-staging/main armhf gir1.2-atspi-2.0 armhf 2.22.0-1 [18.0 kB]
Get:106 http://172.17.0.1/private stretch-staging/main armhf libcairo-gobject2 armhf 1.14.6-1+b1 [332 kB]
Get:107 http://172.17.0.1/private stretch-staging/main armhf gir1.2-freedesktop armhf 1.50.0-1 [15.2 kB]
Get:108 http://172.17.0.1/private stretch-staging/main armhf gir1.2-gdkpixbuf-2.0 armhf 2.36.0-1 [14.9 kB]
Get:109 http://172.17.0.1/private stretch-staging/main armhf libgtk2.0-common all 2.24.31-1 [2690 kB]
Get:110 http://172.17.0.1/private stretch-staging/main armhf libpangoxft-1.0-0 armhf 1.40.3-2 [181 kB]
Get:111 http://172.17.0.1/private stretch-staging/main armhf gir1.2-pango-1.0 armhf 1.40.3-2 [189 kB]
Get:112 http://172.17.0.1/private stretch-staging/main armhf libavahi-common-data armhf 0.6.32-1 [118 kB]
Get:113 http://172.17.0.1/private stretch-staging/main armhf libavahi-common3 armhf 0.6.32-1 [48.6 kB]
Get:114 http://172.17.0.1/private stretch-staging/main armhf libavahi-client3 armhf 0.6.32-1 [51.2 kB]
Get:115 http://172.17.0.1/private stretch-staging/main armhf libcups2 armhf 2.2.0-2 [271 kB]
Get:116 http://172.17.0.1/private stretch-staging/main armhf libxfixes3 armhf 1:5.0.2-1 [20.1 kB]
Get:117 http://172.17.0.1/private stretch-staging/main armhf libxcursor1 armhf 1:1.1.14-1+b1 [31.9 kB]
Get:118 http://172.17.0.1/private stretch-staging/main armhf libxdamage1 armhf 1:1.1.4-2+b1 [14.1 kB]
Get:119 http://172.17.0.1/private stretch-staging/main armhf libxinerama1 armhf 2:1.1.3-1+b1 [16.4 kB]
Get:120 http://172.17.0.1/private stretch-staging/main armhf libxrandr2 armhf 2:1.5.0-1 [33.3 kB]
Get:121 http://172.17.0.1/private stretch-staging/main armhf gnome-icon-theme all 3.12.0-2 [9890 kB]
Get:122 http://172.17.0.1/private stretch-staging/main armhf libgtk2.0-0 armhf 2.24.31-1 [1508 kB]
Get:123 http://172.17.0.1/private stretch-staging/main armhf gir1.2-gtk-2.0 armhf 2.24.31-1 [212 kB]
Get:124 http://172.17.0.1/private stretch-staging/main armhf libgtk-3-common all 3.22.0-2+rpi1 [7066 kB]
Get:125 http://172.17.0.1/private stretch-staging/main armhf libatk-bridge2.0-0 armhf 2.22.0-1 [47.0 kB]
Get:126 http://172.17.0.1/private stretch-staging/main armhf liblcms2-2 armhf 2.7-1 [116 kB]
Get:127 http://172.17.0.1/private stretch-staging/main armhf libcolord2 armhf 1.3.3-2 [240 kB]
Get:128 http://172.17.0.1/private stretch-staging/main armhf libepoxy0 armhf 1.3.1-1 [156 kB]
Get:129 http://172.17.0.1/private stretch-staging/main armhf libjson-glib-1.0-common all 1.2.2-1 [161 kB]
Get:130 http://172.17.0.1/private stretch-staging/main armhf libjson-glib-1.0-0 armhf 1.2.2-1 [165 kB]
Get:131 http://172.17.0.1/private stretch-staging/main armhf libproxy1v5 armhf 0.4.11-5 [47.1 kB]
Get:132 http://172.17.0.1/private stretch-staging/main armhf glib-networking-common all 2.50.0-1 [49.1 kB]
Get:133 http://172.17.0.1/private stretch-staging/main armhf glib-networking-services armhf 2.50.0-1 [11.6 kB]
Get:134 http://172.17.0.1/private stretch-staging/main armhf gsettings-desktop-schemas all 3.22.0-1 [473 kB]
Get:135 http://172.17.0.1/private stretch-staging/main armhf glib-networking armhf 2.50.0-1 [48.2 kB]
Get:136 http://172.17.0.1/private stretch-staging/main armhf libsoup2.4-1 armhf 2.56.0-1 [248 kB]
Get:137 http://172.17.0.1/private stretch-staging/main armhf libsoup-gnome2.4-1 armhf 2.56.0-1 [15.8 kB]
Get:138 http://172.17.0.1/private stretch-staging/main armhf librest-0.7-0 armhf 0.8.0-1 [27.5 kB]
Get:139 http://172.17.0.1/private stretch-staging/main armhf libgtk-3-0 armhf 3.22.0-2+rpi1 [5710 kB]
Get:140 http://172.17.0.1/private stretch-staging/main armhf gir1.2-gtk-3.0 armhf 3.22.0-2+rpi1 [3889 kB]
Get:141 http://172.17.0.1/private stretch-staging/main armhf icu-devtools armhf 57.1-4 [156 kB]
Get:142 http://172.17.0.1/private stretch-staging/main armhf libelf1 armhf 0.166-2 [169 kB]
Get:143 http://172.17.0.1/private stretch-staging/main armhf libglib2.0-data all 2.50.0-2 [2506 kB]
Get:144 http://172.17.0.1/private stretch-staging/main armhf libglib2.0-bin armhf 2.50.0-1 [1579 kB]
Get:145 http://172.17.0.1/private stretch-staging/main armhf libpcre16-3 armhf 2:8.39-2 [235 kB]
Get:146 http://172.17.0.1/private stretch-staging/main armhf libpcre32-3 armhf 2:8.39-2 [227 kB]
Get:147 http://172.17.0.1/private stretch-staging/main armhf libpcre3-dev armhf 2:8.39-2 [568 kB]
Get:148 http://172.17.0.1/private stretch-staging/main armhf zlib1g-dev armhf 1:1.2.8.dfsg-2+b1 [197 kB]
Get:149 http://172.17.0.1/private stretch-staging/main armhf libglib2.0-dev armhf 2.50.0-1 [2767 kB]
Get:150 http://172.17.0.1/private stretch-staging/main armhf libdbus-1-dev armhf 1.10.10-1 [209 kB]
Get:151 http://172.17.0.1/private stretch-staging/main armhf xorg-sgml-doctools all 1:1.11-1 [21.9 kB]
Get:152 http://172.17.0.1/private stretch-staging/main armhf x11proto-core-dev all 7.0.29-1 [728 kB]
Get:153 http://172.17.0.1/private stretch-staging/main armhf libxau-dev armhf 1:1.0.8-1 [23.0 kB]
Get:154 http://172.17.0.1/private stretch-staging/main armhf libxdmcp-dev armhf 1:1.1.2-1.1 [40.8 kB]
Get:155 http://172.17.0.1/private stretch-staging/main armhf x11proto-input-dev all 2.3.2-1 [158 kB]
Get:156 http://172.17.0.1/private stretch-staging/main armhf x11proto-kb-dev all 1.0.7-1 [233 kB]
Get:157 http://172.17.0.1/private stretch-staging/main armhf xtrans-dev all 1.3.5-1 [100 kB]
Get:158 http://172.17.0.1/private stretch-staging/main armhf libpthread-stubs0-dev armhf 0.3-4 [4042 B]
Get:159 http://172.17.0.1/private stretch-staging/main armhf libxcb1-dev armhf 1.12-1 [165 kB]
Get:160 http://172.17.0.1/private stretch-staging/main armhf libx11-dev armhf 2:1.6.3-1 [749 kB]
Get:161 http://172.17.0.1/private stretch-staging/main armhf x11proto-xext-dev all 7.3.0-1 [212 kB]
Get:162 http://172.17.0.1/private stretch-staging/main armhf libxext-dev armhf 2:1.3.3-1 [102 kB]
Get:163 http://172.17.0.1/private stretch-staging/main armhf x11proto-fixes-dev all 1:5.0-2 [19.2 kB]
Get:164 http://172.17.0.1/private stretch-staging/main armhf libxfixes-dev armhf 1:5.0.2-1 [22.1 kB]
Get:165 http://172.17.0.1/private stretch-staging/main armhf libxi-dev armhf 2:1.7.6-1 [233 kB]
Get:166 http://172.17.0.1/private stretch-staging/main armhf x11proto-record-dev all 1.14.2-1 [33.9 kB]
Get:167 http://172.17.0.1/private stretch-staging/main armhf libxtst-dev armhf 2:1.2.2-1+b1 [29.7 kB]
Get:168 http://172.17.0.1/private stretch-staging/main armhf libatspi2.0-dev armhf 2.22.0-1 [63.1 kB]
Get:169 http://172.17.0.1/private stretch-staging/main armhf libatk-bridge2.0-dev armhf 2.22.0-1 [7082 B]
Get:170 http://172.17.0.1/private stretch-staging/main armhf libatk1.0-dev armhf 2.22.0-1 [115 kB]
Get:171 http://172.17.0.1/private stretch-staging/main armhf libcairo-script-interpreter2 armhf 1.14.6-1+b1 [361 kB]
Get:172 http://172.17.0.1/private stretch-staging/main armhf libexpat1-dev armhf 2.2.0-1 [117 kB]
Get:173 http://172.17.0.1/private stretch-staging/main armhf libpng-dev armhf 1.6.25-1 [230 kB]
Get:174 http://172.17.0.1/private stretch-staging/main armhf libfreetype6-dev armhf 2.6.3-3+b1 [5757 kB]
Get:175 http://172.17.0.1/private stretch-staging/main armhf libfontconfig1-dev armhf 2.11.0-6.7 [877 kB]
Get:176 http://172.17.0.1/private stretch-staging/main armhf x11proto-render-dev all 2:0.11.1-2 [20.8 kB]
Get:177 http://172.17.0.1/private stretch-staging/main armhf libxrender-dev armhf 1:0.9.9-2 [36.5 kB]
Get:178 http://172.17.0.1/private stretch-staging/main armhf libice6 armhf 2:1.0.9-1+b1 [51.9 kB]
Get:179 http://172.17.0.1/private stretch-staging/main armhf libsm6 armhf 2:1.2.2-1+b1 [31.2 kB]
Get:180 http://172.17.0.1/private stretch-staging/main armhf libice-dev armhf 2:1.0.9-1+b1 [59.0 kB]
Get:181 http://172.17.0.1/private stretch-staging/main armhf libsm-dev armhf 2:1.2.2-1+b1 [33.5 kB]
Get:182 http://172.17.0.1/private stretch-staging/main armhf libpixman-1-dev armhf 0.34.0-1 [472 kB]
Get:183 http://172.17.0.1/private stretch-staging/main armhf libxcb-render0-dev armhf 1.12-1 [108 kB]
Get:184 http://172.17.0.1/private stretch-staging/main armhf libxcb-shm0-dev armhf 1.12-1 [97.1 kB]
Get:185 http://172.17.0.1/private stretch-staging/main armhf libcairo2-dev armhf 1.14.6-1+b1 [812 kB]
Get:186 http://172.17.0.1/private stretch-staging/main armhf libepoxy-dev armhf 1.3.1-1 [113 kB]
Get:187 http://172.17.0.1/private stretch-staging/main armhf libgdk-pixbuf2.0-dev armhf 2.36.0-1 [53.0 kB]
Get:188 http://172.17.0.1/private stretch-staging/main armhf libgmpxx4ldbl armhf 2:6.1.1+dfsg-1 [21.5 kB]
Get:189 http://172.17.0.1/private stretch-staging/main armhf libgmp-dev armhf 2:6.1.1+dfsg-1 [561 kB]
Get:190 http://172.17.0.1/private stretch-staging/main armhf libgpm-dev armhf 1.20.4-6.2 [35.5 kB]
Get:191 http://172.17.0.1/private stretch-staging/main armhf libgraphite2-dev armhf 1.3.8-1 [21.0 kB]
Get:192 http://172.17.0.1/private stretch-staging/main armhf libharfbuzz-icu0 armhf 1.2.7-1+b1 [438 kB]
Get:193 http://172.17.0.1/private stretch-staging/main armhf libharfbuzz-gobject0 armhf 1.2.7-1+b1 [443 kB]
Get:194 http://172.17.0.1/private stretch-staging/main armhf libicu-dev armhf 57.1-4 [15.7 MB]
Get:195 http://172.17.0.1/private stretch-staging/main armhf libharfbuzz-dev armhf 1.2.7-1+b1 [643 kB]
Get:196 http://172.17.0.1/private stretch-staging/main armhf libxft-dev armhf 2.3.2-1 [59.1 kB]
Get:197 http://172.17.0.1/private stretch-staging/main armhf libpango1.0-dev armhf 1.40.3-2 [431 kB]
Get:198 http://172.17.0.1/private stretch-staging/main armhf x11proto-xinerama-dev all 1.2.1-2 [4938 B]
Get:199 http://172.17.0.1/private stretch-staging/main armhf libxinerama-dev armhf 2:1.1.3-1+b1 [18.7 kB]
Get:200 http://172.17.0.1/private stretch-staging/main armhf x11proto-randr-dev all 1.5.0-1 [49.7 kB]
Get:201 http://172.17.0.1/private stretch-staging/main armhf libxrandr-dev armhf 2:1.5.0-1 [41.0 kB]
Get:202 http://172.17.0.1/private stretch-staging/main armhf libxcursor-dev armhf 1:1.1.14-1+b1 [39.5 kB]
Get:203 http://172.17.0.1/private stretch-staging/main armhf x11proto-composite-dev all 1:0.4.2-2 [15.3 kB]
Get:204 http://172.17.0.1/private stretch-staging/main armhf libxcomposite-dev armhf 1:0.4.4-1 [20.5 kB]
Get:205 http://172.17.0.1/private stretch-staging/main armhf x11proto-damage-dev all 1:1.2.1-2 [11.8 kB]
Get:206 http://172.17.0.1/private stretch-staging/main armhf libxdamage-dev armhf 1:1.1.4-2+b1 [13.9 kB]
Get:207 http://172.17.0.1/private stretch-staging/main armhf xkb-data all 2.18-1 [643 kB]
Get:208 http://172.17.0.1/private stretch-staging/main armhf libxkbcommon0 armhf 0.6.1-1 [109 kB]
Get:209 http://172.17.0.1/private stretch-staging/main armhf libxkbcommon-dev armhf 0.6.1-1 [250 kB]
Get:210 http://172.17.0.1/private stretch-staging/main armhf libgtk-3-dev armhf 3.22.0-2+rpi1 [4599 kB]
Get:211 http://172.17.0.1/private stretch-staging/main armhf libxml2-utils armhf 2.9.4+dfsg1-2 [102 kB]
Get:212 http://172.17.0.1/private stretch-staging/main armhf libgtk2.0-dev armhf 2.24.31-1 [2333 kB]
Get:213 http://172.17.0.1/private stretch-staging/main armhf liblua5.2-0 armhf 5.2.4-1.1 [82.8 kB]
Get:214 http://172.17.0.1/private stretch-staging/main armhf libtinfo-dev armhf 6.0+20160917-1 [65.4 kB]
Get:215 http://172.17.0.1/private stretch-staging/main armhf libreadline-dev armhf 7.0-1 [109 kB]
Get:216 http://172.17.0.1/private stretch-staging/main armhf liblua5.2-dev armhf 5.2.4-1.1 [115 kB]
Get:217 http://172.17.0.1/private stretch-staging/main armhf libperl-dev armhf 5.24.1~rc3-3 [2495 kB]
Get:218 http://172.17.0.1/private stretch-staging/main armhf libpython3.5 armhf 3.5.2-6 [1167 kB]
Get:219 http://172.17.0.1/private stretch-staging/main armhf libpython3.5-dev armhf 3.5.2-6 [36.9 MB]
Get:220 http://172.17.0.1/private stretch-staging/main armhf libpython3-dev armhf 3.5.1-4 [18.7 kB]
Get:221 http://172.17.0.1/private stretch-staging/main armhf rubygems-integration all 1.10 [4882 B]
Get:222 http://172.17.0.1/private stretch-staging/main armhf ruby2.3 armhf 2.3.1-5 [178 kB]
Get:223 http://172.17.0.1/private stretch-staging/main armhf ruby armhf 1:2.3.0+4 [10.6 kB]
Get:224 http://172.17.0.1/private stretch-staging/main armhf rake all 10.5.0-2 [49.4 kB]
Get:225 http://172.17.0.1/private stretch-staging/main armhf ruby-did-you-mean all 1.0.0-2 [11.2 kB]
Get:226 http://172.17.0.1/private stretch-staging/main armhf ruby-minitest all 5.9.0-1 [51.1 kB]
Get:227 http://172.17.0.1/private stretch-staging/main armhf ruby-net-telnet all 0.1.1-2 [12.5 kB]
Get:228 http://172.17.0.1/private stretch-staging/main armhf ruby-power-assert all 0.3.0-1 [7902 B]
Get:229 http://172.17.0.1/private stretch-staging/main armhf ruby-test-unit all 3.1.7-2 [69.6 kB]
Get:230 http://172.17.0.1/private stretch-staging/main armhf libyaml-0-2 armhf 0.1.7-2 [39.9 kB]
Get:231 http://172.17.0.1/private stretch-staging/main armhf libruby2.3 armhf 2.3.1-5 [2847 kB]
Get:232 http://172.17.0.1/private stretch-staging/main armhf libsepol1-dev armhf 2.5-1 [279 kB]
Get:233 http://172.17.0.1/private stretch-staging/main armhf libselinux1-dev armhf 2.5-3 [165 kB]
Get:234 http://172.17.0.1/private stretch-staging/main armhf libtcl8.6 armhf 8.6.6+dfsg-1 [861 kB]
Get:235 http://172.17.0.1/private stretch-staging/main armhf libxt6 armhf 1:1.1.5-1 [155 kB]
Get:236 http://172.17.0.1/private stretch-staging/main armhf libxmu6 armhf 2:1.1.2-2 [52.0 kB]
Get:237 http://172.17.0.1/private stretch-staging/main armhf libxpm4 armhf 1:3.5.11-1+b1 [42.4 kB]
Get:238 http://172.17.0.1/private stretch-staging/main armhf libxaw7 armhf 2:1.0.13-1 [164 kB]
Get:239 http://172.17.0.1/private stretch-staging/main armhf libxt-dev armhf 1:1.1.5-1 [390 kB]
Get:240 http://172.17.0.1/private stretch-staging/main armhf libxmu-headers all 2:1.1.2-2 [51.9 kB]
Get:241 http://172.17.0.1/private stretch-staging/main armhf libxmu-dev armhf 2:1.1.2-2 [56.2 kB]
Get:242 http://172.17.0.1/private stretch-staging/main armhf libxpm-dev armhf 1:3.5.11-1+b1 [96.9 kB]
Get:243 http://172.17.0.1/private stretch-staging/main armhf libxaw7-dev armhf 2:1.0.13-1 [223 kB]
Get:244 http://172.17.0.1/private stretch-staging/main armhf lua5.2 armhf 5.2.4-1.1 [74.4 kB]
Get:245 http://172.17.0.1/private stretch-staging/main armhf python3.5-dev armhf 3.5.2-6 [413 kB]
Get:246 http://172.17.0.1/private stretch-staging/main armhf python3-dev armhf 3.5.1-4 [1164 B]
Get:247 http://172.17.0.1/private stretch-staging/main armhf ruby2.3-dev armhf 2.3.1-5 [1017 kB]
Get:248 http://172.17.0.1/private stretch-staging/main armhf ruby-dev armhf 1:2.3.0+4 [9414 B]
Get:249 http://172.17.0.1/private stretch-staging/main armhf tcl8.6 armhf 8.6.6+dfsg-1 [123 kB]
Get:250 http://172.17.0.1/private stretch-staging/main armhf tcl armhf 8.6.0+9 [5502 B]
Get:251 http://172.17.0.1/private stretch-staging/main armhf tcl8.6-dev armhf 8.6.6+dfsg-1 [890 kB]
Get:252 http://172.17.0.1/private stretch-staging/main armhf tcl-dev armhf 8.6.0+9 [7986 B]
Get:253 http://172.17.0.1/private stretch-staging/main armhf libattr1-dev armhf 1:2.4.47-2 [38.7 kB]
Get:254 http://172.17.0.1/private stretch-staging/main armhf libacl1-dev armhf 2.2.52-3 [84.1 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 181 MB in 20s (8934 kB/s)
Selecting previously unselected package groff-base.
(Reading database ... 13385 files and directories currently installed.)
Preparing to unpack .../00-groff-base_1.22.3-8_armhf.deb ...
Unpacking groff-base (1.22.3-8) ...
Selecting previously unselected package libbsd0:armhf.
Preparing to unpack .../01-libbsd0_0.8.3-1_armhf.deb ...
Unpacking libbsd0:armhf (0.8.3-1) ...
Selecting previously unselected package bsdmainutils.
Preparing to unpack .../02-bsdmainutils_9.0.11_armhf.deb ...
Unpacking bsdmainutils (9.0.11) ...
Selecting previously unselected package libpipeline1:armhf.
Preparing to unpack .../03-libpipeline1_1.4.1-2_armhf.deb ...
Unpacking libpipeline1:armhf (1.4.1-2) ...
Selecting previously unselected package man-db.
Preparing to unpack .../04-man-db_2.7.5-1_armhf.deb ...
Unpacking man-db (2.7.5-1) ...
Selecting previously unselected package libexpat1:armhf.
Preparing to unpack .../05-libexpat1_2.2.0-1_armhf.deb ...
Unpacking libexpat1:armhf (2.2.0-1) ...
Selecting previously unselected package libpng16-16:armhf.
Preparing to unpack .../06-libpng16-16_1.6.25-1_armhf.deb ...
Unpacking libpng16-16:armhf (1.6.25-1) ...
Selecting previously unselected package libfreetype6:armhf.
Preparing to unpack .../07-libfreetype6_2.6.3-3+b1_armhf.deb ...
Unpacking libfreetype6:armhf (2.6.3-3+b1) ...
Selecting previously unselected package ucf.
Preparing to unpack .../08-ucf_3.0036_all.deb ...
Moving old data out of the way
Unpacking ucf (3.0036) ...
Selecting previously unselected package fonts-dejavu-core.
Preparing to unpack .../09-fonts-dejavu-core_2.37-1_all.deb ...
Unpacking fonts-dejavu-core (2.37-1) ...
Selecting previously unselected package fontconfig-config.
Preparing to unpack .../10-fontconfig-config_2.11.0-6.7_all.deb ...
Unpacking fontconfig-config (2.11.0-6.7) ...
Selecting previously unselected package libfontconfig1:armhf.
Preparing to unpack .../11-libfontconfig1_2.11.0-6.7_armhf.deb ...
Unpacking libfontconfig1:armhf (2.11.0-6.7) ...
Selecting previously unselected package fontconfig.
Preparing to unpack .../12-fontconfig_2.11.0-6.7_armhf.deb ...
Unpacking fontconfig (2.11.0-6.7) ...
Selecting previously unselected package libjbig0:armhf.
Preparing to unpack .../13-libjbig0_2.1-3.1_armhf.deb ...
Unpacking libjbig0:armhf (2.1-3.1) ...
Selecting previously unselected package liblzo2-2:armhf.
Preparing to unpack .../14-liblzo2-2_2.08-1.2_armhf.deb ...
Unpacking liblzo2-2:armhf (2.08-1.2) ...
Selecting previously unselected package libpcrecpp0v5:armhf.
Preparing to unpack .../15-libpcrecpp0v5_2%3a8.39-2_armhf.deb ...
Unpacking libpcrecpp0v5:armhf (2:8.39-2) ...
Selecting previously unselected package libxau6:armhf.
Preparing to unpack .../16-libxau6_1%3a1.0.8-1_armhf.deb ...
Unpacking libxau6:armhf (1:1.0.8-1) ...
Selecting previously unselected package libxdmcp6:armhf.
Preparing to unpack .../17-libxdmcp6_1%3a1.1.2-1.1_armhf.deb ...
Unpacking libxdmcp6:armhf (1:1.1.2-1.1) ...
Selecting previously unselected package libxcb1:armhf.
Preparing to unpack .../18-libxcb1_1.12-1_armhf.deb ...
Unpacking libxcb1:armhf (1.12-1) ...
Selecting previously unselected package libx11-data.
Preparing to unpack .../19-libx11-data_2%3a1.6.3-1_all.deb ...
Unpacking libx11-data (2:1.6.3-1) ...
Selecting previously unselected package libx11-6:armhf.
Preparing to unpack .../20-libx11-6_2%3a1.6.3-1_armhf.deb ...
Unpacking libx11-6:armhf (2:1.6.3-1) ...
Selecting previously unselected package libxcomposite1:armhf.
Preparing to unpack .../21-libxcomposite1_1%3a0.4.4-1_armhf.deb ...
Unpacking libxcomposite1:armhf (1:0.4.4-1) ...
Selecting previously unselected package libxext6:armhf.
Preparing to unpack .../22-libxext6_2%3a1.3.3-1_armhf.deb ...
Unpacking libxext6:armhf (2:1.3.3-1) ...
Selecting previously unselected package libxrender1:armhf.
Preparing to unpack .../23-libxrender1_1%3a0.9.9-2_armhf.deb ...
Unpacking libxrender1:armhf (1:0.9.9-2) ...
Selecting previously unselected package libxft2:armhf.
Preparing to unpack .../24-libxft2_2.3.2-1_armhf.deb ...
Unpacking libxft2:armhf (2.3.2-1) ...
Selecting previously unselected package libxi6:armhf.
Preparing to unpack .../25-libxi6_2%3a1.7.6-1_armhf.deb ...
Unpacking libxi6:armhf (2:1.7.6-1) ...
Selecting previously unselected package x11-common.
Preparing to unpack .../26-x11-common_1%3a7.7+16_all.deb ...
Unpacking x11-common (1:7.7+16) ...
Selecting previously unselected package libxtst6:armhf.
Preparing to unpack .../27-libxtst6_2%3a1.2.2-1+b1_armhf.deb ...
Unpacking libxtst6:armhf (2:1.2.2-1+b1) ...
Selecting previously unselected package libpython3.5-minimal:armhf.
Preparing to unpack .../28-libpython3.5-minimal_3.5.2-6_armhf.deb ...
Unpacking libpython3.5-minimal:armhf (3.5.2-6) ...
Selecting previously unselected package python3.5-minimal.
Preparing to unpack .../29-python3.5-minimal_3.5.2-6_armhf.deb ...
Unpacking python3.5-minimal (3.5.2-6) ...
Selecting previously unselected package python3-minimal.
Preparing to unpack .../30-python3-minimal_3.5.1-4_armhf.deb ...
Unpacking python3-minimal (3.5.1-4) ...
Selecting previously unselected package mime-support.
Preparing to unpack .../31-mime-support_3.60_all.deb ...
Unpacking mime-support (3.60) ...
Selecting previously unselected package libmpdec2:armhf.
Preparing to unpack .../32-libmpdec2_2.4.2-1_armhf.deb ...
Unpacking libmpdec2:armhf (2.4.2-1) ...
Selecting previously unselected package libpython3.5-stdlib:armhf.
Preparing to unpack .../33-libpython3.5-stdlib_3.5.2-6_armhf.deb ...
Unpacking libpython3.5-stdlib:armhf (3.5.2-6) ...
Selecting previously unselected package python3.5.
Preparing to unpack .../34-python3.5_3.5.2-6_armhf.deb ...
Unpacking python3.5 (3.5.2-6) ...
Selecting previously unselected package libpython3-stdlib:armhf.
Preparing to unpack .../35-libpython3-stdlib_3.5.1-4_armhf.deb ...
Unpacking libpython3-stdlib:armhf (3.5.1-4) ...
Selecting previously unselected package dh-python.
Preparing to unpack .../36-dh-python_2.20160818_all.deb ...
Unpacking dh-python (2.20160818) ...
Setting up libpython3.5-minimal:armhf (3.5.2-6) ...
Setting up libexpat1:armhf (2.2.0-1) ...
Setting up python3.5-minimal (3.5.2-6) ...
Setting up python3-minimal (3.5.1-4) ...
Selecting previously unselected package python3.
(Reading database ... 15446 files and directories currently installed.)
Preparing to unpack .../000-python3_3.5.1-4_armhf.deb ...
Unpacking python3 (3.5.1-4) ...
Selecting previously unselected package libreadline7:armhf.
Preparing to unpack .../001-libreadline7_7.0-1_armhf.deb ...
Unpacking libreadline7:armhf (7.0-1) ...
Selecting previously unselected package libmagic-mgc.
Preparing to unpack .../002-libmagic-mgc_1%3a5.28-4_armhf.deb ...
Unpacking libmagic-mgc (1:5.28-4) ...
Selecting previously unselected package libmagic1:armhf.
Preparing to unpack .../003-libmagic1_1%3a5.28-4_armhf.deb ...
Unpacking libmagic1:armhf (1:5.28-4) ...
Selecting previously unselected package file.
Preparing to unpack .../004-file_1%3a5.28-4_armhf.deb ...
Unpacking file (1:5.28-4) ...
Selecting previously unselected package gettext-base.
Preparing to unpack .../005-gettext-base_0.19.8.1-1_armhf.deb ...
Unpacking gettext-base (0.19.8.1-1) ...
Selecting previously unselected package libgpm2:armhf.
Preparing to unpack .../006-libgpm2_1.20.4-6.2_armhf.deb ...
Unpacking libgpm2:armhf (1.20.4-6.2) ...
Selecting previously unselected package libkeyutils1:armhf.
Preparing to unpack .../007-libkeyutils1_1.5.9-9_armhf.deb ...
Unpacking libkeyutils1:armhf (1.5.9-9) ...
Selecting previously unselected package libkrb5support0:armhf.
Preparing to unpack .../008-libkrb5support0_1.14.3+dfsg-2_armhf.deb ...
Unpacking libkrb5support0:armhf (1.14.3+dfsg-2) ...
Selecting previously unselected package libk5crypto3:armhf.
Preparing to unpack .../009-libk5crypto3_1.14.3+dfsg-2_armhf.deb ...
Unpacking libk5crypto3:armhf (1.14.3+dfsg-2) ...
Selecting previously unselected package libkrb5-3:armhf.
Preparing to unpack .../010-libkrb5-3_1.14.3+dfsg-2_armhf.deb ...
Unpacking libkrb5-3:armhf (1.14.3+dfsg-2) ...
Selecting previously unselected package libgssapi-krb5-2:armhf.
Preparing to unpack .../011-libgssapi-krb5-2_1.14.3+dfsg-2_armhf.deb ...
Unpacking libgssapi-krb5-2:armhf (1.14.3+dfsg-2) ...
Selecting previously unselected package libicu57:armhf.
Preparing to unpack .../012-libicu57_57.1-4_armhf.deb ...
Unpacking libicu57:armhf (57.1-4) ...
Selecting previously unselected package libxml2:armhf.
Preparing to unpack .../013-libxml2_2.9.4+dfsg1-2_armhf.deb ...
Unpacking libxml2:armhf (2.9.4+dfsg1-2) ...
Selecting previously unselected package libsigsegv2:armhf.
Preparing to unpack .../014-libsigsegv2_2.10-5_armhf.deb ...
Unpacking libsigsegv2:armhf (2.10-5) ...
Selecting previously unselected package m4.
Preparing to unpack .../015-m4_1.4.17-5_armhf.deb ...
Unpacking m4 (1.4.17-5) ...
Selecting previously unselected package hicolor-icon-theme.
Preparing to unpack .../016-hicolor-icon-theme_0.15-1_all.deb ...
Unpacking hicolor-icon-theme (0.15-1) ...
Selecting previously unselected package libglib2.0-0:armhf.
Preparing to unpack .../017-libglib2.0-0_2.50.0-1_armhf.deb ...
Unpacking libglib2.0-0:armhf (2.50.0-1) ...
Selecting previously unselected package libjpeg62-turbo:armhf.
Preparing to unpack .../018-libjpeg62-turbo_1%3a1.5.0-1_armhf.deb ...
Unpacking libjpeg62-turbo:armhf (1:1.5.0-1) ...
Selecting previously unselected package libtiff5:armhf.
Preparing to unpack .../019-libtiff5_4.0.6-2_armhf.deb ...
Unpacking libtiff5:armhf (4.0.6-2) ...
Selecting previously unselected package shared-mime-info.
Preparing to unpack .../020-shared-mime-info_1.7-1_armhf.deb ...
Unpacking shared-mime-info (1.7-1) ...
Selecting previously unselected package libgdk-pixbuf2.0-common.
Preparing to unpack .../021-libgdk-pixbuf2.0-common_2.36.0-1_all.deb ...
Unpacking libgdk-pixbuf2.0-common (2.36.0-1) ...
Selecting previously unselected package libgdk-pixbuf2.0-0:armhf.
Preparing to unpack .../022-libgdk-pixbuf2.0-0_2.36.0-1_armhf.deb ...
Unpacking libgdk-pixbuf2.0-0:armhf (2.36.0-1) ...
Selecting previously unselected package gtk-update-icon-cache.
Preparing to unpack .../023-gtk-update-icon-cache_3.22.0-2+rpi1_armhf.deb ...
No diversion 'diversion of /usr/sbin/update-icon-caches to /usr/sbin/update-icon-caches.gtk2 by libgtk-3-bin', none removed.
No diversion 'diversion of /usr/share/man/man8/update-icon-caches.8.gz to /usr/share/man/man8/update-icon-caches.gtk2.8.gz by libgtk-3-bin', none removed.
Unpacking gtk-update-icon-cache (3.22.0-2+rpi1) ...
Selecting previously unselected package libpixman-1-0:armhf.
Preparing to unpack .../024-libpixman-1-0_0.34.0-1_armhf.deb ...
Unpacking libpixman-1-0:armhf (0.34.0-1) ...
Selecting previously unselected package libxcb-render0:armhf.
Preparing to unpack .../025-libxcb-render0_1.12-1_armhf.deb ...
Unpacking libxcb-render0:armhf (1.12-1) ...
Selecting previously unselected package libxcb-shm0:armhf.
Preparing to unpack .../026-libxcb-shm0_1.12-1_armhf.deb ...
Unpacking libxcb-shm0:armhf (1.12-1) ...
Selecting previously unselected package libcairo2:armhf.
Preparing to unpack .../027-libcairo2_1.14.6-1+b1_armhf.deb ...
Unpacking libcairo2:armhf (1.14.6-1+b1) ...
Selecting previously unselected package libcroco3:armhf.
Preparing to unpack .../028-libcroco3_0.6.11-2_armhf.deb ...
Unpacking libcroco3:armhf (0.6.11-2) ...
Selecting previously unselected package libthai-data.
Preparing to unpack .../029-libthai-data_0.1.25-1_all.deb ...
Unpacking libthai-data (0.1.25-1) ...
Selecting previously unselected package libdatrie1:armhf.
Preparing to unpack .../030-libdatrie1_0.2.10-2_armhf.deb ...
Unpacking libdatrie1:armhf (0.2.10-2) ...
Selecting previously unselected package libthai0:armhf.
Preparing to unpack .../031-libthai0_0.1.25-1_armhf.deb ...
Unpacking libthai0:armhf (0.1.25-1) ...
Selecting previously unselected package libpango-1.0-0:armhf.
Preparing to unpack .../032-libpango-1.0-0_1.40.3-2_armhf.deb ...
Unpacking libpango-1.0-0:armhf (1.40.3-2) ...
Selecting previously unselected package libgraphite2-3:armhf.
Preparing to unpack .../033-libgraphite2-3_1.3.8-1_armhf.deb ...
Unpacking libgraphite2-3:armhf (1.3.8-1) ...
Selecting previously unselected package libharfbuzz0b:armhf.
Preparing to unpack .../034-libharfbuzz0b_1.2.7-1+b1_armhf.deb ...
Unpacking libharfbuzz0b:armhf (1.2.7-1+b1) ...
Selecting previously unselected package libpangoft2-1.0-0:armhf.
Preparing to unpack .../035-libpangoft2-1.0-0_1.40.3-2_armhf.deb ...
Unpacking libpangoft2-1.0-0:armhf (1.40.3-2) ...
Selecting previously unselected package libpangocairo-1.0-0:armhf.
Preparing to unpack .../036-libpangocairo-1.0-0_1.40.3-2_armhf.deb ...
Unpacking libpangocairo-1.0-0:armhf (1.40.3-2) ...
Selecting previously unselected package librsvg2-2:armhf.
Preparing to unpack .../037-librsvg2-2_2.40.16-1_armhf.deb ...
Unpacking librsvg2-2:armhf (2.40.16-1) ...
Selecting previously unselected package librsvg2-common:armhf.
Preparing to unpack .../038-librsvg2-common_2.40.16-1_armhf.deb ...
Unpacking librsvg2-common:armhf (2.40.16-1) ...
Selecting previously unselected package adwaita-icon-theme.
Preparing to unpack .../039-adwaita-icon-theme_3.22.0-1_all.deb ...
Unpacking adwaita-icon-theme (3.22.0-1) ...
Selecting previously unselected package autoconf.
Preparing to unpack .../040-autoconf_2.69-10_all.deb ...
Unpacking autoconf (2.69-10) ...
Selecting previously unselected package autotools-dev.
Preparing to unpack .../041-autotools-dev_20160430.1_all.deb ...
Unpacking autotools-dev (20160430.1) ...
Selecting previously unselected package automake.
Preparing to unpack .../042-automake_1%3a1.15-4_all.deb ...
Unpacking automake (1:1.15-4) ...
Selecting previously unselected package autopoint.
Preparing to unpack .../043-autopoint_0.19.8.1-1_all.deb ...
Unpacking autopoint (0.19.8.1-1) ...
Selecting previously unselected package openssl.
Preparing to unpack .../044-openssl_1.0.2j-1_armhf.deb ...
Unpacking openssl (1.0.2j-1) ...
Selecting previously unselected package ca-certificates.
Preparing to unpack .../045-ca-certificates_20160104_all.deb ...
Unpacking ca-certificates (20160104) ...
Selecting previously unselected package libdconf1:armhf.
Preparing to unpack .../046-libdconf1_0.26.0-2_armhf.deb ...
Unpacking libdconf1:armhf (0.26.0-2) ...
Selecting previously unselected package dconf-service.
Preparing to unpack .../047-dconf-service_0.26.0-2_armhf.deb ...
Unpacking dconf-service (0.26.0-2) ...
Selecting previously unselected package dconf-gsettings-backend:armhf.
Preparing to unpack .../048-dconf-gsettings-backend_0.26.0-2_armhf.deb ...
Unpacking dconf-gsettings-backend:armhf (0.26.0-2) ...
Selecting previously unselected package libtool.
Preparing to unpack .../049-libtool_2.4.6-2_all.deb ...
Unpacking libtool (2.4.6-2) ...
Selecting previously unselected package dh-autoreconf.
Preparing to unpack .../050-dh-autoreconf_12_all.deb ...
Unpacking dh-autoreconf (12) ...
Selecting previously unselected package libarchive-zip-perl.
Preparing to unpack .../051-libarchive-zip-perl_1.59-1_all.deb ...
Unpacking libarchive-zip-perl (1.59-1) ...
Selecting previously unselected package libfile-stripnondeterminism-perl.
Preparing to unpack .../052-libfile-stripnondeterminism-perl_0.028-1_all.deb ...
Unpacking libfile-stripnondeterminism-perl (0.028-1) ...
Selecting previously unselected package libtimedate-perl.
Preparing to unpack .../053-libtimedate-perl_2.3000-2_all.deb ...
Unpacking libtimedate-perl (2.3000-2) ...
Selecting previously unselected package dh-strip-nondeterminism.
Preparing to unpack .../054-dh-strip-nondeterminism_0.028-1_all.deb ...
Unpacking dh-strip-nondeterminism (0.028-1) ...
Selecting previously unselected package libunistring0:armhf.
Preparing to unpack .../055-libunistring0_0.9.6+really0.9.3-0.1_armhf.deb ...
Unpacking libunistring0:armhf (0.9.6+really0.9.3-0.1) ...
Selecting previously unselected package gettext.
Preparing to unpack .../056-gettext_0.19.8.1-1_armhf.deb ...
Unpacking gettext (0.19.8.1-1) ...
Selecting previously unselected package intltool-debian.
Preparing to unpack .../057-intltool-debian_0.35.0+20060710.4_all.deb ...
Unpacking intltool-debian (0.35.0+20060710.4) ...
Selecting previously unselected package po-debconf.
Preparing to unpack .../058-po-debconf_1.0.20_all.deb ...
Unpacking po-debconf (1.0.20) ...
Selecting previously unselected package debhelper.
Preparing to unpack .../059-debhelper_10.2.1_all.deb ...
Unpacking debhelper (10.2.1) ...
Selecting previously unselected package libgirepository-1.0-1:armhf.
Preparing to unpack .../060-libgirepository-1.0-1_1.50.0-1_armhf.deb ...
Unpacking libgirepository-1.0-1:armhf (1.50.0-1) ...
Selecting previously unselected package gir1.2-glib-2.0:armhf.
Preparing to unpack .../061-gir1.2-glib-2.0_1.50.0-1_armhf.deb ...
Unpacking gir1.2-glib-2.0:armhf (1.50.0-1) ...
Selecting previously unselected package libatk1.0-data.
Preparing to unpack .../062-libatk1.0-data_2.22.0-1_all.deb ...
Unpacking libatk1.0-data (2.22.0-1) ...
Selecting previously unselected package libatk1.0-0:armhf.
Preparing to unpack .../063-libatk1.0-0_2.22.0-1_armhf.deb ...
Unpacking libatk1.0-0:armhf (2.22.0-1) ...
Selecting previously unselected package gir1.2-atk-1.0:armhf.
Preparing to unpack .../064-gir1.2-atk-1.0_2.22.0-1_armhf.deb ...
Unpacking gir1.2-atk-1.0:armhf (2.22.0-1) ...
Selecting previously unselected package libatspi2.0-0:armhf.
Preparing to unpack .../065-libatspi2.0-0_2.22.0-1_armhf.deb ...
Unpacking libatspi2.0-0:armhf (2.22.0-1) ...
Selecting previously unselected package gir1.2-atspi-2.0:armhf.
Preparing to unpack .../066-gir1.2-atspi-2.0_2.22.0-1_armhf.deb ...
Unpacking gir1.2-atspi-2.0:armhf (2.22.0-1) ...
Selecting previously unselected package libcairo-gobject2:armhf.
Preparing to unpack .../067-libcairo-gobject2_1.14.6-1+b1_armhf.deb ...
Unpacking libcairo-gobject2:armhf (1.14.6-1+b1) ...
Selecting previously unselected package gir1.2-freedesktop:armhf.
Preparing to unpack .../068-gir1.2-freedesktop_1.50.0-1_armhf.deb ...
Unpacking gir1.2-freedesktop:armhf (1.50.0-1) ...
Selecting previously unselected package gir1.2-gdkpixbuf-2.0:armhf.
Preparing to unpack .../069-gir1.2-gdkpixbuf-2.0_2.36.0-1_armhf.deb ...
Unpacking gir1.2-gdkpixbuf-2.0:armhf (2.36.0-1) ...
Selecting previously unselected package libgtk2.0-common.
Preparing to unpack .../070-libgtk2.0-common_2.24.31-1_all.deb ...
Unpacking libgtk2.0-common (2.24.31-1) ...
Selecting previously unselected package libpangoxft-1.0-0:armhf.
Preparing to unpack .../071-libpangoxft-1.0-0_1.40.3-2_armhf.deb ...
Unpacking libpangoxft-1.0-0:armhf (1.40.3-2) ...
Selecting previously unselected package gir1.2-pango-1.0:armhf.
Preparing to unpack .../072-gir1.2-pango-1.0_1.40.3-2_armhf.deb ...
Unpacking gir1.2-pango-1.0:armhf (1.40.3-2) ...
Selecting previously unselected package libavahi-common-data:armhf.
Preparing to unpack .../073-libavahi-common-data_0.6.32-1_armhf.deb ...
Unpacking libavahi-common-data:armhf (0.6.32-1) ...
Selecting previously unselected package libavahi-common3:armhf.
Preparing to unpack .../074-libavahi-common3_0.6.32-1_armhf.deb ...
Unpacking libavahi-common3:armhf (0.6.32-1) ...
Selecting previously unselected package libavahi-client3:armhf.
Preparing to unpack .../075-libavahi-client3_0.6.32-1_armhf.deb ...
Unpacking libavahi-client3:armhf (0.6.32-1) ...
Selecting previously unselected package libcups2:armhf.
Preparing to unpack .../076-libcups2_2.2.0-2_armhf.deb ...
Unpacking libcups2:armhf (2.2.0-2) ...
Selecting previously unselected package libxfixes3:armhf.
Preparing to unpack .../077-libxfixes3_1%3a5.0.2-1_armhf.deb ...
Unpacking libxfixes3:armhf (1:5.0.2-1) ...
Selecting previously unselected package libxcursor1:armhf.
Preparing to unpack .../078-libxcursor1_1%3a1.1.14-1+b1_armhf.deb ...
Unpacking libxcursor1:armhf (1:1.1.14-1+b1) ...
Selecting previously unselected package libxdamage1:armhf.
Preparing to unpack .../079-libxdamage1_1%3a1.1.4-2+b1_armhf.deb ...
Unpacking libxdamage1:armhf (1:1.1.4-2+b1) ...
Selecting previously unselected package libxinerama1:armhf.
Preparing to unpack .../080-libxinerama1_2%3a1.1.3-1+b1_armhf.deb ...
Unpacking libxinerama1:armhf (2:1.1.3-1+b1) ...
Selecting previously unselected package libxrandr2:armhf.
Preparing to unpack .../081-libxrandr2_2%3a1.5.0-1_armhf.deb ...
Unpacking libxrandr2:armhf (2:1.5.0-1) ...
Selecting previously unselected package gnome-icon-theme.
Preparing to unpack .../082-gnome-icon-theme_3.12.0-2_all.deb ...
Unpacking gnome-icon-theme (3.12.0-2) ...
Selecting previously unselected package libgtk2.0-0:armhf.
Preparing to unpack .../083-libgtk2.0-0_2.24.31-1_armhf.deb ...
Unpacking libgtk2.0-0:armhf (2.24.31-1) ...
Selecting previously unselected package gir1.2-gtk-2.0.
Preparing to unpack .../084-gir1.2-gtk-2.0_2.24.31-1_armhf.deb ...
Unpacking gir1.2-gtk-2.0 (2.24.31-1) ...
Selecting previously unselected package libgtk-3-common.
Preparing to unpack .../085-libgtk-3-common_3.22.0-2+rpi1_all.deb ...
Unpacking libgtk-3-common (3.22.0-2+rpi1) ...
Selecting previously unselected package libatk-bridge2.0-0:armhf.
Preparing to unpack .../086-libatk-bridge2.0-0_2.22.0-1_armhf.deb ...
Unpacking libatk-bridge2.0-0:armhf (2.22.0-1) ...
Selecting previously unselected package liblcms2-2:armhf.
Preparing to unpack .../087-liblcms2-2_2.7-1_armhf.deb ...
Unpacking liblcms2-2:armhf (2.7-1) ...
Selecting previously unselected package libcolord2:armhf.
Preparing to unpack .../088-libcolord2_1.3.3-2_armhf.deb ...
Unpacking libcolord2:armhf (1.3.3-2) ...
Selecting previously unselected package libepoxy0:armhf.
Preparing to unpack .../089-libepoxy0_1.3.1-1_armhf.deb ...
Unpacking libepoxy0:armhf (1.3.1-1) ...
Selecting previously unselected package libjson-glib-1.0-common.
Preparing to unpack .../090-libjson-glib-1.0-common_1.2.2-1_all.deb ...
Unpacking libjson-glib-1.0-common (1.2.2-1) ...
Selecting previously unselected package libjson-glib-1.0-0:armhf.
Preparing to unpack .../091-libjson-glib-1.0-0_1.2.2-1_armhf.deb ...
Unpacking libjson-glib-1.0-0:armhf (1.2.2-1) ...
Selecting previously unselected package libproxy1v5:armhf.
Preparing to unpack .../092-libproxy1v5_0.4.11-5_armhf.deb ...
Unpacking libproxy1v5:armhf (0.4.11-5) ...
Selecting previously unselected package glib-networking-common.
Preparing to unpack .../093-glib-networking-common_2.50.0-1_all.deb ...
Unpacking glib-networking-common (2.50.0-1) ...
Selecting previously unselected package glib-networking-services.
Preparing to unpack .../094-glib-networking-services_2.50.0-1_armhf.deb ...
Unpacking glib-networking-services (2.50.0-1) ...
Selecting previously unselected package gsettings-desktop-schemas.
Preparing to unpack .../095-gsettings-desktop-schemas_3.22.0-1_all.deb ...
Unpacking gsettings-desktop-schemas (3.22.0-1) ...
Selecting previously unselected package glib-networking:armhf.
Preparing to unpack .../096-glib-networking_2.50.0-1_armhf.deb ...
Unpacking glib-networking:armhf (2.50.0-1) ...
Selecting previously unselected package libsoup2.4-1:armhf.
Preparing to unpack .../097-libsoup2.4-1_2.56.0-1_armhf.deb ...
Unpacking libsoup2.4-1:armhf (2.56.0-1) ...
Selecting previously unselected package libsoup-gnome2.4-1:armhf.
Preparing to unpack .../098-libsoup-gnome2.4-1_2.56.0-1_armhf.deb ...
Unpacking libsoup-gnome2.4-1:armhf (2.56.0-1) ...
Selecting previously unselected package librest-0.7-0:armhf.
Preparing to unpack .../099-librest-0.7-0_0.8.0-1_armhf.deb ...
Unpacking librest-0.7-0:armhf (0.8.0-1) ...
Selecting previously unselected package libgtk-3-0:armhf.
Preparing to unpack .../100-libgtk-3-0_3.22.0-2+rpi1_armhf.deb ...
Unpacking libgtk-3-0:armhf (3.22.0-2+rpi1) ...
Selecting previously unselected package gir1.2-gtk-3.0:armhf.
Preparing to unpack .../101-gir1.2-gtk-3.0_3.22.0-2+rpi1_armhf.deb ...
Unpacking gir1.2-gtk-3.0:armhf (3.22.0-2+rpi1) ...
Selecting previously unselected package icu-devtools.
Preparing to unpack .../102-icu-devtools_57.1-4_armhf.deb ...
Unpacking icu-devtools (57.1-4) ...
Selecting previously unselected package libelf1:armhf.
Preparing to unpack .../103-libelf1_0.166-2_armhf.deb ...
Unpacking libelf1:armhf (0.166-2) ...
Selecting previously unselected package libglib2.0-data.
Preparing to unpack .../104-libglib2.0-data_2.50.0-2_all.deb ...
Unpacking libglib2.0-data (2.50.0-2) ...
Selecting previously unselected package libglib2.0-bin.
Preparing to unpack .../105-libglib2.0-bin_2.50.0-1_armhf.deb ...
Unpacking libglib2.0-bin (2.50.0-1) ...
Selecting previously unselected package libpcre16-3:armhf.
Preparing to unpack .../106-libpcre16-3_2%3a8.39-2_armhf.deb ...
Unpacking libpcre16-3:armhf (2:8.39-2) ...
Selecting previously unselected package libpcre32-3:armhf.
Preparing to unpack .../107-libpcre32-3_2%3a8.39-2_armhf.deb ...
Unpacking libpcre32-3:armhf (2:8.39-2) ...
Selecting previously unselected package libpcre3-dev:armhf.
Preparing to unpack .../108-libpcre3-dev_2%3a8.39-2_armhf.deb ...
Unpacking libpcre3-dev:armhf (2:8.39-2) ...
Selecting previously unselected package pkg-config.
Preparing to unpack .../109-pkg-config_0.29-4_armhf.deb ...
Unpacking pkg-config (0.29-4) ...
Selecting previously unselected package zlib1g-dev:armhf.
Preparing to unpack .../110-zlib1g-dev_1%3a1.2.8.dfsg-2+b1_armhf.deb ...
Unpacking zlib1g-dev:armhf (1:1.2.8.dfsg-2+b1) ...
Selecting previously unselected package libglib2.0-dev.
Preparing to unpack .../111-libglib2.0-dev_2.50.0-1_armhf.deb ...
Unpacking libglib2.0-dev (2.50.0-1) ...
Selecting previously unselected package libdbus-1-dev:armhf.
Preparing to unpack .../112-libdbus-1-dev_1.10.10-1_armhf.deb ...
Unpacking libdbus-1-dev:armhf (1.10.10-1) ...
Selecting previously unselected package xorg-sgml-doctools.
Preparing to unpack .../113-xorg-sgml-doctools_1%3a1.11-1_all.deb ...
Unpacking xorg-sgml-doctools (1:1.11-1) ...
Selecting previously unselected package x11proto-core-dev.
Preparing to unpack .../114-x11proto-core-dev_7.0.29-1_all.deb ...
Unpacking x11proto-core-dev (7.0.29-1) ...
Selecting previously unselected package libxau-dev:armhf.
Preparing to unpack .../115-libxau-dev_1%3a1.0.8-1_armhf.deb ...
Unpacking libxau-dev:armhf (1:1.0.8-1) ...
Selecting previously unselected package libxdmcp-dev:armhf.
Preparing to unpack .../116-libxdmcp-dev_1%3a1.1.2-1.1_armhf.deb ...
Unpacking libxdmcp-dev:armhf (1:1.1.2-1.1) ...
Selecting previously unselected package x11proto-input-dev.
Preparing to unpack .../117-x11proto-input-dev_2.3.2-1_all.deb ...
Unpacking x11proto-input-dev (2.3.2-1) ...
Selecting previously unselected package x11proto-kb-dev.
Preparing to unpack .../118-x11proto-kb-dev_1.0.7-1_all.deb ...
Unpacking x11proto-kb-dev (1.0.7-1) ...
Selecting previously unselected package xtrans-dev.
Preparing to unpack .../119-xtrans-dev_1.3.5-1_all.deb ...
Unpacking xtrans-dev (1.3.5-1) ...
Selecting previously unselected package libpthread-stubs0-dev:armhf.
Preparing to unpack .../120-libpthread-stubs0-dev_0.3-4_armhf.deb ...
Unpacking libpthread-stubs0-dev:armhf (0.3-4) ...
Selecting previously unselected package libxcb1-dev:armhf.
Preparing to unpack .../121-libxcb1-dev_1.12-1_armhf.deb ...
Unpacking libxcb1-dev:armhf (1.12-1) ...
Selecting previously unselected package libx11-dev:armhf.
Preparing to unpack .../122-libx11-dev_2%3a1.6.3-1_armhf.deb ...
Unpacking libx11-dev:armhf (2:1.6.3-1) ...
Selecting previously unselected package x11proto-xext-dev.
Preparing to unpack .../123-x11proto-xext-dev_7.3.0-1_all.deb ...
Unpacking x11proto-xext-dev (7.3.0-1) ...
Selecting previously unselected package libxext-dev:armhf.
Preparing to unpack .../124-libxext-dev_2%3a1.3.3-1_armhf.deb ...
Unpacking libxext-dev:armhf (2:1.3.3-1) ...
Selecting previously unselected package x11proto-fixes-dev.
Preparing to unpack .../125-x11proto-fixes-dev_1%3a5.0-2_all.deb ...
Unpacking x11proto-fixes-dev (1:5.0-2) ...
Selecting previously unselected package libxfixes-dev:armhf.
Preparing to unpack .../126-libxfixes-dev_1%3a5.0.2-1_armhf.deb ...
Unpacking libxfixes-dev:armhf (1:5.0.2-1) ...
Selecting previously unselected package libxi-dev.
Preparing to unpack .../127-libxi-dev_2%3a1.7.6-1_armhf.deb ...
Unpacking libxi-dev (2:1.7.6-1) ...
Selecting previously unselected package x11proto-record-dev.
Preparing to unpack .../128-x11proto-record-dev_1.14.2-1_all.deb ...
Unpacking x11proto-record-dev (1.14.2-1) ...
Selecting previously unselected package libxtst-dev:armhf.
Preparing to unpack .../129-libxtst-dev_2%3a1.2.2-1+b1_armhf.deb ...
Unpacking libxtst-dev:armhf (2:1.2.2-1+b1) ...
Selecting previously unselected package libatspi2.0-dev:armhf.
Preparing to unpack .../130-libatspi2.0-dev_2.22.0-1_armhf.deb ...
Unpacking libatspi2.0-dev:armhf (2.22.0-1) ...
Selecting previously unselected package libatk-bridge2.0-dev:armhf.
Preparing to unpack .../131-libatk-bridge2.0-dev_2.22.0-1_armhf.deb ...
Unpacking libatk-bridge2.0-dev:armhf (2.22.0-1) ...
Selecting previously unselected package libatk1.0-dev:armhf.
Preparing to unpack .../132-libatk1.0-dev_2.22.0-1_armhf.deb ...
Unpacking libatk1.0-dev:armhf (2.22.0-1) ...
Selecting previously unselected package libcairo-script-interpreter2:armhf.
Preparing to unpack .../133-libcairo-script-interpreter2_1.14.6-1+b1_armhf.deb ...
Unpacking libcairo-script-interpreter2:armhf (1.14.6-1+b1) ...
Selecting previously unselected package libexpat1-dev:armhf.
Preparing to unpack .../134-libexpat1-dev_2.2.0-1_armhf.deb ...
Unpacking libexpat1-dev:armhf (2.2.0-1) ...
Selecting previously unselected package libpng-dev:armhf.
Preparing to unpack .../135-libpng-dev_1.6.25-1_armhf.deb ...
Unpacking libpng-dev:armhf (1.6.25-1) ...
Selecting previously unselected package libfreetype6-dev.
Preparing to unpack .../136-libfreetype6-dev_2.6.3-3+b1_armhf.deb ...
Unpacking libfreetype6-dev (2.6.3-3+b1) ...
Selecting previously unselected package libfontconfig1-dev:armhf.
Preparing to unpack .../137-libfontconfig1-dev_2.11.0-6.7_armhf.deb ...
Unpacking libfontconfig1-dev:armhf (2.11.0-6.7) ...
Selecting previously unselected package x11proto-render-dev.
Preparing to unpack .../138-x11proto-render-dev_2%3a0.11.1-2_all.deb ...
Unpacking x11proto-render-dev (2:0.11.1-2) ...
Selecting previously unselected package libxrender-dev:armhf.
Preparing to unpack .../139-libxrender-dev_1%3a0.9.9-2_armhf.deb ...
Unpacking libxrender-dev:armhf (1:0.9.9-2) ...
Selecting previously unselected package libice6:armhf.
Preparing to unpack .../140-libice6_2%3a1.0.9-1+b1_armhf.deb ...
Unpacking libice6:armhf (2:1.0.9-1+b1) ...
Selecting previously unselected package libsm6:armhf.
Preparing to unpack .../141-libsm6_2%3a1.2.2-1+b1_armhf.deb ...
Unpacking libsm6:armhf (2:1.2.2-1+b1) ...
Selecting previously unselected package libice-dev:armhf.
Preparing to unpack .../142-libice-dev_2%3a1.0.9-1+b1_armhf.deb ...
Unpacking libice-dev:armhf (2:1.0.9-1+b1) ...
Selecting previously unselected package libsm-dev:armhf.
Preparing to unpack .../143-libsm-dev_2%3a1.2.2-1+b1_armhf.deb ...
Unpacking libsm-dev:armhf (2:1.2.2-1+b1) ...
Selecting previously unselected package libpixman-1-dev.
Preparing to unpack .../144-libpixman-1-dev_0.34.0-1_armhf.deb ...
Unpacking libpixman-1-dev (0.34.0-1) ...
Selecting previously unselected package libxcb-render0-dev:armhf.
Preparing to unpack .../145-libxcb-render0-dev_1.12-1_armhf.deb ...
Unpacking libxcb-render0-dev:armhf (1.12-1) ...
Selecting previously unselected package libxcb-shm0-dev:armhf.
Preparing to unpack .../146-libxcb-shm0-dev_1.12-1_armhf.deb ...
Unpacking libxcb-shm0-dev:armhf (1.12-1) ...
Selecting previously unselected package libcairo2-dev.
Preparing to unpack .../147-libcairo2-dev_1.14.6-1+b1_armhf.deb ...
Unpacking libcairo2-dev (1.14.6-1+b1) ...
Selecting previously unselected package libepoxy-dev:armhf.
Preparing to unpack .../148-libepoxy-dev_1.3.1-1_armhf.deb ...
Unpacking libepoxy-dev:armhf (1.3.1-1) ...
Selecting previously unselected package libgdk-pixbuf2.0-dev.
Preparing to unpack .../149-libgdk-pixbuf2.0-dev_2.36.0-1_armhf.deb ...
Unpacking libgdk-pixbuf2.0-dev (2.36.0-1) ...
Selecting previously unselected package libgmpxx4ldbl:armhf.
Preparing to unpack .../150-libgmpxx4ldbl_2%3a6.1.1+dfsg-1_armhf.deb ...
Unpacking libgmpxx4ldbl:armhf (2:6.1.1+dfsg-1) ...
Selecting previously unselected package libgmp-dev:armhf.
Preparing to unpack .../151-libgmp-dev_2%3a6.1.1+dfsg-1_armhf.deb ...
Unpacking libgmp-dev:armhf (2:6.1.1+dfsg-1) ...
Selecting previously unselected package libgpm-dev:armhf.
Preparing to unpack .../152-libgpm-dev_1.20.4-6.2_armhf.deb ...
Unpacking libgpm-dev:armhf (1.20.4-6.2) ...
Selecting previously unselected package libgraphite2-dev.
Preparing to unpack .../153-libgraphite2-dev_1.3.8-1_armhf.deb ...
Unpacking libgraphite2-dev (1.3.8-1) ...
Selecting previously unselected package libharfbuzz-icu0:armhf.
Preparing to unpack .../154-libharfbuzz-icu0_1.2.7-1+b1_armhf.deb ...
Unpacking libharfbuzz-icu0:armhf (1.2.7-1+b1) ...
Selecting previously unselected package libharfbuzz-gobject0:armhf.
Preparing to unpack .../155-libharfbuzz-gobject0_1.2.7-1+b1_armhf.deb ...
Unpacking libharfbuzz-gobject0:armhf (1.2.7-1+b1) ...
Selecting previously unselected package libicu-dev.
Preparing to unpack .../156-libicu-dev_57.1-4_armhf.deb ...
Unpacking libicu-dev (57.1-4) ...
Selecting previously unselected package libharfbuzz-dev:armhf.
Preparing to unpack .../157-libharfbuzz-dev_1.2.7-1+b1_armhf.deb ...
Unpacking libharfbuzz-dev:armhf (1.2.7-1+b1) ...
Selecting previously unselected package libxft-dev.
Preparing to unpack .../158-libxft-dev_2.3.2-1_armhf.deb ...
Unpacking libxft-dev (2.3.2-1) ...
Selecting previously unselected package libpango1.0-dev.
Preparing to unpack .../159-libpango1.0-dev_1.40.3-2_armhf.deb ...
Unpacking libpango1.0-dev (1.40.3-2) ...
Selecting previously unselected package x11proto-xinerama-dev.
Preparing to unpack .../160-x11proto-xinerama-dev_1.2.1-2_all.deb ...
Unpacking x11proto-xinerama-dev (1.2.1-2) ...
Selecting previously unselected package libxinerama-dev:armhf.
Preparing to unpack .../161-libxinerama-dev_2%3a1.1.3-1+b1_armhf.deb ...
Unpacking libxinerama-dev:armhf (2:1.1.3-1+b1) ...
Selecting previously unselected package x11proto-randr-dev.
Preparing to unpack .../162-x11proto-randr-dev_1.5.0-1_all.deb ...
Unpacking x11proto-randr-dev (1.5.0-1) ...
Selecting previously unselected package libxrandr-dev:armhf.
Preparing to unpack .../163-libxrandr-dev_2%3a1.5.0-1_armhf.deb ...
Unpacking libxrandr-dev:armhf (2:1.5.0-1) ...
Selecting previously unselected package libxcursor-dev:armhf.
Preparing to unpack .../164-libxcursor-dev_1%3a1.1.14-1+b1_armhf.deb ...
Unpacking libxcursor-dev:armhf (1:1.1.14-1+b1) ...
Selecting previously unselected package x11proto-composite-dev.
Preparing to unpack .../165-x11proto-composite-dev_1%3a0.4.2-2_all.deb ...
Unpacking x11proto-composite-dev (1:0.4.2-2) ...
Selecting previously unselected package libxcomposite-dev.
Preparing to unpack .../166-libxcomposite-dev_1%3a0.4.4-1_armhf.deb ...
Unpacking libxcomposite-dev (1:0.4.4-1) ...
Selecting previously unselected package x11proto-damage-dev.
Preparing to unpack .../167-x11proto-damage-dev_1%3a1.2.1-2_all.deb ...
Unpacking x11proto-damage-dev (1:1.2.1-2) ...
Selecting previously unselected package libxdamage-dev:armhf.
Preparing to unpack .../168-libxdamage-dev_1%3a1.1.4-2+b1_armhf.deb ...
Unpacking libxdamage-dev:armhf (1:1.1.4-2+b1) ...
Selecting previously unselected package xkb-data.
Preparing to unpack .../169-xkb-data_2.18-1_all.deb ...
Unpacking xkb-data (2.18-1) ...
Selecting previously unselected package libxkbcommon0:armhf.
Preparing to unpack .../170-libxkbcommon0_0.6.1-1_armhf.deb ...
Unpacking libxkbcommon0:armhf (0.6.1-1) ...
Selecting previously unselected package libxkbcommon-dev.
Preparing to unpack .../171-libxkbcommon-dev_0.6.1-1_armhf.deb ...
Unpacking libxkbcommon-dev (0.6.1-1) ...
Selecting previously unselected package libgtk-3-dev:armhf.
Preparing to unpack .../172-libgtk-3-dev_3.22.0-2+rpi1_armhf.deb ...
Unpacking libgtk-3-dev:armhf (3.22.0-2+rpi1) ...
Selecting previously unselected package libxml2-utils.
Preparing to unpack .../173-libxml2-utils_2.9.4+dfsg1-2_armhf.deb ...
Unpacking libxml2-utils (2.9.4+dfsg1-2) ...
Selecting previously unselected package libgtk2.0-dev.
Preparing to unpack .../174-libgtk2.0-dev_2.24.31-1_armhf.deb ...
Unpacking libgtk2.0-dev (2.24.31-1) ...
Selecting previously unselected package liblua5.2-0:armhf.
Preparing to unpack .../175-liblua5.2-0_5.2.4-1.1_armhf.deb ...
Unpacking liblua5.2-0:armhf (5.2.4-1.1) ...
Selecting previously unselected package libtinfo-dev:armhf.
Preparing to unpack .../176-libtinfo-dev_6.0+20160917-1_armhf.deb ...
Unpacking libtinfo-dev:armhf (6.0+20160917-1) ...
Selecting previously unselected package libreadline-dev:armhf.
Preparing to unpack .../177-libreadline-dev_7.0-1_armhf.deb ...
Unpacking libreadline-dev:armhf (7.0-1) ...
Selecting previously unselected package liblua5.2-dev:armhf.
Preparing to unpack .../178-liblua5.2-dev_5.2.4-1.1_armhf.deb ...
Unpacking liblua5.2-dev:armhf (5.2.4-1.1) ...
Selecting previously unselected package libperl-dev.
Preparing to unpack .../179-libperl-dev_5.24.1~rc3-3_armhf.deb ...
Unpacking libperl-dev (5.24.1~rc3-3) ...
Selecting previously unselected package libpython3.5:armhf.
Preparing to unpack .../180-libpython3.5_3.5.2-6_armhf.deb ...
Unpacking libpython3.5:armhf (3.5.2-6) ...
Selecting previously unselected package libpython3.5-dev:armhf.
Preparing to unpack .../181-libpython3.5-dev_3.5.2-6_armhf.deb ...
Unpacking libpython3.5-dev:armhf (3.5.2-6) ...
Selecting previously unselected package libpython3-dev:armhf.
Preparing to unpack .../182-libpython3-dev_3.5.1-4_armhf.deb ...
Unpacking libpython3-dev:armhf (3.5.1-4) ...
Selecting previously unselected package rubygems-integration.
Preparing to unpack .../183-rubygems-integration_1.10_all.deb ...
Unpacking rubygems-integration (1.10) ...
Selecting previously unselected package ruby2.3.
Preparing to unpack .../184-ruby2.3_2.3.1-5_armhf.deb ...
Unpacking ruby2.3 (2.3.1-5) ...
Selecting previously unselected package ruby.
Preparing to unpack .../185-ruby_1%3a2.3.0+4_armhf.deb ...
Unpacking ruby (1:2.3.0+4) ...
Selecting previously unselected package rake.
Preparing to unpack .../186-rake_10.5.0-2_all.deb ...
Unpacking rake (10.5.0-2) ...
Selecting previously unselected package ruby-did-you-mean.
Preparing to unpack .../187-ruby-did-you-mean_1.0.0-2_all.deb ...
Unpacking ruby-did-you-mean (1.0.0-2) ...
Selecting previously unselected package ruby-minitest.
Preparing to unpack .../188-ruby-minitest_5.9.0-1_all.deb ...
Unpacking ruby-minitest (5.9.0-1) ...
Selecting previously unselected package ruby-net-telnet.
Preparing to unpack .../189-ruby-net-telnet_0.1.1-2_all.deb ...
Unpacking ruby-net-telnet (0.1.1-2) ...
Selecting previously unselected package ruby-power-assert.
Preparing to unpack .../190-ruby-power-assert_0.3.0-1_all.deb ...
Unpacking ruby-power-assert (0.3.0-1) ...
Selecting previously unselected package ruby-test-unit.
Preparing to unpack .../191-ruby-test-unit_3.1.7-2_all.deb ...
Unpacking ruby-test-unit (3.1.7-2) ...
Selecting previously unselected package libyaml-0-2:armhf.
Preparing to unpack .../192-libyaml-0-2_0.1.7-2_armhf.deb ...
Unpacking libyaml-0-2:armhf (0.1.7-2) ...
Selecting previously unselected package libruby2.3:armhf.
Preparing to unpack .../193-libruby2.3_2.3.1-5_armhf.deb ...
Unpacking libruby2.3:armhf (2.3.1-5) ...
Selecting previously unselected package libsepol1-dev:armhf.
Preparing to unpack .../194-libsepol1-dev_2.5-1_armhf.deb ...
Unpacking libsepol1-dev:armhf (2.5-1) ...
Selecting previously unselected package libselinux1-dev:armhf.
Preparing to unpack .../195-libselinux1-dev_2.5-3_armhf.deb ...
Unpacking libselinux1-dev:armhf (2.5-3) ...
Selecting previously unselected package libtcl8.6:armhf.
Preparing to unpack .../196-libtcl8.6_8.6.6+dfsg-1_armhf.deb ...
Unpacking libtcl8.6:armhf (8.6.6+dfsg-1) ...
Selecting previously unselected package libxt6:armhf.
Preparing to unpack .../197-libxt6_1%3a1.1.5-1_armhf.deb ...
Unpacking libxt6:armhf (1:1.1.5-1) ...
Selecting previously unselected package libxmu6:armhf.
Preparing to unpack .../198-libxmu6_2%3a1.1.2-2_armhf.deb ...
Unpacking libxmu6:armhf (2:1.1.2-2) ...
Selecting previously unselected package libxpm4:armhf.
Preparing to unpack .../199-libxpm4_1%3a3.5.11-1+b1_armhf.deb ...
Unpacking libxpm4:armhf (1:3.5.11-1+b1) ...
Selecting previously unselected package libxaw7:armhf.
Preparing to unpack .../200-libxaw7_2%3a1.0.13-1_armhf.deb ...
Unpacking libxaw7:armhf (2:1.0.13-1) ...
Selecting previously unselected package libxt-dev:armhf.
Preparing to unpack .../201-libxt-dev_1%3a1.1.5-1_armhf.deb ...
Unpacking libxt-dev:armhf (1:1.1.5-1) ...
Selecting previously unselected package libxmu-headers.
Preparing to unpack .../202-libxmu-headers_2%3a1.1.2-2_all.deb ...
Unpacking libxmu-headers (2:1.1.2-2) ...
Selecting previously unselected package libxmu-dev:armhf.
Preparing to unpack .../203-libxmu-dev_2%3a1.1.2-2_armhf.deb ...
Unpacking libxmu-dev:armhf (2:1.1.2-2) ...
Selecting previously unselected package libxpm-dev:armhf.
Preparing to unpack .../204-libxpm-dev_1%3a3.5.11-1+b1_armhf.deb ...
Unpacking libxpm-dev:armhf (1:3.5.11-1+b1) ...
Selecting previously unselected package libxaw7-dev:armhf.
Preparing to unpack .../205-libxaw7-dev_2%3a1.0.13-1_armhf.deb ...
Unpacking libxaw7-dev:armhf (2:1.0.13-1) ...
Selecting previously unselected package lua5.2.
Preparing to unpack .../206-lua5.2_5.2.4-1.1_armhf.deb ...
Unpacking lua5.2 (5.2.4-1.1) ...
Selecting previously unselected package python3.5-dev.
Preparing to unpack .../207-python3.5-dev_3.5.2-6_armhf.deb ...
Unpacking python3.5-dev (3.5.2-6) ...
Selecting previously unselected package python3-dev.
Preparing to unpack .../208-python3-dev_3.5.1-4_armhf.deb ...
Unpacking python3-dev (3.5.1-4) ...
Selecting previously unselected package ruby2.3-dev:armhf.
Preparing to unpack .../209-ruby2.3-dev_2.3.1-5_armhf.deb ...
Unpacking ruby2.3-dev:armhf (2.3.1-5) ...
Selecting previously unselected package ruby-dev:armhf.
Preparing to unpack .../210-ruby-dev_1%3a2.3.0+4_armhf.deb ...
Unpacking ruby-dev:armhf (1:2.3.0+4) ...
Selecting previously unselected package tcl8.6.
Preparing to unpack .../211-tcl8.6_8.6.6+dfsg-1_armhf.deb ...
Unpacking tcl8.6 (8.6.6+dfsg-1) ...
Selecting previously unselected package tcl.
Preparing to unpack .../212-tcl_8.6.0+9_armhf.deb ...
Unpacking tcl (8.6.0+9) ...
Selecting previously unselected package tcl8.6-dev:armhf.
Preparing to unpack .../213-tcl8.6-dev_8.6.6+dfsg-1_armhf.deb ...
Unpacking tcl8.6-dev:armhf (8.6.6+dfsg-1) ...
Selecting previously unselected package tcl-dev:armhf.
Preparing to unpack .../214-tcl-dev_8.6.0+9_armhf.deb ...
Unpacking tcl-dev:armhf (8.6.0+9) ...
Selecting previously unselected package libattr1-dev:armhf.
Preparing to unpack .../215-libattr1-dev_1%3a2.4.47-2_armhf.deb ...
Unpacking libattr1-dev:armhf (1:2.4.47-2) ...
Selecting previously unselected package libacl1-dev.
Preparing to unpack .../216-libacl1-dev_2.2.52-3_armhf.deb ...
Unpacking libacl1-dev (2.2.52-3) ...
Selecting previously unselected package sbuild-build-depends-vim-dummy.
Preparing to unpack .../217-sbuild-build-depends-vim-dummy_0.invalid.0_armhf.deb ...
Unpacking sbuild-build-depends-vim-dummy (0.invalid.0) ...
Setting up libsepol1-dev:armhf (2.5-1) ...
Setting up libjson-glib-1.0-common (1.2.2-1) ...
Setting up libgtk2.0-common (2.24.31-1) ...
Setting up libperl-dev (5.24.1~rc3-3) ...
Setting up glib-networking-common (2.50.0-1) ...
Setting up libjpeg62-turbo:armhf (1:1.5.0-1) ...
Setting up libarchive-zip-perl (1.59-1) ...
Setting up mime-support (3.60) ...
Setting up libpng16-16:armhf (1.6.25-1) ...
Setting up libtimedate-perl (2.3000-2) ...
Setting up liblcms2-2:armhf (2.7-1) ...
Setting up libjbig0:armhf (2.1-3.1) ...
Setting up libsigsegv2:armhf (2.10-5) ...
Setting up libgpm2:armhf (1.20.4-6.2) ...
Setting up libpthread-stubs0-dev:armhf (0.3-4) ...
Setting up fonts-dejavu-core (2.37-1) ...
Setting up libreadline7:armhf (7.0-1) ...
Setting up libattr1-dev:armhf (1:2.4.47-2) ...
Setting up libelf1:armhf (0.166-2) ...
Setting up groff-base (1.22.3-8) ...
Setting up libglib2.0-0:armhf (2.50.0-1) ...
Setting up xorg-sgml-doctools (1:1.11-1) ...
Setting up libacl1-dev (2.2.52-3) ...
Setting up xkb-data (2.18-1) ...
Setting up libproxy1v5:armhf (0.4.11-5) ...
Setting up libtinfo-dev:armhf (6.0+20160917-1) ...
Setting up libgdk-pixbuf2.0-common (2.36.0-1) ...
Setting up glib-networking-services (2.50.0-1) ...
Setting up libdatrie1:armhf (0.2.10-2) ...
Setting up libtiff5:armhf (4.0.6-2) ...
Setting up gettext-base (0.19.8.1-1) ...
Setting up libpipeline1:armhf (1.4.1-2) ...
Setting up x11proto-kb-dev (1.0.7-1) ...
Setting up m4 (1.4.17-5) ...
Setting up x11proto-record-dev (1.14.2-1) ...
Setting up libicu57:armhf (57.1-4) ...
Setting up libbsd0:armhf (0.8.3-1) ...
Setting up ucf (3.0036) ...
Setting up libgirepository-1.0-1:armhf (1.50.0-1) ...
Setting up libxml2:armhf (2.9.4+dfsg1-2) ...
Setting up libfreetype6:armhf (2.6.3-3+b1) ...
Setting up libmagic-mgc (1:5.28-4) ...
Setting up libmagic1:armhf (1:5.28-4) ...
Setting up libjson-glib-1.0-0:armhf (1.2.2-1) ...
Setting up libgraphite2-3:armhf (1.3.8-1) ...
Setting up libcroco3:armhf (0.6.11-2) ...
Setting up libatk1.0-data (2.22.0-1) ...
Setting up pkg-config (0.29-4) ...
Setting up ruby-did-you-mean (1.0.0-2) ...
Setting up libyaml-0-2:armhf (0.1.7-2) ...
Setting up libpixman-1-0:armhf (0.34.0-1) ...
Setting up xtrans-dev (1.3.5-1) ...
Setting up gir1.2-glib-2.0:armhf (1.50.0-1) ...
Setting up libglib2.0-data (2.50.0-2) ...
Processing triggers for libc-bin (2.24-3) ...
Setting up libepoxy0:armhf (1.3.1-1) ...
Setting up x11proto-xinerama-dev (1.2.1-2) ...
Setting up autotools-dev (20160430.1) ...
Setting up libunistring0:armhf (0.9.6+really0.9.3-0.1) ...
Setting up libpixman-1-dev (0.34.0-1) ...
Setting up libatk1.0-0:armhf (2.22.0-1) ...
Setting up x11proto-randr-dev (1.5.0-1) ...
Setting up lua5.2 (5.2.4-1.1) ...
update-alternatives: using /usr/bin/lua5.2 to provide /usr/bin/lua (lua-interpreter) in auto mode
update-alternatives: using /usr/bin/luac5.2 to provide /usr/bin/luac (lua-compiler) in auto mode
Processing triggers for systemd (231-4) ...
Setting up openssl (1.0.2j-1) ...
Setting up ruby-net-telnet (0.1.1-2) ...
Setting up libreadline-dev:armhf (7.0-1) ...
Setting up libdconf1:armhf (0.26.0-2) ...
Setting up libexpat1-dev:armhf (2.2.0-1) ...
Setting up shared-mime-info (1.7-1) ...
Setting up libxkbcommon0:armhf (0.6.1-1) ...
Setting up libpcrecpp0v5:armhf (2:8.39-2) ...
Setting up libpcre32-3:armhf (2:8.39-2) ...
Setting up icu-devtools (57.1-4) ...
Setting up liblua5.2-0:armhf (5.2.4-1.1) ...
Setting up libpcre16-3:armhf (2:8.39-2) ...
Setting up libtcl8.6:armhf (8.6.6+dfsg-1) ...
Setting up libcolord2:armhf (1.3.3-2) ...
Setting up libthai-data (0.1.25-1) ...
Setting up libxdmcp6:armhf (1:1.1.2-1.1) ...
Setting up libkeyutils1:armhf (1.5.9-9) ...
Setting up bsdmainutils (9.0.11) ...
update-alternatives: using /usr/bin/bsd-write to provide /usr/bin/write (write) in auto mode
update-alternatives: using /usr/bin/bsd-from to provide /usr/bin/from (from) in auto mode
Setting up libgmpxx4ldbl:armhf (2:6.1.1+dfsg-1) ...
Setting up ruby-minitest (5.9.0-1) ...
Setting up x11-common (1:7.7+16) ...
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
Running in chroot, ignoring request.
All runlevel operations denied by policy
invoke-rc.d: policy-rc.d denied execution of start.
Setting up ca-certificates (20160104) ...
Setting up hicolor-icon-theme (0.15-1) ...
Setting up libglib2.0-bin (2.50.0-1) ...
Setting up libgraphite2-dev (1.3.8-1) ...
Setting up libx11-data (2:1.6.3-1) ...
Setting up libxau6:armhf (1:1.0.8-1) ...
Setting up autopoint (0.19.8.1-1) ...
Setting up libmpdec2:armhf (2.4.2-1) ...
Setting up liblzo2-2:armhf (2.08-1.2) ...
Setting up ruby-power-assert (0.3.0-1) ...
Setting up libavahi-common-data:armhf (0.6.32-1) ...
Setting up libepoxy-dev:armhf (1.3.1-1) ...
Setting up zlib1g-dev:armhf (1:1.2.8.dfsg-2+b1) ...
Setting up libfile-stripnondeterminism-perl (0.028-1) ...
Setting up libgmp-dev:armhf (2:6.1.1+dfsg-1) ...
Setting up libdbus-1-dev:armhf (1.10.10-1) ...
Setting up libpcre3-dev:armhf (2:8.39-2) ...
Setting up gir1.2-atk-1.0:armhf (2.22.0-1) ...
Setting up fontconfig-config (2.11.0-6.7) ...
Setting up libxkbcommon-dev (0.6.1-1) ...
Setting up x11proto-core-dev (7.0.29-1) ...
Setting up libgpm-dev:armhf (1.20.4-6.2) ...
Setting up ruby-test-unit (3.1.7-2) ...
Setting up dconf-service (0.26.0-2) ...
Setting up gettext (0.19.8.1-1) ...
Setting up libpython3.5-stdlib:armhf (3.5.2-6) ...
Setting up libxml2-utils (2.9.4+dfsg1-2) ...
Setting up libharfbuzz0b:armhf (1.2.7-1+b1) ...
Setting up libxau-dev:armhf (1:1.0.8-1) ...
Setting up autoconf (2.69-10) ...
Setting up libthai0:armhf (0.1.25-1) ...
Setting up libicu-dev (57.1-4) ...
Setting up file (1:5.28-4) ...
Setting up libkrb5support0:armhf (1.14.3+dfsg-2) ...
Setting up intltool-debian (0.35.0+20060710.4) ...
Setting up liblua5.2-dev:armhf (5.2.4-1.1) ...
Setting up libxdmcp-dev:armhf (1:1.1.2-1.1) ...
Setting up tcl8.6 (8.6.6+dfsg-1) ...
Setting up automake (1:1.15-4) ...
update-alternatives: using /usr/bin/automake-1.15 to provide /usr/bin/automake (automake) in auto mode
Setting up libice6:armhf (2:1.0.9-1+b1) ...
Setting up rubygems-integration (1.10) ...
Setting up man-db (2.7.5-1) ...
Not building database; man-db/auto-update is not 'true'.
Setting up libavahi-common3:armhf (0.6.32-1) ...
Setting up libpng-dev:armhf (1.6.25-1) ...
Setting up x11proto-render-dev (2:0.11.1-2) ...
Setting up libselinux1-dev:armhf (2.5-3) ...
Setting up dconf-gsettings-backend:armhf (0.26.0-2) ...
Setting up libxcb1:armhf (1.12-1) ...
Setting up x11proto-input-dev (2.3.2-1) ...
Setting up libharfbuzz-gobject0:armhf (1.2.7-1+b1) ...
Setting up tcl8.6-dev:armhf (8.6.6+dfsg-1) ...
Setting up libtool (2.4.6-2) ...
Setting up python3.5 (3.5.2-6) ...
Setting up libpython3-stdlib:armhf (3.5.1-4) ...
Setting up libfontconfig1:armhf (2.11.0-6.7) ...
Setting up libsm6:armhf (2:1.2.2-1+b1) ...
Setting up libk5crypto3:armhf (1.14.3+dfsg-2) ...
Setting up libxcb-render0:armhf (1.12-1) ...
Setting up libharfbuzz-icu0:armhf (1.2.7-1+b1) ...
Setting up po-debconf (1.0.20) ...
Setting up gsettings-desktop-schemas (3.22.0-1) ...
Setting up libgtk-3-common (3.22.0-2+rpi1) ...
Setting up libpython3.5:armhf (3.5.2-6) ...
Setting up libx11-6:armhf (2:1.6.3-1) ...
Setting up tcl (8.6.0+9) ...
Setting up libpython3.5-dev:armhf (3.5.2-6) ...
Setting up x11proto-xext-dev (7.3.0-1) ...
Setting up libfreetype6-dev (2.6.3-3+b1) ...
Setting up libice-dev:armhf (2:1.0.9-1+b1) ...
Setting up glib-networking:armhf (2.50.0-1) ...
Setting up libxcomposite1:armhf (1:0.4.4-1) ...
Setting up libxcb-shm0:armhf (1.12-1) ...
Setting up libxpm4:armhf (1:3.5.11-1+b1) ...
Setting up libxt6:armhf (1:1.1.5-1) ...
Setting up libxrender1:armhf (1:0.9.9-2) ...
Setting up libxcb1-dev:armhf (1.12-1) ...
Setting up libavahi-client3:armhf (0.6.32-1) ...
Setting up libkrb5-3:armhf (1.14.3+dfsg-2) ...
Setting up libx11-dev:armhf (2:1.6.3-1) ...
Setting up libxft2:armhf (2.3.2-1) ...
Setting up python3.5-dev (3.5.2-6) ...
Setting up tcl-dev:armhf (8.6.0+9) ...
Setting up fontconfig (2.11.0-6.7) ...
Regenerating fonts cache... done.
Setting up libpython3-dev:armhf (3.5.1-4) ...
Setting up libfontconfig1-dev:armhf (2.11.0-6.7) ...
Setting up libsm-dev:armhf (2:1.2.2-1+b1) ...
Setting up libxext6:armhf (2:1.3.3-1) ...
Setting up libxfixes3:armhf (1:5.0.2-1) ...
Setting up libxpm-dev:armhf (1:3.5.11-1+b1) ...
Setting up libatspi2.0-0:armhf (2.22.0-1) ...
Setting up libxmu-headers (2:1.1.2-2) ...
Setting up x11proto-fixes-dev (1:5.0-2) ...
Setting up libgdk-pixbuf2.0-0:armhf (2.36.0-1) ...
Setting up libxcb-shm0-dev:armhf (1.12-1) ...
Setting up gir1.2-gdkpixbuf-2.0:armhf (2.36.0-1) ...
Setting up libxrender-dev:armhf (1:0.9.9-2) ...
Setting up libxmu6:armhf (2:1.1.2-2) ...
Setting up libgssapi-krb5-2:armhf (1.14.3+dfsg-2) ...
Setting up libxcb-render0-dev:armhf (1.12-1) ...
Setting up x11proto-damage-dev (1:1.2.1-2) ...
Setting up libxft-dev (2.3.2-1) ...
Setting up gtk-update-icon-cache (3.22.0-2+rpi1) ...
Setting up libxcursor1:armhf (1:1.1.14-1+b1) ...
Setting up libxext-dev:armhf (2:1.3.3-1) ...
Setting up libpango-1.0-0:armhf (1.40.3-2) ...
Setting up libatk-bridge2.0-0:armhf (2.22.0-1) ...
Setting up libxfixes-dev:armhf (1:5.0.2-1) ...
Setting up x11proto-composite-dev (1:0.4.2-2) ...
Setting up libxrandr2:armhf (2:1.5.0-1) ...
Setting up libcups2:armhf (2.2.0-2) ...
Setting up libxi6:armhf (2:1.7.6-1) ...
Setting up libxaw7:armhf (2:1.0.13-1) ...
Setting up gir1.2-atspi-2.0:armhf (2.22.0-1) ...
Setting up libcairo2:armhf (1.14.6-1+b1) ...
Setting up libxinerama1:armhf (2:1.1.3-1+b1) ...
Setting up libxcursor-dev:armhf (1:1.1.14-1+b1) ...
Setting up libxt-dev:armhf (1:1.1.5-1) ...
Setting up libxdamage1:armhf (1:1.1.4-2+b1) ...
Setting up libxrandr-dev:armhf (2:1.5.0-1) ...
Setting up libxcomposite-dev (1:0.4.4-1) ...
Setting up libxmu-dev:armhf (2:1.1.2-2) ...
Setting up libcairo-script-interpreter2:armhf (1.14.6-1+b1) ...
Setting up libxaw7-dev:armhf (2:1.0.13-1) ...
Setting up libcairo-gobject2:armhf (1.14.6-1+b1) ...
Setting up libsoup2.4-1:armhf (2.56.0-1) ...
Setting up libxdamage-dev:armhf (1:1.1.4-2+b1) ...
Setting up libsoup-gnome2.4-1:armhf (2.56.0-1) ...
Setting up libxtst6:armhf (2:1.2.2-1+b1) ...
Setting up libpangoft2-1.0-0:armhf (1.40.3-2) ...
Setting up libxinerama-dev:armhf (2:1.1.3-1+b1) ...
Setting up librest-0.7-0:armhf (0.8.0-1) ...
Setting up libxi-dev (2:1.7.6-1) ...
Setting up gir1.2-freedesktop:armhf (1.50.0-1) ...
Setting up libpangoxft-1.0-0:armhf (1.40.3-2) ...
Setting up libpangocairo-1.0-0:armhf (1.40.3-2) ...
Setting up gir1.2-pango-1.0:armhf (1.40.3-2) ...
Setting up libxtst-dev:armhf (2:1.2.2-1+b1) ...
Setting up librsvg2-2:armhf (2.40.16-1) ...
Setting up librsvg2-common:armhf (2.40.16-1) ...
Setting up adwaita-icon-theme (3.22.0-1) ...
update-alternatives: using /usr/share/icons/Adwaita/cursor.theme to provide /usr/share/icons/default/index.theme (x-cursor-theme) in auto mode
Setting up libgtk2.0-0:armhf (2.24.31-1) ...
Setting up gnome-icon-theme (3.12.0-2) ...
update-alternatives: using /usr/share/icons/gnome/scalable/places/debian-swirl.svg to provide /usr/share/icons/gnome/scalable/places/start-here.svg (start-here.svg) in auto mode
Setting up libgtk-3-0:armhf (3.22.0-2+rpi1) ...
Setting up gir1.2-gtk-2.0 (2.24.31-1) ...
Setting up gir1.2-gtk-3.0:armhf (3.22.0-2+rpi1) ...
Setting up python3 (3.5.1-4) ...
Setting up python3-dev (3.5.1-4) ...
Setting up libglib2.0-dev (2.50.0-1) ...
Setting up libgdk-pixbuf2.0-dev (2.36.0-1) ...
Setting up libruby2.3:armhf (2.3.1-5) ...
Setting up libharfbuzz-dev:armhf (1.2.7-1+b1) ...
Setting up dh-python (2.20160818) ...
Setting up dh-autoreconf (12) ...
Setting up libcairo2-dev (1.14.6-1+b1) ...
Setting up libatk1.0-dev:armhf (2.22.0-1) ...
Setting up ruby2.3 (2.3.1-5) ...
Setting up libatspi2.0-dev:armhf (2.22.0-1) ...
Setting up ruby2.3-dev:armhf (2.3.1-5) ...
Setting up dh-strip-nondeterminism (0.028-1) ...
Setting up ruby-dev:armhf (1:2.3.0+4) ...
Setting up libatk-bridge2.0-dev:armhf (2.22.0-1) ...
Setting up libpango1.0-dev (1.40.3-2) ...
Setting up ruby (1:2.3.0+4) ...
Setting up debhelper (10.2.1) ...
Setting up libgtk-3-dev:armhf (3.22.0-2+rpi1) ...
Setting up rake (10.5.0-2) ...
Setting up libgtk2.0-dev (2.24.31-1) ...
Setting up sbuild-build-depends-vim-dummy (0.invalid.0) ...
Processing triggers for libc-bin (2.24-3) ...
Processing triggers for systemd (231-4) ...
Processing triggers for ca-certificates (20160104) ...
Updating certificates in /etc/ssl/certs...
173 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
Processing triggers for libgdk-pixbuf2.0-0:armhf (2.36.0-1) ...
W: No sandbox user '_apt' on the system, can not drop privileges

+------------------------------------------------------------------------------+
| Build environment                                                            |
+------------------------------------------------------------------------------+

Kernel: Linux 3.19.0-trunk-armmp armhf (armv7l)
Toolchain package versions: binutils_2.26.1-1 dpkg-dev_1.18.10 g++-6_6.1.1-11+rpi1 gcc-6_6.1.1-11+rpi1 libc6-dev_2.24-3 libstdc++-6-dev_6.1.1-11+rpi1 libstdc++6_6.1.1-11+rpi1 linux-libc-dev_3.18.5-1~exp1+rpi19+stretch
Package versions: adduser_3.115 adwaita-icon-theme_3.22.0-1 apt_1.3 autoconf_2.69-10 automake_1:1.15-4 autopoint_0.19.8.1-1 autotools-dev_20160430.1 base-files_9.6+rpi1 base-passwd_3.5.40 bash_4.4-1 binutils_2.26.1-1 bsdmainutils_9.0.11 bsdutils_1:2.28.2-1 build-essential_12.2 bzip2_1.0.6-8 ca-certificates_20160104 coreutils_8.25-2 cpio_2.11+dfsg-5 cpp_4:6.1.1-1 cpp-6_6.1.1-11+rpi1 dash_0.5.8-2.3 dconf-gsettings-backend_0.26.0-2 dconf-service_0.26.0-2 debconf_1.5.59 debfoster_2.7-2.1 debhelper_10.2.1 debianutils_4.8 dh-autoreconf_12 dh-python_2.20160818 dh-strip-nondeterminism_0.028-1 diffutils_1:3.5-1 dirmngr_2.1.15-3 dmsetup_2:1.02.133-1 dpkg_1.18.10 dpkg-dev_1.18.10 e2fslibs_1.43.3-1 e2fsprogs_1.43.3-1 fakeroot_1.21-2 file_1:5.28-4 findutils_4.6.0+git+20160703-2 fontconfig_2.11.0-6.7 fontconfig-config_2.11.0-6.7 fonts-dejavu-core_2.37-1 fuse2fs_1.43.3-1 g++_4:6.1.1-1 g++-6_6.1.1-11+rpi1 gcc_4:6.1.1-1 gcc-4.6-base_4.6.4-5+rpi1 gcc-4.7-base_4.7.3-11+rpi1 gcc-4.8-base_4.8.5-4 gcc-4.9-base_4.9.3-14 gcc-6_6.1.1-11+rpi1 gcc-6-base_6.1.1-11+rpi1 gettext_0.19.8.1-1 gettext-base_0.19.8.1-1 gir1.2-atk-1.0_2.22.0-1 gir1.2-atspi-2.0_2.22.0-1 gir1.2-freedesktop_1.50.0-1 gir1.2-gdkpixbuf-2.0_2.36.0-1 gir1.2-glib-2.0_1.50.0-1 gir1.2-gtk-2.0_2.24.31-1 gir1.2-gtk-3.0_3.22.0-2+rpi1 gir1.2-pango-1.0_1.40.3-2 glib-networking_2.50.0-1 glib-networking-common_2.50.0-1 glib-networking-services_2.50.0-1 gnome-icon-theme_3.12.0-2 gnupg_2.1.15-3 gnupg-agent_2.1.15-3 gnupg-l10n_2.1.15-3 gpgv_2.1.15-3 grep_2.25-6 groff-base_1.22.3-8 gsettings-desktop-schemas_3.22.0-1 gtk-update-icon-cache_3.22.0-2+rpi1 gzip_1.6-5 hicolor-icon-theme_0.15-1 hostname_3.18 icu-devtools_57.1-4 init_1.45 init-system-helpers_1.45 initscripts_2.88dsf-59.8 insserv_1.14.0-5.4 intltool-debian_0.35.0+20060710.4 kbd_2.0.3-2 klibc-utils_2.0.4-9+rpi1 kmod_22-1.1 libacl1_2.2.52-3 libacl1-dev_2.2.52-3 libapparmor1_2.10.95-4 libapt-pkg5.0_1.3 libarchive-zip-perl_1.59-1 libasan3_6.1.1-11+rpi1 libassuan0_2.4.3-1 libatk-bridge2.0-0_2.22.0-1 libatk-bridge2.0-dev_2.22.0-1 libatk1.0-0_2.22.0-1 libatk1.0-data_2.22.0-1 libatk1.0-dev_2.22.0-1 libatomic1_6.1.1-11+rpi1 libatspi2.0-0_2.22.0-1 libatspi2.0-dev_2.22.0-1 libattr1_1:2.4.47-2 libattr1-dev_1:2.4.47-2 libaudit-common_1:2.6.6-1 libaudit1_1:2.6.6-1 libavahi-client3_0.6.32-1 libavahi-common-data_0.6.32-1 libavahi-common3_0.6.32-1 libblkid1_2.28.2-1 libbsd0_0.8.3-1 libbz2-1.0_1.0.6-8 libc-bin_2.24-3 libc-dev-bin_2.24-3 libc6_2.24-3 libc6-dev_2.24-3 libcairo-gobject2_1.14.6-1+b1 libcairo-script-interpreter2_1.14.6-1+b1 libcairo2_1.14.6-1+b1 libcairo2-dev_1.14.6-1+b1 libcap-ng0_0.7.7-3 libcap2_1:2.25-1 libcap2-bin_1:2.25-1 libcc1-0_6.1.1-11+rpi1 libcolord2_1.3.3-2 libcomerr2_1.43.3-1 libcroco3_0.6.11-2 libcryptsetup4_2:1.7.0-2 libcups2_2.2.0-2 libdatrie1_0.2.10-2 libdb5.3_5.3.28-12 libdbus-1-3_1.10.10-1 libdbus-1-dev_1.10.10-1 libdconf1_0.26.0-2 libdebconfclient0_0.217 libdevmapper1.02.1_2:1.02.133-1 libdpkg-perl_1.18.10 libdrm2_2.4.70-1 libelf1_0.166-2 libepoxy-dev_1.3.1-1 libepoxy0_1.3.1-1 libexpat1_2.2.0-1 libexpat1-dev_2.2.0-1 libfakeroot_1.21-2 libfdisk1_2.28.2-1 libffi6_3.2.1-6 libfile-stripnondeterminism-perl_0.028-1 libfontconfig1_2.11.0-6.7 libfontconfig1-dev_2.11.0-6.7 libfreetype6_2.6.3-3+b1 libfreetype6-dev_2.6.3-3+b1 libfuse2_2.9.7-1 libgc1c2_1:7.4.2-8 libgcc-6-dev_6.1.1-11+rpi1 libgcc1_1:6.1.1-11+rpi1 libgcrypt20_1.7.3-1 libgdbm3_1.8.3-14 libgdk-pixbuf2.0-0_2.36.0-1 libgdk-pixbuf2.0-common_2.36.0-1 libgdk-pixbuf2.0-dev_2.36.0-1 libgirepository-1.0-1_1.50.0-1 libglib2.0-0_2.50.0-1 libglib2.0-bin_2.50.0-1 libglib2.0-data_2.50.0-2 libglib2.0-dev_2.50.0-1 libgmp-dev_2:6.1.1+dfsg-1 libgmp10_2:6.1.1+dfsg-1 libgmpxx4ldbl_2:6.1.1+dfsg-1 libgnutls30_3.5.4-2 libgomp1_6.1.1-11+rpi1 libgpg-error0_1.24-1 libgpm-dev_1.20.4-6.2 libgpm2_1.20.4-6.2 libgraphite2-3_1.3.8-1 libgraphite2-dev_1.3.8-1 libgssapi-krb5-2_1.14.3+dfsg-2 libgtk-3-0_3.22.0-2+rpi1 libgtk-3-common_3.22.0-2+rpi1 libgtk-3-dev_3.22.0-2+rpi1 libgtk2.0-0_2.24.31-1 libgtk2.0-common_2.24.31-1 libgtk2.0-dev_2.24.31-1 libharfbuzz-dev_1.2.7-1+b1 libharfbuzz-gobject0_1.2.7-1+b1 libharfbuzz-icu0_1.2.7-1+b1 libharfbuzz0b_1.2.7-1+b1 libhogweed4_3.2-1 libice-dev_2:1.0.9-1+b1 libice6_2:1.0.9-1+b1 libicu-dev_57.1-4 libicu57_57.1-4 libidn11_1.33-1 libisl15_0.17.1-1 libjbig0_2.1-3.1 libjpeg62-turbo_1:1.5.0-1 libjson-glib-1.0-0_1.2.2-1 libjson-glib-1.0-common_1.2.2-1 libk5crypto3_1.14.3+dfsg-2 libkeyutils1_1.5.9-9 libklibc_2.0.4-9+rpi1 libkmod2_22-1.1 libkrb5-3_1.14.3+dfsg-2 libkrb5support0_1.14.3+dfsg-2 libksba8_1.3.5-2 liblcms2-2_2.7-1 libldap-2.4-2_2.4.42+dfsg-2+rpi1+b2 liblua5.2-0_5.2.4-1.1 liblua5.2-dev_5.2.4-1.1 liblz4-1_0.0~r131-2 liblzma5_5.1.1alpha+20120614-2.1 liblzo2-2_2.08-1.2 libmagic-mgc_1:5.28-4 libmagic1_1:5.28-4 libmount1_2.28.2-1 libmpc3_1.0.3-1 libmpdec2_2.4.2-1 libmpfr4_3.1.4-2 libncurses5_6.0+20160917-1 libncursesw5_6.0+20160917-1 libnettle6_3.2-1 libnpth0_1.2-3 libp11-kit0_0.23.2-5 libpam-modules_1.1.8-3.3 libpam-modules-bin_1.1.8-3.3 libpam-runtime_1.1.8-3.3 libpam0g_1.1.8-3.3 libpango-1.0-0_1.40.3-2 libpango1.0-dev_1.40.3-2 libpangocairo-1.0-0_1.40.3-2 libpangoft2-1.0-0_1.40.3-2 libpangoxft-1.0-0_1.40.3-2 libpcre16-3_2:8.39-2 libpcre3_2:8.39-2 libpcre3-dev_2:8.39-2 libpcre32-3_2:8.39-2 libpcrecpp0v5_2:8.39-2 libperl-dev_5.24.1~rc3-3 libperl5.24_5.24.1~rc3-3 libpipeline1_1.4.1-2 libpixman-1-0_0.34.0-1 libpixman-1-dev_0.34.0-1 libplymouth4_0.9.2-3 libpng-dev_1.6.25-1 libpng12-0_1.2.54-6 libpng16-16_1.6.25-1 libprocps6_2:3.3.12-2 libproxy1v5_0.4.11-5 libpthread-stubs0-dev_0.3-4 libpython3-dev_3.5.1-4 libpython3-stdlib_3.5.1-4 libpython3.5_3.5.2-6 libpython3.5-dev_3.5.2-6 libpython3.5-minimal_3.5.2-6 libpython3.5-stdlib_3.5.2-6 libreadline-dev_7.0-1 libreadline6_6.3-8+b3 libreadline7_7.0-1 librest-0.7-0_0.8.0-1 librsvg2-2_2.40.16-1 librsvg2-common_2.40.16-1 libruby2.3_2.3.1-5 libsasl2-2_2.1.26.dfsg1-15 libsasl2-modules_2.1.26.dfsg1-15 libsasl2-modules-db_2.1.26.dfsg1-15 libseccomp2_2.3.1-2 libselinux1_2.5-3 libselinux1-dev_2.5-3 libsemanage-common_2.5-1 libsemanage1_2.5-1 libsepol1_2.5-1 libsepol1-dev_2.5-1 libsigsegv2_2.10-5 libsm-dev_2:1.2.2-1+b1 libsm6_2:1.2.2-1+b1 libsmartcols1_2.28.2-1 libsoup-gnome2.4-1_2.56.0-1 libsoup2.4-1_2.56.0-1 libsqlite3-0_3.14.2-1 libss2_1.43.3-1 libssl1.0.2_1.0.2j-1 libstdc++-6-dev_6.1.1-11+rpi1 libstdc++6_6.1.1-11+rpi1 libsystemd0_231-4 libtasn1-6_4.9-4 libtcl8.6_8.6.6+dfsg-1 libthai-data_0.1.25-1 libthai0_0.1.25-1 libtiff5_4.0.6-2 libtimedate-perl_2.3000-2 libtinfo-dev_6.0+20160917-1 libtinfo5_6.0+20160917-1 libtool_2.4.6-2 libubsan0_6.1.1-11+rpi1 libudev1_231-4 libunistring0_0.9.6+really0.9.3-0.1 libusb-0.1-4_2:0.1.12-30 libustr-1.0-1_1.0.4-5 libuuid1_2.28.2-1 libx11-6_2:1.6.3-1 libx11-data_2:1.6.3-1 libx11-dev_2:1.6.3-1 libxau-dev_1:1.0.8-1 libxau6_1:1.0.8-1 libxaw7_2:1.0.13-1 libxaw7-dev_2:1.0.13-1 libxcb-render0_1.12-1 libxcb-render0-dev_1.12-1 libxcb-shm0_1.12-1 libxcb-shm0-dev_1.12-1 libxcb1_1.12-1 libxcb1-dev_1.12-1 libxcomposite-dev_1:0.4.4-1 libxcomposite1_1:0.4.4-1 libxcursor-dev_1:1.1.14-1+b1 libxcursor1_1:1.1.14-1+b1 libxdamage-dev_1:1.1.4-2+b1 libxdamage1_1:1.1.4-2+b1 libxdmcp-dev_1:1.1.2-1.1 libxdmcp6_1:1.1.2-1.1 libxext-dev_2:1.3.3-1 libxext6_2:1.3.3-1 libxfixes-dev_1:5.0.2-1 libxfixes3_1:5.0.2-1 libxft-dev_2.3.2-1 libxft2_2.3.2-1 libxi-dev_2:1.7.6-1 libxi6_2:1.7.6-1 libxinerama-dev_2:1.1.3-1+b1 libxinerama1_2:1.1.3-1+b1 libxkbcommon-dev_0.6.1-1 libxkbcommon0_0.6.1-1 libxml2_2.9.4+dfsg1-2 libxml2-utils_2.9.4+dfsg1-2 libxmu-dev_2:1.1.2-2 libxmu-headers_2:1.1.2-2 libxmu6_2:1.1.2-2 libxpm-dev_1:3.5.11-1+b1 libxpm4_1:3.5.11-1+b1 libxrandr-dev_2:1.5.0-1 libxrandr2_2:1.5.0-1 libxrender-dev_1:0.9.9-2 libxrender1_1:0.9.9-2 libxt-dev_1:1.1.5-1 libxt6_1:1.1.5-1 libxtst-dev_2:1.2.2-1+b1 libxtst6_2:1.2.2-1+b1 libyaml-0-2_0.1.7-2 linux-libc-dev_3.18.5-1~exp1+rpi19+stretch login_1:4.2-3.2 lsb-base_9.20160629+rpi1 lua5.2_5.2.4-1.1 m4_1.4.17-5 make_4.1-9 makedev_2.3.1-93 man-db_2.7.5-1 manpages_4.07-1 mawk_1.3.3-17 mime-support_3.60 mount_2.28.2-1 multiarch-support_2.24-3 ncurses-base_6.0+20160917-1 ncurses-bin_6.0+20160917-1 netbase_5.3 openssl_1.0.2j-1 passwd_1:4.2-3.2 patch_2.7.5-1 perl_5.24.1~rc3-3 perl-base_5.24.1~rc3-3 perl-modules-5.24_5.24.1~rc3-3 pinentry-curses_0.9.7-5 pkg-config_0.29-4 po-debconf_1.0.20 procps_2:3.3.12-2 psmisc_22.21-2.1 python3_3.5.1-4 python3-dev_3.5.1-4 python3-minimal_3.5.1-4 python3.5_3.5.2-6 python3.5-dev_3.5.2-6 python3.5-minimal_3.5.2-6 rake_10.5.0-2 raspbian-archive-keyring_20120528.2 readline-common_6.3-8 ruby_1:2.3.0+4 ruby-dev_1:2.3.0+4 ruby-did-you-mean_1.0.0-2 ruby-minitest_5.9.0-1 ruby-net-telnet_0.1.1-2 ruby-power-assert_0.3.0-1 ruby-test-unit_3.1.7-2 ruby2.3_2.3.1-5 ruby2.3-dev_2.3.1-5 rubygems-integration_1.10 sbuild-build-depends-core-dummy_0.invalid.0 sbuild-build-depends-vim-dummy_0.invalid.0 sed_4.2.2-8 sensible-utils_0.0.9 shared-mime-info_1.7-1 startpar_0.59-3.1 systemd_231-4 systemd-sysv_231-4 sysv-rc_2.88dsf-59.8 sysvinit-utils_2.88dsf-59.8 tar_1.29b-1 tcl_8.6.0+9 tcl-dev_8.6.0+9 tcl8.6_8.6.6+dfsg-1 tcl8.6-dev_8.6.6+dfsg-1 tzdata_2016g-1 ucf_3.0036 udev_231-4 util-linux_2.28.2-1 x11-common_1:7.7+16 x11proto-composite-dev_1:0.4.2-2 x11proto-core-dev_7.0.29-1 x11proto-damage-dev_1:1.2.1-2 x11proto-fixes-dev_1:5.0-2 x11proto-input-dev_2.3.2-1 x11proto-kb-dev_1.0.7-1 x11proto-randr-dev_1.5.0-1 x11proto-record-dev_1.14.2-1 x11proto-render-dev_2:0.11.1-2 x11proto-xext-dev_7.3.0-1 x11proto-xinerama-dev_1.2.1-2 xkb-data_2.18-1 xorg-sgml-doctools_1:1.11-1 xtrans-dev_1.3.5-1 xz-utils_5.1.1alpha+20120614-2.1 zlib1g_1:1.2.8.dfsg-2+b1 zlib1g-dev_1:1.2.8.dfsg-2+b1

+------------------------------------------------------------------------------+
| Build                                                                        |
+------------------------------------------------------------------------------+


Unpack source
-------------

gpgv: unknown type of key resource 'trustedkeys.kbx'
gpgv: keyblock resource '/sbuild-nonexistent/.gnupg/trustedkeys.kbx': General error
gpgv: Signature made Wed Oct  5 03:52:54 2016 UTC
gpgv:                using RSA key DFE691AE331BA3DB
gpgv: Can't check signature: No public key
dpkg-source: warning: failed to verify signature on ./vim_8.0.0022-1.dsc
dpkg-source: info: extracting vim in /<<PKGBUILDDIR>>
dpkg-source: info: unpacking vim_8.0.0022.orig.tar.gz
dpkg-source: info: unpacking vim_8.0.0022-1.debian.tar.xz
dpkg-source: info: applying upstream/Support-defining-compilation-date-in-SOURCE_DATE_EPOCH.patch
dpkg-source: info: applying debian/Support-sourcing-a-vimrc.tiny-when-Vim-is-invoked-as-vi.patch
dpkg-source: info: applying debian/Detect-the-rst-filetype-using-the-contents-of-the-file.patch
dpkg-source: info: applying debian/Add-recognition-of-more-LaTeX-commands-for-tex-filetype-d.patch
dpkg-source: info: applying debian/Document-Debian-s-decision-to-disable-modelines-by-defaul.patch

Check disc space
----------------

Sufficient free space for build

User Environment
----------------

APT_CONFIG=/var/lib/sbuild/apt.conf
DEB_BUILD_OPTIONS=parallel=4
HOME=/sbuild-nonexistent
LC_ALL=POSIX
LOGNAME=root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
SCHROOT_ALIAS_NAME=stretch-staging-armhf-sbuild
SCHROOT_CHROOT_NAME=stretch-staging-armhf-sbuild
SCHROOT_COMMAND=env
SCHROOT_GID=109
SCHROOT_GROUP=buildd
SCHROOT_SESSION_ID=stretch-staging-armhf-sbuild-da091a1a-93c1-4f3f-b7eb-1041f344b19d
SCHROOT_UID=104
SCHROOT_USER=buildd
SHELL=/bin/sh
TERM=vt102
USER=buildd

dpkg-buildpackage
-----------------

dpkg-buildpackage: info: source package vim
dpkg-buildpackage: info: source version 2:8.0.0022-1
dpkg-buildpackage: info: source distribution unstable
 dpkg-source --before-build vim-8.0.0022
dpkg-buildpackage: info: host architecture armhf
 fakeroot debian/rules clean
dh_testdir
dh_testdir
dh_testroot
dh_testdir
for x in install postinst prerm links lintian-overrides ; do \
  rm -f debian/vim-tiny.$x ; \
done
dh_testroot
dh_testdir
if [ "vim-tiny" = "vim-tiny" ]; then \
  rm -f debian/tiny/vimrc.tiny; \
fi
for x in install postinst prerm links lintian-overrides ; do \
  rm -f debian/vim-gtk.$x ; \
done
dh_testroot
rm -rf src/vim-tiny
dh_testdir
if [ "vim-gtk" = "vim-tiny" ]; then \
  rm -f debian/tiny/vimrc.tiny; \
fi
for x in install postinst prerm links lintian-overrides ; do \
  rm -f debian/vim-gtk3.$x ; \
done
dh_testroot
rm -rf src/vim-gtk
dh_testdir
if [ "vim-gtk3" = "vim-tiny" ]; then \
  rm -f debian/tiny/vimrc.tiny; \
fi
for x in install postinst prerm links lintian-overrides ; do \
  rm -f debian/vim-athena.$x ; \
done
dh_testroot
rm -rf src/vim-gtk3
if [ "vim-athena" = "vim-tiny" ]; then \
  rm -f debian/tiny/vimrc.tiny; \
fi
rm -rf src/vim-athena
for x in install postinst prerm links lintian-overrides ; do \
  rm -f debian/vim-nox.$x ; \
done
dh_testroot
if [ "vim-nox" = "vim-tiny" ]; then \
  rm -f debian/tiny/vimrc.tiny; \
fi
rm -rf src/vim-nox
for x in install postinst prerm links lintian-overrides ; do \
  rm -f debian/vim.$x ; \
done
[ ! -L src/vim-basic/po ] || /usr/bin/make -C src/vim-basic/po clean
rm -f debian/vim-common.install debian/vim-common.links debian/vim-gui-common.install debian/vim-gui-common.links debian/vim-runtime.install debian/vim-runtime.links debian/vim-runtime.postrm debian/vim-runtime.preinst debian/runtime/debian.vim
rm -rf src/vim-basic
dh_testdir
dh_testroot
rm -f extract-stamp* build-stamp* install-stamp* configure-stamp* autoconf-stamp
rm -f debian/helpztags.1
rm -rf debian/policy/vim-policy.html
rm -f debian/policy/vim-policy.txt
rm -f debian/tmplogo.*
[ ! -f src/auto/config.cache ] || make distclean
rm -f src/auto/config.mk src/pixmaps src/runtime
[ ! -f debian/configure.dist ] || mv debian/configure.dist src/auto/configure
rm -f src/auto/config.h
rm -f runtime/doc/doctags runtime/doc/tags.ref
rm -f runtime/doc/*.html runtime/doc/*.log
dh_clean
 debian/rules build-arch
cp src/config.mk.dist src/auto/config.mk
dh_testdir
[ -f debian/configure.dist ] || cp src/auto/configure debian/configure.dist
/usr/bin/make -C src autoconf
make[1]: Entering directory '/<<PKGBUILDDIR>>/src'
if test ! -f configure.save; then mv configure configure.save; fi
autoconf
sed -e 's+>config.log+>auto/config.log+' -e 's+\./config.log+auto/config.log+' configure > auto/configure
chmod 755 auto/configure
mv -f configure.save configure
rm -rf autom4te.cache
rm -f auto/config.status auto/config.cache
make[1]: Leaving directory '/<<PKGBUILDDIR>>/src'
/usr/bin/make distclean
make[1]: Entering directory '/<<PKGBUILDDIR>>'
Starting make in the src directory.
If there are problems, cd to the src directory and run make there
cd src && /usr/bin/make distclean
make[2]: Entering directory '/<<PKGBUILDDIR>>/src'
rm -f auto/config.cache
if test "Xdistclean" != "Xclean" \
	-a "Xdistclean" != "Xdistclean" \
	-a "Xdistclean" != "Xautoconf" \
	-a "Xdistclean" != "Xreconfig"; then \
    GUI_INC_LOC="" GUI_LIB_LOC="" \
	CC="" CPPFLAGS="" CFLAGS="" \
	LDFLAGS=""  srcdir="." \
	./configure    \
	  \
	   \
	   \
	   \
	   \
	  \
	   \
	 \
	   \
	  \
	; \
fi
cd testdir; /usr/bin/make -f Makefile clean
rm -f auto/config.status auto/config.cache config.log auto/config.log
rm -f auto/config.h auto/link.log auto/link.sed auto/config.mk
touch auto/config.h
cp config.mk.dist auto/config.mk
make[3]: Entering directory '/<<PKGBUILDDIR>>/src/testdir'
rm -rf *.out *.failed *.res *.rej *.orig test.log messages test.out X* viminfo tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok benchmark.out valgrind.*
make[3]: Leaving directory '/<<PKGBUILDDIR>>/src/testdir'
if test -d po; then \
	cd po; /usr/bin/make checkclean; \
fi
make[3]: Entering directory '/<<PKGBUILDDIR>>/src/po'
rm -f *.ck
make[3]: Leaving directory '/<<PKGBUILDDIR>>/src/po'
rm -f *.o objects/* core vim.core vim vim xxd/*.o
rm -f xxd/xxd auto/osdef.h auto/pathdef.c auto/if_perl.c auto/gui_gtk_gresources.c auto/gui_gtk_gresources.h
rm -f conftest* *~ auto/link.sed
rm -f json_test memfile_test message_test
rm -f runtime pixmaps
rm -rf vim.app
rm -rf mzscheme_base.c
if test -d po; then \
	cd po; /usr/bin/make prefix= clean; \
fi
make[3]: Entering directory '/<<PKGBUILDDIR>>/src/po'
rm -f *.ck
rm -f core core.* *.old.po *.mo *.pot sjiscorr
make[3]: Leaving directory '/<<PKGBUILDDIR>>/src/po'
rm -f tags
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src'
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
touch autoconf-stamp
dh_testdir
dh_testdir
dh_testdir
*** DEBIAN *** CONFIGURING VARIANT vim-basic
/usr/bin/make -C src shadow SHADOWDIR=vim-basic
dh_testdir
*** DEBIAN *** CONFIGURING VARIANT vim-tiny
make[1]: Entering directory '/<<PKGBUILDDIR>>/src'
ln -s ../runtime .
ln -s ../pixmaps .
mkdir vim-basic
cd vim-basic; ln -s ../*.[ch] ../*.in ../*.sh ../*.xs ../*.xbm ../gui_gtk_res.xml ../toolcheck ../proto ../vimtutor ../gvimtutor ../mkinstalldirs .
mkdir vim-basic/auto
cd vim-basic/auto; ln -s ../../auto/configure .
mkdir vim-basic/po
cd vim-basic/po; ln -s ../../po/*.po ../../po/*.mak ../../po/*.vim ../../po/Makefile .
cd vim-basic; rm -f auto/link.sed
cp Makefile configure vim-basic
rm -f vim-basic/auto/config.mk vim-basic/config.mk.dist
cp config.mk.dist vim-basic/auto/config.mk
cp config.mk.dist vim-basic
mkdir vim-basic/xxd
cd vim-basic/xxd; ln -s ../../xxd/*.[ch] ../../xxd/Make* .
if test -d os_mac_rsrc; then \
	cd vim-basic; \
	ln -s ../infplist.xml .; \
	ln -s ../os_mac_rsrc ../os_mac.rsr.hqx ../dehqx.py .; \
fi
mkdir vim-basic/testdir
cd vim-basic/testdir; ln -s ../../testdir/Makefile \
			 ../../testdir/Make_all.mak \
			 ../../testdir/README.txt \
			 ../../testdir/*.in \
			 ../../testdir/*.vim \
			 ../../testdir/*.py \
			 ../../testdir/python* \
			 ../../testdir/sautest \
			 ../../testdir/samples \
			 ../../testdir/test83-tags? \
			 ../../testdir/*.ok .
make[1]: Leaving directory '/<<PKGBUILDDIR>>/src'
if test -f src/auto/config.cache; then make distclean; fi
/usr/bin/make -C src shadow SHADOWDIR=vim-tiny
cd src/vim-basic && LDFLAGS="-fPIE -pie -Wl,-z,relro -Wl,-z,now" CPPFLAGS="-Wdate-time" CFLAGS="-g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security" ./configure --prefix=/usr --mandir='${prefix}'/share/man --without-local-dir --with-modified-by="pkg-vim-maintainers@lists.alioth.debian.org" --with-compiledby="pkg-vim-maintainers@lists.alioth.debian.org" --enable-fail-if-missing --enable-cscope --enable-gpm --enable-selinux --disable-smack --with-features=huge --enable-multibyte --enable-acl --without-x --enable-gui=no --disable-luainterp --disable-mzschemeinterp --disable-perlinterp --disable-pythoninterp --disable-python3interp --disable-rubyinterp --disable-tclinterp
*** DEBIAN *** CONFIGURING VARIANT vim-gtk
/usr/bin/make -C src shadow SHADOWDIR=vim-gtk
make[1]: Entering directory '/<<PKGBUILDDIR>>/src'
mkdir vim-tiny
cd vim-tiny; ln -s ../*.[ch] ../*.in ../*.sh ../*.xs ../*.xbm ../gui_gtk_res.xml ../toolcheck ../proto ../vimtutor ../gvimtutor ../mkinstalldirs .
make[1]: Entering directory '/<<PKGBUILDDIR>>/src'
mkdir vim-gtk
cd vim-gtk; ln -s ../*.[ch] ../*.in ../*.sh ../*.xs ../*.xbm ../gui_gtk_res.xml ../toolcheck ../proto ../vimtutor ../gvimtutor ../mkinstalldirs .
mkdir vim-tiny/auto
cd vim-tiny/auto; ln -s ../../auto/configure .
mkdir vim-tiny/po
cd vim-tiny/po; ln -s ../../po/*.po ../../po/*.mak ../../po/*.vim ../../po/Makefile .
mkdir vim-gtk/auto
cd vim-tiny; rm -f auto/link.sed
cp Makefile configure vim-tiny
cd vim-gtk/auto; ln -s ../../auto/configure .
rm -f vim-tiny/auto/config.mk vim-tiny/config.mk.dist
mkdir vim-gtk/po
cp config.mk.dist vim-tiny/auto/config.mk
*** DEBIAN *** CONFIGURING VARIANT vim-gtk3
/usr/bin/make -C src shadow SHADOWDIR=vim-gtk3
cd vim-gtk/po; ln -s ../../po/*.po ../../po/*.mak ../../po/*.vim ../../po/Makefile .
cp config.mk.dist vim-tiny
mkdir vim-tiny/xxd
cd vim-tiny/xxd; ln -s ../../xxd/*.[ch] ../../xxd/Make* .
cd vim-gtk; rm -f auto/link.sed
if test -d os_mac_rsrc; then \
	cd vim-tiny; \
	ln -s ../infplist.xml .; \
	ln -s ../os_mac_rsrc ../os_mac.rsr.hqx ../dehqx.py .; \
fi
cp Makefile configure vim-gtk
make[1]: Entering directory '/<<PKGBUILDDIR>>/src'
mkdir vim-gtk3
mkdir vim-tiny/testdir
rm -f vim-gtk/auto/config.mk vim-gtk/config.mk.dist
cp config.mk.dist vim-gtk/auto/config.mk
cd vim-gtk3; ln -s ../*.[ch] ../*.in ../*.sh ../*.xs ../*.xbm ../gui_gtk_res.xml ../toolcheck ../proto ../vimtutor ../gvimtutor ../mkinstalldirs .
cd vim-tiny/testdir; ln -s ../../testdir/Makefile \
			 ../../testdir/Make_all.mak \
			 ../../testdir/README.txt \
			 ../../testdir/*.in \
			 ../../testdir/*.vim \
			 ../../testdir/*.py \
			 ../../testdir/python* \
			 ../../testdir/sautest \
			 ../../testdir/samples \
			 ../../testdir/test83-tags? \
			 ../../testdir/*.ok .
cp config.mk.dist vim-gtk
mkdir vim-gtk/xxd
cd vim-gtk/xxd; ln -s ../../xxd/*.[ch] ../../xxd/Make* .
if test -d os_mac_rsrc; then \
	cd vim-gtk; \
	ln -s ../infplist.xml .; \
	ln -s ../os_mac_rsrc ../os_mac.rsr.hqx ../dehqx.py .; \
fi
mkdir vim-gtk/testdir
cd vim-gtk/testdir; ln -s ../../testdir/Makefile \
			 ../../testdir/Make_all.mak \
			 ../../testdir/README.txt \
			 ../../testdir/*.in \
			 ../../testdir/*.vim \
			 ../../testdir/*.py \
			 ../../testdir/python* \
			 ../../testdir/sautest \
			 ../../testdir/samples \
			 ../../testdir/test83-tags? \
			 ../../testdir/*.ok .
mkdir vim-gtk3/auto
cd vim-gtk3/auto; ln -s ../../auto/configure .
mkdir vim-gtk3/po
make[1]: Leaving directory '/<<PKGBUILDDIR>>/src'
if test -f src/auto/config.cache; then make distclean; fi
cd vim-gtk3/po; ln -s ../../po/*.po ../../po/*.mak ../../po/*.vim ../../po/Makefile .
cd src/vim-tiny && LDFLAGS="-fPIE -pie -Wl,-z,relro -Wl,-z,now" CPPFLAGS="-Wdate-time" CFLAGS="-g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC" ./configure --prefix=/usr --mandir='${prefix}'/share/man --without-local-dir --with-modified-by="pkg-vim-maintainers@lists.alioth.debian.org" --with-compiledby="pkg-vim-maintainers@lists.alioth.debian.org" --enable-fail-if-missing --with-features=small --disable-gui --disable-xsmp --disable-xsmp-interact --disable-netbeans --disable-gpm --enable-nls --enable-multibyte --enable-acl --enable-selinux --disable-smack
cd vim-gtk3; rm -f auto/link.sed
cp Makefile configure vim-gtk3
rm -f vim-gtk3/auto/config.mk vim-gtk3/config.mk.dist
cp config.mk.dist vim-gtk3/auto/config.mk
cp config.mk.dist vim-gtk3
mkdir vim-gtk3/xxd
make[1]: Leaving directory '/<<PKGBUILDDIR>>/src'
if test -f src/auto/config.cache; then make distclean; fi
cd src/vim-gtk && LDFLAGS="-fPIE -pie -Wl,-z,relro -Wl,-z,now" CPPFLAGS="-Wdate-time" CFLAGS="-g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security" ./configure --prefix=/usr --mandir='${prefix}'/share/man --without-local-dir --with-modified-by="pkg-vim-maintainers@lists.alioth.debian.org" --with-compiledby="pkg-vim-maintainers@lists.alioth.debian.org" --enable-fail-if-missing --enable-cscope --enable-gpm --enable-selinux --disable-smack --with-features=huge --enable-multibyte --enable-acl --with-x --enable-xim --enable-gui=gtk2 --enable-gtk2-check --disable-gnome-check --disable-motif-check --disable-athena-check --disable-fontset --enable-luainterp --disable-mzschemeinterp --enable-perlinterp --enable-python3interp --with-python3-config-dir=/usr/lib/python3.5/config-3.5m-arm-linux-gnueabihf --disable-pythoninterp --enable-rubyinterp --enable-tclinterp --with-tclsh=/usr/bin/tclsh
cd vim-gtk3/xxd; ln -s ../../xxd/*.[ch] ../../xxd/Make* .
if test -d os_mac_rsrc; then \
	cd vim-gtk3; \
	ln -s ../infplist.xml .; \
	ln -s ../os_mac_rsrc ../os_mac.rsr.hqx ../dehqx.py .; \
fi
mkdir vim-gtk3/testdir
cd vim-gtk3/testdir; ln -s ../../testdir/Makefile \
			 ../../testdir/Make_all.mak \
			 ../../testdir/README.txt \
			 ../../testdir/*.in \
			 ../../testdir/*.vim \
			 ../../testdir/*.py \
			 ../../testdir/python* \
			 ../../testdir/sautest \
			 ../../testdir/samples \
			 ../../testdir/test83-tags? \
			 ../../testdir/*.ok .
make[1]: Leaving directory '/<<PKGBUILDDIR>>/src'
if test -f src/auto/config.cache; then make distclean; fi
cd src/vim-gtk3 && LDFLAGS="-fPIE -pie -Wl,-z,relro -Wl,-z,now" CPPFLAGS="-Wdate-time" CFLAGS="-g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security" ./configure --prefix=/usr --mandir='${prefix}'/share/man --without-local-dir --with-modified-by="pkg-vim-maintainers@lists.alioth.debian.org" --with-compiledby="pkg-vim-maintainers@lists.alioth.debian.org" --enable-fail-if-missing --enable-cscope --enable-gpm --enable-selinux --disable-smack --with-features=huge --enable-multibyte --enable-acl --with-x --enable-xim --enable-gui=gtk3 --enable-gtk3-check --disable-gnome-check --disable-motif-check --disable-athena-check --disable-fontset --enable-luainterp --disable-mzschemeinterp --enable-perlinterp --enable-python3interp --with-python3-config-dir=/usr/lib/python3.5/config-3.5m-arm-linux-gnueabihf --disable-pythoninterp --enable-rubyinterp --enable-tclinterp --with-tclsh=/usr/bin/tclsh
configure: creating cache auto/config.cache
configure: creating cache auto/config.cache
checking whether make sets $(MAKE)... checking whether make sets $(MAKE)... yes
yes
checking for gcc... gcc
checking for gcc... gcc
checking whether the C compiler works... checking whether the C compiler works... configure: creating cache auto/config.cache
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
configure: creating cache auto/config.cache
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking whether the C compiler works... checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... 
checking whether we are cross compiling... 
checking whether we are cross compiling... 
checking whether we are cross compiling... no
no
checking for suffix of object files... checking for suffix of object files... no
checking for suffix of object files... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... o
checking whether we are using the GNU C compiler... o
checking whether we are using the GNU C compiler... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking whether gcc accepts -g... yes
checking whether gcc accepts -g... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... yes
checking for gcc option to accept ISO C89... yes
checking for gcc option to accept ISO C89... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... none needed
checking how to run the C preprocessor... none needed
checking how to run the C preprocessor... none needed
checking how to run the C preprocessor... gcc -E
gcc -E
gcc -E
gcc -E
checking for grep that handles long lines and -e... checking for grep that handles long lines and -e... checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
/bin/grep
checking for egrep... /bin/grep
checking for egrep... /bin/grep -E
/bin/grep -E
checking for fgrep... /bin/grep -F
checking for library containing strerror... checking for fgrep... checking for fgrep... /bin/grep -F
checking for library containing strerror... /bin/grep -F
checking for library containing strerror... checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for library containing strerror... none required
checking for gawk... no
checking for mawk... mawk
checking for strip... strip
checking for ANSI C header files... none required
checking for gawk... no
checking for mawk... none required
mawk
checking for strip... checking for gawk... no
strip
checking for mawk... checking for ANSI C header files... mawk
checking for strip... strip
checking for ANSI C header files... none required
checking for gawk... no
checking for mawk... mawk
checking for strip... strip
checking for ANSI C header files... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
yes
checking for sys/wait.h that is POSIX.1 compatible... checking for sys/wait.h that is POSIX.1 compatible... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
yes
yes
checking --enable-fail-if-missing argument... checking --enable-fail-if-missing argument... yes
yes
checking for recent clang version... checking for recent clang version... no
configure: checking for buggy tools...
checking --enable-fail-if-missing argument... yes
no
configure: checking for buggy tools...
checking for recent clang version... checking for BeOS... no
no
checking for QNX... configure: checking for buggy tools...
checking for BeOS... no
checking for Darwin (Mac OS X)... no
checking for QNX... no
checking for Darwin (Mac OS X)... yes
checking for BeOS... no
no
checking AvailabilityMacros.h usability... checking for QNX... no
no
checking for Darwin (Mac OS X)... checking AvailabilityMacros.h usability... checking --enable-fail-if-missing argument... yes
checking for recent clang version... no
checking AvailabilityMacros.h usability... no
configure: checking for buggy tools...
checking for BeOS... no
checking for QNX... no
checking for Darwin (Mac OS X)... no
checking AvailabilityMacros.h usability... no
checking AvailabilityMacros.h presence... no
checking AvailabilityMacros.h presence... no
checking AvailabilityMacros.h presence... no
checking for AvailabilityMacros.h... no
checking --with-local-dir argument... no
checking --with-vim-name argument... Defaulting to vim
checking --with-ex-name argument... Defaulting to ex
checking --with-view-name argument... Defaulting to view
checking --with-global-runtime argument... no
checking --with-modified-by argument... pkg-vim-maintainers@lists.alioth.debian.org
no
no
checking AvailabilityMacros.h presence... checking for AvailabilityMacros.h... no
checking if character set is EBCDIC... checking --with-local-dir argument... no
checking --with-vim-name argument... Defaulting to vim
checking --with-ex-name argument... Defaulting to ex
checking --with-view-name argument... Defaulting to view
checking --with-global-runtime argument... no
checking --with-modified-by argument... pkg-vim-maintainers@lists.alioth.debian.org
no
checking for AvailabilityMacros.h... no
checking --with-local-dir argument... checking if character set is EBCDIC... no
checking --with-vim-name argument... Defaulting to vim
checking --with-ex-name argument... Defaulting to ex
checking --with-view-name argument... Defaulting to view
checking --with-global-runtime argument... no
checking --with-modified-by argument... pkg-vim-maintainers@lists.alioth.debian.org
checking if character set is EBCDIC... no
checking for AvailabilityMacros.h... no
checking --with-local-dir argument... no
checking --with-vim-name argument... Defaulting to vim
checking --with-ex-name argument... Defaulting to ex
checking --with-view-name argument... Defaulting to view
checking --with-global-runtime argument... no
checking --with-modified-by argument... pkg-vim-maintainers@lists.alioth.debian.org
checking if character set is EBCDIC... no
checking --disable-smack argument... yes
no
checking --disable-selinux argument... no
checking for is_selinux_enabled in -lselinux... checking --disable-smack argument... yes
checking --disable-selinux argument... no
checking for is_selinux_enabled in -lselinux... no
checking --disable-smack argument... yes
checking --disable-selinux argument... no
checking for is_selinux_enabled in -lselinux... no
checking --disable-smack argument... yes
checking --disable-selinux argument... no
checking for is_selinux_enabled in -lselinux... yes
checking --with-features argument... huge
checking --with-compiledby argument... pkg-vim-maintainers@lists.alioth.debian.org
checking --disable-xsmp argument... no
checking --disable-xsmp-interact argument... no
checking --enable-luainterp argument... yes
checking --with-lua-prefix argument... no
checking LUA_PREFIX environment var... not set, default to /usr
checking --with-luajit... no
checking for lua... /usr/bin/lua
checking Lua version... yes
checking --with-features argument... small
checking --with-compiledby argument... pkg-vim-maintainers@lists.alioth.debian.org
checking --disable-xsmp argument... yes
checking --enable-luainterp argument... 5.2
no
checking if lua.h can be found in /usr/include... no
checking if lua.h can be found in /usr/include/lua5.2... yes
checking if link with -L/usr/lib -llua5.2 is sane... checking --enable-mzschemeinterp argument... no
checking --enable-perlinterp argument... no
checking --enable-pythoninterp argument... no
yes
checking --with-features argument... huge
checking --with-compiledby argument... pkg-vim-maintainers@lists.alioth.debian.org
checking --enable-python3interp argument... checking --disable-xsmp argument... no
no
checking --disable-xsmp-interact argument... no
checking --enable-luainterp argument... no
yes
checking --with-features argument... huge
checking --with-compiledby argument... pkg-vim-maintainers@lists.alioth.debian.org
checking --disable-xsmp argument... no
checking --disable-xsmp-interact argument... no
checking --enable-luainterp argument... yes
checking --enable-mzschemeinterp argument... no
checking --enable-tclinterp argument... no
checking --with-lua-prefix argument... no
checking LUA_PREFIX environment var... not set, default to /usr
checking --with-luajit... no
checking for lua... checking --enable-perlinterp argument... /usr/bin/lua
no
checking Lua version... checking --enable-rubyinterp argument... no
checking --enable-pythoninterp argument... no
checking --enable-cscope argument... no
checking --enable-workshop argument... no
checking --disable-netbeans argument... yes
checking --disable-channel argument... checking --enable-python3interp argument... cannot use channels with tiny or small features
5.2
checking if lua.h can be found in /usr/include... no
no
checking if lua.h can be found in /usr/include/lua5.2... yes
checking if link with -L/usr/lib -llua5.2 is sane... checking --enable-multibyte argument... yes
checking --enable-hangulinput argument... no
checking --enable-xim argument... defaulting to auto
checking --enable-fontset argument... no
checking --enable-tclinterp argument... no
checking --enable-rubyinterp argument... no
checking for xmkmf... checking --enable-cscope argument... yes
checking --enable-workshop argument... no
no
checking for X... checking --disable-netbeans argument... no
checking --disable-channel argument... no
checking for socket in -lsocket... no
checking for gethostbyname in -lnsl... yes
checking --enable-mzschemeinterp argument... no
checking --enable-perlinterp argument... yes
checking for perl... /usr/bin/perl
checking Perl version... yes
checking --enable-mzschemeinterp argument... no
checking --enable-perlinterp argument... yes
checking for perl... /usr/bin/perl
checking Perl version... OK
OK
libraries , headers 
yes
checking whether compiling with process communication is possible... checking for gethostbyname... yes
checking --enable-multibyte argument... yes
checking --enable-hangulinput argument... no
checking --enable-xim argument... defaulting to auto
checking --enable-fontset argument... no
defaulting to: don't HAVE_X11
checking --enable-gui argument... no GUI support
yes
checking for connect... checking X11/SM/SMlib.h usability... yes
checking X11/SM/SMlib.h presence... yes
checking for X11/SM/SMlib.h... yes
checking for CYGWIN or MSYS environment... no
checking whether toupper is broken... yes
checking for remove... checking if compile and link flags for Perl are sane... checking if compile and link flags for Perl are sane... yes
checking for shmat... no
checking whether __DATE__ and __TIME__ work... yes
checking whether __attribute__((unused)) is allowed... yes
checking --enable-pythoninterp argument... no
checking --enable-python3interp argument... yes
checking for python3... /usr/bin/python3
checking Python version... yes
checking for IceConnectionNumber in -lICE... yes
checking --enable-pythoninterp argument... no
checking --enable-python3interp argument... yes
yes
checking elf.h usability... checking for python3... /usr/bin/python3
checking Python version... 3.5
checking Python is 3.0 or better... 3.5
checking Python is 3.0 or better... yes
checking elf.h presence... yep
checking Python's abiflags... yes
checking if X11 header files can be found... yes
checking for elf.h... yes
checking for main in -lelf... yep
checking Python's abiflags... no
checking for dirent.h that defines DIR... m
checking Python's install prefix... yes
checking for _XdmcpAuthDoIt in -lXdmcp... m
checking Python's install prefix... yes
checking for library containing opendir... /usr
checking Python's execution prefix... /usr
checking Python's execution prefix... /usr
/usr
yes
checking for IceOpenConnection in -lICE... none required
checking stdint.h usability... checking Python's configuration directory... checking Python's configuration directory... (cached) (cached) /usr/lib/python3.5/config-3.5m-arm-linux-gnueabihf
/usr/lib/python3.5/config-3.5m-arm-linux-gnueabihf
checking Python3's dll name... libpython3.5m.so.1.0
checking if -pthread should be used... checking Python3's dll name... libpython3.5m.so.1.0
checking if -pthread should be used... yes
checking for XpmCreatePixmapFromData in -lXpm... yes
checking stdint.h presence... yes
checking for stdint.h... yes
checking stdlib.h usability... yes
checking stdlib.h presence... yes
checking if compile and link flags for Python 3 are sane... yes
checking for stdlib.h... yes
yes
checking if compile and link flags for Python 3 are sane... checking string.h usability... yes
checking if X11 header files implicitly declare return values... yes
checking string.h presence... no
checking size of wchar_t is 2 bytes... yes
checking for string.h... yes
checking sys/select.h usability... yes
checking if -fPIE can be added for Python3... yes
checking if -fPIE can be added for Python3... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
no
checking --enable-gui argument... no GUI support
checking sys/utsname.h usability... checking for CYGWIN or MSYS environment... no
checking whether toupper is broken... yes
checking --enable-tclinterp argument... yes
yes
checking --with-tclsh argument... /usr/bin/tclsh
checking for /usr/bin/tclsh... checking --enable-tclinterp argument... yes
no
checking for tclsh... /usr/bin/tclsh
checking Tcl version... checking --with-tclsh argument... /usr/bin/tclsh
checking for /usr/bin/tclsh... no
checking for tclsh... /usr/bin/tclsh
checking Tcl version... 8.6 - OK
8.6 - OK
checking for location of Tcl include... /usr/include/tcl8.6/tcl.h
checking for location of tclConfig.sh script... yes
checking for location of Tcl include... checking sys/utsname.h presence... /usr/include/tcl8.6/tcl.h
checking for location of tclConfig.sh script... /usr/lib/tclConfig.sh
/usr/lib/tclConfig.sh
yes
checking for sys/utsname.h... yes
checking termcap.h usability... no
checking whether __DATE__ and __TIME__ work... checking --enable-rubyinterp argument... yes
checking --enable-rubyinterp argument... yes
checking --with-ruby-command argument... defaulting to ruby
checking for ruby... /usr/bin/ruby
checking Ruby version... checking --with-ruby-command argument... defaulting to ruby
checking for ruby... /usr/bin/ruby
checking Ruby version... no
checking termcap.h presence... no
checking for termcap.h... no
checking fcntl.h usability... yes
checking whether __attribute__((unused)) is allowed... yes
checking elf.h usability... OK
checking Ruby rbconfig... yes
checking fcntl.h presence... OK
checking Ruby rbconfig... yes
checking for fcntl.h... yes
checking sgtty.h usability... yes
checking elf.h presence... yes
checking for elf.h... yes
checking for main in -lelf... RbConfig
checking Ruby header files... RbConfig
checking Ruby header files... yes
checking sgtty.h presence... yes
checking for sgtty.h... yes
no
checking sys/ioctl.h usability... checking for dirent.h that defines DIR... yes
checking for library containing opendir... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking sys/time.h usability... /usr/include/ruby-2.3.0
/usr/include/ruby-2.3.0
none required
checking stdint.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/types.h usability... yes
checking stdint.h presence... yes
checking for stdint.h... yes
checking stdlib.h usability... yes
checking sys/types.h presence... yes
checking stdlib.h presence... yes
checking for sys/types.h... yes
checking termio.h usability... yes
checking for stdlib.h... yes
checking string.h usability... yes
checking termio.h presence... yes
checking string.h presence... yes
checking for termio.h... yes
yes
checking for string.h... yes
checking iconv.h usability... checking sys/select.h usability... yes
checking iconv.h presence... yes
checking sys/select.h presence... yes
checking for iconv.h... yes
yes
checking for sys/select.h... yes
checking inttypes.h usability... checking sys/utsname.h usability... yes
checking inttypes.h presence... yes
checking sys/utsname.h presence... yes
checking for inttypes.h... yes
yes
checking for sys/utsname.h... yes
checking langinfo.h usability... checking termcap.h usability... no
checking termcap.h presence... yes
checking langinfo.h presence... no
checking for termcap.h... no
checking fcntl.h usability... yes
checking for langinfo.h... yes
checking math.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking sgtty.h usability... yes
checking math.h presence... checking --enable-cscope argument... yes
checking --enable-workshop argument... no
checking --disable-netbeans argument... no
checking --disable-channel argument... no
checking for socket in -lsocket... yes
checking for math.h... yes
checking unistd.h usability... yes
checking sgtty.h presence... yes
checking for sgtty.h... yes
checking sys/ioctl.h usability... no
checking for gethostbyname in -lnsl... checking --enable-cscope argument... yes
checking --enable-workshop argument... no
checking --disable-netbeans argument... no
checking --disable-channel argument... no
checking for socket in -lsocket... yes
checking unistd.h presence... yes
checking sys/ioctl.h presence... yes
checking for unistd.h... yes
yes
checking for sys/ioctl.h... yes
checking stropts.h usability... checking sys/time.h usability... no
checking for gethostbyname in -lnsl... yes
checking whether compiling with process communication is possible... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
yes
checking stropts.h presence... yes
checking whether compiling with process communication is possible... checking sys/types.h usability... yes
checking for stropts.h... yes
checking errno.h usability... yes
checking --enable-multibyte argument... yes
checking --enable-hangulinput argument... no
checking --enable-xim argument... yes
checking --enable-fontset argument... no
checking for xmkmf... no
checking for X... yes
checking sys/types.h presence... yes
checking for sys/types.h... yes
yes
checking errno.h presence... checking termio.h usability... yes
checking for errno.h... yes
checking sys/resource.h usability... yes
checking --enable-multibyte argument... yes
checking --enable-hangulinput argument... no
checking --enable-xim argument... yes
checking --enable-fontset argument... no
checking for xmkmf... no
checking for X... yes
checking termio.h presence... yes
checking sys/resource.h presence... yes
checking for termio.h... yes
checking iconv.h usability... yes
checking for sys/resource.h... yes
libraries , headers 
checking sys/systeminfo.h usability... yes
checking iconv.h presence... yes
checking for iconv.h... yes
no
checking sys/systeminfo.h presence... checking inttypes.h usability... no
checking for sys/systeminfo.h... no
checking for gethostbyname... libraries , headers 
checking locale.h usability... yes
checking inttypes.h presence... yes
checking for inttypes.h... yes
checking langinfo.h usability... yes
checking locale.h presence... yes
checking for connect... yes
checking for locale.h... yes
checking sys/stream.h usability... checking for gethostbyname... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking math.h usability... no
checking sys/stream.h presence... yes
checking for remove... no
checking for sys/stream.h... no
checking termios.h usability... yes
checking for connect... yes
checking math.h presence... yes
checking termios.h presence... yes
checking for shmat... yes
checking for termios.h... yes
checking libc.h usability... yes
checking for math.h... yes
yes
checking for remove... checking unistd.h usability... no
checking libc.h presence... yes
checking for IceConnectionNumber in -lICE... no
checking for libc.h... no
yes
checking unistd.h presence... checking sys/statfs.h usability... yes
checking for shmat... yes
checking for unistd.h... yes
checking stropts.h usability... yes
yes
checking sys/statfs.h presence... checking if X11 header files can be found... yes
checking for sys/statfs.h... yes
yes
checking stropts.h presence... yes
checking for IceConnectionNumber in -lICE... checking poll.h usability... yes
checking for stropts.h... yes
checking errno.h usability... yes
checking for _XdmcpAuthDoIt in -lXdmcp... yes
yes
checking poll.h presence... yes
checking errno.h presence... checking if X11 header files can be found... yes
checking for poll.h... yes
yes
checking for errno.h... yes
checking sys/poll.h usability... checking sys/resource.h usability... yes
checking for IceOpenConnection in -lICE... yes
checking sys/poll.h presence... yes
checking for _XdmcpAuthDoIt in -lXdmcp... yes
checking sys/resource.h presence... yes
checking for sys/poll.h... yes
yes
checking for sys/resource.h... yes
checking pwd.h usability... checking sys/systeminfo.h usability... no
checking sys/systeminfo.h presence... yes
checking for XpmCreatePixmapFromData in -lXpm... yes
checking pwd.h presence... yes
checking for IceOpenConnection in -lICE... no
checking for sys/systeminfo.h... no
yes
checking for pwd.h... yes
checking locale.h usability... checking utime.h usability... yes
checking locale.h presence... yes
checking utime.h presence... yes
checking for XpmCreatePixmapFromData in -lXpm... yes
checking if X11 header files implicitly declare return values... yes
checking for locale.h... yes
checking sys/stream.h usability... yes
checking for utime.h... yes
checking sys/param.h usability... no
checking size of wchar_t is 2 bytes... no
checking sys/stream.h presence... yes
checking if X11 header files implicitly declare return values... no
checking for sys/stream.h... no
yes
checking sys/param.h presence... checking termios.h usability... yes
checking for sys/param.h... yes
checking libintl.h usability... no
checking size of wchar_t is 2 bytes... yes
checking termios.h presence... yes
checking for termios.h... yes
no
checking --enable-gui argument... checking libc.h usability... GTK+ 2.x GUI support
checking --disable-gtktest argument... gtk test enabled
checking for pkg-config... /usr/bin/pkg-config
yes
checking libintl.h presence... checking for GTK - version >= 2.2.0... yes
checking for libintl.h... yes
checking libgen.h usability... no
checking libc.h presence... no
checking for libc.h... no
checking sys/statfs.h usability... no
checking --enable-gui argument... GTK+ 3.x GUI support
checking --disable-gtktest argument... gtk test enabled
checking for pkg-config... /usr/bin/pkg-config
yes
checking libgen.h presence... checking for GTK - version >= 3.0.0... yes
checking for libgen.h... yes
checking util/debug.h usability... yes
checking sys/statfs.h presence... yes
checking for sys/statfs.h... yes
checking poll.h usability... no
checking util/debug.h presence... no
checking for util/debug.h... no
checking util/msg18n.h usability... yes
checking poll.h presence... yes
checking for poll.h... yes
checking sys/poll.h usability... no
checking util/msg18n.h presence... no
checking for util/msg18n.h... no
checking frame.h usability... yes
checking sys/poll.h presence... yes
checking for sys/poll.h... yes
no
checking frame.h presence... checking pwd.h usability... no
checking for frame.h... no
checking sys/acl.h usability... yes
checking pwd.h presence... yes
checking for pwd.h... yes
yes
checking sys/acl.h presence... checking utime.h usability... yes
checking for sys/acl.h... yes
checking sys/access.h usability... yes
checking utime.h presence... yes
checking for utime.h... yes
checking sys/param.h usability... no
checking sys/access.h presence... no
checking for sys/access.h... no
checking sys/sysinfo.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking libintl.h usability... yes
checking sys/sysinfo.h presence... yes
checking for sys/sysinfo.h... yes
yes
checking libintl.h presence... checking wchar.h usability... yes
checking for libintl.h... yes
checking libgen.h usability... yes; found version 2.24.31
checking version of Gdk-Pixbuf... OK.
checking for glib-compile-resources... /usr/bin/glib-compile-resources
checking glib-compile-resources... usable.
checking --disable-icon-cache-update argument... not set
checking for gtk-update-icon-cache... /usr/bin/gtk-update-icon-cache
checking --disable-desktop-database-update argument... not set
checking for update-desktop-database... no
not found in PATH.
checking X11/SM/SMlib.h usability... yes
checking wchar.h presence... yes
checking libgen.h presence... yes
checking for wchar.h... yes
checking wctype.h usability... yes
checking for libgen.h... yes
checking util/debug.h usability... yes
checking X11/SM/SMlib.h presence... yes
checking for X11/SM/SMlib.h... yes
checking X11/xpm.h usability... yes
checking wctype.h presence... no
checking util/debug.h presence... yes; found version 3.22.0
yes
checking for wctype.h... yes
checking version of Gdk-Pixbuf... no
checking for util/debug.h... no
OK.
checking for glib-compile-resources... /usr/bin/glib-compile-resources
checking glib-compile-resources... usable.
checking --disable-icon-cache-update argument... not set
checking for sys/ptem.h... checking for gtk-update-icon-cache... /usr/bin/gtk-update-icon-cache
checking --disable-desktop-database-update argument... not set
checking for update-desktop-database... checking util/msg18n.h usability... no
not found in PATH.
checking X11/SM/SMlib.h usability... yes
checking X11/xpm.h presence... no
checking for sys/sysctl.h... yes
checking for X11/xpm.h... yes
checking X11/Sunkeysym.h usability... no
checking util/msg18n.h presence... yes
checking X11/SM/SMlib.h presence... yes
checking for X11/SM/SMlib.h... yes
no
checking for util/msg18n.h... no
yes
checking X11/xpm.h usability... checking frame.h usability... checking for pthread_np.h... yes
checking X11/Sunkeysym.h presence... yes
checking for X11/Sunkeysym.h... yes
checking for XIMText in X11/Xlib.h... no
checking strings.h usability... yes
checking for CYGWIN or MSYS environment... no
checking whether toupper is broken... no
checking frame.h presence... yes
checking X11/xpm.h presence... no
checking for frame.h... no
checking sys/acl.h usability... yes
checking for X11/xpm.h... yes
checking X11/Sunkeysym.h usability... yes
checking strings.h presence... yes
checking for strings.h... yes
checking if strings.h can be included after string.h... yes
checking X11/Sunkeysym.h presence... yes
checking sys/acl.h presence... no
checking whether __DATE__ and __TIME__ work... yes
checking for X11/Sunkeysym.h... yes
checking for XIMText in X11/Xlib.h... yes
checking for sys/acl.h... yes
yes
checking whether gcc needs -traditional... checking sys/access.h usability... yes
checking for CYGWIN or MSYS environment... no
checking whether toupper is broken... no
checking for an ANSI C-conforming const... yes
checking whether __attribute__((unused)) is allowed... yes
checking for working volatile... no
checking sys/access.h presence... yes
checking elf.h usability... no
checking for sys/access.h... no
checking sys/sysinfo.h usability... yes
checking for mode_t... no
checking whether __DATE__ and __TIME__ work... yes
checking elf.h presence... yes
checking sys/sysinfo.h presence... yes
checking for sys/sysinfo.h... yes
yes
checking for elf.h... yes
checking for main in -lelf... checking wchar.h usability... yes
checking whether __attribute__((unused)) is allowed... yes
no
checking elf.h usability... checking for dirent.h that defines DIR... yes
checking wchar.h presence... yes
checking for off_t... yes
checking for wchar.h... yes
checking wctype.h usability... yes
checking for library containing opendir... yes
checking elf.h presence... yes
checking for elf.h... yes
checking for main in -lelf... yes
checking wctype.h presence... none required
checking stdint.h usability... no
yes
checking for wctype.h... yes
checking for dirent.h that defines DIR... checking for sys/ptem.h... yes
checking for pid_t... no
checking for sys/sysctl.h... yes
yes
checking stdint.h presence... checking for library containing opendir... yes
checking for stdint.h... yes
checking stdlib.h usability... yes
checking for pthread_np.h... yes
checking stdlib.h presence... no
checking strings.h usability... yes
checking for stdlib.h... yes
checking string.h usability... none required
yes
checking for size_t... checking stdint.h usability... yes
checking strings.h presence... yes
checking string.h presence... yes
checking stdint.h presence... yes
checking for strings.h... yes
checking if strings.h can be included after string.h... yes
checking for string.h... yes
yes
checking for stdint.h... yes
checking sys/select.h usability... checking stdlib.h usability... yes
checking whether gcc needs -traditional... no
checking for an ANSI C-conforming const... yes
checking sys/select.h presence... yes
checking stdlib.h presence... yes
checking for uid_t in sys/types.h... yes
checking for sys/select.h... yes
yes
checking for stdlib.h... yes
yes
checking sys/utsname.h usability... checking for uint32_t... checking string.h usability... yes
checking for working volatile... yes
checking for mode_t... yes
checking sys/utsname.h presence... yes
checking whether time.h and sys/time.h may both be included... yes
checking string.h presence... yes
checking for sys/utsname.h... yes
yes
checking for string.h... yes
checking termcap.h usability... checking sys/select.h usability... yes
checking for ino_t... no
checking termcap.h presence... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
no
checking for termcap.h... no
checking fcntl.h usability... checking sys/utsname.h usability... yes
checking for off_t... yes
checking sys/utsname.h presence... yes
checking fcntl.h presence... yes
checking for sys/utsname.h... yes
yes
checking for fcntl.h... yes
checking termcap.h usability... checking sgtty.h usability... yes
checking for dev_t... no
checking termcap.h presence... yes
checking sgtty.h presence... yes
checking for pid_t... no
checking for termcap.h... no
yes
checking for sgtty.h... yes
checking fcntl.h usability... checking sys/ioctl.h usability... yes
checking fcntl.h presence... yes
checking sys/ioctl.h presence... yes
checking for fcntl.h... yes
yes
checking for sys/ioctl.h... yes
checking sgtty.h usability... checking sys/time.h usability... yes
checking whether byte ordering is bigendian... yes
checking for size_t... yes
checking sgtty.h presence... yes
checking sys/time.h presence... yes
checking for sgtty.h... yes
yes
checking for sys/time.h... yes
checking sys/ioctl.h usability... checking sys/types.h usability... yes
checking sys/ioctl.h presence... yes
checking sys/types.h presence... no
checking for inline... yes
checking for sys/ioctl.h... yes
yes
checking for sys/types.h... yes
checking sys/time.h usability... checking termio.h usability... inline
checking for rlim_t... yes
checking for stack_t... yes
checking for uid_t in sys/types.h... yes
checking sys/time.h presence... yes
checking for uint32_t... yes
checking whether stack_t has an ss_base field... yes
checking for sys/time.h... yes
yes
checking termio.h presence... checking sys/types.h usability... yes
checking for termio.h... yes
checking iconv.h usability... no
checking --with-tlib argument... empty: automatic terminal library selection
checking for tgetent in -ltinfo... yes
checking whether time.h and sys/time.h may both be included... yes
checking sys/types.h presence... yes
checking for sys/types.h... yes
yes
checking iconv.h presence... checking termio.h usability... yes
checking for iconv.h... yes
yes
checking for ino_t... checking inttypes.h usability... yes
yes
checking termio.h presence... yes
checking for termio.h... yes
checking iconv.h usability... yes
checking inttypes.h presence... yes
checking for inttypes.h... yes
checking langinfo.h usability... checking whether we talk terminfo... yes
checking iconv.h presence... yes
checking for dev_t... yes
checking for iconv.h... yes
checking inttypes.h usability... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking math.h usability... yes
checking inttypes.h presence... yes
checking for inttypes.h... yes
checking langinfo.h usability... yes
checking what tgetent() returns for an unknown terminal... yes
checking math.h presence... yes
checking whether byte ordering is bigendian... yes
checking for math.h... yes
checking unistd.h usability... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking math.h usability... zero
checking whether termcap.h contains ospeed... yes
checking unistd.h presence... no
checking whether ospeed can be extern... yes
checking for unistd.h... yes
checking stropts.h usability... no
checking for inline... yes
checking math.h presence... inline
checking for rlim_t... yes
yes
yes
checking stropts.h presence... checking for math.h... yes
checking whether termcap.h contains UP, BC and PC... checking unistd.h usability... yes
yes
checking for stack_t... checking for stropts.h... yes
checking errno.h usability... no
checking whether UP, BC and PC can be extern... yes
checking whether stack_t has an ss_base field... yes
checking unistd.h presence... no
yes
checking errno.h presence... checking --with-tlib argument... empty: automatic terminal library selection
yes
checking for unistd.h... yes
checking for tgetent in -ltinfo... yes
checking for errno.h... yes
checking stropts.h usability... checking sys/resource.h usability... yes
checking whether tputs() uses outfuntype... no
checking whether sys/select.h and sys/time.h may both be included... yes
checking stropts.h presence... yes
checking sys/resource.h presence... yes
checking for stropts.h... yes
yes
checking errno.h usability... yes
checking for sys/resource.h... yes
checking sys/systeminfo.h usability... yes
checking for /dev/ptc... no
checking for SVR4 ptys... yes
checking errno.h presence... no
checking sys/systeminfo.h presence... yes
checking for errno.h... yes
checking sys/resource.h usability... no
checking for sys/systeminfo.h... no
checking locale.h usability... checking whether we talk terminfo... yes
checking for ptyranges... don't know
checking default tty permissions/group... yes
checking sys/resource.h presence... yes
checking locale.h presence... yes
checking for sys/resource.h... yes
yes
checking for locale.h... yes
checking sys/systeminfo.h usability... checking sys/stream.h usability... yes
checking what tgetent() returns for an unknown terminal... no
checking sys/systeminfo.h presence... no
checking sys/stream.h presence... no
checking for sys/systeminfo.h... no
can't determine - assume ptys are world accessible
world
checking locale.h usability... checking return type of signal handlers... no
checking for sys/stream.h... no
checking termios.h usability... void
checking for struct sigcontext... zero
checking whether termcap.h contains ospeed... yes
checking locale.h presence... yes
checking termios.h presence... yes
checking for locale.h... yes
yes
checking for termios.h... yes
checking sys/stream.h usability... checking libc.h usability... no
checking whether ospeed can be extern... yes
checking getcwd implementation is broken... no
checking libc.h presence... no
checking sys/stream.h presence... no
checking for libc.h... no
checking sys/statfs.h usability... yes
no
checking for sys/stream.h... no
checking whether termcap.h contains UP, BC and PC... checking termios.h usability... no
checking whether UP, BC and PC can be extern... no
checking for bcmp... yes
checking sys/statfs.h presence... yes
checking termios.h presence... yes
checking for sys/statfs.h... yes
yes
checking for termios.h... yes
checking poll.h usability... checking libc.h usability... yes
checking whether tputs() uses outfuntype... yes
checking for fchdir... yes
checking poll.h presence... no
checking libc.h presence... yes
checking for poll.h... yes
no
checking whether sys/select.h and sys/time.h may both be included... no
checking for libc.h... no
checking sys/poll.h usability... checking sys/statfs.h usability... yes
checking for /dev/ptc... no
checking for SVR4 ptys... yes
yes
checking sys/poll.h presence... yes
checking sys/statfs.h presence... checking for fchown... yes
checking for sys/poll.h... yes
yes
checking for sys/statfs.h... yes
checking pwd.h usability... checking poll.h usability... yes
checking for ptyranges... don't know
checking default tty permissions/group... yes
checking poll.h presence... yes
checking pwd.h presence... yes
yes
checking for poll.h... yes
yes
checking for pwd.h... yes
checking for fsync... checking sys/poll.h usability... checking utime.h usability... yes
checking sys/poll.h presence... yes
checking utime.h presence... yes
checking for sys/poll.h... yes
yes
checking for utime.h... yes
yes
checking pwd.h usability... can't determine - assume ptys are world accessible
checking sys/param.h usability... world
checking return type of signal handlers... checking for getcwd... void
checking for struct sigcontext... yes
checking pwd.h presence... yes
checking sys/param.h presence... yes
checking for pwd.h... yes
yes
checking utime.h usability... checking for getpseudotty... yes
yes
checking for sys/param.h... yes
checking getcwd implementation is broken... checking libintl.h usability... yes
checking utime.h presence... yes
checking for utime.h... yes
checking sys/param.h usability... yes
checking libintl.h presence... no
checking for getpwent... yes
checking for libintl.h... yes
no
checking for bcmp... checking libgen.h usability... yes
checking sys/param.h presence... yes
checking libgen.h presence... yes
checking for sys/param.h... yes
yes
checking for libgen.h... yes
yes
checking libintl.h usability... yes
checking for getpwnam... checking util/debug.h usability... checking for fchdir... yes
checking libintl.h presence... no
checking util/debug.h presence... yes
checking for libintl.h... yes
checking libgen.h usability... no
checking for util/debug.h... no
yes
checking util/msg18n.h usability... checking for getpwuid... yes
checking for fchown... yes
checking libgen.h presence... no
checking util/msg18n.h presence... yes
checking for libgen.h... yes
no
checking for util/msg18n.h... no
checking util/debug.h usability... checking frame.h usability... yes
checking for getrlimit... yes
checking for fsync... no
checking frame.h presence... no
checking util/debug.h presence... no
checking for frame.h... no
checking sys/acl.h usability... no
checking for util/debug.h... no
checking util/msg18n.h usability... yes
yes
checking for gettimeofday... checking for getcwd... yes
checking sys/acl.h presence... no
checking util/msg18n.h presence... yes
checking for sys/acl.h... yes
no
checking for util/msg18n.h... no
checking sys/access.h usability... checking frame.h usability... yes
yes
checking for getpseudotty... checking for getwd... no
checking frame.h presence... no
checking sys/access.h presence... no
checking for frame.h... no
no
checking for sys/access.h... no
checking sys/acl.h usability... checking sys/sysinfo.h usability... no
checking for getpwent... yes
yes
checking sys/acl.h presence... yes
checking sys/sysinfo.h presence... checking for lstat... yes
checking for sys/acl.h... yes
yes
checking for sys/sysinfo.h... yes
checking sys/access.h usability... checking wchar.h usability... yes
no
checking sys/access.h presence... yes
checking wchar.h presence... yes
checking for getpwnam... checking for memcmp... no
checking for sys/access.h... no
yes
checking for wchar.h... yes
checking sys/sysinfo.h usability... checking wctype.h usability... yes
checking sys/sysinfo.h presence... yes
checking wctype.h presence... yes
yes
checking for sys/sysinfo.h... yes
yes
checking for getpwuid... checking wchar.h usability... yes
checking for wctype.h... yes
checking for memset... checking for sys/ptem.h... no
checking for sys/sysctl.h... yes
checking wchar.h presence... yes
yes
checking for wchar.h... yes
checking for getrlimit... yes
checking wctype.h usability... checking for mkdtemp... yes
checking for pthread_np.h... no
checking strings.h usability... yes
checking wctype.h presence... yes
yes
checking for wctype.h... yes
yes
checking for gettimeofday... checking for sys/ptem.h... checking for nanosleep... yes
checking strings.h presence... no
checking for sys/sysctl.h... yes
checking for strings.h... yes
checking if strings.h can be included after string.h... yes
yes
checking for opendir... checking for getwd... yes
checking whether gcc needs -traditional... yes
checking for pthread_np.h... no
checking for an ANSI C-conforming const... no
checking strings.h usability... yes
checking for working volatile... yes
yes
checking for putenv... checking for lstat... yes
checking for mode_t... yes
checking strings.h presence... yes
checking for strings.h... yes
checking if strings.h can be included after string.h... yes
checking whether gcc needs -traditional... yes
yes
checking for memcmp... checking for qsort... no
checking for an ANSI C-conforming const... yes
checking for working volatile... yes
checking for off_t... yes
checking for mode_t... yes
yes
checking for memset... checking for readlink... yes
yes
checking for select... checking for mkdtemp... yes
checking for off_t... yes
checking for pid_t... yes
yes
checking for setenv... checking for nanosleep... yes
yes
yes
checking for pid_t... checking for setpgid... checking for opendir... yes
checking for size_t... yes
checking for putenv... yes
checking for setsid... yes
checking for size_t... yes
checking for uid_t in sys/types.h... yes
yes
checking for qsort... yes
checking for uint32_t... checking for sigaltstack... yes
checking whether time.h and sys/time.h may both be included... yes
yes
checking for uid_t in sys/types.h... checking for readlink... yes
checking for sigstack... yes
checking for uint32_t... yes
checking for ino_t... yes
yes
checking whether time.h and sys/time.h may both be included... checking for select... yes
yes
checking for ino_t... checking for sigset... yes
checking for setenv... yes
checking for dev_t... yes
checking for sigsetjmp... yes
checking for setpgid... yes
checking for dev_t... no
checking for sigaction... yes
checking whether byte ordering is bigendian... yes
checking for setsid... yes
yes
checking whether byte ordering is bigendian... checking for sigvec... yes
checking for sigaltstack... no
checking for inline... no
checking for strcasecmp... inline
checking for rlim_t... yes
yes
checking for stack_t... checking for sigstack... no
checking for inline... yes
checking whether stack_t has an ss_base field... inline
checking for rlim_t... yes
no
checking --with-tlib argument... empty: automatic terminal library selection
yes
checking for stack_t... checking for strerror... checking for tgetent in -ltinfo... yes
checking whether stack_t has an ss_base field... yes
checking for sigset... no
checking --with-tlib argument... empty: automatic terminal library selection
checking for tgetent in -ltinfo... yes
yes
checking for strftime... yes
checking for sigsetjmp... yes
yes
checking for stricmp... checking whether we talk terminfo... no
checking for sigaction... checking whether we talk terminfo... no
checking for strncasecmp... yes
checking for sigvec... yes
checking what tgetent() returns for an unknown terminal... yes
checking for strnicmp... yes
checking what tgetent() returns for an unknown terminal... no
checking for strcasecmp... zero
checking whether termcap.h contains ospeed... no
checking whether ospeed can be extern... no
checking for strpbrk... zero
checking whether termcap.h contains ospeed... yes
checking for strerror... no
checking whether ospeed can be extern... yes
checking whether termcap.h contains UP, BC and PC... yes
checking for strtol... no
checking whether UP, BC and PC can be extern... yes
checking for strftime... yes
checking whether termcap.h contains UP, BC and PC... no
checking whether UP, BC and PC can be extern... yes
yes
checking for tgetent... checking whether tputs() uses outfuntype... yes
checking for stricmp... no
checking whether sys/select.h and sys/time.h may both be included... yes
checking whether tputs() uses outfuntype... no
checking whether sys/select.h and sys/time.h may both be included... yes
yes
checking for /dev/ptc... no
checking for SVR4 ptys... checking for towlower... no
checking for strncasecmp... yes
checking for /dev/ptc... no
checking for SVR4 ptys... yes
checking for ptyranges... yes
checking for towupper... don't know
checking default tty permissions/group... yes
yes
checking for ptyranges... checking for strnicmp... don't know
checking default tty permissions/group... yes
checking for iswupper... no
checking for strpbrk... can't determine - assume ptys are world accessible
world
checking return type of signal handlers... can't determine - assume ptys are world accessible
world
checking return type of signal handlers... void
checking for struct sigcontext... yes
yes
checking for usleep... checking for strtol... void
checking for struct sigcontext... yes
checking getcwd implementation is broken... yes
checking getcwd implementation is broken... yes
yes
checking for utime... checking for tgetent... no
checking for bcmp... no
checking for bcmp... yes
yes
checking for towlower... checking for utimes... yes
checking for fchdir... yes
yes
checking for fchdir... yes
checking for towupper... checking for _LARGEFILE_SOURCE value needed for large files... yes
checking for fchown... yes
checking for fchown... yes
checking for iswupper... no
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... yes
checking for fsync... yes
checking for fsync... yes
checking for usleep... 64
checking for st_blksize... yes
yes
checking whether stat() ignores a trailing slash... checking for getcwd... yes
yes
checking for getcwd... checking for utime... yes
checking for getpseudotty... yes
no
checking for iconv_open()... checking for getpseudotty... yes
checking for utimes... no
checking for getpwent... no
checking for getpwent... yes
checking for _LARGEFILE_SOURCE value needed for large files... yes
checking for nl_langinfo(CODESET)... yes
yes
checking for getpwnam... checking for getpwnam... no
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... yes
checking for strtod in -lm... yes
yes
checking for getpwuid... checking for getpwuid... 64
checking for st_blksize... yes
checking for strtod() and other floating point functions... yes
yes
checking whether stat() ignores a trailing slash... checking for getrlimit... yes
checking for getrlimit... yes
checking for isinf()... yes
checking for gettimeofday... yes
no
checking for iconv_open()... checking for gettimeofday... yes
checking for getwd... yes
checking for isnan()... yes
checking for getwd... yes
checking for nl_langinfo(CODESET)... yes
checking for lstat... yes
yes
checking --disable-acl argument... no
checking for acl_get_file in -lposix1e... checking for lstat... yes
checking for strtod in -lm... no
checking for acl_get_file in -lacl... yes
checking for memcmp... yes
checking for memcmp... yes
checking for strtod() and other floating point functions... yes
checking for fgetxattr in -lattr... yes
checking for memset... yes
checking for memset... yes
checking for isinf()... yes
checking for POSIX ACL support... yes
yes
checking for mkdtemp... checking for mkdtemp... yes
checking for acl_get in -lsec... yes
checking for isnan()... yes
yes
checking for nanosleep... checking for nanosleep... no
checking for Solaris ACL support... no
checking for AIX ACL support... yes
yes
checking --disable-acl argument... no
checking for acl_get_file in -lposix1e... checking for opendir... yes
no
checking --disable-gpm argument... no
checking for gpm... checking for opendir... no
checking for acl_get_file in -lacl... yes
checking for putenv... yes
yes
checking --disable-sysmouse argument... no
checking for sysmouse... checking for putenv... yes
checking for fgetxattr in -lattr... no
checking for FD_CLOEXEC... yes
yes
checking for rename... checking for qsort... yes
checking for qsort... yes
checking for POSIX ACL support... yes
yes
checking for readlink... checking for sysctl... yes
checking for readlink... yes
checking for acl_get in -lsec... not usable
checking for sysinfo... no
checking for Solaris ACL support... yes
checking for sysinfo.mem_unit... yes
checking for select... yes
checking for select... no
checking for AIX ACL support... yes
checking for sysconf... no
yes
checking --disable-gpm argument... yes
checking --disable-sysmouse argument... checking size of int... no
checking for sysmouse... yes
checking for setenv... yes
checking for setenv... no
checking for FD_CLOEXEC... yes
checking for rename... yes
checking for setpgid... yes
checking for setpgid... 4
checking size of long... yes
checking for sysctl... yes
yes
checking for setsid... checking for setsid... not usable
checking for sysinfo... 4
checking size of time_t... yes
checking for sigaltstack... yes
yes
checking for sysinfo.mem_unit... checking for sigaltstack... yes
checking for sysconf... yes
checking for sigstack... yes
yes
4
checking size of int... checking size of off_t... checking for sigstack... yes
checking for sigset... yes
checking for sigset... 4
checking size of long... 8
checking uint32_t is 32 bits... yes
yes
checking for sigsetjmp... checking for sigsetjmp... ok
checking whether memmove handles overlaps... 4
checking size of time_t... no
checking for sigaction... no
checking for sigaction... yes
checking for _xpg4_setrunelocale in -lxpg4... yes
checking for sigvec... yes
4
checking size of off_t... checking for sigvec... no
checking how to create tags... ctags
checking how to run man with a section nr... man
checking --disable-nls argument... no
checking for msgfmt... msgfmt
checking for NLS... no
no
checking for strcasecmp... checking for strcasecmp... 8
gettext() works
checking uint32_t is 32 bits... checking for bind_textdomain_codeset... yes
yes
checking for strerror... checking for strerror... ok
checking whether memmove handles overlaps... yes
checking for _nl_msg_cat_cntr... yes
yes
checking for strftime... checking for strftime... yes
yes
checking dlfcn.h usability... checking whether X_LOCALE needed... yes
yes
checking for stricmp... checking for stricmp... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for dlopen()... no
no
checking whether Xutf8SetWMProperties() can be used... no
checking for strncasecmp... checking for strncasecmp... no
checking for dlopen() in -ldl... yes
yes
yes
checking for strnicmp... checking for _xpg4_setrunelocale in -lxpg4... checking for strnicmp... yes
checking for dlsym()... no
checking how to create tags... no
ctags
checking how to run man with a section nr... checking for strpbrk... no
man
checking --disable-nls argument... no
checking for strpbrk... checking for msgfmt... msgfmt
checking for NLS... yes
checking setjmp.h usability... yes
checking setjmp.h presence... gettext() works
checking dlfcn.h usability... yes
yes
yes
checking for setjmp.h... yes
checking for GCC 3 or later... checking for strtol... yes
checking whether we need -D_FORTIFY_SOURCE=1... checking for strtol... yes
checking linker --as-needed support... yes
yes
checking dlfcn.h presence... configure: updating cache auto/config.cache
yes
checking for dlfcn.h... yes
checking for dlopen()... configure: creating auto/config.status
yes
yes
checking for tgetent... checking for tgetent... no
checking for dlopen() in -ldl... config.status: creating auto/config.mk
yes
checking for towlower... yes
config.status: creating auto/config.h
checking for towlower... yes
checking for dlsym()... touch configure-stamp-vim-basic
dh_testdir
yes
yes
checking for towupper... checking for towupper... yes
checking setjmp.h usability... yes
yes
checking for iswupper... checking for iswupper... yes
checking setjmp.h presence... yes
checking for setjmp.h... yes
checking for GCC 3 or later... yes
checking whether we need -D_FORTIFY_SOURCE=1... yes
checking linker --as-needed support... yes
*** DEBIAN *** CONFIGURING VARIANT vim-athena
/usr/bin/make -C src shadow SHADOWDIR=vim-athena
make[1]: Entering directory '/<<PKGBUILDDIR>>/src'
mkdir vim-athena
cd vim-athena; ln -s ../*.[ch] ../*.in ../*.sh ../*.xs ../*.xbm ../gui_gtk_res.xml ../toolcheck ../proto ../vimtutor ../gvimtutor ../mkinstalldirs .
configure: updating cache auto/config.cache
mkdir vim-athena/auto
cd vim-athena/auto; ln -s ../../auto/configure .
configure: creating auto/config.status
mkdir vim-athena/po
cd vim-athena/po; ln -s ../../po/*.po ../../po/*.mak ../../po/*.vim ../../po/Makefile .
yes
cd vim-athena; rm -f auto/link.sed
cp Makefile configure vim-athena
rm -f vim-athena/auto/config.mk vim-athena/config.mk.dist
cp config.mk.dist vim-athena/auto/config.mk
cp config.mk.dist vim-athena
checking for usleep... mkdir vim-athena/xxd
cd vim-athena/xxd; ln -s ../../xxd/*.[ch] ../../xxd/Make* .
if test -d os_mac_rsrc; then \
	cd vim-athena; \
	ln -s ../infplist.xml .; \
	ln -s ../os_mac_rsrc ../os_mac.rsr.hqx ../dehqx.py .; \
fi
mkdir vim-athena/testdir
cd vim-athena/testdir; ln -s ../../testdir/Makefile \
			 ../../testdir/Make_all.mak \
			 ../../testdir/README.txt \
			 ../../testdir/*.in \
			 ../../testdir/*.vim \
			 ../../testdir/*.py \
			 ../../testdir/python* \
			 ../../testdir/sautest \
			 ../../testdir/samples \
			 ../../testdir/test83-tags? \
			 ../../testdir/*.ok .
yes
checking for usleep... make[1]: Leaving directory '/<<PKGBUILDDIR>>/src'
if test -f src/auto/config.cache; then make distclean; fi
cd src/vim-athena && LDFLAGS="-fPIE -pie -Wl,-z,relro -Wl,-z,now" CPPFLAGS="-Wdate-time" CFLAGS="-g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security" ./configure --prefix=/usr --mandir='${prefix}'/share/man --without-local-dir --with-modified-by="pkg-vim-maintainers@lists.alioth.debian.org" --with-compiledby="pkg-vim-maintainers@lists.alioth.debian.org" --enable-fail-if-missing --enable-cscope --enable-gpm --enable-selinux --disable-smack --with-features=huge --enable-multibyte --enable-acl --with-x --enable-xim --enable-gui=athena --disable-gtk2-check --disable-gtk3-check --disable-gnome-check --disable-motif-check --enable-athena-check --enable-fontset --enable-luainterp --disable-mzschemeinterp --enable-perlinterp --enable-python3interp --with-python3-config-dir=/usr/lib/python3.5/config-3.5m-arm-linux-gnueabihf --disable-pythoninterp --enable-rubyinterp --enable-tclinterp --with-tclsh=/usr/bin/tclsh
yes
config.status: creating auto/config.mk
checking for utime... yes
checking for utime... config.status: creating auto/config.h
yes
touch configure-stamp-vim-tiny
dh_testdir
checking for utimes... yes
checking for utimes... yes
checking for _LARGEFILE_SOURCE value needed for large files... yes
checking for _LARGEFILE_SOURCE value needed for large files... *** DEBIAN *** CONFIGURING VARIANT vim-nox
/usr/bin/make -C src shadow SHADOWDIR=vim-nox
configure: creating cache auto/config.cache
make[1]: Entering directory '/<<PKGBUILDDIR>>/src'
mkdir vim-nox
cd vim-nox; ln -s ../*.[ch] ../*.in ../*.sh ../*.xs ../*.xbm ../gui_gtk_res.xml ../toolcheck ../proto ../vimtutor ../gvimtutor ../mkinstalldirs .
checking whether make sets $(MAKE)... mkdir vim-nox/auto
yes
cd vim-nox/auto; ln -s ../../auto/configure .
checking for gcc... gcc
mkdir vim-nox/po
cd vim-nox/po; ln -s ../../po/*.po ../../po/*.mak ../../po/*.vim ../../po/Makefile .
no
cd vim-nox; rm -f auto/link.sed
checking for special C compiler options needed for large files... no
cp Makefile configure vim-nox
checking for _FILE_OFFSET_BITS value needed for large files... rm -f vim-nox/auto/config.mk vim-nox/config.mk.dist
cp config.mk.dist vim-nox/auto/config.mk
no
cp config.mk.dist vim-nox
mkdir vim-nox/xxd
checking for special C compiler options needed for large files... no
cd vim-nox/xxd; ln -s ../../xxd/*.[ch] ../../xxd/Make* .
checking for _FILE_OFFSET_BITS value needed for large files... if test -d os_mac_rsrc; then \
	cd vim-nox; \
	ln -s ../infplist.xml .; \
	ln -s ../os_mac_rsrc ../os_mac.rsr.hqx ../dehqx.py .; \
fi
mkdir vim-nox/testdir
cd vim-nox/testdir; ln -s ../../testdir/Makefile \
			 ../../testdir/Make_all.mak \
			 ../../testdir/README.txt \
			 ../../testdir/*.in \
			 ../../testdir/*.vim \
			 ../../testdir/*.py \
			 ../../testdir/python* \
			 ../../testdir/sautest \
			 ../../testdir/samples \
			 ../../testdir/test83-tags? \
			 ../../testdir/*.ok .
checking whether the C compiler works... make[1]: Leaving directory '/<<PKGBUILDDIR>>/src'
if test -f src/auto/config.cache; then make distclean; fi
cd src/vim-nox && LDFLAGS="-fPIE -pie -Wl,-z,relro -Wl,-z,now" CPPFLAGS="-Wdate-time" CFLAGS="-g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security" ./configure --prefix=/usr --mandir='${prefix}'/share/man --without-local-dir --with-modified-by="pkg-vim-maintainers@lists.alioth.debian.org" --with-compiledby="pkg-vim-maintainers@lists.alioth.debian.org" --enable-fail-if-missing --enable-cscope --enable-gpm --enable-selinux --disable-smack --with-features=huge --enable-multibyte --enable-acl --without-x --enable-gui=no --enable-luainterp --disable-mzschemeinterp --enable-perlinterp --enable-python3interp --with-python3-config-dir=/usr/lib/python3.5/config-3.5m-arm-linux-gnueabihf --disable-pythoninterp --enable-rubyinterp --enable-tclinterp --with-tclsh=/usr/bin/tclsh
64
checking for st_blksize... 64
checking for st_blksize... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... yes
checking whether stat() ignores a trailing slash... yes
checking whether stat() ignores a trailing slash... 
checking whether we are cross compiling... no
checking for iconv_open()... no
checking for iconv_open()... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... configure: creating cache auto/config.cache
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
yes
checking whether gcc accepts -g... checking whether the C compiler works... yes
checking for gcc option to accept ISO C89... yes
checking for nl_langinfo(CODESET)... yes
checking for nl_langinfo(CODESET)... none needed
checking how to run the C preprocessor... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... gcc -E
yes
checking for strtod in -lm... yes
checking for strtod in -lm... checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for library containing strerror... 
checking whether we are cross compiling... yes
yes
checking for strtod() and other floating point functions... checking for strtod() and other floating point functions... none required
checking for gawk... no
checking for mawk... mawk
checking for strip... strip
checking for ANSI C header files... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking for isinf()... yes
checking for isinf()... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... yes
checking for sys/wait.h that is POSIX.1 compatible... none needed
checking how to run the C preprocessor... yes
checking for isnan()... yes
checking for isnan()... gcc -E
yes
checking --enable-fail-if-missing argument... yes
checking for recent clang version... checking for grep that handles long lines and -e... /bin/grep
checking for egrep... no
configure: checking for buggy tools...
/bin/grep -E
checking for BeOS... no
checking for QNX... no
checking for Darwin (Mac OS X)... checking for fgrep... no
/bin/grep -F
checking for library containing strerror... checking AvailabilityMacros.h usability... no
checking AvailabilityMacros.h presence... yes
checking --disable-acl argument... no
checking for acl_get_file in -lposix1e... yes
checking --disable-acl argument... no
checking for acl_get_file in -lposix1e... no
checking for AvailabilityMacros.h... no
none required
checking --with-local-dir argument... no
checking for gawk... checking --with-vim-name argument... Defaulting to vim
checking --with-ex-name argument... Defaulting to ex
no
checking --with-view-name argument... checking for mawk... Defaulting to view
checking --with-global-runtime argument... no
mawk
checking --with-modified-by argument... checking for strip... pkg-vim-maintainers@lists.alioth.debian.org
strip
checking for ANSI C header files... checking if character set is EBCDIC... no
checking --disable-smack argument... yes
checking --disable-selinux argument... no
checking for is_selinux_enabled in -lselinux... no
checking for acl_get_file in -lacl... no
checking for acl_get_file in -lacl... yes
checking --with-features argument... huge
checking --with-compiledby argument... pkg-vim-maintainers@lists.alioth.debian.org
checking --disable-xsmp argument... no
checking --disable-xsmp-interact argument... yes
no
checking for fgetxattr in -lattr... checking --enable-luainterp argument... yes
checking --with-lua-prefix argument... no
checking LUA_PREFIX environment var... not set, default to /usr
checking --with-luajit... no
checking for lua... /usr/bin/lua
checking Lua version... yes
checking for fgetxattr in -lattr... 5.2
checking if lua.h can be found in /usr/include... no
checking if lua.h can be found in /usr/include/lua5.2... yes
checking if link with -L/usr/lib -llua5.2 is sane... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking --enable-mzschemeinterp argument... no
yes
checking for POSIX ACL support... checking --enable-perlinterp argument... yes
checking for perl... /usr/bin/perl
checking Perl version... yes
checking for POSIX ACL support... yes
checking --enable-fail-if-missing argument... yes
checking for recent clang version... no
configure: checking for buggy tools...
checking for BeOS... OK
no
checking for QNX... no
checking for Darwin (Mac OS X)... no
checking AvailabilityMacros.h usability... yes
checking for acl_get in -lsec... yes
checking for acl_get in -lsec... no
checking AvailabilityMacros.h presence... no
checking for AvailabilityMacros.h... no
checking --with-local-dir argument... no
checking --with-vim-name argument... Defaulting to vim
checking --with-ex-name argument... Defaulting to ex
checking --with-view-name argument... Defaulting to view
checking --with-global-runtime argument... no
checking --with-modified-by argument... pkg-vim-maintainers@lists.alioth.debian.org
checking if character set is EBCDIC... no
checking for Solaris ACL support... no
checking for Solaris ACL support... no
checking --disable-smack argument... yes
checking --disable-selinux argument... no
checking for is_selinux_enabled in -lselinux... no
checking for AIX ACL support... no
checking for AIX ACL support... no
checking for pango_shape_full... yes
checking --with-features argument... huge
checking --with-compiledby argument... pkg-vim-maintainers@lists.alioth.debian.org
checking --disable-xsmp argument... no
checking --disable-xsmp-interact argument... no
checking --enable-luainterp argument... yes
no
checking --with-lua-prefix argument... no
checking LUA_PREFIX environment var... not set, default to /usr
checking --with-luajit... no
checking for lua... checking for pango_shape_full... /usr/bin/lua
checking Lua version... 5.2
checking if lua.h can be found in /usr/include... no
checking if lua.h can be found in /usr/include/lua5.2... yes
checking if link with -L/usr/lib -llua5.2 is sane... checking if compile and link flags for Perl are sane... yes
checking --enable-mzschemeinterp argument... no
checking --enable-perlinterp argument... yes
checking for perl... /usr/bin/perl
checking Perl version... OK
yes
checking --enable-pythoninterp argument... no
checking --enable-python3interp argument... yes
checking for python3... /usr/bin/python3
checking Python version... 3.5
checking Python is 3.0 or better... yep
checking Python's abiflags... m
checking Python's install prefix... /usr
checking Python's execution prefix... /usr
checking if compile and link flags for Perl are sane... checking Python's configuration directory... (cached) /usr/lib/python3.5/config-3.5m-arm-linux-gnueabihf
checking Python3's dll name... libpython3.5m.so.1.0
checking if -pthread should be used... yes
checking --enable-pythoninterp argument... no
checking --enable-python3interp argument... yes
checking for python3... /usr/bin/python3
yes
checking Python version... checking if compile and link flags for Python 3 are sane... 3.5
checking Python is 3.0 or better... yes
checking --disable-gpm argument... no
checking for gpm... yep
checking Python's abiflags... yes
checking if -fPIE can be added for Python3... yes
checking --disable-gpm argument... no
checking for gpm... yes
checking --disable-sysmouse argument... no
checking for sysmouse... m
checking Python's install prefix... no
checking for FD_CLOEXEC... yes
checking --disable-sysmouse argument... no
checking for sysmouse... yes
checking --enable-tclinterp argument... yes
checking --with-tclsh argument... /usr/bin/tclsh
checking for /usr/bin/tclsh... no
checking for tclsh... /usr/bin/tclsh
checking Tcl version... /usr
checking Python's execution prefix... yes
checking for rename... 8.6 - OK
no
checking for FD_CLOEXEC... checking for location of Tcl include... /usr/include/tcl8.6/tcl.h
checking for location of tclConfig.sh script... /usr
/usr/lib/tclConfig.sh
yes
checking for rename... yes
checking for sysctl... checking --enable-rubyinterp argument... yes
checking --with-ruby-command argument... checking Python's configuration directory... (cached) defaulting to ruby
/usr/lib/python3.5/config-3.5m-arm-linux-gnueabihf
checking for ruby... /usr/bin/ruby
checking Ruby version... checking Python3's dll name... libpython3.5m.so.1.0
checking if -pthread should be used... not usable
checking for sysinfo... yes
checking for sysctl... yes
not usable
checking for sysinfo.mem_unit... checking for sysinfo... OK
checking Ruby rbconfig... yes
checking if compile and link flags for Python 3 are sane... yes
checking for sysconf... yes
checking for sysinfo.mem_unit... yes
checking for sysconf... RbConfig
checking Ruby header files... yes
checking size of int... yes
yes
checking if -fPIE can be added for Python3... checking size of int... yes
/usr/include/ruby-2.3.0
checking --enable-tclinterp argument... yes
checking --with-tclsh argument... /usr/bin/tclsh
checking for /usr/bin/tclsh... no
checking for tclsh... 4
/usr/bin/tclsh
checking Tcl version... checking size of long... 8.6 - OK
4
checking size of long... checking for location of Tcl include... /usr/include/tcl8.6/tcl.h
checking for location of tclConfig.sh script... /usr/lib/tclConfig.sh
checking --enable-rubyinterp argument... yes
checking --with-ruby-command argument... defaulting to ruby
checking for ruby... /usr/bin/ruby
checking Ruby version... 4
checking size of time_t... 4
checking size of time_t... OK
checking Ruby rbconfig... 4
checking size of off_t... RbConfig
checking Ruby header files... 4
checking size of off_t... 8
checking uint32_t is 32 bits... /usr/include/ruby-2.3.0
8
checking uint32_t is 32 bits... ok
checking whether memmove handles overlaps... ok
checking whether memmove handles overlaps... checking --enable-cscope argument... yes
checking --enable-workshop argument... no
checking --disable-netbeans argument... no
checking --disable-channel argument... no
checking for socket in -lsocket... yes
checking whether X_LOCALE needed... no
checking for gethostbyname in -lnsl... yes
yes
checking whether compiling with process communication is possible... checking whether X_LOCALE needed... no
checking whether Xutf8SetWMProperties() can be used... yes
checking --enable-multibyte argument... yes
checking --enable-hangulinput argument... no
checking --enable-xim argument... yes
checking --enable-fontset argument... yes
checking for xmkmf... no
checking for X... yes
checking for _xpg4_setrunelocale in -lxpg4... no
checking whether Xutf8SetWMProperties() can be used... no
checking how to create tags... ctags
checking how to run man with a section nr... man
checking --disable-nls argument... no
checking for msgfmt... msgfmt
checking for NLS... yes
checking for _xpg4_setrunelocale in -lxpg4... libraries , headers 
gettext() works
checking for bind_textdomain_codeset... checking --enable-cscope argument... yes
checking --enable-workshop argument... no
checking --disable-netbeans argument... no
checking --disable-channel argument... no
checking for socket in -lsocket... no
checking how to create tags... ctags
checking how to run man with a section nr... man
checking --disable-nls argument... no
checking for msgfmt... msgfmt
checking for NLS... no
checking for gethostbyname in -lnsl... checking for gethostbyname... yes
checking for _nl_msg_cat_cntr... gettext() works
checking for bind_textdomain_codeset... yes
checking for connect... yes
checking whether compiling with process communication is possible... yes
checking dlfcn.h usability... yes
checking for _nl_msg_cat_cntr... yes
checking for remove... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for dlopen()... yes
checking --enable-multibyte argument... yes
checking --enable-hangulinput argument... no
checking --enable-xim argument... defaulting to auto
checking --enable-fontset argument... no
defaulting to: don't HAVE_X11
checking --enable-gui argument... no GUI support
checking X11/SM/SMlib.h usability... yes
checking dlfcn.h usability... yes
checking for shmat... yes
checking X11/SM/SMlib.h presence... no
checking for dlopen() in -ldl... yes
checking for X11/SM/SMlib.h... yes
checking for CYGWIN or MSYS environment... no
checking whether toupper is broken... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for dlopen()... yes
checking for IceConnectionNumber in -lICE... yes
checking for dlsym()... no
checking whether __DATE__ and __TIME__ work... no
checking for dlopen() in -ldl... yes
checking if X11 header files can be found... yes
checking whether __attribute__((unused)) is allowed... yes
checking setjmp.h usability... yes
checking elf.h usability... yes
checking for dlsym()... yes
checking for _XdmcpAuthDoIt in -lXdmcp... yes
checking setjmp.h presence... yes
checking for setjmp.h... yes
checking for GCC 3 or later... yes
checking whether we need -D_FORTIFY_SOURCE=1... yes
yes
checking elf.h presence... checking linker --as-needed support... yes
yes
checking for elf.h... yes
checking for main in -lelf... yes
checking setjmp.h usability... yes
checking for IceOpenConnection in -lICE... no
checking for dirent.h that defines DIR... configure: updating cache auto/config.cache
configure: creating auto/config.status
yes
checking setjmp.h presence... yes
checking for library containing opendir... yes
checking for setjmp.h... yes
checking for GCC 3 or later... yes
checking whether we need -D_FORTIFY_SOURCE=1... yes
checking for XpmCreatePixmapFromData in -lXpm... yes
checking linker --as-needed support... yes
none required
configure: updating cache auto/config.cache
checking stdint.h usability... config.status: creating auto/config.mk
configure: creating auto/config.status
yes
checking if X11 header files implicitly declare return values... config.status: creating auto/config.h
yes
checking stdint.h presence... no
checking size of wchar_t is 2 bytes... yes
checking for stdint.h... yes
checking stdlib.h usability... config.status: creating auto/config.mk
touch configure-stamp-vim-gtk
dh_testdir
config.status: creating auto/config.h
yes
checking stdlib.h presence... yes
checking for stdlib.h... yes
checking string.h usability... no
checking --enable-gui argument... Athena GUI support
checking if Athena header files can be found... yes
checking string.h presence... yes
checking for string.h... yes
checking sys/select.h usability... touch configure-stamp-vim-gtk3
dh_testdir
yes
checking sys/select.h presence... yes
checking for XShapeQueryExtension in -lXext... yes
checking for sys/select.h... yes
checking sys/utsname.h usability... yes
checking sys/utsname.h presence... yes
checking for sys/utsname.h... yes
dh_prep -p vim
yes
checking for wslen in -lw... checking termcap.h usability... dh_prep -p vim-tiny
*** DEBIAN *** BUILDING VARIANT vim-basic
/usr/bin/make -C src/vim-basic
no
checking termcap.h presence... make[1]: Entering directory '/<<PKGBUILDDIR>>/src/vim-basic'
mkdir objects
CC="gcc -Iproto -DHAVE_CONFIG_H   -Wdate-time    " srcdir=. sh ./osdef.sh
no
checking for termcap.h... no
checking fcntl.h usability... no
checking for dlsym in -ldl... *** DEBIAN *** BUILDING VARIANT vim-tiny
/usr/bin/make -C src/vim-tiny
make[1]: Entering directory '/<<PKGBUILDDIR>>/src/vim-tiny'
mkdir objects
CC="gcc -Iproto -DHAVE_CONFIG_H   -Wdate-time    " srcdir=. sh ./osdef.sh
yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking sgtty.h usability... yes
checking for XmuCreateStippledPixmap in -lXmu... yes
checking sgtty.h presence... yes
checking for sgtty.h... yes
checking sys/ioctl.h usability... yes
checking for extra X11 defines... no
checking X11/SM/SMlib.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking sys/time.h usability... yes
checking X11/SM/SMlib.h presence... yes
checking for X11/SM/SMlib.h... yes
checking X11/xpm.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/types.h usability... yes
checking X11/xpm.h presence... yes
checking sys/types.h presence... yes
checking for sys/types.h... yes
yes
checking for X11/xpm.h... yes
checking termio.h usability... checking X11/Sunkeysym.h usability... creating auto/pathdef.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/popupmnu.o popupmnu.c
yes
checking X11/Sunkeysym.h presence... yes
checking termio.h presence... yes
checking for X11/Sunkeysym.h... yes
checking for XIMText in X11/Xlib.h... yes
checking for termio.h... yes
checking iconv.h usability... yes
checking for X11/Xmu/Editres.h... yes
checking iconv.h presence... yes
checking for iconv.h... yes
checking inttypes.h usability... yes
checking for CYGWIN or MSYS environment... no
checking whether toupper is broken... yes
checking inttypes.h presence... yes
checking for inttypes.h... yes
checking langinfo.h usability... no
checking whether __DATE__ and __TIME__ work... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking math.h usability... yes
checking whether __attribute__((unused)) is allowed... yes
checking elf.h usability... yes
checking math.h presence... yes
checking for math.h... yes
checking unistd.h usability... yes
checking elf.h presence... yes
checking for elf.h... yes
checking for main in -lelf... yes
checking unistd.h presence... no
checking for dirent.h that defines DIR... yes
checking for unistd.h... yes
creating auto/pathdef.c
checking stropts.h usability... gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/popupmnu.o popupmnu.c
yes
checking for library containing opendir... yes
checking stropts.h presence... yes
checking for stropts.h... yes
checking errno.h usability... none required
checking stdint.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking sys/resource.h usability... gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/quickfix.o quickfix.c
yes
checking stdint.h presence... yes
checking for stdint.h... yes
checking stdlib.h usability... gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/quickfix.o quickfix.c
yes
checking sys/resource.h presence... yes
checking for sys/resource.h... yes
yes
checking stdlib.h presence... checking sys/systeminfo.h usability... yes
checking for stdlib.h... yes
checking string.h usability... no
checking sys/systeminfo.h presence... no
checking for sys/systeminfo.h... no
yes
checking string.h presence... checking locale.h usability... yes
checking for string.h... yes
checking sys/select.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking sys/select.h presence... yes
checking sys/stream.h usability... gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/regexp.o regexp.c
yes
checking for sys/select.h... yes
checking sys/utsname.h usability... no
checking sys/stream.h presence... yes
checking sys/utsname.h presence... no
checking for sys/stream.h... no
yes
checking for sys/utsname.h... yes
checking termios.h usability... checking termcap.h usability... no
checking termcap.h presence... yes
checking termios.h presence... yes
checking for termios.h... yes
no
checking for termcap.h... no
checking fcntl.h usability... checking libc.h usability... yes
checking fcntl.h presence... no
checking libc.h presence... yes
checking for fcntl.h... yes
no
checking for libc.h... no
checking sgtty.h usability... checking sys/statfs.h usability... yes
checking sgtty.h presence... yes
checking sys/statfs.h presence... yes
checking for sgtty.h... yes
checking sys/ioctl.h usability... yes
checking for sys/statfs.h... yes
checking poll.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
yes
checking poll.h presence... checking sys/time.h usability... yes
checking for poll.h... yes
checking sys/poll.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
yes
checking sys/poll.h presence... checking sys/types.h usability... yes
checking for sys/poll.h... yes
checking pwd.h usability... yes
checking sys/types.h presence... yes
checking for sys/types.h... yes
yes
checking pwd.h presence... checking termio.h usability... yes
checking for pwd.h... yes
checking utime.h usability... yes
checking termio.h presence... yes
checking for termio.h... yes
yes
checking utime.h presence... checking iconv.h usability... yes
checking for utime.h... yes
checking sys/param.h usability... yes
checking iconv.h presence... yes
checking for iconv.h... yes
checking inttypes.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking libintl.h usability... yes
checking inttypes.h presence... yes
checking for inttypes.h... yes
checking langinfo.h usability... yes
checking libintl.h presence... yes
checking for libintl.h... yes
checking libgen.h usability... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking math.h usability... yes
checking libgen.h presence... yes
checking for libgen.h... yes
checking util/debug.h usability... yes
checking math.h presence... no
checking util/debug.h presence... yes
checking for math.h... yes
checking unistd.h usability... no
checking for util/debug.h... no
checking util/msg18n.h usability... yes
checking unistd.h presence... no
checking util/msg18n.h presence... yes
checking for unistd.h... yes
checking stropts.h usability... no
checking for util/msg18n.h... no
checking frame.h usability... yes
checking stropts.h presence... yes
checking for stropts.h... yes
no
checking frame.h presence... checking errno.h usability... no
checking for frame.h... no
checking sys/acl.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
yes
checking sys/acl.h presence... checking sys/resource.h usability... yes
checking for sys/acl.h... yes
checking sys/access.h usability... yes
checking sys/resource.h presence... yes
checking for sys/resource.h... yes
no
checking sys/access.h presence... checking sys/systeminfo.h usability... no
checking for sys/access.h... no
checking sys/sysinfo.h usability... no
checking sys/systeminfo.h presence... yes
checking sys/sysinfo.h presence... no
checking for sys/systeminfo.h... no
checking locale.h usability... yes
checking for sys/sysinfo.h... yes
checking wchar.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
yes
checking wchar.h presence... checking sys/stream.h usability... yes
checking for wchar.h... yes
checking wctype.h usability... no
checking sys/stream.h presence... no
checking for sys/stream.h... no
checking termios.h usability... yes
checking wctype.h presence... yes
checking for wctype.h... yes
checking for sys/ptem.h... no
checking for sys/sysctl.h... yes
checking termios.h presence... yes
checking for termios.h... yes
checking libc.h usability... yes
checking for pthread_np.h... no
checking strings.h usability... no
checking libc.h presence... no
checking for libc.h... no
checking sys/statfs.h usability... yes
checking strings.h presence... yes
checking for strings.h... yes
checking if strings.h can be included after string.h... yes
checking sys/statfs.h presence... yes
checking for sys/statfs.h... yes
checking poll.h usability... yes
checking whether gcc needs -traditional... no
checking for an ANSI C-conforming const... yes
checking poll.h presence... yes
yes
checking for poll.h... checking for working volatile... yes
checking sys/poll.h usability... yes
checking for mode_t... yes
checking sys/poll.h presence... yes
checking for sys/poll.h... yes
checking pwd.h usability... yes
checking pwd.h presence... yes
checking for pwd.h... yes
yes
checking for off_t... checking utime.h usability... yes
checking utime.h presence... yes
checking for utime.h... yes
checking sys/param.h usability... yes
checking for pid_t... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking libintl.h usability... yes
checking libintl.h presence... yes
checking for size_t... yes
checking for libintl.h... yes
checking libgen.h usability... yes
checking libgen.h presence... yes
checking for libgen.h... yes
checking util/debug.h usability... yes
checking for uid_t in sys/types.h... yes
checking for uint32_t... no
checking util/debug.h presence... no
checking for util/debug.h... no
checking util/msg18n.h usability... yes
checking whether time.h and sys/time.h may both be included... no
checking util/msg18n.h presence... no
checking for util/msg18n.h... no
checking frame.h usability... yes
checking for ino_t... no
checking frame.h presence... no
checking for frame.h... no
checking sys/acl.h usability... yes
checking for dev_t... yes
checking sys/acl.h presence... yes
checking for sys/acl.h... yes
checking sys/access.h usability... no
checking sys/access.h presence... no
checking for sys/access.h... no
checking sys/sysinfo.h usability... yes
checking whether byte ordering is bigendian... yes
checking sys/sysinfo.h presence... yes
checking for sys/sysinfo.h... yes
checking wchar.h usability... no
checking for inline... inline
checking for rlim_t... yes
checking wchar.h presence... gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/regexp.o regexp.c
yes
checking for wchar.h... yes
yes
checking for stack_t... checking wctype.h usability... yes
checking whether stack_t has an ss_base field... no
checking --with-tlib argument... empty: automatic terminal library selection
yes
checking wctype.h presence... checking for tgetent in -ltinfo... yes
checking for wctype.h... yes
checking for sys/ptem.h... no
checking for sys/sysctl.h... yes
yes
checking for pthread_np.h... no
checking strings.h usability... checking whether we talk terminfo... yes
checking strings.h presence... yes
checking for strings.h... yes
checking if strings.h can be included after string.h... yes
checking whether gcc needs -traditional... no
checking for an ANSI C-conforming const... yes
checking what tgetent() returns for an unknown terminal... yes
checking for working volatile... yes
checking for mode_t... zero
checking whether termcap.h contains ospeed... no
checking whether ospeed can be extern... yes
checking for off_t... yes
checking whether termcap.h contains UP, BC and PC... no
checking whether UP, BC and PC can be extern... yes
checking whether tputs() uses outfuntype... yes
checking for pid_t... no
checking whether sys/select.h and sys/time.h may both be included... yes
checking for /dev/ptc... no
checking for SVR4 ptys... yes
checking for size_t... yes
checking for ptyranges... don't know
checking default tty permissions/group... yes
checking for uid_t in sys/types.h... yes
checking for uint32_t... can't determine - assume ptys are world accessible
world
checking return type of signal handlers... void
checking for struct sigcontext... yes
checking whether time.h and sys/time.h may both be included... yes
checking getcwd implementation is broken... yes
checking for ino_t... no
checking for bcmp... yes
checking for dev_t... yes
checking for fchdir... yes
yes
checking whether byte ordering is bigendian... checking for fchown... yes
checking for fsync... no
checking for inline... inline
checking for rlim_t... yes
checking for stack_t... yes
checking for getcwd... yes
checking whether stack_t has an ss_base field... no
checking --with-tlib argument... empty: automatic terminal library selection
checking for tgetent in -ltinfo... yes
checking for getpseudotty... yes
no
checking for getpwent... checking whether we talk terminfo... yes
checking for getpwnam... yes
checking what tgetent() returns for an unknown terminal... yes
checking for getpwuid... zero
checking whether termcap.h contains ospeed... yes
checking for getrlimit... no
checking whether ospeed can be extern... yes
checking whether termcap.h contains UP, BC and PC... yes
checking for gettimeofday... no
checking whether UP, BC and PC can be extern... yes
checking for getwd... yes
checking whether tputs() uses outfuntype... no
checking whether sys/select.h and sys/time.h may both be included... yes
yes
checking for /dev/ptc... no
checking for SVR4 ptys... checking for lstat... yes
checking for ptyranges... yes
don't know
checking for memcmp... checking default tty permissions/group... yes
checking for memset... can't determine - assume ptys are world accessible
world
checking return type of signal handlers... void
checking for struct sigcontext... yes
checking for mkdtemp... yes
checking getcwd implementation is broken... yes
checking for nanosleep... no
checking for bcmp... yes
checking for opendir... yes
checking for fchdir... yes
checking for putenv... yes
checking for fchown... yes
checking for qsort... yes
checking for fsync... yes
checking for readlink... yes
checking for getcwd... yes
checking for select... yes
checking for getpseudotty... yes
checking for setenv... no
checking for getpwent... yes
checking for setpgid... yes
checking for getpwnam... yes
checking for setsid... yes
checking for getpwuid... yes
checking for sigaltstack... yes
checking for getrlimit... yes
checking for sigstack... yes
checking for gettimeofday... yes
checking for sigset... yes
checking for getwd... yes
checking for sigsetjmp... yes
checking for lstat... no
checking for sigaction... yes
checking for memcmp... yes
checking for sigvec... yes
checking for memset... no
checking for strcasecmp... yes
checking for mkdtemp... yes
checking for strerror... yes
checking for nanosleep... yes
checking for strftime... yes
checking for opendir... yes
checking for stricmp... yes
checking for putenv... no
checking for strncasecmp... yes
checking for qsort... yes
checking for strnicmp... yes
checking for readlink... no
checking for strpbrk... yes
checking for select... yes
checking for strtol... yes
checking for setenv... yes
checking for tgetent... yes
checking for setpgid... yes
checking for towlower... yes
checking for setsid... yes
checking for towupper... yes
checking for sigaltstack... yes
checking for iswupper... yes
checking for sigstack... yes
checking for usleep... yes
checking for sigset... yes
checking for utime... yes
checking for sigsetjmp... yes
checking for utimes... no
checking for sigaction... yes
checking for _LARGEFILE_SOURCE value needed for large files... yes
checking for sigvec... no
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking for strcasecmp... 64
checking for st_blksize... yes
checking for strerror... yes
checking whether stat() ignores a trailing slash... yes
checking for strftime... no
checking for iconv_open()... yes
checking for stricmp... yes
checking for nl_langinfo(CODESET)... no
checking for strncasecmp... yes
checking for strtod in -lm... yes
checking for strnicmp... yes
checking for strtod() and other floating point functions... no
checking for strpbrk... yes
yes
checking for isinf()... checking for strtol... yes
checking for tgetent... yes
checking for isnan()... yes
checking for towlower... yes
checking --disable-acl argument... no
checking for acl_get_file in -lposix1e... yes
checking for towupper... no
checking for acl_get_file in -lacl... yes
checking for iswupper... yes
checking for fgetxattr in -lattr... yes
yes
checking for POSIX ACL support... checking for usleep... yes
yes
checking for acl_get in -lsec... checking for utime... no
checking for Solaris ACL support... yes
no
checking for utimes... checking for AIX ACL support... no
checking --disable-gpm argument... no
checking for gpm... yes
checking for _LARGEFILE_SOURCE value needed for large files... yes
checking --disable-sysmouse argument... no
checking for sysmouse... no
checking for FD_CLOEXEC... no
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... yes
checking for rename... 64
checking for st_blksize... yes
checking for sysctl... yes
checking whether stat() ignores a trailing slash... not usable
checking for sysinfo... yes
checking for sysinfo.mem_unit... no
checking for iconv_open()... yes
checking for sysconf... yes
checking size of int... yes
checking for nl_langinfo(CODESET)... 4
checking size of long... yes
checking for strtod in -lm... yes
checking for strtod() and other floating point functions... 4
checking size of time_t... yes
checking for isinf()... 4
checking size of off_t... yes
checking for isnan()... 8
checking uint32_t is 32 bits... yes
checking --disable-acl argument... no
checking for acl_get_file in -lposix1e... ok
checking whether memmove handles overlaps... no
checking for acl_get_file in -lacl... yes
checking for _xpg4_setrunelocale in -lxpg4... yes
checking for fgetxattr in -lattr... no
checking how to create tags... ctags
checking how to run man with a section nr... man
checking --disable-nls argument... no
checking for msgfmt... msgfmt
checking for NLS... yes
checking for POSIX ACL support... gettext() works
checking for bind_textdomain_codeset... yes
checking for acl_get in -lsec... no
checking for Solaris ACL support... yes
checking for _nl_msg_cat_cntr... no
checking for AIX ACL support... no
checking --disable-gpm argument... no
checking for gpm... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking --disable-sysmouse argument... no
checking for sysmouse... yes
checking for dlfcn.h... yes
checking for dlopen()... no
checking for FD_CLOEXEC... yes
checking for rename... no
checking for dlopen() in -ldl... yes
yes
checking for sysctl... checking for dlsym()... not usable
checking for sysinfo... yes
checking setjmp.h usability... yes
checking for sysinfo.mem_unit... yes
checking for sysconf... yes
checking setjmp.h presence... yes
checking for setjmp.h... yes
checking for GCC 3 or later... yes
checking whether we need -D_FORTIFY_SOURCE=1... yes
checking linker --as-needed support... yes
yes
checking size of int... configure: updating cache auto/config.cache
configure: creating auto/config.status
4
checking size of long... config.status: creating auto/config.mk
config.status: creating auto/config.h
4
checking size of time_t... touch configure-stamp-vim-nox
dh_testdir
4
checking size of off_t... dh_prep -p vim-gtk
8
checking uint32_t is 32 bits... *** DEBIAN *** BUILDING VARIANT vim-gtk
/usr/bin/make -C src/vim-gtk
make[1]: Entering directory '/<<PKGBUILDDIR>>/src/vim-gtk'
mkdir objects
CC="gcc -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time    " srcdir=. sh ./osdef.sh
ok
checking whether memmove handles overlaps... yes
checking whether X_LOCALE needed... no
checking whether Xutf8SetWMProperties() can be used... yes
checking for _xpg4_setrunelocale in -lxpg4... no
checking how to create tags... ctags
checking how to run man with a section nr... man
checking --disable-nls argument... no
checking for msgfmt... msgfmt
checking for NLS... gettext() works
checking for bind_textdomain_codeset... yes
checking for _nl_msg_cat_cntr... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for dlopen()... creating auto/pathdef.c
no
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/popupmnu.o popupmnu.c
checking for dlopen() in -ldl... yes
checking for dlsym()... yes
checking setjmp.h usability... yes
checking setjmp.h presence... yes
checking for setjmp.h... yes
checking for GCC 3 or later... yes
checking whether we need -D_FORTIFY_SOURCE=1... yes
checking linker --as-needed support... yes
configure: updating cache auto/config.cache
configure: creating auto/config.status
config.status: creating auto/config.mk
config.status: creating auto/config.h
touch configure-stamp-vim-athena
dh_testdir
dh_prep -p vim-gtk3
*** DEBIAN *** BUILDING VARIANT vim-gtk3
/usr/bin/make -C src/vim-gtk3
make[1]: Entering directory '/<<PKGBUILDDIR>>/src/vim-gtk3'
mkdir objects
CC="gcc -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time    " srcdir=. sh ./osdef.sh
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/quickfix.o quickfix.c
creating auto/pathdef.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/popupmnu.o popupmnu.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/screen.o screen.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/quickfix.o quickfix.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/regexp.o regexp.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/screen.o screen.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/search.o search.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/regexp.o regexp.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/sha256.o sha256.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/spell.o spell.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/spellfile.o spellfile.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/syntax.o syntax.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/tag.o tag.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/term.o term.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ui.o ui.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/undo.o undo.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/search.o search.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/userfunc.o userfunc.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/window.o window.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/json.o json.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/sha256.o sha256.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/main.o main.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/memfile.o memfile.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/spell.o spell.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/message.o message.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/screen.o screen.c
cd xxd; CC="gcc" CFLAGS="-Wdate-time -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1" LDFLAGS="-fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" \
	/usr/bin/make -f Makefile
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-tiny/xxd'
gcc -Wdate-time -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -DUNIX -o xxd xxd.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-tiny/xxd'
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/arabic.o arabic.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/buffer.o buffer.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/blowfish.o blowfish.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/charset.o charset.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/crypt.o crypt.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/crypt_zip.o crypt_zip.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/dict.o dict.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/screen.o screen.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/diff.o diff.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/spellfile.o spellfile.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/digraph.o digraph.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/edit.o edit.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/eval.o eval.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/evalfunc.o evalfunc.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_cmds.o ex_cmds.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/search.o search.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/syntax.o syntax.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_cmds2.o ex_cmds2.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_docmd.o ex_docmd.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/search.o search.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/sha256.o sha256.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/spell.o spell.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/tag.o tag.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_eval.o ex_eval.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_getln.o ex_getln.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/sha256.o sha256.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/term.o term.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/farsi.o farsi.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/fileio.o fileio.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/spell.o spell.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ui.o ui.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/spellfile.o spellfile.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/undo.o undo.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/fold.o fold.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/getchar.o getchar.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/userfunc.o userfunc.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/hardcopy.o hardcopy.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/hashtab.o hashtab.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/if_cscope.o if_cscope.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/if_xcmdsrv.o if_xcmdsrv.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/list.o list.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/spellfile.o spellfile.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/mark.o mark.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/window.o window.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/syntax.o syntax.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/memline.o memline.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/menu.o menu.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/misc1.o misc1.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/netbeans.o netbeans.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/syntax.o syntax.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/misc2.o misc2.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/tag.o tag.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/channel.o channel.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/move.o move.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/mbyte.o mbyte.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/term.o term.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/normal.o normal.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/json.o json.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/main.o main.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/tag.o tag.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/memfile.o memfile.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ui.o ui.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ops.o ops.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/message.o message.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/term.o term.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/undo.o undo.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1             -o objects/option.o option.c
cd xxd; CC="gcc" CFLAGS="-Wdate-time -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1" LDFLAGS="-fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" \
	/usr/bin/make -f Makefile
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-basic/xxd'
gcc -Wdate-time -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -DUNIX -o xxd xxd.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-basic/xxd'
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-basic/po'
OLD_PO_FILE_INPUT=yes msgfmt -v -o af.mo af.po
1423 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ca.mo ca.po
1697 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o cs.mo cs.po
1284 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o de.mo de.po
1701 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o en_GB.mo en_GB.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/userfunc.o userfunc.c
78 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o eo.mo eo.po
1916 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o es.mo es.po
1733 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o fi.mo fi.po
1902 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o fr.mo fr.po
1916 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ga.mo ga.po
1888 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o it.mo it.po
1897 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ja.mo ja.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ui.o ui.c
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ko.mo ko.po
1728 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ko.UTF-8.mo ko.UTF-8.po
1728 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o nb.mo nb.po
1668 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o nl.mo nl.po
1213 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o no.mo no.po
1668 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o pl.mo pl.po
1869 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o pt_BR.mo pt_BR.po
1735 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ru.mo ru.po
1882 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o sk.mo sk.po
1628 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o sv.mo sv.po
1697 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o uk.mo uk.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o vi.mo vi.po
1422 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_CN.UTF-8.mo zh_CN.UTF-8.po
1634 translated messages, 3 fuzzy translations.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_CN.mo zh_CN.po
1633 translated messages, 3 fuzzy translations.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_TW.UTF-8.mo zh_TW.UTF-8.po
1422 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_TW.mo zh_TW.po
1422 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o cs.cp1250.mo cs.cp1250.po
1284 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ja.sjis.mo ja.sjis.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ja.euc-jp.mo ja.euc-jp.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o pl.cp1250.mo pl.cp1250.po
1869 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o pl.UTF-8.mo pl.UTF-8.po
1869 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ru.cp1251.mo ru.cp1251.po
1882 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o sk.cp1250.mo sk.cp1250.po
1628 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o uk.cp1251.mo uk.cp1251.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_CN.cp936.mo zh_CN.cp936.po
1633 translated messages, 3 fuzzy translations.
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-basic/po'
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-basic/po'
make[2]: Nothing to be done for 'converted'.
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-basic/po'
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/arabic.o arabic.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/os_unix.o os_unix.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/buffer.o buffer.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/undo.o undo.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/pathdef.o auto/pathdef.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       version.c -o objects/version.o
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/window.o window.c
link.sh: $LINK_AS_NEEDED set to 'yes': invoking linker directly.
  gcc   -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed 	-o vim objects/arabic.o objects/buffer.o objects/blowfish.o objects/charset.o objects/crypt.o objects/crypt_zip.o objects/dict.o objects/diff.o objects/digraph.o objects/edit.o objects/eval.o objects/evalfunc.o objects/ex_cmds.o objects/ex_cmds2.o objects/ex_docmd.o objects/ex_eval.o objects/ex_getln.o objects/farsi.o objects/fileio.o objects/fold.o objects/getchar.o objects/hardcopy.o objects/hashtab.o  objects/if_cscope.o objects/if_xcmdsrv.o objects/list.o objects/mark.o objects/memline.o objects/menu.o objects/misc1.o objects/misc2.o objects/move.o objects/mbyte.o objects/normal.o objects/ops.o objects/option.o objects/os_unix.o objects/pathdef.o objects/popupmnu.o objects/quickfix.o objects/regexp.o objects/screen.o objects/search.o objects/sha256.o objects/spell.o objects/spellfile.o objects/syntax.o objects/tag.o objects/term.o objects/ui.o objects/undo.o objects/userfunc.o objects/version.o objects/window.o              objects/json.o objects/main.o objects/memfile.o objects/message.o    -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE  -lm -ltinfo  -lselinux -lacl -lattr -ldl           
link.sh: Linked fine
make[1]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-tiny'
[ yes != "yes" ] || flock debian /usr/bin/make -j1 -C src/vim-tiny test
make[1]: warning: -jN forced in submake: disabling jobserver mode.
make[1]: Entering directory '/<<PKGBUILDDIR>>/src/vim-tiny'
/usr/bin/make -f Makefile vim
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-tiny'
make[2]: 'vim' is up to date.
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-tiny'
if test -n "" -a -f po/Makefile; then \
	cd po; /usr/bin/make -f Makefile check VIM=../vim; \
fi
if test vim != vim -a ! -r vim; then \
	ln -s vim vim; \
fi
cd testdir; /usr/bin/make -f Makefile  VIMPROG=../vim  SCRIPTSOURCE=../../runtime
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-tiny/testdir'
rm -f test.log messages
rm -rf test1.failed test.out X* viminfo tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok benchmark.out wrongtermsize
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test1.in
[?1h="test1.in" 57 lines, 2069 charactersFirst a simple test to check if the test script works.

If Vim was not compiled with the +eval feature, the small.vim script will be
set to copy the test.ok file to test.out, so that it looks like the test
succeeded.  Otherwise an empty small.vim is written.  small.vim is sourced by
tests that require the +eval feature or other features that are missing in the
small version.

If Vim was not compiled with the +windows feature, the tiny.vim script will be
set like small.vim above.  tiny.vim is sourced by tests that require the
+windows feature or other features that are missing in the tiny version.

If Vim was not compiled with the +multi_byte feature, the mbyte.vim script will
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
:" If columns or lines are too small, create wrongtermsize.
:" (Some tests will fail. When columns and/or lines are small)
:if &lines < 24 || &columns < 80 | sp another | w! wrongtermsize | qa! | endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 35 lines, 1133 characters written:set ff& cpo+=A



/ENDTEST: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
:w! small.vim
:" If +windows feature not supported :sp will fail and tiny.vim will be
:" written to skip the test.
:sp another
:wq! tiny.vim
:qa!
ENDTEST


:so! Xdotest
:" If columns or lines are too small, create wrongtermsize.
:" (Some tests will fail. When columns and/or lines are small)
:if &lines < 24 || &columns < 80 | sp another | w! wrongtermsize | qa! | endif
:"
:" Write a single line to test.out to check if testing works at all.
:%d
~~~~~~~~~~~~~~~~~~~~~
~
--No lines in buffer--this is a test:w! test.out
"test.out" [New File] 1 line, 15 characters written:" Create small.vim and tiny.vim empty, create mbyte.vim to skip the test.

:w! small.vim
"small.vim" [New File] 1 line, 1 character written:w! tiny.vim
"tiny.vim" [New File] 1 line, 1 character writtene! test.ok
w! test.out
qa!:w! mbyte.vim
"mbyte.vim" [New File] 4 lines, 28 characters written:w! mzscheme.vim
"mzscheme.vim" [New File] 4 lines, 28 characters written:w! lua.vim
"lua.vim" [New File] 4 lines, 28 characters written:"
:" 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
:w! small.vim
"small.vim" 4 lines, 28 characters written:" If +windows feature not supported :sp will fail and tiny.vim will be
:" written to skip the test.
:sp another
"another" [New File]~~
~another                                                                         qa!test1.in                                                                        :wq! tiny.vim
"tiny.vim" 0 lines, 0 characters writtene! test.ok
w! test.out
qa!~~
~~:qa!
[?1l>rm -rf X* viminfo
rm -rf test3.failed test.ok test.out X* viminfo
cp test3.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test3.in
[?1h="test3.in" 2303 lines, 22649 characters/* vim: set cin ts=4 sw=4 : */

Test for 'cindent'

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo modeline
:edit" read modeline
/start of AUTO
=/end of AUTO
ENDTEST

/* start of AUTO matically checked vim: set ts=4 : */
{if (test)cmd1;cmd2;
}

{if (test)cmd1;else:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/* vim: set cin ts=4 sw=4 : *//^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 125 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
"test.ok" 2062 lines, 19815 characters

"test.out" [New File] 2062 lines, 19815 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test3 = test61; then \
#	  if diff test.out test3.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test3.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test3.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test4.failed test.ok test.out X* viminfo
cp test4.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test4.in
[?1h="test4.in" 34 lines, 960 charactersTest for autocommand that changes current buffer on BufEnter event.
Check if modelines are interpreted for the correct buffer.

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo
:au BufEnter Xxx brew
/start of
:.,/end of/w! Xxx   " write test file Xxx
:set ai modeline modelines=3
:sp Xxx" split to Xxx, autocmd will do :brew
G?this is a
othis should be auto-indented^[
:" Append text with autoindent to this file
:au! BufEnter Xxx
:buf Xxx" go to Xxx, no autocmd anymore
G?this is a
othis should be in column 1^[:wq " append text without autoindent to Xxx
G:r Xxx" include Xxx in the current file
:set fo+=r" issue #57 do not move cursor on <c-o> when autoindent is sset
Go# abcdef^[2hi
^Od0^[o# abcdef^[2hi^Od0^[::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for autocommand that changes current buffer on BufEnter event./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 20 lines, 678 characters written:set ff& cpo+=A
/ENDTEST


:?startstart?,$w! test.out
:qa!
ENDTEST

:so! Xdotest
:so small.vim
"test.ok" 20 lines, 330 characters

"test.out" [New File] 20 lines, 330 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test4 = test61; then \
#	  if diff test.out test4.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test4.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test4.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test5.failed test.ok test.out X* viminfo
cp test5.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test5.in
[?1h="test5.in" 29 lines, 949 charactersTest for autocommand that deletes the current buffer on BufLeave event.
Also test deleting the last buffer, should give a new, empty buffer.

STARTTEST
:so small.vim
:au BufLeave Xxx bwipe
/start of
:.,/end of/w! Xxx" write test file Xxx
:sp Xxx" split to Xxx
:bwipe" delete buffer Xxx, now we're back here
G?this is a
othis is some more text^[
:" Append some text to this file
:?start?,$w! test.out" Write current file contents
:bwipe test.out" delete alternate buffer
:au bufleave test5.in bwipe
:bwipe!" delete current buffer, get an empty one
ithis is another test line^[:w >>test.out
:" append an extra line to the output file
:qa!
ENDTEST

start of test file Xxx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for autocommand that deletes the current buffer on BufLeave event./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 16 lines, 664 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
"test.ok" 9 lines, 173 characters

"test.out" [New File] 9 lines, 173 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test5 = test61; then \
#	  if diff test.out test5.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test5.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test5.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test7.failed test.ok test.out X* viminfo
cp test7.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test7.in
[?1h="test7.in" 26 lines, 675 charactersTest for autocommand that changes the buffer list, when doing ":ball".

STARTTEST
:so small.vim
/^start of
A1^[:.,/end of/w! Xxx1   " write test file Xxx1
:sp Xxx1
:close
$r2:.,/end of/w! Xxx2    " write test file Xxx2
:sp Xxx2
:close
$r3:.,/end of/w! Xxx3    " write test file Xxx3
:sp Xxx3
:close
:au BufReadPost Xxx2 bwipe
$r4:ball" open window for all args, close Xxx2
:.,$w! test.out" Write contents of this file
^W^W:w >>test.out" Append contents of second window (Xxx1)
^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!
ENDTEST

start of test file Xxx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for autocommand that changes the buffer list, when doing ":ball"./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 508 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
"test.ok" 12 lines, 231 characters

"test.out" [New File] 12 lines, 231 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test7 = test61; then \
#	  if diff test.out test7.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test7.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test7.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test8.failed test.ok test.out X* viminfo
cp test8.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test8.in
[?1h="test8.in" 46 lines, 1236 charactersTest for BufWritePre autocommand that deletes or unloads the buffer.
Test for BufUnload autocommand that unloads all other buffers.

STARTTEST
:so small.vim
:au BufWritePre Xxx1 bunload
:au BufWritePre Xxx2 bwipe
/^start of
A1^[:.,/end of/w! Xxx1  " write test file Xxx1
$r2:.,/end of/w! Xxx2   " write test file Xxx2
:e! Xxx2" edit Xxx2
:bdel test8.in" delete this file from the buffer list
:e Xxx1" edit Xxx1
:w" write it, will unload it and give an error msg
:w! test.out" Write contents of this file
:e! Xxx2" start editing Xxx2
:bwipe test.out" remove test.out from the buffer list
:w" write it, will delete the buffer and give an error msg:w >>test.out" Append contents of this file
:au! BufWritePre
:func CloseAll()
  let i = 0
  while i <= bufnr('$'):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for BufWritePre autocommand that deletes or unloads the buffer./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 37 lines, 1054 characters written:set ff& cpo+=A
/ENDTEST


















if i != bufnr('%') && bufloaded(i)exe  i . "bunload"
    endif
    let i += 1
  endwhile
endfunc
:func WriteToOut()
  edit! test.out
  $put ='VimLeave done'
  write
endfunc
:set viminfo='100,nviminfo
:au BufUnload * call CloseAll()
:au VimLeave * call WriteToOut()
:e small.vim
:sp mbyte.vim
:q
:qa!
ENDTEST

:so! Xdotest
:so small.vim
"test.ok" 7 lines, 76 characters

"test.out" [New File] 7 lines, 76 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test8 = test61; then \
#	  if diff test.out test8.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test8.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test8.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test9.failed test.ok test.out X* viminfo
cp test9.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test9.in
[?1h="test9.in" 12 lines, 255 charactersTest for Bufleave autocommand that deletes the buffer we are about to edit.

STARTTEST
:so small.vim
:au BufLeave test9.in bwipe yy
:e yy
:/^start of/,$w! test.out      " Write contents of this file
:qa!
ENDTEST

start of test file xx
end of test file xx
~
~
~
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for Bufleave autocommand that deletes the buffer we are about to edit./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 117 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
"test.ok" 2 lines, 42 characters

"test.out" [New File] 2 lines, 42 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test9 = test61; then \
#	  if diff test.out test9.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test9.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test9.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test14.failed test.ok test.out X* viminfo
cp test14.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test14.in
[?1h="test14.in" 99 lines, 1606 charactersTests for "vaBiB", end could be wrong.
Also test ":s/pat/sub/" with different ~s in sub.
Also test for ^Vxff and ^Vo123 in Insert mode.
Also test "[m", "]m", "[M" and "]M"
Also test search()

STARTTEST
:so small.vim
/Start cursor here
vaBiBD:?Bug?,/Piece/-2w! test.out
/^- Bug
:s/u/~u~/
:s/i/~u~/
:s/o/~~~/
:.w >>test.out
:if has("ebcdic")
: let tt = "o\<C-V>193\<C-V>xc2\<C-V>o303 \<C-V>90a\<C-V>xfg\<C-V>o578\<Esc>"
:else
: let tt = "o\<C-V>65\<C-V>x42\<C-V>o103 \<C-V>33a\<C-V>xfg\<C-V>o78\<Esc>"
:endif
:exe "normal " . tt
:unlet tt
:.w >>test.out:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for "vaBiB", end could be wrong./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 56 lines, 1141 characters written:set ff& cpo+=A
/ENDTEST:$put =@/
/^substitute
:keeppatterns s/asdf/xyz/
:$put =@/
/^substitute
Y:$put =@0
/bar /e
:$put =@0
-:keeppatterns /xyz
0dn:/^search()/,$w >>test.out
:qa!
ENDTEST

- Bug in "vPPPP" on this text (Webb):{cmd;{cmd;    /* <-- Start cursor here */{}}}
:so! Xdotest
:so small.vim
"test.ok" 26 lines, 252 characters

"test.out" [New File] 26 lines, 252 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test14 = test61; then \
#	  if diff test.out test14.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test14.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test14.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test15.failed test.ok test.out X* viminfo
cp test15.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test15.in
[?1h="test15.in" 136 lines, 2246 charactersTests for :right on text with embedded TAB.
Also test formatting a paragraph.
Also test undo after ":%s" and formatting.

STARTTEST
:so small.vim
:set tw=65

:/^\s*test for :left/,/^\s*test for :center/ left
:/^\s*test for :center/,/^\s*test for :right/ center
:/^\s*test for :right/,/^xxx/-1 right
:set fo+=tcroql tw=72
/xxxxxxxx$
0gq6kk
:set nocp viminfo+=nviminfo
:" undo/redo here to make the next undo only work on the following changes
u^R
:map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq
/^aa
ggu
:?test for :left?,$w! test.out
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :right on text with embedded TAB./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 401 characters written:set ff& cpo+=A
/ENDTEST

:so! Xdotest
:so small.vim
"test.ok" 111 lines, 2304 characters

"test.out" [New File] 111 lines, 2304 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test15 = test61; then \
#	  if diff test.out test15.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test15.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test15.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test19.failed test.ok test.out X* viminfo
cp test19.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test19.in
[?1h="test19.in" 33 lines, 692 charactersTests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set.
Also test that dv_ works correctly

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=^Vx7f t_kb=^Vx08
/some
r:set noexpandtab
/other
r
:" Test replacing with Tabs and then backspacing to undo it
0wR^H^H^H^[
:" Test replacing with Tabs
0wR^[
:" Test that copyindent works with expandtab set
:set expandtab smartindent copyindent ts=8 sw=8 sts=8
o{
x^[:set nosol
/Second line/
fwdv_:?^start?,$w! test.out
:qa!:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 19 lines, 447 characters written:set ff& cpo+=A
/ENDTEST
ENDTEST

:so! Xdotest
:so small.vim
"test.ok" 10 lines, 121 characters

"test.out" [New File] 10 lines, 121 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test19 = test61; then \
#	  if diff test.out test19.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test19.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test19.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test20.failed test.ok test.out X* viminfo
cp test20.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test20.in
[?1h="test20.in" 28 lines, 398 charactersTests Blockwise Visual when there are TABs before the text.
First test for undo working properly when executing commands from a register.
Also test this in an empty buffer.

STARTTEST
:so tiny.vim
G0"ay$k@au
:new
@auY:quit!
GP
/start here$
"by$^Vjjlld
/456$
^Vjj"bP
:/56$/,$-1w! test.out
:qa!
ENDTEST

123456
234567
345678

test text test tex start here:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests Blockwise Visual when there are TABs before the text./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 11 lines, 107 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so tiny.vim





some texttest text
test text

Ox^[jAy^[kddx
yy
Ox^[jAy^[kdd

2 changes; before #1  0 seconds ago
:new
~~~~~~~~~~
[No Name]                                                                       123456
234567
345678test text test tex start here
                some texttest
test textOx^[jAy^[kdd
test20.in                                                                       x[+]
y
~1 line less; before #1  0 seconds ago   :quit!
:so tiny.vim
G0"ay$k@au
:new
@auY:quit!
GP
/start here$
"by$^Vjjlld
/456$
^Vjj"bP
:/56$/,$-1w! test.out
:qa!
ENDTEST123456
234567
345678test text test tex start heresome
         test text
test textOx^[jAy^[kdd
Ox^[jAy^[kdd
/start here$
search hit BOTTOM, continuing at TOPset tat rt hereextex/456$
search hit BOTTOM, continuing at TOP4
2345
345start here56
234start here67
345start here78:/56$/,$-1w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 10 lines, 106 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test20 = test61; then \
#	  if diff test.out test20.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test20.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test20.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test22.failed test.ok test.out X* viminfo
cp test22.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test22.in
[?1h="test22.in" 13 lines, 197 charactersTests for file with some lines ending in CTRL-M, some not^M
^M
STARTTEST
:set ta tx
:e!
:$-3,$w! test.out
:qa!
ENDTEST

this lines ends in a^M
this one doesn't
this one does^M
and the last one doesn't
~
~
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for file with some lines ending in CTRL-M, some not^M/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 4 lines, 38 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:set ta tx
:e!
"test22.in" 13 lines, 197 characters:$-3,$w! test.out
"test.out" [New File] 4 lines, 79 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test22 = test61; then \
#	  if diff test.out test22.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test22.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test22.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test23.failed test.ok test.out X* viminfo
cp test23.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/userfunc.o userfunc.c
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test23.in
[?1h="test23.in" 15 lines, 282 charactersTests for complicated + argument to :edit command

STARTTEST
:$-1w! Xfile1
:$w! Xfile2
:edit +1|s/|/PIPE/|w Xfile1| e Xfile2|1 | s/\//SLASH/|w
:w! test.out
:e Xfile1
:w >> test.out
:qa!
ENDTEST

The result should be in Xfile1: "fooPIPEbar", in Xfile2: "fooSLASHbar"
foo|bar
foo/bar
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for complicated + argument to :edit command/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 7 lines, 125 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:$-1w! Xfile1
"Xfile1" [New File] 1 line, 8 characters written:$w! Xfile2
"Xfile2" [New File] 1 line, 8 characters written:edit +1|s/|/PIPE/|w Xfile1| e Xfile2|1 | s/\//SLASH/|w
"Xfile1" 1 line, 8 characters

foo|bar

"Xfile1" 1 line, 11 characters written

"Xfile2" 1 line, 8 characters

foo/bar

"Xfile2" 1 line, 12 characters written

Press ENTER or type command to continue:w! test.out
"test.out" [New File] 1 line, 12 characters written

Press ENTER or type command to continue:e Xfile1
"Xfile1" 1 line, 11 charactersfooPIPEbar
~
~
~
~
~
~~~~~
~~~~"Xfile1" 1 line, 11 characters:w >> test.out
"test.out" 1 line, 11 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test23 = test61; then \
#	  if diff test.out test23.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test23.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test23.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test24.failed test.ok test.out X* viminfo
cp test24.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test24.in
[?1h="test24.in" 89 lines, 1301 charactersTests for regexp with backslash and other special characters inside []
Also test backslash for hex/octal numbered character.

STARTTEST
:set nocompatible viminfo+=nviminfo
/[\x]
x/[\t\]]
x/[]y]
x/[\]]
x/[y^]
x/[$y]
x/[\x61]
x/[\x60-\x64]
xj0/[\x785]
x/[\o143]
x/[\o140-\o144]
x/[\o417]
x/\%x42
x/\%o103
x/[\x00]
x
:s/[\x00-\x10]//g:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with backslash and other special characters inside []/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 51 lines, 519 characters written:set ff& cpo+=A
/ENDTEST:s/^\(\h\w*\%(->\|\.\)\=\)\+=/YY/

:s/aaa/xyz/

:s/~/bcd/

:s/~\+/BB/
:"
:?start?,$w! test.out
:qa!
ENDTEST

start
test \text test text
test    text test text
test text ]test text
test ]text test text
test text te^st text
test te$xt test text
test taext test text  x61
test tbext test text  x60-x64
test 5text test text  x78 5
:so! Xdotest
:set nocompatible viminfo+=nviminfo
/[\x]
text test text/[\t\]]
text test tex/[]y]
test text/[\]]
text test text/[y^]
st text/[$y]
xt test text/[\x61]
ext test text  x61/[\x60-\x64]
ext test text  x60-x64
/[\x785]
text test text  x78 5/[\o143]

testc text test text  o143 text test text  o143
/[\o140-\o144]

tesdt text test text  o140-o144t text test text  o140-o14
/[\o417]

test7 text test text  o41 7 text test text  o41 7
/\%x42

test text tBest text  \%x42est text  \%x42
/\%o103

test text teCst text  \%o103st text  \%o103
/[\x00]

test text ^@test text  [\x00]test text  [\x00]
test te^@xt t^Dest t^Pext  [\x00-\x10]
:s/[\x00-\x10]//g
3 substitutions on 1 linext test text  [\x00-\x10]
test \xyztext test text  [\x-z]
:s/[\x-z]\+//
text test text  [\x-z]
test text tev\uyst text  [\u-z]
:s/[\u-z]\{2,}//
st text  [\u-z]
xx aaaaa xx a
:s/\(a\)\+//
 xx 
xx aaaaa xx a
:s/\(a*\)\+//

xx aaaaa xx a
:s/\(a*\)*//

xx aaaaa xx
:s/\(a\)\{2,3}/A/
Aaa xx
xx aaaaa xx
:s/\(a\)\{-2,3}/A/
Aaaa x
xx aaa12aa xx
:s/\(a\)*\(12\)\@>/A/
Aaa xx
xx foobar xbar xx
:s/\(foo\)\@<!bar/A/
A xx
xx an file xx
:s/\(an\_s\+\)\@<=file/A/
A xx
x= 9;
:s/^\(\h\w*\%(->\|\.\)\=\)\+=/XX/
XX

hh= 77;
:s/^\(\h\w*\%(->\|\.\)\=\)\+=/YY/
YY 77;
aaa
:s/aaa/xyz/
xyz
 
xyz
:s/~/bcd/
bcd
 
bcdbcdbcd
:s/~\+/BB/
BB:"
:?start?,$w! test.out
"test.out" [New] 32L, 586C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test24 = test61; then \
#	  if diff test.out test24.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test24.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test24.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test26.failed test.ok test.out X* viminfo
cp test26.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test26.in
[?1h="test26.in" 44 lines, 750 charactersTest for :execute, :while and :if

STARTTEST
:so small.vim
mt:let i = 0
:while i < 12
:  let i = i + 1
:  if has("ebcdic")
:    execute "normal o" . i . "\047"
:  else
:    execute "normal o" . i . "\033"
:  endif
:  if i % 2
:    normal Ax^V^[
:    if i == 9
:      break
:    endif
:    if i == 5
:      continue
:    else
:      let j = 9
:      while j > 0
:if has("ebcdic"):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for :execute, :while and :if/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 39 lines, 696 characters written:set ff& cpo+=A
/ENDTEST:      let j = 9
:      while j > 0
:if has("ebcdic")
:execute "normal" j . "a" . j . "\x27"
:else
:execute "normal" j . "a" . j . "\x1b"
:endif
:let j = j - 1
:      endwhile
:    endif
:  endif
:  if i == 9
:    if has("ebcdic")
:      execute "normal Az\047"
:    else
:      execute "normal Az\033"
:    endif
:  endif
:endwhile
:unlet i j
:'t,$w! test.out
:qa!
ENDTEST


:so! Xdotest
:so small.vim
"test.ok" 10 lines, 159 characters

"test.out" [New File] 10 lines, 159 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test26 = test61; then \
#	  if diff test.out test26.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test26.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test26.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test28.failed test.ok test.out X* viminfo
cp test28.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test28.in
[?1h="test28.in" 23 lines, 364 charactersTest for sourcing a file with CTRL-V's at the end of the line

STARTTEST
:/firstline/+1,/lastline/-1w! Xtestfile
:so Xtestfile
Gmm__1^[^[__2^[__3^[^[__4^[__5^[:'m,$s/^@/0/g
:'m,$w! test.out
:qa!
ENDTEST

firstline
map __1 afirst
map __2 asecond
map __3 athird
map __4 afourth
map __5 afifth
map __1 asd^V
map __2 asd^V^V
map __3 asd^V^V
map __4 asd^V^V^V
map __5 asd^V^V^V
lastline:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for sourcing a file with CTRL-V's at the end of the line/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 114 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:/firstline/+1,/lastline/-1w! Xtestfile
"Xtestfile" [New File] 10 lines, 148 characters written:so Xtestfile

sd
map __2 asd^[seconddsd^[gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/blowfish.o blowfish.c
sd^@map __5 asd^@fifth
:'m,$s/^@/0/g
0map __5 asd0fifth:'m,$w! test.out
"test.out" [New File] 2 lines, 45 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test28 = test61; then \
#	  if diff test.out test28.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test28.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test28.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test29.failed test.ok test.out X* viminfo
cp test29.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test29.in
[?1h="test29.in" 230 lines, 4261 charactersTest for joining lines and marks in them
 in compatible and nocompatible modes
 and with 'joinspaces' set or not
 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+=jj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces
j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptionss+=j
j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible
j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjd/STARTTEST/-2
ENDTEST

firstline
asdfasdf.
asdf:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for joining lines and marks in them/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 11 lines, 478 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
"test.ok" 97 lines, 3018 characters

"test.out" [New File] 97 lines, 3018 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test29 = test61; then \
#	  if diff test.out test29.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test29.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test29.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test31.failed test.ok test.out X* viminfo
cp test31.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test31.in
[?1h="test31.in" 95 lines, 1832 charactersTest for commands that close windows and/or buffers:
:quit
:close
:hide
:only
:sall
:all
:ball
:buf
:edit

STARTTEST
:so small.vim
GA 1^[:$w! Xtest1
$r2:$w! Xtest2
$r3:$w! Xtest3
:n! Xtest1 Xtest2
A 1^[:set hidden
:" test for working :n when hidden set; write "testtext 2"
:n
:w! test.out
:" test for failing :rew when hidden not set; write "testtext 2 2"
:set nohidden:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for commands that close windows and/or buffers:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 80 lines, 1697 characters written:set ff& cpo+=A
/ENDTEST:" test ":q!" and hidden buffer.
:bw! Xtest1 Xtest2 Xtest3 Xtest4
:sp Xtest1
:wincmd w
:bw!
:set modified
:bot sp Xtest2
:set modified
:bot sp Xtest3
:set modified
:wincmd t
:hide
:q!
:w >>test.out
:q!
:w >>test.out
:q!
:call append(line('$'), "Oh, Not finished yet.")
:w >>test.out
:qa!
ENDTEST

testtext


:so! Xdotest
:so small.vim
"test.ok" 14 lines, 176 characters

"test.out" [New File] 14 lines, 176 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test31 = test61; then \
#	  if diff test.out test31.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test31.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test31.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test33.failed test.ok test.out X* viminfo
cp test33.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test33.in
[?1h="test33.in" 34 lines, 616 charactersTest for 'lisp'
If the lisp feature is not enabled, this will fail!

STARTTEST
:so small.vim
:set lisp
/^(defun
=G:/^(defun/,$w! test.out
:q!
ENDTEST

(defun html-file (base)
(format nil "~(~A~).html" base))

(defmacro page (name title &rest body)
(let ((ti (gensym)))
`(with-open-file (*standard-output*
(html-file ,name)
:direction :output
:if-exists :supersede)
(let ((,ti ,title))
(as title ,ti)
(with center:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for 'lisp'/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 63 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
"test.ok" 23 lines, 544 characters

"test.out" [New File] 23 lines, 544 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test33 = test61; then \
#	  if diff test.out test33.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test33.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test33.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test34.failed test.ok test.out X* viminfo
cp test34.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test34.in
[?1h="test34.in" 87 lines, 1833 charactersTest for user functions.
Also test an <expr> mapping calling a function.
Also test that a builtin function cannot be replaced.
Also test for regression when calling arbitrary expression.

STARTTEST
:so small.vim
:function Table(title, ...)
:  let ret = a:title
:  let idx = 1
:  while idx <= a:0
:    exe "let ret = ret . a:" . idx
:    let idx = idx + 1
:  endwhile
:  return ret
:endfunction
:function Compute(n1, n2, divname)
:  if a:n2 == 0
:    return "fail"
:  endif
:  exe "let g:" . a:divname . " = ". a:n1 / a:n2
:  return "ok"
:endfunction:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for user functions./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 78 lines, 1621 characters written:set ff& cpo+=A
/ENDTEST:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?
:    " Second is here just to prove that this line is correct when not skipping
:    " rhs of &&.
:    $put =(0&&(function('tr'))(1, 2, 3))
:    $put =(1&&(function('tr'))(1, 2, 3))
:catch
:    $put ='!!! Unexpected exception:'
:    $put =v:exception
:endtry
:$-9,$w! test.out
:delfunc Table
:delfunc Compute
:delfunc Expr1
:delfunc Expr2
:delfunc ListItem
:delfunc ListReset
:unlet retval counter
:q!
ENDTEST

here


:so! Xdotest
:so small.vim
"test.ok" 10 lines, 81 characters

"test.out" [New File] 10 lines, 81 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test34 = test61; then \
#	  if diff test.out test34.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test34.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test34.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test36.failed test.ok test.out X* viminfo
cp test36.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test36.in
[?1h="test36.in" 108 lines, 2025 charactersTest character classes in regexp using regexpengine 0, 1, 2.

STARTTEST
/^start-here/+1
Y:s/\%#=0\d//g
p:s/\%#=1\d//g
p:s/\%#=2\d//g
p:s/\%#=0[0-9]//g
p:s/\%#=1[0-9]//g
p:s/\%#=2[0-9]//g
p:s/\%#=0\D//g
p:s/\%#=1\D//g
p:s/\%#=2\D//g
p:s/\%#=0[^0-9]//g
p:s/\%#=1[^0-9]//g
p:s/\%#=2[^0-9]//g
p:s/\%#=0\o//g
p:s/\%#=1\o//g
p:s/\%#=2\o//g
p:s/\%#=0[0-7]//g
p:s/\%#=1[0-7]//g
p:s/\%#=2[0-7]//g
p:s/\%#=0\O//g:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test character classes in regexp using regexpengine 0, 1, 2./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 101 lines, 1850 characters written:set ff& cpo+=A
/ENDTESTp:s/\%#=1[^a-z]//g
p:s/\%#=2[^a-z]//g
p:s/\%#=0\u//g
p:s/\%#=1\u//g
p:s/\%#=2\u//g
p:s/\%#=0[A-Z]//g
p:s/\%#=1[A-Z]//g
p:s/\%#=2[A-Z]//g
p:s/\%#=0\U//g
p:s/\%#=1\U//g
p:s/\%#=2\U//g
p:s/\%#=0[^A-Z]//g
p:s/\%#=1[^A-Z]//g
p:s/\%#=2[^A-Z]//g
p:s/\%#=0\%204l^\t...//g
p:s/\%#=1\%205l^\t...//g
p:s/\%#=2\%206l^\t...//g
:/^start-here/+1,$wq! test.out
ENDTEST













:s/\%#=0\D//g
72 substitutions on 1 line0123456789~

:s/\%#=1\D//g
72 substitutions on 1 line0123456789~

:s/\%#=2\D//g
72 substitutions on 1 line0123456789~

:s/\%#=0[^0-9]//g
72 substitutions on 1 line0123456789~

:s/\%#=1[^0-9]//g
72 substitutions on 1 line0123456789~

:s/\%#=2[^0-9]//g
72 substitutions on 1 line0123456789~





~



~



~



~



~


:s/\%#=0\O//g
74 substitutions on 1 line01234567~

~


:s/\%#=2\O//g
74 substitutions on 1 line01234567~

:s/\%#=1[^0-7]//g
74 substitutions on 1 line01234567~

:s/\%#=2[^0-7]//g
74 substitutions on 1 line01234567~





~



~


:s/\%#=0\X//g
60 substitutions on 1 line0123456789ABCDEFabcdef~

~


:s/\%#=2\X//g
60 substitutions on 1 line0123456789ABCDEFabcdef~

~


:s/\%#=1[^0-9A-Fa-f]//g
60 substitutions on 1 line0123456789ABCDEFabcdef~

~



~





:s/\%#=0\W//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1\W//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2\W//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=0[^0-9A-Za-z_]//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1[^0-9A-Za-z_]//ggcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/charset.o charset.c

46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2[^0-9A-Za-z_]//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~







:s/\%#=0\H//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1\H//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2\H//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=0[^A-Za-z_]//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1[^A-Za-z_]//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2[^A-Za-z_]//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~







:s/\%#=0\A//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=1\A//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=2\A//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=0[^A-Za-z]//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=1[^A-Za-z]//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=2[^A-Za-z]//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~













:s/\%#=0\L//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=1\L//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=2\L//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=0[^a-z]//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=1[^a-z]//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=2[^a-z]//g
69 substitutions on 1 lineabcdefghiwxyz~





~



~



~



~



~


:s/\%#=0\U//g
70 substitutions on 1 lineABCDEFGHIXYZ~

~


:s/\%#=2\U//g
70 substitutions on 1 lineABCDEFGHIXYZ~

:s/\%#=1[^A-Z]//g
70 substitutions on 1 lineABCDEFGHIXYZ~

:s/\%#=2[^A-Z]//g
70 substitutions on 1 lineABCDEFGHIXYZ~





~


# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test36 = test61; then \
#	  if diff test.out test36.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test36.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test36.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test37.failed test.ok test.out X* viminfo
cp test37.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test37.in
[?1h="test37.in" 116 lines, 3262 charactersTest for 'scrollbind'. <eralston@computer.org>   Do not add a line below!
STARTTEST
:so small.vim
:set noscrollbind
:set scrollopt=ver,jump
:set scrolloff=2
:set nowrap
:set noequalalways
:set splitbelow
:" TEST using two windows open to one buffer, one extra empty window
:split
:new
^Wt:
:resize 8
/^start of window 1$/
zt:
:set scrollbind
^Wj:
:resize 7
/^start of window 2$/
zt:
:set scrollbind
:" -- start of tests --:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for 'scrollbind'. <eralston@computer.org>   Do not add a line below!/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 72 lines, 1498 characters written:set ff& cpo+=A
/ENDTESTHk^WtH^WjHyy^Wbp^Wtyy^Wbp:
^Wt:set noscb
ggL^Wj:set noscb
ggL:set scb
^Wt:set scb
^WtG^WjG^Wt:syncbind
Hk^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:
^WtH3k^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:
:" ***** done with tests *****
:w! test.out" Write contents of this file
:qa!
ENDTEST


start of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03
. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08
:so! Xdotest
:so small.vim
"test.ok" 33 lines, 1329 characters

"test.out" [New File] 33 lines, 1329 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test37 = test61; then \
#	  if diff test.out test37.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test37.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test37.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test38.failed test.ok test.out X* viminfo
cp test38.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test38.in
[?1h="test38.in" 35 lines, 455 charactersTest Virtual replace mode.

STARTTEST
:so small.vim
:" make sure that backspace works, no matter what termcap is used
:set t_kD=^Vx7f t_kb=^Vx08
ggdGa
abcdefghi
jk      lmn
    opq rst
^Duvwxyz
^[gg:set ai
:set bs=2
gR0^D 1
A
BCDEFGHIJKL
MNO
PQR^[G:ka
o0^D
abcdefghi
jk      lmn:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 29 lines, 407 characters written:set ff& cpo+=A
/ENDTEST










opq rst
^Duvwxyz
^['ajgR0^D 1
A
BCDEFGHIJKL
MNO
PQR^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^[:$
iab     cdefghi jkl^[0gRAB......CDEFGHI.J^[o^[:
iabcdefghijklmnopqrst^[0gRAB    IJKLMNO QR^[:wq! test.out
ENDTEST

:so! Xdotest
:so small.vim
"test.ok" 13 lines, 107 characters

"test.out" [New File] 13 lines, 107 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test38 = test61; then \
#	  if diff test.out test38.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test38.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test38.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test39.failed test.ok test.out X* viminfo
cp test39.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test39.in
[?1h="test39.in" 118 lines, 2435 charactersTest Visual block mode commands
And test "U" in Visual mode, also on German sharp S.

#define BO_ALL      0x0001
#define BO_BS0x0002
#define BO_CRSR     0x0004

STARTTEST
:so small.vim
:so mbyte.vim
:" This only works when 'encoding' is "latin1", don't depend on the environment
:set enc=latin1
/^abcde
:" Test shift-right of a block
jllll^Vjj>wll^Vjlll>
:" Test shift-left of a block
G$hhhh^Vkk<
:" Test block-insert
Gkl^VkkkIxyz^[
:" Test block-replace
Gllll^Vkkklllrq
:" Test block-change:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 75 lines, 2061 characters written:set ff& cpo+=A
/ENDTEST:exe ":norm! 2k\<C-V>$gj\<Esc>"
:let cpos=getpos("'>")
:$put ='col:'.cpos[2].' off:'.cpos[3]
:"
:" block_insert when replacing spaces in front of the block with tabs
:set ts=8 sts=4 sw=4
:4,7y
Gp
:exe ":norm! f0\<C-V>2jI\<tab>\<esc>"
:/^the/,$w >> test.out
:qa!
ENDTESTline1line2line3

aaaaaa
bbbbbb
cccccc
dddddd

xaaa
:so! Xdotest
:so small.vim
"test.ok" 63 lines, 662 characters

"test.out" [New File] 63 lines, 662 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test39 = test61; then \
#	  if diff test.out test39.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test39.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test39.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test40.failed test.ok test.out X* viminfo
cp test40.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test40.in
[?1h="test40.in" 63 lines, 1536 charactersTest for "*Cmd" autocommands

STARTTEST
:so small.vim
:/^start/,$w! Xxx" write lines below to Xxx
:au BufReadCmd XtestA 0r Xxx|$del
:e XtestA" will read text of Xxd instead
:au BufWriteCmd XtestA call append(line("$"), "write")
:w" will append a line to the file
:r XtestA" should not read anything
:" now we have:
:" 1     start of Xxx
:" 2test40
:" 3     end of Xxx
:" 4     write
:au FileReadCmd XtestB '[r Xxx
:2r XtestB" will read Xxx below line 2 instead
:" 1     start of Xxx
:" 2test40
:" 3     start of Xxx
:" 4test40
:" 5     end of Xxx
:" 6     end of Xxx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for "*Cmd" autocommands/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 55 lines, 1455 characters written:set ff& cpo+=A
/ENDTEST:$w >>test.out" append "end of Xxx" to test.out
:au BufReadCmd XtestE 0r test.out|$del
:sp XtestE" split window with test.out
5Goasdf^[^W^W:"
:au BufWriteCmd XtestE w! test.out
:wall" will write other window to test.out
:" 1     start of Xxx
:" 2test40
:" 3     start of Xxx
:" 4test401
:" 5     end of Xxx
:" 6     asdf
:" 7     end of Xxx
:" 8     write
:" 9test401
:" 10    end of Xxx
:" 11    end of Xxx
:qa!
ENDTEST

start of Xxxtest40
end of Xxx
:so! Xdotest
:so small.vim
"test.ok" 11 lines, 107 characters

"test.out" [New File] 11 lines, 107 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test40 = test61; then \
#	  if diff test.out test40.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test40.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test40.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test41.failed test.ok test.out X* viminfo
cp test41.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test41.in
[?1h="test41.in" 24 lines, 421 charactersTest for writing and reading a file of over 100 Kbyte

1 line: "This is the start"
3001 lines: "This is the leader"
1 line: "This is the middle"
3001 lines: "This is the trailer"
1 line: "This is the end"

STARTTEST
:%d
aThis is the start
This is the leader
This is the middle
This is the trailer
This is the end^[kY3000p2GY3000p
:w! Xtest
:%d
:e! Xtest
:.w! test.out
3003G:.w >>test.out
6005G:.w >>test.out
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for writing and reading a file of over 100 Kbyte/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 13 lines, 196 characters written:set ff& cpo+=A
/ENDTEST

:so! Xdotest
:%d
~~~~~
~~~~~~~~~~~~~~~~
~
--No lines in buffer--This is the start
This is the leader
This is the middle
This is the trailer
This is the end3000 more linestrailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailerleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleader
:w! Xtest
"Xtest" [New File] 6005 lines, 117092 characters written:%d
~~~~~~~~~~~~~~~~~~~~~~
--No lines in buffer--:e! Xtest
"Xtest" 6005 lines, 117092 charactersThis is the start
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader:.w! test.out
"test.out" [New File] 1 line, 18 characters writtenThis is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the middle
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer:.w >>test.out
"test.out" 1 line, 19 characters appendedThis is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the end

:.w >>test.out
"test.out" 1 line, 16 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test41 = test61; then \
#	  if diff test.out test41.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test41.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test41.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test42.failed test.ok test.out X* viminfo
cp test42.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test42.in
[?1h="test42.in" 130 lines, 2368 charactersTest for writing and reading a file starting with a BOM

STARTTEST
:so mbyte.vim
:set encoding=utf-8
:set fileencodings=ucs-bom,latin-1
:set ff=unix ffs=unix" This changes the file for DOS and MAC
:" --- Write the test files
:/^latin-1$/+1w! Xtest0
:/^utf-8$/+1w! Xtest1
:/^utf-8-err$/+1w! Xtest2
:/^ucs-2$/+1w! Xtest3
:/^ucs-2le$/+1w! Xtest4
:" Need to add a NUL byte after the NL byte
:set bin
:e! Xtest4" Ignore change from setting 'ff'
o^V^@^[:set noeol
:w
:set ffs& nobinary" Allow default test42.in format
:e #
:set ff=unix" Format for files to write
:/^ucs-4$/+1w! Xtest5
:/^ucs-4le$/+1w! Xtest6:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for writing and reading a file starting with a BOM/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 111 lines, 2116 characters written:set ff& cpo+=A
/ENDTEST:e! test.out
:$r Xtest0x
:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&" Write the file in default format
:w! test.out
:qa!
ENDTEST

latin-1
utf-8
utf-8
utf-8-err
utf-8~@err
ucs-2
ucs-2le
:so! Xdotest
:so mbyte.vim
"test.ok" 44 lines, 409 characters

"test.out" [New File] 44 lines, 409 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test42 = test61; then \
#	  if diff test.out test42.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test42.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test42.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test43.failed test.ok test.out X* viminfo
cp test43.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test43.in
[?1h="test43.in" 34 lines, 473 charactersTests for regexp with various magic settings.

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo
/^1
/a*b\{2}c\+/e
x/\Md\*e\{2}f\+/e
x:set nomagic
/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$
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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with various magic settings./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 19 lines, 268 characters written:set ff& cpo+=A
/ENDTEST

:so! Xdotest
:so small.vim
"test.ok" 11 lines, 137 characters

"test.out" [New File] 11 lines, 137 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test43 = test61; then \
#	  if diff test.out test43.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test43.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test43.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test44.failed test.ok test.out X* viminfo
cp test44.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test44.in
[?1h="test44.in" 81 lines, 1492 charactersTests for regexp with multi-byte encoding and various magic settings.
Test matchstr() with a count and multi-byte chars.
See test99 for exactly the same test with re=2.

STARTTEST
:so mbyte.vim
:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
:set re=1
/^1
/a*b\{2}c\+/e
x/\Md\*e\{2}f\+/e
x:set nomagic
/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$
x:set magic
/\v(a)(b)\2\1\1/e
x/\V[ab]\(\[xy]\)\1
x:" Now search for multi-byte without composing char
/ม
x:" Now search for multi-byte with composing char
f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with multi-byte encoding and various magic settings./^STARTTEST

:new
:$put =['dog(a', 'cat(']
/(/e+
"ayn:bd!
:$put =''
G"ap
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
:so! Xdotest
:so mbyte.vim
"test.ok" 25 lines, 271 characters

"test.out" [New File] 25 lines, 271 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test44 = test61; then \
#	  if diff test.out test44.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test44.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test44.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test45.failed test.ok test.out X* viminfo
cp test45.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test45.in
[?1h="test45.in" 90 lines, 1953 charactersTests for folding. vim: set ft=vim :

STARTTEST
:so small.vim
:" We also need the +syntax feature here.
:if !has("syntax")
   e! test.ok
   w! test.out
   qa!
:endif
:" basic test if a fold can be created, opened, moving to the end and closed
/^1
zf2j:call append("$", "manual " . getline(foldclosed(".")))
zo:call append("$", foldclosed("."))
]z:call append("$", getline("."))
zc:call append("$", getline(foldclosed(".")))
:" test folding with markers.
:set fdm=marker fdl=1 fdc=3
/^5
:call append("$", "marker " . foldlevel("."))
[z:call append("$", foldlevel("."))
jo{{ ^[r{jj:call append("$", foldlevel("."))
kYpj:call append("$", foldlevel(".")):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for folding. vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 73 lines, 1820 characters written:set ff& cpo+=A
/ENDTEST:new
iTest fdm=indent and :move bug END
line2Test fdm=indent STARTline3line4^[
:set fdm=indent
:1m1
2jzc:m0
:%w >> test.out
:qa!
ENDTEST

1 aa
2 bb
3 cc
4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg
8 hh
9 ii
a jj
:so! Xdotest
:so small.vim
"test.ok" 23 lines, 173 characters

"test.out" [New File] 23 lines, 173 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test45 = test61; then \
#	  if diff test.out test45.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test45.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test45.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test48.failed test.ok test.out X* viminfo
cp test48.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test48.in
[?1h="test48.in" 83 lines, 1658 charactersThis is a test of 'virtualedit'.

STARTTEST
:so small.vim
:set noswf
:set ve=all
-dgg
:"
:"   Insert "keyword keyw", ESC, C CTRL-N, shows "keyword ykeyword".
:"    Repeating CTRL-N fixes it. (Mary Ellen Foster)
2/w
C^N^[
:"
:"   Using "C" then then <CR> moves the last remaining character to the next
:"    line.  (Mary Ellen Foster)
j^/are
C^Mare belong to vim^[
:"
:"   When past the end of a line that ends in a single character "b" skips
:"    that word.
^$15lbC7^[
:"
:"   Make sure 'i' works:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
This is a test of 'virtualedit'./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 61 lines, 1442 characters written:set ff& cpo+=A
/ENDTEST:set display=
:"
:"   Test for ^Y/^E due to bad w_virtcol value, reported by
:"   Roy <royl@netropolis.net>.
^O^[3li^E^[4li^E^[4li^E   <-- should show the name of a noted text editor^[
^o^[4li^Y^[4li^Y^[4li^Y   <-- and its version number^[-dd
:"
:" Test for yanking and pasting using the small delete register
gg/^foo
dewve"-p
:wq! test.out
ENDTEST
foo, bar
keyword keyw
all your base are belong to us
1 2 3 4 5 6
'i'
'C'
'a'
'A'
'D'
this is a test
this is a test
:so! Xdotest
:so small.vim
"test.ok" 23 lines, 479 characters

"test.out" [New File] 23 lines, 479 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test48 = test61; then \
#	  if diff test.out test48.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test48.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test48.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test51.failed test.ok test.out X* viminfo
cp test51.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test51.in
[?1h="test51.in" 36 lines, 808 charactersTests for ":highlight". vim: set ft=vim :

STARTTEST
:so small.vim
:" basic test if ":highlight" doesn't crash
:highlight
:hi Search
:" test setting colors.
:" test clearing one color and all doesn't generate error or warning
:hi NewGroup term=bold cterm=italic ctermfg=DarkBlue ctermbg=Grey gui= guifg=#000ff00 guibg=Cyan
:hi Group2 term= cterm=
:hi Group3 term=underline cterm=bold
:redir! >test.out
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group2 NONE
:hi Group2
:hi clear:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for ":highlight". vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/gui.o gui.c
[New File] 31 lines, 746 characters written:set ff& cpo+=A
/ENDTEST












:hi Group3
:hi Crash term='asdf
:redir END
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
:%s/ctermfg=\d*/ctermfg=2/
:%s/ctermbg=\d*/ctermbg=3/
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
:" fix the fileformat
:set ff&
:wq!
ENDTEST

:so! Xdotest
:so small.vim
"test.ok" 20 lines, 271 characters

"test.out" [New File] 20 lines, 271 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test51 = test61; then \
#	  if diff test.out test51.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test51.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test51.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test53.failed test.ok test.out X* viminfo
cp test53.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test53.in
[?1h="test53.in" 75 lines, 1763 charactersTests for string and html text objects. vim: set ft=vim :

Note that the end-of-line moves the cursor to the next test line.

Also test match() and matchstr()

STARTTEST
:so small.vim
/^start:/
da"
0va'a'rx
02f`da`
0fXdi"
03f'vi'ry
:set quoteescape=+*-
di`
$F"va"oha"i"rz
:"
/^<begin
jfXdit
0fXdit
fXdat
0fXdat:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for string and html text objects. vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 47 lines, 1237 characters written:set ff& cpo+=A
/ENDTEST:put =match('abc', '$', 4, 1) " -1
:put =match('abc', '\zs', 0, 1) " 0
:put =match('abc', '\zs', 0, 2) " 1
:put =match('abc', '\zs', 0, 3) " 2
:put =match('abc', '\zs', 0, 4) " 3
:put =match('abc', '\zs', 0, 5) " -1
:put =match('abc', '\zs', 1, 1) " 1
:put =match('abc', '\zs', 2, 1) " 2
:put =match('abc', '\zs', 3, 1) " 3
:put =match('abc', '\zs', 4, 1) " -1
:/^start:/,/^end:/wq! test.out
ENDTEST

start: "wo\"rd\\" foo
'foo' 'bar' 'piep'
bla bla `quote` blah
out " in "noXno"
"'" 'blah' rep 'buh'
bla `s*`d-`+++`l**` b`la
voo "nah" sdf " asdf" sdf " sdf" sd

<begin>
-<b>asdf<i>Xasdf</i>asdf</b>-
:so! Xdotest
:so small.vim
"test.ok" 45 lines, 284 characters

"test.out" [New File] 45 lines, 284 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test53 = test61; then \
#	  if diff test.out test53.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test53.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test53.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test55.failed test.ok test.out X* viminfo
cp test55.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/crypt.o crypt.c
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test55.in
[?1h="test55.in" 586 lines, 12256 charactersTests for List and Dictionary types.     vim: set ft=vim :

STARTTEST
:so small.vim
:fun Test(...)
:lang C
:" Creating List directly with different types
:let l = [1, 'as''d', [1, 2, function("strlen")], {'a': 1},]
:$put =string(l)
:$put =string(l[-1])
:$put =string(l[-4])
:try
:  $put =string(l[-5])
:catch
:  $put =v:exception[:14]
:endtry
:" List slices
:$put =string(l[:])
:$put =string(l[1:])
:$put =string(l[:-2])
:$put =string(l[0:8])
:$put =string(l[8:-1])
:":set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for List and Dictionary types.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 580 lines, 12170 characters written:set ff& cpo+=A
/ENDTEST:$put =string(l)
:endfun
:"
:call Test(1, 2, [3, 4], {5: 6})  " This may take a while
:"
:delfunc Test
: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^R=a^M^[:"
:lang C
:redir => a
:try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
:redir END
o^R=a^M^[:"
:"
:/^start:/,$wq! test.out
ENDTEST

start:


:so! Xdotest
:so small.vim
"test.ok" 197 lines, 3821 characters

"test.out" [New File] 197 lines, 3821 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test55 = test61; then \
#	  if diff test.out test55.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test55.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test55.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test56.failed test.ok test.out X* viminfo
cp test56.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test56.in
[?1h="test56.in" 21 lines, 457 charactersTest for script-local function.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:set nocp viminfo+=nviminfo
:/^start:/+1,/^end:/-1w! Xtest.vim
:source Xtest.vim
_x
:$-1,$wq! test.out
ENDTEST

start:
fun <SID>DoLast()
  call append(line('$'), "last line")
endfun
fun s:DoNothing()
  call append(line('$'), "nothing line")
endfun
nnoremap <buffer> _x    :call <SID>DoNothing()<bar>call <SID>DoLast()<bar>delfunnc <SID>DoNothing<bar>delfunc <SID>DoLast<cr>
end:
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for script-local function.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 7 lines, 120 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
"test.ok" 2 lines, 23 characters

"test.out" [New File] 2 lines, 23 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test56 = test61; then \
#	  if diff test.out test56.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test56.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test56.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test57.failed test.ok test.out X* viminfo
cp test57.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test57.in
[?1h="test57.in" 545 lines, 4110 charactersTests for :sort command.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:/^t01:/+1,/^t02/-1sort
:/^t02:/+1,/^t03/-1sort n
:/^t03:/+1,/^t04/-1sort x
:/^t04:/+1,/^t05/-1sort u
:/^t05:/+1,/^t06/-1sort!
:/^t06:/+1,/^t07/-1sort! n
:/^t07:/+1,/^t08/-1sort! u
:/^t08:/+1,/^t09/-1sort o
:/^t09:/+1,/^t10/-1sort! x
:/^t10:/+1,/^t11/-1sort/./
:/^t11:/+1,/^t12/-1sort/../
:/^t12:/+1,/^t13/-1sort/../u
:/^t13:/+1,/^t14/-1sort/./n
:/^t14:/+1,/^t15/-1sort/./r
:/^t15:/+1,/^t16/-1sort/../r
:/^t16:/+1,/^t17/-1sort/./rn
:/^t17:/+1,/^t18/-1sort/\d/
:/^t18:/+1,/^t19/-1sort/\d/r:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :sort command.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 33 lines, 920 characters written:set ff& cpo+=A
/ENDTEST:/^t21:/+1,/^t22/-1sort/\d\d/
:/^t22:/+1,/^t23/-1sort/\d\d/n
:/^t23:/+1,/^t24/-1sort/\d\d/x
:/^t24:/+1,/^t25/-1sort/\d\d/r
:/^t25:/+1,/^t26/-1sort/\d\d/rn
:/^t26:/+1,/^t27/-1sort/\d\d/rx
:/^t27:/+1,/^t28/-1sort no
:/^t28:/+1,/^t29/-1sort b
:/^t29:/+1,/^t30/-1sort b
:/^t30:/+1,/^t31/-1sort f
:/^t01:/,$wq! test.out
ENDTEST

t01: alphebetical
abc
ab
a
a321
a123
a122
b321
b123
c123d
:so! Xdotest
:so small.vim
"test.ok" 501 lines, 3105 characters

"test.out" [New File] 501 lines, 3105 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test57 = test61; then \
#	  if diff test.out test57.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test57.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test57.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test60.failed test.ok test.out X* viminfo
cp test60.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test60.in
[?1h="test60.in" 601 lines, 13116 charactersTests for the exists() and has() functions.  vim: set ft=vim ts=8 sw=2 :

STARTTEST
:so small.vim
:function! RunTest(str, result)
    if exists(a:str) == a:resultecho "OK"
    elseecho "FAILED: Checking for " . a:str
    endif
endfunction
:function! TestExists()
    augroup myagroupautocmd! BufEnter*.my     echo "myfile edited"autocmd! FuncUndefined  UndefFun exec "fu UndefFun()\nendfu"
    augroup END
    set rtp+=./sautestlet test_cases = []" valid autocmd group
    let test_cases += [['#myagroup', 1]]
    " valid autocmd group with garbage:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for the exists() and has() functions.  vim: set ft=vim ts=8 sw=2 :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 596 lines, 13023 characters written:set ff& cpo+=A
/ENDTESTendif
    endfunctioncall TestFuncArg("arg1", "arg2")echo ' g:footest#x =' g:footest#x
    echo '   footest#F()' footest#F()
    echo 'UndefFun()' UndefFun()redir END
endfunction
:call TestExists()
:"
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
:while getchar(1) | call getchar() | endwhile
ENDTEST


:so! Xdotest
:so small.vim
"test.ok" 206 lines, 1941 characters

"test.out" [New File] 206 lines, 1941 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test60 = test61; then \
#	  if diff test.out test60.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test60.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test60.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test64.failed test.ok test.out X* viminfo
cp test64.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test64.in
[?1h="test64.in" 654 lines, 27565 charactersTest for regexp patterns without multi-byte support.
See test95 for multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:":set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for regexp patterns without multi-byte support./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 621 lines, 27090 characters written:set ff& cpo+=A
/ENDTEST:for pat in [' \ze*', ' \zs*']
:  try
:    let l = matchlist('x x', pat)
:    $put ='E888 NOT detected for ' . pat
:  catch
:    $put ='E888 detected for ' . pat
:  endtry
:endfor
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
ENDTEST

Substitute here:
<T="">Ta 5</Title>
<T="">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
:so! Xdotest
:so small.vim
"test.ok" 1107 lines, 22167 characters

"test.out" [New File] 1107 lines, 22167 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test64 = test61; then \
#	  if diff test.out test64.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test64.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test64.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test65.failed test.ok test.out X* viminfo
cp test65.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/crypt_zip.o crypt_zip.c
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test65.in
[?1h="test65.in" 95 lines, 2153 charactersTest for floating point and logical operators.

STARTTEST
:so small.vim
:if !has("float")
:  e! test.ok
:  wq! test.out
:endif
:"
:$put =printf('%f', 123.456)
:$put =printf('%e', 123.456)
:$put =printf('%g', 123.456)
:" check we don't crash on division by zero
:echo 1.0 / 0.0
:$put ='+='
:let v = 1.234
:let v += 6.543
:$put =printf('%g', v)
:let v = 1.234
:let v += 5
:$put =printf('%g', v)
:let a = 5
:let a += 3.333:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for floating point and logical operators./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 89 lines, 2067 characters written:set ff& cpo+=A
/ENDTEST:$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

Results of test65:


:so! Xdotest
:so small.vim
"test.ok" 73 lines, 430 characters

"test.out" [New File] 73 lines, 430 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test65 = test61; then \
#	  if diff test.out test65.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test65.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test65.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test66.failed test.ok test.out X* viminfo
cp test66.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/window.o window.c
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test66.in
[?1h="test66.in" 33 lines, 509 charactersTest for visual block shift and tab characters.

STARTTEST
:so small.vim
/^one
fe^V4jR^[ugvr1:'<,'>w! test.out
/^abcdefgh
^V4jI    ^[j<<11|D
7|a^[
7|a^[
7|a^[4k13|^V4j<
:$-5,$w >> test.out
:$-4,$s/\s\+//g
^V4kI    ^[j<<
7|a^[
7|a^[
7|a^[4k13|^V4j3<
:$-4,$w >> test.out
:qa!
ENDTEST

one two three:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 16 lines, 234 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
"test.ok" 16 lines, 368 characters

"test.out" [New File] 16 lines, 368 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test66 = test61; then \
#	  if diff test.out test66.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test66.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test66.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test67.failed test.ok test.out X* viminfo
cp test67.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test67.in
[?1h="test67.in" 33 lines, 1109 charactersTest that groups and patterns are tested correctly when calling exists() for
autocommands.

STARTTEST
:so small.vim
:let results=[]
:augroup auexists
:augroup END
:call add(results, "##BufEnter: " . exists("##BufEnter"))
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:au BufEnter * let g:entered=1
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:augroup auexists
:au BufEnter * let g:entered=1
:augroup END
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:au BufEnter *.test let g:entered=1
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:edit testfile.test
:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:au BufEnter <buffer> let g:entered=1:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test that groups and patterns are tested correctly when calling exists() for/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 27 lines, 998 characters written:set ff& cpo+=A
/ENDTEST








:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:edit testfile2.test
:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:e test.out
:call append(0, results)
:$d
:w
:qa!
ENDTEST

:so! Xdotest
:so small.vim
"test.ok" 10 lines, 190 characters

"test.out" [New File] 10 lines, 190 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test67 = test61; then \
#	  if diff test.out test67.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test67.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test67.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test68.failed test.ok test.out X* viminfo
cp test68.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test68.in
[?1h="test68.in" 131 lines, 1004 charactersTest for text formatting.

Results of test68:

STARTTEST
:so small.vim
/^{/+1
:set noai tw=2 fo=t
gRa b^[
ENDTEST

{


}

STARTTEST
/^{/+1
:set ai tw=2 fo=tw
gqgqjjllab^[
ENDTEST

{:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for text formatting./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 4 lines, 48 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/dict.o dict.c
"test.ok" 77 lines, 281 characters

"test.out" [New File] 77 lines, 281 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test68 = test61; then \
#	  if diff test.out test68.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test68.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test68.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test69.failed test.ok test.out X* viminfo
cp test69.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test69.in
[?1h="test69.in" 192 lines, 2185 charactersTest for multi-byte text formatting.
Also test, that 'mps' with multibyte chars works.
And test "ra" on multi-byte characters.
Also test byteidx() and byteidxcomp()

STARTTEST
:so mbyte.vim
:set encoding=utf-8
ENDTEST

Results of test69:

STARTTEST
/^{/+1
:set tw=2 fo=t
gqgqjgqgqo
XYZ
abc XYZ^[
ENDTEST

{
XYZ
abc XYZ:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for multi-byte text formatting./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 2 lines, 34 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so mbyte.vim
"test.ok" 166 lines, 730 characters

"test.out" [New File] 166 lines, 730 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test69 = test61; then \
#	  if diff test.out test69.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test69.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test69.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test70.failed test.ok test.out X* viminfo
cp test70.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test70.in
[?1h="test70.in" 63 lines, 1501 charactersSmoke test for MzScheme interface and mzeval() function

STARTTEST
:so mzscheme.vim
:set nocompatible viminfo+=nviminfo
:function! MzRequire()
:redir => l:mzversion
:mz (version)
:redir END
:if strpart(l:mzversion, 1, 1) < "4"
:" MzScheme versions < 4.x:
:mz (require (prefix vim- vimext))
:else
:" newer versions:
:mz (require (prefix-in vim- 'vimext))
:mz (require r5rs)
:endif
:endfunction
:silent call MzRequire()
:mz (define l '("item0" "dictionary with list OK" "item2"))
:mz (define h (make-hash))
:mz (hash-set! h "list" l)
/^1:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Smoke test for MzScheme interface and mzeval() function/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 55 lines, 1398 characters written:set ff& cpo+=A
/ENDTEST:if l2[2] == l2
:let res = "OK"
:else
:let res = "FAILED: " . l2[2]
:endif
:call setline(search("^3"), "circular test " . res)
:" funcrefs
:mz (define vim:max (vim-eval "function('max')"))
:mz (define m (vim:max '(1 100 8)))
:let m = mzeval('m')
:if m == 100
:let fref_res = "OK"
:else
:let fref_res = "FAILED: " . m
:end
:call append(line('$'), 'funcrefs '. fref_res)
:?^1?,$w! test.out
:qa!
ENDTEST

1 line 1
2 line 2
3 line 3
:so! Xdotest
:so mzscheme.vim
"test.ok" 6 lines, 94 characters

"test.out" [New File] 6 lines, 94 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test70 = test61; then \
#	  if diff test.out test70.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test70.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test70.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test73.failed test.ok test.out X* viminfo
cp test73.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test73.in
[?1h="test73.in" 169 lines, 3647 charactersTests for find completion.

STARTTEST
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xfind directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a stale "Xfind" directory may exist, remove it so that
:" we start from a clean state.
:call delete("Xfind", "rf")
:new
:let cwd=getcwd()
:let test_out = cwd . '/test.out'
:call mkdir('Xfind')
:cd Xfind
:set path=
:find
:exec "w! " . test_out
:close:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for find completion./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 164 lines, 3600 characters written:set ff& cpo+=A
/ENDTEST:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file
:e in/file.txt
:exec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu
:exec "w >>" . test_out
:q
:exec "cd " . cwd
:call delete("Xfind", "rf")
:qa!
ENDTEST


:so! Xdotest
:so small.vim
"test.ok" 21 lines, 222 characters

"test.out" [New File] 21 lines, 222 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test73 = test61; then \
#	  if diff test.out test73.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test73.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test73.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test75.failed test.ok test.out X* viminfo
cp test75.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test75.in
[?1h="test75.in" 41 lines, 1000 charactersTests for maparg().
Also test utf8 map with a 0x80 byte.

STARTTEST
:so small.vim
:so mbyte.vim
:set cpo-=<
:set encoding=utf8
:" Test maparg() with a string result
:map foo<C-V> is<F4>foo
:vnoremap <script> <buffer> <expr> <silent> bar isbar
:call append('$', maparg('foo<C-V>'))
:call append('$', string(maparg('foo<C-V>', '', 0, 1)))
:call append('$', string(maparg('bar', '', 0, 1)))
:map <buffer> <nowait> foo bar
:call append('$', string(maparg('foo', '', 0, 1)))
:"
:map abc x<char-114>x
:call append('$', maparg('abc'))
:map abc y<S-char-114>y
:call append('$', maparg('abc'))
:"
Go^[:":set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for maparg()./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 34 lines, 919 characters written:set ff& cpo+=A
/ENDTEST















:" Outside of the range, minimum
:inoremap <Char-0x1040> a
:execute "normal a\u1040\<Esc>"
:" Inside of the range, minimum
:inoremap <Char-0x103f> b
:execute "normal a\u103f\<Esc>"
:" Inside of the range, maximum
:inoremap <Char-0xf03f> c
:execute "normal a\uf03f\<Esc>"
:" Outside of the range, maximum
:inoremap <Char-0xf040> d
:execute "normal a\uf040\<Esc>"
:"
:/^eof/+1,$w! test.out
:qa!
ENDTEST

:so! Xdotest
:so small.vim
"test.ok" 7 lines, 384 characters

"test.out" [New File] 7 lines, 384 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test75 = test61; then \
#	  if diff test.out test75.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test75.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test75.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test76.failed test.ok test.out X* viminfo
cp test76.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test76.in
[?1h="test76.in" 46 lines, 899 charactersTests for completefunc/omnifunc. vim: set ft=vim :

STARTTEST
:"Test that nothing happens if the 'completefunc' opens
:"a new window (no completion, no crash)
:so small.vim
:function! DummyCompleteOne(findstart, base)
:  if a:findstart
:    return 0
:  else
:    wincmd n
:    return ['onedef', 'oneDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteOne
/^one
A^X^U^N^[:q!
:function! DummyCompleteTwo(findstart, base)
:  if a:findstart
:    wincmd n
:    return 0
:  else
:    return ['twodef', 'twoDEF']:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for completefunc/omnifunc. vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 37 lines, 810 characters written:set ff& cpo+=A
/ENDTEST

















:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)
:  if a:findstart
:    return 0
:  else
:    return ['threedef', 'threeDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteThree
/^three
A^X^U^N^[:/^+++/,/^three/w! test.out
:qa!
ENDTEST

:so! Xdotest
:"Test that nothing happens if the 'completefunc' opens
:"a new window (no completion, no crash)
:so small.vim
"test.ok" 4 lines, 18 characters

"test.out" [New File] 4 lines, 18 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test76 = test61; then \
#	  if diff test.out test76.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test76.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test76.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test77.failed test.ok test.out X* viminfo
cp test77.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test77.in
[?1h="test77.in" 30 lines, 719 charactersInserts 2 million lines with consecutive integers starting from 1
(essentially, the output of GNU's seq 1 2000000), writes them to Xtest
and writes its cksum to test.out.

We need 2 million lines to trigger a call to mf_hash_grow().  If it would mess
up the lines the checksum would differ.

cksum is part of POSIX and so should be available on most Unixes.
If it isn't available then the test will be skipped.

STARTTEST
:so small.vim
:if !executable("cksum")
: e! test.ok
: w! test.out
: qa!
:endif
:set fileformat=unix undolevels=-1
ggdG
:let i = 1
:while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhileggdd
:w! Xtest:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Inserts 2 million lines with consecutive integers starting from 1/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 288 characters written:set ff& cpo+=A
/ENDTEST





:r !cksum Xtest
:s/\s/ /g
:set fileformat&
:.w! test.out
:qa!
ENDTEST

:so! Xdotest
:so small.vim
"test.ok" 1 line, 26 characters

"test.out" [New File] 1 line, 26 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test77 = test61; then \
#	  if diff test.out test77.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test77.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test77.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test79.failed test.ok test.out X* viminfo
cp test79.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/diff.o diff.c
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test79.in
[?1h="test79.in" 255 lines, 3381 charactersTest for *sub-replace-special* and *sub-replace-expression* on :substitute.
Test for submatch() on :substitue.
Test for *:s%* on :substitute.
Test for :s replacing \n with  line break.

STARTTEST
:so small.vim
ENDTEST

Results of test71:

STARTTEST
:set magic
:set cpo&
/^TEST/
j:s/A/&&/
j:s/B/\&/
j:s/C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/
j:s/D/d/
j:s/E/~/
j:s/F/\~/
j:s/G/\ugg/
j:s/H/\Uh\Eh/:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for *sub-replace-special* and *sub-replace-expression* on :substitute./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1 line, 14 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
"test.ok" 134 lines, 574 characters

"test.out" [New File] 134 lines, 574 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test79 = test61; then \
#	  if diff test.out test79.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test79.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test79.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test80.failed test.ok test.out X* viminfo
cp test80.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test80.in
[?1h="test80.in" 201 lines, 6298 charactersTest for *sub-replace-special* and *sub-replace-expression* on substitute().
Test for submatch() on substitute().
Test for *:s%* on :substitute.

STARTTEST
:so small.vim
ENDTEST

TEST_1:

STARTTEST
:set magic
:set cpo&
:$put =\"\n\nTEST_1:\"
:$put =substitute('A', 'A', '&&', '')
:$put =substitute('B', 'B', '\&', '')
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\0\9\8\7\6\5\4\3\2\1', '')
:$put =substitute('D', 'D', 'd', '')
:$put =substitute('E', 'E', '~', '')
:$put =substitute('F', 'F', '\~', '')
:$put =substitute('G', 'G', '\ugg', '')
:$put =substitute('H', 'H', '\Uh\Eh', ''):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for *sub-replace-special* and *sub-replace-expression* on substitute()./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1 line, 14 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
"test.ok" 131 lines, 617 characters

"test.out" [New File] 131 lines, 617 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test80 = test61; then \
#	  if diff test.out test80.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test80.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test80.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test82.failed test.ok test.out X* viminfo
cp test82.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test82.in
[?1h="test82.in" 103 lines, 3166 charactersTests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)
Also test "g~ap".

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, aa:b, a:expected))
:  else
:    let b:passed += 1
:  endif
:endfunction
:
:function! Chk(a, b, result):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 97 lines, 3055 characters written:set ff& cpo+=A
/ENDTEST: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%.22X', n)) | endfor
:for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ\xc2\x%.2XuVw', n)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ\xc2\x%.2XuVw', n)) | endfor
:call append(0, printf('%d checks passed', b:passed))
:"
:" test that g~ap changes one paragraph only.
:new
iabcd

defg^[gg0g~ap:let lns = getline(1,3)
:q!
:call append(line('$'), lns)
:"
:wq! test.out
ENDTEST

~
~



:so! Xdotest
:so small.vim
"test.ok" 5 lines, 31 characters

"test.out" [New File] 5 lines, 31 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test82 = test61; then \
#	  if diff test.out test82.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test82.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test82.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test84.failed test.ok test.out X* viminfo
cp test84.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test84.in
[?1h="test84.in" 35 lines, 786 charactersTests 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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for curswant not changing when setting an option/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 25 lines, 637 characters written:set ff& cpo+=A
/ENDTEST





:put =map(copy(result), 'join(v:val, '' '')')
:1 delete _
:write test.out
:
:qall!
ENDTEST

:so! Xdotest
:so small.vim
"test.ok" 3 lines, 43 characters

"test.out" [New File] 3 lines, 43 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test84 = test61; then \
#	  if diff test.out test84.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test84.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test84.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test88.failed test.ok test.out X* viminfo
cp test88.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test88.in
[?1h="test88.in" 99 lines, 1449 charactersvim: set ft=vim

Tests for correct display (cursor column position) with +conceal and
tabulators.

STARTTEST
:so small.vim
:if !has('conceal')
   e! test.ok
   wq! test.out
:endif
:" Conceal settings.
:set conceallevel=2
:set concealcursor=nc
:syntax match test /|/ conceal
:" Save current cursor position. Only works in <expr> mode, can't be used
:" with :normal because it moves the cursor to the command line. Thanks to ZyX
:" <zyx.vim@gmail.com> for the idea to use an <expr> mapping.
:let positions = []
:nnoremap <expr> GG ":let positions += ['".screenrow().":".screencol()."']\n"
:" Start test.
/^start:
:normal ztj:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
vim: set ft=vim/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 82 lines, 1216 characters written:set ff& cpo+=A
/ENDTEST:normal W
GGk
:normal W
GGk
:normal W
GGk
:normal $
GGk
:" Display result.
:call append('$', 'end:')
:call append('$', positions)
:/^end/,$wq! test.out
ENDTEST

start:
.concealed.     text
|concealed|     text.concealed.     text|concealed|     text

.a.     .b.     .c.     .d.
|a|     |b|     |c|     |d|
:so! Xdotest
:so small.vim
"test.ok" 29 lines, 135 characters

"test.out" [New File] 29 lines, 135 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test88 = test61; then \
#	  if diff test.out test88.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test88.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test88.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test90.failed test.ok test.out X* viminfo
cp test90.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test90.in
[?1h="test90.in" 53 lines, 1204 charactersTests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :

STARTTEST
:so small.vim
:if !has('cryptv') || !exists('*sha256')
   e! test.ok
   wq! test.out
:endif
:"
:let testcase='test for empty string: '
:if sha256("") ==# 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b78522b855'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:let testcase='test for 1 char: '
:if sha256("a") ==# 'ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afeee48bb'
: let res='ok'
:else:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 47 lines, 1114 characters written:set ff& cpo+=A
/ENDTEST:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc39ed110ca776'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:let testcase='test for contains non-ascii char: '
:if sha256("\xde\xad\xbe\xef") ==# '5f78c33274e43fa9de5659265c1d917e25c03722dcb00b8d27db8d5feaa813953'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:/^start:/,$wq! test.out
ENDTEST

start:


:so! Xdotest
:so small.vim
"test.ok" 6 lines, 143 characters

"test.out" [New File] 6 lines, 143 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test90 = test61; then \
#	  if diff test.out test90.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test90.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test90.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test91.failed test.ok test.out X* viminfo
cp test91.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test91.in
[?1h="test91.in" 116 lines, 3240 charactersTests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar().
vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Use strings to test for memory leaks.
:" First, check that in an empty window, gettabvar() returns the correct value
:let t:testvar='abcd'
:$put =string(gettabvar(1,'testvar'))
:$put =string(gettabvar(1,'testvar'))
:" Test for getbufvar()
:let b:var_num = '1234'
:let def_num = '5678'
:$put =string(getbufvar(1, 'var_num'))
:$put =string(getbufvar(1, 'var_num', def_num))
:$put =string(getbufvar(1, ''))
:$put =string(getbufvar(1, '', def_num))
:unlet b:var_num
:$put =string(getbufvar(1, 'var_num', def_num))
:$put =string(getbufvar(1, ''))
:$put =string(getbufvar(1, '', def_num)):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar()./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 109 lines, 3127 characters written:set ff& cpo+=A
/ENDTEST:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:tabnext
:3wincmd w
:unlet w:var_dict
:tabrewind
:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:$put =string(gettabwinvar(2, 9, ''))
:$put =string(gettabwinvar(2, 9, '', def_dict))
:$put =string(gettabwinvar(9, 3, ''))
:$put =string(gettabwinvar(9, 3, '', def_dict))
:unlet def_dict
:$put =string(gettabwinvar(2, 3, '&nux'))
:$put =string(gettabwinvar(2, 3, '&nux', 1))
:tabonly
:"
:/^start/,$wq! test.out
ENDTEST

start:


:so! Xdotest
:so small.vim
"test.ok" 50 lines, 530 characters

"test.out" [New File] 50 lines, 530 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test91 = test61; then \
#	  if diff test.out test91.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test91.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test91.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test92.failed test.ok test.out X* viminfo
cp test92.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test92.in
[?1h="test92.in" 48 lines, 852 charactersvim: set ft=vim fenc=utf-8:

Tests if :mksession saves cursor columns correctly in presence of tab and
multibyte characters when fileencoding=utf-8.

STARTTEST
:so mbyte.vim
:if !has('mksession')
:  e! test.ok
:  wq! test.out
:endif
:set sessionoptions=buffers splitbelow fileencoding=utf-8
/^start:
:vsplit
j16|:split
j16|:split
j16|:split
j8|:split
j8|:split
j16|:split
j16|:split
j16|:wincmd l
/^start::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
vim: set ft=vim fenc=utf-8:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 31 lines, 467 characters written:set ff& cpo+=A
/ENDTESTj016|3zl:split
j016|3zl:split
j08|3zl:split
j08|3zl:split
j016|3zl:split
j016|3zl:split
j016|3zl:split
:mksession! test.out
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!
ENDTEST

start:
no multibyte chAracterone leaDing tab
    four leadinG spaces
twoconsecutive tabs
two     tabs    in one line
:so! Xdotest
:so mbyte.vim
"test.ok" 26 lines, 611 characters

"test.out" [New File] 26 lines, 611 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test92 = test61; then \
#	  if diff test.out test92.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test92.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test92.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test93.failed test.ok test.out X* viminfo
cp test93.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test93.in
[?1h="test93.in" 48 lines, 843 charactersvim: set ft=vim fenc=latin1:

Tests if :mksession saves cursor columns correctly in presence of tab and
multibyte characters when fileencoding=latin1.

STARTTEST
:so mbyte.vim
:if !has('mksession')
:  e! test.ok
:  wq! test.out
:endif
:set sessionoptions=buffers splitbelow fileencoding=latin1
/^start:
:vsplit
j16|:split
j16|:split
j16|:split
j8|:split
j8|:split
j16|:split
j16|:split
j16|:wincmd l
/^start::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
vim: set ft=vim fenc=latin1:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 31 lines, 468 characters written:set ff& cpo+=A
/ENDTESTj016|3zl:split
j016|3zl:split
j08|3zl:split
j08|3zl:split
j016|3zl:split
j016|3zl:split
j016|3zl:split
:mksession! test.out
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!
ENDTEST

start:
no multibyte chAracterone leaDing tab
    four leadinG spaces
twoconsecutive tabs
two     tabs    in one line
:so! Xdotest
:so mbyte.vim
"test.ok" 26 lines, 611 characters

"test.out" [New File] 26 lines, 611 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test93 = test61; then \
#	  if diff test.out test93.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test93.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test93.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test94.failed test.ok test.out X* viminfo
cp test94.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test94.in
[?1h="test94.in" 256 lines, 4824 charactersTest for Visual mode and operators

Tests for the two kinds of operations: Those executed with Visual mode
followed by an operator and those executed via Operator-pending mode. Also
part of the test are mappings, counts, and repetition with the . command.

Test cases:
- Visual modes (v V CTRL-V) followed by an operator; count; repeating
- Visual mode maps; count; repeating
  - Simple
  - With an Ex command (custom text object)
- Operator-pending mode maps
  - Simple
  - With Ex command moving the cursor
  - With Ex command and Visual selection (custom text object)
- Patch 7.3.879: Properly abort Ex command in Operator-pending mode

STARTTEST
:so small.vim
:set enc=utf-8 nocp viminfo+=nviminfo
:
:" User functions
:function MoveToCap():set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for Visual mode and operators/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 211 lines, 3837 characters written:set ff& cpo+=A
/ENDTESTkv3lyjv3lpgvcxxx^[
:$put ='---'
:
:$put =''
:$put ='gv in exclusive select mode without operation'
:$put ='zzz '
:set selection=exclusive
0v3l^[gvcxxx^[
:$put ='---'
:/^start:/+2,$w! test.out
:q!
ENDTEST

start:

apple banana cherry

line 1 line 1
line 2 line 2
line 3 line 3
line 4 line 4
line 5 line 5
line 6 line 6
:so! Xdotest
:so small.vim
"test.ok" 123 lines, 1328 characters

"test.out" [New File] 123 lines, 1328 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test94 = test61; then \
#	  if diff test.out test94.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test94.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test94.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test95.failed test.ok test.out X* viminfo
cp test95.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test95.in
[?1h="test95.in" 141 lines, 5827 charactersTest for regexp patterns with multi-byte support, using utf-8.
See test64 for the non-multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:so mbyte.vim
:set nocp encoding=utf-8 viminfo+=nviminfo nomore
:" tl is a List of Lists with:
:"    2: test auto/old/new  0: test auto/old  1: test auto/new
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:
:"""" Multi-byte character tests. These will fail unless vim is compiled
:"""" with Multibyte (FEAT_MBYTE) or BIG/HUGE features.:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for regexp patterns with multi-byte support, using utf-8./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 131 lines, 5590 characters written:set ff& cpo+=A
/ENDTEST:endif
:      endfor
:      unlet i
:    endif
:  endfor
:endfor
:unlet t tl e l
:
:" check that 'ambiwidth' does not change the meaning of \p
:set regexpengine=1 ambiwidth=single
:$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=1 ambiwidth=double
:$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=single
:$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=double
:$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')
:
:/\%#=1^Results/,$wq! test.out
ENDTEST

Results of test95:
~



:so! Xdotest
:so small.vim
"test.ok" 140 lines, 2022 characters

"test.out" [New File] 140 lines, 2022 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test95 = test61; then \
#	  if diff test.out test95.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test95.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test95.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test98.failed test.ok test.out X* viminfo
cp test98.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test98.in
[?1h="test98.in" 43 lines, 908 charactersTest for 'scrollbind' causing an unexpected scroll of one of the windows.
STARTTEST
:so small.vim
:" We don't want the status line to cause problems:
:set laststatus=0
:let g:totalLines = &lines * 20
:let middle = g:totalLines / 2
:wincmd n
:wincmd o
:for i in range(1, g:totalLines)
:    call setline(i, 'LINE ' . i)
:endfor
:exe string(middle)
:normal zt
:normal M
:aboveleft vert new
:for i in range(1, g:totalLines)
:    call setline(i, 'line ' . i)
:endfor
:exe string(middle)
:normal zt
:normal M
:" Execute the following two command at once to reproduce the problem.:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for 'scrollbind' causing an unexpected scroll of one of the windows./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 35 lines, 791 characters written:set ff& cpo+=A
/ENDTEST















:setl scb | wincmd p
:setl scb
:wincmd w
:let topLineLeft = line('w0')
:wincmd p
:let topLineRight = line('w0')
:setl noscrollbind
:wincmd p
:setl noscrollbind
:q!
:%del _
:call setline(1, 'Difference between the top lines (left - right): ' . string(toopLineLeft - topLineRight))
:w! test.out
:brewind
ENDTEST

:so! Xdotest
:so small.vim
"test.ok" 1 line, 51 characters

"test.out" [New File] 1 line, 51 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test98 = test61; then \
#	  if diff test.out test98.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test98.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test98.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test99.failed test.ok test.out X* viminfo
cp test99.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test99.in
[?1h="test99.in" 69 lines, 1400 charactersTests for regexp with multi-byte encoding and various magic settings.
Test matchstr() with a count and multi-byte chars.
See test44 for exactly the same test with re=1.

STARTTEST
:so mbyte.vim
:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
:set re=2
/^1
/a*b\{2}c\+/e
x/\Md\*e\{2}f\+/e
x:set nomagic
/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$
x:set magic
/\v(a)(b)\2\1\1/e
x/\V[ab]\(\[xy]\)\1
x:" Now search for multi-byte without composing char
/ม
x:" Now search for multi-byte with composing char
f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with multi-byte encoding and various magic settings./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/gui_gtk.o gui_gtk.c
[New File] 43 lines, 931 characters written:set ff& cpo+=A
/ENDTEST:" l Test what 7.3.192 fixed
/^l
:s/ \?/ /g
:?^1?,$w! test.out
:e! test.out
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
:so! Xdotest
:so mbyte.vim
"test.ok" 23 lines, 264 characters

"test.out" [New File] 23 lines, 264 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test99 = test61; then \
#	  if diff test.out test99.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test99.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test99.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test103.failed test.ok test.out X* viminfo
cp test103.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test103.in
[?1h="test103.in" 37 lines, 823 charactersTest for visual mode not being reset causing E315 error.
STARTTEST
:so small.vim
:enew
:let g:msg="Everything's fine."
:function! TriggerTheProblem()
:" At this point there is no visual selection because :call reset it.
:" Let's restore the selection:
:normal gv
:'<,'>del _
:try
:exe "normal \<Esc>"
:catch /^Vim\%((\a\+)\)\=:E315/
:echom 'Snap! E315 error!'
:let g:msg='Snap! E315 error!'
:endtry
:endfunction
:enew
:setl buftype=nofile
:call append(line('$'), 'Delete this line.')
:"
:"
:" NOTE: this has to be done by a call to a function because executing :del the:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for visual mode not being reset causing E315 error./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 29 lines, 723 characters written:set ff& cpo+=A
/ENDTEST









:"ex-way will require the colon operator which resets the visual mode thuus
:"preventing the problem:
:"
GV:call TriggerTheProblem()
:%del _
:call append(line('$'), g:msg)
:w! test.out
:brewind
ENDTEST

:so! Xdotest
:so small.vim
"test.ok" 2 lines, 20 characters

"test.out" [New File] 2 lines, 20 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test103 = test61; then \
#	  if diff test.out test103.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test103.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test103.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test104.failed test.ok test.out X* viminfo
cp test104.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test104.in
[?1h="test104.in" 30 lines, 698 charactersTests for :let.  vim: set ft=vim ts=8 :

STARTTEST
:so small.vim
:set runtimepath+=./sautest
:" Test to not autoload when assigning.  It causes internal error.
:try
:  let Test104#numvar = function('tr')
:  $put ='OK: ' . string(Test104#numvar)
:catch
:  $put ='FAIL: ' . v:exception
:endtry
:let a = 1
:let b = 2
:for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0  == 1 ? "a" : "b"}']
:  try
:    redir => messages
:    execute 'let' letargs
:    redir END
:    $put ='OK:'
:    $put =split(substitute(messages, '\n', '\0  ', 'g'), '\n')
:  catch:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :let.  vim: set ft=vim ts=8 :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 24 lines, 618 characters written:set ff& cpo+=A
/ENDTEST





:    $put ='FAIL: ' . v:exception
:    redir END
:  endtry
:endfor
:/^Results/,$wq! test.out
ENDTEST

:so! Xdotest
:so small.vim
"test.ok" 13 lines, 244 characters

"test.out" [New File] 13 lines, 244 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test104 = test61; then \
#	  if diff test.out test104.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test104.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test104.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test107.failed test.ok test.out X* viminfo
cp test107.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test107.in
[?1h="test107.in" 38 lines, 717 charactersTests for adjusting window and contents     vim: set ft=vim :

STARTTEST
:so small.vim
:new
:call setline(1, range(1,256))
:let r=[]
:func! GetScreenStr(row)
:   let str = ""
:   for c in range(1,3)
:let str .= nr2char(screenchar(a:row, c))
:   endfor
:   return str
:endfunc
:
:exe ":norm! \<C-W>t\<C-W>=1Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p
:call add(r, [line("w0"), s3])
:
:exe ":norm! \<C-W>t\<C-W>=50Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for adjusting window and contents     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 32 lines, 628 characters written:set ff& cpo+=A
/ENDTEST












:call add(r, [line("w0"), s3])
:
:exe ":norm! \<C-W>t\<C-W>=59Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
::wincmd p
:call add(r, [line("w0"), s3])
:
:bwipeout!
:$put=r
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
ENDTEST

:so! Xdotest
:so small.vim
"test.ok" 4 lines, 42 characters

"test.out" [New File] 4 lines, 42 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test107 = test61; then \
#	  if diff test.out test107.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test107.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test107.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test108.failed test.ok test.out X* viminfo
cp test108.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test108.in
[?1h="test108.in" 88 lines, 1329 charactersTests for backtrace debug commands.     vim: set ft=vim :

STARTTEST
:so small.vim
:lang mess C
:function! Foo()
:   let var1 = 1
:   let var2 = Bar(var1) + 9
:   return var2
:endfunction
:
:function! Bar(var)
:    let var1 = 2 + a:var
:    let var2 = Bazz(var1) + 4
:    return var2
:endfunction
:
:function! Bazz(var)
:    let var1 = 3 + a:var
:    let var3 = "another var"
:    return var1
:endfunction
:new:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for backtrace debug commands.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 83 lines, 1251 characters written:set ff& cpo+=A
/ENDTESTup
b
echo "fil is not frame or finish, it is file"
fil
echo "\n- relative backtrace movement\n"
fr -1
frame
fra +1
fram
echo "\n- go beyond limits does not crash\n"
fr 100
fra
frame -40
fram
echo "\n- final result 19:"
cont
:0debuggreedy
:redir END
:$put =out
:w! test.out
:qa!
ENDTEST


:so! Xdotest
:so small.vim
"test.ok" 84 lines, 1390 characters

"test.out" [New File] 84 lines, 1390 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test108 = test61; then \
#	  if diff test.out test108.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test108.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test108.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_autocmd_option.failed test.ok test.out X* viminfo
cp test_autocmd_option.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autocmd_option.in
[?1h="test_autocmd_option.in" 77 lines, 2954 charactersTest for option autocommand

STARTTEST
:so small.vim
:if !has("eval") || !has("autocmd") || !exists("+autochdir") | e! test.ok | w! ttest.out | qa! | endif
:fu! AutoCommand(match)
:let c=g:testcase
:let item=remove(g:options, 0)
:let c.=printf("Expected: Name: <%s>, Oldval: <%s>, NewVal: <%s>, Scope:  <%s>\n", item[0], item[1], item[2], item[3])
:let c.=printf("Autocmd Option: <%s>,", a:match)
:let c.=printf(" OldVal: <%s>,", v:option_old)
:let c.=printf(" NewVal: <%s>,", v:option_new)
:let c.=printf(" Scope: <%s>\n", v:option_type)
:call setreg('r', printf("%s\n%s", getreg('r'), c))
:endfu
:au OptionSet * :call AutoCommand(expand("<amatch>"))
:let g:testcase="1: Setting number option\n"
:let g:options=[['number', 0, 1, 'global']]
:set nu
:let g:testcase="2: Setting local number option\n"
:let g:options=[['number', 1, 0, 'local']]:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for option autocommand/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 72 lines, 2896 characters written:set ff& cpo+=A
/ENDTEST:let g:testcase="13: Setting option backspace through setbufvar()\n"
:let g:options=[['backup', '', '1', 'local']]
: "try twice, first time, shouldn't trigger because option name is invalid, secoond time, it should trigger
:call setbufvar(1, '&l:bk', 1)
: "should trigger, use correct option name
:call setbufvar(1, '&backup', 1)
:let g:testcase="14: Setting number option using setwinvar\n"
:let g:options=[['number', 0, 1, 'local']]
:call setwinvar(0, '&number', 1)
:" Write register now, because next test shouldn't output anything.
:$put r
:let @r=''
:let g:testcase="\n15: Setting key option, shouldn't trigger\n"
:let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
:setlocal key=blah
:setlocal key=
:$put =g:testcase
:$put r
:/^dummy text/,$w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
"test.ok" 64 lines, 2700 characters

"test.out" [New File] 64 lines, 2700 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_autocmd_option = test61; then \
#	  if diff test.out test_autocmd_option.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_autocmd_option.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autocmd_option.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_autoformat_join.failed test.ok test.out X* viminfo
cp test_autoformat_join.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autoformat_join.in
[?1h="test_autoformat_join.in" 23 lines, 524 charactersTests for setting the '[,'] marks when joining lines.

STARTTEST
:so small.vim
:/^\t\t/
0gqj:
:let a=string(getpos("'[")).'/'.string(getpos("']"))
:/^This line/;'}-join
:let b=string(getpos("'[")).'/'.string(getpos("']"))
:$put ='First test: Start/End '.string(a)
:$put ='Second test: Start/End '.string(b)
:/^\t\t/,$wq! test.out
ENDTESTO sodales, ludite, vos qui
attamen consulite per voster honur. Tua pulchra facies me fay planszer milies

This line.
Should be joined with the next line
and with this line

Results::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for setting the '[,'] marks when joining lines./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 9 lines, 265 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
"test.ok" 8 lines, 292 characters

"test.out" [New File] 8 lines, 292 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_autoformat_join = test61; then \
#	  if diff test.out test_autoformat_join.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_autoformat_join.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autoformat_join.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_breakindent.failed test.ok test.out X* viminfo
cp test_breakindent.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/digraph.o digraph.c
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_breakindent.in
[?1h="test_breakindent.in" 122 lines, 3678 charactersTest for breakindent

STARTTEST
:so small.vim
:if !exists("+breakindent") | e! test.ok | w! test.out | qa! | endif
:10new|:vsp|:vert resize 20
:put =\"\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP\"
:set ts=4 sw=4 sts=4 breakindent
:fu! ScreenChar(line, width)
:let c=''
:for i in range(1,a:width)
:let c.=nr2char(screenchar(a:line, i))
:endfor
:let c.="\n"
:for i in range(1,a:width)
:let c.=nr2char(screenchar(a:line+1, i))
:endfor
:let c.="\n"
:for i in range(1,a:width)
:let c.=nr2char(screenchar(a:line+2, i))
:endfor
:return c
:endfu:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for breakindent/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 117 lines, 3627 characters written:set ff& cpo+=A
/ENDTEST:$put =line2
:"
:let g:test="Test 14: breakindent + visual blockwise delete #1"
:set all& breakindent viminfo+=nviminfo
:30vnew
:normal! 3a1234567890
:normal! a    abcde
:exec "normal! 0\<C-V>tex"
:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
:"
:let g:test="Test 15: breakindent + visual blockwise delete #2"
:%d
:normal! 4a1234567890
:exec "normal! >>\<C-V>3f0x"
:let line1=ScreenChar(line('.'),20)
:call DoRecordScreen()
:quit!
:"
:%w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
"test.ok" 74 lines, 1210 characters

"test.out" [New File] 74 lines, 1210 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_breakindent = test61; then \
#	  if diff test.out test_breakindent.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_breakindent.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_breakindent.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_changelist.failed test.ok test.out X* viminfo
cp test_changelist.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_changelist.in
[?1h="test_changelist.in" 22 lines, 288 charactersTest changelist position after splitting window
Set 'undolevels' to make changelist for sourced file

STARTTEST
:so small.vim
Gkylp:set ul=100
Gylp:set ul=100
gg
:vsplit
:try
:  normal g;
:  normal ggVGcpass^[
:catch
:  normal ggVGcfail^[
:finally
:  %w! test.out
:endtry
:qa!
ENDTEST

1
2
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test changelist position after splitting window/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 14 lines, 163 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
"test.ok" 1 line, 5 characters

"test.out" [New File] 1 line, 5 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_changelist = test61; then \
#	  if diff test.out test_changelist.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_changelist.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_changelist.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_close_count.failed test.ok test.out X* viminfo
cp test_close_count.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_close_count.in
[?1h="test_close_count.in" 153 lines, 2665 charactersTests for :[count]close! and :[count]hide     vim: set ft=vim :

STARTTEST
:so small.vim
:let tests = []
:for i in range(5)
:new
:endfor
:4wincmd w
:close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:$close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
:2close!:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :[count]close! and :[count]hide     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 41 lines, 749 characters written:set ff& cpo+=A
/ENDTEST:call add(tests, buffers)
:2wincmd w
:+1close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(0, map(copy(tests), 'join(v:val, " ")'))
:w
:only!
:b1
ENDTEST

STARTTEST
:let tests = []
:for i in range(5)
:new
:endfor
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:4wincmd w
:.hide
:so! Xdotest
:so small.vim
"test.ok" 23 lines, 183 characters

"test.out" [New File] 23 lines, 183 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_close_count = test61; then \
#	  if diff test.out test_close_count.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_close_count.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_close_count.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_comparators.failed test.ok test.out X* viminfo
cp test_comparators.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_comparators.in
[?1h="test_comparators.in" 21 lines, 283 characters" Test for expression comparators.   vim: set ft=vim :


STARTTEST
:so small.vim
:try
:  let oldisident=&isident
:  set isident+=#
:  if 1 is#1
:    $put ='ok'
:  else
:    $put ='ng'
:  endif
:finally
:  let &isident=oldisident
:endtry
:"
:/^marker/+1,$wq! test.out
ENDTEST

marker
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
" Test for expression comparators.   vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 14 lines, 200 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
"test.ok" 1 line, 3 characters

"test.out" [New File] 1 line, 3 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_comparators = test61; then \
#	  if diff test.out test_comparators.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_comparators.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_comparators.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_erasebackword.failed test.ok test.out X* viminfo
cp test_erasebackword.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_erasebackword.in
[?1h="test_erasebackword.in" 19 lines, 427 charactersTest for erasing backword

STARTTEST
:so small.vim
:so mbyte.vim
:set encoding=utf-8
G
:/^test/,$w! test.out
:qa!
ENDTEST

test starts here:

~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for erasing backword/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 12 lines, 362 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
"test.ok" 8 lines, 111 characters

"test.out" [New File] 8 lines, 111 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_erasebackword = test61; then \
#	  if diff test.out test_erasebackword.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_erasebackword.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_erasebackword.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_eval.failed test.ok test.out X* viminfo
cp test_eval.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_eval.in
[?1h="test_eval.in" 247 lines, 6201 charactersTest for various eval features.   vim: set ft=vim :

Note: system clipboard is saved, changed and restored.

clipboard contents
something else

STARTTEST
:so small.vim
:set encoding=latin1
:set noswapfile
:lang C
:fun AppendRegContents(reg)
  call AppendRegParts(a:reg, getregtype(a:reg), getreg(a:reg), string(getreg(a:rreg, 0, 1)), getreg(a:reg, 1), string(getreg(a:reg, 1, 1)))
:endfun
:fun AppendRegParts(reg, type, cont, strcont, cont1, strcont1)
  call append('$', printf('%s: type %s; value: %s (%s), expr: %s (%s)', a:reg, aa:type, a:cont, a:strcont, a:cont1, a:strcont1))
endfun
:command -nargs=? AR :call AppendRegContents(<q-args>)
:fun SetReg(...)
    call call('setreg', a:000):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for various eval features.   vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/edit.o edit.c
"Xdotest" [New File] 233 lines, 6010 characters written:set ff& cpo+=A
/ENDTEST:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]
:unlet nn
:let b:nn = 4
:$put =str[b:nn:]
:$put =str[:b:nn]
:$put =str[b:nn:b:nn]
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start:
:so! Xdotest
:so small.vim
"test.ok" 362 lines, 11279 characters

"test.out" [New File] 362 lines, 11279 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_eval = test61; then \
#	  if diff test.out test_eval.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_eval.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_eval.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_fixeol.failed test.ok test.out X* viminfo
cp test_fixeol.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_fixeol.in
[?1h="test_fixeol.in" 40 lines, 780 charactersTests for 'fixeol'vim: set ft=vim :

STARTTEST
:" use Unix fileformat for consistency
:set ff=unix
:enew!
awith eol^[:w! XXEol
:enew!
:set noeol nofixeol
awithout eol^[:w! XXNoEol
:set eol fixeol
:bwipe XXEol XXNoEol
:"
:" try editing files with 'fixeol' disabled
:e! XXEol
ostays eol^[:set nofixeol
:w! XXTestEol
:e! XXNoEol
ostays without^[:set nofixeol
:w! XXTestNoEol
:bwipe XXEol XXNoEol XXTestEol XXTestNoEol
:set fixeol:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for 'fixeol'vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 35 lines, 698 characters written:set ff& cpo+=A
/ENDTEST















:"
:" Append "END" to each file so that we can see what the last written char was.
ggdGaEND^[:w >>XXEol
:w >>XXNoEol
:w >>XXTestEol
:w >>XXTestNoEol
:"
:" Concatenate the results
:e! test.out
a0^[:$r XXEol
:$r XXNoEol
Go1^[:$r XXTestEol
:$r XXTestNoEol
:w
:qa!
ENDTEST

~with eol:w! XXEol
"XXEol" [New File] 1 line, 9 characters written:enew!
:set noeol nofixeol
without eol:w! XXNoEol
"XXNoEol" [New File][Incomplete last line] 1 line, 11 characters written:set eol fixeol
:bwipe XXEol XXNoEol
E319: Sorry, the command is not available in this version:"
:" try editing files with 'fixeol' disabled
:e! XXEol
"XXEol" 1 line, 9 characters eol
stays eol:set nofixeol
:w! XXTestEol
"XXTestEol" [New File] 2 lines, 19 characters written:e! XXNoEol
"XXNoEol" [Incomplete last line] 1 line, 11 charactersout eol~
stays without:set nofixeol
:w! XXTestNoEol
"XXTestNoEol" [New File][Incomplete last line] 2 lines, 25 characters written:bwipe XXEol XXNoEol XXTestEol XXTestNoEol
E319: Sorry, the command is not available in this version:set fixeol
:"
:" Append "END" to each file so that we can see what the last written char was.
~--No lines in buffer--END:w >>XXEol
"XXEol" 1 line, 4 characters appended:w >>XXNoEol
"XXNoEol" 1 line, 4 characters appended:w >>XXTestEol
"XXTestEol" 1 line, 4 characters appended:w >>XXTestNoEol
"XXTestNoEol" 1 line, 4 characters appended:"
:" Concatenate the results
:e! test.out
"test.out" [New File]0:$r XXEol
"XXEol" 2 lines, 13 characterswith eol
END:$r XXNoEol
"XXNoEol" 1 line, 15 characterswithout eolEND

1:$r XXTestEol
"XXTestEol" 3 lines, 23 characterswith eol
stays eol
END:$r XXTestNoEol
"XXTestNoEol" 2 lines, 29 characterswithout eol
stays withoutEND:w
"test.out" [New File] 10 lines, 84 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_fixeol = test61; then \
#	  if diff test.out test_fixeol.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_fixeol.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_fixeol.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_getcwd.failed test.ok test.out X* viminfo
cp test_getcwd.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_getcwd.in
[?1h="test_getcwd.in" 96 lines, 2374 charactersTests for getcwd(), haslocaldir(), and :lcdvim: set ft=vim :

STARTTEST
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xtopdir directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a swapfile in Xtopdir prevents it from being cleaned up.
:set noswapfile
:"
:function! GetCwdInfo(win, tab)
: let tab_changed = 0
: let mod = ":t"
: if a:tab > 0 && a:tab != tabpagenr()
:   let tab_changed = 1
:   exec "tabnext " . a:tab
: endif
: let bufname = fnamemodify(bufname(winbufnr(a:win)), mod)
: if tab_changed:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for getcwd(), haslocaldir(), and :lcdvim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 90 lines, 2273 characters written:set ff& cpo+=A
/ENDTEST:wincmd W
:lcd Xdir2
:call add(r, GetCwdInfo(0, 0))
:wincmd W
:lcd Xdir3
:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("x"), 0))
:call add(r, GetCwdInfo(bufwinnr("y"), 0))
:call add(r, GetCwdInfo(bufwinnr("z"), 0))
:let tp_nr = tabpagenr()
:tabrewind
:call add(r, GetCwdInfo(3, tp_nr))
:call add(r, GetCwdInfo(2, tp_nr))
:call add(r, GetCwdInfo(1, tp_nr))
:"
:call writefile(r, test_out, "a")
:q
:exec "cd " . cwd
:call delete("Xtopdir", "rf")
:qa!
ENDTEST



:so! Xdotest
:so small.vim
"test.ok" 18 lines, 192 characters

"test.out" [New File] 18 lines, 192 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_getcwd = test61; then \
#	  if diff test.out test_getcwd.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_getcwd.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_getcwd.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_insertcount.failed test.ok test.out X* viminfo
cp test_insertcount.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_insertcount.in
[?1h="test_insertcount.in" 14 lines, 204 charactersTests for repeating insert and replace.

STARTTEST
:so small.vim
:/Second
4gro
:/^First/,$wq! test.out
:" get here when failed and in Insert mode
^[:.wq! test.out
ENDTEST

First line
Second line
Last line
~
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for repeating insert and replace./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 6 lines, 111 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
"test.ok" 3 lines, 36 characters

"test.out" [New File] 3 lines, 36 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_insertcount = test61; then \
#	  if diff test.out test_insertcount.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_insertcount.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_insertcount.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_listchars.failed test.ok test.out X* viminfo
cp test_listchars.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listchars.in
[?1h="test_listchars.in" 54 lines, 705 charactersTests for 'listchars' display with 'list' and :list

STARTTEST
:so small.vim
:set ff=unix
:let g:lines = []
:function GetScreenCharsForLine(lnum)
:  return join(map(range(1, virtcol('$')), 'nr2char(screenchar(a:lnum, v:val))')), '')
:endfunction
:nnoremap <expr> GG ":call add(g:lines, GetScreenCharsForLine(".screenrow()."))\\<CR>"
:set listchars+=tab:>-,space:.,trail:<
:set list
:
/^start:/
:normal! jzt
GG
GG
GG
GG
GGH:
:set listchars-=trail:<:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for 'listchars' display with 'list' and :list/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 25 lines, 431 characters written:set ff& cpo+=A
/ENDTEST








GG
GG
GG
GG
GG:
:put =g:lines
:'[,']w! test.out
ENDTEST

:so! Xdotest
:so small.vim
"test.ok" 16 lines, 178 characters

"test.out" [New File] 16 lines, 178 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_listchars = test61; then \
#	  if diff test.out test_listchars.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_listchars.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listchars.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_listlbr.failed test.ok test.out X* viminfo
cp test_listlbr.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr.in
[?1h="test_listlbr.in" 119 lines, 2868 charactersTest for linebreak and list option (non-utf8)

STARTTEST
:so small.vim
:if !exists("+linebreak") || !has("conceal") | e! test.ok | w! test.out | qa! |  endif
:10new|:vsp|:vert resize 20
:put =\"\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \"
:norm! zt
:set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
:fu! ScreenChar(width)
:let c=''
:for j in range(1,4)
:for i in range(1,a:width)
:let c.=nr2char(screenchar(j, i))
:endfor
:let c.="\n"
:endfor
:return c
:endfu
:fu! DoRecordScreen()
:wincmd l
:$put =printf(\"\n%s\", g:test):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for linebreak and list option (non-utf8)/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 114 lines, 2792 characters written:set ff& cpo+=A
/ENDTESTabcd{ef
ghijklm
no}pqrs^[2k0f{^V^Vc%^[
:"
:let g:test ="Test 11: using block replace mode after wrapping"
:$put =g:test
:set linebreak wrap
Go^[150aa^[yypk147|^Vjr0
:"
:let g:test ="Test 12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$":set list listchars=space:_,trail:-,tab:>-,eol:$
:$put =g:test
:let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
"test.ok" 62 lines, 2030 characters

"test.out"if test -z "/usr/bin/glib-compile-resources"; then touch auto/gui_gtk_gresources.h; else \
	/usr/bin/glib-compile-resources --target=auto/gui_gtk_gresources.h --sourcedir=../pixmaps --generate --c-name=gui_gtk --manual-register gui_gtk_res.xml; \
fi
 [New File] 62 lines, 2030 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_listlbr = test61; then \
#	  if diff test.out test_listlbr.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_listlbr.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/pty.o pty.c
rm -rf X* test.ok viminfo
rm -rf test_search_mbyte.failed test.ok test.out X* viminfo
cp test_search_mbyte.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_search_mbyte.in
[?1h="test_search_mbyte.in" 15 lines, 226 charactersTest for search('multi-byte char', 'bce')

STARTTEST
:source small.vim
:source mbyte.vim
:set encoding=utf-8
:/^Test bce:/+1
:$put =search('A', 'bce', line('.'))
:1;/^Results:/,$wq! test.out
ENDTEST

Results:

Test bce:
A
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for search('multi-byte char', 'bce')/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 6 lines, 140 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:source small.vim
"test.ok" 5 lines, 27 characters

"test.out" [New File] 5 lines, 27 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_search_mbyte = test61; then \
#	  if diff test.out test_search_mbyte.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_search_mbyte.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_search_mbyte.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_utf8.failed test.ok test.out X* viminfo
cp test_utf8.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_utf8.in
[?1h="test_utf8.in" 46 lines, 1245 charactersTests for Unicode manipulationsvim: set ft=vim :

STARTTEST
:so small.vim
:set encoding=utf-8
:"
:" Visual block Insert adjusts for multi-byte char
:new
:exe ":norm! gg0l\<C-V>jjIx\<Esc>"
:let r = getline(1, '$')
:"
:bwipeout!
:$put=r
:"
:" Test for built-in function strchars()
:$put=strchars(str)
:$put=strchars(str, 0)
:$put=strchars(str, 1)
:endfor
:"
:" Test for customlist completion:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for Unicode manipulationsvim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 40 lines, 1151 characters written:set ff& cpo+=A
/ENDTEST:"
:" Test for customlist completion
:function! CustomComplete1(lead, line, pos)
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
:call feedkeys(":Test1 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete2(lead, line, pos)
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
:call feedkeys(":Test2 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete3(lead, line, pos)
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:call garbagecollect(1)
:/^start:/,$wq! test.out
ENDTEST


:so! Xdotest
:so small.vim
"test.ok" 22 lines, 86 characters

"test.out" [New File] 22 lines, 86 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_utf8 = test61; then \
#	  if diff test.out test_utf8.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_utf8.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_utf8.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_wordcount.failed test.ok test.out X* viminfo
cp test_wordcount.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_wordcount.in
[?1h="test_wordcount.in" 126 lines, 2815 charactersTest for wordcount() function

STARTTEST
:so small.vim
:so mbyte.vim
:set enc=utf8
:set selection=inclusive fileformat=unix fileformats=unix
:new
:fu DoRecordWin(...)
:wincmd k
:if exists("a:1")
:call cursor(a:1)
:endif
:let result=[]
:call add(result, g:test)
:call add(result, getline(1, '$'))
:call add(result, wordcount())
:wincmd j
:return result
:endfu
:fu PutInWindow(args)
:wincmd k
:%d _:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for wordcount() function/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 121 lines, 2753 characters written:set ff& cpo+=A
/ENDTEST:0
v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])
:let log[2]=g:visual_stat
:call Log()
:"
:let g:test="Test 11: visual mode, single line"
:wincmd k
:set ls=2 stl=%{STL()}
:" start visual mode quickly and select complete buffer
:2
0v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])
:let log[2]=g:visual_stat
:call Log()
:"
:/^RESULT test/,$w! test.out
:qa!
ENDTEST
RESULT test:

:so! Xdotest
:so small.vim
"test.ok" 34 lines, 1905 characters

"test.out" [New File] 34 lines, 1905 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_wordcount = test61; then \
#	  if diff test.out test_wordcount.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_wordcount.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_wordcount.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test11.failed test.ok test.out X* viminfo
cp test11.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test11.in
[?1h="test11.in" 84 lines, 3366 charactersTests for autocommands:
- FileWritePrewriting a compressed file
- FileReadPostreading a compressed file
- BufNewFilereading a file template
- BufReadPredecompressing the file to be read
- FilterReadPresubstituting characters in the temp file
- FilterReadPostsubstituting characters after filtering
- FileReadPreset options for decompression
- FileReadPostdecompress the file

Note: This test is skipped if "gzip" is not available.
$GZIP is made empty, "-v" would cause trouble.
Use a FileChangedShell autocommand to avoid a prompt for "Xtestfile.gz" being
modified outside of Vim (noticed on Solaris).

STARTTEST
:so small.vim
:" drop out when there is no gzip program
:if !executable("gzip")
: e! test.ok
: w! test.out
: qa!
:endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for autocommands:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 48 lines, 2298 characters written:set ff& cpo+=A
/ENDTEST:au! FileReadPre    *.gz   exe 'silent !gzip -d ' . shellescape(expand("<afile>""))
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/
:$r Xtestfile.gz" Read compressed file
:w" write it, after filtering
:au!" remove all autocommands
:e" Edit test.out again
:set nobin ff&   " use the default fileformat for writing
:w
:qa!
ENDTEST

startstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 4  Abcdefghijklmnopqrstuvwxyz
line 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 6  Abcdefghijklmnopqrstuvwxyz
line 7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 8  Abcdefghijklmnopqrstuvwxyz
line 9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
:so! Xdotest
:so small.vim
"test.ok" 61 lines, 1599 characters

"test.out" [New File] 61 lines, 1599 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test11 = test61; then \
#	  if diff test.out test11.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test11.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test11.in; \
#	  fi \
#	fi"
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/gui.o gui.c
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test52.failed test.ok test.out X* viminfo
cp test52.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test52.in
[?1h="test52.in" 65 lines, 1645 charactersTests for reading and writing files with conversion for Win32.

STARTTEST
:so mbyte.vim
:" make this a dummy test for non-Win32 systems
:if !has("win32") | e! test.ok | wq! test.out | endif
:"
:" write tests:
:" combine three values for 'encoding' with three values for 'fileencoding'
:" also write files for read tests
/^1
:set encoding=utf-8
:.w! ++enc=utf-8 test.out
:.w ++enc=cp1251 >>test.out
:.w ++enc=cp866 >>test.out
:.w! ++enc=utf-8 Xutf8
/^2
:set encoding=cp1251
:.w ++enc=utf-8 >>test.out
:.w ++enc=cp1251 >>test.out
:.w ++enc=cp866 >>test.out
:.w! ++enc=cp1251 Xcp1251
/^3:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for reading and writing files with conversion for Win32./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 57 lines, 1333 characters written:set ff& cpo+=A
/ENDTEST:e Xcp1251
:.w ++enc=cp1251 >>test.out
:set fencs=utf-8,cp866
:e Xcp866
:.w ++enc=cp1251 >>test.out
:"
:" read three 'fileencoding's with cp866 'encoding'
:set encoding=cp866 fencs=utf-8,cp1251
:e Xutf8
:.w ++enc=cp866 >>test.out
:e Xcp1251
:.w ++enc=cp866 >>test.out
:set fencs=utf-8,cp866
:e Xcp866
:.w ++enc=cp866 >>test.out
:"
:qa!
ENDTEST

:so! Xdotest
:so mbyte.vim
"test.ok" 18 lines, 1374 characters

"test.out" [New File] 18 lines, 1374 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test52 = test61; then \
#	  if diff test.out test52.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test52.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test52.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test85.failed test.ok test.out X* viminfo
cp test85.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test85.in
[?1h="test85.in" 85 lines, 1868 charactersTest 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):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for Lua interface and luaeval() function/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 77 lines, 1775 characters written:set ff& cpo+=A
/ENDTEST:lua d = vim.eval("d")
:lua d[0] = 123
:lua d[1] = "abc"
:lua d[2] = vim.eval("[1, 2, 3]")
:lua d[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
:lua d[4] = d[0]
:lua d[5] = d[1]
:lua d[6] = d[2]
:lua d[7] = d[3]
:lua d[3] = nil
:lua d[2] = nil
:lua d[1] = nil
:lua d[0] = nil
:lua d = nil
:$put =string(d)

:?^1?,$w! test.out
:qa!
ENDTEST

1 line 1
2 line 2
3 line 3
:so! Xdotest
:so small.vim
"test.ok" 7 lines, 206 characters

"test.out" [New File] 7 lines, 206 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test85 = test61; then \
#	  if diff test.out test85.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test85.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test85.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test86.failed test.ok test.out X* viminfo
cp test86.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test86.in
[?1h="test86.in" 1711 lines, 48481 charactersTests for various python features.     vim: set ft=vim :

NOTE: This will cause errors when run under valgrind.
This would require recompiling Python with:
  ./configure --without-pymalloc
See http://svn.python.org/view/python/trunk/Misc/README.valgrind?view=markup

STARTTEST
:so small.vim
:set encoding=latin1
:set noswapfile
:if !has('python') | e! test.ok | wq! test.out | endif
:lang C
:fun Test()
:py import vim
:py cb = vim.current.buffer
: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]):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for various python features.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1700 lines, 48188 characters written:set ff& cpo+=A
/ENDTEST:   endif
:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:" vim: et ts=4 isk-=\:
:while getchar(0) isnot 0|endwhile
ENDTEST

start:


:so! Xdotest
:so small.vim
"test.ok" 1445 lines, 67439 characters

"test.out" [New File] 1445 lines, 67439 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test86 = test61; then \
#	  if diff test.out test86.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test86.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test86.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test87.failed test.ok test.out X* viminfo
cp test87.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/gui_gtk_f.o gui_gtk_f.c
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test87.in
[?1h="test87.in" 1707 lines, 49069 charactersTests for various python features.     vim: set ft=vim :

STARTTEST
:so small.vim
:set noswapfile
:if !has('python3') | e! test.ok | wq! test.out | endif
:lang C
:fun Test()
:py3 import vim
:py3 cb = vim.current.buffer
: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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for various python features.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1701 lines, 48985 characters written:set ff& cpo+=A
/ENDTEST:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:/^start:/,$w! test.out
:" vim: et ts=4 isk-=\:
:while getchar(0) isnot 0|endwhile
ENDTEST

start:


:so! Xdotest
:so small.vim
"test.ok" 1445 lines, 77744 characters

"test.out" [New File] 1445 lines, 77744 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test87 = test61; then \
#	  if diff test.out test87.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test87.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test87.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test12.failed test.ok test.out X* viminfo
cp test12.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test12.in
[?1h="test12.in" 52 lines, 1199 charactersTests for 'directory' option.
- ".", in same dir as file
- "./dir", in directory relative to file
- "dir", in directory relative to current dir

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo
:set dir=.,~
:/start of testfile/,/end of testfile/w! Xtest1
:" do an ls of the current dir to find the swap file (should not be there)
:if has("unix")
:  !ls .X*.swp >test.out
:else
:  r !ls X*.swp >test.out
:endif
:!echo first line >>test.out
:e Xtest1
:if has("unix")
:" Do an ls of the current dir to find the swap file, remove the leading dot
:" to make the result the same for all systems.
:  r!ls .X*.swp
:  s/\.*X/X/:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for 'directory' option./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 40 lines, 965 characters written:set ff& cpo+=A
/ENDTEST:!mkdir Xtest2
:set dir=./Xtest2,.,~
:e Xtest1
:!ls X*.swp >>test.out
:!echo under under >>test.out
:!ls Xtest2 >>test.out
:!echo under Xtest1.swp >>test.out
:!mkdir Xtest.je
:/start of testfile/,/end of testfile/w! Xtest2/Xtest3
:set dir=Xtest.je,~
:e Xtest2/Xtest3
:swap
:!ls Xtest2 >>test.out
:!echo under Xtest3 >>test.out
:!ls Xtest.je >>test.out
:!echo under Xtest3.swp >>test.out
:qa!
ENDTEST

start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
:so! Xdotest
:so small.vim
"test.ok" 10 lines, 127 characters

"test.out" [New File] 10 lines, 127 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test12 = test61; then \
#	  if diff test.out test12.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test12.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test12.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test25.failed test.ok test.out X* viminfo
cp test25.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test25.in
[?1h="test25.in" 31 lines, 840 charactersTest for jumping to a tag with 'hidden' set, with symbolic link in path of tag.
This only works for Unix, because of the symbolic link.

STARTTEST
:so small.vim
:set hidden
:" Create a link from test25.dir to the current directory.
:!rm -f test25.dir
:!ln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line
:r !pwd
d$/test
hP:.w! tags.test
:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.test
G^] x:.w! test.out
:!rm -f test25.dir tags.test
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for jumping to a tag with 'hidden' set, with symbolic link in path of tag./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 540 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
"test.ok" 1 line, 23 characters

"test.out" [New File] 1 line, 23 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test25 = test61; then \
#	  if diff test.out test25.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test25.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test25.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test49.failed test.ok test.out X* viminfo
cp test49.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test49.in
[?1h="test49.in" 32 lines, 705 charactersThis is a test of the script language.

If after adding a new test, the test output doesn't appear properly in
test49.failed, try to add one or more "G"s at the line ending in "test.out"

STARTTEST
:so small.vim
:se nocp nomore viminfo+=nviminfo
:lang mess C
:so test49.vim
:" Go back to this file and append the results from register r.
:buf test49.in
G"rp:/^Results/,$w! test.out
:"
:" make valgrind happy
:redir => funclist
:silent func
:redir END
:for line in split(funclist, "\n")
:  let name = matchstr(line, 'function \zs[A-Z]\w*\ze(')
:  if name != ''
:    exe "delfunc " . name
:  endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
This is a test of the script language./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 23 lines, 475 characters written:set ff& cpo+=A
/ENDTEST






:endfor
:for v in keys(g:)
:  silent! exe "unlet " . v
:endfor
:unlet v
:qa!
ENDTEST

:so! Xdotest
:so small.vim
"test.ok" 84 lines, 2484 characters

"test.out" [New File] 84 lines, 2484 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test49 = test61; then \
#	  if diff test.out test49.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test49.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test49.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test97.failed test.ok test.out X* viminfo
cp test97.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test97.in
[?1h="test97.in" 23 lines, 483 charactersTest whether glob()/globpath() return correct results with certain escaped
characters.

STARTTEST
:so small.vim
:" make sure glob() doesn't use the shell
:set shell=doesnotexist
:" consistent sorting of file names
:set nofileignorecase
:e test.out
:$put =glob('Xxx\{')
:$put =glob('Xxx\$')
:w! Xxx{
:w! Xxx\$
:$put =glob('Xxx\{')
:$put =glob('Xxx\$')
:"
:$put =string(globpath('sautest/autoload', '*.vim'))
:$put =string(globpath('sautest/autoload', '*.vim', 0, 1))
:w
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test whether glob()/globpath() return correct results with certain escaped/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 376 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
"test.ok" 8 lines, 138 characters

"test.out" [New File] 8 lines, 138 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test97 = test61; then \
#	  if diff test.out test97.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test97.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test97.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_listlbr_utf8.failed test.ok test.out X* viminfo
cp test_listlbr_utf8.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr_utf8.in
[?1h="test_listlbr_utf8.in" 134 lines, 4027 charactersTest for linebreak and list option in utf-8 mode

STARTTEST
:so small.vim
:if !exists("+linebreak") || !has("conceal") || !has("signs") | e! test.ok | w!  test.out | qa! | endif
:so mbyte.vim
:set encoding=utf8
:if &enc !=? 'utf-8'|:e! test.ok|:w! test.out|qa!|endif
:10new|:vsp|:vert resize 20
:put =\"\tabcdef hijklmn\tpqrstuvwxyz\u00a01060ABCDEFGHIJKLMNOP \"
:norm! zt
:set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
:fu! ScreenChar(width, lines)
:let c=''
:for j in range(1,a:lines)
:for i in range(1,a:width)
:let c.=nr2char(screenchar(j, i))
:endfor
:let c.="\n"
:endfor
:return c
:endfu:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for linebreak and list option in utf-8 mode/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 129 lines, 3948 characters written:set ff& cpo+=A
/ENDTEST:set list nolinebreak cc=3
:sign define foo text=^Vuff0b
:sign place 1 name=foo line=50 buffer=2
:norm! 2kztj
:let line1=line('.')
0GGlGGlGGlGGl
:let line2=line('.')
:let attr2=attr
:let attr=[]
0GGlGGlGGlGGl
:redraw!
:let line=ScreenChar(winwidth(0),3)
:call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
"test.ok" 57 lines, 1882 characters

"test.out" [New File] 57 lines, 1882 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_listlbr_utf8 = test61; then \
#	  if diff test.out test_listlbr_utf8.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_listlbr_utf8.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr_utf8.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test54.failed test.ok test.out X* viminfo
cp test54.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test54.in
[?1h="test54.in" 22 lines, 658 charactersSome tests for buffer-local autocommands

STARTTEST
:so small.vim
:e xx
:if has("vms")
: !del test.out.*
: au BufLeave <buffer> :!write sys$output "buffer-local autommand in %" > test.oout
:else
: !rm -f test.out
: au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
:endif
:e somefile" here, autocommand for xx shall write test.out
:" but autocommand shall not apply to buffer named <buffer>:bwipe xx" here, autocommand shall be auto-deleted
:e xx" nothing shall be written
:e somefile" nothing shall be written
:qa!
ENDTEST

start of test file xx
end of test file xx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Some tests for buffer-local autocommands/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 15 lines, 555 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
"test.ok" 1 line, 29 characters

"test.out" [New File] 1 line, 29 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test54 = test61; then \
#	  if diff test.out test54.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test54.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test54.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test17.failed test.ok test.out X* viminfo
cp test17.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test17.in
[?1h="test17.in" 135 lines, 2431 charactersTests for:
- "gf" on ${VAR},
- ":checkpath!" with various 'include' settings.

STARTTEST
:so small.vim
:if has("ebcdic")
: set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,}
:else
: set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,}
:endif
:"
:if has("unix")
:let $CDIR = "."
/CDIR
:else
:if has("amiga")
:let $TDIR = "/testdir"
:else
:let $TDIR = "."
:endif
/TDIR
:endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 27 lines, 564 characters written:set ff& cpo+=A
/ENDTEST









:" Dummy writing for making that sure gf doesn't fail even if the current
:" file is modified. It can be occurred when executing the following command
:" directly on Windows without fixing the 'fileformat':
:"  > nmake -f Make_dos.mak test17.out
:w! test.out
gf
:set ff=unix
:w! test.out
:brewind
ENDTEST

:so! Xdotest
:so small.vim
"test.ok" 33 lines, 655 characters

"test.out" [New File] 33 lines, 655 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test17 = test61; then \
#	  if diff test.out test17.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test17.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test17.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test30.failed test.ok test.out X* viminfo
cp test30.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test30.in
[?1h="test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' option

Note: This test will fail if "cat" is not available.

STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for a lot of variations of the 'fileformats' option/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 221 lines, 3592 characters written:set ff& cpo+=A
/ENDTEST:$r XXtt64
Go7^[:$r XXtt71
:$r XXtt72
Go8^[:$r XXtt81
:$r XXtt82
Go9^[:$r XXtt91
:$r XXtt92
:$r XXtt93
Go10^[:$r XXUnix
:set nobinary ff&
:w
:qa!
ENDTEST

unix
unix
eof

dos^M
dos^M
eof

mac^Mmac^M
:so! Xdotest
:so small.vim
"test.ok" 130 lines, 786 characters

"test.out" [New File] 130 lines, 786 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test30 = test61; then \
#	  if diff test.out test30.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test30.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test30.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test32.failed test.ok test.out X* viminfo
cp test32.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test32.in
[?1h="test32.in" 60 lines, 1391 charactersTest for insert expansion

:se cpt=.,w
* add-expands (word from next line) from other window
* add-expands (current buffer first)
* Local expansion, ends in an empty line (unless it becomes a global expansion)
* starts Local and switches to global add-expansion
:se cpt=.,w,i
* i-add-expands and switches to local
* add-expands lines (it would end in an empty line if it didn't ignored it self):se cpt=kXtestfile
* checks k-expansion, and file expansion (use Xtest11 instead of test11,
* because TEST11.OUT may match first on DOS)
:se cpt=w
* checks make_cyclic in other window
:se cpt=u nohid
* checks unloaded buffer expansion
* checks adding mode abortion
:se cpt=t,d
* tag expansion, define add-expansion interrupted
* t-expansion

STARTTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for insert expansion/^STARTTEST

:so small.vim
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 27 lines, 533 characters written:set ff& cpo+=A

/ENDTESTO^N^[IX^[A^X^F^N^[
:" use CTRL-X CTRL-F to complete Xtest11.one, remove it and then use
:" CTRL-X CTRL-F again to verify this doesn't cause trouble.
OX^X^F^H^H^H^H^H^H^H^H^X^F^[ddk
:se cpt=w
OST^N^P^P^P^P^[
:se cpt=u nohid
^WoOEN^N
unl^N^X^X^P^[
:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
O^X^]^X^D^X^D^X^X^D^X^D^X^D^X^D
a^N^[
:wq! test.out
ENDTEST

start of testfile
run1
run2
end of testfile

test11  36Gepeto/Tag/
asd     test11file      36G
Makefileto      run
:so! Xdotest
:so small.vim
"test.ok" 15 lines, 175 characters

"test.out" [New File] 15 lines, 175 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test32 = test61; then \
#	  if diff test.out test32.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test32.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test32.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test58.failed test.ok test.out X* viminfo
cp test58.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test58.in
[?1h="test58.in" 656 lines, 11024 charactersTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for spell checking.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 111 lines, 2591 characters written:set ff& cpo+=A
/ENDTEST:"
:" NOSLITSUGS
:call TestOne('8', '8')
:" Numbers
:call TestOne('9', '9')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1


:so! Xdotest
:so small.vim
"test.ok" 289 lines, 3844 characters

"test.out" [New File] 289 lines, 3844 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test58 = test61; then \
#	  if diff test.out test58.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test58.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test58.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test59.failed test.ok test.out X* viminfo
cp test59.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test59.in
[?1h="test59.in" 626 lines, 10897 charactersTests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 106 lines, 2520 characters written:set ff& cpo+=A
/ENDTEST:call TestOne('3', '3')
:call TestOne('4', '4')
:call TestOne('5', '5')
:call TestOne('6', '6')
:call TestOne('7', '7')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1


:so! Xdotest
:so small.vim
"test.ok" 270 lines, 3685 characters

"test.out"gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/gui_beval.o gui_beval.c
 [New File] 270 lines, 3685 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test59 = test61; then \
#	  if diff test.out test59.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test59.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test59.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test72.failed test.ok test.out X* viminfo
cp test72.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test72.in
[?1h="test72.in" 146 lines, 2110 charactersTests for undo file.
Since this script is sourced we need to explicitly break changes up in
undo-able pieces.  Do that by setting 'undolevels'.

STARTTEST
:so small.vim
:"
:" Test 'undofile': first a simple one-line change.
:set nocompatible viminfo+=nviminfo visualbell
:set ul=100 undofile nomore
:e! Xtestfile
ggdGithis is one line^[:set ul=100
:s/one/ONE/
:set ul=100
:w
:bwipe!
:e Xtestfile
u:.w! test.out
:"
:" Test 'undofile', change in original file fails check
:set noundofile
:e! Xtestfile
:s/line/Line/:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for undo file./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 135 lines, 1913 characters written:set ff& cpo+=A
/ENDTEST:bwipe!
:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST

1111 -----
2222 -----

123456789
:so! Xdotest
:so small.vim
"test.ok" 31 lines, 197 characters

"test.out" [New File] 31 lines, 197 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test72 = test61; then \
#	  if diff test.out test72.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test72.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test72.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test78.failed test.ok test.out X* viminfo
cp test78.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test78.in
[?1h="test78.in" 46 lines, 1464 charactersInserts 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 viminfo+=nviminfo
:e! Xtest
ggdG
:let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01223456789abcdefghijklmnoparstuvwxyz0123456789"
: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', ''):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Inserts 10000 lines with text to fill the swap file with two levels of pointer/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 37 lines, 1208 characters written:set ff& cpo+=A
/ENDTEST: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 linnecount = linedollar | endif
:let i = 1
:while i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call appendd(line('$'), i . ' differs') | exe 'wincmd w' | endif | let i += 1 | endwhile
:q!
:call append(line('$'), 'recovery end')
:w! test.out
:qa!
ENDTEST


:so! Xdotest
:so small.vim
"test.ok" 3 lines, 29 characters

"test.out" [New File] 3 lines, 29 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test78 = test61; then \
#	  if diff test.out test78.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test78.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test78.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test83.failed test.ok test.out X* viminfo
cp test83.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test83.in
[?1h="test83.in" 76 lines, 1273 charactersTests for tag search with !_TAG_FILE_ENCODING.

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
:/^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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for tag search with !_TAG_FILE_ENCODING./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 58 lines, 1021 characters written:set ff& cpo+=A
/ENDTEST: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
:so! Xdotest
:so mbyte.vim
"test.ok" 4 lines, 48 characters

"test.out" [New File] 4 lines, 48 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test83 = test61; then \
#	  if diff test.out test83.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test83.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test83.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test89.failed test.ok test.out X* viminfo
cp test89.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test89.in
[?1h="test89.in" 71 lines, 1514 characters- Some tests for setting 'number' and 'relativenumber'
  This is not all that useful now that the options are no longer reset when
  setting the other.
- Some tests for findfile() function

STARTTEST
:so small.vim
:set hidden nocp nu rnu viminfo+=nviminfo
:redir @a | set nu? rnu? | redir END
:e! xx
:redir @b | set nu? rnu? | redir END
:e! #
:$put ='results:'
:$put a
:$put b
:"
:set nonu nornu
:setglobal nu
:setlocal rnu
:redir @c | setglobal nu? | redir END
:set nonu nornu
:setglobal rnu
:setlocal nu:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
- Some tests for setting 'number' and 'relativenumber'/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 63 lines, 1305 characters written:set ff& cpo+=A
/ENDTEST:$put =':set MUST reset the other global value'
:$put g
:$put h
:"
:let cwd=getcwd()
:cd ..
:" Tests may be run from a shadow directory, so an extra cd needs to be done to
:" get above src/
:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
:$put =''
:$put ='Testing findfile'
:$put =''
:set ssl
:$put =findfile('test19.in','src/test*')
:exe "cd" cwd
:cd ..
:$put =findfile('test19.in','test*')
:$put =findfile('test19.in','testdir')
:exe "cd" cwd
:/^results/,$w! test.out
:q!
ENDTEST


:so! Xdotest
:so small.vim
"test.ok" 28 lines, 356 characters

"test.out" [New File] 28 lines, 356 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test89 = test61; then \
#	  if diff test.out test89.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test89.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test89.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_arglist.vim
[?1h="test_arglist.vim" 318 lines, 6653 characters

"test.ok" [New File]

"test.out" [New File] 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_assert.vim
[?1h="test_assert.vim" 125 lines, 2880 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_autochdir.vim
[?1h="test_autochdir.vim" 17 lines, 332 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_backspace_opt.vim
[?1h="test_backspace_opt.vim" 59 lines, 1673 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_bufwintabinfo.vim
[?1h="test_bufwintabinfo.vim" 116 lines, 3459 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_cdo.vim
[?1h="test_cdo.vim" 205 lines, 5116 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_channel.vim
[?1h="test_channel.vim" 1528 lines, 43719 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_charsearch.vim
[?1h="test_charsearch.vim" 62 lines, 1475 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_cmdline.vim
[?1h="test_cmdline.vim" 191 lines, 5876 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_crypt.vim
[?1h="test_crypt.vim" 83 lines, 2590 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_cscope.vim
[?1h="test_cscope.vim" 279 lines, 10568 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_diffmode.vim
[?1h="test_diffmode.vim" 220 lines, 4746 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_digraph.vim
[?1h="test_digraph.vim" 461 lines, 14928 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_farsi.vim
[?1h="test_farsi.vim" 84 lines, 2881 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_fnameescape.vim
[?1h="test_fnameescape.vim" 21 lines, 467 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_gf.vim
[?1h="test_gf.vim" 33 lines, 1138 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_gn.vim
[?1h="test_gn.vim" 93 lines, 2821 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_gui.vim
[?1h="test_gui.vim" 36 lines, 838 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_hardcopy.vim
[?1h="test_hardcopy.vim" 62 lines, 2001 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_history.vim
[?1h="test_history.vim" 65 lines, 1978 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_hlsearch.vim
[?1h="test_hlsearch.vim" 34 lines, 1013 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_increment.vim
[?1h="test_increment.vim" 760 lines, 19011 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_increment_dbcs.vim
[?1h="test_increment_dbcs.vim" 30 lines, 604 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_job_fails.vim
[?1h="test_job_fails.vim" 19 lines, 598 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_json.vim
[?1h="test_json.vim" 281 lines, 10366 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_langmap.vim
[?1h="test_langmap.vim" 28 lines, 628 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_man.vim
[?1h="test_man.vim" 60 lines, 1358 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_marks.vim
[?1h="test_marks.vim" 26 lines, 775 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_matchadd_conceal.vim
[?1h="test_matchadd_conceal.vim" 266 lines, 8378 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_nested_function.vim
[?1h="test_nested_function.vim" 32 lines, 622 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_netbeans.vim
[?1h="test_netbeans.vim" 79 lines, 2100 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_normal.vim
[?1h="test_normal.vim" 2209 lines, 57349 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_packadd.vim
[?1h="test_packadd.vim" 238 lines, 8288 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_perl.vim
[?1h="test_perl.vim" 123 lines, 3037 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_quickfix.vim
[?1h="test_quickfix.vim" 1594 lines, 44709 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_ruby.vim
[?1h="test_ruby.vim" 34 lines, 820 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_search.vim
[?1h="test_search.vim" 281 lines, 8457 characters

"test.ok" [New File]

"test.out"/usr/bin/glib-compile-resources --target=auto/gui_gtk_gresources.c --sourcedir=../pixmaps --generate --c-name=gui_gtk --manual-register gui_gtk_res.xml
 0 lines, 0 characters written
[?1l>
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -I/usr/include/lua5.2 -o objects/if_lua.o if_lua.c
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_signs.vim
[?1h="test_signs.vim" 199 lines, 6383 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_smartindent.vim
[?1h="test_smartindent.vim" 14 lines, 376 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_startup.vim
[?1h="test_startup.vim" 185 lines, 4581 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_startup_utf8.vim
[?1h="test_startup_utf8.vim" 64 lines, 1366 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_stat.vim
[?1h="test_stat.vim" 64 lines, 1598 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_substitute.vim
[?1h="test_substitute.vim" 41 lines, 1151 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_syntax.vim
[?1h="test_syntax.vim" 82 lines, 1624 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_textobjects.vim
[?1h="test_textobjects.vim" 43 lines, 946 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_undo.vim
[?1h="test_undo.vim" 237 lines, 6322 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_usercommands.vim
[?1h="test_usercommands.vim" 104 lines, 2527 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_viminfo.vim
[?1h="test_viminfo.vim" 495 lines, 13092 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_viml.vim
[?1h="test_viml.vim" 1245 lines, 29827 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_visual.vim
[?1h="test_visual.vim" 17 lines, 339 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_window_id.vim
[?1h="test_window_id.vim" 94 lines, 2575 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_writefile.vim
[?1h="test_writefile.vim" 16 lines, 490 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_alot_latin.vim
[?1h="test_alot_latin.vim" 7 lines, 280 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_alot_utf8.vim
[?1h="test_alot_utf8.vim" 11 lines, 440 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_alot.vim
[?1h="test_alot.vim" 46 lines, 1183 characters

"test.ok" [New File]

"test.out" 0 lines, 0 characters written
[?1l>

Test results:
ALL DONE
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-tiny/testdir'
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/json_test.o json_test.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/gui_gtk.o gui_gtk.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       version.c -o objects/version.o
link.sh: $LINK_AS_NEEDED set to 'yes': invoking linker directly.
  gcc   -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed 	-o json_test objects/arabic.o objects/buffer.o objects/blowfish.o objects/charset.o objects/crypt.o objects/crypt_zip.o objects/dict.o objects/diff.o objects/digraph.o objects/edit.o objects/eval.o objects/evalfunc.o objects/ex_cmds.o objects/ex_cmds2.o objects/ex_docmd.o objects/ex_eval.o objects/ex_getln.o objects/farsi.o objects/fileio.o objects/fold.o objects/getchar.o objects/hardcopy.o objects/hashtab.o  objects/if_cscope.o objects/if_xcmdsrv.o objects/list.o objects/mark.o objects/memline.o objects/menu.o objects/misc1.o objects/misc2.o objects/move.o objects/mbyte.o objects/normal.o objects/ops.o objects/option.o objects/os_unix.o objects/pathdef.o objects/popupmnu.o objects/quickfix.o objects/regexp.o objects/screen.o objects/search.o objects/sha256.o objects/spell.o objects/spellfile.o objects/syntax.o objects/tag.o objects/term.o objects/ui.o objects/undo.o objects/userfunc.o objects/version.o objects/window.o              objects/memfile.o objects/message.o objects/json_test.o    -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE  -lm -ltinfo  -lselinux -lacl -lattr -ldl           
link.sh: Linked fine
./json_test || exit 1; echo  passed;
passed
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/memfile_test.o memfile_test.c
/usr/bin/perl -e 'unless ( $] >= 5.005 ) { for (qw(na defgv errgv)) { print "#define PL_$_ $_\n" }}' > auto/if_perl.c
/usr/bin/perl /usr/share/perl/5.24/ExtUtils/xsubpp -prototypes -typemap \
    /usr/share/perl/5.24/ExtUtils/typemap if_perl.xs >> auto/if_perl.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv  -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/arm-linux-gnueabihf/perl/5.24/CORE  -o objects/if_perlsfio.o if_perlsfio.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       version.c -o objects/version.o
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -I/usr/include/python3.5m -DPYTHON3_HOME='L"/usr"' -pthread -fPIE  -o objects/if_python3.o if_python3.c
if test -z "/usr/bin/glib-compile-resources"; then touch auto/gui_gtk_gresources.h; else \
	/usr/bin/glib-compile-resources --target=auto/gui_gtk_gresources.h --sourcedir=../pixmaps --generate --c-name=gui_gtk --manual-register gui_gtk_res.xml; \
fi
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/pty.o pty.c
link.sh: $LINK_AS_NEEDED set to 'yes': invoking linker directly.
  gcc   -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed 	-o memfile_test objects/arabic.o objects/buffer.o objects/blowfish.o objects/charset.o objects/crypt.o objects/crypt_zip.o objects/dict.o objects/diff.o objects/digraph.o objects/edit.o objects/eval.o objects/evalfunc.o objects/ex_cmds.o objects/ex_cmds2.o objects/ex_docmd.o objects/ex_eval.o objects/ex_getln.o objects/farsi.o objects/fileio.o objects/fold.o objects/getchar.o objects/hardcopy.o objects/hashtab.o  objects/if_cscope.o objects/if_xcmdsrv.o objects/list.o objects/mark.o objects/memline.o objects/menu.o objects/misc1.o objects/misc2.o objects/move.o objects/mbyte.o objects/normal.o objects/ops.o objects/option.o objects/os_unix.o objects/pathdef.o objects/popupmnu.o objects/quickfix.o objects/regexp.o objects/screen.o objects/search.o objects/sha256.o objects/spell.o objects/spellfile.o objects/syntax.o objects/tag.o objects/term.o objects/ui.o objects/undo.o objects/userfunc.o objects/version.o objects/window.o              objects/json.o objects/message.o objects/memfile_test.o    -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE  -lm -ltinfo  -lselinux -lacl -lattr -ldl           
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/eval.o eval.c
link.sh: Linked fine
./memfile_test || exit 1; echo  passed;
passed
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/message_test.o message_test.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/gui_gtk_f.o gui_gtk_f.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/gui_beval.o gui_beval.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       version.c -o objects/version.o
/usr/bin/glib-compile-resources --target=auto/gui_gtk_gresources.c --sourcedir=../pixmaps --generate --c-name=gui_gtk --manual-register gui_gtk_res.xml
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -I/usr/include/lua5.2 -o objects/if_lua.o if_lua.c
link.sh: $LINK_AS_NEEDED set to 'yes': invoking linker directly.
  gcc   -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed 	-o message_test objects/arabic.o objects/buffer.o objects/blowfish.o objects/charset.o objects/crypt.o objects/crypt_zip.o objects/dict.o objects/diff.o objects/digraph.o objects/edit.o objects/eval.o objects/evalfunc.o objects/ex_cmds.o objects/ex_cmds2.o objects/ex_docmd.o objects/ex_eval.o objects/ex_getln.o objects/farsi.o objects/fileio.o objects/fold.o objects/getchar.o objects/hardcopy.o objects/hashtab.o  objects/if_cscope.o objects/if_xcmdsrv.o objects/list.o objects/mark.o objects/memline.o objects/menu.o objects/misc1.o objects/misc2.o objects/move.o objects/mbyte.o objects/normal.o objects/ops.o objects/option.o objects/os_unix.o objects/pathdef.o objects/popupmnu.o objects/quickfix.o objects/regexp.o objects/screen.o objects/search.o objects/sha256.o objects/spell.o objects/spellfile.o objects/syntax.o objects/tag.o objects/term.o objects/ui.o objects/undo.o objects/userfunc.o objects/version.o objects/window.o              objects/json.o objects/memfile.o objects/message_test.o    -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE  -lm -ltinfo  -lselinux -lacl -lattr -ldl           
link.sh: Linked fine
./message_test || exit 1; echo  passed;
passed
make[1]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-tiny'
touch build-stamp-vim-tiny
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -I/usr/include/tcl8.6  -D_REENTRANT=1  -D_THREAD_SAFE=1  -D_LARGEFILE64_SOURCE=1  -o objects/if_tcl.o if_tcl.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -I/usr/include/ruby-2.3.0 -I/usr/include/arm-linux-gnueabihf/ruby-2.3.0 -DRUBY_VERSION=23 -o objects/if_ruby.o if_ruby.c
/usr/bin/perl -e 'unless ( $] >= 5.005 ) { for (qw(na defgv errgv)) { print "#define PL_$_ $_\n" }}' > auto/if_perl.c
/usr/bin/perl /usr/share/perl/5.24/ExtUtils/xsubpp -prototypes -typemap \
    /usr/share/perl/5.24/ExtUtils/typemap if_perl.xs >> auto/if_perl.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv  -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/arm-linux-gnueabihf/perl/5.24/CORE  -o objects/if_perlsfio.o if_perlsfio.c
dh_testdir
dh_prep -p vim-athena
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/evalfunc.o evalfunc.c
*** DEBIAN *** BUILDING VARIANT vim-athena
/usr/bin/make -C src/vim-athena
make[1]: Entering directory '/<<PKGBUILDDIR>>/src/vim-athena'
mkdir objects
CC="gcc -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time    " srcdir=. sh ./osdef.sh
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -I/usr/include/python3.5m -DPYTHON3_HOME='L"/usr"' -pthread -fPIE  -o objects/if_python3.o if_python3.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/netbeans.o netbeans.c
creating auto/pathdef.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/popupmnu.o popupmnu.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/quickfix.o quickfix.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/channel.o channel.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -I/usr/include/tcl8.6  -D_REENTRANT=1  -D_THREAD_SAFE=1  -D_LARGEFILE64_SOURCE=1  -o objects/if_tcl.o if_tcl.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/regexp.o regexp.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_cmds.o ex_cmds.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/json.o json.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -I/usr/include/ruby-2.3.0 -I/usr/include/arm-linux-gnueabihf/ruby-2.3.0 -DRUBY_VERSION=23 -o objects/if_ruby.o if_ruby.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/main.o main.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/netbeans.o netbeans.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/memfile.o memfile.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_cmds2.o ex_cmds2.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/channel.o channel.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/message.o message.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_docmd.o ex_docmd.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/json.o json.c
cd xxd; CC="gcc" CFLAGS="-Wdate-time -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1" LDFLAGS="-L. -Wl,-z,relro -Wl,-z,now -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-E  -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" \
	/usr/bin/make -f Makefile
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-gtk/xxd'
gcc -Wdate-time -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -L. -Wl,-z,relro -Wl,-z,now -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-E  -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -DUNIX -o xxd xxd.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-gtk/xxd'
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-gtk/po'
OLD_PO_FILE_INPUT=yes msgfmt -v -o af.mo af.po
1423 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ca.mo ca.po
1697 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o cs.mo cs.po
1284 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o de.mo de.po
1701 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o en_GB.mo en_GB.po
78 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o eo.mo eo.po
1916 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o es.mo es.po
1733 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o fi.mo fi.po
1902 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o fr.mo fr.po
1916 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ga.mo ga.po
1888 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o it.mo it.po
1897 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ja.mo ja.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ko.mo ko.po
1728 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ko.UTF-8.mo ko.UTF-8.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/main.o main.c
1728 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o nb.mo nb.po
1668 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o nl.mo nl.po
1213 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o no.mo no.po
1668 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o pl.mo pl.po
1869 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o pt_BR.mo pt_BR.po
1735 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ru.mo ru.po
1882 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o sk.mo sk.po
1628 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o sv.mo sv.po
1697 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o uk.mo uk.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o vi.mo vi.po
1422 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_CN.UTF-8.mo zh_CN.UTF-8.po
1634 translated messages, 3 fuzzy translations.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_CN.mo zh_CN.po
1633 translated messages, 3 fuzzy translations.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_TW.UTF-8.mo zh_TW.UTF-8.po
1422 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_TW.mo zh_TW.po
1422 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o cs.cp1250.mo cs.cp1250.po
1284 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ja.sjis.mo ja.sjis.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ja.euc-jp.mo ja.euc-jp.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o pl.cp1250.mo pl.cp1250.po
1869 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o pl.UTF-8.mo pl.UTF-8.po
1869 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ru.cp1251.mo ru.cp1251.po
1882 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o sk.cp1250.mo sk.cp1250.po
1628 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o uk.cp1251.mo uk.cp1251.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_CN.cp936.mo zh_CN.cp936.po
1633 translated messages, 3 fuzzy translations.
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-gtk/po'
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-gtk/po'
make[2]: Nothing to be done for 'converted'.
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-gtk/po'
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/arabic.o arabic.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/buffer.o buffer.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/memfile.o memfile.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/message.o message.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_eval.o ex_eval.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/blowfish.o blowfish.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_getln.o ex_getln.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/charset.o charset.c
cd xxd; CC="gcc" CFLAGS="-Wdate-time -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1" LDFLAGS="-L. -Wl,-z,relro -Wl,-z,now -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-E  -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" \
	/usr/bin/make -f Makefile
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-gtk3/xxd'
gcc -Wdate-time -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -L. -Wl,-z,relro -Wl,-z,now -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-E  -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -DUNIX -o xxd xxd.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/screen.o screen.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-gtk3/xxd'
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-gtk3/po'
OLD_PO_FILE_INPUT=yes msgfmt -v -o af.mo af.po
1423 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ca.mo ca.po
1697 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o cs.mo cs.po
1284 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o de.mo de.po
1701 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o en_GB.mo en_GB.po
78 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o eo.mo eo.po
1916 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o es.mo es.po
1733 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o fi.mo fi.po
1902 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o fr.mo fr.po
1916 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ga.mo ga.po
1888 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o it.mo it.po
1897 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ja.mo ja.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ko.mo ko.po
1728 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ko.UTF-8.mo ko.UTF-8.po
1728 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o nb.mo nb.po
1668 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o nl.mo nl.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/crypt.o crypt.c
1213 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o no.mo no.po
1668 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o pl.mo pl.po
1869 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o pt_BR.mo pt_BR.po
1735 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ru.mo ru.po
1882 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o sk.mo sk.po
1628 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o sv.mo sv.po
1697 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o uk.mo uk.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o vi.mo vi.po
1422 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_CN.UTF-8.mo zh_CN.UTF-8.po
1634 translated messages, 3 fuzzy translations.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_CN.mo zh_CN.po
1633 translated messages, 3 fuzzy translations.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_TW.UTF-8.mo zh_TW.UTF-8.po
1422 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_TW.mo zh_TW.po
1422 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o cs.cp1250.mo cs.cp1250.po
1284 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ja.sjis.mo ja.sjis.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ja.euc-jp.mo ja.euc-jp.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o pl.cp1250.mo pl.cp1250.po
1869 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o pl.UTF-8.mo pl.UTF-8.po
1869 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ru.cp1251.mo ru.cp1251.po
1882 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o sk.cp1250.mo sk.cp1250.po
1628 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o uk.cp1251.mo uk.cp1251.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_CN.cp936.mo zh_CN.cp936.po
1633 translated messages, 3 fuzzy translations.
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-gtk3/po'
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-gtk3/po'
make[2]: Nothing to be done for 'converted'.
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-gtk3/po'
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/arabic.o arabic.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/crypt_zip.o crypt_zip.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/buffer.o buffer.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/dict.o dict.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/farsi.o farsi.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/diff.o diff.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/fileio.o fileio.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/digraph.o digraph.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/blowfish.o blowfish.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/edit.o edit.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/charset.o charset.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/search.o search.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/crypt.o crypt.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/fold.o fold.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/crypt_zip.o crypt_zip.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/dict.o dict.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/getchar.o getchar.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/diff.o diff.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/sha256.o sha256.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/eval.o eval.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/spell.o spell.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/digraph.o digraph.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/hardcopy.o hardcopy.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/edit.o edit.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/hashtab.o hashtab.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/if_cscope.o if_cscope.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/if_xcmdsrv.o if_xcmdsrv.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/evalfunc.o evalfunc.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/list.o list.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/mark.o mark.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/spellfile.o spellfile.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/memline.o memline.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/eval.o eval.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/menu.o menu.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/misc1.o misc1.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_cmds.o ex_cmds.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/syntax.o syntax.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/evalfunc.o evalfunc.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_cmds2.o ex_cmds2.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/misc2.o misc2.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/tag.o tag.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/move.o move.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_docmd.o ex_docmd.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_cmds.o ex_cmds.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/term.o term.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/mbyte.o mbyte.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/normal.o normal.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ui.o ui.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/undo.o undo.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_cmds2.o ex_cmds2.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/userfunc.o userfunc.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ops.o ops.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_eval.o ex_eval.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_docmd.o ex_docmd.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_getln.o ex_getln.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/window.o window.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1             -o objects/option.o option.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/gui.o gui.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/farsi.o farsi.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/fileio.o fileio.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_eval.o ex_eval.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/os_unix.o os_unix.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/gui_athena.o gui_athena.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_getln.o ex_getln.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/gui_x11.o gui_x11.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/pathdef.o auto/pathdef.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       version.c -o objects/version.o
link.sh: $LINK_AS_NEEDED set to 'yes': invoking linker directly.
  gcc   -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed 	-o vim objects/arabic.o objects/buffer.o objects/blowfish.o objects/charset.o objects/crypt.o objects/crypt_zip.o objects/dict.o objects/diff.o objects/digraph.o objects/edit.o objects/eval.o objects/evalfunc.o objects/ex_cmds.o objects/ex_cmds2.o objects/ex_docmd.o objects/ex_eval.o objects/ex_getln.o objects/farsi.o objects/fileio.o objects/fold.o objects/getchar.o objects/hardcopy.o objects/hashtab.o  objects/if_cscope.o objects/if_xcmdsrv.o objects/list.o objects/mark.o objects/memline.o objects/menu.o objects/misc1.o objects/misc2.o objects/move.o objects/mbyte.o objects/normal.o objects/ops.o objects/option.o objects/os_unix.o objects/pathdef.o objects/popupmnu.o objects/quickfix.o objects/regexp.o objects/screen.o objects/search.o objects/sha256.o objects/spell.o objects/spellfile.o objects/syntax.o objects/tag.o objects/term.o objects/ui.o objects/undo.o objects/userfunc.o objects/version.o objects/window.o           objects/netbeans.o objects/channel.o  objects/json.o objects/main.o objects/memfile.o objects/message.o        -lm -ltinfo -lnsl  -lselinux -lacl -lattr -lgpm -ldl           
link.sh: Linked fine
make[1]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-basic'
[ yes != "yes" ] || flock debian /usr/bin/make -j1 -C src/vim-basic test
make[1]: warning: -jN forced in submake: disabling jobserver mode.
make[1]: Entering directory '/<<PKGBUILDDIR>>/src/vim-basic'
/usr/bin/make -f Makefile vim
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-basic'
make[2]: 'vim' is up to date.
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-basic'
if test -n "yes" -a -f po/Makefile; then \
	cd po; /usr/bin/make -f Makefile check VIM=../vim; \
fi
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-basic/po'
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq af.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/pty.o pty.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/gui_beval.o gui_beval.c
touch af.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ca.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/gui_at_sb.o gui_at_sb.c
touch ca.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq cs.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/gui_at_fs.o gui_at_fs.c
touch cs.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq de.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/fold.o fold.c
touch de.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq en_GB.po
touch en_GB.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq eo.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/farsi.o farsi.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -I/usr/include/lua5.2 -o objects/if_lua.o if_lua.c
touch eo.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq es.po
touch es.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq fi.po
/usr/bin/perl -e 'unless ( $] >= 5.005 ) { for (qw(na defgv errgv)) { print "#define PL_$_ $_\n" }}' > auto/if_perl.c
/usr/bin/perl /usr/share/perl/5.24/ExtUtils/xsubpp -prototypes -typemap \
    /usr/share/perl/5.24/ExtUtils/typemap if_perl.xs >> auto/if_perl.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv  -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/arm-linux-gnueabihf/perl/5.24/CORE  -o objects/if_perlsfio.o if_perlsfio.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/getchar.o getchar.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/fileio.o fileio.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -I/usr/include/python3.5m -DPYTHON3_HOME='L"/usr"' -pthread -fPIE  -o objects/if_python3.o if_python3.c
touch fi.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq fr.po
touch fr.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ga.po
touch ga.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq it.po
touch it.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.po
touch ja.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ko.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/hardcopy.o hardcopy.c
touch ko.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ko.UTF-8.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -I/usr/include/tcl8.6  -D_REENTRANT=1  -D_THREAD_SAFE=1  -D_LARGEFILE64_SOURCE=1  -o objects/if_tcl.o if_tcl.c
touch ko.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq nb.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -I/usr/include/ruby-2.3.0 -I/usr/include/arm-linux-gnueabihf/ruby-2.3.0 -DRUBY_VERSION=23 -o objects/if_ruby.o if_ruby.c
touch nb.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq nl.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/fold.o fold.c
touch nl.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq no.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/netbeans.o netbeans.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/hashtab.o hashtab.c
touch no.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/if_cscope.o if_cscope.c
touch pl.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pt_BR.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/channel.o channel.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/getchar.o getchar.c
touch pt_BR.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ru.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/if_xcmdsrv.o if_xcmdsrv.c
touch ru.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sk.po
touch sk.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sv.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/list.o list.c
touch sv.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq uk.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/json.o json.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/main.o main.c
touch uk.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq vi.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/mark.o mark.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/hardcopy.o hardcopy.c
touch vi.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.UTF-8.po
touch zh_CN.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/memfile.o memfile.c
touch zh_CN.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_TW.UTF-8.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/memline.o memline.c
touch zh_TW.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_TW.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/message.o message.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/hashtab.o hashtab.c
touch zh_TW.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq cs.cp1250.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/if_cscope.o if_cscope.c
touch cs.cp1250.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.sjis.po
touch ja.sjis.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.euc-jp.po
cd xxd; CC="gcc" CFLAGS="-Wdate-time -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1" LDFLAGS="-L. -Wl,-z,relro -Wl,-z,now -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-E  -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" \
	/usr/bin/make -f Makefile
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-athena/xxd'
gcc -Wdate-time -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -L. -Wl,-z,relro -Wl,-z,now -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-E  -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -DUNIX -o xxd xxd.c
touch ja.euc-jp.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.cp1250.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/if_xcmdsrv.o if_xcmdsrv.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/menu.o menu.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-athena/xxd'
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-athena/po'
OLD_PO_FILE_INPUT=yes msgfmt -v -o af.mo af.po
1423 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ca.mo ca.po
1697 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o cs.mo cs.po
1284 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o de.mo de.po
1701 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o en_GB.mo en_GB.po
78 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o eo.mo eo.po
1916 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o es.mo es.po
1733 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o fi.mo fi.po
1902 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o fr.mo fr.po
1916 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ga.mo ga.po
1888 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o it.mo it.po
1897 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ja.mo ja.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ko.mo ko.po
1728 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ko.UTF-8.mo ko.UTF-8.po
1728 translated messages.
touch pl.cp1250.ck
OLD_PO_FILE_INPUT=yes msgfmt -v -o nb.mo nb.po
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.UTF-8.po
1668 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o nl.mo nl.po
1213 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o no.mo no.po
1668 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o pl.mo pl.po
1869 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o pt_BR.mo pt_BR.po
1735 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ru.mo ru.po
1882 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o sk.mo sk.po
1628 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o sv.mo sv.po
1697 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o uk.mo uk.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o vi.mo vi.po
1422 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_CN.UTF-8.mo zh_CN.UTF-8.po
1634 translated messages, 3 fuzzy translations.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_CN.mo zh_CN.po
1633 translated messages, 3 fuzzy translations.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_TW.UTF-8.mo zh_TW.UTF-8.po
1422 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_TW.mo zh_TW.po
1422 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o cs.cp1250.mo cs.cp1250.po
1284 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ja.sjis.mo ja.sjis.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ja.euc-jp.mo ja.euc-jp.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o pl.cp1250.mo pl.cp1250.po
1869 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o pl.UTF-8.mo pl.UTF-8.po
1869 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o ru.cp1251.mo ru.cp1251.po
1882 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o sk.cp1250.mo sk.cp1250.po
1628 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o uk.cp1251.mo uk.cp1251.po
1918 translated messages.
OLD_PO_FILE_INPUT=yes msgfmt -v -o zh_CN.cp936.mo zh_CN.cp936.po
1633 translated messages, 3 fuzzy translations.
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-athena/po'
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-athena/po'
make[2]: Nothing to be done for 'converted'.
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-athena/po'
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/arabic.o arabic.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/list.o list.c
touch pl.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ru.cp1251.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/misc1.o misc1.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/buffer.o buffer.c
touch ru.cp1251.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sk.cp1250.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/mark.o mark.c
touch sk.cp1250.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq uk.cp1251.po
touch uk.cp1251.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.cp936.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/memline.o memline.c
touch zh_CN.cp936.ck
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-basic/po'
if test vim != vim -a ! -r vim; then \
	ln -s vim vim; \
fi
cd testdir; /usr/bin/make -f Makefile  VIMPROG=../vim  SCRIPTSOURCE=../../runtime
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-basic/testdir'
rm -f test.log messages
rm -rf test1.failed test.out X* viminfo tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok benchmark.out wrongtermsize
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test1.in
[?1h="test1.in" 57 lines, 2069 charactersFirst a simple test to check if the test script works.

If Vim was not compiled with the +eval feature, the small.vim script will be
set to copy the test.ok file to test.out, so that it looks like the test
succeeded.  Otherwise an empty small.vim is written.  small.vim is sourced by
tests that require the +eval feature or other features that are missing in the
small version.

If Vim was not compiled with the +windows feature, the tiny.vim script will be
set like small.vim above.  tiny.vim is sourced by tests that require the
+windows feature or other features that are missing in the tiny version.

If Vim was not compiled with the +multi_byte feature, the mbyte.vim script will
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
:" If columns or lines are too small, create wrongtermsize.
:" (Some tests will fail. When columns and/or lines are small)
:if &lines < 24 || &columns < 80 | sp another | w! wrongtermsize | qa! | endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 35 lines, 1133 characters written:set ff& cpo+=A



/ENDTEST: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
:w! small.vim
:" If +windows feature not supported :sp will fail and tiny.vim will be
:" written to skip the test.
:sp another
:wq! tiny.vim
:qa!
ENDTEST


:so! Xdotest
:" If columns or lines are too small, create wrongtermsize.
:" (Some tests will fail. When columns and/or lines are small)
:if &lines < 24 || &columns < 80 | sp another | w! wrongtermsize | qa! | endif
:"
:" Write a single line to test.out to check if testing works at all.
:%d
~~~~~~~~~~~~~~~~~~~~~
~
--No lines in buffer--this is a test:w! test.out
"test.out" [New File] 1 line, 15 characters written:" Create small.vim and tiny.vim empty, create mbyte.vim to skip the test.

:w! small.vim
"small.vim" [New File] 1 line, 1 character written:w! tiny.vim
"tiny.vim" [New File] 1 line, 1 character writtene! test.ok
w! test.out
qa!:w! mbyte.vim
"mbyte.vim" [New File] 4 lines, 28 characters written:w! mzscheme.vim
"mzscheme.vim" [New File] 4 lines, 28 characters written:w! lua.vim
"lua.vim" [New File] 4 lines, 28 characters written:"
:" If +multi_byte feature supported, make mbyte.vim empty.
:if has("multi_byte") | sp another | w! mbyte.vim | q | endif
"another" [New File]
"mbyte.vim" 0 lines, 0 characters writtene! test.ok:"
:" 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
[?1l>rm -rf X* viminfo
rm -rf test3.failed test.ok test.out X* viminfo
cp test3.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test3.in
[?1h="test3.in" 2303 lines, 22649 characters/* vim: set cin ts=4 sw=4 : */

Test for 'cindent'

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo modeline
:edit" read modeline
/start of AUTO
=/end of AUTO
ENDTEST

/* start of AUTO matically checked vim: set ts=4 : */
{if (test)cmd1;cmd2;
}

{if (test)cmd1;else:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/* vim: set cin ts=4 sw=4 : *//^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 125 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo modeline
:edit                " read modeline
"test3.in"2303L, 22649Cif (test)cmd1;cmd2;if (test)cmd1;else/start of AUTO
/end of AUTO
956 lines to indent...
9500
850
750
650
550
450
350
250
150
50 lines to indent... 
957 lines indented /^STARTTEST
}break;default:baz();baz();break;
    }
}

/* end of AUTO */

STARTTEST
:set tw=0 wm=60 columns=80 noai fo=croq
/serious/e
a about life, the universe, and the rest^[
ENDTEST

{

/* this is
 * a real serious important big
 * comment
 */
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 93C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set tw=0 wm=60 columns=80 noai fo=croq
}break;default:baz();baz();break;
    }
}

/* end of AUTO */

STARTTEST
:set tw=0 wm=60 columns=80 noai fo=croq
/serious/e
a about life, the universe, and the rest^[
ENDTEST

{

/* this is
 * a real serious important big
 * comment
 *//serious/e



-- INSERT --
about life, the
 * universe, and the
 * rest important big
* comment
/^STARTTEST





*/
    /* insert " about life, the universe, and the rest" after "serious" */
}

STARTTEST
:set nocin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 6L, 78C written:set ff& cpo+=A

/ENDTEST/+-1




/comments
joabout life^[/happens
jothere^[/below
oline^[/this
Ohello^[
ENDTEST

:so! Xdotest
:set nocin
/comments




{
    /** Testing for comments, without 'cin' set
*/
-- INSERT --
about life
/happens



/*
* what happens here?
*/
-- INSERT --
there
/below



/*the end of the comment, try inserting a line below */
-- INSERT --
line
/this



/* how aboutthis one */
-- INSERT --hello
this one */
/^STARTTEST



}

STARTTEST
:set cin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 18C written:set ff& cpo+=A

/ENDTEST/+-1

/vec2
==
ENDTEST

:so! Xdotest
:set cin
/vec2





{
    var = this + that + vec[0] * vec[0]+ vec[1] * vec[1]+ vec2[2] * vec[2];
}
/^STARTTEST


STARTTEST
:set cin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5L, 51C written:set ff& cpo+=A

/ENDTEST/+-1



:set cino=}4
/testing1
k2==/testing2
k2==
ENDTEST

:so! Xdotest
:set cin
:set cino=}4
/testing1








{asdf asdflkajds f;
    if (tes & ting) {asdf asdf asdf ;asdfa sdf asdf;}
    testing1; 

/testing2






if (tes & ting)
    {asdf asdf asdf ;asdfa sdf asdf;}
    testing2; 
/^STARTTEST



}

STARTTEST
:set cin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 4L, 36C written:set ff& cpo+=A

/ENDTEST/+-1


:set cino=(0,)20
/main
=][
ENDTEST

:so! Xdotest
:set cin
:set cino=(0,)20
/main


main ( int first_par, /*
19 lines to indent...
20indented 
* Comment for
/^STARTTEST
* Comment for* first par*/second_par /** Comment for* second par*/);

}

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();
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 4L, 36C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cin
:set cino=es,n0s
/main
8 lines to indent...
9indented 
/^STARTTEST







else
    {bar();
    }
}

STARTTEST
:set cin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 26C written:set ff& cpo+=A

/ENDTEST/+-1

:set cino=
]]=][
ENDTEST

:so! Xdotest
:set cin
:set cino=


{
11 lines to indent...
12indented 
do
/^STARTTEST
if (){if ()asdf;elseasdf;}
    } while ();
    cmd;/* this should go under the } */
}

STARTTEST
]]=][
ENDTEST

void f()
{
    if ( k() ) {l();} else { /* Start (two words) end */m();
    }
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 1L, 6C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest



8 lines to indent...
9indented 
   /^STARTTEST





n();
}

STARTTEST
:set cino={s,e-s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
]]=][
ENDTEST

:so! Xdotest
:set cino={s,e-s



void f()
{
7 lines to indent...
8indented     {
if ( k() )
/^STARTTEST









{l();} else { /* Start (two words) end */m();}
    n();    /* should be under the if () */
}

STARTTEST
:set cino={s,fs

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 25C written:set ff& cpo+=A

/ENDTEST/+-1
]]=/ foo
ENDTEST

:so! Xdotest
:set cino={s,fs



void bar(void)
{
/ foo
30 lines to indent...
31indented     {/^STARTTEST
void func(void)
    {
    a = 1;{b = 2;}
    c = 3;
    d = 4;
    }
/* foo */

STARTTEST
:set cino=
/while
ohere^[
ENDTEST

a()
{
  do {
    a = a +a;
  } while ( a );/* add text under this line */
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 25C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=
/while

-- INSERT --
here
if ( a )
    i
/^STARTTEST




a;
}

STARTTEST
:set cino= com=

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 109C written:set ff& cpo+=A

/ENDTEST/+-1


/comment
olabel2: b();^Mlabel3 /* post */:^M/* pre */ label4:^Mf(/*com*/);^Mif (/*com*/)^^Mcmd();^[
ENDTEST

:so! Xdotest
:set cino= com=
/comment






a()
{
label1:/* hmm */// comment
-- INSERT --





label2: b();
label3 /* post */:
/* pre */ label4:f(/*com*/);if (/*com*/)cmd();
}
/^STARTTEST


STARTTEST
:set comments& comments^=s:/*,m:**,ex:*/

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 53C written:set ff& cpo+=A

/ENDTEST/+-1

/simple
=5j
ENDTEST

:gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/blowfish.o blowfish.c
so! Xdotest
:set comments& comments^=s:/*,m:**,ex:*/
/simple



/*
  * A simple comment
5 lines to indent...
6indented * A simple comment
*/
/^STARTTEST






/*
** A different comment
*/

STARTTEST
:set cino=c0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 70C written:set ff& cpo+=A

/ENDTEST/+-1

:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=c0
:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][ENDTEST

void f()
{
4 lines to indent...
5indented 

/^STARTTEST






/*********A comment.
    *********/
}

STARTTEST
:set cino=c0,C1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 73C written:set ff& cpo+=A

/ENDTEST/+-1

:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=c0,C1
:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][ENDTEST

void f()
{
4 lines to indent...
5indented 

/^STARTTEST






/*********
    A comment.
    *********/
}

STARTTEST
:set cino=

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 17C written:set ff& cpo+=A

/ENDTEST/+-1
]]=][
ENDTEST

:so! Xdotest
:set cino=



void f()
{
5 lines to indent...
6indented 
c = c1 &&
/^STARTTEST







(c2 ||c3) && c4;
}

STARTTEST
:set cino=(s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(s
2kdd]]=][ENDTEST

void f()
{
5 lines to indent...
6indented 
c = c1 &&
/^STARTTEST







(c2 ||c3) && c4;
}

STARTTEST
:set cino=(s,U1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 28C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(s,U1  
2kdd]]=][ENDTEST

void f()
{
5 lines to indent...
6indented 
c = c1 &&
/^STARTTEST







(c2 ||c3) && c4;
}

STARTTEST
:set cino=(0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0
2kdd]]=][ENDTEST

void f()
{
4 lines to indent...
5indented 
if (   c1
/^STARTTEST






&& (   c2|| c3))foo;
}

STARTTEST
:set cino=(0,w1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 28C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0,w1  
2kdd]]=][ENDTEST

void f()
{
4 lines to indent...
5indented 
if (   c1
/^STARTTEST






&& (   c2|| c3))foo;
}

STARTTEST
:set cino=(s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(s
2kdd]]=][ENDTEST

void f()
{
8 lines to indent...
9indented 
c = c1 && (
/^STARTTEST










c2 ||c3) && c4;
    if (c1 && c2)foo;
}

STARTTEST
:set cino=(s,m1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 28C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(s,m1  
2kdd]]=][ENDTEST

void f()
{
8 lines to indent...
9indented 
c = c1 && (
/^STARTTEST










c2 ||c3
    ) && c4;
    if (c1 && c2
    )foo;
}

STARTTEST
:set cino=b1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=b1
2kdd]]=][ENDTEST

void f()
{
9 lines to indent...
10 lines indented 
switch (x)
/^STARTTEST











{case 1:a = b;break;default:a = 0;break;
    }
}

STARTTEST
:set cino=(0,W5

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 26C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0,W5
2kdd]]=][ENDTEST

void f()
{
10 lines to indent...
11indented 
invokeme(
/^STARTTEST












argu,ment);
    invokeme(argu,ment);
    invokeme(argu,ment);
}

STARTTEST
:set cino=/6

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=/6
2kdd]]=][ENDTEST

void f()
{
3 lines to indent...
4indented 
statement;
/^STARTTEST





// comment 1// comment 2
}

STARTTEST
:set cino=

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 34C written:set ff& cpo+=A

/ENDTEST/+-1

2kdd]]/comment 1/+1
==
ENDTEST

:so! Xdotest
:set cino=
==ENDTEST

void f()
{
/comment 1/+1



statement;// comment 1
    // comment 2    // comment 2
}
/^STARTTEST


STARTTEST
:set cino=g0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=g0
2kdd]]=][ENDTEST

class CAbc
{
6 lines to indent...
7indented 
int Test() { return FALSE; }
/^STARTTEST








public: // comment
    void testfall();
protected:
    void testfall();
};

STARTTEST
:set cino=(0,gs,hs

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 29C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0,gs,hs
2kdd]]=][ENDTEST

class Foo : public Bar
{
5 lines to indent...
6indented 
public:
/^STARTTEST







virtual void method1(void) = 0;virtual void method2(int arg1,int arg2,int arg3) = 0;
};

STARTTEST
:set cino=+20

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 24C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=+20
2kdd]]=][ENDTEST


void
foo()
{
4 lines to indent...
5indented 
if (a)
/^STARTTEST






{
    } elseasdf;
}

STARTTEST
:set cino=(0,W2s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 27C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0,W2s
2kdd]]=][ENDTEST
{
34 lines to indent...
35indented 
averylongfunctionnamelongfunctionnameaverylongfunctionname()->asd(
/^STARTTEST
dec)->asdfasdfasdf(asdfadsf,asdfasdf,asdfasdf,),func(asdfadf,asdfasdf),asdasdf);
}

STARTTEST
:set cino=M1
2kdd]]=][
ENDTEST

int main ()
{
    if (cond1 &&cond2)foo;
}
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=M1

4 lines to indent...
5indented 
   /^STARTTEST

STARTTEST
:set cino=(0,ts

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 26C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd2j=][
ENDTEST

:so! Xdotest
:set cino=(0,ts
2kdd2j=][ENDTEST


7 lines to indent...
8indented 
void func(int a
/^STARTTEST









#if defined(FOO), int b, int c
#endif)
{
}

STARTTEST
:set cino=(0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd2j=][
ENDTEST

:so! Xdotest
:set cino=(0
2kdd2j=][ENDTEST


8 lines to indent...
9indented 
void
/^STARTTEST










func(int a
#if defined(FOO), int b, int c
#endif
    )
{
}

STARTTEST
:set cino&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 22C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd2j=7][
ENDTEST

:so! Xdotest
:set cino&
2kdd2j=7][
ENDTEST


69 lines to indent...
50
7indented 
void func(void)
/^STARTTEST
int a,int b)
{
}void
func6(int a)
{
}

STARTTEST
:set cino&
:set cino+=l1
2kdd2j=][
ENDTEST

void func(void)
{
    int tab[] =
    {1, 2, 3,4, 5, 6};
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino&
:set cino+=l1



22 lines to indent...
23indented 
/^STARTTEST
break;case baz: {printf("baz");break;}case quux:printf("But don't break the indentation of this instruction\n");break;
    }
}

STARTTEST
:set cino&
2kdd2j=][
ENDTEST

void func(void)
{
    cout << "a"
    << "b"
    << ") :"
    << "c";
}
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 21C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino&



6 lines to indent...
7indented     << "b"
        << ") :"
        << "c";
/^STARTTEST

STARTTEST
:set com=s1:/*,m:*,ex:*/

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 38C written:set ff& cpo+=A

/ENDTEST/+-1
]]3jofoo();^[
ENDTEST

:so! Xdotest
:set com=s1:/*,m:*,ex:*/



void func(void)
{


/** This is a comment.*/
-- INSERT --
foo();
}
/^STARTTEST


STARTTEST
:set cino&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 21C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd2j=][
ENDTEST

:so! Xdotest
:set cino&
2kdd2j=][ENDTEST


8 lines to indent...
9indented 
void func(void)
/^STARTTEST










{
    for (int i = 0; i < 10; ++i)if (i & 1) {foo(1);} elsefoo(0);
    baz();
}

STARTTEST
:set cino=k2s,(0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 27C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd3j=][
ENDTEST

:so! Xdotest
:set cino=k2s,(0
2kdd3j=][ENDTEST
void func(void)
23 lines to indent...
24indented 
{
/^STARTTEST
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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 27C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,(s




23 lines to indent...
24indented         && condition2)
        action();    && argument2);
/^STARTTEST
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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 30C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,(s,U1




24 lines to indent...
25indented         && condition2)
        action();    && argument2);
/^STARTTEST
&& (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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 30C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,(0,W4




29 lines to indent...
30indented         && condition2)
        action();         && argument2);
/^STARTTEST
&& (   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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 27C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,u2




18 lines to indent...
19indented         && condition2)
        action();        && argument2);
/^STARTTEST
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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 30C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,(0,w1




27 lines to indent...
28indented         && condition2)
        action();         && argument2);
/^STARTTEST
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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 26C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2,(s




14 lines to indent...
15indented 
/^STARTTEST










if (c1 && (c2 ||c3))foo;
    if (c1 &&(c2 || c3))
    {
    }
}

STARTTEST
:set cino=N-s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 47C written:set ff& cpo+=A

/ENDTEST/+-1

/^NAMESPACESTART
=/^NAMESPACEEND
ENDTEST

:so! Xdotest
:set cino=N-s
/^NAMESPACESTART


NAMESPACESTART
/^NAMESPACEEND
61 lines to indent...
50
62indented /^STARTTEST
namespace test test2
{
    1111111111111111111;
}
namespace111111111
{
    111111111111111111;
}
NAMESPACEEND


STARTTEST
:set cino=j1,J1
/^JSSTART
=/^JSEND
ENDTEST

JSSTART
var bar = {
foo: {
that: this,
some: ok,
},
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C writtengcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/charset.o charset.c
:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=j1,J1
/^JSSTART
/^JSEND
12 lines to indent...
13indented     foo: {
        that: this,
        some: ok,
    },/^STARTTEST










"bar":{a : 2,b: "123abc",x: 4,"y": 5
    }
}
JSEND

STARTTEST
:set cino=j1,J1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A

/ENDTEST/+-1

/^JSSTART
=/^JSEND
ENDTEST

:so! Xdotest
:set cino=j1,J1
/^JSSTART


JSSTART
/^JSEND
5 lines to indent...
6indented /^STARTTEST








var foo = [
    1,
    2,
    3
];
JSEND

STARTTEST
:set cino=j1,J1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A

/ENDTEST/+-1

/^JSSTART
=/^JSEND
ENDTEST

:so! Xdotest
:set cino=j1,J1
/^JSSTART


JSSTART
/^JSEND
7 lines to indent...
8indented /^STARTTEST










function bar() {
    var foo = [1,2,3
    ];
}
JSEND

STARTTEST
:set cino=j1,J1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A

/ENDTEST/+-1

/^JSSTART
=/^JSEND
ENDTEST

:so! Xdotest
:set cino=j1,J1
/^JSSTART


JSSTART
/^JSEND
58 lines to indent...
509indented /^STARTTEST
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: [
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=j1,J1
/^JSSTART
/^JSEND
14 lines to indent...
15indented     $(this).data(class_name+'_public',$.extend({},{
        foo: 'bar',
        bar: 2,
        foobar: [/^STARTTEST












1,2,3],callback: function(){return true;}
    }, options||{}));
}
JSEND

STARTTEST
:set cino=j1,J1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A

/ENDTEST/+-1

/^JSSTART
=/^JSEND
ENDTEST

:so! Xdotest
:set cino=j1,J1
/^JSSTART


JSSTART
/^JSEND
16 lines to indent...
17indented /^STARTTEST
2,3],callback: function(){return true;}}, options||{}));
    }
})(jQuery);
JSEND

STARTTEST
:set cino=j1,J1,+2
/^JSSTART
=/^JSEND
ENDTEST

JSSTART
// Results of JavaScript indent
// 1
(function(){
var a = [
'a',
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 38C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=j1,J1,+2
/^JSSTART
/^JSEND
149 lines to indent...
100
50 lines to indent... 
150 lines indented     var a = [
      'a',/^STARTTEST
'e',
  'f',
  'g',
  'h',
  'i'
];

// 10
var a,
    b,
    c,
    d,
    e,
    f,
    g,
    h,
    i;
JSEND

STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d
:1;/start of AUTO/,$wq! test.out
ENDTEST



:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 61C written:set ff& cpo+=A



/ENDTEST/+-1
:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
221 fewer lines5 *9 *c
  'd
  'e',
  'f',
  'g',
  'h',
  'i'];// 10var a
    b
    c
    d
    e,
    f,
    g,
    h,    i;JSEND:1;/start of AUTO/,$wq! test.out
"test.out" [New] 2062L, 19815C written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test3 = test61; then \
#	  if diff test.out test3.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test3.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test3.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test4.failed test.ok test.out X* viminfo
cp test4.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test4.in
[?1h="test4.in" 34 lines, 960 charactersTest for autocommand that changes current buffer on BufEnter event.
Check if modelines are interpreted for the correct buffer.

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo
:au BufEnter Xxx brew
/start of
:.,/end of/w! Xxx   " write test file Xxx
:set ai modeline modelines=3
:sp Xxx" split to Xxx, autocmd will do :brew
G?this is a
othis should be auto-indented^[
:" Append text with autoindent to this file
:au! BufEnter Xxx
:buf Xxx" go to Xxx, no autocmd anymore
G?this is a
othis should be in column 1^[:wq " append text without autoindent to Xxx
G:r Xxx" include Xxx in the current file
:set fo+=r" issue #57 do not move cursor on <c-o> when autoindent is sset
Go# abcdef^[2hi
^Od0^[o# abcdef^[2hi^Od0^[::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for autocommand that changes current buffer on BufEnter event./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 20 lines, 678 characters written:set ff& cpo+=A
/ENDTEST


:?startstart?,$w! test.out
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo
:au BufEnter Xxx brew
/start of


startstart
start of test file Xxx
:.,/end of/w! Xxx   " write test file Xxx
"Xxx" [New] 7L, 124C written:set ai modeline modelines=3
:sp Xxx             " split to Xxx, autocmd will do :brew
"Xxx" 7L, 124CTest for autocommand that changes current buffer on BufEnter event.
Check if modelines are interpreted for the correct buffer.STARTTESTo small.vim:set nocompatible viminfo+=nviminfo
:au BufEnter Xxx brew/start of.,/end of/w!" write test file Xxx
:set ai modeline modelines=3:sp Xxx    " split to Xxx, autocmd will do :brew
test4.in                                                                        :set fo+=rssue #57 do not move cursor on <c-o> when autoindent is ssetGo# abcdef^[2hi
^Od0^[o# abcdef^[2hi^Od0^[:
:?startstart?,$w! test.outqa!ENDTESTstartstart of test file Xxx
test4.in                                                                        test4.in" line 1 of 34 --2%-- col 1:qa!ENDTESTstartstart
start of test file Xxx
vim: set noai :        this is a test
        this is a test
        this is a test        this is a testend of test file Xxx?this is a
-- INSERT --        this should be auto-indented[+][+]
end of test file Xxx:                   " Append text with autoindent to this file
:au! BufEnter Xxx
:buf Xxx            " go to Xxx, no autocmd anymore
"Xxx" 7L, 124Cstart of test file Xxx
vim: set noai :
        this is a test
        this is a test
        this is a test

end of test file Xxx~~~~
Xxx         ?this is a
-- INSERT --this should be in column 1[+]:wq " append text without autoindent to Xxx
"Xxx8L, 151C written:au BufEnter Xxx brew/start of:.,/end of/w! Xxx   " write test file Xxx
:set ai modeline modelines=3
:sp Xxx             " split to Xxx, autocmd will do :brew
G?this is aothis should be auto-indented^[
:                   " Append text with autoindent to this file
:au! BufEnter Xxx
:buf Xxx" go to Xxx, no autocmd anymore
G?this is a
othis should be in column 1^[:wq " append text without autoindent to XxxG:r Xxx   nclude Xxx in the current file:set fo+=r" issue #57 do not move cursor on <c-o> when autoindent is ssetGo# abcdef^[2hi^Od0^[o# abcdef^[2hi^Od0^[:
:?startstart?,$w! test.out
:qa!ENDTESTstarstart of test file Xxx






vim: set noai :this is a testthis is a testthis is a testthis is a testthis should be auto-indented
end of test file Xxx
:r Xxx             " include Xxx in the current file
"Xxx" 8L, 151C
start of test file Xxx
:set fo+=r          " issue #57 do not move cursor on <c-o> when autoindent is 

set
:au! BufEnter Xxx






vim: set noai :this is a testthis is a testthis is a testthis is a test
this should be in column 1
end of test file Xxx

-- INSERT --
# abcdef
-- INSERT --
-- (insert) --
# defINSERT --defod
-- INSERT --
# abcdef
-- INSERT --
-- (insert) --
-- INSERT --def:d
::?startstart?,$w! test.out
"test.out" [New] 20L, 330C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test4 = test61; then \
#	  if diff test.out test4.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test4.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test4.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test5.failed test.ok test.out X* viminfo
cp test5.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test5.in
[?1h="test5.in" 29 lines, 949 charactersTest for autocommand that deletes the current buffer on BufLeave event.
Also test deleting the last buffer, should give a new, empty buffer.

STARTTEST
:so small.vim
:au BufLeave Xxx bwipe
/start of
:.,/end of/w! Xxx" write test file Xxx
:sp Xxx" split to Xxx
:bwipe" delete buffer Xxx, now we're back here
G?this is a
othis is some more text^[
:" Append some text to this file
:?start?,$w! test.out" Write current file contents
:bwipe test.out" delete alternate buffer
:au bufleave test5.in bwipe
:bwipe!" delete current buffer, get an empty one
ithis is another test line^[:w >>test.out
:" append an extra line to the output file
:qa!
ENDTEST

start of test file Xxx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for autocommand that deletes the current buffer on BufLeave event./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 16 lines, 664 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:au BufLeave Xxx bwipe
/start of
:.,/end of/w! Xxx               " write test file Xxx
"Xxx" [New File] 7 lines, 124 characters written:sp Xxx                         " split to Xxx
"Xxx" 7 lines, 124 charactersstart of test file Xxxvim: set noai :this is a test
        this is a test
        this is a test
        this is a test
end of test file Xxx~~~~
Xxx                                                                             ?start?,$w! test.outWrite current file contentsbwipe test.out      delete alternate bufferau bufleave test5.in bwipebwipe!                         " delete current buffer, get an empty one
ithis is another test line^[:w >>test.out:                               " append an extra line to the output file
:qa!ENDTESTstart of test file Xxx
test5.in                                                                        :bwipe                          " delete buffer Xxx, now we're back here
Test for autocommand that deletes the current buffer on BufLeave event.
Also test deleting the last buffer, should give a new, empty buffer.STARTTEST:so small.vim:au BufLeave Xxx bwipe
/start of:.,/end of/w! Xxx" write test file Xxx
:sp Xxx" split to Xxx
:bwipe" delete buffer Xxx, now we're back here
G?this is a
othis is some more text^[                    Append some text to this file
:?start?,$w! test.outWrite current file contents
:bwipe test.out                 " delete alternate buffer
:au bufleave test5.in bwipe:bwipe!                         " delete current buffer, get an empty one
ithis is another test line^[:w >>test.out   " append an extra line to the output file
:qa!ENDTESTstart of test file Xxx"test5.in" line 23 of 29 --79%-- col 1





vim: set noai :this is a testthis is a testthis is a testthis is a test
end of test file Xxx
?this is a

this is some more text
end of test file Xxx
:                               " Append some text to this file
:?start?,$w! test.out           " Write current file contents
"test.out" [New File] 8 lines, 147 characters written:bwipe test.out                 " delete alternate buffer
:au bufleave test5.in bwipe
:bwipe!                         " delete current buffer, get an empty one
Error detected while processing BufLeave Auto commands for "test5.in":
E89: No write since last change for buffer 1 (add ! to override)

Press ENTER or type command to continue~~~~~~~~~~~~~
~~~~~~~~~this is another test line:w >>test.out
"test.out" 1 line, 26 characters appended:                               " append an extra line to the output file
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test5 = test61; then \
#	  if diff test.out test5.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test5.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test5.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test7.failed test.ok test.out X* viminfo
cp test7.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test7.in
[?1h="test7.in" 26 lines, 675 charactersTest for autocommand that changes the buffer list, when doing ":ball".

STARTTEST
:so small.vim
/^start of
A1^[:.,/end of/w! Xxx1   " write test file Xxx1
:sp Xxx1
:close
$r2:.,/end of/w! Xxx2    " write test file Xxx2
:sp Xxx2
:close
$r3:.,/end of/w! Xxx3    " write test file Xxx3
:sp Xxx3
:close
:au BufReadPost Xxx2 bwipe
$r4:ball" open window for all args, close Xxx2
:.,$w! test.out" Write contents of this file
^W^W:w >>test.out" Append contents of second window (Xxx1)
^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!
ENDTEST

start of test file Xxx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for autocommand that changes the buffer list, when doing ":ball"./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 508 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^start of
1:.,/end of/w! Xxx1   " write test file Xxx1
"Xxx1" [New File] 4 lines, 77 characters written:sp Xxx1
"Xxx1" 4 lines, 77 charactersstart of test file Xxx1this is a test
        this is a test
end of test file Xxx~~~~~~~
Xxx1                                                                            closeau BufReadPost Xxx2 bwipe
$r4:ball                 " open window for all args, close Xxx2
:.,$w! test.outWrite contents of this file^W^W:w >>test.outAppend contents of second window (Xxx1)/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx1
test7.in [+]                                                                    :close
Test for autocommand that changes the buffer list, when doing ":ball".STARTTEST:so small.vim/^start of
A1^[:.,/end of/w! Xxx1   " write test file Xxx1
:sp Xxx1
:close
$r2:.,/end of/w! Xxx2    " write test file Xxx2
:sp Xxx2
:close
$r3:.,/end of/w! Xxx3    " write test file Xxx3sp Xxx3
:close:au BufReadPost Xxx2 bwipe$r4:ball       open window for all args, close Xxx2
:.,$w! test.out  Write contents of this filew >>test.out        " Append contents of second window (Xxx1)^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx12:.,/end of/w! Xxx2    " write test file Xxx2
"Xxx2" [New File] 4 lines, 77 characters written:sp Xxx2
"Xxx2" 4 lines, 77 charactersstart of test file Xxx2this is a test
        this is a test
end of test file Xxx~~~~~~~
Xxx2                                                                            closeau BufReadPost Xxx2 bwipe
$r4:ball                 " open window for all args, close Xxx2
:.,$w! test.outWrite contents of this file^W^W:w >>test.outAppend contents of second window (Xxx1)/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx2
test7.in [+]                                                                    :close
Test for autocommand that changes the buffer list, when doing ":ball".STARTTEST:so small.vim/^start of
A1^[:.,/end of/w! Xxx1   " write test file Xxx1
:sp Xxx1
:close
$r2:.,/end of/w! Xxx2    " write test file Xxx2
:sp Xxx2
:close
$r3:.,/end of/w! Xxx3    " write test file Xxx3sp Xxx3
:close:au BufReadPost Xxx2 bwipe$r4:ball       open window for all args, close Xxx2
:.,$w! test.out  Write contents of this filew >>test.out        " Append contents of second window (Xxx1)^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx23:.,/end of/w! Xxx3    " write test file Xxx3
"Xxx3" [New File] 4 lines, 77 characters written:sp Xxx3
"Xxx3" 4 lines, 77 charactersstart of test file Xxx3this is a test
        this is a test
end of test file Xxx~~~~~~~
Xxx3                                                                            closeau BufReadPost Xxx2 bwipe
$r4:ball                 " open window for all args, close Xxx2
:.,$w! test.outWrite contents of this file^W^W:w >>test.outAppend contents of second window (Xxx1)/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx3
test7.in [+]                                                                    :close
Test for autocommand that changes the buffer list, when doing ":ball".STARTTEST:so small.vim/^start of
A1^[:.,/end of/w! Xxx1   " write test file Xxx1
:sp Xxx1
:close
$r2:.,/end of/w! Xxx2    " write test file Xxx2
:sp Xxx2
:close
$r3:.,/end of/w! Xxx3    " write test file Xxx3sp Xxx3
:close:au BufReadPost Xxx2 bwipe$r4:ball       open window for all args, close Xxx2
:.,$w! test.out  Write contents of this filew >>test.out        " Append contents of second window (Xxx1)^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx3:au BufReadPost Xxx2 bwipe
4:ball                 " open window for all args, close Xxx2
"Xxx1"4 lines, 77 characters

"Xxx2" 4 lines, 77 characters

Press ENTER or type command to continue:.,$w! test.out          " Write contents of this file
"test.out" [New File] 4 lines, 77 characters written

Press ENTER or type command to continue:close
:au BufReadPost Xxx2 bwipe
$r4:ball" open window for all args, close Xxx2
:.,$w! test.out" Write contents of this file
^W^W:w >>test.out" Append contents of second window (Xxx1)
^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!
ENDTEST

start of test file Xxx4
test7.in [+]                                                                    start of test file Xxx1this is a testthis is a test
end of test file Xxx
~
~
~
~
~
~
~
Xxx1                                                                            
test7.in [+]                                                                    Xxx1                                                                            :w >>test.out        " Append contents of second window (Xxx1)
"test.out" 4 lines, 77 characters appendedtest7.in [+]                                                                    Xxx1                                                                            :/^start of/,$w >>test.out   " Append contents of last window (this file)
search hit BOTTOM, continuing at TOP"test.out" 4 lines, 77 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test7 = test61; then \
#	  if diff test.out test7.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test7.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test7.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test8.failed test.ok test.out X* viminfo
cp test8.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test8.in
[?1h="test8.in" 46 lines, 1236 charactersTest for BufWritePre autocommand that deletes or unloads the buffer.
Test for BufUnload autocommand that unloads all other buffers.

STARTTEST
:so small.vim
:au BufWritePre Xxx1 bunload
:au BufWritePre Xxx2 bwipe
/^start of
A1^[:.,/end of/w! Xxx1  " write test file Xxx1
$r2:.,/end of/w! Xxx2   " write test file Xxx2
:e! Xxx2" edit Xxx2
:bdel test8.in" delete this file from the buffer list
:e Xxx1" edit Xxx1
:w" write it, will unload it and give an error msg
:w! test.out" Write contents of this file
:e! Xxx2" start editing Xxx2
:bwipe test.out" remove test.out from the buffer list
:w" write it, will delete the buffer and give an error msg:w >>test.out" Append contents of this file
:au! BufWritePre
:func CloseAll()
  let i = 0
  while i <= bufnr('$'):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for BufWritePre autocommand that deletes or unloads the buffer./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 37 lines, 1054 characters written:set ff& cpo+=A
/ENDTEST


















if i != bufnr('%') && bufloaded(i)exe  i . "bunload"
    endif
    let i += 1
  endwhile
endfunc
:func WriteToOut()
  edit! test.out
  $put ='VimLeave done'
  write
endfunc
:set viminfo='100,nviminfo
:au BufUnload * call CloseAll()
:au VimLeave * call WriteToOut()
:e small.vim
:sp mbyte.vim
:q
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:au BufWritePre Xxx1 bunload
:au BufWritePre Xxx2 bwipe
/^start of

start of Xxx1
:.,/end of/w! Xxx1  " write test file Xxx1
"Xxx1" [New File] 3 lines, 31 characters written2:.,/end of/w! Xxx2   " write test file Xxx2
"Xxx2" [New File] 3 lines, 31 characters written:e! Xxx2                " edit Xxx2
"Xxx2" 3 lines, 31 charactersstart of Xxx2
        testend of Xxx~~~~~~~~~~~~~~~~~~
~~:bdel test8.in^I^I" delete this file from the buffer list
:e Xxx1                 " edit Xxx1
"Xxx1" 3 lines, 31 characters1
:w                      " write it, will unload it and give an error msg
"Xxx2"3 lines, 31 characters

E203: Autocommands deleted or unloaded buffer to be written

Press ENTER or type command to continue:w! test.out            " Write contents of this file
"test.out" [New File] 3 lines, 31 characters written

Press ENTER or type command to continue:e! Xxx2                " start editing Xxx2
"Xxx2" 3 lines, 31 charactersstart of Xxx2test
end of Xxx"Xxx2" 3 lines, 31 characters:bwipe test.out         " remove test.out from the buffer list
:w                      " write it, will delete the buffer and give an error ms

g"Xxx1"3 lines, 31 characters
E203: Autocommands deleted or unloaded buffer to be written

Press ENTER or type command to continue:w >>test.out           " Append contents of this file
"test.out" 3 lines, 31 characters appended

Press ENTER or type command to continue:au! BufWritePre
start of Xxx1test
end of Xxx:func CloseAll()

:    let i = 0

:    while i <= bufnr('$')

:        if i != bufnr('%') && bufloaded(i)

:            exe  i . "bunload"

:          endif

:        let i += 1

:      endwhile

:  endfunc
start of Xxx1test
end of Xxx
~
~
~
~
~:func WriteToOut()

:    edit! test.out

:    $put ='VimLeave done'

:    write

:  endfunc
start of Xxx1test
end of Xxx
~:set viminfo='100,nviminfo
:au BufUnload * call CloseAll()
:au VimLeave * call WriteToOut()
:e small.vim
Error detected while processing function CloseAll:

line    4:

E16: Invalid range: 0bunload

"small.vim" 1 line, 1 character

Press ENTER or type command to continue:sp mbyte.vim
"mbyte.vim" 0 lines, 0 characters~
~
~mbyte.vim                                                                       small.vim                                                                       "mbyte.vim" 0 lines, 0 characters:q
Error detected while processing function CloseAll:

line    4:

E16: Invalid range: 0bunload

"test.out" 6 lines, 62 characters

"test.out" 7 lines, 76 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test8 = test61; then \
#	  if diff test.out test8.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test8.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test8.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test9.failed test.ok test.out X* viminfo
cp test9.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test9.in
[?1h="test9.in" 12 lines, 255 charactersTest for Bufleave autocommand that deletes the buffer we are about to edit.

STARTTEST
:so small.vim
:au BufLeave test9.in bwipe yy
:e yy
:/^start of/,$w! test.out      " Write contents of this file
:qa!
ENDTEST

start of test file xx
end of test file xx
~
~
~
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for Bufleave autocommand that deletes the buffer we are about to edit./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 117 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:au BufLeave test9.in bwipe yy
:e yy
E143: Autocommands unexpectedly deleted new buffer yy:/^start of/,$w! test.out      " Write contents of this file
"test.out" [New File] 2 lines, 42 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test9 = test61; then \
#	  if diff test.out test9.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test9.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test9.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test14.failed test.ok test.out X* viminfo
cp test14.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test14.in
[?1h="test14.in" 99 lines, 1606 charactersTests for "vaBiB", end could be wrong.
Also test ":s/pat/sub/" with different ~s in sub.
Also test for ^Vxff and ^Vo123 in Insert mode.
Also test "[m", "]m", "[M" and "]M"
Also test search()

STARTTEST
:so small.vim
/Start cursor here
vaBiBD:?Bug?,/Piece/-2w! test.out
/^- Bug
:s/u/~u~/
:s/i/~u~/
:s/o/~~~/
:.w >>test.out
:if has("ebcdic")
: let tt = "o\<C-V>193\<C-V>xc2\<C-V>o303 \<C-V>90a\<C-V>xfg\<C-V>o578\<Esc>"
:else
: let tt = "o\<C-V>65\<C-V>x42\<C-V>o103 \<C-V>33a\<C-V>xfg\<C-V>o78\<Esc>"
:endif
:exe "normal " . tt
:unlet tt
:.w >>test.out:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for "vaBiB", end could be wrong./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 56 lines, 1141 characters written:set ff& cpo+=A
/ENDTEST:$put =@/
/^substitute
:keeppatterns s/asdf/xyz/
:$put =@/
/^substitute
Y:$put =@0
/bar /e
:$put =@0
-:keeppatterns /xyz
0dn:/^search()/,$w >>test.out
:qa!
ENDTEST

- Bug in "vPPPP" on this text (Webb):{cmd;{cmd;    /* <-- Start cursor here */{}}}
:so! Xdotest
:so small.vim
/Start cursor here
{ 
                        cmd;    /* <-- Start cursor here */ 
                        { 
                        } 
                                cmd; 
                }


6 fewer lines        }Piece of Java{        tt m1 {                t1;e1:?Bug?,/Piece/-2w! test.out
"test.out" [New File] 3 lines, 44 characters written/^- Bug
search hit BOTTOM, continuing at TOP:s/u/~u~/
:s/i/~u~/
uuun "vPPPP" on this text (Webb):
:s/o/~~~/
uuuuuuuuun this text (Webb):
:.w >>test.out
"test.out" 1 line, 48 characters appended:if has("ebcdic")

:  : let tt = "o\<C-V>193\<C-V>xc2\<C-V>o303 \<C-V>90a\<C-V>xfg\<C-V>o578\<Esc>

"
:  :else

:  : let tt = "o\<C-V>65\<C-V>x42\<C-V>o103 \<C-V>33a\<C-V>xfg\<C-V>o78\<Esc>"

:  :endif
:$put =@/
/^substitute
:keeppatterns s/asdf/xyz/
:$put =@/
/^substitute:exe "normal " . tt
ABC !a^Og^G8:unlet tt
:.w >>test.out
"test.out" 1 line, 11 characters appended:set vb
/^Piece
{A:.w >>test.out
"test.out" 1 line, 10 characters appended

tt m2 {{B
:.w >>test.out
"test.out" 1 line, 10 characters appended



t2;} e2tt m3 {{C
:.w >>test.out
"test.out" 1 line, 10 characters appended{DC:.w >>test.out
"test.out" 1 line, 11 characters appended{EA:.w >>test.out
"test.out" 1 line, 11 characters appended{F:.w >>test.out
"test.out" 1 line, 3 characters appended}G e1:.w >>test.out
"test.out" 1 line, 7 characters appended





if (x){t3;}} e3}H e3
:.w >>test.out
"test.out" 1 line, 7 characters appended
}}I
:.w >>test.out
"test.out" 1 line, 3 characters appended}JH e3:.w >>test.out
"test.out" 1 line, 8 characters appended}K e2:.w >>test.out
"test.out" 1 line, 7 characters appended{LF:.w >>test.out
"test.out" 1 line, 4 characters appended:"
/^foobar


foobar
:let startline = line('.')
:call search('foobar', 'c')
:call append(line('$'), line('.') - startline)


:call search('^$', 'c')
:call append(line('$'), line('.') - startline)
:call search('^$', 'bc')
:call append(line('$'), line('.') - startline)
/two



substitute foo asdf

one two
:call search('.', 'c')
:call append(line('$'), getline('.')[col('.') - 1:])
:"
/^substitute
search hit BOTTOM, continuing at TOP:s/foo/bar/
bar
:$put =@/






search()
0
1
1
two
foo
/^substitute
search hit BOTTOM, continuing at TOP:keeppatterns s/asdf/xyz/
xyz:$put =@/

^substitute
/^substitute
search hit BOTTOM, continuing at TOP:$put =@0

substitute bar xyz
/bar /e
:$put =@0

substitute bar xyz

:keeppatterns /xyz

/bar /exyz:/^search()/,$w >>test.out
search hit BOTTOM, continuing at TOP
"test.out" 9 lines, 58 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test14 = test61; then \
#	  if diff test.out test14.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test14.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test14.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test15.failed test.ok test.out X* viminfo
cp test15.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/crypt.o crypt.c
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test15.in
[?1h="test15.in" 136 lines, 2246 charactersTests for :right on text with embedded TAB.
Also test formatting a paragraph.
Also test undo after ":%s" and formatting.

STARTTEST
:so small.vim
:set tw=65

:/^\s*test for :left/,/^\s*test for :center/ left
:/^\s*test for :center/,/^\s*test for :right/ center
:/^\s*test for :right/,/^xxx/-1 right
:set fo+=tcroql tw=72
/xxxxxxxx$
0gq6kk
:set nocp viminfo+=nviminfo
:" undo/redo here to make the next undo only work on the following changes
u^R
:map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq
/^aa
ggu
:?test for :left?,$w! test.out
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :right on text with embedded TAB./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 401 characters written:set ff& cpo+=A
/ENDTEST

:so! Xdotest
:so small.vim
:set tw=65

test for :left
:/^\s*test for :left/,/^\s*test for :center/ left
search hit BOTTOM, continuing at TOPtest for :left:/^\s*test for :center/,/^\s*test for :right/ center
:/^\s*test for :right/,/^xxx/-1 right
:set fo+=tcroql tw=72
/xxxxxxxx$
asxa;ofaaxxxoikeasdfaqweraxxxoikeaaxxxoikeyfaaxxxoikeydfaaxxxoikeysdfaaxxxoikeyasdfaaxxxoikeyxasdfaaxxxoikeyasxxdfaaxxxoikeyasxa;ofaaxxxoikeyasdfaqweraxxxoikey

xxxxx xx xxxxxx
xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xx
xxxxxxxxxxxxxxxxxx xxxxx xxxx, xxxx xxxx xxxx xxxx xxx xx xx
xx xxxxxxx. xxxx xxxx.

> xx xx, xxxx xxxx xxx xxxx xxx xxxxx xxx xxx xxxxxxx xxx xxxxx
> xxxxxx xxxxxxx: xxxx xxxxxxx, xx xxxxxx xxxx xxxxxxxxxx

aa aa aa aa
bb bb bb bb
cc cc cc cc

 xx xxxxxx xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xxxx xxxxxxx.
xxxx xxxx.xxxxxxx: xxxx xxxxxxx, xx xxxx xxxxxxx~
:set nocp viminfo+=nviminfo
:" undo/redo here to make the next undo only work on the following changes
1 more line; before #1  0 seconds ago0gq6kk
:set nocp viminfo+=nviminfo
:" undo/redo here to make the next undo only work on the following changes
u^R
:map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq
/^aa
ggu
:?test for :left?,$w! test.out
:qa!
ENDTESTtest for :leftaafaadfaasdfaaasdfaaxasdfaa
asxxdfaatest for :centeraafaafd asdf1 line less; after #1  0 seconds agotest for :lefta      afa    adfa      asdfaaasdfa           axasdfaa                test for :center  aa  fa        afd asdf
:map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq
/^aa
asxxdfaaxxxoikeasxa;ofaaxxxoikeasdfaqweraxxxoikeaaxxxoikeyfaaxxxoikeydfaaxxxoikeysdfaaxxxoikeyasdfaaxxxoikeyxasdfaaxxxoikeyasxxdfaaxxxoikeyasxa;ofaaxxxoikeyasdfaqweraxxxoikey

xxxxx xx xxxxxx xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xx
xxxxxxxxxxxxxxxxxx xxxxx xxxx, xxxx xxxx xxxx xxxx xxx xx xx xx xxxxxxx.
xxxx xxxx.

> xx xx, xxxx xxxx xxx xxxx xxx xxxxx xxx xxx xxxxxxx xxx xxxxx xxxxxx
> xxxxxxx: xxxx xxxxxxx, xx xxxxxx xxxx xxxxxxxxxx

aa aa aa aa
bb bb bb bb
cc cc cc cc


:.,.+2s/^/x/
3 substitutions on 3 linesxaa aa aa aa
xbb bb bb bb
xcc cc cc cc
:set tw=3



3 more lines
aaaaaa3 more lines
3 fewer lines; before #2  0 seconds agoaa aa aa aa
bb bb bb bb
cc cc cc cc~
:?test for :left?,$w! test.out
"test.out"[New] 111L, 2304C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test15 = test61; then \
#	  if diff test.out test15.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test15.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test15.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test19.failed test.ok test.out X* viminfo
cp test19.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test19.in
[?1h="test19.in" 33 lines, 692 charactersTests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set.
Also test that dv_ works correctly

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=^Vx7f t_kb=^Vx08
/some
r:set noexpandtab
/other
r
:" Test replacing with Tabs and then backspacing to undo it
0wR^H^H^H^[
:" Test replacing with Tabs
0wR^[
:" Test that copyindent works with expandtab set
:set expandtab smartindent copyindent ts=8 sw=8 sts=8
o{
x^[:set nosol
/Second line/
fwdv_:?^start?,$w! test.out
:qa!:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 19 lines, 447 characters written:set ff& cpo+=A
/ENDTEST
ENDTEST

:so! Xdotest
:so small.vim
:set smarttab expandtab ts=8 sw=4
:" make sure that backspace works, no matter what termcap is used
:set t_kD=^^? t_kb=^^H
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=^Vx7f t_kb=^Vx08
/some
r:set noexpandtab
/other
r
:" Test replacing with Tabs and then backspacing to undo it
0wR^H^H^H^[
:" Test replacing with Tabs
0wR^[
:" Test that copyindent works with expandtab set
:set expandtab smartindent copyindent ts=8 sw=8 sts=8
o{
x^[:set nosol
/Second line/
fwdv_:?^start?,$w! test.out
:qa!
ENDTEST

/some


start textsome test text    ome test text
:set noexpandtab
/other


test textother test text    ther test text
a cde
:" Test replacing with Tabs and then backspacing to undo it

    
f ghi
:" Test replacing with Tabs

         hi
test text
:" Test that copyindent works with expandtab set
:set expandtab smartindent copyindent ts=8 sw=8 sts=8


{x
:set nosol
/Second line/

Second line beginning with whitespace
  with whitespace
:?^start?,$w! test.out
"test.out" [New File] 10 lines, 121 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test19 = test61; then \
#	  if diff test.out test19.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test19.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test19.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test20.failed test.ok test.out X* viminfo
cp test20.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test20.in
[?1h="test20.in" 28 lines, 398 charactersTests Blockwise Visual when there are TABs before the text.
First test for undo working properly when executing commands from a register.
Also test this in an empty buffer.

STARTTEST
:so tiny.vim
G0"ay$k@au
:new
@auY:quit!
GP
/start here$
"by$^Vjjlld
/456$
^Vjj"bP
:/56$/,$-1w! test.out
:qa!
ENDTEST

123456
234567
345678

test text test tex start here:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests Blockwise Visual when there are TABs before the text./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 11 lines, 107 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so tiny.vim





some texttest text
test text

Ox^[jAy^[kddx
yy
Ox^[jAy^[kdd

2 changes; before #1  0 seconds ago
:new
~~~~~~~~~~
[No Name]                                                                       123456
234567
345678test text test tex start here
                some texttest
test textOx^[jAy^[kdd
test20.in                                                                       x[+]
y
~1 line less; before #1  0 seconds ago   :quit!
:so tiny.vim
G0"ay$k@au
:new
@auY:quit!
GP
/start here$
"by$^Vjjlld
/456$
^Vjj"bP
:/56$/,$-1w! test.out
:qa!
ENDTEST123456
234567
345678test text test tex start heresome
         test text
test textOx^[jAy^[kdd
Ox^[jAy^[kdd
/start here$
search hit BOTTOM, continuing at TOPset tat rt hereextex/456$
search hit BOTTOM, continuing at TOP4
2345
345start here56
234start here67
345start here78:/56$/,$-1w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 10 lines, 106 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test20 = test61; then \
#	  if diff test.out test20.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test20.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test20.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test22.failed test.ok test.out X* viminfo
cp test22.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test22.in
[?1h="test22.in" 13 lines, 197 charactersTests for file with some lines ending in CTRL-M, some not^M
^M
STARTTEST
:set ta tx
:e!
:$-3,$w! test.out
:qa!
ENDTEST

this lines ends in a^M
this one doesn't
this one does^M
and the last one doesn't
~
~
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for file with some lines ending in CTRL-M, some not^M/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 4 lines, 38 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:set ta tx
:e!
"test22.in" 13 lines, 197 characters:$-3,$w! test.out
"test.out" [New File] 4 lines, 79 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test22 = test61; then \
#	  if diff test.out test22.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test22.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test22.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test23.failed test.ok test.out X* viminfo
cp test23.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/menu.o menu.c
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test23.in
[?1h="test23.in" 15 lines, 282 charactersTests for complicated + argument to :edit command

STARTTEST
:$-1w! Xfile1
:$w! Xfile2
:edit +1|s/|/PIPE/|w Xfile1| e Xfile2|1 | s/\//SLASH/|w
:w! test.out
:e Xfile1
:w >> test.out
:qa!
ENDTEST

The result should be in Xfile1: "fooPIPEbar", in Xfile2: "fooSLASHbar"
foo|bar
foo/bar
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for complicated + argument to :edit command/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 7 lines, 125 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:$-1w! Xfile1
"Xfile1" [New File] 1 line, 8 characters written:$w! Xfile2
"Xfile2" [New File] 1 line, 8 characters written:edit +1|s/|/PIPE/|w Xfile1| e Xfile2|1 | s/\//SLASH/|w
"Xfile1" 1 line, 8 characters

foo|bar

"Xfile1"gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/crypt_zip.o crypt_zip.c
 1 line, 11 characters written

"Xfile2" 1 line, 8 characters

foo/bar

"Xfile2" 1 line, 12 characters written

Press ENTER or type command to continue:w! test.out
"test.out" [New File] 1 line, 12 characters written

Press ENTER or type command to continue:e Xfile1
"Xfile1" 1 line, 11 charactersfooPIPEbar
~
~
~
~
~
~~~~~
~~~~"Xfile1" 1 line, 11 characters:w >> test.out
"test.out" 1 line, 11 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test23 = test61; then \
#	  if diff test.out test23.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test23.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test23.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test24.failed test.ok test.out X* viminfo
cp test24.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/misc2.o misc2.c
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test24.in
[?1h="test24.in" 89 lines, 1301 charactersTests for regexp with backslash and other special characters inside []
Also test backslash for hex/octal numbered character.

STARTTEST
:set nocompatible viminfo+=nviminfo
/[\x]
x/[\t\]]
x/[]y]
x/[\]]
x/[y^]
x/[$y]
x/[\x61]
x/[\x60-\x64]
xj0/[\x785]
x/[\o143]
x/[\o140-\o144]
x/[\o417]
x/\%x42
x/\%o103
x/[\x00]
x
:s/[\x00-\x10]//g:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with backslash and other special characters inside []/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 51 lines, 519 characters written:set ff& cpo+=A
/ENDTEST:s/^\(\h\w*\%(->\|\.\)\=\)\+=/YY/

:s/aaa/xyz/

:s/~/bcd/

:s/~\+/BB/
:"
:?start?,$w! test.out
:qa!
ENDTEST

start
test \text test text
test    text test text
test text ]test text
test ]text test text
test text te^st text
test te$xt test text
test taext test text  x61
test tbext test text  x60-x64
test 5text test text  x78 5
:so! Xdotest
:set nocompatible viminfo+=nviminfo
/[\x]
text test text/[\t\]]
text test tex/[]y]
test text/[\]]
text test text/[y^]
st text/[$y]
xt test text/[\x61]
ext test text  x61/[\x60-\x64]
ext test text  x60-x64
/[\x785]
text test text  x78 5/[\o143]

testc text test text  o143 text test text  o143
/[\o140-\o144]

tesdt text test text  o140-o144t text test text  o140-o14
/[\o417]

test7 text test text  o41 7 text test text  o41 7
/\%x42

test text tBest text  \%x42est text  \%x42
/\%o103

test text teCst text  \%o103st text  \%o103
/[\x00]

test text ^@test text  [\x00]test text  [\x00]
test te^@xt t^Dest t^Pext  [\x00-\x10]
:s/[\x00-\x10]//g
3 substitutions on 1 linext test text  [\x00-\x10]
test \xyztext test text  [\x-z]
:s/[\x-z]\+//
text test text  [\x-z]
test text tev\uyst text  [\u-z]
:s/[\u-z]\{2,}//
st text  [\u-z]
xx aaaaa xx a
:s/\(a\)\+//
 xx 
xx aaaaa xx a
:s/\(a*\)\+//

xx aaaaa xx a
:s/\(a*\)*//

xx aaaaa xx
:s/\(a\)\{2,3}/A/
Aaa xx
xx aaaaa xx
:s/\(a\)\{-2,3}/A/
Aaaa x
xx aaa12aa xx
:s/\(a\)*\(12\)\@>/A/
Aaa xx
xx foobar xbar xx
:s/\(foo\)\@<!bar/A/
A xx
xx an file xx
:s/\(an\_s\+\)\@<=file/A/
A xx
x= 9;
:s/^\(\h\w*\%(->\|\.\)\=\)\+=/XX/
XX

hh= 77;
:s/^\(\h\w*\%(->\|\.\)\=\)\+=/YY/
YY 77;
aaa
:s/aaa/xyz/
xyz
 
xyz
:s/~/bcd/
bcd
 
bcdbcdbcd
:s/~\+/BB/
BB:"
:?start?,$w! test.out
"test.out" [New] 32L, 586C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test24 = test61; then \
#	  if diff test.out test24.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test24.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test24.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test26.failed test.ok test.out X* viminfo
cp test26.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test26.in
[?1h="test26.in" 44 lines, 750 charactersTest for :execute, :while and :if

STARTTEST
:so small.vim
mt:let i = 0
:while i < 12
:  let i = i + 1
:  if has("ebcdic")
:    execute "normal o" . i . "\047"
:  else
:    execute "normal o" . i . "\033"
:  endif
:  if i % 2
:    normal Ax^V^[
:    if i == 9
:      break
:    endif
:    if i == 5
:      continue
:    else
:      let j = 9
:      while j > 0
:if has("ebcdic"):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for :execute, :while and :if/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 39 lines, 696 characters written:set ff& cpo+=A
/ENDTEST:      let j = 9
:      while j > 0
:if has("ebcdic")
:execute "normal" j . "a" . j . "\x27"
:else
:execute "normal" j . "a" . j . "\x1b"
:endif
:let j = j - 1
:      endwhile
:    endif
:  endif
:  if i == 9
:    if has("ebcdic")
:      execute "normal Az\047"
:    else
:      execute "normal Az\033"
:    endif
:  endif
:endwhile
:unlet i j
:'t,$w! test.out
:qa!
ENDTEST


:so! Xdotest
:so small.vim
:let i = 0
:while i < 12

:  :  let i = i + 1

:  :  if has("ebcdic")

:    :    execute "normal o" . i . "\047"

:    :  else

:    :    execute "normal o" . i . "\033"

:    :  endif

:  :  if i % 2

:    :    normal Ax^^[

:    :    if i == 9

:      :      break

:      :    endif

:    :    if i == 5

:      :      continue

:      :    else

:      :      let j = 9

:      :      while j > 0

::        if has("ebcdic")

::          execute "normal" j . "a" . j . "\x27"

::        else

::          execute "normal" j . "a" . j . "\x1b"

::        endif

::        let j = j - 1

::      endwhile

:      :    endif

:    :  endif

:  :  if i == 9

:    :    if has("ebcdic")

:      :      execute "normal Az\047"

:      :    else

:      :      execute "normal Az\033"

:      :    endif

:    :  endif

:  :endwhile
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/dict.o dict.c
:  endif
:  if i == 9
:    if has("ebcdic")
:      execute "normal Az\047"
:    else
:      execute "normal Az\033"
:    endif
:  endif
:endwhile
:unlet i j
:'t,$w! test.out
:qa!
ENDTEST

1x999999999888888887777777666666555554444333221
2
3x999999999888888887777777666666555554444333221
4
5x
6
7x999999999888888887777777666666555554444333221
8
9x
:unlet i j
:'t,$w! test.out
"test.out" [New File] 10 lines, 159 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test26 = test61; then \
#	  if diff test.out test26.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test26.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test26.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test28.failed test.ok test.out X* viminfo
cp test28.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test28.in
[?1h="test28.in" 23 lines, 364 charactersTest for sourcing a file with CTRL-V's at the end of the line

STARTTEST
:/firstline/+1,/lastline/-1w! Xtestfile
:so Xtestfile
Gmm__1^[^[__2^[__3^[^[__4^[__5^[:'m,$s/^@/0/g
:'m,$w! test.out
:qa!
ENDTEST

firstline
map __1 afirst
map __2 asecond
map __3 athird
map __4 afourth
map __5 afifth
map __1 asd^V
map __2 asd^V^V
map __3 asd^V^V
map __4 asd^V^V^V
map __5 asd^V^V^V
lastline:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for sourcing a file with CTRL-V's at the end of the line/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 114 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:/firstline/+1,/lastline/-1w! Xtestfile
"Xtestfile" [New File] 10 lines, 148 characters written:so Xtestfile

sd
map __2 asd^[secondd  sd^[^[  sd^@map __5 asd^@fifth
:'m,$s/^@/0/g
0map __5 asd0fifth:'m,$w! test.out
"test.out" [New File] 2 lines, 45 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test28 = test61; then \
#	  if diff test.out test28.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test28.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test28.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test29.failed test.ok test.out X* viminfo
cp test29.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test29.in
[?1h="test29.in" 230 lines, 4261 charactersTest for joining lines and marks in them
 in compatible and nocompatible modes
 and with 'joinspaces' set or not
 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+=jj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces
j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptionss+=j
j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible
j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjd/STARTTEST/-2
ENDTEST

firstline
asdfasdf.
asdf:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for joining lines and marks in them/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 11 lines, 478 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo
:set nojoinspaces
:set cpoptions-=j
/firstline/

/^STARTTEST/-1
+-1
37 fewer linesSTARTTEST
/^{/+1more linesasdfasdf.
asdfasdf
asdfasdf. asdf
asdfasdf. asdf
asdfasdf.       asdf
asdfasdf.       asdf
asdfasdf. asdf
asdfasdf. asdf
asdfasdff asdf
asdfasdf asdf
asdfasdf  asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
zx cvn.
zx cv


as dfg?
hjkl iop!
ert
hjkl i. as dfg? hjkl iop! ert
zx cvn.
as dfg?hjkl iop! ert er
zx cvrnnop:set cpoptions+=j

zx cv
hjkl i. as dfg? hjkl iop! ertSTARTTEST ert er
zx cvrnnop:set cpoptions-=j joinspaces



37 more linesasdfasdf.
asdf
asdfasdf.  asdf
asdfasdf.  asdf
asdfasdf.       asdf
asdfasdf.       asdf
asdfasdf. asdf
asdfasdf. asdf
asdfasdff asdf
asdfasdf asdf
asdfasdf  asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
zx cvn.
zx cv

as dfg?
hjkl iop!
hjkl i.  as dfg?  hjkl iop!  ert
zx cvn.
as dfg?  ert  e
zx cvennop


:set cpoptions+=j

zx cv
hjkl iop!
hjkl i.  as dfg? hjkl iop! ertSTARTTEST ert er
zx cvrnnop


:set cpoptions-=j nojoinspaces compatible



37 more linesasdfasdf.
asdf
asdfasdf.  asdf
asdfasdf.  asdf
asdfasdf.       asdf
asdfasdf.       asdf
asdfasdf. asdf
asdfasdf. asdf
asdfasdff asdf
asdfasdf asdf
asdfasdf  asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
zx cvn..  as dfg? hjkl iop! ertt  a
zx cvn.
/STARTTEST/-2
+-2
4 fewer lines/^STARTTEST

STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 12 lines, 147 characters written:set ff& cpo+=A

/ENDTEST











:set comments=s1:/*,mb:*,ex:*/,://
:set nojoinspaces fo=j
:set backspace=eol,start
:.,+3join
j4J
:.,+2join
j3J
:.,+2join
j3J
:.,+2join
jj3J
ENDTEST

:so! Xdotest
/^{/+1


{
:set comments=s1:/*,mb:*,ex:*/,://
:set nojoinspaces fo=j
:set backspace=eol,start
:.,+3join
/* Make sure the previous comment leader is not removed. */

/* Make sure the previous comment leader is not removed. */


:.,+2join
// Should the next comment leader be left alone? Yes.

// Should the next comment leader be left alone? Yes.


:.,+2join
/* 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.


:.,+2join
if (condition) // Remove the next comment leader! OK, I will.

action();
if (condition) // Remove the next comment leader! OK, I will.

action();

/^STARTTEST



}

STARTTEST
:" Test with backspace set to the non-compatible setting

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 17 lines, 347 characters written:set ff& cpo+=A

/ENDTEST:inoremap <c-u> <left><c-u>
Avim3^U^[
:iunmap <c-u>
Avim4^U^U^[
:" Test with backspace set to the compatible setting
:set backspace= visualbell
A vim5^[A^U^U^[
A vim6^[Azwei^Gu^U^[
:inoremap <c-u> <left><c-u>
A vim7^U^U^[
:set compatible novisualbell
ENDTEST
1 this shouldn't be deleted
2 this shouldn't be deleted
3 this shouldn't be deleted
4 this should be deleted
5 this shouldn't be deleted
6 this shouldn't be deleted
7 this shouldn't be deleted
8 this shouldn't be deleted (not touched yet)

STARTTEST
/^{/+1
:so! Xdotest
:" Test with backspace set to the non-compatible setting
/^\d\+ this
:set cp bs=2
d    vim2:set cpo-=<
:inoremap <c-u> <left><c-u>
d3:iunmap <c-u>

:" Test with backspace set to the compatible setting
:set backspace= visualbell
vim5d vim66    zwei:inoremap <c-u> <left><c-u>
vim7
:set compatible novisualbell
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 21 lines, 356 characters written:set ff& cpo+=A

/ENDTESTj3J
:.,+2join
j3J
:.,+2join
jj3J
j:.,+2join
jj3J
j:.,+5join
j6J
oSome code!^M// Make sure backspacing does not remove this comment leader.^[0i^HH^[
ENDTEST

{

/*
 * Make sure the previous comment leader is not removed.
 */

/*
 * Make sure the previous comment leader is not removed.
 */
:so! Xdotest
/^{/+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



/* Make sure the previous comment leader is not removed.  *//* List:
 * - item1
 *   foo bar baz



/* Make sure the previous comment leader is not removed.  */*   foo bar baz
 * - item2
 *   foo bar baz
:.,+8join
/* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz *//* List:- item1  foo bar baz
 * - item2
/* 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?
:.,+2join


Should the next comment leader be left alone?  Yes.


// Yes.
// Should the next comment leader be left alone?  Yes.* Here the comment leader should be left intact. */
// And so should this one.



:.,+2join
/* Here the comment leader should be left intact. */ // And so should this one.* Here the comment leader should be left intact. */
/* Here the comment leader should be left intact. */ // And so should this one.
:.,+2join
if (condition) // Remove the next comment leader!  OK, I will.

action();
if (condition) // Remove the next comment leader!  OK, I will.

action();


:.,+2join
int i = 7 /* foo *// 3 // comment

;
int i = 7 /* foo *// 3 // comment

;


:.,+5join
># Note that the last character of the ending comment leader (left angle bracket@


># Note that the last character of the ending comment leader (left angle brackett) 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 liness. This comment should retain its comment leader.
># Note that the last character of the ending comment leader (left angle bracket@


># Note that the last character of the ending comment leader (left angle brackett) 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 liness. This comment should retain its comment leader.


Some code!
// Make sure backspacing does not remove this comment leader.
// Make sure backspacing does not remove this comment leader.
}

/^STARTTEST


STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 61 characters written:set ff& cpo+=A

/ENDTEST
:?firstline?+1,$w! test.out

:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
74 fewer lines// 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 brackett) 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 liness. This comment should retain its comment leader.># Note that the last character of the ending comment leader (left angle brackett) 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 liness. This comment should retain its comment leader.

Some code!// Make sure backspacing does not remove this comment leader.
}:?firstline?+1,$w! test.out
"test.out" [New File] 97 lines, 3018 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test29 = test61; then \
#	  if diff test.out test29.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test29.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test29.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test31.failed test.ok test.out X* viminfo
cp test31.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test31.in
[?1h="test31.in" 95 lines, 1832 charactersTest for commands that close windows and/or buffers:
:quit
:close
:hide
:only
:sall
:all
:ball
:buf
:edit

STARTTEST
:so small.vim
GA 1^[:$w! Xtest1
$r2:$w! Xtest2
$r3:$w! Xtest3
:n! Xtest1 Xtest2
A 1^[:set hidden
:" test for working :n when hidden set; write "testtext 2"
:n
:w! test.out
:" test for failing :rew when hidden not set; write "testtext 2 2"
:set nohidden:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for commands that close windows and/or buffers:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 80 lines, 1697 characters written:set ff& cpo+=A
/ENDTEST:" test ":q!" and hidden buffer.
:bw! Xtest1 Xtest2 Xtest3 Xtest4
:sp Xtest1
:wincmd w
:bw!
:set modified
:bot sp Xtest2
:set modified
:bot sp Xtest3
:set modified
:wincmd t
:hide
:q!
:w >>test.out
:q!
:w >>test.out
:q!
:call append(line('$'), "Oh, Not finished yet.")
:w >>test.out
:qa!
ENDTEST

testtext


:so! Xdotest
:so small.vim

1:$w! Xtest1
"Xtest1" [New File] 1 line, 11 characters written2:$w! Xtest2
"Xtest2" [New File] 1 line, 11 characters written3:$w! Xtest3
"Xtest3" [New File] 1 line, 11 characters written:n! Xtest1 Xtest2
"Xtest1" 1 line, 11 characterstesttext 1~~~~~~~~~~~~~~~~~~~~
~~1:set hidden
:" test for working :n when hidden set; write "testtext 2"
:n
"Xtest2" 1 line, 11 characters2:w! test.out
"test.out" [New File] 1 line, 11 characters written:" test for failing :rew when hidden not set; write "testtext 2 2"
:set nohidden
2:rew
E37: No write since last change (add ! to override):w >>test.out
"test.out" 1 line, 13 characters appended:" test for working :rew when hidden set; write "testtext 1 1"
:set hidden
:rew
"Xtest1" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)1 1
:w >>test.out
"test.out" 1 line, 13 characters appended:" test for :all keeping a buffer when it's modified; write "testtext 1 1 1"
:set nohidden
1:sp
Xtest1 [+]                                                                      testtext 1 1 1Xtest1 [+]                                                                      :n Xtest2 Xtest3
"Xtest2" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)2 22:all
"Xtest3" 1 line, 11 characterstesttext 1 1 1
~
~
~
~
~
~
Xtest1 [+]                                                                      testtext 2 2
~
~
~
~
~
Xtest2 [+]                                                                      testtext 3
~
~
~
~
~
~
Xtest3                                                                          :1wincmd w
Xtest1 [+]                                                                      Xtest2 [+]                                                                      :w >>test.out
"test.out" 1 line, 15 characters appended:" test abandoning changed buffer, should be unloaded even when 'hidden' set
:" write "testtext 2 2" twice
:set hidden
1 1:q!
testtext 2 2
~
~
~
~
~
~
~
~
~
~
Xtest2 [+]                                                                      testtext 3
~
~
~
~
~
~
~
~
~
Xtest3                                                                          :w >>test.out
"test.out" 1 line, 13 characters appended:unhide
:w >>test.out
"test.out" 1 line, 13 characters appended:" test ":hide" hides anyway when 'hidden' not set; write "testtext 3"
:set nohidden
2:hide
3~~~:w >>test.out
"test.out" 1 line, 11 characters appended:" test ":edit" failing in modified buffer when 'hidden' not set
:" write "testtext 3 3"
3:e Xtest1
E37: No write since last change (add ! to override):w >>test.out
"test.out" 1 line, 13 characters appended:" test ":edit" working in modified buffer when 'hidden' set; write "testtext 1

"testtext 3 3:set hidden
:e Xtest1
"Xtest1" 1 line, 11 characters1:w >>test.out
"test.out" 1 line, 11 characters appended:" test ":close" not hiding when 'hidden' not set igcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/diff.o diff.c
n modified buffer;
:" write "testtext 3 3 3"
:sp Xtest3
"Xtest3" [Modified] line 1 of 1 --100%-- col 1 (file 2 of 2)3 3Xtest3 [+]                                                                      testtext 1Xtest1                                                                          :set nohidden
3:close
E37: No write since last change (add ! to override):w >>test.out
"test.out" 1 line, 15 characters appended:" test ":close!" does hide when 'hidden' not set in modified buffer;
:" write "testtext 1"
3 3:close!
1~~~:w >>test.out
"test.out" 1 line, 11 characters appended:set nohidden
:" test ":all!" hides changed buffer; write "testtext 2 2 2"
:sp Xtest4
"Xtest4" [New File]Xtest4                                                                          testtext 1Xtest1                                                                           4[+]:all!
"Xtest2" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)

"Xtest3" [Modified] line 1 of 1 --100%-- col 1 (file 2 of 2)

Press ENTER or type command to continue:1wincmd w
testtext 2 2 2
~Xtest2 [+]                                                                      testtext 3 3 3 3~3 [+]:w >>test.out
"test.out" 1 line, 15 characters appended:"
:" test ":q!" and hidden buffer.
:bw! Xtest1 Xtest2 Xtest3 Xtest4
"test31.in"95 lines, 1832 characters

4 buffers wiped out

Press ENTER or type command to continue:sp Xtest1
"Xtest1" 1 line, 11 characterstesttext 1
~~
Xtest1                                                                          :w >>test.out
:q!
:w >>test.out
:q!
:call append(line('$'), "Oh, Not finished yet.")
:w >>test.out
:qa!
ENDTESTtesttext
test31.in "Xtest1" 1 line, 11 characters:wincmd w
Xtest1                                                                          test31.in                                                                       :bw!
~~~~~~~~~
~~~:set modified
:bot sp Xtest2
"Xtest2" 1 line, 11 charactersXtest1 [+]                                                                      testtext 2Xtest2                                                                          :set modified
[+]:bot sp Xtest3
"Xtest3" 1 line, 11 characterstesttext 1
~
~
~
~
~
~
Xtest1 [+]                                                                      testtext 2
~
~
~
~
~
Xtest2 [+]                                                                      testtext 3
~
~
~
~
~
~
Xtest3                                                                          :set modified
[+]:wincmd t
Xtest1 [+]                                                                      Xtest3 [+]                                                                      :hide
testtext 2
~
~
~
~
~
~
~
~
~
~
Xtest2 [+]                                                                      testtext 3
~
~
~
~
~
~
~
~
~
Xtest3 [+]                                                                      :q!
3~~~:w >>test.out
"test.out" 1 line, 11 characters appended:q!
E37: No write since last change

E162: No write since last change for buffer "Xtest1"

Press ENTER or type command to continue:w >>test.out
"test.out" 1 line, 11 characters appended

Press ENTER or type command to continue:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test31 = test61; then \
#	  if diff test.out test31.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test31.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test31.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test33.failed test.ok test.out X* viminfo
cp test33.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test33.in
[?1h="test33.in" 34 lines, 616 charactersTest for 'lisp'
If the lisp feature is not enabled, this will fail!

STARTTEST
:so small.vim
:set lisp
/^(defun
=G:/^(defun/,$w! test.out
:q!
ENDTEST

(defun html-file (base)
(format nil "~(~A~).html" base))

(defmacro page (name title &rest body)
(let ((ti (gensym)))
`(with-open-file (*standard-output*
(html-file ,name)
:direction :output
:if-exists :supersede)
(let ((,ti ,title))
(as title ,ti)
(with center:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for 'lisp'/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 63 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:set lisp
/^(defun
22 lines to indent...
23indented   (format nil "~(~A~).html" base))


  (let ((ti (gensym)))
       `(with-open-file (*standard-output*
                 (html-file ,name)
                  :direction :output
                         :if-exists :supersede)
                        (let ((,ti ,title))
              (as title ,ti)
            (with center:/^(defun/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 23 lines, 544 characters written:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test33 = test61; then \
#	  if diff test.out test33.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test33.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test33.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test34.failed test.ok test.out X* viminfo
cp test34.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test34.in
[?1h="test34.in" 87 lines, 1833 charactersTest for user functions.
Also test an <expr> mapping calling a function.
Also test that a builtin function cannot be replaced.
Also test for regression when calling arbitrary expression.

STARTTEST
:so small.vim
:function Table(title, ...)
:  let ret = a:title
:  let idx = 1
:  while idx <= a:0
:    exe "let ret = ret . a:" . idx
:    let idx = idx + 1
:  endwhile
:  return ret
:endfunction
:function Compute(n1, n2, divname)
:  if a:n2 == 0
:    return "fail"
:  endif
:  exe "let g:" . a:divname . " = ". a:n1 / a:n2
:  return "ok"
:endfunction:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for user functions./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 78 lines, 1621 characters written:set ff& cpo+=A
/ENDTEST:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?
:    " Second is here just to prove that this line is correct when not skipping
:    " rhs of &&.
:    $put =(0&&(function('tr'))(1, 2, 3))
:    $put =(1&&(function('tr'))(1, 2, 3))
:catch
:    $put ='!!! Unexpected exception:'
:    $put =v:exception
:endtry
:$-9,$w! test.out
:delfunc Table
:delfunc Compute
:delfunc Expr1
:delfunc Expr2
:delfunc ListItem
:delfunc ListReset
:unlet retval counter
:q!
ENDTEST

here


:so! Xdotest
:so small.vim
:function Table(title, ...)

:  :  let ret = a:title

:  :  let idx = 1

:  :  while idx <= a:0

:    :    exe "let ret = ret . a:" . idx

:    :    let idx = idx + 1

:    :  endwhile

:  :  return ret

:  :endfunction
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?
:    " Second is here just to prove that this line is correct when not skipping
:    " rhs of &&.
:    $put =(0&&(function('tr'))(1, 2, 3))
:    $put =(1&&(function('tr'))(1, 2, 3))
:catch

:function Compute(n1, n2, divname)

:  :  if a:n2 == 0

:    :    return "fail"

:    :  endif

:  :  exe "let g:" . a:divname . " = ". a:n1 / a:n2

:  :  return "ok"

:  :endfunction
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?
:    " Second is here just to prove that this line is correct when not skipping
:    " rhs of &&.
:    $put =(0&&(function('tr'))(1, 2, 3))

:func Expr1()

:  :  normal! v

:  :  return "111"

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:func Expr2()

:  :  call search('XX', 'b')

:  :  return "222"

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:func ListItem()

:  :  let g:counter += 1

:  :  return g:counter . '. '

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:func ListReset()

:  :  let g:counter = 0

:  :  return ''

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:func FuncWithRef(a)

:  :  unlet g:FuncRef

:  :  return a:a

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:let g:FuncRef=function("FuncWithRef")
:let counter = 0
:inoremap <expr> ( ListItem()
:inoremap <expr> [ ListReset()
:imap <expr> + Expr1()
:imap <expr> * Expr2()
:let retval = "nop"
/^here
her$=Table("xxx", 4, "asdf")
=Compute(45, 0, "retval")
=retval
=Compute(45, 5, "retval")
=retval
=g:FuncRef(333)

Error detected while processing function Expr1:

line    1:

E523: Not allowed here

Press ENTER or type command to continue:    $put =(0&&(function('tr'))(1, 2, 3))
:    $put =(1&&(function('tr'))(1, 2, 3))
:catch
:    $put ='!!! Unexpected exception:'$put =v:exception
:endtry$-9,$w! test.outdelfunc Table
:delfunc Computedelfunc Expr1delfunc Expr2
:delfunc ListItemListReset
:unlet retval counter
:q!ENDTESTxxx4asdf fail nop ok 9 333
XX111-XX---222---
1. one2. two1. one again
:call append(line('$'), max([1, 2, 3]))
:call extend(g:, {'max': function('min')})
E704: Funcref variable name must start with a capital: max:call append(line('$'), max([1, 2, 3]))
:try

:  :    " Regression: the first line below used to throw ?E110: Missing ')'?

:  :    " Second is here just to prove that this line is correct when not skipp

ing

:  :    " rhs of &&.

:  :    $put =(0&&(function('tr'))(1, 2, 3))

:  :    $put =(1&&(function('tr'))(1, 2, 3))

:  :catch

:  :    $put ='!!! Unexpected exception:'

:  :    $put =v:exception

:  :endtry
:    $put =v:exception
:endtry
:$-9,$w! test.out
:delfunc Table
:delfunc Compute
:delfunc Expr1
:delfunc Expr2
:delfunc ListItem
:delfunc ListReset
:unlet retval counter
:q!ENDTESTxxx4asdf fail nop ok 9 333
XX111-XX
---222---
1. one
2. two1. one again
330
:$-9,$w! test.out
"test.out" [New File] 10 lines, 81 characters written:delfunc Table
:delfunc Compute
:delfunc Expr1
:delfunc Expr2
:delfunc ListItem
:delfunc ListReset
:unlet retval counter
:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test34 = test61; then \
#	  if diff test.out test34.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test34.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test34.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test36.failed test.ok test.out X* viminfo
cp test36.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test36.in
[?1h="test36.in" 108 lines, 2025 charactersTest character classes in regexp using regexpengine 0, 1, 2.

STARTTEST
/^start-here/+1
Y:s/\%#=0\d//g
p:s/\%#=1\d//g
p:s/\%#=2\d//g
p:s/\%#=0[0-9]//g
p:s/\%#=1[0-9]//g
p:s/\%#=2[0-9]//g
p:s/\%#=0\D//g
p:s/\%#=1\D//g
p:s/\%#=2\D//g
p:s/\%#=0[^0-9]//g
p:s/\%#=1[^0-9]//g
p:s/\%#=2[^0-9]//g
p:s/\%#=0\o//g
p:s/\%#=1\o//g
p:s/\%#=2\o//g
p:s/\%#=0[0-7]//g
p:s/\%#=1[0-7]//g
p:s/\%#=2[0-7]//g
p:s/\%#=0\O//g:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test character classes in regexp using regexpengine 0, 1, 2./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 101 lines, 1850 characters written:set ff& cpo+=A
/ENDTESTp:s/\%#=1[^a-z]//g
p:s/\%#=2[^a-z]//g
p:s/\%#=0\u//g
p:s/\%#=1\u//g
p:s/\%#=2\u//g
p:s/\%#=0[A-Z]//g
p:s/\%#=1[A-Z]//g
p:s/\%#=2[A-Z]//g
p:s/\%#=0\U//g
p:s/\%#=1\U//g
p:s/\%#=2\U//g
p:s/\%#=0[^A-Z]//g
p:s/\%#=1[^A-Z]//g
p:s/\%#=2[^A-Z]//g
p:s/\%#=0\%204l^\t...//g
p:s/\%#=1\%205l^\t...//g
p:s/\%#=2\%206l^\t...//g
:/^start-here/+1,$wq! test.out
ENDTEST













:s/\%#=0\D//g
72 substitutions on 1 line0123456789~

:s/\%#=1\D//g
72 substitutions on 1 line0123456789~

:s/\%#=2\D//g
72 substitutions on 1 line0123456789~

:s/\%#=0[^0-9]//g
72 substitutions on 1 line0123456789~

:s/\%#=1[^0-9]//g
72 substitutions on 1 line0123456789~

:s/\%#=2[^0-9]//g
72 substitutions on 1 line0123456789~





~



~



~



~



~


:s/\%#=0\O//g
74 substitutions on 1 line01234567~

~


:s/\%#=2\O//g
74 substitutions on 1 line01234567~

:s/\%#=1[^0-7]//g
74 substitutions on 1 line01234567~

:s/\%#=2[^0-7]//g
74 substitutions on 1 line01234567~





~



~


:s/\%#=0\X//g
60 substitutions on 1 line0123456789ABCDEFabcdef~

~


:s/\%#=2\X//g
60 substitutions on 1 line0123456789ABCDEFabcdef~

~


:s/\%#=1[^0-9A-Fa-f]//g
60 substitutions on 1 line0123456789ABCDEFabcdef~

~



~





:s/\%#=0\W//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1\W//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2\W//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=0[^0-9A-Za-z_]//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1[^0-9A-Za-z_]//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2[^0-9A-Za-z_]//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~







:s/\%#=0\H//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1\H//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2\H//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=0[^A-Za-z_]//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1[^A-Za-z_]//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2[^A-Za-z_]//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~







:s/\%#=0\A//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=1\A//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=2\A//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=0[^A-Za-z]//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=1[^A-Za-z]//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=2[^A-Za-z]//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~













:s/\%#=0\L//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=1\L//g
69 substitutions on 1 lineabcdefghiwxyz~gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/misc1.o misc1.c


:s/\%#=2\L//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=0[^a-z]//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=1[^a-z]//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=2[^a-z]//g
69 substitutions on 1 lineabcdefghiwxyz~





~



~



~



~



~


:s/\%#=0\U//g
70 substitutions on 1 lineABCDEFGHIXYZ~

~


:s/\%#=2\U//g
70 substitutions on 1 lineABCDEFGHIXYZ~

:s/\%#=1[^A-Z]//g
70 substitutions on 1 lineABCDEFGHIXYZ~

:s/\%#=2[^A-Z]//g
70 substitutions on 1 lineABCDEFGHIXYZ~





~


# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test36 = test61; then \
#	  if diff test.out test36.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test36.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test36.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test37.failed test.ok test.out X* viminfo
cp test37.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test37.in
[?1h="test37.in" 116 lines, 3262 charactersTest for 'scrollbind'. <eralston@computer.org>   Do not add a line below!
STARTTEST
:so small.vim
:set noscrollbind
:set scrollopt=ver,jump
:set scrolloff=2
:set nowrap
:set noequalalways
:set splitbelow
:" TEST using two windows open to one buffer, one extra empty window
:split
:new
^Wt:
:resize 8
/^start of window 1$/
zt:
:set scrollbind
^Wj:
:resize 7
/^start of window 2$/
zt:
:set scrollbind
:" -- start of tests --:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for 'scrollbind'. <eralston@computer.org>   Do not add a line below!/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 72 lines, 1498 characters written:set ff& cpo+=A
/ENDTESTHk^WtH^WjHyy^Wbp^Wtyy^Wbp:
^Wt:set noscb
ggL^Wj:set noscb
ggL:set scb
^Wt:set scb
^WtG^WjG^Wt:syncbind
Hk^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:
^WtH3k^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:
:" ***** done with tests *****
:w! test.out" Write contents of this file
:qa!
ENDTEST


start of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03
. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08
:so! Xdotest
:so small.vim
:set noscrollbind
:set scrollopt=ver,jump
:set scrolloff=2
:set nowrap
:set noequalalways
:set splitbelow
:" TEST using two windows open to one buffer, one extra empty window
:split
^WtH3k^WtHyybp^Wt^Wjyy^Wbp:
:" ***** done with tests *****
:w! test.out    " Write contents of this file
:qa!ENDTESTstart of window 1. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02test37.in                                                                       Hk^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:
^WtH3k^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:
:" ***** done with tests *****
:w! test.out     " Write contents of this file
:qa!ENDTESTstart of window 11122
test37.in                                                                       :new
:w! test.out             " Write contents of this file
:qa!ENDTESTtest37.in                                                                       ~~~~
[No Name]test37.in                                                                       [No Name]                                                                       ::resize 8
:" ***** done with tests *****w! test.out             " Write contents of this file
:qa!ENDTESTstart of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
test37.in                                                                       :" ***** done with tests *****:w! test.out             " Write contents of this fileqa!ENDTESTstart of window 1/^start of window 1$/

. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02


. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03
. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05::set scrollbind
test37.in                                                                       test37.in                                                                       ::resize 7
/^start of window 2$/
end of window 1start of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04::set scrollbind
:" -- start of tests --
:" TEST scrolling down







. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08
. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09
. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10




. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08
. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09test37.in                                                                       [No Name]                                                                       
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05[+]0test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
1test37.in                                                                       [No Name] [+]                                                                   








. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15
end of window 1





. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15test37.in                                                                       [No Name] [+]                                                                   
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
2test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
3

::" TEST scrolling up
test37.in                                                                       [No Name] [+]                                                                   . line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08440505060607070808090900test37.in                                                                       test37.in                                                                       test37.in                                                                       test37.in                                                                       test37.in                                                                       [No Name] [+]                                                                   
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
4test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
5test37.in                                                                       [No Name] [+]                                                                   start of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03start of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
test37.in                                                                       test37.in                                                                       test37.in                                                                       test37.in                                                                       test37.in                                                                       [No Name] [+]                                                                   
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
6test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
7

::" TEST horizontal scrolling
:set scrollopt+=hor
05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
2 line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
3 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11



4 line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
5 line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
6 line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
7 line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
test37.in                                                                       [No Name] [+]                                                                    156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0256789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0356789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0556789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0656789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07 2UTSRQPONMLKJIHGREDCBA9876543210 01UTSRQPONMLKJIHGREDCBA9876543210 02UTSRQPONMLKJIHGREDCBA9876543210 03UTSRQPONMLKJIHGREDCBA9876543210 04UTSRQPONMLKJIHGREDCBA9876543210 05UTSRQPONMLKJIHGREDCBA9876543210 06test37.in                                                                       [No Name] [+]                                                                   56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   UTSRQPONMLKJIHGREDCBA9876543210 02


:test37.in                                                                       [No Name] [+]                                                                   56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09101112131415UTSRQPONMLKJIHGREDCBA9876543210 09101112131415. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09
. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15
end of window 1

. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09
. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15test37.in                                                                       [No Name] [+]                                                                   . line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
test37.in                                                                       [No Name] [+]                                                                   
test37.in                                                                       [No Name] [+]                                                                   . line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11


::set scrollopt-=hor
:" ****** tests using two different buffers *****
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       test37.in                                                                       ::close
start of window 20000000000::set noscrollbind
:/^start of window 2$/,/^end of window 2$/y
18 lines yanked:new
test37.in                                                                       ~~~~~~~
[No Name]test37.in                                                                       [No Name]                                                                       test37.in                                                                       [No Name]                                                                       4 more lines[+]


18 more linesstart of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02:test37.in                                                                       [No Name] [+]                                                                   /^start of window 1$/
search hit BOTTOM, continuing at TOPENDTESTstart of window 1010102020303
. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04::set scrollbind
test37.in                                                                       [No Name] [+]                                                                   :/^start of window 2$/
search hit BOTTOM, continuing at TOP


. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05::set scrollbind
:" -- start of tests --
:" TEST scrolling down








. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08
. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09




. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08
. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09
. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10[No Name] [+]                                                                   [No Name] [+]                                                                   
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
0test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
1test37.in                                                                       [No Name] [+]                                                                   







. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15





. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16test37.in                                                                       [No Name] [+]                                                                   
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
2[No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
3

::" TEST scrolling up
test37.in                                                                       [No Name] [+]                                                                   440505060607070808090900. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
4[No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
5[No Name] [+]                                                                   [No Name] [+]                                                                   start of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03start of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
6test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
7

::" TEST horizontal scrolling
:set scrollopt+=hor
05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
2 line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
3 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 113 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
46 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
56 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
6 line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
7 line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02

test37.in                                                                       [No Name] [+]                                                                    156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0256789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0356789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0556789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06 2UTSRQPONMLKJIHGREDCBA9876543210 01UTSRQPONMLKJIHGREDCBA9876543210 02UTSRQPONMLKJIHGREDCBA9876543210 03UTSRQPONMLKJIHGREDCBA9876543210 04UTSRQPONMLKJIHGREDCBA9876543210 05UTSRQPONMLKJIHGREDCBA9876543210 06UTSRQPONMLKJIHGREDCBA9876543210 07test37.in                                                                       [No Name] [+]                                                                   56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
[No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   UTSRQPONMLKJIHGREDCBA9876543210 02


:[No Name] [+]                                                                   [No Name] [+]                                                                   56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09101112131415

UTSRQPONMLKJIHGREDCBA9876543210 0910111213141516. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09
. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15

. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09
. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[No Name] [+]                                                                   [No Name] [+]                                                                   . line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
test37.in                                                                       [No Name] [+]                                                                   
test37.in                                                                       [No Name] [+]                                                                   . line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11


::set scrollopt-=hor
:" TEST syncbind
test37.in                                                                       [No Name] [+]                                                                   :set noscb
Test for 'scrollbind'. <eralston@computer.org>   Do not add a line below!
STARTTEST:so small.vim:set noscrollbind:set scrollopt=ver,jump:set scrolloff=2:set nowrap


test37.in                                                                       [No Name] [+]                                                                   :set noscb
start of window 201010202:set scb
test37.in                                                                       [No Name] [+]                                                                   :set scb
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
end of window 2end of test37.in (please don't delete this line)

end of window 2
~
~
~
~~~~zt::set scrollbind:" -- start of tests --:" TEST scrolling downL5jHyy^Wbpr0^WtHyy^Wbpr1^WtL6jHyy^Wbpr2^WkHyy^Wbpr3:
:" TEST scrolling up
^WtH4k^WjH^WtHyy^Wbpr4^WkHyy^Wbpr5^Wk3k^WtH^WjHyy^Wbpr6^WtHyy^Wbpr7:
test37.in                                                                       . line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[No Name] [+]                                                                   :syncbind
/^start of window 2$/. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
:set scrollbind


:test37.in                                                                       [No Name] [+]                                                                   :set noscb
Test for 'scrollbind'. <eralston@computer.org>   Do not add a line below!
STARTTEST
:so small.vimset noscrollbindset scrollopt=ver,jump
:set scrolloff=2set nowrap


test37.in                                                                       [No Name] [+]                                                                   :set noscb
start of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02:set scb
test37.in                                                                       [No Name] [+]                                                                   :set scb
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
end of window 2end of test37.in (please don't delete this line)

end of window 2
~
~
~
~~~~zt::set scrollbind:" -- start of tests --:" TEST scrolling downL5jHyy^Wbpr0^WtHyy^Wbpr1^WtL6jHyy^Wbpr2^WkHyy^Wbpr3:
:" TEST scrolling up
^WtH4k^WjH^WtHyy^Wbpr4^WkHyy^Wbpr5^Wk3k^WtH^WjHyy^Wbpr6^WtHyy^Wbpr7:
test37.in                                                                       . line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   :syncbind
/^start of window 2$/. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
:set scrollbind
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16


:test37.in                                                                       [No Name] [+]                                                                   zt:
:set scrollbind
^Wj:
:resize 7. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
^Wj:
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12


::" ***** done with tests *****
:w! test.out             " Write contents of this file
"test.out" [New File] 33 lines, 1329 characters writtentest.out     :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test37 = test61; then \
#	  if diff test.out test37.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test37.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test37.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test38.failed test.ok test.out X* viminfo
cp test38.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test38.in
[?1h="test38.in" 35 lines, 455 charactersTest Virtual replace mode.

STARTTEST
:so small.vim
:" make sure that backspace works, no matter what termcap is used
:set t_kD=^Vx7f t_kb=^Vx08
ggdGa
abcdefghi
jk      lmn
    opq rst
^Duvwxyz
^[gg:set ai
:set bs=2
gR0^D 1
A
BCDEFGHIJKL
MNO
PQR^[G:ka
o0^D
abcdefghi
jk      lmn:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 29 lines, 407 characters written:set ff& cpo+=A
/ENDTEST










opq rst
^Duvwxyz
^['ajgR0^D 1
A
BCDEFGHIJKL
MNO
PQR^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^[:$
iab     cdefghi jkl^[0gRAB......CDEFGHI.J^[o^[:
iabcdefghijklmnopqrst^[0gRAB    IJKLMNO QR^[:wq! test.out
ENDTEST

:so! Xdotest
:so small.vim
:" make sure that backspace works, no matter what termcap is used
:set t_kD=^^? t_kb=^^H
^[gg:set ai
:set bs=2
gR0^D 1
A
BCDEFGHIJKL
MNO
PQR^[G:ka
o0^D
abcdefghi
jk      lmn
    opq rst
^Duvwxyz
^['ajgR0^D 1
A
BCDEFGHIJKL
MNO
PQR^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^[:$
iab     cdefghi jkl^[0gRAB......CDEFGHI.J^[o^[:
iabcdefghijklmnopqrst^[0gRAB    IJKLMNO QR^[:wq! test.out
ENDTEST
Test Virtual replace mode.

STARTTEST
:so small.vim
:" make sure that backspace works, no matter what termcap is used
:set t_kD=^Vx7f t_kb=^Vx08
ggdGa
abcdefghi
jk      lmn
    opq rst
^Duvwxyz~
~~~~~~~~~~~~~
~~~~~~~~
--No lines in buffer--
abcdefghi
jk      lmn
    opq rst
uvwxyz:set ai
:set bs=2
 1
 A BCDEFGHIJ    KL        MNOPQR:ka
abcdefghi
jk      lmn
    opq rst
uvwxyz
 1:$
ab      cdefghi jkl
AB......CDEFGHI.J:abcdefghijklmnopqrst
AB      IJKLMNO QR:wq! test.out
"test.out" [New File] 13 lines, 107 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test38 = test61; then \
#	  if diff test.out test38.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test38.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test38.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test39.failed test.ok test.out X* viminfo
cp test39.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test39.in
[?1h="test39.in" 118 lines, 2435 charactersTest Visual block mode commands
And test "U" in Visual mode, also on German sharp S.

#define BO_ALL      0x0001
#define BO_BS0x0002
#define BO_CRSR     0x0004

STARTTEST
:so small.vim
:so mbyte.vim
:" This only works when 'encoding' is "latin1", don't depend on the environment
:set enc=latin1
/^abcde
:" Test shift-right of a block
jllll^Vjj>wll^Vjlll>
:" Test shift-left of a block
G$hhhh^Vkk<
:" Test block-insert
Gkl^VkkkIxyz^[
:" Test block-replace
Gllll^Vkkklllrq
:" Test block-change:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 75 lines, 2061 characters written:set ff& cpo+=A
/ENDTEST:exe ":norm! 2k\<C-V>$gj\<Esc>"
:let cpos=getpos("'>")
:$put ='col:'.cpos[2].' off:'.cpos[3]
:"
:" block_insert when replacing spaces in front of the block with tabs
:set ts=8 sts=4 sw=4
:4,7y
Gp
:exe ":norm! f0\<C-V>2jI\<tab>\<esc>"
:/^the/,$w >> test.out
:qa!
ENDTESTline1line2line3

aaaaaa
bbbbbb
cccccc
dddddd

xaaa
:so! Xdotest
:so small.vim
:so mbyte.vim
:" This only works when 'encoding' is "latin1", don't depend on the environment
:set enc=latin1
:exe ":norm! 2k\<C-V>$gj\<Esc>"
:let cpos=getpos("'>")
:$put ='col:'.cpos[2].' off:'.cpos[3]
:"
:" block_insert when replacing spaces in front of the block with tabs
:set ts=8 sts=4 sw=4
:4,7y
Gp
:exe ":norm! f0\<C-V>2jI\<tab>\<esc>"
:/^the/,$w >> test.out
:qa!
ENDTESTline1line2line3

aaaaaa
bbbbbb
cccccc
dddddd

xaaa/^abcde


















bbbb
cccc
dddd

yaaa
bbb

A23
4567

B23
4567

C23
4567

abcdefghijklm
:" Test shift-right of a block

abcdefghijklmabcd
e
abcdefghijklm
abcd
e
abcdefghijklm
abcd
3 lines >ed 1 time        efghijklm
abcd        efghijklm
abcd        efghijklm     efghgihji        ghijklm        ghijklm:" Test shift-left of a block

abcdefghijklmi 


3 lines <ed 1 timeef    efghijklmi:" Test block-insert

abbb
ab
ab
abxyzbcdefghijklm
axyzbcd
axyzbcd
axyzbcd
a:" Test block-replace



abcdebbbccfcddgd  hqqqq
axyzqqqq
axyzqqqq
abcdqqqq
axyz:" Test block-change


ji     ghijklef  gklmnomnomno:$-4,$w! test.out
"test.out" [New File] 5 lines, 108 characters written:" Test block-insert using cursor keys for movement
/^aaaa/
search hit BOTTOM, continuing at TOPaaaaaa
bbbbbb
cccccc
ddddddsearch hit BOTTOM, continuing at TOP:exe ":norm! l\<C-V>jjjlllI\<Right>\<Right>  \<Esc>"
  aaa
bbb  bbb
ccc  ccc
ddd  ddd:/^aa/,/^$/w >> test.out
search hit BOTTOM, continuing at TOP
"test.out" 5 lines, 37 characters appended/xaaa$/
:exe ":norm! \<C-V>jjjI<>\<Left>p\<Esc>"
<p>xaaa
<p>bbbb
<p>cccc
<p>dddd:/xaaa$/,/^$/w >> test.out
search hit BOTTOM, continuing at TOP
"test.out" 5 lines, 33 characters appended:" Test for Visual block was created with the last <C-v>$
/^A23$/
:exe ":norm! l\<C-V>j$Aab\<Esc>"
ab
4567ab:.,/^$/w >> test.out
"test.out" 3 lines, 14 characters appended:" Test for Visual block was created with the middle <C-v>$ (1)
/^B23$/
:exe ":norm! l\<C-V>j$hAab\<Esc>"
ab
4567ab:.,/^$/w >> test.out
"test.out" 3 lines, 15 characters appended:" Test for Visual block was created with the middle <C-v>$ (2)
/^C23$/
:exe ":norm! l\<C-V>j$hhAab\<Esc>"
ab
456ab7:.,/^$/w >> test.out
"test.out" 3 lines, 14 characters appended:" Test for Visual block insert when virtualedit=all and utf-8 encoding
:set ve=all enc=utf-8
aaa  aaa
bbb  bbb
ccc  ccc
ddd  ddd

<p>xaaa
<p>bbbb
<p>cccc
<p>dddd

yaaa
<bf><bf><bf>
bbb

A23ab
4567ab

B23 ab
4567ab

C23ab
456ab7


:/\t\tline
search hit BOTTOM, continuing at TOPline1line2line3search hit BOTTOM, continuing at TOP:exe ":norm! 07l\<C-V>jjIx\<Esc>"
xxx:.,/^$/w >> test.out
"test.out" 4 lines, 49 characters appended:" Test for Visual block append when virtualedit=all
:exe ":norm! 012l\<C-v>jjAx\<Esc>"
x   line1x   line2x   line3:set ve= enc=latin1
x     x   line1x     x   line2x     x   line3

aaa  aaa
bbb  bbb
ccc  ccc
ddd  ddd

<p>xaaa
<p>bbbb
<p>cccc
<p>dddd

yaaa
bbb

A23ab
4567ab

B23 ab








C23ab
456ab7

axyzbcdefghijklm
axyzqqqq   mnoghijklm
axyzqqqqef mnoghijklm
axyzqqqqefgmnoklm
abcdqqqqijklm
the 
:" VU must uppercase a whole line


:" same, when it's the last line in the buffer


:" Uppercase two lines

blah didoh dut
doh dut blah di t
BLAH DIDOH DUT
:" Uppercase part of two lines
~
333the youtUTUSSEUU END
333THE YOUTU

:" visual replace using Enter or NL




123456789
123456789
123456789
1234566789


789
12345
789



98765
98765
98765
987
987
98^M65
98^M65
98^M65
98



123456789
123456789
123456789
1234566789


789
12345
789



98765
98765
98765
987
987
98^@65
98^@65
98^@65


:"
:" Test cursor position. When ve=block and Visual block mode and $gj
:set ve=block
:exe ":norm! 2k\<C-V>$gj\<Esc>"
:let cpos=getpos("'>")
:$put ='col:'.cpos[2].' off:'.cpos[3]

col:4 off:0
:"
:" block_insert when replacing spaces in front of the block with tabs
:set ts=8 sts=4 sw=4
:4,7y
4 lines yanked
4 more lines
4 more lines
#define BO_ALL      0x0001
:exe ":norm! f0\<C-V>2jI\<tab>\<esc>"


    0x0001
#define BO_BS0x0002
#define BO_CRSR0x0004


:/^the/,$w >> test.out
search hit BOTTOM, continuing at TOP
"test.out" 31 lines, 322 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test39 = test61; then \
#	  if diff test.out test39.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test39.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test39.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test40.failed test.ok test.out X* viminfo
cp test40.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test40.in
[?1h="test40.in" 63 lines, 1536 charactersTest for "*Cmd" autocommands

STARTTEST
:so small.vim
:/^start/,$w! Xxx" write lines below to Xxx
:au BufReadCmd XtestA 0r Xxx|$del
:e XtestA" will read text of Xxd instead
:au BufWriteCmd XtestA call append(line("$"), "write")
:w" will append a line to the file
:r XtestA" should not read anything
:" now we have:
:" 1     start of Xxx
:" 2test40
:" 3     end of Xxx
:" 4     write
:au FileReadCmd XtestB '[r Xxx
:2r XtestB" will read Xxx below line 2 instead
:" 1     start of Xxx
:" 2test40
:" 3     start of Xxx
:" 4test40
:" 5     end of Xxx
:" 6     end of Xxx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for "*Cmd" autocommands/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 55 lines, 1455 characters written:set ff& cpo+=A
/ENDTEST:$w >>test.out" append "end of Xxx" to test.out
:au BufReadCmd XtestE 0r test.out|$del
:sp XtestE" split window with test.out
5Goasdf^[^W^W:"
:au BufWriteCmd XtestE w! test.out
:wall" will write other window to test.out
:" 1     start of Xxx
:" 2test40
:" 3     start of Xxx
:" 4test401
:" 5     end of Xxx
:" 6     asdf
:" 7     end of Xxx
:" 8     write
:" 9test401
:" 10    end of Xxx
:" 11    end of Xxx
:qa!
ENDTEST

start of Xxxtest40
end of Xxx
:so! Xdotest
:so small.vim
:/^start/,$w! Xxx^I^I" write lines below to Xxx
"Xxx" [New File] 3 lines, 32 characters written:au BufReadCmd XtestA 0r Xxx|$del
:e XtestA^I^I^I" will read text of Xxd instead
"Xxx" 3 lines, 32 charactersstart of Xxx        test40end of Xxx~~~~~~~~~~~~~~~~
~~~~:au BufWriteCmd XtestA call append(line("$"), "write")
:w^I^I^I^I" will append a line to the file
write:r XtestA^I^I^I" should not read anything
E484: Can't open file XtestA:^I^I^I^I" now we have:
:^I^I^I^I" 1^Istart of Xxx
:^I^I^I^I" 2^I^Itest40
:^I^I^I^I" 3^Iend of Xxx
:^I^I^I^I" 4^Iwrite
:au FileReadCmd XtestB '[r Xxx
:2r XtestB^I^I^I" will read Xxx below line 2 instead
"Xxx" 3 lines, 32 charactersstart of Xxxtest40
end of Xxx:^I^I^I^I" 1^Istart of Xxx
:^I^I^I^I" 2^I^Itest40
:^I^I^I^I" 3^Istart of Xxx
:^I^I^I^I" 4^I^Itest40
:^I^I^I^I" 5^Iend of Xxx
:^I^I^I^I" 6^Iend of Xxx
:^I^I^I^I" 7^Iwrite
:au FileWriteCmd XtestC '[,']copy $
test401:4,5w XtestC^I^I^I" will copy lines 4 and 5 to the end
 test401
end of Xxx
:r XtestC^I^I^I" should not read anything
E484: Can't open file XtestC:^I^I^I^I" 1^Istart of Xxx
:^I^I^I^I" 2^I^Itest40
:^I^I^I^I" 3^Istart of Xxx
:^I^I^I^I" 4^I^Itest401
:^I^I^I^I" 5^Iend of Xxx
:^I^I^I^I" 6^Iend of Xxx
:^I^I^I^I" 7^Iwrite
:^I^I^I^I" 8^I^Itest401
:^I^I^I^I" 9^Iend of Xxx
:au FILEAppendCmd XtestD '[,']w! test.out
:w >>XtestD^I^I^I" will write all lines to test.out
"test.out" [New File] 9 lines, 91 characters written:$r XtestD^I^I^I" should not read anything
E484: Can't open file XtestD:$w >>test.out^I^I^I" append "end of Xxx" to test.out
"test.out" 1 line, 11 characters appended:au BufReadCmd XtestE 0r test.out|$del
:sp XtestE^I^I^I" split window with test.out
"test.out" 10 lines, 102 charactersend of Xxx

XtestE                                                                          end of Xxx
write
 test401
end of XxxXtestA                                                                          asdf[+]XtestE [+]                                                                      XtestA                                                                          :"
:au BufWriteCmd XtestE w! test.out
:wall^I^I^I^I" will write other window to test.out
"test.out" 11 lines, 107 characters written   :^I^I^I^I" 1^Istart of Xxx
:^I^I^I^I" 2^I^Itest40
:^I^I^I^I" 3^Istart of Xxx
:^I^I^I^I" 4^I^Itest401
:^I^I^I^I" 5^Iend of Xxx
:^I^I^I^I" 6^Iasdf
:^I^I^I^I" 7^Iend of Xxx
:^I^I^I^I" 8^Iwrite
:^I^I^I^I" 9^I^Itest401
:^I^I^I^I" 10^Iend of Xxx
:^I^I^I^I" 11^Iend of Xxx
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test40 = test61; then \
#	  if diff test.out test40.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test40.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test40.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test41.failed test.ok test.out X* viminfo
cp test41.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test41.in
[?1h="test41.in" 24 lines, 421 charactersTest for writing and reading a file of over 100 Kbyte

1 line: "This is the start"
3001 lines: "This is the leader"
1 line: "This is the middle"
3001 lines: "This is the trailer"
1 line: "This is the end"

STARTTEST
:%d
aThis is the start
This is the leader
This is the middle
This is the trailer
This is the end^[kY3000p2GY3000p
:w! Xtest
:%d
:e! Xtest
:.w! test.out
3003G:.w >>test.out
6005G:.w >>test.out
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for writing and reading a file of over 100 Kbyte/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 13 lines, 196 characters written:set ff& cpo+=A
/ENDTEST

:so! Xdotest
:%d
~~~~~
~~~~~~~~~~~~~~~~
~
--No lines in buffer--This is the start
This is the leader
This is the middle
This is the trailer
This is the end3000 more linestrailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailerleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleader
:w! Xtest
"Xtest" [New File] 6005 lines, 117092 characters written:%d
~~~~~~~~~~~~~~~~~~~~~~
--No lines in buffer--:e! Xtest
"Xtest" 6005 lines, 117092 charactersThis is the start
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader:.w! test.out
"test.out" [New File] 1 line, 18 characters writtenThis is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the middle
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer:.w >>test.out
"test.out" 1 line, 19 characters appendedThis is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the end

:.w >>test.out
"test.out" 1 line, 16 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test41 = test61; then \
#	  if diff test.out test41.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test41.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test41.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test42.failed test.ok test.out X* viminfo
cp test42.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test42.in
[?1h="test42.in" 130 lines, 2368 charactersTest for writing and reading a file starting with a BOM

STARTTEST
:so mbyte.vim
:set encoding=utf-8
:set fileencodings=ucs-bom,latin-1
:set ff=unix ffs=unix" This changes the file for DOS and MAC
:" --- Write the test files
:/^latin-1$/+1w! Xtest0
:/^utf-8$/+1w! Xtest1
:/^utf-8-err$/+1w! Xtest2
:/^ucs-2$/+1w! Xtest3
:/^ucs-2le$/+1w! Xtest4
:" Need to add a NUL byte after the NL byte
:set bin
:e! Xtest4" Ignore change from setting 'ff'
o^V^@^[:set noeol
:w
:set ffs& nobinary" Allow default test42.in format
:e #
:set ff=unix" Format for files to write
:/^ucs-4$/+1w! Xtest5
:/^ucs-4le$/+1w! Xtest6:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for writing and reading a file starting with a BOM/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 111 lines, 2116 characters written:set ff& cpo+=A
/ENDTEST:e! test.out
:$r Xtest0x
:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&" Write the file in default format
:w! test.out
:qa!
ENDTEST

latin-1
utf-8
utf-8
utf-8-err
utf-8~@err
ucs-2
ucs-2le
:so! Xdotest
:so mbyte.vim
:set encoding=utf-8
:e! test.out
:$r Xtest0x
:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&" Write the file in default format
:w! test.out
:qa!
ENDTEST

latin-1
<fe><fe>latin-1
utf-8
<feff>utf-8
utf-8-err
<feff>utf-8<80>err
ucs-2
<fe><ff>^@u^@c^@s^@-^@2^@
ucs-2le
<ff><fe>u^@c^@s^@-^@2^@l^@e^@:set fileencodings=ucs-bom,latin-1
:set ff=unix ffs=unix           " This changes the file for DOS and MAC
:" --- Write the test files
:/^latin-1$/+1w! Xtest0
"Xtest0" [New File] 1 line, 10 characters written:/^utf-8$/+1w! Xtest1
"Xtest1" [New File] 1 line, 9 characters written:/^utf-8-err$/+1w! Xtest2
"Xtest2" gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/digraph.o digraph.c
[New File] 1 line, 13 characters written:/^ucs-2$/+1w! Xtest3
"Xtest3" [New File] 1 line, 14 characters written:/^ucs-2le$/+1w! Xtest4
"Xtest4" [New File] 1 line, 17 characters written:" Need to add a NUL byte after the NL byte
:set bin
:e! Xtest4                      " Ignore change from setting 'ff'
"Xtest4" 1 line, 17 characters<ff><fe>u^@c^@s^@-^@2^@l^@e^@~~~~~~~~~~~
~~~~~~~~~~~
^@
:set noeol
:w
"Xtest4" [Incomplete last line] 2 lines, 18 characters written:set ffs& nobinary              " Allow default test42.in format
:e #
"test42.in" [converted] 130 lines, 2385 characters:$r Xtest0x:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&" Write the file in default format
:w! test.out
:qa!
ENDTESTlatin-1
þþlatin-1
utf-8
utf-8
utf-8-err
utf-8<80>err
ucs-2
þÿ^@u^@c^@s^@-^@2^@
ucs-2le
ÿþu^@c^@s^@-^@2^@l^@e^@
ucs-4:set ff=unix                    " Format for files to write
:/^ucs-4$/+1w! Xtest5
"Xtest5" gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/move.o move.c
[converted][New File] 1 line, 30 characters written:/^ucs-4le$/+1w! Xtest6
"Xtest6" [converted][New File] 1 line, 35 characters written:" Need to add three NUL bytes after the NL byte
:set bin
:e! Xtest6                      " ! for when setting 'ff' is a change
"Xtest6" 1 line, 33 characters<ff><fe>^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@l^@^@^@e^@^@^@~~~~~~~~~~
~~~~~~~~~~~~
~   
^@^@^@:set noeol
:w
"Xtest6" [Incomplete last line] 2 lines, 36 characters written:set nobin
:e #
"test42.in" [converted] 130 lines, 2385 characters:$r Xtest0x:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&" Write the file in default format
:w! test.out
:qa!
ENDTESTlatin-1
þþlatin-1
utf-8
utf-8
utf-8-err
utf-8<80>err
ucs-2
þÿ^@u^@c^@s^@-^@2^@
ucs-2le
ÿþu^@c^@s^@-^@2^@l^@e^@
ucs-4:"
:" --- Check that editing a latin-1 file doesn't see a BOM
:e! Xtest0
"Xtest0" [converted] 1 line, 12 charactersþþlatin-1~~~~~~~~~~
~~~~~~~~~~~~:redir! >test.out
:set fileencoding bomb?
  fileencoding=latin1

nobomb

Press ENTER or type command to continue:redir END
þþlatin-1
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 12 characters appended:set bomb fenc=latin-1
:w! Xtest0x
"Xtest0x" [converted][New File] 1 line, 12 characters written:"
:" --- Check utf-8
:e! Xtest1
"Xtest1" 1 line, 9 charactersutf-8:redir >>test.out
:set fileencoding bomb?
  fileencoding=utf-8

  bomb

Press ENTER or type command to continue:redir END
utf-8
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 6 characters appended:set fenc=utf-8
:w! Xtest1x
"Xtest1x" [New File] 1 line, 9 characters written:"
:" --- Check utf-8 with an error (will fall back to latin-1)
:e! Xtest2
"Xtest2" [converted] 1 line, 17 charactersutf-8<80>err
:redir >>test.out
:set fileencoding bomb?
  fileencoding=latin1

nobomb

Press ENTER or type command to continue:redir END
utf-8<80>err
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 17 characters appended:set fenc=utf-8
:w! Xtest2x
"Xtest2x" [New File] 1 line, 17 characters written:"
:" --- Check ucs-2
:e! Xtest3
"Xtest3" [converted] 1 line, 8 charactersucs-2:redir >>test.out
:set fileencoding bomb?
  fileencoding=utf-16

  bomb

Press ENTER or type command to continue:redir END
ucs-2
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 6 characters appended:set fenc=ucs-2
:w! Xtest3x
"Xtest3x" [converted][New File] 1 line, 8 characters written:"
:" --- Check ucs-2le
:e! Xtest4
"Xtest4" [converted] 1 line, 10 charactersle
:redir >>test.out
:set fileencoding bomb?
  fileencoding=utf-16le

  bomb

Press ENTER or type command to continue:redir END
ucs-2le
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 8 characters appended:set fenc=ucs-2le
:w! Xtest4x
"Xtest4x" [converted][New File] 1 line, 10 characters written:"
:" --- Check ucs-4
:e! Xtest5
"Xtest5" [converted] 1 line, 10 characters4:redir >>test.out
:set fileencoding bomb?
  fileencoding=ucs-4

  bomb

Press ENTER or type command to continue:redir END
ucs-4
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 6 characters appended:set fenc=ucs-4
:w! Xtest5x
"Xtest5x" [converted][New File] 1 line, 10 characters written:"
:" --- Check ucs-4le
:e! Xtest6
"Xtest6" [converted] 1 line, 12 charactersle
:redir >>test.out
:set fileencoding bomb?
  fileencoding=ucs-4le

  bomb

Press ENTER or type command to continue:redir END
ucs-4le
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 8 characters appended:set fenc=ucs-4le
:w! Xtest6x
"Xtest6x" [converted][New File] 1 line, 12 characters written:"
:" --- Check the files written with BOM
:set bin
:e! test.out
"test.out" 35 lines, 275 characters  fileencoding=latin1
nobomb
<fe><fe>latin-1  fileencoding=utf-8
  bomb
utf-8  fileencoding=latin1
nobomb
<feff>utf-8<80>err  fileencoding=utf-16
  bomb
ucs-2  fileencoding=utf-16le:$r Xtest0x
"Xtest0x" 1 line, 10 characters












bomb
ucs-2lefileencoding=ucs-4
  bomb
ucs-4fileencoding=ucs-4le
  bomb
ucs-4le
<fe><fe>latin-1
:$r Xtest1x
"Xtest1x" 1 line, 9 characters
<feff>utf-8
:$r Xtest2x
"Xtest2x" 1 line, 17 characters
utf-8<80>err
:$r Xtest3x
"Xtest3x" 1 line, 14 characters
<fe><ff>^@u^@c^@s^@-^@2^@
:$r Xtest4x
"Xtest4x" [Incomplete last line] 2 lines, 18 characters
<ff><fe>u^@c^@s^@-^@2^@l^@e^@
:$r Xtest5x
"Xtest5x" 1 line, 28 characters

^@
^@^@<fe><ff>^@^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@
:$r Xtest6x
"Xtest6x" [Incomplete last line] 2 lines, 36 characters
<ff><fe>^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@l^@^@^@e^@^@^@
:set nobin ff&               " Write the file in default format
:w! test.out
"test.out" 44 lines, 409 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test42 = test61; then \
#	  if diff test.out test42.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test42.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test42.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test43.failed test.ok test.out X* viminfo
cp test43.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test43.in
[?1h="test43.in" 34 lines, 473 charactersTests for regexp with various magic settings.

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo
/^1
/a*b\{2}c\+/e
x/\Md\*e\{2}f\+/e
x:set nomagic
/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$
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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with various magic settings./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 19 lines, 268 characters written:set ff& cpo+=A
/ENDTEST

:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo
/^1

1 a aa abb abbccc
/a*b\{2}c\+/e
/\Md\*e\{2}f\+/e

2 d dd dee deefff
:set nomagic
/g\*h\{2}i\+/e

3 g gg ghh ghhiii
/\mj*k\{2}l\+/e

4 j jj jkk jkklll
/\vm*n{2}o+/e

5 m mm mnn mnnooo
/\V^aa$

6 x ^aa$ xaa$ x
:set magic
/\v(a)(b)\2\1\1/e

7 (a)(b) abbaa
/\V[ab]\(\[xy]\)\1

8 axx [ab]xxab]x
:$


9 foobar
:set undolevels=100
?bar?
~

1 more line; before #2  0 seconds agobar
9 foo
:"
:?^1?,$w! test.out
"test.out" [New] 11L, 137C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test43 = test61; then \
#	  if diff test.out test43.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test43.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test43.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test44.failed test.ok test.out X* viminfo
cp test44.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/edit.o edit.c
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test44.in
[?1h="test44.in" 81 lines, 1492 charactersTests for regexp with multi-byte encoding and various magic settings.
Test matchstr() with a count and multi-byte chars.
See test99 for exactly the same test with re=2.

STARTTEST
:so mbyte.vim
:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
:set re=1
/^1
/a*b\{2}c\+/e
x/\Md\*e\{2}f\+/e
x:set nomagic
/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$
x:set magic
/\v(a)(b)\2\1\1/e
x/\V[ab]\(\[xy]\)\1
x:" Now search for multi-byte without composing char
/ม
x:" Now search for multi-byte with composing char
f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with multi-byte encoding and various magic settings./^STARTTEST

:new
:$put =['dog(a', 'cat(']
/(/e+
"ayn:bd!
:$put =''
G"ap
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
:new
:$put =['dog(a', 'cat(']
/(/e+
"ayn:bd!
:$put =''
G"ap
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
:" Test \%u, [\u] and friends
:" c
/\%u20ac

:" d
/[\u4f7f\u5929]\+

:" e
/\%U12345678

:" f
/[\U1234abcd\u1234\uabcd]

:" g
/\%d21879b

:" j Test backwards search from a multi-byte char
/x

:"
:" l Test what 7.3.192 fixed
/^l

2 d dd dee deeff
3 g gg ghh ghhii
4 j jj jkk jkkll
5 m mm mnn mnnoo
[No Name]                                                                       e y f z
g abb
test.out [+]                                                                    :$put =['dog(a', 'cat(']
dog(a
cat([+]/(/e+
/(/e+1
search hit BOTTOM, continuing at TOP:bd!
1 a aa abb abbcc
2 d dd dee deeff
3 g gg ghh ghhii
4 j jj jkk jkkll
5 m mm mnn mnnoo
6 x aa$ x
7 (a)(b) abba
8 axx ab]xx
e y
a
cat(

:w!
"test.out" 25L, 271C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test44 = test61; then \
#	  if diff test.out test44.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test44.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test44.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test45.failed test.ok test.out X* viminfo
cp test45.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test45.in
[?1h="test45.in" 90 lines, 1953 charactersTests for folding. vim: set ft=vim :

STARTTEST
:so small.vim
:" We also need the +syntax feature here.
:if !has("syntax")
   e! test.ok
   w! test.out
   qa!
:endif
:" basic test if a fold can be created, opened, moving to the end and closed
/^1
zf2j:call append("$", "manual " . getline(foldclosed(".")))
zo:call append("$", foldclosed("."))
]z:call append("$", getline("."))
zc:call append("$", getline(foldclosed(".")))
:" test folding with markers.
:set fdm=marker fdl=1 fdc=3
/^5
:call append("$", "marker " . foldlevel("."))
[z:call append("$", foldlevel("."))
jo{{ ^[r{jj:call append("$", foldlevel("."))
kYpj:call append("$", foldlevel(".")):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for folding. vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 73 lines, 1820 characters written:set ff& cpo+=A
/ENDTEST:new
iTest fdm=indent and :move bug END
line2Test fdm=indent STARTline3line4^[
:set fdm=indent
:1m1
2jzc:m0
:%w >> test.out
:qa!
ENDTEST

1 aa
2 bb
3 cc
4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg
8 hh
9 ii
a jj
:so! Xdotest
:so small.vim
:" We also need the +syntax feature here.
:if !has("syntax")

:     e! test.ok

:     w! test.out

:     qa!

:  :endif
:new
iTest fdm=indent and :move bug END
line2Test fdm=indent START:" basic test if a fold can be created, opened, moving to the end and closed
/^1
+--  3 lines: 1 aa--------------------------------------------------------------4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg8 hh9 ii
a jj
b kk
last:call append("$", "manual " . getline(foldclosed(".")))
1 aa2 bb3 cc4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg
8 hh
9 ii
a jj:call append("$", foldclosed("."))


:call append("$", getline("."))
+--  3 lines: 1 aa--------------------------------------------------------------4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg8 hh9 ii
a jj
b kk
last:call append("$", getline(foldclosed(".")))
:" test folding with markers.
:set fdm=marker fdl=1 fdc=3
   :new
   iTest fdm=indent and :move bug END
   line2
           Test fdm=indent START
           line3
           line4^[
   :set fdm=indent
   :1m1
   2jzc:m0
   :%w >> test.out
   :qa!
   ENDTEST
   
   1 aa   2 bb   3 cc-  4 dd {{{
|- 5 ee {{{ }}}
|  6 ff }}}
   7 gg
   8 hh
   9 ii
   a jj/^5
:call append("$", "marker " . foldlevel("."))
:call append("$", foldlevel("."))
{{ |  6 ff }}}-{|
|
|
|


:call append("$", foldlevel("."))
6 ff }}}
 7 gg
 8 hh:call append("$", foldlevel("."))
:" test folding with indent
:set fdm=indent sw=2
-+ +---  3 lines: Test fdm=indent START-----------------------------------------:set fdm=indent:1m12jzc:m0%w >> test.out:qa!ENDTEST1 aa2 bb3 cc4 dd {{{5 ee {{{ }}}
 {{{  6 ff }}}  6 ff }}}
  7 gg 8 hh9 iia jj/^2 b
search hit BOTTOM, continuing at TOP
-  2 bb
|-    3 cc:call append("$", "indent " . foldlevel("."))
:call append("$", foldlevel("."))
:" test syntax folding
:set fdm=syntax fdl=0
          Test fdm=indent START        line3        line4^[:set fdm=indent1m12jzc:m0:%w >> test.out:qa!ENDTEST
   1 aa  2 bb    3 cc4 dd {{{5 ee {{{ }}}{{{6 ff }}}6 ff }}}7 gg8 hh:syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3
+  +--  8 lines: 4 dd ----------------------------------------------------------a jjb kklastmanual 1 aa-13 cc:syn region Fd1 start="ee" end="ff" fold contained
:syn region Fd2 start="gg" end="hh" fold contained
:syn region Fd3 start="commentstart" end="commentend" fold contained







   1 aa
   marker 2
   1
   1
   0
   indent 2
   1:call append("$", "folding " . getline("."))
:call append("$", getline("."))

--4 dd {{{commentstart  ||5 ee {{{ }}}
||{{{||6 ff }}}
||6 ff }}}||7 gg
||8 hh
||9 ii
||a jj||b kk
||last
||manual 1 aa
||-1||3 cc commentend- 
|-

| 
  
  
  
  
  
  :set fdl=1
+ +---  3 lines: 5 ee --------------------------------------------------------- 6 ff }}}+ +---  2 lines: 7 gg----------------------------------------------------------9 ii  a jj
  b kk
 lastmanual 1 aa-13 cc1 aamarker 21:call append("$", getline("."))
:set fdl=0
+  +--  8 lines: 4 dd commentstart  commentend----------------------------------  a jj b kk  last manual 1 aa-13 cc1 aarker 2110indent
-4 dd {{{commentstart  commentend|-5 ee {{{ }}}
||{{{||6 ff }}}
|6 ff }}}|-7 gg
||8 hh
|9 iia jjb kklastmanual 1 aa-13 cc   :1m1
   2jzc:m0
   :%w >> test.out
   :qa!
   ENDTEST
   
   1 aa
     2 bb
       3 cc
-  4 dd {{{commentstart  commentend
|- 5 ee {{{ }}}
|| {{{
|| 6 ff }}}
|  6 ff }}}
|- 7 gg
|| 8 hh
|  9 ii
   a jj
   b kk
   last
   manual 1 aa
   -1
   3 cc:call append("$", getline("."))
:" test expression folding
:fun Flvl()

:    let l = getline(v:lnum)

:    if l =~ "bb$"

:        return 2

:      elseif l =~ "gg$"

:        return "s1"

:      elseif l =~ "ii$"

:        return ">2"

:      elseif l =~ "kk$"

:        return "0"

:      endif

:    return "="

:  endfun
   :1m1
   2jzc:m0
   :%w >> test.out
   :qa!
   ENDTEST
   
   1 aa
     2 bb
       3 cc
-  4 dd {{{commentstart  commentend
|- 5 ee {{{ }}}
|| {{{:set fdm=expr fde=Flvl()
+  +-- 11 lines: 2 bb-----------------------------------------------------------b kk last  manual 1 aa  -1  3 cc 1 aa  marker 2
  1 10indent 21+  +--  4 lines: folding 9 ii---------------------------------------------------~~/bb$
search hit BOTTOM, continuing at TOP--  2 bb||    3 cc
||4 dd {{{commentstart  commentend
||5 ee {{{ }}}
||{{{
||6 ff }}}
||6 ff }}}
||7 gg|8 hh
|+ +---  2 lines: 9 ii----------------------------------------------------------b kklastmanual 1 aa
 -13 cc1 aa:call append("$", "expr " . foldlevel("."))
/hh$
:call append("$", foldlevel("."))
/ii$
-9 ii||a jjb kklastmanual 1 aa-13 cc:call append("$", foldlevel("."))
/kk$
:call append("$", foldlevel("."))
:/^last/+1,$w! test.out
"test.out" [New File] 18 lines, 96 characters written:delfun Flvl
:new
  
  
  
  ~~~~~~~~~~
[No Name]                                                                       5 ee {{{ }}}{{{6 ff }}}|6 ff }}}|7 gg 8 hh
|-9 ii
||a jjb kklast
test45.in [+]                                                                   Test fdm=indent and :move bug ENDline2 Test fdm=indent START line3 line4[+]:set fdm=indent
+  +--  3 lines: Test fdm=indent START------------------------------------------~~:1m1
:m0
3 lines moved+  +--  3 lines: Test fdm=indent START------------------------------------------Test fdm=indent and :move bug END
 line2:%w >> test.out
"test.out" 5 lines, 77 characters appendedtest.out [+] :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test45 = test61; then \
#	  if diff test.out test45.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test45.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test45.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test48.failed test.ok test.out X* viminfo
cp test48.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test48.in
[?1h="test48.in" 83 lines, 1658 charactersThis is a test of 'virtualedit'.

STARTTEST
:so small.vim
:set noswf
:set ve=all
-dgg
:"
:"   Insert "keyword keyw", ESC, C CTRL-N, shows "keyword ykeyword".
:"    Repeating CTRL-N fixes it. (Mary Ellen Foster)
2/w
C^N^[
:"
:"   Using "C" then then <CR> moves the last remaining character to the next
:"    line.  (Mary Ellen Foster)
j^/are
C^Mare belong to vim^[
:"
:"   When past the end of a line that ends in a single character "b" skips
:"    that word.
^$15lbC7^[
:"
:"   Make sure 'i' works:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
This is a test of 'virtualedit'./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 61 lines, 1442 characters written:set ff& cpo+=A
/ENDTEST:set display=
:"
:"   Test for ^Y/^E due to bad w_virtcol value, reported by
:"   Roy <royl@netropolis.net>.
^O^[3li^E^[4li^E^[4li^E   <-- should show the name of a noted text editor^[
^o^[4li^Y^[4li^Y^[4li^Y   <-- and its version number^[-dd
:"
:" Test for yanking and pasting using the small delete register
gg/^foo
dewve"-p
:wq! test.out
ENDTEST
foo, bar
keyword keyw
all your base are belong to us
1 2 3 4 5 6
'i'
'C'
'a'
'A'
'D'
this is a test
this is a test
:so! Xdotest
:so small.vim
:set noswf
:set ve=all
65 fewer lines











this is a test
"r"
"r"
a^Vb^Msd
abcv6efi.him0kl


~
~
~
~
~65 fewer lines
:"
:"   Insert "keyword keyw", ESC, C CTRL-N, shows "keyword ykeyword".
:"    Repeating CTRL-N fixes it. (Mary Ellen Foster)
/w
$Scanning tags.
The only matchword:"
:"   Using "C" then then <CR> moves the last remaining character to the next
:"    line.  (Mary Ellen Foster)

/are
search hit BOTTOM, continuing at TOP$are belong to vim
1 2 3 4 5 6
'i
'C
'a
'A
'D'this is a test

"r"     
a^Vb^Msdabcv6efi.him0kl:"
:"   When past the end of a line that ends in a single character "b" skips
:"    that word.

$7:"
:"   Make sure 'i' works

'i'   <-- should be 3 ' ':"
:"   Make sure 'C' works

'C'   $<-- should be 3 ' ':"
:"   Make sure 'a' works

'a'    <-- should be 4 ' ':"
:"   Make sure 'A' works

'A'   <-- should be 0 ' ':"
:"   Make sure 'D' works

'D'   <-- 'D' should be intact:"
:"   Test for yank bug reported by Mark Waggoner.
:set ve=block

aaaaaablock of 4 lines yanked3 more linesa
a
a
 
:"
:" Test "r" beyond the end of the line
:set ve=all
/^"r"
search hit BOTTOM, continuing at TOP"r"    xx<-- should be 'x':"
:" Test "r" on a tab
:" Note that for this test, 'ts' must be 8 (the default).

"r"  xx  <-- should be '  x  ':"
:"   Test to make sure 'x' can delete control characters
:set display=uhex
<16>b<0d>sd
<16>b<0d>sdb<0d>sd<0d>sdsdd[This line should contain only the text between the brackets.]:set display=
:"
:"   Test for ^Y/^E due to bad w_virtcol value, reported by
:"   Roy <royl@netropolis.net>.

   vv   ii   m   <-- should show the name of a noted text editor
    66   ..   0   <-- and its version number

    :"
:" Test for yanking and pasting using the small delete register
/^foo
search hit BOTTOM, continuing at TOP, bar, bafoo
keyw:wq! test.out
"test.out" [New File] 23 lines, 479 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test48 = test61; then \
#	  if diff test.out test48.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test48.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test48.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test51.failed test.ok test.out X* viminfo
cp test51.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test51.in
[?1h="test51.in" 36 lines, 808 charactersTests for ":highlight". vim: set ft=vim :

STARTTEST
:so small.vim
:" basic test if ":highlight" doesn't crash
:highlight
:hi Search
:" test setting colors.
:" test clearing one color and all doesn't generate error or warning
:hi NewGroup term=bold cterm=italic ctermfg=DarkBlue ctermbg=Grey gui= guifg=#000ff00 guibg=Cyan
:hi Group2 term= cterm=
:hi Group3 term=underline cterm=bold
:redir! >test.out
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group2 NONE
:hi Group2
:hi clear:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for ":highlight". vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 31 lines, 746 characters written:set ff& cpo+=A
/ENDTEST












:hi Group3
:hi Crash term='asdf
:redir END
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
:%s/ctermfg=\d*/ctermfg=2/
:%s/ctermbg=\d*/ctermbg=3/
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
:" fix the fileformat
:set ff&
:wq!
ENDTEST

:so! Xdotest
:so small.vim
:" basic test if ":highlight" doesn't crash
:highlight

SpecialKey     xxx term=bold ctermfg=1 guifg=Blue

EndOfBuffer    xxx links to NonText

NonTextxxx term=bold ctermfg=9 gui=bold guifg=Blue

Directory      xxx term=bold ctermfg=1 guifg=Blue

ErrorMsgxxx term=standout ctermfg=15 ctermbg=4 guifg=White guibg=Red

IncSearch      xxx term=reverse cterm=reverse gui=reverse

Searchxxx term=reverse ctermfg=0 ctermbg=14 guibg=Yellow

MoreMsgxxx term=bold ctermfg=2 gui=bold guifg=SeaGreen

ModeMsgxxx term=bold cterm=bold gui=bold

LineNrxxx term=underline ctermfg=6 guifg=Brown

CursorLineNr   xxx term=bold ctermfg=6 gui=bold guifg=Brown

Questionxxx term=standout ctermfg=2 gui=bold guifg=SeaGreen

StatusLine     xxx term=bold,reverse cterm=bold,reverse gui=bold,reverse

StatusLineNC   xxx term=reverse cterm=reverse gui=reverse

VertSplit      xxx term=reverse cterm=reverse gui=reverse

Titlexxx term=bold ctermfg=5 gui=bold guifg=Magenta

Visualxxx term=reverse cterm=reverse guibg=LightGrey

VisualNOS      xxx cleared

WarningMsg     xxx term=standout ctermfg=4 guifg=Red

WildMenuxxx term=standout ctermfg=0 ctermbg=14 guifg=Black guibg=Yellow

Foldedxxx term=standout ctermfg=1 ctermbg=7 guifg=DarkBlue

guibg=LightGrey

FoldColumn     xxx term=standout ctermfg=1 ctermbg=7 guifg=DarkBlue guibg=Grey

DiffAddxxx term=bold ctermbg=9 guibg=LightBlue

DiffChange     xxx term=bold ctermbg=13 guibg=LightMagenta

DiffDelete     xxx term=bold ctermfg=9 ctermbg=11 gui=bold guifg=Blue

guibg=LightCyan

DiffTextxxx term=reverse cterm=bold ctermbg=12 gui=bold guibg=Red

SignColumn     xxx term=standout ctermfg=1 ctermbg=7 guifg=DarkBlue guibg=Grey

Concealxxx ctermfg=7 ctermbg=8 guifg=LightGrey guibg=DarkGrey

SpellBadxxx term=reverse ctermbg=12 gui=undercurl guisp=Red

SpellCapxxx term=reverse ctermbg=9 gui=undercurl guisp=Blue

SpellRare      xxx term=reverse ctermbg=13 gui=undercurl guisp=Magenta

SpellLocal     xxx term=underline ctermbg=11 gui=undercurl guisp=DarkCyan

Pmenuxxx ctermfg=0 ctermbg=13 guibg=LightMagenta

PmenuSelxxx ctermfg=0 ctermbg=7 guibg=Grey

PmenuSbar      xxx ctermbg=7 guibg=Grey

PmenuThumb     xxx ctermbg=0 guibg=Black

TabLinexxx term=underline cterm=underline ctermfg=0 ctermbg=7

gui=underline guibg=LightGrey

TabLineSel     xxx term=bold cterm=bold gui=bold

TabLineFill    xxx term=reverse cterm=reverse gui=reverse

CursorColumn   xxx term=reverse ctermbg=7 guibg=Grey90

CursorLine     xxx term=underline cterm=underline guibg=Grey90

ColorColumn    xxx term=reverse ctermbg=12 guibg=LightRed

MatchParen     xxx term=reverse ctermbg=11 guibg=Cyan

Press ENTER or type command to continue:hi Search

Searchxxx term=reverse ctermfg=0 ctermbg=14 guibg=Yellow

Press ENTER or type command to continue:" test setting colors.
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group2 NONE
:hi Group2
:hi clear
:hi Group3
:hi Crash term='asdf
:redir END
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
:%s/ctermfg=\d*/ctermfg=2/
:%s/ctermbg=\d*/ctermbg=3/
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
:" fix the fileformat
:set ff&
:wq!
ENDTEST

:" test clearing one color and all doesn't generate error or warning
:hi NewGroup term=bold cterm=italic ctermfg=DarkBlue ctermbg=Grey gui= guifg=#0

0ff00 guibg=Cyan
E418: Illegal value: guifg=#00ff00Press ENTER or type command to continue:hi Group2 term= cterm=
E418: Illegal value: cterm=

Press ENTER or type command to continue:hi Group3 term=underline cterm=bold
:hi NewGroup
:hi Group2
:redir! >test.out
:hi NewGroup

NewGroupxxx term=bold cterm=italic ctermfg=1 ctermbg=7

Press ENTER or type command to continue:hi Group2

Group2xxx cleared

Press ENTER or type command to continue:hi Group3

Group3xxx term=underline cterm=bold

Press ENTER or type command to continue:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi NewGroup

NewGroupxxx cleared

Press ENTER or type command to continue:hi Group2

Group2xxx cleared

Press ENTER or type command to continue:hi Group2 NONE
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi Group2

Group2xxx cleared

Press ENTER or type command to continue:hi clear
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group2 NONE
:hi Group2
:hi clear
:hi Group3
:hi Crash term='asdf
:redir END
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
:%s/ctermfg=\d*/ctermfg=2/
:%s/ctermbg=\d*/ctermbg=3/
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
:" fix the fileformat
:set ff&
:wq!
ENDTEST

:hi Group3

Group3xxx cleared

Press ENTER or type command to continue:hi Crash term='asdf
E475: Invalid argument: term='asdf

Press ENTER or type command to continue:redir END
:hi NewGroup
:hi Group2
:hi Group3
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
"test.out" 20 lines, 289 charactersNewGroup       xxx term=bold cterm=italic ctermfg=1 ctermbg=7Group2         xxx clearedGroup3         xxx term=underline cterm=boldNewGroup       xxx clearedGroup2         xxx clearedGroup2         xxx clearedGroup3         xxx clearedE475: Invalid argument: term='asdf~~
~:%s/ctermfg=\d*/ctermfg=2/
2
:%s/ctermbg=\d*/ctermbg=3/
3
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
term='asdf:" fix the fileformat
:set ff&
:wq!
"test.out" 20 lines, 271 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test51 = test61; then \
#	  if diff test.out test51.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test51.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test51.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test53.failed test.ok test.out X* viminfo
cp test53.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test53.in
[?1h="test53.in" 75 lines, 1763 charactersTests for string and html text objects. vim: set ft=vim :

Note that the end-of-line moves the cursor to the next test line.

Also test match() and matchstr()

STARTTEST
:so small.vim
/^start:/
da"
0va'a'rx
02f`da`
0fXdi"
03f'vi'ry
:set quoteescape=+*-
di`
$F"va"oha"i"rz
:"
/^<begin
jfXdit
0fXdit
fXdat
0fXdat:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for string and html text objects. vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 47 lines, 1237 characters written:set ff& cpo+=A
/ENDTEST:put =match('abc', '$', 4, 1) " -1
:put =match('abc', '\zs', 0, 1) " 0
:put =match('abc', '\zs', 0, 2) " 1
:put =match('abc', '\zs', 0, 3) " 2
:put =match('abc', '\zs', 0, 4) " 3
:put =match('abc', '\zs', 0, 5) " -1
:put =match('abc', '\zs', 1, 1) " 1
:put =match('abc', '\zs', 2, 1) " 2
:put =match('abc', '\zs', 3, 1) " 3
:put =match('abc', '\zs', 4, 1) " -1
:/^start:/,/^end:/wq! test.out
ENDTEST

start: "wo\"rd\\" foo
'foo' 'bar' 'piep'
bla bla `quote` blah
out " in "noXno"
"'" 'blah' rep 'buh'
bla `s*`d-`+++`l**` b`la
voo "nah" sdf " asdf" sdf " sdf" sd

<begin>
-<b>asdf<i>Xasdf</i>asdf</b>-
:so! Xdotest
:so small.vim
/^start:/
fo
'foo' 'bar'
xxxxxxxxxxxx

blah
"
' repyyyyy:set quoteescape=+*-
` b`la" sdf"" " asdf" sdf ah" sdf "
voo "zzzzzzzzzzzzzzzzzzzzzzzzzzzz
voo "
:"
/^<begin

</i>asdf</b>-
-<b>asdX<i>a<i />sdf</i>asdf</b>-
</b>-
-<b>asdf<i>Xasdf</i>asdf</b>-
-<b>asdf</b>-
-<b>asdX<i>as<b />df</i>asdf</b>-

--
-<b>
-<b></b>
</begin>
:"
:put =matchstr(\"abcd\", \".\", 0, 2) " b

b
:put =matchstr(\"abcd\", \"..\", 0, 2) " bc

bc
:put =matchstr(\"abcd\", \".\", 2, 0) " c (zero and negative -> first match)

c
:put =matchstr(\"abcd\", \".\", 0, -1) " a

a
:put =match(\"abcd\", \".\", 0, 5) " -1

-1
:put =match(\"abcd\", \".\", 0, -1) " 0

0
:put =match('abc', '.', 0, 1) " 0

0
:put =match('abc', '.', 0, 2) " 1

1
:put =match('abc', '.', 0, 3) " 2

2
:put =match('abc', '.', 0, 4) " -1

-1
:put =match('abc', '.', 1, 1) " 1

1
:put =match('abc', '.', 2, 1) " 2

2
:put =match('abc', '.', 3, 1) " -1

-1
:put =match('abc', '$', 0, 1) " 3

3
:put =match('abc', '$', 0, 2) " -1

-1
:put =match('abc', '$', 1, 1) " 3

3
:put =match('abc', '$', 2, 1) " 3

3
:put =match('abc', '$', 3, 1) " 3

3
:put =match('abc', '$', 4, 1) " -1

-1
:put =match('abc', '\zs', 0, 1) " 0

0
:put =match('abc', '\zs', 0, 2) " 1

1
:put =match('abc', '\zs', 0, 3) " 2

2
:put =match('abc', '\zs', 0, 4) " 3

3
:put =match('abc', '\zs', 0, 5) " -1

-1
:put =match('abc', '\zs', 1, 1) " 1

1
:put =match('abc', '\zs', 2, 1) " 2

2
:put =match('abc', '\zs', 3, 1) " 3

3
:put =match('abc', '\zs', 4, 1) " -1

-1
:/^start:/,/^end:/wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 45 lines, 284 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test53 = test61; then \
#	  if diff test.out test53.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test53.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test53.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test55.failed test.ok test.out X* viminfo
cp test55.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test55.in
[?1h="test55.in" 586 lines, 12256 charactersTests for List and Dictionary types.     vim: set ft=vim :

STARTTEST
:so small.vim
:fun Test(...)
:lang C
:" Creating List directly with different types
:let l = [1, 'as''d', [1, 2, function("strlen")], {'a': 1},]
:$put =string(l)
:$put =string(l[-1])
:$put =string(l[-4])
:try
:  $put =string(l[-5])
:catch
:  $put =v:exception[:14]
:endtry
:" List slices
:$put =string(l[:])
:$put =string(l[1:])
:$put =string(l[:-2])
:$put =string(l[0:8])
:$put =string(l[8:-1])
:":set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for List and Dictionary types.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 580 lines, 12170 characters written:set ff& cpo+=A
/ENDTEST:$put =string(l)
:endfun
:"
:call Test(1, 2, [3, 4], {5: 6})  " This may take a while
:"
:delfunc Test
: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^R=a^M^[:"
:lang C
:redir => a
:try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
:redir END
o^R=a^M^[:"
:"
:/^start:/,$wq! test.out
ENDTEST

start:


:so! Xdotest
:so small.vim
:fun Test(...)

:  :lang C

:  :" Creating List directly with different types

:  :let l = [1, 'as''d', [1, 2, function("strlen")], {'a': 1},]

:  :$put =string(l)

:  :$put =string(l[-1])

:  :$put =string(l[-4])

:  :try

:    :  $put =string(l[-5])

:    :catch

:    :  $put =v:exception[:14]

:    :endtry

:  :" List slices

:  :$put =string(l[:])

:  :$put =string(l[1:])

:  :$put =string(l[:-2])

:  :$put =string(l[0:8])

:  :$put =string(l[8:-1])

:  :"

:  :" List identity

:  :let ll = l

:  :let lx = copy(l)

:  :try

:    :  $put =(l == ll) . (l isnot ll) . (l is ll) . (l == lx) . (l is lx) . (l

isnot lx)

:    :catch

:    :  $put =v:exception

:    :endtry

:  :"

:  :" Creating Dictionary directly with different types

:  :let d = {001: 'asd', 'b': [1, 2, function('strlen')], -1: {'a': 1},}

:  :$put =string(d) . d.1

:  :$put =string(sort(keys(d)))

:  :$put =string (values(d))

:  :for [key, val] in items(d)

:    :  $put =key . ':' . string(val)

:    :  unlet key val

:    :endfor

:  :call extend  (d, {3:33, 1:99})

:  :call extend(d, {'b':'bbb', 'c':'ccc'}, "keep")

:  :try

:    :  call extend(d, {3:333,4:444}, "error")

:    :catch

:    :  $put =v:exception[:15] . v:exception[-1:-1]

:    :endtry

:  :$put =string(d)

:  :call filter(d, 'v:key =~ ''[ac391]''')

:  :$put =string(d)

:  :"

:  :" Dictionary identity

:  :let dd = d

:  :let dx = copy(d)

:  :try

:    :  $put =(d == dd) . (d isnot dd) . (d is dd) . (d == dx) . (d is dx) . (d

isnot dx)

:    :catch

:    :  $put =v:exception

:    :endtry

:  :"

:  :"

:  :" removing items with :unlet

:  :unlet l[2]

:  :$put =string(l)

:  :let l = range(8)

:  :try

:    :unlet l[:3]

:    :unlet l[1:]

:    :catch

:    :$put =v:exception

:    :endtry

:  :$put =string(l)

:  :"

:  :unlet d.c

:  :unlet d[-1]

:  :$put =string(d)

:  :"

:  :" removing items out of range: silently skip items that don't exist

:  let l = [0, 1, 2, 3]

:  :unlet l[2:1]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[2:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[2:3]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[2:4]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[2:5]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-1:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-2:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-3:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-4:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-5:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-6:2]

:  :$put =string(l)

:  :"

:  :" assignment to a list

:  :let l = [0, 1, 2, 3]

:  :let [va, vb] = l[2:3]

:  :$put =va

:  :$put =vb

:  :try

:    :  let [va, vb] = l

:    :catch

:    :  $put =v:exception[:14]

:    :endtry

:  :try

:    :  let [va, vb] = l[1:1]

:    :catch

:    :  $put =v:exception[:14]

:    :endtry

:  :"

:  :" manipulating a big Dictionary (hashtable.c has a border of 1000 entries)

:  :let d = {}

:  :for i in range(1500)

:    : let d[i] = 3000 - i

:    :endfor

:  :$put =d[0] . ' ' . d[100] . ' ' . d[999] . ' ' . d[1400] . ' ' . d[1499]

:  :try

:    :  let n = d[1500]

:    :catch

:    :  $put =substitute(v:exception, '\v(.{14}).*( \d{4}).*', '\1\2', '')

:    :endtry

:  :" lookup each items

:  :for i in range(1500)

:    : if d[i] != 3000 - i

:      :  $put =d[i]

:      : endif

:    :endfor

:  : let i += 1

:  :" delete even items

:  :while i >= 2

:    : let i -= 2

:    : unlet d[i]

:    :endwhile

:  :$put =get(d, 1500 - 100, 'NONE') . ' ' . d[1]

:  :" delete odd items, checking value, one intentionally wrong

:  :let d[33] = 999

:  :let i = 1

:  :while i < 1500

:    : if d[i] != 3000 - i

:      :  $put =i . '=' . d[i]

:      : else

:      :  unlet d[i]

:      : endif

:    : let i += 2

:    :endwhile

:  :$put =string(d)  " must be almost empty now

:  :unlet d

:  :"

:  :" Dictionary function

:  :let dict = {}

:  :func dict.func(a) dict

:    :  $put =a:a . len(self.data)

:    :endfunc

:    :let dict.data = [1,2,3]

:    :call dict.func("len: ")

:    :let x = dict.func("again: ")

:    :let Fn = dict.func

:    :call Fn('xxx')

:    :" 

:    :" Function in script-local List or Dict

:    :let g:dict = {}

:    :function g:dict.func() dict

:      :  $put ='g:dict.func'.self.foo[1].self.foo[0]('asdf')

:      :endfunc

:      :let g:dict.foo = ['-', 2, 3]

:      :call insert(g:dict.foo, function('strlen'))

:      :call g:dict.func()

:      :" 

:      :" Nasty: remove func from Dict that's being called (works)

:      :let d = {1:1}

:      :func d.func(a)

::  return "a:". a:a

::endfunc

::$put =d.func(string(remove(d, 'func')))

::"

::" Nasty: deepcopy() dict that refers to itself (fails when noref used

)
::let d = {1:1, 2:2}

::let l = [4, d, 6]

::let d[3] = l

::let dc = deepcopy(d)

::try

::  let dc = deepcopy(d, 1)

::catch

::  $put =v:exception[:14]

::endtry

::let l2 = [0, l, l, 3]

::let l[1] = l2

::let l3 = deepcopy(l2)

::$put ='same list: ' . (l3[1] is l3[2])

::"

::" Locked variables

::for depth in range(5)

::  $put ='depth is ' . depth

::  for u in range(3)

::    unlet l

::    let l = [0, [1, [2, 3]], {4: 5, 6: {7: 8}}]

::    exe "lockvar " . depth . " l"

::    if u == 1

::      exe "unlockvar l"

::    elseif u == 2

::      exe "unlockvar " . depth . " l"

::    endif

::    let ps = islocked("l").islocked("l[1]").islocked("l[1][1]").i

slocked("l[1][1][0]").'-'.islocked("l[2]").islocked("l[2]['6']").islocked("l[2][

'6'][7]")

::    $put =ps

::    let ps = ''

::    try

::      let l[1][1][0] = 99

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[1][1] = [99]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[1] = [99]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[2]['6'][7] = 99

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[2][6] = {99: 99}

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[2] = {99: 99}

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l = [99]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    $put =ps

::  endfor

::endfor

::"

::" Unletting locked variables

::$put ='Unletting:'

::for depth in range(5)

::  $put ='depth is ' . depth

::  for u in range(3)

::    unlet l

::    let l = [0, [1, [2, 3]], {4: 5, 6: {7: 8}}]

::    exe "lockvar " . depth . " l"

::    if u == 1

::      exe "unlockvar l"

::    elseif u == 2

::      exe "unlockvar " . depth . " l"

::    endif

::    let ps = islocked("l").islocked("l[1]").islocked("l[1][1]").i

slocked("l[1][1][0]").'-'.islocked("l[2]").islocked("l[2]['6']").islocked("l[2][

'6'][7]")

::    $put =ps

::    let ps = ''

::    try

::      unlet l[2]['6'][7]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[2][6]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[2]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[1][1][0]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[1][1]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[1]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    $put =ps

::  endfor

::endfor

::"

::" Locked variables and :unlet or list / dict functions

::$put ='Locks and commands or functions:'

::"

::$put ='No :unlet after lock on dict:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar 1 d

::try

::  unlet d.a

::  $put ='did :unlet'

::catch

::  $put =v:exception[:16]

::endtry

::$put =string(d)

::"

::$put =':unlet after lock on dict item:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar d.a

::try

::  unlet d.a

::  $put ='did :unlet'

::catch

::  $put =v:exception[:16]

::endtry

::$put =string(d)

::"

::$put ='filter() after lock on dict item:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar d.a

::try

::  call filter(d, 'v:key != "a"')

::  $put ='did filter()'

::catch

::  $put =v:exception[:16]

::endtry

::$put =string(d)

::"

::$put ='map() after lock on dict:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar 1 d

::try

::  call map(d, 'v:val + 200')

::  $put ='did map()'

::catch

::  $put =v:exception[:16]

::endtry

::$put =string(d)

::"

::$put ='No extend() after lock on dict item:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar d.a

::try

::  $put =string(extend(d, {'a': 123}))

::  $put ='did extend()'

::catch

::  $put =v:exception[:14]

::endtry

::$put =string(d)

::"

::$put ='No remove() of write-protected scope-level variable:'

::fun! Tfunc(this_is_a_loooooooooong_parameter_name)

::  try

::    $put =string(remove(a:, 'this_is_a_loooooooooong_parameter_na

me'))

::    $put ='did remove()'

::  catch

::    $put =v:exception[:14]

::  endtry

::endfun

::call Tfunc('testval')

::"

::$put ='No extend() of write-protected scope-level variable:'

::fun! Tfunc(this_is_a_loooooooooong_parameter_name)

::  try

::    $put =string(extend(a:, {'this_is_a_loooooooooong_parameter

_name': 1234}))

::    $put ='did extend()'

::  catch

::    $put =v:exception[:14]

::  endtry

::endfun

::call Tfunc('testval')

::"

::$put ='No :unlet of variable in locked scope:'

::let b:testvar = 123

::lockvar 1 b:

::try

::  unlet b:testvar

::  $put ='b:testvar was :unlet: '. (!exists('b:testvar'))

::catch

::  $put =v:exception[:16]

::endtry

::unlockvar 1 b:

::unlet! b:testvar

::"

::$put ='No :let += of locked list variable:'

::let l = ['a', 'b', 3]

::lockvar 1 l

::try

::  let l += ['x']

::  $put ='did :let +='

::catch

::  $put =v:exception[:14]

::endtry

::$put =string(l)

::"

::unlet l

::let l = [1, 2, 3, 4]

::lockvar! l

::$put =string(l)

::unlockvar l[1]

::unlet l[0:1]

::$put =string(l)

::unlet l[1:2]

::$put =string(l)

::unlockvar l[1]

::let l[0:1] = [0, 1]

::$put =string(l)

::let l[1:2] = [0, 1]

::$put =string(l)

::unlet l

::" :lockvar/islocked() triggering script autoloading

::set rtp+=./sautest

::lockvar g:footest#x

::unlockvar g:footest#x

::$put ='locked g:footest#x:'.islocked('g:footest#x')

::$put ='exists g:footest#x:'.exists('g:footest#x')

::$put ='g:footest#x: '.g:footest#x

::"

::" a:000 function argument

::" first the tests that should fail

::try

::  let a:000 = [1, 2]

::catch

::  $put ='caught a:000'

::endtry

::try

::  let a:000[0] = 9

::catch

::  $put ='caught a:000[0]'

::endtry

::try

::  let a:000[2] = [9, 10]

::catch

::  $put ='caught a:000[2]'

::endtry

::try

::  let a:000[3] = {9: 10}

::catch

::  $put ='caught a:000[3]'

::endtry

::" now the tests that should pass

::try

::  let a:000[2][1] = 9

::  call extend(a:000[2], [5, 6])

::  let a:000[3][5] = 8

::  let a:000[3]['a'] = 12

::  $put =string(a:000)

::catch

::  $put ='caught ' . v:exception

::endtry

::"

::" reverse(), sort(), uniq()

::let l = ['-0', 'A11', 2, 2, 'xaaa', 4, 'foo', 'foo6', 'foo', [0, 

1, 2], 'x8', [0, 1, 2], 1.5]

::$put =string(uniq(copy(l)))

::$put =string(reverse(l))

::$put =string(reverse(reverse(l)))

::$put =string(sort(l))

::$put =string(reverse(sort(l)))

::$put =string(sort(reverse(sort(l))))

::$put =string(uniq(sort(l)))

::let l=[7, 9, 'one', 18, 12, 22, 'two', 10.0e-16, -1, 'three', 0xf

f, 0.22, 'four']

::$put =string(sort(copy(l), 'n'))

::let l=[7, 9, 18, 12, 22, 10.0e-16, -1, 0xff, 0, -0, 0.22, 'bar', 

'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', {}, []]

::$put =string(sort(copy(l), 1))

::$put =string(sort(copy(l), 'i'))

::$put =string(sort(copy(l)))

::"

::" splitting a string to a List

::$put =string(split('  aa  bb '))

::$put =string(split('  aa  bb  ', '\W\+', 0))

::$put =string(split('  aa  bb  ', '\W\+', 1))

::$put =string(split('  aa  bb  ', '\W', 1))

::$put =string(split(':aa::bb:', ':', 0))

::$put =string(split(':aa::bb:', ':', 1))

::$put =string(split('aa,,bb, cc,', ',\s*', 1))

::$put =string(split('abc', '\zs'))

::$put =string(split('abc', '\zs', 1))

::"

::" compare recursively linked list and dict

::let l = [1, 2, 3, 4]

::let d = {'1': 1, '2': l, '3': 3}

::let l[1] = d

::$put =(l == l)

::$put =(d == d)

::$put =(l != deepcopy(l))

::$put =(d != deepcopy(d))

::"

::" compare complex recursively linked list and dict

::let l = []

::call add(l, l)

::let dict4 = {"l": l}

::call add(dict4.l, dict4)

::let lcopy = deepcopy(l)

::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)

::"

::" test for range assign

::let l = [0]

::let l[:] = [1, 2]

::$put =string(l)

::endfun
:$put =string(l)
:endfun
:"
:call Test(1, 2, [3, 4], {5: 6})  " This may take a while
:"
:delfunc Test
: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^R=a^M^[:"
:lang C
:redir => a
:try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
:redir END
o^R=a^M^[:"
:"
:/^start:/,$wq! test.out
ENDTEST

start:

:"
:call Test(1, 2, [3, 4], {5: 6})  " This may take a while
Error detected while processing function Test:
line   76:

E684: list index out of range: 1

line   91:

E684: list index out of range: 2

line  271:

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

line  441:

E741: Value is locked: l[0:1]

line  443:

E741: Value is locked: l[1:2]

line  446:

E741: Value is locked: l[0:1] = [0, 1]

line  448:

E741: Value is locked: l[1:2] = [0, 1]

Press ENTER or type command to continue:"
['BAR', 'Bar', 'FOO', 'FOOBAR', 'Foo', 'bar', 'foo', -1, 0, 0, 0.22, 1.0e-15, 122, 18, 22, 255, 7, 9, [], {}]
['aa', 'bb']
['aa', 'bb']
['', 'aa', 'bb', '']
['', '', 'aa', '', 'bb', '', '']
['aa', '', 'bb']
['', 'aa', '', 'bb', '']
['aa', '', 'bb', 'cc', '']
['a', 'b', 'c']
['', 'a', '', 'b', '', 'c', '']
1
1
0
0
1
1
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
{'a': {'b': 'B'}}
Vim(call):E737: a
{'a': {'b': 'B'}}
[1, 2]
~

:delfunc Test
: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
=a
Vim(foldopen):E490::"
:lang C
:redir => a
:try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
Error detected while processing :
E492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*'

)|endtry

Press ENTER or type command to continue:redir END
['BAR', 'Bar', 'FOO', 'FOOBAR', 'Foo', 'bar', 'foo', -1, 0, 0, 0.22, 1.0e-15, 122, 18, 22, 255, 7, 9, [], {}]
['aa', 'bb']
=a





Error detected while processing :
E492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*'))|endtry

:"
:"
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 197 lines, 3821 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test55 = test61; then \
#	  if diff test.out test55.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test55.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test55.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test56.failed test.ok test.out X* viminfo
cp test56.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test56.in
[?1h="test56.in" 21 lines, 457 charactersTest for script-local function.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:set nocp viminfo+=nviminfo
:/^start:/+1,/^end:/-1w! Xtest.vim
:source Xtest.vim
_x
:$-1,$wq! test.out
ENDTEST

start:
fun <SID>DoLast()
  call append(line('$'), "last line")
endfun
fun s:DoNothing()
  call append(line('$'), "nothing line")
endfun
nnoremap <buffer> _x    :call <SID>DoNothing()<bar>call <SID>DoLast()<bar>delfunnc <SID>DoNothing<bar>delfunc <SID>DoLast<cr>
end:
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for script-local function.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 7 lines, 120 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:"
:set nocp viminfo+=nviminfo
:/^start:/+1,/^end:/-1w! Xtest.vim
"Xtest.vim" [New] 7L, 251C written:source Xtest.vim
:call <SNR>4_DoNothing()|call <SNR>4_DoLast()|delfunc <SNR>4_DoNothing|delfunc 

<SNR>4_DoLast
Press ENTER or type command to continueTest for script-local function.     vim: set ft=vim :nothing line:$-1,$wq! test.out
"test.out" [New] 2L, 23C written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test56 = test61; then \
#	  if diff test.out test56.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test56.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test56.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test57.failed test.ok test.out X* viminfo
cp test57.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test57.in
[?1h="test57.in" 545 lines, 4110 charactersTests for :sort command.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:/^t01:/+1,/^t02/-1sort
:/^t02:/+1,/^t03/-1sort n
:/^t03:/+1,/^t04/-1sort x
:/^t04:/+1,/^t05/-1sort u
:/^t05:/+1,/^t06/-1sort!
:/^t06:/+1,/^t07/-1sort! n
:/^t07:/+1,/^t08/-1sort! u
:/^t08:/+1,/^t09/-1sort o
:/^t09:/+1,/^t10/-1sort! x
:/^t10:/+1,/^t11/-1sort/./
:/^t11:/+1,/^t12/-1sort/../
:/^t12:/+1,/^t13/-1sort/../u
:/^t13:/+1,/^t14/-1sort/./n
:/^t14:/+1,/^t15/-1sort/./r
:/^t15:/+1,/^t16/-1sort/../r
:/^t16:/+1,/^t17/-1sort/./rn
:/^t17:/+1,/^t18/-1sort/\d/
:/^t18:/+1,/^t19/-1sort/\d/r:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :sort command.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 33 lines, 920 characters written:set ff& cpo+=A
/ENDTEST:/^t21:/+1,/^t22/-1sort/\d\d/
:/^t22:/+1,/^t23/-1sort/\d\d/n
:/^t23:/+1,/^t24/-1sort/\d\d/x
:/^t24:/+1,/^t25/-1sort/\d\d/r
:/^t25:/+1,/^t26/-1sort/\d\d/rn
:/^t26:/+1,/^t27/-1sort/\d\d/rx
:/^t27:/+1,/^t28/-1sort no
:/^t28:/+1,/^t29/-1sort b
:/^t29:/+1,/^t30/-1sort b
:/^t30:/+1,/^t31/-1sort f
:/^t01:/,$wq! test.out
ENDTEST

t01: alphebetical
abc
ab
a
a321
a123
a122
b321
b123
c123d
:so! Xdotest
:so small.vim
:"
:/^t01:/+1,/^t02/-1sort
 123b2
a123
a
ababc:/^t02:/+1,/^t03/-1sort n









b123
b321
b321
b321b
b322b
c123d
c321d
t02: numeric
abc
:/^t03:/+1,/^t04/-1sort x
a123
b123
c123d
 123b
a321
b321
c321d
b321
b321b
b322b
t03: hexadecimal


a
ab
abc
 123b
a122
a123
a321
b123
b321
b321:/^t04:/+1,/^t05/-1sort u






b321b
b322b
c123d
c321d
t04: alpha, unique
:/^t05:/+1,/^t06/-1sort!
a123
a321
ab
abc
b123
b321
b321b
b322b
c123d
c321d
t05: alpha, reverse
c321d
c123d
b322b
b321b
b321
b321
b123
abc
ab
a321
a123
a122:/^t06:/+1,/^t07/-1sort! n        






a
 123b


t06: numeric, reverse
b322b
:/^t07:/+1,/^t08/-1sort! u
123b
c123d
b123
a123
a122


a
ab
abc
t07: unique, reverse
c321d
c123d
b322b
b321b
b321
b123
abc
ab
a321
a123
a122
a:/^t08:/+1,/^t09/-1sort o         




123b

t08: octal
abc
:/^t09:/+1,/^t10/-1sort! x        
a123
b123
c123d
 123b
a321
b321
c321d
b321
b321b
b322b
t09: reverse, hexadecimal
c321d
c123d
b322b
b321b
b321
b321
b123
a321
a123
a122
 123b
abc:/^t10:/+1,/^t11/-1sort/./        






ab
a


t10: alpha, skip first character
a
:/^t11:/+1,/^t12/-1sort/../       
123b
c123d
a321
b321
b321
b321b
c321d
b322b
ab
abc
t11: alpha, skip first 2 characters
ab
a


a321
b321
b321
b321b
c321d
a122
b322b
a123:/^t12:/+1,/^t13/-1sort/../u






b123
 123b
c123d
abc
t12: alpha, unique, skip first 2 characters
ab
:/^t13:/+1,/^t14/-1sort/./n
b321
b321b
c321d
a122
b322b
a123
b123
 123b
c123d
abc
t13: numeric, skip first character
abc
ab
a


a122
a123
b123
c123d
 123b
a321
b321:/^t14:/+1,/^t15/-1sort/./r






c321d
b321
b321b
b322b
t14: alpha, sort on first character
:/^t15:/+1,/^t16/-1sort/../r
a321
a123
a122
b321
b123
b322b
b321
b321b
c123d
c321d
t15: alpha, sort on first 2 characters
a123b
a123
a122
a321
abc
ab
b123
b321
b322b:/^t16:/+1,/^t17/-1sort/./rn






b321
b321b
c123d
c321d
t16: numeric, sort on first character
abc
:/^t17:/+1,/^t18/-1sort/\d/
b321
b123
c123d
 123b
c321d
b322b
b321
b321b


t17: alpha, skip past first digit
abc
ab
a


a321
b321
b321
b321b
c321d
a122
b322b:/^t18:/+1,/^t19/-1sort/\d/r






a123
b123
 123b
c123d
t18: alpha, sort on first digit
abc
:/^t19:/+1,/^t20/-1sort/\d/n
a122
b123
c123d
 123b
a321
b321
c321d
b322b
b321
b321b
t19: numeric, skip past first digit
abc
ab
a


a321
b321
c321d
b321
b321b
a122
b322b:/^t20:/+1,/^t21/-1sort/\d/rn






a123
b123
c123d
 123b
t20: numeric, sort on first digit
abc
:/^t21:/+1,/^t22/-1sort/\d\d/
a122
b123
c123d
 123b
a321
b321
c321d
b322b
b321
b321b
t21: alpha, skip past first 2 digits
abc
ab
a


a321
b321
b321
b321b
c321d
a122
b322b:/^t22:/+1,/^t23/-1sort/\d\d/n






a123
b123
 123b
c123d
t22: numeric, skip past first 2 digits
abc
:/^t2gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/mbyte.o mbyte.c
3:/+1,/^t24/-1sort/\d\d/x
b321
c321d
b321
b321b
a122
b322b
a123
b123
c123d
 123b
t23: hexadecimal, skip past first 2 digits
abc
ab
a


a321
b321
b321
a122
a123
b123
b321b:/^t24:/+1,/^t25/-1sort/\d\d/r






c321d
b322b
 123b
c123d
t24: alpha, sort on first 2 digits
abc
:/^t25:/+1,/^t26/-1sort/\d\d/rn
a122
b123
c123d
 123b
a321
b321
c321d
b322b
b321
b321b
t25: numeric, sort on first 2 digits
abc
ab
a


a123
a122
b123
c123d
 123b
a321
b321:/^t26:/+1,/^t27/-1sort/\d\d/rx






c321d
b322b
b321
b321b
t26: hexadecimal, sort on first 2 digits
abc
:/^t27:/+1,/^t28/-1sort no
E474: Invalid argument:/^t28:/+1,/^t29/-1sort b
b321
b123
c123d
 123b
c321d
b322b
b321
b321b


t28: binary


0b000000
0b001000
0b010000
0b100000
0b100010
0b100010
0b100100
0b101000
0b101000
0b101001:/^t29:/+1,/^t30/-1sort b






0b101001
0b101010
0b101100
0b111000
t29: binary with leading characters
:/^t30:/+1,/^t31/-1sort f
a0b001000
0b010000
ab0b100000
0b100010
0b100010
 0b100100
0b101000
0b101000
 0b101001
a0b101001
0b101010
b0b101100
b0b111000
t30: float


-1.1e3
-1.01e3
1.15e-6
0.88
1.234
123.456
t31: done:/^t01:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 501 lines, 3105 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test57 = test61; then \
#	  if diff test.out test57.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test57.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test57.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test60.failed test.ok test.out X* viminfo
cp test60.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test60.in
[?1h="test60.in" 601 lines, 13116 charactersTests for the exists() and has() functions.  vim: set ft=vim ts=8 sw=2 :

STARTTEST
:so small.vim
:function! RunTest(str, result)
    if exists(a:str) == a:resultecho "OK"
    elseecho "FAILED: Checking for " . a:str
    endif
endfunction
:function! TestExists()
    augroup myagroupautocmd! BufEnter*.my     echo "myfile edited"autocmd! FuncUndefined  UndefFun exec "fu UndefFun()\nendfu"
    augroup END
    set rtp+=./sautestlet test_cases = []" valid autocmd group
    let test_cases += [['#myagroup', 1]]
    " valid autocmd group with garbage:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for the exists() and has() functions.  vim: set ft=vim ts=8 sw=2 :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 596 lines, 13023 characters written:set ff& cpo+=A
/ENDTESTendif
    endfunctioncall TestFuncArg("arg1", "arg2")echo ' g:footest#x =' g:footest#x
    echo '   footest#F()' footest#F()
    echo 'UndefFun()' UndefFun()redir END
endfunction
:call TestExists()
:"
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
:while getchar(1) | call getchar() | endwhile
ENDTEST


:so! Xdotest
:so small.vim
:function! RunTest(str, result)

:      if exists(a:str) == a:result

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED: Checking for " . a:str

:        endif

:  endfunction
endif
    endfunctioncall TestFuncArg("arg1", "arg2")echo ' g:footest#x =' g:footest#x
:function! TestExists()

:      augroup myagroup

:  ^Iautocmd! BufEnter       *.my     echo "myfile edited"

:  ^Iautocmd! FuncUndefined  UndefFun exec "fu UndefFun()\nendfu"

:      augroup END

:      set rtp+=./sautest

:  

:      let test_cases = []

:  

:      " valid autocmd group

:      let test_cases += [['#myagroup', 1]]

:      " valid autocmd group with garbage

:      let test_cases += [['#myagroup+b', 0]]

:      " Valid autocmd group and event

:      let test_cases += [['#myagroup#BufEnter', 1]]

:      " Valid autocmd group, event and pattern

:      let test_cases += [['#myagroup#BufEnter#*.my', 1]]

:      " Valid autocmd event

:      let test_cases += [['#BufEnter', 1]]

:      " Valid autocmd event and pattern

:      let test_cases += [['#BufEnter#*.my', 1]]

:      " Non-existing autocmd group or event

:      let test_cases += [['#xyzagroup', 0]]

:      " Non-existing autocmd group and valid autocmd event

:      let test_cases += [['#xyzagroup#BufEnter', 0]]

:      " Valid autocmd group and event with no matching pattern

:      let test_cases += [['#myagroup#CmdwinEnter', 0]]

:      " Valid autocmd group and non-existing autocmd event

:      let test_cases += [['#myagroup#xyzacmd', 0]]

:      " Valid autocmd group and event and non-matching pattern

:      let test_cases += [['#myagroup#BufEnter#xyzpat', 0]]

:      " Valid autocmd event and non-matching pattern

:      let test_cases += [['#BufEnter#xyzpat', 0]]

:      " Empty autocmd group, event and pattern

:      let test_cases += [['###', 0]]

:      " Empty autocmd group and event or empty event and pattern

:      let test_cases += [['##', 0]]

:      " Valid autocmd event

:      let test_cases += [['##FileReadCmd', 1]]

:      " Non-existing autocmd event

:      let test_cases += [['##MySpecialCmd', 0]]

:  

:      " Existing and working option (long form)

:      let test_cases += [['&textwidth', 1]]

:      " Existing and working option (short form)

:      let test_cases += [['&tw', 1]]

:      " Existing and working option with garbage

:      let test_cases += [['&tw-', 0]]

:      " Global option

:      let test_cases += [['&g:errorformat', 1]]

:      " Local option

:      let test_cases += [['&l:errorformat', 1]]

:      " Negative form of existing and working option (long form)

:      let test_cases += [['&nojoinspaces', 0]]

:      " Negative form of existing and working option (short form)

:      let test_cases += [['&nojs', 0]]

:      " Non-existing option

:      let test_cases += [['&myxyzoption', 0]]

:  

:      " Existing and working option (long form)

:      let test_cases += [['+incsearch', 1]]

:      " Existing and working option with garbage

:      let test_cases += [['+incsearch!1', 0]]

:      " Existing and working option (short form)

:      let test_cases += [['+is', 1]]

:      " Existing option that is hidden.

:      let test_cases += [['+autoprint', 0]]

:  

:      " Existing environment variable

:      let $EDITOR_NAME = 'Vim Editor'

:      let test_cases += [['$EDITOR_NAME', 1]]

:      " Non-existing environment variable

:      let test_cases += [['$NON_ENV_VAR', 0]]

:  

:      " Valid internal function

:      let test_cases += [['*bufnr', 1]]

:      " Valid internal function with ()

:      let test_cases += [['*bufnr()', 1]]

:      " Non-existing internal function

:      let test_cases += [['*myxyzfunc', 0]]

:      " Valid internal function with garbage

:      let test_cases += [['*bufnr&6', 0]]

:  

:      " Valid user defined function

:      let test_cases += [['*TestExists', 1]]

:      " Non-existing user defined function

:      let test_cases += [['*MyxyzFunc', 0]]

:  

:      " Function that may be created by FuncUndefined event

:      let test_cases += [['*UndefFun', 0]]

:      " Function that may be created by script autoloading

:      let test_cases += [['*footest#F', 0]]

:  

:      redir! > test.out

:  

:      for [test_case, result] in test_cases

:            echo test_case . ": " . result

:            call RunTest(test_case, result)

:        endfor

:  

:      " Valid internal command (full match)

:      echo ':edit: 2'

:      if exists(':edit') == 2

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid internal command (full match) with garbage

:      echo ':edit/a: 0'

:      if exists(':edit/a') == 0

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid internal command (partial match)

:      echo ':q: 1'

:      if exists(':q') == 1

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing internal command

:      echo ':invalidcmd: 0'

:      if !exists(':invalidcmd')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " User defined command (full match)

:      command! MyCmd :echo 'My command'

:      echo ':MyCmd: 2'

:      if exists(':MyCmd') == 2

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " User defined command (partial match)

:      command! MyOtherCmd :echo 'Another command'

:      echo ':My: 3'

:      if exists(':My') == 3

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Command modifier

:      echo ':rightbelow: 2'

:      if exists(':rightbelow') == 2

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing user defined command (full match)

:      delcommand MyCmd

:  

:      echo ':MyCmd: 0'

:      if !exists(':MyCmd')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing user defined command (partial match)

:      delcommand MyOtherCmd

:  

:      echo ':My: 0'

:      if !exists(':My')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local variable

:      let local_var = 1

:      echo 'local_var: 1'

:      if exists('local_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local variable with garbage

:      let local_var = 1

:      echo 'local_var%n: 0'

:      if !exists('local_var%n')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing local variable

:      unlet local_var

:      echo 'local_var: 0'

:      if !exists('local_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing autoload variable that may be autoloaded

:      echo 'footest#x: 0'

:      if !exists('footest#x')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local list

:      let local_list = ["blue", "orange"]

:      echo 'local_list: 1'

:      if exists('local_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local list item

:      echo 'local_list[1]: 1'

:      if exists('local_list[1]')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local list item with garbage

:      echo 'local_list[1]+5: 0'

:      if !exists('local_list[1]+5')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Invalid local list item

:      echo 'local_list[2]: 0'

:      if !exists('local_list[2]')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing local list

:      unlet local_list

:      echo 'local_list: 0'

:      if !exists('local_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local dictionary

:      let local_dict = {"xcord":100, "ycord":2}

:      echo 'local_dict: 1'

:      if exists('local_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing local dictionary

:      unlet local_dict

:      echo 'local_dict: 0'

:      if !exists('local_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing local curly-brace variable

:      let str = "local"

:      let curly_{str}_var = 1

:      echo 'curly_' . str . '_var: 1'

:      if exists('curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing local curly-brace variable

:      unlet curly_{str}_var

:      echo 'curly_' . str . '_var: 0'

:      if !exists('curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:  

:      " Existing global variable

:      let g:global_var = 1

:      echo 'g:global_var: 1'

:      if exists('g:global_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing global variable with garbage

:      echo 'g:global_var-n: 1'

:      if !exists('g:global_var-n')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing global variable

:      unlet g:global_var

:      echo 'g:global_var: 0'

:      if !exists('g:global_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing global list

:      let g:global_list = ["blue", "orange"]

:      echo 'g:global_list: 1'

:      if exists('g:global_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing global list

:      unlet g:global_list

:      echo 'g:global_list: 0'

:      if !exists('g:global_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing global dictionary

:      let g:global_dict = {"xcord":100, "ycord":2}

:      echo 'g:global_dict: 1'

:      if exists('g:global_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing global dictionary

:      unlet g:global_dict

:      echo 'g:global_dict: 0'

:      if !exists('g:global_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing global curly-brace variable

:      let str = "global"

:      let g:curly_{str}_var = 1

:      echo 'g:curly_' . str . '_var: 1'

:      if exists('g:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing global curly-brace variable

:      unlet g:curly_{str}_var

:      echo 'g:curly_' . str . '_var: 0'

:      if !exists('g:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing window variable

:      echo 'w:window_var: 1'

:      let w:window_var = 1

:      if exists('w:window_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing window variable

:      unlet w:window_var

:      echo 'w:window_var: 0'

:      if !exists('w:window_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing window list

:      let w:window_list = ["blue", "orange"]

:      echo 'w:window_list: 1'

:      if exists('w:window_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing window list

:      unlet w:window_list

:      echo 'w:window_list: 0'

:      if !exists('w:window_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing window dictionary

:      let w:window_dict = {"xcord":100, "ycord":2}

:      echo 'w:window_dict: 1'

:      if exists('w:window_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing window dictionary

:      unlet w:window_dict

:      echo 'w:window_dict: 0'

:      if !exists('w:window_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing window curly-brace variable

:      let str = "window"

:      let w:curly_{str}_var = 1

:      echo 'w:curly_' . str . '_var: 1'

:      if exists('w:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing window curly-brace variable

:      unlet w:curly_{str}_var

:      echo 'w:curly_' . str . '_var: 0'

:      if !exists('w:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing buffer variable

:      echo 'b:buffer_var: 1'

:      let b:buffer_var = 1

:      if exists('b:buffer_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing buffer variable

:      unlet b:buffer_var

:      echo 'b:buffer_var: 0'

:      if !exists('b:buffer_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing buffer list

:      let b:buffer_list = ["blue", "orange"]

:      echo 'b:buffer_list: 1'

:      if exists('b:buffer_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing buffer list

:      unlet b:buffer_list

:      echo 'b:buffer_list: 0'

:      if !exists('b:buffer_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing buffer dictionary

:      let b:buffer_dict = {"xcord":100, "ycord":2}

:      echo 'b:buffer_dict: 1'

:      if exists('b:buffer_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing buffer dictionary

:      unlet b:buffer_dict

:      echo 'b:buffer_dict: 0'

:      if !exists('b:buffer_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing buffer curly-brace variable

:      let str = "buffer"

:      let b:curly_{str}_var = 1

:      echo 'b:curly_' . str . '_var: 1'

:      if exists('b:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing buffer curly-brace variable

:      unlet b:curly_{str}_var

:      echo 'b:curly_' . str . '_var: 0'

:      if !exists('b:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Script-local tests

:      source test60.vim

:  

:      " Existing Vim internal variable

:      echo 'v:version: 1'

:      if exists('v:version')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing Vim internal variable

:      echo 'v:non_exists_var: 0'

:      if !exists('v:non_exists_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Function arguments

:      function TestFuncArg(func_arg, ...)

:            echo 'a:func_arg: 1'

:            if exists('a:func_arg')

:                  echo "OK"

:              else

:                  echo "FAILED"

:              endif

:    

:            echo 'a:non_exists_arg: 0'

:            if !exists('a:non_exists_arg')

:                  echo "OK"

:              else

:                  echo "FAILED"

:              endif

:    

:            echo 'a:1: 1'

:            if exists('a:1')

:                  echo "OK"

:              else

:                  echo "FAILED"

:              endif

:    

:            echo 'a:2: 0'

:            if !exists('a:2')

:                  echo "OK"

:              else

:                  echo "FAILED"

:              endif

:        endfunction

:    

:        call TestFuncArg("arg1", "arg2")

:    

:        echo ' g:footest#x =' g:footest#x

:        echo '   footest#F()' footest#F()

:        echo 'UndefFun()' UndefFun()

:    

:        redir END

:    endfunction
endif
    endfunctioncall TestFuncArg("arg1", "arg2")echo ' g:footest#x =' g:footest#x
    echo '   footest#F()' footest#F()
    echo 'UndefFun()' UndefFun()redir END
endfunction
:call TestExists()
:"
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
:while getchar(1) | call getchar() | endwhile
ENDTEST

:call TestExists()
#myagroup: 1
OK

#myagroup+b: 0

OK

#myagroup#BufEnter: 1

OK

#myagroup#BufEnter#*.my: 1

OK

#BufEnter: 1

OK

#BufEnter#*.my: 1

OK

#xyzagroup: 0

OK

#xyzagroup#BufEnter: 0

OK

#myagroup#CmdwinEnter: 0

OK

#myagroup#xyzacmd: 0

OK

#myagroup#BufEnter#xyzpat: 0

OK

#BufEnter#xyzpat: 0

OK

###: 0

OK

##: 0

OK

##FileReadCmd: 1

OK

##MySpecialCmd: 0

OK

&textwidth: 1

OK

&tw: 1

OK

&tw-: 0

OK

&g:errorformat: 1

OK

&l:errorformat: 1

OK

&nojoinspaces: 0

OK

&nojs: 0

OK

&myxyzoption: 0

OK

+incsearch: 1

OK

+incsearch!1: 0

OK

+is: 1

OK

+autoprint: 0

OK

$EDITOR_NAME: 1

OK

$NON_ENV_VAR: 0

OK

*bufnr: 1

OK

*bufnr(): 1

OK

*myxyzfunc: 0

OK

*bufnr&6: 0

OK

*TestExists: 1

OK

*MyxyzFunc: 0

OK

*UndefFun: 0

OK

*footest#F: 0

OK

:edit: 2

OK

:edit/a: 0

OK

:q: 1

OK

:invalidcmd: 0

OK

:MyCmd: 2

OK

:My: 3

OK

:rightbelow: 2

OK

:MyCmd: 0

OK

:My: 0

OK

local_var: 1

OK

local_var%n: 0

OK

local_var: 0

OK

footest#x: 0

OK

local_list: 1

OK

local_list[1]: 1

OK

local_list[1]+5: 0

OK

local_list[2]: 0

OK

local_list: 0

OK

local_dict: 1

OK

local_dict: 0

OK

curly_local_var: 1

OK

curly_local_var: 0

OK

g:global_var: 1

OK

g:global_var-n: 1

OK

g:global_var: 0

OK

g:global_list: 1

OK

g:global_list: 0

OK

g:global_dict: 1

OK

g:global_dict: 0

OK

g:curly_global_var: 1

OK

g:curly_global_var: 0

OK

w:window_var: 1

OK

w:window_var: 0

OK

w:window_list: 1

OK

w:window_list: 0

OK

w:window_dict: 1

OK

w:window_dict: 0

OK

w:curly_window_var: 1

OK

w:curly_window_var: 0

OK

b:buffer_var: 1

OK

b:buffer_var: 0

OK

b:buffer_list: 1

OK

b:buffer_list: 0

OK

b:buffer_dict: 1

OK

b:buffer_dict: 0

OK

b:curly_buffer_var: 1

OK

b:curly_buffer_var: 0

OK

s:script_var: 1

OK

s:script_var: 0

OK

s:script_list: 1

OK

s:script_list: 0

OK

s:script_dict: 1

OK

s:script_dict: 0

OK

s:curly_script_var: 1

OK

s:curly_script_var: 0

OK

*s:my_script_func: 1

OK

*s:my_script_func: 0

OK

v:version: 1

OK

v:non_exists_var: 0

OK

a:func_arg: 1

OK

a:non_exists_arg: 0

OK

a:1: 1

OK

a:2: 0

OK

 g:footest#x = 1

   footest#F() 0

UndefFun() 0

Press ENTER or type command to continue:"
endif
    endfunctioncall TestFuncArg("arg1", "arg2")echo ' g:footest#x =' g:footest#x
    echo '   footest#F()' footest#F()
    echo 'UndefFun()' UndefFun()redir END
endfunction
:call TestExists()
:"
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
:while getchar(1) | call getchar() | endwhile
ENDTEST

:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
"test.out" [Incomplete last line] 206 lines, 1940 characters#myagroup: 1OK
#myagroup+b: 0OK
#myagroup#BufEnter: 1OK#myagroup#BufEnter#*.my: 1OK
#BufEnter: 1OK#BufEnter#*.my: 1OK
#xyzagroup: 0OK#xyzagroup#BufEnter: 0
OK#myagroup#CmdwinEnter: 0
OK
#myagroup#xyzacmd: 0
OK#myagroup#BufEnter#xyzpat: 0
OK:set ff=unix
:w
"test.out" 206 lines, 1941 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test60 = test61; then \
#	  if diff test.out test60.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test60.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test60.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test64.failed test.ok test.out X* viminfo
cp test64.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test64.in
[?1h="test64.in" 654 lines, 27565 charactersTest for regexp patterns without multi-byte support.
See test95 for multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:":set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for regexp patterns without multi-byte support./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 621 lines, 27090 characters written:set ff& cpo+=A
/ENDTEST:for pat in [' \ze*', ' \zs*']
:  try
:    let l = matchlist('x x', pat)
:    $put ='E888 NOT detected for ' . pat
:  catch
:    $put ='E888 detected for ' . pat
:  endtry
:endfor
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
ENDTEST

Substitute here:
<T="">Ta 5</Title>
<T="">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
:so! Xdotest
:so small.vim
:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
:call add(tl, [2, 'ab', 'aab', 'ab'])
:call add(tl, [2, 'b', 'abcdef', 'b'])
:call add(tl, [2, 'bc*', 'abccccdef', 'bcccc'])
:call add(tl, [2, 'bc\{-}', 'abccccdef', 'b'])
:call add(tl, [2, 'bc\{-}\(d\)', 'abccccdef', 'bccccd', 'd'])
:call add(tl, [2, 'bc*', 'abbdef', 'b'])
:call add(tl, [2, 'c*', 'ccc', 'ccc'])
:call add(tl, [2, 'bc*', 'abdef', 'b'])
:call add(tl, [2, 'c*', 'abdef', ''])
:call add(tl, [2, 'bc\+', 'abccccdef', 'bcccc'])
:call add(tl, [2, 'bc\+', 'abdef']) "no match
:"
:"operator \|
:call add(tl, [2, 'a\|ab', 'cabd', 'a']) "alternation is ordered
:"
:call add(tl, [2, 'c\?', 'ccb', 'c'])
:call add(tl, [2, 'bc\?', 'abd', 'b'])
:call add(tl, [2, 'bc\?', 'abccd', 'bc'])
:"
:call add(tl, [2, '\va{1}', 'ab', 'a'])
:"
:call add(tl, [2, '\va{2}', 'aa', 'aa'])
:call add(tl, [2, '\va{2}', 'caad', 'aa'])
:call add(tl, [2, '\va{2}', 'aba'])
:call add(tl, [2, '\va{2}', 'ab'])
:call add(tl, [2, '\va{2}', 'abaa', 'aa'])
:call add(tl, [2, '\va{2}', 'aaa', 'aa'])
:"
:call add(tl, [2, '\vb{1}', 'abca', 'b'])
:call add(tl, [2, '\vba{2}', 'abaa', 'baa'])
:call add(tl, [2, '\vba{3}', 'aabaac'])
:"
:call add(tl, [2, '\v(ab){1}', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(ab){1}', 'dabc', 'ab', 'ab'])
:call add(tl, [2, '\v(ab){1}', 'acb'])
:"
:call add(tl, [2, '\v(ab){0,2}', 'acb', "", ""])
:call add(tl, [2, '\v(ab){0,2}', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(ab){1,2}', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(ab){1,2}', 'ababc', 'abab', 'ab'])
:call add(tl, [2, '\v(ab){2,4}', 'ababcab', 'abab', 'ab'])
:call add(tl, [2, '\v(ab){2,4}', 'abcababa', 'abab', 'ab'])
:"
:call add(tl, [2, '\v(ab){2}', 'abab', 'abab', 'ab'])
:call add(tl, [2, '\v(ab){2}', 'cdababe', 'abab', 'ab'])
:call add(tl, [2, '\v(ab){2}', 'abac'])
:call add(tl, [2, '\v(ab){2}', 'abacabab', 'abab', 'ab'])
:call add(tl, [2, '\v((ab){2}){2}', 'abababab', 'abababab', 'abab', 'ab'])
:call add(tl, [2, '\v((ab){2}){2}', 'abacabababab', 'abababab', 'abab', 'ab'])
:"
:call add(tl, [2, '\v(a{1}){1}', 'a', 'a', 'a'])
:call add(tl, [2, '\v(a{2}){1}', 'aa', 'aa', 'aa'])
:call add(tl, [2, '\v(a{2}){1}', 'aaac', 'aa', 'aa'])
:call add(tl, [2, '\v(a{2}){1}', 'daaac', 'aa', 'aa'])
:call add(tl, [2, '\v(a{1}){2}', 'daaac', 'aa', 'a'])
:call add(tl, [2, '\v(a{1}){2}', 'aaa', 'aa', 'a'])
:call add(tl, [2, '\v(a{2})+', 'adaac', 'aa', 'aa'])
:call add(tl, [2, '\v(a{2})+', 'aa', 'aa', 'aa'])
:call add(tl, [2, '\v(a{2}){1}', 'aa', 'aa', 'aa'])
:call add(tl, [2, '\v(a{1}){2}', 'aa', 'aa', 'a'])
:call add(tl, [2, '\v(a{1}){1}', 'a', 'a', 'a'])
:call add(tl, [2, '\v(a{2}){2}', 'aaaa', 'aaaa', 'aa'])
:call add(tl, [2, '\v(a{2}){2}', 'aaabaaaa', 'aaaa', 'aa'])
:"
:call add(tl, [2, '\v(a+){2}', 'dadaac', 'aa', 'a'])
:call add(tl, [2, '\v(a{3}){2}', 'aaaaaaa', 'aaaaaa', 'aaa'])
:"
:call add(tl, [2, '\v(a{1,2}){2}', 'daaac', 'aaa', 'a'])
:call add(tl, [2, '\v(a{1,3}){2}', 'daaaac', 'aaaa', 'a'])
:call add(tl, [2, '\v(a{1,3}){2}', 'daaaaac', 'aaaaa', 'aa'])
:call add(tl, [2, '\v(a{1,3}){3}', 'daac'])
:call add(tl, [2, '\v(a{1,2}){2}', 'dac'])
:call add(tl, [2, '\v(a+)+', 'daac', 'aa', 'aa'])
:call add(tl, [2, '\v(a+)+', 'aaa', 'aaa', 'aaa'])
:call add(tl, [2, '\v(a+){1,2}', 'aaa', 'aaa', 'aaa'])
:call add(tl, [2, '\v(a+)(a+)', 'aaa', 'aaa', 'aa', 'a'])
:call add(tl, [2, '\v(a{3})+', 'daaaac', 'aaa', 'aaa'])
:call add(tl, [2, '\v(a|b|c)+', 'aacb', 'aacb', 'b'])
:call add(tl, [2, '\v(a|b|c){2}', 'abcb', 'ab', 'b'])
:call add(tl, [2, '\v(abc){2}', 'abcabd', ])
:call add(tl, [2, '\v(abc){2}', 'abdabcabc','abcabc', 'abc'])
:"
:call add(tl, [2, 'a*', 'cc', ''])
:call add(tl, [2, '\v(a*)+', 'cc', ''])
:call add(tl, [2, '\v((ab)+)+', 'ab', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(((ab)+)+)+', 'ab', 'ab', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(((ab)+)+)+', 'dababc', 'abab', 'abab', 'abab', 'ab'])
:call add(tl, [2, '\v(a{0,2})+', 'cc', ''])
:call add(tl, [2, '\v(a*)+', '', ''])
:call add(tl, [2, '\v((a*)+)+', '', ''])
:call add(tl, [2, '\v((ab)*)+', '', ''])
:call add(tl, [2, '\va{1,3}', 'aab', 'aa'])
:call add(tl, [2, '\va{2,3}', 'abaa', 'aa'])
:"
:call add(tl, [2, '\v((ab)+|c*)+', 'abcccaba', 'abcccab', '', 'ab'])
:call add(tl, [2, '\v(a{2})|(b{3})', 'bbabbbb', 'bbb', '', 'bbb'])
:call add(tl, [2, '\va{2}|b{2}', 'abab'])
:call add(tl, [2, '\v(a)+|(c)+', 'bbacbaacbbb', 'a', 'a'])
:call add(tl, [2, '\vab{2,3}c', 'aabbccccccccccccc', 'abbc'])
:call add(tl, [2, '\vab{2,3}c', 'aabbbccccccccccccc', 'abbbc'])
:call add(tl, [2, '\vab{2,3}cd{2,3}e', 'aabbbcddee', 'abbbcdde'])
:call add(tl, [2, '\va(bc){2}d', 'aabcbfbc' ])
:call add(tl, [2, '\va*a{2}', 'a', ])
:call add(tl, [2, '\va*a{2}', 'aa', 'aa' ])
:call add(tl, [2, '\va*a{2}', 'aaa', 'aaa' ])
:call add(tl, [2, '\va*a{2}', 'bbbabcc', ])
:call add(tl, [2, '\va*b*|a*c*', 'a', 'a'])
:call add(tl, [2, '\va{1}b{1}|a{1}b{1}', ''])
:"
:"submatches
:call add(tl, [2, '\v(a)', 'ab', 'a', 'a'])
:call add(tl, [2, '\v(a)(b)', 'ab', 'ab', 'a', 'b'])
:call add(tl, [2, '\v(ab)(b)(c)', 'abbc', 'abbc', 'ab', 'b', 'c'])
:call add(tl, [2, '\v((a)(b))', 'ab', 'ab', 'ab', 'a', 'b'])
:call add(tl, [2, '\v(a)|(b)', 'ab', 'a', 'a'])
:"
:call add(tl, [2, '\v(a*)+', 'aaaa', 'aaaa', ''])
:call add(tl, [2, 'x', 'abcdef'])
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:""""" Simple tests """""""""""""""""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
:" Search single groups
:call add(tl, [2, 'ab', 'aab', 'ab'])
:call add(tl, [2, 'ab', 'baced'])
:call add(tl, [2, 'ab', '                    ab           ', 'ab'])
:"
:" Search multi-modifiers
:call add(tl, [2, 'x*', 'xcd', 'x'])
:call add(tl, [2, 'x*', 'xxxxxxxxxxxxxxxxsofijiojgf', 'xxxxxxxxxxxxxxxx'])
:" empty match is good
:call add(tl, [2, 'x*', 'abcdoij', ''])
:" no match here
:call add(tl, [2, 'x\+', 'abcdoin'])
:call add(tl, [2, 'x\+', 'abcdeoijdfxxiuhfij', 'xx'])
:call add(tl, [2, 'x\+', 'xxxxx', 'xxxxx'])
:call add(tl, [2, 'x\+', 'abc x siufhiush xxxxxxxxx', 'x'])
:call add(tl, [2, 'x\=', 'x sdfoij', 'x'])
:call add(tl, [2, 'x\=', 'abc sfoij', '']) " empty match is good
:call add(tl, [2, 'x\=', 'xxxxxxxxx c', 'x'])
:call add(tl, [2, 'x\?', 'x sdfoij', 'x'])
:" empty match is good
:call add(tl, [2, 'x\?', 'abc sfoij', ''])
:call add(tl, [2, 'x\?', 'xxxxxxxxxx c', 'x'])
:"
:call add(tl, [2, 'a\{0,0}', 'abcdfdoij', ''])
:" same thing as 'a?'
:call add(tl, [2, 'a\{0,1}', 'asiubid axxxaaa', 'a'])
:" same thing as 'a\{0,1}'
:call add(tl, [2, 'a\{1,0}', 'asiubid axxxaaa', 'a'])
:call add(tl, [2, 'a\{3,6}', 'aa siofuh'])
:call add(tl, [2, 'a\{3,6}', 'aaaaa asfoij afaa', 'aaaaa'])
:call add(tl, [2, 'a\{3,6}', 'aaaaaaaa', 'aaaaaa'])
:call add(tl, [2, 'a\{0}', 'asoiuj', ''])
:call add(tl, [2, 'a\{2}', 'aaaa', 'aa'])
:call add(tl, [2, 'a\{2}', 'iuash fiusahfliusah fiushfilushfi uhsaifuh askfj na

sfvius afg aaaa sfiuhuhiushf', 'aa'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, 'a\{2}', 'abcdefghijklmnopqrestuvwxyz1234567890'])
:" same thing as 'a*'
:call add(tl, [2, 'a\{0,}', 'oij sdigfusnf', ''])
:call add(tl, [2, 'a\{0,}', 'aaaaa aa', 'aaaaa'])
:call add(tl, [2, 'a\{2,}', 'sdfiougjdsafg'])
:call add(tl, [2, 'a\{2,}', 'aaaaasfoij ', 'aaaaa'])
:call add(tl, [2, 'a\{5,}', 'xxaaaaxxx '])
:call add(tl, [2, 'a\{5,}', 'xxaaaaaxxx ', 'aaaaa'])
:call add(tl, [2, 'a\{,0}', 'oidfguih iuhi hiu aaaa', ''])
:call add(tl, [2, 'a\{,5}', 'abcd', 'a'])
:call add(tl, [2, 'a\{,5}', 'aaaaaaaaaa', 'aaaaa'])
:" leading star as normal char when \{} follows
:call add(tl, [2, '^*\{4,}$', '***'])
:call add(tl, [2, '^*\{4,}$', '****', '****'])
:call add(tl, [2, '^*\{4,}$', '*****', '*****'])
:" same thing as 'a*'
:call add(tl, [2, 'a\{}', 'bbbcddiuhfcd', ''])
:call add(tl, [2, 'a\{}', 'aaaaioudfh coisf jda', 'aaaa'])
:"
:call add(tl, [2, 'a\{-0,0}', 'abcdfdoij', ''])
:" anti-greedy version of 'a?'
:call add(tl, [2, 'a\{-0,1}', 'asiubid axxxaaa', ''])
:call add(tl, [2, 'a\{-3,6}', 'aa siofuh'])
:call add(tl, [2, 'a\{-3,6}', 'aaaaa asfoij afaa', 'aaa'])
:call add(tl, [2, 'a\{-3,6}', 'aaaaaaaa', 'aaa'])
:call add(tl, [2, 'a\{-0}', 'asoiuj', ''])
:call add(tl, [2, 'a\{-2}', 'aaaa', 'aa'])
:call add(tl, [2, 'a\{-2}', 'abcdefghijklmnopqrestuvwxyz1234567890'])
:call add(tl, [2, 'a\{-0,}', 'oij sdigfusnf', ''])
:call add(tl, [2, 'a\{-0,}', 'aaaaa aa', ''])
:call add(tl, [2, 'a\{-2,}', 'sdfiougjdsafg'])
:call add(tl, [2, 'a\{-2,}', 'aaaaasfoij ', 'aa'])
:call add(tl, [2, 'a\{-,0}', 'oidfguih iuhi hiu aaaa', ''])
:call add(tl, [2, 'a\{-,5}', 'abcd', ''])
:call add(tl, [2, 'a\{-,5}', 'aaaaaaaaaa', ''])
:" anti-greedy version of 'a*'
:call add(tl, [2, 'a\{-}', 'bbbcddiuhfcd', ''])
:call add(tl, [2, 'a\{-}', 'aaaaioudfh coisf jda', ''])
:"
:" Test groups of characters and submatches
:call add(tl, [2, '\(abc\)*', 'abcabcabc', 'abcabcabc', 'abc'])
:call add(tl, [2, '\(ab\)\+', 'abababaaaaa', 'ababab', 'ab'])
:call add(tl, [2, '\(abaaaaa\)*cd', 'cd', 'cd', ''])
:call add(tl, [2, '\(test1\)\? \(test2\)\?', 'test1 test3', 'test1 ', 'test1', 

''])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(test1\)\= \(test2\) \(test4443\)\=', ' test2 test4443 yupi

iiiiiiiiii', ' test2 test4443', '', 'test2', 'test4443'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(\(sub1\) hello \(sub 2\)\)', 'asterix sub1 hello sub 2 obe

lix', 'sub1 hello sub 2', 'sub1 hello sub 2', 'sub1', 'sub 2'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(\(\(yyxxzz\)\)\)', 'abcdddsfiusfyyzzxxyyxxzz', 'yyxxzz', '

yyxxzz', 'yyxxzz', 'yyxxzz'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\v((ab)+|c+)+', 'abcccaba', 'abcccab', 'ab', 'ab'])
:call add(tl, [2, '\v((ab)|c*)+', 'abcccaba', 'abcccab', '', 'ab'])
:call add(tl, [2, '\v(a(c*)+b)+', 'acbababaaa', 'acbabab', 'ab', ''])
:call add(tl, [2, '\v(a|b*)+', 'aaaa', 'aaaa', ''])
:call add(tl, [2, '\p*', 'aá ^I', 'aá '])
:"
:" Test greedy-ness and lazy-ness
:call add(tl, [2, 'a\{-2,7}','aaaaaaaaaaaaa', 'aa'])
:call add(tl, [2, 'a\{-2,7}x','aaaaaaaaax', 'aaaaaaax'])
:call add(tl, [2, 'a\{2,7}','aaaaaaaaaaaaaaaaaaaa', 'aaaaaaa'])
:call add(tl, [2, 'a\{2,7}x','aaaaaaaaax', 'aaaaaaax'])
:call add(tl, [2, '\vx(.{-,8})yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz','ayxa

','xayzxayz'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\vx(.*)yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz', 'ayxayzx

ayzxa',''])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\v(a{1,2}){-2,3}','aaaaaaa','aaaa','aa'])
:call add(tl, [2, '\v(a{-1,3})+', 'aa', 'aa', 'a'])
:call add(tl, [2, '^\s\{-}\zs\( x\|x$\)', ' x', ' x', ' x'])
:call add(tl, [2, '^\s\{-}\zs\(x\| x$\)', ' x', ' x', ' x'])
:call add(tl, [2, '^\s\{-}\ze\(x\| x$\)', ' x', '', ' x'])
:call add(tl, [2, '^\(\s\{-}\)\(x\| x$\)', ' x', ' x', '', ' x'])
:"
:" Test Character classes
:call add(tl, [2, '\d\+e\d\d','test 10e23 fd','10e23'])
:"
:" Test collections and character range []
:call add(tl, [2, '\v[a]', 'abcd', 'a'])
:call add(tl, [2, 'a[bcd]', 'abcd', 'ab'])
:call add(tl, [2, 'a[b-d]', 'acbd', 'ac'])
:call add(tl, [2, '[a-d][e-f][x-x]d', 'cexdxx', 'cexd'])
:call add(tl, [2, '\v[[:alpha:]]+', 'abcdefghijklmnopqrstuvwxyz6','abcdefghijkl

mnopqrstuvwxyz'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '[[:alpha:]\+]', '6x8','x'])
:call add(tl, [2, '[^abc]\+','abcabcabc'])
:call add(tl, [2, '[^abc]','defghiasijvoinasoiunbvb','d'])
:call add(tl, [2, '[^abc]\+','ddddddda','ddddddd'])
:call add(tl, [2, '[^a-d]\+','aaaAAAZIHFNCddd','AAAZIHFNC'])
:call add(tl, [2, '[a-f]*','iiiiiiii',''])
:call add(tl, [2, '[a-f]*','abcdefgh','abcdef'])
:call add(tl, [2, '[^a-f]\+','abcdefgh','gh'])
:call add(tl, [2, '[a-c]\{-3,6}','abcabc','abc'])
:call add(tl, [2, '[^[:alpha:]]\+','abcccadfoij7787ysf287yrnccdu','7787'])
:call add(tl, [2, '[-a]', '-', '-'])
:call add(tl, [2, '[a-]', '-', '-'])
:call add(tl, [2, '[a-f]*\c','ABCDEFGH','ABCDEF'])
:call add(tl, [2, '[abc][xyz]\c','-af-AF-BY--','BY'])
:" filename regexp
:call add(tl, [2, '[-./[:alnum:]_~]\+', 'log13.file', 'log13.file'])
:" special chars
:call add(tl, [2, '[\]\^\-\\]\+', '\^\\\-\---^', '\^\\\-\---^'])
:" collation elem
:call add(tl, [2, '[[.a.]]\+', 'aa', 'aa'])
:" middle of regexp
:call add(tl, [2, 'abc[0-9]*ddd', 'siuhabc ii'])
:call add(tl, [2, 'abc[0-9]*ddd', 'adf abc44482ddd oijs', 'abc44482ddd'])
:call add(tl, [2, '\_[0-9]\+', 'asfi9888u', '9888'])
:call add(tl, [2, '[0-9\n]\+', 'asfi9888u', '9888'])
:call add(tl, [2, '\_[0-9]\+', "asfi\n9888u", "\n9888"])
:call add(tl, [2, '\_f', "  \na ", "\n"])
:call add(tl, [2, '\_f\+', "  \na ", "\na"])
:call add(tl, [2, '[0-9A-Za-z-_.]\+', " @0_a.A-{ ", "0_a.A-"])
:"
:"""" Test start/end of line, start/end of file
:call add(tl, [2, '^a.', "a_\nb ", "a_"])
:call add(tl, [2, '^a.', "b a \na_"])
:call add(tl, [2, '.a$', " a\n "])
:call add(tl, [2, '.a$', " a b\n_a", "_a"])
:call add(tl, [2, '\%^a.', "a a\na", "a "])
:call add(tl, [2, '\%^a', " a \na "])
:call add(tl, [2, '.a\%$', " a\n "])
:call add(tl, [2, '.a\%$', " a\n_a", "_a"])
:"
:"""" Test recognition of character classes
:call add(tl, [2, '[0-7]\+', 'x0123456789x', '01234567'])
:call add(tl, [2, '[^0-7]\+', '0a;X+% 897', 'a;X+% 89'])
:call add(tl, [2, '[0-9]\+', 'x0123456789x', '0123456789'])
:call add(tl, [2, '[^0-9]\+', '0a;X+% 9', 'a;X+% '])
:call add(tl, [2, '[0-9a-fA-F]\+', 'x0189abcdefg', '0189abcdef'])
:call add(tl, [2, '[^0-9A-Fa-f]\+', '0189g;X+% ab', 'g;X+% '])
:call add(tl, [2, '[a-z_A-Z0-9]\+', ';+aso_SfOij ', 'aso_SfOij'])
:call add(tl, [2, '[^a-z_A-Z0-9]\+', 'aSo_;+% sfOij', ';+% '])
:call add(tl, [2, '[a-z_A-Z]\+', '0abyz_ABYZ;', 'abyz_ABYZ'])
:call add(tl, [2, '[^a-z_A-Z]\+', 'abAB_09;+% yzYZ', '09;+% '])
:call add(tl, [2, '[a-z]\+', '0abcxyz1', 'abcxyz'])
:call add(tl, [2, '[a-z]\+', 'AabxyzZ', 'abxyz'])
:call add(tl, [2, '[^a-z]\+', 'a;X09+% x', ';X09+% '])
:call add(tl, [2, '[^a-z]\+', 'abX0;%yz', 'X0;%'])
:call add(tl, [2, '[a-zA-Z]\+', '0abABxzXZ9', 'abABxzXZ'])
:call add(tl, [2, '[^a-zA-Z]\+', 'ab09_;+ XZ', '09_;+ '])
:call add(tl, [2, '[A-Z]\+', 'aABXYZz', 'ABXYZ'])
:call add(tl, [2, '[^A-Z]\+', 'ABx0;%YZ', 'x0;%'])
:call add(tl, [2, '[a-z]\+\c', '0abxyzABXYZ;', 'abxyzABXYZ'])
:call add(tl, [2, '[A-Z]\+\c', '0abABxzXZ9', 'abABxzXZ'])
:call add(tl, [2, '\c[^a-z]\+', 'ab09_;+ XZ', '09_;+ '])
:call add(tl, [2, '\c[^A-Z]\+', 'ab09_;+ XZ', '09_;+ '])
:call add(tl, [2, '\C[^A-Z]\+', 'ABCOIJDEOIFNSD jsfoij sa', ' jsfoij sa'])
:"
:"""" Tests for \z features
:" match ends at \ze
:call add(tl, [2, 'xx \ze test', 'xx '])
:call add(tl, [2, 'abc\zeend', 'oij abcend', 'abc'])
:call add(tl, [2, 'aa\zebb\|aaxx', ' aabb ', 'aa'])
:call add(tl, [2, 'aa\zebb\|aaxx', ' aaxx ', 'aaxx'])
:call add(tl, [2, 'aabb\|aa\zebb', ' aabb ', 'aabb'])
:call add(tl, [2, 'aa\zebb\|aaebb', ' aabb ', 'aa'])
:" match starts at \zs
:call add(tl, [2, 'abc\zsdd', 'ddabcddxyzt', 'dd'])
:call add(tl, [2, 'aa \zsax', ' ax'])
:call add(tl, [2, 'abc \zsmatch\ze abc', 'abc abc abc match abc abc', 'match'])
:call add(tl, [2, '\v(a \zsif .*){2}', 'a if then a if last', 'if last', 'a if 

last'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\>\zs.', 'aword. ', '.'])
:call add(tl, [2, '\s\+\ze\[/\|\s\zs\s\+', 'is   [a t', '  '])
:"
:"""" Tests for \@= and \& features
:call add(tl, [2, 'abc\@=', 'abc', 'ab'])
:call add(tl, [2, 'abc\@=cd', 'abcd', 'abcd'])
:call add(tl, [2, 'abc\@=', 'ababc', 'ab'])
:" will never match, no matter the input text
:call add(tl, [2, 'abcd\@=e', 'abcd'])
:" will never match
:call add(tl, [2, 'abcd\@=e', 'any text in here ... '])
:call add(tl, [2, '\v(abc)@=..', 'xabcd', 'ab', 'abc'])
:call add(tl, [2, '\(.*John\)\@=.*Bob', 'here is John, and here is B'])
:call add(tl, [2, '\(John.*\)\@=.*Bob', 'John is Bobs friend', 'John is Bob', '

John is Bobs friend'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\<\S\+\())\)\@=', '$((i=i+1))', 'i=i+1', '))'])
:call add(tl, [2, '.*John\&.*Bob', 'here is John, and here is B'])
:call add(tl, [2, '.*John\&.*Bob', 'John is Bobs friend', 'John is Bob'])
:call add(tl, [2, '\v(test1)@=.*yep', 'this is a test1, yep it is', 'test1, yep

', 'test1'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, 'foo\(bar\)\@!', 'foobar'])
:call add(tl, [2, 'foo\(bar\)\@!', 'foo bar', 'foo'])
:call add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if then else'])
:call add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if else ', 'if else ', ' '])
:call add(tl, [2, '\(foo\)\@!bar', 'foobar', 'bar'])
:call add(tl, [2, '\(foo\)\@!...bar', 'foobar'])
:call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' bar foo '])
:call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo bar '])
:call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo xxx ', 'foo'])
:call add(tl, [2, '[ ]\@!\p\%([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:']

):for pat in [' \ze*', ' \zs*']:call add(tl, [2, '[ ]\@!\p\([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:', 

's'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, 'm\k\+_\@=\%(_\@!\k\)\@<=\k\+e', 'mx__xe', 'mx__xe'])
:call add(tl, [2, '\%(\U\@<=S\k*\|S\l\)R', 'SuR', 'SuR'])
:"
:"""" Combining different tests and features
:call add(tl, [2, '[[:alpha:]]\{-2,6}', '787abcdiuhsasiuhb4', 'ab'])
:call add(tl, [2, '', 'abcd', ''])
:call add(tl, [2, '\v(())', 'any possible text', ''])
:call add(tl, [2, '\v%(ab(xyz)c)', '   abxyzc ', 'abxyzc', 'xyz'])
:call add(tl, [2, '\v(test|)empty', 'tesempty', 'empty', ''])
:call add(tl, [2, '\v(a|aa)(a|aa)', 'aaa', 'aa', 'a', 'a'])
:"
:"""" \%u and friends
:call add(tl, [2, '\%d32', 'yes no', ' '])
:call add(tl, [2, '\%o40', 'yes no', ' '])
:call add(tl, [2, '\%x20', 'yes no', ' '])
:call add(tl, [2, '\%u0020', 'yes no', ' '])
:call add(tl, [2, '\%U00000020', 'yes no', ' '])
:call add(tl, [2, '\%d0', "yes\x0ano", "\x0a"])
:"
:""""" \%[abc]
:call add(tl, [2, 'foo\%[bar]', 'fobar'])
:call add(tl, [2, 'foo\%[bar]', 'foobar', 'foobar'])
:call add(tl, [2, 'foo\%[bar]', 'fooxx', 'foo'])
:call add(tl, [2, 'foo\%[bar]', 'foobxx', 'foob'])
:call add(tl, [2, 'foo\%[bar]', 'foobaxx', 'fooba'])
:call add(tl, [2, 'foo\%[bar]', 'foobarxx', 'foobar'])
:call add(tl, [2, 'foo\%[bar]x', 'foobxx', 'foobx'])
:call add(tl, [2, 'foo\%[bar]x', 'foobarxx', 'foobarx'])
:call add(tl, [2, '\%[bar]x', 'barxx', 'barx'])
:call add(tl, [2, '\%[bar]x', 'bxx', 'bx'])
:call add(tl, [2, '\%[bar]x', 'xxx', 'x'])
:call add(tl, [2, 'b\%[[ao]r]', 'bar bor', 'bar'])
:call add(tl, [2, 'b\%[[]]r]', 'b]r bor', 'b]r'])
:call add(tl, [2, '@\%[\w\-]*', '<http://john.net/pandoc/>[@pandoc]', '@pandoc'

]):for pat in [' \ze*', ' \zs*']:"
:"""" Alternatives, must use first longest match
:call add(tl, [2, 'goo\|go', 'google', 'goo'])
:call add(tl, [2, '\<goo\|\<go', 'google', 'goo'])
:call add(tl, [2, '\<goo\|go', 'google', 'goo'])
:"
:"""" Back references
:call add(tl, [2, '\(\i\+\) \1', ' abc abc', 'abc abc', 'abc'])
:call add(tl, [2, '\(\i\+\) \1', 'xgoo goox', 'goo goo', 'goo'])
:call add(tl, [2, '\(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7

\8\9', 'xabcddefghiabcddefghix', 'abcddefghiabcddefghi', 'a', 'b', 'c', 'dd', 'e

', 'f', 'g', 'h', 'i'])
:for pat in [' \ze*', ' \zs*']
:  try:call add(tl, [2, '\(\d*\)a \1b', ' a b ', 'a b', ''])
:call add(tl, [2, '^.\(.\).\_..\1.', "aaa\naaa\nb", "aaa\naaa", 'a'])
:call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.com', 'foo.bat/foo

.com', 'bat'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.bat'])
:call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<=$', 'foo.bat/foo.bat', 'foo.bat/foo

.bat', 'bat', 'bat'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}', '2013-06-27${0}', '$

{0}', '0'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '^\(a*\)\1$', 'aaaaaaaa', 'aaaaaaaa', 'aaaa'])
:call add(tl, [2, '^\(a\{-2,}\)\1\+$', 'aaaaaaaaa', 'aaaaaaaaa', 'aaa'])
:"
:"""" Look-behind with limit
:call add(tl, [2, '<\@<=span.', 'xxspanxx<spanyyy', 'spany'])
:call add(tl, [2, '<\@1<=span.', 'xxspanxx<spanyyy', 'spany'])
:call add(tl, [2, '<\@2<=span.', 'xxspanxx<spanyyy', 'spany'])
:call add(tl, [2, '\(<<\)\@<=span.', 'xxspanxxxx<spanxx<<spanyyy', 'spany', '<<

'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(<<\)\@1<=span.', 'xxspanxxxx<spanxx<<spanyyy'])
:call add(tl, [2, '\(<<\)\@2<=span.', 'xxspanxxxx<spanxx<<spanyyy', 'spany', '<

<'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(foo\)\@<!bar.', 'xx foobar1 xbar2 xx', 'bar2'])
:"
:" look-behind match in front of a zero-width item
:call add(tl, [2, '\v\C%(<Last Changed:\s+)@<=.*$', '" test header'])
:call add(tl, [2, '\v\C%(<Last Changed:\s+)@<=.*$', '" Last Changed: 1970', '19

70'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(foo\)\@<=\>', 'foobar'])
:call add(tl, [2, '\(foo\)\@<=\>', 'barfoo', '', 'foo'])
:call add(tl, [2, '\(foo\)\@<=.*', 'foobar', 'bar', 'foo'])
:"
:" complicated look-behind match
:call add(tl, [2, '\(r\@<=\|\w\@<!\)\/', 'x = /word/;', '/'])
:call add(tl, [2, '^[a-z]\+\ze \&\(asdf\)\@<!', 'foo bar', 'foo'])
:"
:""""" \@>
:call add(tl, [2, '\(a*\)\@>a', 'aaaa'])
:call add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa'])
:call add(tl, [2, '^\(.\{-}b\)\@>.', '  abcbd', '  abc', '  ab'])
:call add(tl, [2, '\(.\{-}\)\(\)\@>$', 'abc', 'abc', 'abc', ''])
:" TODO: BT engine does not restore submatch after failure
:call add(tl, [1, '\(a*\)\@>a\|a\+', 'aaaa', 'aaaa'])
:"
:"""" "\_" prepended negated collection matches EOL
:call add(tl, [2, '\_[^8-9]\+', "asfi\n9888", "asfi\n"])
:call add(tl, [2, '\_[^a]\+', "asfi\n9888", "sfi\n9888"])
:"
:"""" Requiring lots of states.
:call add(tl, [2, '[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}', "

12345678-1234-1234-1234-123456789012 ", "12345678-1234-1234-1234-123456789012",

"1234-"])
:for pat in [' \ze*', ' \zs*']
:  try:"
:"""" Skip adding state twice
:call add(tl, [2, '^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=', "#if FOO", 

"#if", ' FOO'])
:for pat in [' \ze*', ' \zs*']:"
:""" Test \%V atom
:call add(tl, [2, '\%>70vGesamt', 'Jean-Michel Charlier & Victor Hubinon\Gesamt

ausgabe [Salleck]    Buck Danny {Jean-Michel Charlier & Victor Hubinon}\Gesamtau

sgabe', 'Gesamt'])
:for pat in [' \ze*', ' \zs*']
:  try:"
:"""" Run the tests
:"
:for t in tl

:  :  let re = t[0]

:  :  let pat = t[1]

:  :  let text = t[2]

:  :  let matchidx = 3

:  :  for engine in [0, 1, 2]

:    :    if engine == 2 && re == 0 || engine == 1 && re == 1

:      :      continue

:      :    endif

:    :    let &regexpengine = engine

:    :    try

:      :      let l = matchlist(text, pat)

:      :    catch

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", caused an exception: \"' . v:exception . '\"'

:      :    endtry

:    :" check the match itself

:    :    if len(l) == 0 && len(t) > matchidx

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", did not match, expected: \"' . t[matchidx] . '\"'

:      :    elseif len(l) > 0 && len(t) == matchidx

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", match: \"' . l[0] . '\", expected no match'

:      :    elseif len(t) > matchidx && l[0] != t[matchidx]

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te
t . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"'

:      :    else

:      :      $put ='OK ' . engine . ' - ' . pat

:      :    endif

:    :    if len(l) > 0

:      :"   check all the nine submatches

:      :      for i in range(1, 9)

::        if len(t) <= matchidx + i

::          let e = ''

::        else

::          let e = t[matchidx + i]

::        endif

::        if l[i] != e

::          $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: 
"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"'

::        endif

::      endfor

:      :      unlet i

:      :    endif

:    :  endfor

:  :endfor
OK 0 - ^\(.\{-}b\)\@>.
OK 1 - ^\(.\{-}b\)\@>.
OK 2 - ^\(.\{-}b\)\@>.
OK 0 - \(.\{-}\)\(\)\@>$
OK 1 - \(.\{-}\)\(\)\@>$
OK 2 - \(.\{-}\)\(\)\@>$
OK 0 - \(a*\)\@>a\|a\+
OK 2 - \(a*\)\@>a\|a\+
OK 0 - \_[^8-9]\+
OK 1 - \_[^8-9]\+
OK 2 - \_[^8-9]\+
OK 0 - \_[^a]\+
OK 1 - \_[^a]\+
OK 2 - \_[^a]\+
OK 0 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
OK 1 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
OK 2 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
OK 0 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
OK 1 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
OK 2 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
OK 0 - \%>70vGesamt
OK 1 - \%>70vGesamt
OK 2 - \%>70vGesamt

:unlet t tl e l
:"
:"""""" multi-line tests """"""""""""""""""""
:let tl = []
:"
:"""" back references
:call add(tl, [2, '^.\(.\).\_..\1.', ['aaa', 'aaa', 'b'], ['XX', 'b']])
:call add(tl, [2, '\v.*\/(.*)\n.*\/\1$', ['./Dir1/Dir2/zyxwvuts.txt', './Dir1/D

ir2/abcdefgh.bat', '', './Dir1/Dir2/file1.txt', './OtherDir1/OtherDir2/file1.txt

'], ['./Dir1/Dir2/zyxwvuts.txt', './Dir1/Dir2/abcdefgh.bat', '', 'XX']])
OK 0 - ^\(.\{-}b\)\@>.
OK 1 - ^\(.\{-}b\)\@>.
:"
:"""" line breaks
:call add(tl, [2, '\S.*\nx', ['abc', 'def', 'ghi', 'xjk', 'lmn'], ['abc', 'def'

, 'XXjk', 'lmn']])
OK 0 - ^\(.\{-}b\)\@>.
:"
:" Check that \_[0-9] matching EOL does not break a following \>
:call add(tl, [2, '\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)

\.\)\{3\}\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>', ['', 'loca

lnet/192.168.0.1', ''], ['', 'localnet/XX', '']])
OK 0 - ^\(.\{-}b\)\@>.
OK 1 - ^\(.\{-}b\)\@>.
:"
:" Check a pattern with a line break and ^ and $
:call add(tl, [2, 'a\n^b$\n^c', ['a', 'b', 'c'], ['XX']])
:"
:call add(tl, [2, '\(^.\+\n\)\1', [' dog', ' dog', 'asdf'], ['XXasdf']])
:"
:"""" Run the multi-line tests
:"
:$put ='multi-line tests'

multi-line tests
:for t in tl

:  :  let re = t[0]

:  :  let pat = t[1]

:  :  let before = t[2]

:  :  let after = t[3]

:  :  for engine in [0, 1, 2]

:    :    if engine == 2 && re == 0 || engine == 1 && re ==1

:      :      continue

:      :    endif

:    :    let &regexpengine = engine

:    :    new

:    :    call setline(1, before)

:    :    exe '%s/' . pat . '/XX/'

:    :    let result = getline(1, '$')

:    :    q!

:    :    if result != after

:      :      $put ='ERROR: pat: \"' . pat . '\", text: \"' . string(before) . 

'\", expected: \"' . string(after) . '\", got: \"' . string(result) . '\"'

:      :    else

:      :      $put ='OK ' . engine . ' - ' . pat

:      :    endif

:    :  endfor

:  :endfor
OK 2 - \%>70vGesamt
multi-line tests
OK 0 - ^.\(.\).\_..\1.
OK 1 - ^.\(.\).\_..\1.
OK 2 - ^.\(.\).\_..\1.
OK 0 - \v.*\/(.*)\n.*\/\1$
OK 1 - \v.*\/(.*)\n.*\/\1$
OK 2 - \v.*\/(.*)\n.*\/\1$
OK 0 - \S.*\nx
OK 1 - \S.*\nx
OK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

:unlet t tl
:"
:" Check that using a pattern on two lines doesn't get messed up by using
:" matchstr() with \ze in between.
:set re=0
/^Substitute here
search hit BOTTOM, continuing at TOP:    let l = matchlist('x x', pat)
:    $put ='E888 NOT detected for ' . pat
:  catch
:    $put ='E888 detected for ' . pat
:  endtry
:endfor
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
ENDTEST

Substitute here:
<T="">Ta 5</Title>
<T="">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

search hit BOTTOM, continuing at TOP:.+1,.+2s/""/\='"'.matchstr(getline("."), '\d\+\ze<').'"'
5">Ta 5</Title>
<T="7">Ac 7</Title>
/^Substitute here
search hit BOTTOM, continuing at TOP:.+1,.+2yank
OK 2 - \%>70vGesamt
multi-line tests
OK 0 - ^.\(.\).\_..\1.
OK 1 - ^.\(.\).\_..\1.
OK 2 - ^.\(.\).\_..\1.
OK 0 - \v.*\/(.*)\n.*\/\1$
OK 1 - \v.*\/(.*)\n.*\/\1$
OK 2 - \v.*\/(.*)\n.*\/\1$
OK 0 - \S.*\nx
OK 1 - \S.*\nx
OK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1


<T="5">Ta 5</Title>

:"
:"
:" Check a pattern with a look beind crossing a line boundary
/^Behind:
search hit BOTTOM, continuing at TOP:  endtry
:endfor
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
ENDTEST

Substitute here:
<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

Visual:
thexe the thexethe
andaxand andaxand
oooxofor foroxooo
search hit BOTTOM, continuing at TOP/\(<\_[xy]\+\)\@3<=start
:.yank
OK 1 - ^.\(.\).\_..\1.
OK 2 - ^.\(.\).\_..\1.
OK 0 - \v.*\/(.*)\n.*\/\1$
OK 1 - \v.*\/(.*)\n.*\/\1$
OK 2 - \v.*\/(.*)\n.*\/\1$
OK 0 - \S.*\nx
OK 1 - \S.*\nx
OK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>


xxstart3

:"
:"
:" Check matching Visual area
/^Visual:
search hit BOTTOM, continuing at TOP<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

Visual:
thexe the thexethe
andaxand andaxand
oooxofor foroxooo
oooxofor foroxooo

Marks:
asdfSasdfsadfEasdf
asdfSas
dfsadfEasdf

Results of test64:
search hit BOTTOM, continuing at TOP
thexe the the:'<,'>s/\%Ve/E/g
3 substitutions on 1 linexE thE thE

andaxand andaxand 
:'<,'>s/\%Va/A/g
6 substitutions on 1 lineAndAxAnd AndAxAnd
oooxofor forox
oooxofor foro:'<,'>s/\%Vo/O/g
8 substitutions on 2 linesxOfOr fOrOx
oooxOfOr fOrO
:/^Visual/+1,/^Visual/+4yank
search hit BOTTOM, continuing at TOP
4 lines yankedOK 0 - \v.*\/(.*)\n.*\/\1$
OK 1 - \v.*\/(.*)\n.*\/\1$
OK 2 - \v.*\/(.*)\n.*\/\1$
OK 0 - \S.*\nx
OK 1 - \S.*\nx
OK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3


4 more lines
thexE thE thExethe4 more lines:"
:"
:" Check matching marks
/^Marks:
search hit BOTTOM, continuing at TOPasdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

Visual:
thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxooo

Marks:
asdfSasdfsadfEasdf
asdfSas
dfsadfEasdf

Results of test64:
OK 0 - ab
OK 1 - ab
OK 2 - ab
OK 0 - b
OK 1 - b
OK 2 - b
search hit BOTTOM, continuing at TOP
asdf:.-4,.+6s/.\%>'s.*\%<'e../here/
hereasdf
asdf
dfsa
dfsadf:.-4,.+6s/.\%>'s\_.*\%<'e../again/

asdfagainasdfOK 0 - bc*:/^Marks:/+1,/^Marks:/+3yank
search hit BOTTOM, continuing at TOP
3 lines yankedOK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3

thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxooo


3 more lines

asdfhereasdf
asdfagainasdf3 more lines:"
:"
:" Check patterns matching cursor position.
:func! Postest()

:   new

:   call setline(1, ['ffooooo', 'boboooo', 'zoooooo', 'koooooo', 'moooooo', "\t

\t\tfoo", 'abababababababfoo', 'bababababababafoo', '********_', '        xxxxxx

xxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxx xx xxxx

xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxx xxxxxxxxxx

xxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxx xxxxxxxxxxx

x xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx xxxxxxxxx xxxx

xxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxx xxx xxx xx

xxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx xxxxxxxxxxxx x

xxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxxxxx

xxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx'])

:   call setpos('.', [0, 1, 0, 0])

:   s/\%>3c.//g

:   call setpos('.', [0, 2, 4, 0])

:   s/\%#.*$//g

:   call setpos('.', [0, 3, 0, 0])

:   s/\%<3c./_/g

:   %s/\%4l\%>5c./_/g

:   %s/\%6l\%>25v./_/g

:   %s/\%>6l\%3c./!/g

:   %s/\%>7l\%12c./?/g

:   %s/\%>7l\%<9l\%>5v\%<8v./#/g

:   $s/\%(|\u.*\)\@<=[^|\t]\+$//ge

:   1,$yank

:   quit!

:  endfunc
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3

thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxooo

asdfhereasdf
asdfagainasdf255\
OK 0 - a\n^b$\n^cOK 1 - a\n^b$\n^c2
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2<T="5">Ta 5</Title>
<T="7">Ac 7</Title>xxstart3thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooooooxOfOr fOrOxoooasdfhereasdfasdfagainasdf~
-0-
:set re=0
:call Postest()
4 substitutions on 4 lines

10 lines yanked

Press ENTER or type command to continue:put
10 more lines

Press ENTER or type command to continueoooxOfOr fOrOxooo

asdfhereasdf
asdfagainasdf-0-ffobob__ooooo
koooo__moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
-1-
:set re=1
:call Postest()
4 substitutions on 4 lines

10 lines yanked

Press ENTER or type command to continue:put
10 more lines

Press ENTER or type command to continue-1-
ffo
bob
__ooooo
koooo__
moooooo
   f__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxx xxxx xx xxxxxxxx xxx xxxxxxx~~~~~-2-:set re=2
:call Postest()
4 substitutions on 4 lines

10 lines yanked

Press ENTER or type command to continue:put
10 more lines

Press ENTER or type command to continue:"
-2-
ffo
bob~:" start and end of buffer
/\%^
search hit BOTTOM, continuing at TOPTest for regexp patterns without multi-byte support.
See test95 for multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
search hit BOTTOM, continuing at TOP-2-
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
~
~
~
~
~Test:"
OK 2 - \v(a*)+
OK 0 - \v((ab)+)+
OK 1 - \v((ab)+)+
OK 2 - \v((ab)+)+
OK 0 - \v(((ab)+)+)+
OK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(((ab)+)+)+
OK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(a{0,2})+
OK 1 - \v(a{0,2})+
OK 2 - \v(a{0,2})+
OK 0 - \v(a*)+
OK 1 - \v(a*)+
OK 2 - \v(a*)+
OK 0 - \v((a*)+)+
OK 1 - \v((a*)+)+
OK 2 - \v((a*)+)+
OK 0 - \v((ab)*)+
OK 1 - \v((ab)*)+
OK 2 - \v((ab)*)+
OK 0 - \va{1,3}/\%^..
search hit BOTTOM, continuing at TOPTest for regexp patterns without multi-byte support.
See test95 for multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
search hit BOTTOM, continuing at TOP-2-
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
Test
~
~
~
~Testt END:"
OK 0 - \v((ab)+)+
OK 1 - \v((ab)+)+
OK 2 - \v((ab)+)+
OK 0 - \v(((ab)+)+)+
OK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(((ab)+)+)+
OK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(a{0,2})+
OK 1 - \v(a{0,2})+
OK 2 - \v(a{0,2})+
OK 0 - \v(a*)+
OK 1 - \v(a*)+
OK 2 - \v(a*)+
OK 0 - \v((a*)+)+
OK 1 - \v((a*)+)+
OK 2 - \v((a*)+)+
OK 0 - \v((ab)*)+
OK 1 - \v((ab)*)+
OK 2 - \v((ab)*)+
OK 0 - \va{1,3}
OK 1 - \va{1,3}/\%$
-2-
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
Test
Test END
~
~
~:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
:call add(tl, [2, 'ab', 'aab', 'ab'])
:call add(tl, [2, 'b', 'abcdef', 'b'])
:call add(tl, [2, 'bc*', 'abccccdef', 'bcccc'])
:call add(tl, [2, 'bc\{-}', 'abccccdef', 'b'])
:call add(tl, [2, 'bc\{-}\(d\)', 'abccccdef', 'bccccd', 'd'])
:call add(tl, [2, 'bc*', 'abbdef', 'b'])
:call add(tl, [2, 'c*', 'ccc', 'ccc'])
:call add(tl, [2, 'bc*', 'abdef', 'b'])/..\%$
-2-
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
Test
Test END
~
~
~
ENE

:"
:"
:" Check for detecting error
:set regexpengine=2
:for pat in [' \ze*', ' \zs*']

:  :  try

:    :    let l = matchlist('x x', pat)

:    :    $put ='E888 NOT detected for ' . pat

:    :  catch

:    :    $put ='E888 detected for ' . pat

:    :  endtry

:  :endfor
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?ba
**!*****_  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxxxxxxx xxx xxxxxxx xxxxxxxxx  xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxx xxxx xxx xxxx xxx xxx xxxxxx x xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x x xx xxxxxx xxxxxxx  xxxxxxxxxx xxxxxxxxx xxx xxx xxxxxxxx   xxxx xxx xxxxxx xxxxx xxxxx xx   xxxxxxxxxxxx xxxx xxxxxxxxx xxxxx xxxxx xx xxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxTestEND
EN888 detected for  \ze*
E888 detected for  \zs*
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 1107 lines, 22167 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test64 = test61; then \
#	  if diff test.out test64.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test64.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test64.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test65.failed test.ok test.out X* viminfo
cp test65.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test65.in
[?1h="test65.in" 95 lines, 2153 charactersTest for floating point and logical operators.

STARTTEST
:so small.vim
:if !has("float")
:  e! test.ok
:  wq! test.out
:endif
:"
:$put =printf('%f', 123.456)
:$put =printf('%e', 123.456)
:$put =printf('%g', 123.456)
:" check we don't crash on division by zero
:echo 1.0 / 0.0
:$put ='+='
:let v = 1.234
:let v += 6.543
:$put =printf('%g', v)
:let v = 1.234
:let v += 5
:$put =printf('%g', v)
:let a = 5
:let a += 3.333:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for floating point and logical operators./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 89 lines, 2067 characters written:set ff& cpo+=A
/ENDTEST:$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

Results of test65:


:so! Xdotest
:so small.vim
:if !has("float")

:  :  e! test.ok

:  :  wq! test.out

:  :endif
:$put =float2nr(123.456)
:$put =float2nr(-123.456)
:$put ='AND'

:"
:$put =printf('%f', 123.456)

123.456000
:$put =printf('%e', 123.456)

1.234560e+02
:$put =printf('%g', 123.456)

123.456
:" check we don't crash on division by zero
:echo 1.0 / 0.0
inf:$put ='+='

+=
:let v = 1.234
:let v += 6.543
:$put =printf('%g', v)

7.777
:let v = 1.234
:let v += 5
:$put =printf('%g', v)

6.234
:let a = 5
:let a += 3.333
:$put =string(a)

8.333
:$put ='=='

==
:let v = 1.234
:$put =v == 1.234

1
:$put =v == 1.2341

0
:$put ='add-subtract'

add-subtract
:$put =printf('%g', 4 + 1.234)

5.234
:$put =printf('%g', 1.234 - 8)

-6.766
:$put ='mult-div'

mult-div
:$put =printf('%g', 4 * 1.234)

4.936
:$put =printf('%g', 4.0 / 1234)

0.003241
:$put ='dict'

dict
:$put =string({'x': 1.234, 'y': -2.0e20})

{'x': 1.234, 'y': -2.0e20}
:$put ='list'

list
:$put =string([-123.4, 2.0e-20])

[-123.4, 2.0e-20]
:$put ='abs'

abs
:$put =printf('%d', abs(1456))

1456
:$put =printf('%d', abs(-4))

4
:$put =printf('%d', abs([1, 2, 3]))
E745: Using a List as a Number
-1
:$put =printf('%g', abs(14.56))

14.56
:$put =printf('%g', abs(-54.32))

54.32
:$put ='ceil'

ceil
:$put =printf('%g', ceil(1.456))

2.0
:$put =printf('%g', ceil(-5.456))

-5.0
:$put =printf('%g', ceil(-4.000))

-4.0
:$put ='floor'

floor
:$put =printf('%g', floor(1.856))

1.0
:$put =printf('%g', floor(-5.456))

-6.0
:$put =printf('%g', floor(4.0))

4.0
:$put ='log10'

log10
:$put =printf('%g', log10(1000))

3.0
:$put =printf('%g', log10(0.01000))

-2.0
:$put ='pow'

pow
:$put =printf('%g', pow(3, 3.0))

27.0
:$put =printf('%g', pow(2, 16))

65536.0
:$put ='round'

round
:$put =printf('%g', round(0.456))

0.0
:$put =printf('%g', round(4.5))

5.0
:$put =printf('%g', round(-4.50))

-5.0
:$put ='sqrt'

sqrt
:$put =printf('%g', sqrt(100))

10.0
:echo sqrt(-4.01)
nan:$put ='str2float'

str2float
:$put =printf('%g', str2float('1e40'))

1.0e40
:$put ='trunc'

trunc
:$put =printf('%g', trunc(1.456))

1.0
:$put =printf('%g', trunc(-5.456))

-5.0
:$put =printf('%g', trunc(4.000))

4.0
:$put ='float2nr'

float2nr
:$put =float2nr(123.456)

123
:$put =float2nr(-123.456)

-123
:$put ='AND'

AND
:$put =and(127, 127)

127
:$put =and(127, 16)

16
:$put =and(127, 128)

0
:$put ='OR'

OR
:$put =or(16, 7)

23
:$put =or(8, 7)

15
:$put =or(0, 123)

123
:$put ='XOR'

XOR
:$put =xor(127, 127)

0
:$put =xor(127, 16)

111
:$put =xor(127, 128)

255
:$put ='invert'

invert
:$put =and(invert(127), 65535)

65408
:$put =and(invert(16), 65535)

65519
:$put =and(invert(128), 65535)

65407
:$put =invert(1.0)
E805: Using a Float as a Number
0
:/^Results/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 73 lines, 430 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test65 = test61; then \
#	  if diff test.out test65.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test65.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test65.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test66.failed test.ok test.out X* viminfo
cp test66.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test66.in
[?1h="test66.in" 33 lines, 509 charactersTest for visual block shift and tab characters.

STARTTEST
:so small.vim
/^one
fe^V4jR^[ugvr1:'<,'>w! test.out
/^abcdefgh
^V4jI    ^[j<<11|D
7|a^[
7|a^[
7|a^[4k13|^V4j<
:$-5,$w >> test.out
:$-4,$s/\s\+//g
^V4kI    ^[j<<
7|a^[
7|a^[
7|a^[4k13|^V4j3<
:$-4,$w >> test.out
:qa!
ENDTEST

one two three:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 16 lines, 234 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^one
on



e
one two three
one two three
one two three
one two three
4 fewer linesabcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyzmore lines; before #1  0 seconds agoone two three
one two three
one two threeone two threeone two threee
one
one
one
on1
on1
on1
on1
on1:'<,'>w! test.out
"test.out" [New File] 5 lines, 70 characters written/^abcdefgh


abcdefghijklmnopqrstuvwxyz



a
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
a
a
a
a    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyzc         defghijklmnopqrstuvwxyzc            defghijklmnopqrstuvwxyzc         defghijklmnopqrstuvwxyzi  
5 lines <ed 1 timeidefghijklmnopqrstuvwxyzdefghijklmnopqrstuvwxyzdefghijklmnopqrstuvwxyz:$-5,$w >> test.out
"test.out"6 lines, 151 characters appended:$-4,$s/\s\+//g
7 substitutions on 4 linesabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyza
a
a
a
a
a
a
a    abcdefghijklmnopqrstuvwxyz
    abcdefghij
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
abcdefghij
    abc         defghijklmnopqrstuvwxyzc                       defghijklmnopqrstuvwxyzc                 defghijklmnopqrstuvwxyzi  
5 lines <ed 3 timesidefghijklmnopqrstuvwxyz    defghijklmnopqrstuvwxyzdefghijklmnopqrstuvwxyz:$-4,$w >> test.out
"test.out"5 lines, 147 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test66 = test61; then \
#	  if diff test.out test66.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test66.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test66.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test67.failed test.ok test.out X* viminfo
cp test67.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test67.in
[?1h="test67.in" 33 lines, 1109 charactersTest that groups and patterns are tested correctly when calling exists() for
autocommands.

STARTTEST
:so small.vim
:let results=[]
:augroup auexists
:augroup END
:call add(results, "##BufEnter: " . exists("##BufEnter"))
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:au BufEnter * let g:entered=1
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:augroup auexists
:au BufEnter * let g:entered=1
:augroup END
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:au BufEnter *.test let g:entered=1
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:edit testfile.test
:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:au BufEnter <buffer> let g:entered=1:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test that groups and patterns are tested correctly when calling exists() for/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 27 lines, 998 characters written:set ff& cpo+=A
/ENDTEST








:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:edit testfile2.test
:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:e test.out
:call append(0, results)
:$d
:w
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:let results=[]
:augroup auexists
:augroup END
:call add(results, "##BufEnter: " . exists("##BufEnter"))
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:au BufEnter * let g:entered=1
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:augroup auexists
:au BufEnter * let g:entered=1
:augroup END
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:au BufEnter *.test let g:entered=1
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:edit testfile.test
"testfile.test" [New File]~~~~~~~~~~~~~~~~~~~~~
~:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:au BufEnter <buffer> let g:entered=1
:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:edit testfile2.test
"testfile2.test" [New File]:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:e test.out
"test.out" [New File]:call append(0, results)
##BufEnter: 1
#BufEnter: 0
#BufEnter: 1
#auexists#BufEnter: 0
#auexists#BufEnter: 1
#BufEnter#*.test: 0
#BufEnter#*.test: 1
#BufEnter#<buffer>: 0
#BufEnter#<buffer>: 1
#BufEnter#<buffer>: 0:$d
~:w
"test.out" [New File] 10 lines, 190 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test67 = test61; then \
#	  if diff test.out test67.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test67.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test67.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test68.failed test.ok test.out X* viminfo
cp test68.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test68.in
[?1h="test68.in" 131 lines, 1004 charactersTest for text formatting.

Results of test68:

STARTTEST
:so small.vim
/^{/+1
:set noai tw=2 fo=t
gRa b^[
ENDTEST

{


}

STARTTEST
/^{/+1
:set ai tw=2 fo=tw
gqgqjjllab^[
ENDTEST

{:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for text formatting./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 4 lines, 48 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^{/+1
:set noai tw=2 fo=t
a
b
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 38 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
/^{/+1

a  b
:set ai tw=2 fo=tw

b

aa 
b
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 4 lines, 34 characters written:set ff& cpo+=A

/ENDTEST



:set tw=3 fo=t
gqgqo
a ^V^A^[
ENDTEST

:so! Xdotest
/^{/+1


{
a ^A
:set tw=3 fo=t

^A


a
^A

}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 58 characters written:set ff& cpo+=A

/ENDTEST




:set tw=2 fo=tcq1 comments=:#
gqgqjgqgqo
a b
#a b^[
ENDTEST

:so! Xdotest
/^{/+1


{
a b
:set tw=2 fo=tcq1 comments=:#

#a b


a b
#a b
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/normal.o normal.c
3 lines, 46 characters written:set ff& cpo+=A

/ENDTEST


:set tw=5 fo=tcn comments=:#
A b^[jA b^[
ENDTEST

:so! Xdotest
/^{/+1


{
  1 a
:set tw=5 fo=tcn comments=:#

b
# 1 a
#   b
}
/^STARTTEST


STARTTEST
/^{/+3

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 35 characters written:set ff& cpo+=A

/ENDTEST


:set tw=5 fo=t2a si
i  ^[A_^[
ENDTEST

:so! Xdotest
/^{/+3




{

  x a
  b
:set tw=5 fo=t2a si
    b b_
c
/^STARTTEST




}

STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 40 characters written:set ff& cpo+=A

/ENDTEST


:set tw=5 fo=qn comments=:#
gwap
ENDTEST

:so! Xdotest
/^{/+1


{
# 1 a b
:set tw=5 fo=qn comments=:#

#   b
/^STARTTEST



}

STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 40 characters written:set ff& cpo+=A

/ENDTEST


:set tw=5 fo=q2 comments=:#
gwap
ENDTEST

:so! Xdotest
/^{/+1


{
# x
:set tw=5 fo=q2 comments=:#
# x a

#   b
/^STARTTEST



}

STARTTEST
/^{/+2

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 26 characters written:set ff& cpo+=A

/ENDTEST


:set tw& fo=a
I^^^[
ENDTEST

:so! Xdotest
/^{/+2



{
   1aa
   2bb
:set tw& fo=a
1aa ^^2bb }STARTTEST
/^STARTTEST

/mno pqr/
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 69 characters written:set ff& cpo+=A

/ENDTEST


:setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/
A vwx yz^[
ENDTEST

:so! Xdotest
/mno pqr/


/* abc def ghi jkl
 *    mno pqr stu
:setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/

*    vwx yz
*/
/^STARTTEST


STARTTEST
/^#/

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 47 characters written:set ff& cpo+=A

/ENDTEST


:setl tw=12 fo=tqnc comments=:#
A foobar^[
ENDTEST

:so! Xdotest
/^#/

# 1 xxxxx
:setl tw=12 fo=tqnc comments=:#

#   foobar

/^STARTTEST

STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2 lines, 56 characters written:set ff& cpo+=A

/ENDTEST
:1;/^Results/,$wq! test.out

:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
63 fewer lines# 1 a#   b}{
# x a#   b}{ 1aa ^^2bb }/* abc def ghi jkl
 *    mno pqr stu
 *    vwx yz
 */# 1 xxxxx
#   foobar:1;/^Results/,$wq! test.out
"test.out" [New File] 77 lines, 281 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test68 = test61; then \
#	  if diff test.out test68.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test68.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test68.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test69.failed test.ok test.out X* viminfo
cp test69.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test69.in
[?1h="test69.in" 192 lines, 2185 charactersTest for multi-byte text formatting.
Also test, that 'mps' with multibyte chars works.
And test "ra" on multi-byte characters.
Also test byteidx() and byteidxcomp()

STARTTEST
:so mbyte.vim
:set encoding=utf-8
ENDTEST

Results of test69:

STARTTEST
/^{/+1
:set tw=2 fo=t
gqgqjgqgqo
XYZ
abc XYZ^[
ENDTEST

{
XYZ
abc XYZ:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for multi-byte text formatting./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 2 lines, 34 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so mbyte.vim
:set encoding=utf-8
Test for multi-byte text formatting.
Also test, that 'mps' with multibyte chars works.
And test "ra" on multi-byte characters.
Also test byteidx() and byteidxcomp()

STARTTEST
:so mbyte.vim
:set encoding=utf-8
ENDTEST

Results of test69:

STARTTEST
/^{/+1
:set tw=2 fo=t
gqgqjgqgqo
XYZ
abc XYZ^[
ENDTEST

{
XYZ
abc XYZ/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 58 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
/^{/+1
:set tw=2 fo=t


XYZ

XY
Z
abc 
XYZ
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 8 lines, 80 characters written:set ff& cpo+=A

/ENDTEST







:set tw=1 fo=tm
gqgqjgqgqjgqgqjgqgqjgqgqo
X
Xa
X a
XY
X Y^[
ENDTEST

:so! Xdotest
/^{/+1


{
X
:set tw=1 fo=tm

Xa
a
X a

a
XY

Y

X Y

Y



X


X
a


X
a
X

Y
X 
Y

}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 13 lines, 140 characters written:set ff& cpo+=A

/ENDTESTgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
X
Xa
X a
XY
X Y
aX
abX
abcX
abX c
abXY^[
ENDTEST

{
X
Xa
X a
XY
X Y
aX
abX
abcX
abX c
:so! Xdotest
/^{/+1
:set tw=2 fo=tm

a
a
Y

Y 

aX

X

abX

X

abcX

X

abX c


X
c
abXY


X
Y



X


X
a


X
a
X

Y
X 

Y
a

X
ab

X
abc

X
ab


X
c
ab
X
Y

}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 47 characters written:set ff& cpo+=A

/ENDTEST




:set ai tw=2 fo=tm
gqgqjgqgqo
X
Xa^[
ENDTEST

:so! Xdotest
/^{/+1


{
  X
:set ai tw=2 fo=tm
  
Xa
a


X
  
X
  a
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 53 characters written:set ff& cpo+=A

/ENDTEST




:set noai tw=2 fo=tm
gqgqjgqgqo
  X
  Xa^[
ENDTEST

:so! Xdotest
/^{/+1


{
  X
:set noai tw=2 fo=tm
  
Xa
a


X
  
X
a
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 13 lines, 169 characters written:set ff& cpo+=A

/ENDTESTgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
X
Xa
XaY
XY
XYZ
X Y
X YZ
XX
XXa
XXY^[
ENDTEST

{
X
Xa
XaY
XY
XYZ
X Y
X YZ
XX
XXa
:so! Xdotest
/^{/+1
:set tw=2 fo=cqm comments=n:X


XY

XZ



X Z

XX

XXa

XXY



X

Xa
Xa

XY
X
Y
XY

XZ
X 
Y
X Y

X Z
X
X
X
Xa
XXY
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 30 characters written:set ff& cpo+=A

/ENDTEST


:set tw=2 fo=tm
RXa^[
ENDTEST

:so! Xdotest
/^{/+1


{
:set tw=2 fo=tm

X
a
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 34 characters written:set ff& cpo+=A

/ENDTEST


:set mps+=^Vu2018:^Vu2019
d%
ENDTEST

:so! Xdotest
/^{/+1


{
‘two three ’four
:set mps+=^‘:^’
 four
}
/^STARTTEST

STARTTEST
/^ra test

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2 lines, 16 characters written:set ff& cpo+=A

/ENDTEST

jVjra
ENDTEST

:so! Xdotest
/^ra test

ra test
abba
bba 

a
aab 
aaaaaaa 

/^STARTTEST


STARTTEST
:set whichwrap+=h

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 4 lines, 43 characters written:set ff& cpo+=A

/ENDTEST



/^x
dh
:set whichwrap-=h
ENDTEST

:so! Xdotest
:set whichwrap+=h
/^x


áxx

:set whichwrap-=h
/^STARTTEST

STARTTEST
:let a = '.é.' " one char of two bytes

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 9 lines, 548 characters written:set ff& cpo+=A

/ENDTEST












:let b = '.é.' " normal e with composing char
/^byteidx
:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)])
:put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])
/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)])
:let b = '.é.'
:put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])
ENDTEST

:so! Xdotest
:let a = '.é.' " one char of two bytes
:let b = '.eé.' " normal e with composing char
/^byteidx

byteidx
:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), bytei

dx(a, 4)])
:set whichwrap-=h
ENDTESTáxSTARTTEST
:let a = '.é.' " one char of two bytesb = '.é.' " normal e with composing char
/^byteidx:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)]):put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)]):let b = '.é.'put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])ENDTESTbyteidx
[0, 1, 3, 4, -1]
:put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), bytei

dx(b, 4)])
ENDTESTáxSTARTTEST
:let a = '.é.' " one char of two bytesb = '.é.' " normal e with composing char
/^byteidx:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)]):put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)]):let b = '.é.'put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])ENDTESTbyteidx
[0, 1, 3, 4, -1]4, 5
/^byteidxcomp

byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxc

omp(a, 3), byteidxcomp(a, 4)])
áxSTARTTEST
:let a = '.é.' " one char of two bytesb = '.é.' " normal e with composing char
/^byteidx:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)]):put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)]):let b = '.é.'put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])ENDTESTbyteidx
[0, 1, 3, 4, -1]4, 5
byteidxcomp[0, 1, 3, 4, -1]
:let b = '.eé.'
:put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxc

omp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])
STARTTEST
:let a = '.é.' " one char of two bytesb = '.é.' " normal e with composing char
/^byteidx:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)]):put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)]):let b = '.é.'put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])ENDTESTbyteidx
[0, 1, 3, 4, -1]4, 5
byteidxcomp[0, 1, 3, 4, -1]2, 4, 5, -1]
/^STARTTEST


STARTTEST
/^substitute

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2 lines, 75 characters written:set ff& cpo+=A

/ENDTEST

:let y = substitute('123', '\zs', 'a', 'g')    | put =y
ENDTEST

substitute

:so! Xdotest
/^substitute
:let y = substitute('123', '\zs', 'a', 'g')    | put =y


a1a2a3a

/^STARTTEST

STARTTEST

:g/^STARTTEST/.,/^ENDTEST/d
:1;/^Results/,$wq! test.out

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2 lines, 56 characters written:set ff& cpo+=A


/ENDTEST
:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
104 fewer lines{ four}ra test
aaaaaaaáxbyteidx[0, 1, 3, 4, -1]
[0, 1, 4, 5, -1]byteidxcomp
[0, 1, 3, 4, -1]
[0, 1, 2, 4, 5, -1]substitute
a1a2a3a:1;/^Results/,$wq! test.out
"test.out" [New File] 166 lines, 730 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test69 = test61; then \
#	  if diff test.out test69.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test69.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test69.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/misc2.o misc2.c
rm -rf X* test.ok viminfo
rm -rf test70.failed test.ok test.out X* viminfo
cp test70.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test70.in
[?1h="test70.in" 63 lines, 1501 charactersSmoke test for MzScheme interface and mzeval() function

STARTTEST
:so mzscheme.vim
:set nocompatible viminfo+=nviminfo
:function! MzRequire()
:redir => l:mzversion
:mz (version)
:redir END
:if strpart(l:mzversion, 1, 1) < "4"
:" MzScheme versions < 4.x:
:mz (require (prefix vim- vimext))
:else
:" newer versions:
:mz (require (prefix-in vim- 'vimext))
:mz (require r5rs)
:endif
:endfunction
:silent call MzRequire()
:mz (define l '("item0" "dictionary with list OK" "item2"))
:mz (define h (make-hash))
:mz (hash-set! h "list" l)
/^1:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Smoke test for MzScheme interface and mzeval() function/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 55 lines, 1398 characters written:set ff& cpo+=A
/ENDTEST:if l2[2] == l2
:let res = "OK"
:else
:let res = "FAILED: " . l2[2]
:endif
:call setline(search("^3"), "circular test " . res)
:" funcrefs
:mz (define vim:max (vim-eval "function('max')"))
:mz (define m (vim:max '(1 100 8)))
:let m = mzeval('m')
:if m == 100
:let fref_res = "OK"
:else
:let fref_res = "FAILED: " . m
:end
:call append(line('$'), 'funcrefs '. fref_res)
:?^1?,$w! test.out
:qa!
ENDTEST

1 line 1
2 line 2
3 line 3
:so! Xdotest
:so mzscheme.vim
"test.ok" 6 lines, 94 characters

"test.out" [New File] 6 lines, 94 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test70 = test61; then \
#	  if diff test.out test70.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test70.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test70.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test73.failed test.ok test.out X* viminfo
cp test73.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test73.in
[?1h="test73.in" 169 lines, 3647 charactersTests for find completion.

STARTTEST
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xfind directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a stale "Xfind" directory may exist, remove it so that
:" we start from a clean state.
:call delete("Xfind", "rf")
:new
:let cwd=getcwd()
:let test_out = cwd . '/test.out'
:call mkdir('Xfind')
:cd Xfind
:set path=
:find
:exec "w! " . test_out
:close:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for find completion./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 164 lines, 3600 characters written:set ff& cpo+=A
/ENDTEST:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file
:e in/file.txt
:exec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu
:exec "w >>" . test_out
:q
:exec "cd " . cwd
:call delete("Xfind", "rf")
:qa!
ENDTEST


:so! Xdotest
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xfind directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a stale "Xfind" directory may exist, remove it so that
:" we start from a clean state.
:call delete("Xfind", "rf")
:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTESTtest73.in                                                                       :let cwd=getcwd()
:let test_out = cwd . '/test.out'
:call mkdir('Xfind')
:cd Xfind
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfind/<<PKGBUILDDIR>>/src/vim-basic/testdir/test73.in:set path=
:find ...
E345: Can't find file "" in path:exec "w! " . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out"
<d/vim-XFPoUg/vim-8.0.0022/src/vim-basic/testdir/test.out" [New] 0L, 0C written/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out:close
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTEST/<<PKGBUILDDIR>>/src/vim-basic/testdir/test73.in                  :set path=.
:find ...
E32: No file name:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 0L, 0C appended:close
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTEST/<<PKGBUILDDIR>>/src/vim-basic/testdir/test73.in                  :set path=.,,
:find ...
E32: No file name:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 0L, 0C appended:close
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTEST/<<PKGBUILDDIR>>/src/vim-basic/testdir/test73.in                  :set path=./**
:find ...
E32: No file name:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 0L, 0C appended:close
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTEST/<<PKGBUILDDIR>>/src/vim-basic/testdir/test73.in                  :" We shouldn't find any file at this point, test.out must be empty.
:call mkdir('in')
:cd in
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfind/in:call mkdir('path')
:exec "cd " . cwd
/<<PKGBUILDDIR>>/src/vim-basic/testdirtest73.in                                                     :e Xfind/file.txt
"Xfind/file.txt" [New File]Xfind/file.txt-- INSERT --Holy Grail[+]:w
"Xfind/file.txt" [New] 1L, 11C written   :e Xfind/in/file.txt
"Xfind/in/file.txt" [New File]in/file.txt-- INSERT --Jimmy Hoffa[+]:w
"Xfind/in/file.txt" [New] 1L, 12C written   :e Xfind/in/stuff.txt
"Xfind/in/stuff.txt" [New File]stuff.txt-- INSERT --Another Holy Grail[+]:w
"Xfind/in/stuff.txt" [New] 1L, 19C written   :e Xfind/in/path/file.txt
"Xfind/in/path/file.txt" [New File]path/file.txt-- INSERT --E.T.[+]:w
"Xfind/in/path/file.txt" [New] 1L, 5C written   :set path=Xfind/**
:find file..../Xfind/file.txt
"Xfind/file.txt" 1L, 11CHoly Grailfile.txt        :exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 11C appended:find file..../Xfind/file.txt...in/file.txt
"Xfind/in/file.txt" 1L, 12CJimmy Hoffain/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 12C appended:find file..../Xfind/file.txt...in/file.txt...path/file.txt
"Xfind/in/path/file.txt" 1L, 5CE.T.path/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 5C appended:" Rerun the previous three find completions, using fullpath in 'path'
:exec "set path=" . cwd . "/Xfind/**"
:find file..../Xfind/file.txt
"Xfind/file.txt" 1L, 11CHoly Grailfile.txt        :exec "w >>" .  test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 11C appended:find file..../Xfind/file.txt...in/file.txt
"Xfind/in/file.txt" 1L, 12CJimmy Hoffain/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 12C appended:find file..../Xfind/file.txt...in/file.txt...path/file.txt
"Xfind/in/path/file.txt" 1L, 5CE.T.path/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 5C appended:" Same steps again, using relative and fullpath items that point to the same
:" recursive location.
:" This is to test that there are no duplicates in the completion list.
:exec "set path+=Xfind/**"
:find file..../Xfind/file.txt
"Xfind/file.txt" 1L, 11CHoly Grailfile.txt        :exec "w >>" .  test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 11C appended:find file..../Xfind/file.txt...in/file.txt
"Xfind/in/file.txt" 1L, 12CJimmy Hoffain/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 12C appended:find file..../Xfind/file.txt...in/file.txt...path/file.txt
"Xfind/in/path/file.txt" 1L, 5CE.T.path/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 5C appended:find file..../Xfind/file.txt...in/file.txt
"Xfind/in/file.txt" 1L, 12CJimmy Hoffafile.txt     :" Test find completion for directory of current buffer, which at this point
:" is Xfind/in/file.txt.
:set path=.
:find st...uff.txt
"Xfind/in/stuff.txt" 1L, 19CAnother Holy Grailstuff.txt:exec "w >>" .  test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 19C appended:" Test find completion for empty path item ",," which is the current directory
:cd Xfind
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfindin/stuff.txt      /<<PKGBUILDDIR>>/src/vim-basic/testdir/test73.in:set path=,,
:find f...ile.txt...
"file.txt" 1L, 11CHoly Grailfile.txt    :exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 11C appended:" Test shortening of
:"
:"    foo/x/bar/voyager.txt
:"    foo/y/bar/voyager.txt
:"
:" When current directory is above foo/ they should be shortened to (in order
:" of appearance):
:"
:"    x/bar/voyager.txt
:"    y/bar/voyager.txt
:call mkdir('foo')
:cd foo
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfind/foo/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfind/file.txt:call mkdir('x')
:call mkdir('y')
:cd x
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfind/foo/x:call mkdir('bar')
:cd ..
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfind/foo:cd y
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfind/foo/y:call mkdir('bar')
:cd ..
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfind/foo:cd ..
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfindfile.txt                                                           :" We should now be in the Xfind directory
:e foo/x/bar/voyager.txt
"foo/x/bar/voyager.txt" [New File]oo/x/bar/voyager.txt-- INSERT --Voyager 1[+]:w
"foo/x/bar/voyager.txt" [New] 1L, 10C written   :e foo/y/bar/voyager.txt
"foo/y/bar/voyager.txt" [New File]y-- INSERT --Voyager 2[+]:w
"foo/y/bar/voyager.txt" [New] 1L, 10C written   :exec "set path=" . cwd . "/Xfind/**"
:find voyager...x/bar/voyager.txt
"foo/x/bar/voyager.txt" 1L, 10C1x:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 10C appended:find voyager...x/bar/voyager.txt...y
"foo/y/bar/voyager.txt" 1L, 10C2y:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 10C appended:"
:" When current directory is .../foo/y/bar they should be shortened to (in
:" order of appearance):
:"
:"    ./voyager.txt
:"    x/bar/voyager.txt
:cd foo
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfind/fooy/bar/voyager.txt    :cd y
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfind/foo/ybar/voyager.txt  :cd bar
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfind/foo/y/barvoyager.txt    :find voyager..../voyager.txt
"voyager.txt" 1L, 10C:exec "w >> " . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 10C appended:find voyager..../voyager.txt...x/bar/voyager.txt
<ld/vim-XFPoUg/vim-8.0.0022/src/vim-basic/testdir/Xfind/foo/x/bar/voyager.txt"
<XFPoUg/vim-8.0.0022/src/vim-basic/testdir/Xfind/foo/x/bar/voyager.txt" 1L, 10C1<uild/vim-XFPoUg/vim-8.0.0022/src/vim-basic/testdir/Xfind/foo/x/bar/voyager.txt:exec "w >> " . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 10C appended:" Check the opposite too:
:cd ..
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfind/foo/y:cd ..
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfind/foox/bar/voyager.txt                                                              :cd x
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfind/foo/xbar/voyager.txt  :cd bar
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfind/foo/x/barvoyager.txt    :find voyager..../voyager.txt
"voyager.txt" 1L, 10C:exec "w >> " . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 10C appended:find voyager..../voyager.txt...y/bar/voyager.txt
<ld/vim-XFPoUg/vim-8.0.0022/src/vim-basic/testdir/Xfind/foo/y/bar/voyager.txt"
<XFPoUg/vim-8.0.0022/src/vim-basic/testdir/Xfind/foo/y/bar/voyager.txt" 1L, 10C2<uild/vim-XFPoUg/vim-8.0.0022/src/vim-basic/testdir/Xfind/foo/y/bar/voyager.txt:exec "w >> " . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 10C appended:" Check for correct handling of shorten_fname()'s behavior on windows
:exec "cd " . cwd . "/Xfind/in"
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfind/in:find file..../file.txt
"file.txt" 1L, 12CJimmy Hoffafile.txt                                                                       :exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 12C appended:" Test for relative to current buffer 'path' item
:exec "cd " . cwd . "/Xfind/"
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xfindin/file.txt:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
"in/file.txt" 1L, 12C:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file...txt
"in/path/file.txt" 1L, 5CE.T.path/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 5C appended:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file
:e in/file.txt
"in/file.txt" 1L, 12CJimmy Hoffafile.txt     :exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 12C appended:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu...ff.txt
"in/stuff.txt" 1L, 19CAnother Holy Grailstuff.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-basic/testdir/test.out" 1L, 19C appended:q
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:exec "cd " . cwd
/<<PKGBUILDDIR>>/src/vim-basic/testdir:call delete("Xfind", "rf")
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test73 = test61; then \
#	  if diff test.out test73.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test73.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test73.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test75.failed test.ok test.out X* viminfo
cp test75.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test75.in
[?1h="test75.in" 41 lines, 1000 charactersTests for maparg().
Also test utf8 map with a 0x80 byte.

STARTTEST
:so small.vim
:so mbyte.vim
:set cpo-=<
:set encoding=utf8
:" Test maparg() with a string result
:map foo<C-V> is<F4>foo
:vnoremap <script> <buffer> <expr> <silent> bar isbar
:call append('$', maparg('foo<C-V>'))
:call append('$', string(maparg('foo<C-V>', '', 0, 1)))
:call append('$', string(maparg('bar', '', 0, 1)))
:map <buffer> <nowait> foo bar
:call append('$', string(maparg('foo', '', 0, 1)))
:"
:map abc x<char-114>x
:call append('$', maparg('abc'))
:map abc y<S-char-114>y
:call append('$', maparg('abc'))
:"
Go^[:":set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for maparg()./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 34 lines, 919 characters written:set ff& cpo+=A
/ENDTEST















:" Outside of the range, minimum
:inoremap <Char-0x1040> a
:execute "normal a\u1040\<Esc>"
:" Inside of the range, minimum
:inoremap <Char-0x103f> b
:execute "normal a\u103f\<Esc>"
:" Inside of the range, maximum
:inoremap <Char-0xf03f> c
:execute "normal a\uf03f\<Esc>"
:" Outside of the range, maximum
:inoremap <Char-0xf040> d
:execute "normal a\uf040\<Esc>"
:"
:/^eof/+1,$w! test.out
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:so mbyte.vim
:set cpo-=<
:set encoding=utf8
:map abc x<char-114>x
:call append('$', maparg('abc'))
:map abc y<S-char-114>y
:call append('$', maparg('abc'))
:"
Go^[:"
:" Outside of the range, minimum
:inoremap <Char-0x1040> a
:execute "normal a\u1040\<Esc>"
:" Inside of the range, minimum
:inoremap <Char-0x103f> b
:execute "normal a\u103f\<Esc>"
:" Inside of the range, maximum
:inoremap <Char-0xf03f> c
:execute "normal a\uf03f\<Esc>"
:" Outside of the range, maximum
:inoremap <Char-0xf040> d
:execute "normal a\uf040\<Esc>"
:"
:/^eof/+1,$w! test.out
:qa!
ENDTEST

:" Test maparg() with a string result
:map foo<C-V> is<F4>foo
:vnoremap <script> <buffer> <expr> <silent> bar isbar
:call append('$', maparg('foo<C-V>'))
:call append('$', string(maparg('foo<C-V>', '', 0, 1)))
:call append('$', string(maparg('bar', '', 0, 1)))
:map <buffer> <nowait> foo bar
:call append('$', string(maparg('foo', '', 0, 1)))
:"
:map abc x<char-114>x
:call append('$', maparg('abc'))
:map abc y<S-char-114>y
:call append('$', maparg('abc'))
:"










eof
is<F4>foo
{'silent': 0, 'noremap': 0, 'lhs': 'foo<C-V>', 'mode': ' ', 'nowait': 0, 'expr':: 0, 'sid': 0, 'rhs': 'is<F4>foo', 'buffer': 0}
{'silent': 1, 'noremap': 1, 'lhs': 'bar', 'mode': 'v', 'nowait': 0, 'expr': 1, ''sid': 0, 'rhs': 'isbar', 'buffer': 1}
{'silent': 0, 'noremap': 0, 'lhs': 'foo', 'mode': ' ', 'nowait': 1, 'expr': 0, ''sid': 0, 'rhs': 'bar', 'buffer': 1}
xrx
yRy

:"
:" Outside of the range, minimum
:inoremap <Char-0x1040> a
:execute "normal a\u1040\<Esc>"
a:" Inside of the range, minimum
:inoremap <Char-0x103f> b
:execute "normal a\u103f\<Esc>"
b:" Inside of the range, maximum
:inoremap <Char-0xf03f> c
:execute "normal a\uf03f\<Esc>"
c:" Outside of the range, maximum
:inoremap <Char-0xf040> d
:execute "normal a\uf040\<Esc>"
d:"
:/^eof/+1,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 7 lines, 384 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test75 = test61; then \
#	  if diff test.out test75.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test75.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test75.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test76.failed test.ok test.out X* viminfo
cp test76.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test76.in
[?1h="test76.in" 46 lines, 899 charactersTests for completefunc/omnifunc. vim: set ft=vim :

STARTTEST
:"Test that nothing happens if the 'completefunc' opens
:"a new window (no completion, no crash)
:so small.vim
:function! DummyCompleteOne(findstart, base)
:  if a:findstart
:    return 0
:  else
:    wincmd n
:    return ['onedef', 'oneDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteOne
/^one
A^X^U^N^[:q!
:function! DummyCompleteTwo(findstart, base)
:  if a:findstart
:    wincmd n
:    return 0
:  else
:    return ['twodef', 'twoDEF']:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for completefunc/omnifunc. vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 37 lines, 810 characters written:set ff& cpo+=A
/ENDTEST

















:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)
:  if a:findstart
:    return 0
:  else
:    return ['threedef', 'threeDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteThree
/^three
A^X^U^N^[:/^+++/,/^three/w! test.out
:qa!
ENDTEST

:so! Xdotest
:"Test that nothing happens if the 'completefunc' opens
:"a new window (no completion, no crash)
:so small.vim
:function! DummyCompleteOne(findstart, base)

:  :  if a:findstart

:    :    return 0

:    :  else

:    :    wincmd n

:    :    return ['onedef', 'oneDEF']

:    :  endif

:  :endfunction
:    wincmd n
:    return 0
:  else
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
:setlocal completefunc=DummyCompleteOne
/^one


+++
one
E839: Completion function changed window

Pattern not found

Press ENTER or type command to continuePress ENTER or type command to continueone
~~~~~~~~~~
[No Name] [+]                                                                   endifendfunction
:setlocal completefunc=DummyCompleteThree
/^threeA^X^U^N^[:/^+++/,/^three/w! test.out
:qa!ENDTEST+++test76.in [+]                                                                   :q!
:  else
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)
:  if a:findstart
:    return 0
:  else  return ['threedef', 'threeDEF']
:  endifendfunction:setlocal completefunc=DummyCompleteThree
/^threeA^X^U^N^[:/^+++/,/^three/w! test.out
:qa!ENDTEST+++:function! DummyCompleteTwo(findstart, base)

:  :  if a:findstart

:    :    wincmd n

:    :    return 0

:    :  else

:    :    return ['twodef', 'twoDEF']

:    :  endif

:  :endfunction
:  else
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:setlocal completefunc=DummyCompleteTwo
/^two

two
E839: Completion function changed window

E764: Option 'completefunc' is not set

Press ENTER or type command to continue~~~~~~~~~~
[No Name]                                                                       endfunction
:setlocal completefunc=DummyCompleteThree
/^threeA^X^U^N^[:/^+++/,/^three/w! test.out
:qa!ENDTEST+++two
test76.in [+]                                                                   :q!
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)
:  if a:findstart
:    return 0
:  else
:    return ['threedef', 'threeDEF']  endifendfunction:setlocal completefunc=DummyCompleteThree
/^threeA^X^U^N^[:/^+++/,/^three/w! test.out
:qa!ENDTEST+++two:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)

:  :  if a:findstart

:    :    return 0

:    :  else

:    :    return ['threedef', 'threeDEF']

:    :  endif

:  :endfunction
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:setlocal completefunc=DummyCompleteThree
/^three

three
match 1 of 22DEF
:/^+++/,/^three/w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 4 lines, 18 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test76 = test61; then \
#	  if diff test.out test76.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test76.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test76.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test77.failed test.ok test.out X* viminfo
cp test77.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test77.in
[?1h="test77.in" 30 lines, 719 charactersInserts 2 million lines with consecutive integers starting from 1
(essentially, the output of GNU's seq 1 2000000), writes them to Xtest
and writes its cksum to test.out.

We need 2 million lines to trigger a call to mf_hash_grow().  If it would mess
up the lines the checksum would differ.

cksum is part of POSIX and so should be available on most Unixes.
If it isn't available then the test will be skipped.

STARTTEST
:so small.vim
:if !executable("cksum")
: e! test.ok
: w! test.out
: qa!
:endif
:set fileformat=unix undolevels=-1
ggdG
:let i = 1
:while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhileggdd
:w! Xtest:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Inserts 2 million lines with consecutive integers starting from 1/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 288 characters written:set ff& cpo+=A
/ENDTEST





:r !cksum Xtest
:s/\s/ /g
:set fileformat&
:.w! test.out
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:if !executable("cksum")

:  : e! test.ok

:  : w! test.out

:  : qa!

:  :endif
cksum is part of POSIX and so should be available on most Unixes.
If it isn't available then the test will be skipped.

STARTTEST
:set fileformat=unix undolevels=-1
Inserts 2 million lines with consecutive integers starting from 1
(essentially, the output of GNU's seq 1 2000000), writes them to Xtest
and writes its cksum to test.out.

We need 2 million lines to trigger a call to mf_hash_grow().  If it would mess
up the lines the checksum would differ.~~
~~~
~~~
~~~~~~~~~~~~~~
--No lines in buffer--:let i = 1
:while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhil

egcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/eval.o eval.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
:w! Xtest
"Xtest" [New File] 2000000 lines, 14888896 characters written:r !cksum Xtest
1
2
3678979763 14888896 Xtest
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22:s/\s/ /g
:set fileformat&
:.w! test.out
"test.out" [New File] 1 line, 26 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test77 = test61; then \
#	  if diff test.out test77.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test77.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test77.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test79.failed test.ok test.out X* viminfo
cp test79.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test79.in
[?1h="test79.in" 255 lines, 3381 charactersTest for *sub-replace-special* and *sub-replace-expression* on :substitute.
Test for submatch() on :substitue.
Test for *:s%* on :substitute.
Test for :s replacing \n with  line break.

STARTTEST
:so small.vim
ENDTEST

Results of test71:

STARTTEST
:set magic
:set cpo&
/^TEST/
j:s/A/&&/
j:s/B/\&/
j:s/C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/
j:s/D/d/
j:s/E/~/
j:s/F/\~/
j:s/G/\ugg/
j:s/H/\Uh\Eh/:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for *sub-replace-special* and *sub-replace-expression* on :substitute./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/move.o move.c
[New File] 1 line, 14 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 25 lines, 347 characters written:set ff& cpo+=A
/ENDTESTj:s/L/^V^M/
j:s/M/\r/
j:s/N/\^V^M/
j:s/O/\n/
j:s/P/\b/
j:s/Q/\t/
j:s/R/\\/
j:s/S/\c/
j:s/T/^V^@/
j:s/U/\L\uuUu\l\EU/
j:s/V/\U\lVvV\u\Ev/
ENDTEST

TEST_1:
A
B
C123456789
D
E
F
G
H
I
:so! Xdotest
:set magic
:set cpo&
/^TEST/

:s/A/&&/
A

:s/B/\&/
&
:s/C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/
987654321

:s/D/d/
d
:s/E/~/
d
:s/F/\~/
~
:s/G/\ugg/
g

:s/H/\Uh\Eh/
h

:s/I/\lII/
iI

J
:s/J/\LJ\EJ/
jJ

K
:s/K/\Uk\ek/
k

lLl
:s/L/^^M/

l
mMm

:s/M/\r/

m
nNn

:s/N/\^^M/
^Mn

oOo
:s/O/\n/
^@o

pPp
:s/P/\b/
^Hp

qQq
:s/Q/\t/
       q

rRr
:s/R/\\/
\

sSs
:s/S/\c/
c

tTt
:s/T/^^@/
^@t

U
:s/U/\L\uuUu\l\EU/
uuU

V
:s/V/\U\lVvV\u\Ev/
vVVv
/^STARTTEST


STARTTEST
:set nomagic

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 25 lines, 351 characters written:set ff& cpo+=A

/ENDTESTj:s/L/^V^M/
j:s/M/\r/
j:s/N/\^V^M/
j:s/O/\n/
j:s/P/\b/
j:s/Q/\t/
j:s/R/\\/
j:s/S/\c/
j:s/T/^V^@/
j:s/U/\L\uuUu\l\EU/
j:s/V/\U\lVvV\u\Ev/
ENDTEST

TEST_2:
A
B
C123456789
D
E
F
G
H
I
:so! Xdotest
:set nomagic
:set cpo&
/^TEST/

:s/A/&&/
&&

:s/B/\&/

:s/\mC\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/
987654321

:s/D/d/
d
:s/E/~/
~
:s/F/\~/
~
:s/G/\ugg/
g

:s/H/\Uh\Eh/
h

:s/I/\lII/
iI

J
:s/J/\LJ\EJ/
jJ

K
:s/K/\Uk\ek/
k

lLl
:s/L/^^M/

l
mMm

:s/M/\r/

m
nNn

:s/N/\^^M/
^Mn

oOo
:s/O/\n/
^@o

pPp
:s/P/\b/
^Hp

qQq
:s/Q/\t/
       q

rRr
:s/R/\\/
\

sSs
:s/S/\c/
c

tTt
:s/T/^^@/
^@t

U
:s/U/\L\uuUu\l\EU/
uuU

V
:s/V/\U\lVvV\u\Ev/
vVVv
/^STARTTEST


STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 15 lines, 203 characters written:set ff& cpo+=A

/ENDTESTj:s/B/\='\\'/
j:s/C/\='^V^M'/
j:s/D/\='\^V^M'/
j:s/E/\='\\^V^M'/
j:s/F/\='\r'/
j:s/G/\='^V^@'/
j:s/H/\='\^V^@'/
j:s/I/\='\\^V^@'/
j:s/J/\='\n'/
j:s/K/\="\r"/
j:s/L/\="\n"/
ENDTEST

TEST_3:
aAa
bBb
cCc
dDd
eEe
fFf
gGg
hHh
iIi
:so! Xdotest
:set magic&
:set cpo&
/^TEST/

:s/A/\='\'/
\

:s/B/\='\\'/
\\b

:s/C/\='^^M'/
c
:s/D/\='\^^M'/
\d



:s/E/\='\\^^M'/
\\
efFf
:s/F/\='\r'/
\rf

gGg
:s/G/\='^^@'/

g
hHh

:s/H/\='\^^@'/

\h
iIi

:s/I/\='\\^^@'/

\\
i
jJj

:s/J/\='\n'/
\nj

kKk
:s/K/\="\r"/

k
lLl

:s/L/\="\n"/

l
/^STARTTEST


STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 15 lines, 611 characters written:set ff& cpo+=A

/ENDTESTj:s/B/\=substitute(submatch(0), '.', '\\', '')/
j:s/C/\=substitute(submatch(0), '.', '^V^M', '')/
j:s/D/\=substitute(submatch(0), '.', '\^V^M', '')/
j:s/E/\=substitute(submatch(0), '.', '\\^V^M', '')/
j:s/F/\=substitute(submatch(0), '.', '\r', '')/
j:s/G/\=substitute(submatch(0), '.', '^V^@', '')/
j:s/H/\=substitute(submatch(0), '.', '\^V^@', '')/
j:s/I/\=substitute(submatch(0), '.', '\\^V^@', '')/
j:s/J/\=substitute(submatch(0), '.', '\n', '')/
j:s/K/\=substitute(submatch(0), '.', "\r", '')/
j:s/L/\=substitute(submatch(0), '.', "\n", '')/
ENDTEST

TEST_4:
aAa
bBb
cCc
dDd
eEe
fFf
gGg
hHh
iIi
:so! Xdotest
:set magic&
:set cpo&
/^TEST/

:s/A/\=substitute(submatch(0), '.', '\', '')/
\

:s/B/\=substitute(submatch(0), '.', '\\', '')/
\

:s/C/\=substitute(submatch(0), '.', '^^M', '')/
c
:s/D/\=substitute(submatch(0), '.', '\^^M', '')/
d



:s/E/\=substitute(submatch(0), '.', '\\^^M', '')/
\efFf
:s/F/\=substitute(submatch(0), '.', '\r', '')/

f
gGg

:s/G/\=substitute(submatch(0), '.', '^^@', '')/

g
hHh

:s/H/\=substitute(submatch(0), '.', '\^^@', '')/

h
iIi

:s/I/\=substitute(submatch(0), '.', '\\^^@', '')/

\i
jJj

:s/J/\=substitute(submatch(0), '.', '\n', '')/

j
kKk

:s/K/\=substitute(submatch(0), '.', "\r", '')/

k
lLl

:s/L/\=substitute(submatch(0), '.', "\n", '')/

l
/^STARTTEST


STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 445 characters written:set ff& cpo+=A

/ENDTEST








:set cpo&
/^TEST/
j:s/A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=submatch(0) . submatch(9) .. submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch((3) . submatch(2) . submatch(1)/
j:s/B\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=string([submatch(0, 1), subbmatch(9, 1), submatch(8, 1), submatch(7, 1), submatch(6, 1), submatch(5, 1), subbmatch(4, 1), submatch(3, 1), submatch(2, 1), submatch(1, 1)])/
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
/^TEST/

TEST_5:
A123456789

:s/A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=submatch(0) . submatch(9) .

submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch(

3) . submatch(2) . submatch(1)/
i\
i987654321
B123456789

:s/B\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=string([submatch(0, 1), sub

match(9, 1), submatch(8, 1), submatch(7, 1), submatch(6, 1), submatch(5, 1), sub

match(4, 1), submatch(3, 1), submatch(2, 1), submatch(1, 1)])/
i
j[['B123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]
/^STARTTEST


STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 8 lines, 80 characters written:set ff& cpo+=A

/ENDTEST







/^TEST/
:set cpo+=/
j:s/A/a/
j:s/B/%/
:set cpo-=/
j:s/C/c/
j:s/D/%/
ENDTEST

:so! Xdotest
:set magic&
/^TEST/



TEST_6:
A
B


:set cpo+=/

:s/A/a/
a
:s/B/%/
a:set cpo-=/



C
D


:s/C/c/
c
:s/D/%/
%/^STARTTEST

STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 11 lines, 303 characters written:set ff& cpo+=A

/ENDTEST










:set cpo&
/^TEST_7/
j:s/A./\=submatch(0)/
j:s/B./\=submatch(0)/
j:s/C./\=strtrans(string(submatch(0, 1)))/
j:s/D.\nD/\=strtrans(string(submatch(0, 1)))/
j:s/E\_.\{-}E/\=strtrans(string(submatch(0, 1)))/
/^Q$
:s/Q[^\n]Q/\=submatch(0)."foobar"/
:" Avoid :s error breaks dotest map on Windows.
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
/^TEST_7/

TEST_7:
A^MA

:s/A./\=submatch(0)/

A
B^@B

:s/B./\=submatch(0)/

B
C^@C

:s/C./\=strtrans(string(submatch(0, 1)))/
['C^@']C

D^@
:s/D.\nD/\=strtrans(string(submatch(0, 1)))/
['D^@', 'D']

E^@
:s/E\_.\{-}E/\=strtrans(string(submatch(0, 1)))/
['E^@', '^@', '^@', '^@', '^@E']
/^Q$

Q
:s/Q[^\n]Q/\=submatch(0)."foobar"/
E486: Pattern not found: Q[^\n]Q:" Avoid :s error breaks dotest map on Windows.
/^STARTTEST



Q

STARTTEST
:function! TitleString()

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 8 lines, 177 characters written:set ff& cpo+=A

/ENDTEST







let check = 'foo' =~ 'bar'
  return ""
endfunction
:set titlestring=%{TitleString()}
:/^test_one/s/.*/\="foo\nbar"/
:/^test_two/s/.*/\="foo\nbar"/c
y
ENDTEST

:so! Xdotest
:function! TitleString()

:    let check = 'foo' =~ 'bar'

:    return ""

:  endfunction
TEST_7:
A
:set titlestring=%{TitleString()}
:/^test_one/s/.*/\="foo\nbar"/


foo
bar
:/^test_two/s/.*/\="foo\nbar"/c

test_tworeplace with \="foo\nbar" (y/n/a/q/l/^E/^Y)?
foobar


/^STARTTEST

STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 72 characters written:set ff& cpo+=A

/ENDTEST
:1;/^Results/,$wq! test.out

:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
136 fewer linesaa
c
%TEST_7:AABB['C^@']C['D^@', 'D']
['E^@', '^@', '^@', '^@', '^@E']
Q
Qfoo
bar
foobar:1;/^Results/,$wq! test.out
"test.out" [New File] 134 lines, 574 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test79 = test61; then \
#	  if diff test.out test79.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test79.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test79.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test80.failed test.ok test.out X* viminfo
cp test80.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test80.in
[?1h="test80.in" 201 lines, 6298 charactersTest for *sub-replace-special* and *sub-replace-expression* on substitute().
Test for submatch() on substitute().
Test for *:s%* on :substitute.

STARTTEST
:so small.vim
ENDTEST

TEST_1:

STARTTEST
:set magic
:set cpo&
:$put =\"\n\nTEST_1:\"
:$put =substitute('A', 'A', '&&', '')
:$put =substitute('B', 'B', '\&', '')
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\0\9\8\7\6\5\4\3\2\1', '')
:$put =substitute('D', 'D', 'd', '')
:$put =substitute('E', 'E', '~', '')
:$put =substitute('F', 'F', '\~', '')
:$put =substitute('G', 'G', '\ugg', '')
:$put =substitute('H', 'H', '\Uh\Eh', ''):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for *sub-replace-special* and *sub-replace-expression* on substitute()./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1 line, 14 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 29 lines, 1142 characters written:set ff& cpo+=A
/ENDTEST:$put =substitute('pPp', 'P', '\b', '')
:$put =substitute('qQq', 'Q', '\t', '')
:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('xXx', 'X', \"\r\", '')
:$put =substitute('Y', 'Y', '\L\uyYy\l\EY', '')
:$put =substitute('Z', 'Z', '\U\lZzZ\u\Ez', '')
/^TEST_2
ENDTEST

TEST_2:

STARTTEST
:set nomagic
:set cpo&
:$put =\"\n\nTEST_2:\"
:$put =substitute('A', 'A', '&&', '')
:$put =substitute('B', 'B', '\&', '')
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\0\9\8\7\6\5\4\3\2\1', '')
:so! Xdotest
:set magic
:set cpo&
:$put =\"\n\nTEST_1:\"
3 more lines:set cpo&
:$put =\"\n\nTEST_10:\"
:let y = substitute('123', '\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\zs.', 'a', 'g')| $put =y
:let y = substitute('123', '.\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\ze', 'a', 'g')| $put =y
:let y = substitute('123', '\ze.', 'a', 'g')| $put =y
:let y = substitute('123', '.\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\|\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y
/^TEST_11
ENDTEST

TEST_11:

STARTTEST
:/^Results/,$wq! test.out
ENDTEST

Results of test72:


TEST_1:
3 more lines:$put =substitute('A', 'A', '&&', '')

AA
:$put =substitute('B', 'B', '\&', '')

&
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)

', '\0\9\8\7\6\5\4\3\2\1', '')
:let y = substitute('123', '\zs.', 'a', 'g')| $put =y.\zs\ze', 'a', 'g') .', 'a', 'g').\ze1\|\ze', 'a', 'g')zs\|[23]', 'a', 'g')
/^TEST_11ENDTESTTEST_11:STARTTEST
:/^Results/,$wq! test.out
ENDTESTResults of test72:TEST_1:
AA&C123456789987654321
:$put =substitute('D', 'D', 'd', '')

d
:$put =substitute('E', 'E', '~', '')

~
:$put =substitute('F', 'F', '\~', '')

~
:$put =substitute('G', 'G', '\ugg', '')

Gg
:$put =substitute('H', 'H', '\Uh\Eh', '')

Hh
:$put =substitute('I', 'I', '\lII', '')

iI
:$put =substitute('J', 'J', '\LJ\EJ', '')

jJ
:$put =substitute('K', 'K', '\Uk\ek', '')

Kk
:$put =substitute('lLl', 'L', '^^M', '')

l^Ml
:$put =substitute('mMm', 'M', '\r', '')

m^Mm
:$put =substitute('nNn', 'N', '\^^M', '')

n^Mn
:$put =substitute('oOo', 'O', '\n', '')


o
o
:$put =substitute('pPp', 'P', '\b', '')

p^Hp
:$put =substitute('qQq', 'Q', '\t', '')

qq
:$put =substitute('rRr', 'R', '\\', '')

r\r
:$put =substitute('sSs', 'S', '\c', '')

scs
:$put =substitute('uUu', 'U', \"\n\", '')


u
u
:$put =substitute('vVv', 'V', \"\b\", '')

v^Hv
:$put =substitute('wWw', 'W', \"\\\", '')

w\w
:$put =substitute('xXx', 'X', \"\r\", '')

x^Mx
:$put =substitute('Y', 'Y', '\L\uyYy\l\EY', '')

YyyY
:$put =substitute('Z', 'Z', '\U\lZzZ\u\Ez', '')

zZZz
/^TEST_2
search hit BOTTOM, continuing at TOP:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('xXx', 'X', \"\r\", '')
:$put =substitute('Y', 'Y', '\L\uyYy\l\EY', '')
:$put =substitute('Z', 'Z', '\U\lZzZ\u\Ez', '')
/^TEST_2
ENDTEST

TEST_2:

STARTTEST
:set nomagic
:set cpo&
:$put =\"\n\nTEST_2:\"
:$put =substitute('A', 'A', '&&', '')
:$put =substitute('B', 'B', '\&', '')
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\0\9\8\7\6\5\4\3\2\1', '')
:$put =substitute('D', 'D', 'd', '')
:$put =substitute('E', 'E', '~', '')
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 29 lines, 1144 characters written:set ff& cpo+=A
/ENDTEST:$put =substitute('pPp', 'P', '\b', '')
:$put =substitute('qQq', 'Q', '\t', '')
:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('tTt', 'T', \"\r\", '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('X', 'X', '\L\uxXx\l\EX', '')
:$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')
/^TEST_3
ENDTEST

TEST_3:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_3:\"
:let y = substitute('aAa', 'A', '\="\\"', '')| $put =y
:let y = substitute('bBb', 'B', '\="\\\\"', '')| $put =y
:let y = substitute('cCc', 'C', '\="^V^M"', '')| $put =y
:let y = substitute('dDd', 'D', '\="\\^V^M"', '')| $put =y
:so! Xdotest
:set nomagic
:set cpo&
:$put =\"\n\nTEST_2:\"
3 more linesHh
iI
jJ
Kk
l^Ml
m^Mm
n^Mn
o
o
p^Hp
qq
r\r
scs
u
u
v^Hv
w\w
x^Mx
YyyY
zZZz


TEST_2:
3 more lines:$put =substitute('A', 'A', '&&', '')

AA
:$put =substitute('B', 'B', '\&', '')

&
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)

', '\0\9\8\7\6\5\4\3\2\1', '')
Kk
l^Ml
mm
nn
op^Hp
q       q
r\rscs
uv^Hv
w\wx^Mx
YyyY
zZZzTEST_2:
AA&C123456789987654321
:$put =substitute('D', 'D', 'd', '')

d
:$put =substitute('E', 'E', '~', '')

~
:$put =substitute('F', 'F', '\~', '')

~
:$put =substitute('G', 'G', '\ugg', '')

Gg
:$put =substitute('H', 'H', '\Uh\Eh', '')

Hh
:$put =substitute('I', 'I', '\lII', '')

iI
:$put =substitute('J', 'J', '\LJ\EJ', '')

jJ
:$put =substitute('K', 'K', '\Uk\ek', '')

Kk
:$put =substitute('lLl', 'L', '^^M', '')

l^Ml
:$put =substitute('mMm', 'M', '\r', '')

m^Mm
:$put =substitute('nNn', 'N', '\^^M', '')

n^Mn
:$put =substitute('oOo', 'O', '\n', '')


o
o
:$put =substitute('pPp', 'P', '\b', '')

p^Hp
:$put =substitute('qQq', 'Q', '\t', '')

qq
:$put =substitute('rRr', 'R', '\\', '')

r\r
:$put =substitute('sSs', 'S', '\c', '')

scs
:$put =substitute('tTt', 'T', \"\r\", '')

t^Mt
:$put =substitute('uUu', 'U', \"\n\", '')


u
u
:$put =substitute('vVv', 'V', \"\b\", '')

v^Hv
:$put =substitute('wWw', 'W', \"\\\", '')

w\w
:$put =substitute('X', 'X', '\L\uxXx\l\EX', '')

XxxX
:$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')

yYYy
/^TEST_3
search hit BOTTOM, continuing at TOP:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('tTt', 'T', \"\r\", '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('X', 'X', '\L\uxXx\l\EX', '')
:$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')
/^TEST_3
ENDTEST

TEST_3:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_3:\"
:let y = substitute('aAa', 'A', '\="\\"', '')| $put =y
:let y = substitute('bBb', 'B', '\="\\\\"', '')| $put =y
:let y = substitute('cCc', 'C', '\="^V^M"', '')| $put =y
:let y = substitute('dDd', 'D', '\="\\^V^M"', '')| $put =y
:let y = substitute('eEe', 'E', '\="\\\\^V^M"', '')     | $put =y
:let y = substitute('fFf', 'F', '\="\\r"', '')| $put =y
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 13 lines, 642 characters written:set ff& cpo+=A
/ENDTEST




:let y = substitute('jJj', 'J', '\="\\n"', '')| $put =y
:let y = substitute('kKk', 'K', '\="\r"', '')| $put =y
:let y = substitute('lLl', 'L', '\="\n"', '')| $put =y
/^TEST_4
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_3:\"
3 more linesHh
iI
jJ
Kk
l^Ml
m^Mm
n^Mn
o
o
p^Hp
qq
r\r
scs
t^Mt
u
u
v^Hv
w\w
XxxX
yYYy


TEST_3:
3 more lines:let y = substitute('aAa', 'A', '\="\\"', '')           | $put =y

a\a
:let y = substitute('bBb', 'B', '\="\\\\"', '')         | $put =y

b\\b
:let y = substitute('cCc', 'C', '\="^^M"', '')         | $put =y

c^Mc
:let y = substitute('dDd', 'D', '\="\\^^M"', '')       | $put =y

d\^Md
:let y = substitute('eEe', 'E', '\="\\\\^^M"', '')     | $put =y

e\\^Me
:let y = substitute('fFf', 'F', '\="\\r"', '')          | $put =y

f\rf
:let y = substitute('jJj', 'J', '\="\\n"', '')          | $put =y

j\nj
:let y = substitute('kKk', 'K', '\="\r"', '')           | $put =y

k^Mk
:let y = substitute('lLl', 'L', '\="\n"', '')           | $put =y


l
l
/^TEST_4
search hit BOTTOM, continuing at TOP:let y = substitute('bBb', 'B', '\="\\\\"', '')| $put =y
:let y = substitute('cCc', 'C', '\="^V^M"', '')| $put =y
:let y = substitute('dDd', 'D', '\="\\^V^M"', '')| $put =y
:let y = substitute('eEe', 'E', '\="\\\\^V^M"', '')     | $put =y
:let y = substitute('fFf', 'F', '\="\\r"', '')| $put =y
:let y = substitute('jJj', 'J', '\="\\n"', '')| $put =y
:let y = substitute('kKk', 'K', '\="\r"', '')| $put =y
:let y = substitute('lLl', 'L', '\="\n"', '')| $put =y
/^TEST_4
ENDTEST

TEST_4:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_4:\"
:let y = substitute('aAa', 'A', '\=substitute(submatch(0), ".", "\\", "")', '')        | $put =y
:let y = substitute('bBb', 'B', '\=substitute(submatch(0), ".", "\\\\", "")', ''')     | $put =y
:let y = substitute('cCc', 'C', '\=substitute(submatch(0), ".", "^V^M", "")', ''')     | $put =y
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 13 lines, 912 characters written:set ff& cpo+=A
/ENDTEST













:let y = substitute('dDd', 'D', '\=substitute(submatch(0), ".", "\\^V^M", "")',  '')   | $put =y
:let y = substitute('eEe', 'E', '\=substitute(submatch(0), ".", "\\\\^V^M", "")'', '') | $put =y
:let y = substitute('fFf', 'F', '\=substitute(submatch(0), ".", "\\r", "")', ''))      | $put =y
:let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', ''))      | $put =y
:let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')        | $put =y
:let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')        | $put =y
/^TEST_5
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_4:\"
3 more linest^Mt
u
u
v^Hv
w\w
XxxX
yYYy


TEST_3:
a\a
b\\b
c^Mc
d\^Md
e\\^Me
f\rf
j\nj
k^Mk
l
l


TEST_4:
3 more lines:let y = substitute('aAa', 'A', '\=substitute(submatch(0), ".", "\\", "")', '')

      | $put =y
u

v^Hv
w\wXxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\a
:let y = substitute('bBb', 'B', '\=substitute(submatch(0), ".", "\\\\", "")', '

')     | $put =y
u
v^Hv
w\wXxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
:let y = substitute('cCc', 'C', '\=substitute(submatch(0), ".", "^^M", "")', '')

    | $put =y
v^Hv
w\wXxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
:let y = substitute('dDd', 'D', '\=substitute(submatch(0), ".", "\\^^M", "")', '

')   | $put =y
w\w
XxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
:let y = substitute('eEe', 'E', '\=substitute(submatch(0), ".", "\\\\^^M", "")',

'') | $put =y
XxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
:let y = substitute('fFf', 'F', '\=substitute(submatch(0), ".", "\\r", "")', ''

)      | $put =y
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
f^Mf
:let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', ''

)      | $put =y
TEST_3:
a\a
b\\bc^Mc
d\^Md
e\\^Me
f\rfj\njk^Mk
llTEST_4:
a\a
b\bc^Mc
d^Md
e\^Me
ff
jj
:let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')

      | $put =y
TEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
f^Mfjk^Mk
:let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')

      | $put =y
b\\b
c^Mc
d\^Md
e\\^Me
f\rfj\njk^Mk
llTEST_4:
a\a
b\bc^Mc
d^Md
e\^Me
ff
jjk^Mk
l
l
/^TEST_5
search hit BOTTOM, continuing at TOP:let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', ''))      | $put =y
:let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')        | $put =y
:let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')        | $put =y
/^TEST_5
ENDTEST

TEST_5:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_5:\"
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submaatch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)', '')
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\=string([submatch(0, 1), submatch(9, 1), submatch(8, 1), submatch(7, 1), subbmatch(6, 1), submatch(5, 1), submatch(4, 1), submatch(3, 1), submatch(2, 1), subbmatch(1, 1)])', '')
/^TEST_6
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 6 lines, 543 characters written:set ff& cpo+=A
/ENDTEST

ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_5:\"
3 more linese\\^Me
f\rf
j\nj
k^Mk
l
l


TEST_4:
a\a
b\b
c^Mc
d^Md
e\^Me
f^Mf
j
j
k^Mk
l
l


TEST_5:
3 more lines:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)

', '\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . subm

atch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)', '')
f\rf
j\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
f^Mfjk^Mk
lTEST_5:
A123456789987654321
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)

', '\=string([submatch(0, 1), submatch(9, 1), submatch(8, 1), submatch(7, 1), su

bmatch(6, 1), submatch(5, 1), submatch(4, 1), submatch(3, 1), submatch(2, 1), su

bmatch(1, 1)])', '')
j\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
f^Mfjk^Mk
lTEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]
/^TEST_6
search hit BOTTOM, continuing at TOP:$put =\"\n\nTEST_5:\"
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submaatch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)', '')
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\=string([submatch(0, 1), submatch(9, 1), submatch(8, 1), submatch(7, 1), subbmatch(6, 1), submatch(5, 1), submatch(4, 1), submatch(3, 1), submatch(2, 1), subbmatch(1, 1)])', '')
/^TEST_6
ENDTEST

TEST_6:

STARTTEST
:set magic&
:$put =\"\n\nTEST_6:\"
:set cpo+=/
:$put =substitute('A', 'A', 'a', '')
:$put =substitute('B', 'B', '%', '')
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')
:$put =substitute('D', 'D', '%', '')
/^TEST_7
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 9 lines, 216 characters written:set ff& cpo+=A
/ENDTEST
ENDTEST


TEST_7:


:so! Xdotest
:set magic&
:$put =\"\n\nTEST_6:\"
3 more linesl


TEST_4:
a\a
b\b
c^Mc
d^Md
e\^Me
f^Mf
j
j
k^Mk
l
l


TEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]


TEST_6:
3 more lines:set cpo+=/
:$put =substitute('A', 'A', 'a', '')

a
:$put =substitute('B', 'B', '%', '')

%
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')

c
:$put =substitute('D', 'D', '%', '')

%
/^TEST_7
search hit BOTTOM, continuing at TOP:set magic&
:$put =\"\n\nTEST_6:\"
:set cpo+=/
:$put =substitute('A', 'A', 'a', '')
:$put =substitute('B', 'B', '%', '')
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')
:$put =substitute('D', 'D', '%', '')
/^TEST_7
ENDTEST

TEST_7:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
:$put =substitute('A^V^MA', 'A.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=string(submatch(0, 1))', '')
:$put =substitute('-bb', '\zeb', 'a', 'g')
:$put =substitute('-bb', '\ze', 'c', 'g')
/^TEST_8
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 9 lines, 313 characters written:set ff& cpo+=A
/ENDTEST
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
3 more linesd^Md
e\^Me
f^Mf
j
j
k^Mk
l
l


TEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]


TEST_6:
a
%
c
%


TEST_7:
3 more lines:$put =substitute('A^^MA', 'A.', '\=submatch(0)', '')

A^MA
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')


B
B
:$put =substitute(\"B\nB\", 'B.', '\=string(submatch(0, 1))', '')


['B
']B
:$put =substitute('-bb', '\zeb', 'a', 'g')

-abab
:$put =substitute('-bb', '\ze', 'c', 'g')

c-cbcbc
/^TEST_8
search hit BOTTOM, continuing at TOP:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
:$put =substitute('A^V^MA', 'A.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=string(submatch(0, 1))', '')
:$put =substitute('-bb', '\zeb', 'a', 'g')
:$put =substitute('-bb', '\ze', 'c', 'g')
/^TEST_8
ENDTEST

TEST_8:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_8:\"
:$put =',,X'
:s/\(^\|,\)\ze\(,\|X\)/\1N/g
:$put =',,Y'
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
a:$put =',,Z'
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 10 lines, 186 characters written:set ff& cpo+=A
/ENDTEST

yy/^TEST_9:
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_8:\"
3 more linesTEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]


TEST_6:
a
%
c
%


TEST_7:
A^MA
B
B
['B
']B
-abab
c-cbcbc


TEST_8:
3 more lines:$put =',,X'

,,X
:s/\(^\|,\)\ze\(,\|X\)/\1N/g
N,,NX
:$put =',,Y'

,,Y
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
,
replace with \1N (y/n/a/q/l/^E/^Y)?N,,NY

:$put =',,Z'

,,Z
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
,
replace with \1N (y/n/a/q/l/^E/^Y)?N,,Z
replace with \1N (y/n/a/q/l/^E/^Y)?,NZ

/^TEST_9:
search hit BOTTOM, continuing at TOP:set cpo&
:$put =\"\n\nTEST_8:\"
:$put =',,X'
:s/\(^\|,\)\ze\(,\|X\)/\1N/g
:$put =',,Y'
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
a:$put =',,Z'
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
yy/^TEST_9:
ENDTEST

TEST_9:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_9:\"
:$put ='xxx'
:s/x/X/gc
yyq/^TEST_10:
ENDTEST

TEST_10:
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 6 lines, 82 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_9:\"
3 more linesa
%
c
%


TEST_7:
A^MA
B
B
['B
']B
-abab
c-cbcbc


TEST_8:
N,,NX
N,,NY
N,,NZ


TEST_9:
3 more lines:$put ='xxx'

xxx
:s/x/X/gc
x
replace with X (y/n/a/q/l/^E/^Y)?Xx
replace with X (y/n/a/q/l/^E/^Y)?Xx
replace with X (y/n/a/q/l/^E/^Y)?x
/^TEST_10:
search hit BOTTOM, continuing at TOPTEST_9:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_9:\"
:$put ='xxx'
:s/x/X/gc
yyq/^TEST_10:
ENDTEST

TEST_10:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_10:\"
:let y = substitute('123', '\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\zs.', 'a', 'g')| $put =y
:let y = substitute('123', '.\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\ze', 'a', 'g')| $put =y
:let y = substitute('123', '\ze.', 'a', 'g')| $put =y
:let y = substitute('123', '.\ze', 'a', 'g')| $put =y
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 12 lines, 584 characters written:set ff& cpo+=A
/ENDTEST



:let y = substitute('123', '1\|\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y
/^TEST_11
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_10:\"
3 more linesTEST_7:
A^MA
B
B
['B
']B
-abab
c-cbcbc


TEST_8:
N,,NX
N,,NY
N,,NZ


TEST_9:
XXx


TEST_10:
3 more lines:let y = substitute('123', '\zs', 'a', 'g')             | $put =y

a1a2a3a
:let y = substitute('123', '\zs.', 'a', 'g')            | $put =y

aaa
:let y = substitute('123', '.\zs', 'a', 'g')            | $put =y

1a2a3a
:let y = substitute('123', '\ze', 'a', 'g')             | $put =y

a1a2a3a
:let y = substitute('123', '\ze.', 'a', 'g')            | $put =y

a1a2a3
:let y = substitute('123', '.\ze', 'a', 'g')            | $put =y

aaa
:let y = substitute('123', '1\|\ze', 'a', 'g')          | $put =y

aa2a3a
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y

1aaa
/^TEST_11
search hit BOTTOM, continuing at TOP:let y = substitute('123', '\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\zs.', 'a', 'g')| $put =y
:let y = substitute('123', '.\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\ze', 'a', 'g')| $put =y
:let y = substitute('123', '\ze.', 'a', 'g')| $put =y
:let y = substitute('123', '.\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\|\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y
/^TEST_11
ENDTEST

TEST_11:

STARTTEST
:/^Results/,$wq! test.out
ENDTEST

Results of test72:


TEST_1:
AA
&
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 1 line, 26 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:/^Results/,$wq! test.out
"test.out" [New File] 131 lines, 617 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test80 = test61; then \
#	  if diff test.out test80.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test80.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test80.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test82.failed test.ok test.out X* viminfo
cp test82.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test82.in
[?1h="test82.in" 103 lines, 3166 charactersTests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)
Also test "g~ap".

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, aa:b, a:expected))
:  else
:    let b:passed += 1
:  endif
:endfunction
:
:function! Chk(a, b, result):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 97 lines, 3055 characters written:set ff& cpo+=A
/ENDTEST: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%.22X', n)) | endfor
:for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ\xc2\x%.2XuVw', n)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ\xc2\x%.2XuVw', n)) | endfor
:call append(0, printf('%d checks passed', b:passed))
:"
:" test that g~ap changes one paragraph only.
:new
iabcd

defg^[gg0g~ap:let lns = getline(1,3)
:q!
:call append(line('$'), lns)
:"
:wq! test.out
ENDTEST

~
~



:so! Xdotest
:so small.vim
:if !has("multi_byte")

:  : e! test.ok

:  : w! test.out

:  : qa!

:  :endif
: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%.22X', n)) | endfor


:set enc=utf8
: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%.22X', n)) | endfor
:for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ\xc2\x%.2XuVw', n)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ\xc2\x%.2XuVw', n)) | endfor
:call append(0, printf('%d checks passed', b:passed))
:"
:" test that g~ap changes one paragraph only.
:new
iabcd

defg^[gg0g~ap:let lns = getline(1,3)
:q!
:call append(line('$'), lns)
:"
:wq! test.out
ENDTEST

~
~Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)
Also test "g~ap".

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, aa:b, a:expected))
:  else
:    let b:passed += 1
:  endif
:endfunction
:
:function! Chk(a, b, result)~
~~~~~~~~~~
~~~~~~~~~
~~
--No lines in buffer--:::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\x

aakk\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 cha

racter
: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('Xy

Z\xc2\x%.2XuVw', n)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('Xy

Z\xc2\x%.2XuVw', n)) | endfor
:call append(0, printf('%d checks passed', b:passed))
3732 checks passed:"
:" test that g~ap changes one paragraph only.
:new
~[No Name]                                                                       3732 checks passedtest82.in [+]                                                                   abcddefg[+]ABCD
:let lns = getline(1,3)
:q!
3732 checks passed~~~
~~:call append(line('$'), lns)
ABCDdefg:"
:wq! test.out
"test.out" [New File] 5 lines, 31 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test82 = test61; then \
#	  if diff test.out test82.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test82.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test82.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test84.failed test.ok test.out X* viminfo
cp test84.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test84.in
[?1h="test84.in" 35 lines, 786 charactersTests 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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for curswant not changing when setting an option/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 25 lines, 637 characters written:set ff& cpo+=A
/ENDTEST





:put =map(copy(result), 'join(v:val, '' '')')
:1 delete _
:write test.out
:
:qall!
ENDTEST

:so! Xdotest
:so small.vim
:/^start target options$/+1,/^end target options$/-1 yank
3 lines yanked: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
:  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
~~~~~
~~~~~
[No Name]                                                                       endfornew
:put =map(copy(result), 'join(v:val, '' '')')
:1 delete _write test.outqall!
ENDTESTtest84.in                                                                       :put =['1234567890', '12345']
1234567890
12345[+]:1 delete _

~:let result = []
:for option_name in target_option_names

:  :  call add(result, TestCurswant(option_name))

:  :endfor
1234567890
12345::new
~
~
~
~
~
~
[No Name]                                                                       1234567890
12345
~
~
~
~
~
[No Name] [+]                                                                   :1 delete _
:write test.out
:
:qall!
ENDTEST

test84.in                                                                       :put =map(copy(result), 'join(v:val, '' '')')
3 more linestabstop 7 4
timeoutlen 7 7
ttimeoutlen 7 7[+]:1 delete _

~:write test.out
"test.out" [New File] 3 lines, 43 characters writtentest.out     ::qall!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test84 = test61; then \
#	  if diff test.out test84.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test84.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test84.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test88.failed test.ok test.out X* viminfo
cp test88.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test88.in
[?1h="test88.in" 99 lines, 1449 charactersvim: set ft=vim

Tests for correct display (cursor column position) with +conceal and
tabulators.

STARTTEST
:so small.vim
:if !has('conceal')
   e! test.ok
   wq! test.out
:endif
:" Conceal settings.
:set conceallevel=2
:set concealcursor=nc
:syntax match test /|/ conceal
:" Save current cursor position. Only works in <expr> mode, can't be used
:" with :normal because it moves the cursor to the command line. Thanks to ZyX
:" <zyx.vim@gmail.com> for the idea to use an <expr> mapping.
:let positions = []
:nnoremap <expr> GG ":let positions += ['".screenrow().":".screencol()."']\n"
:" Start test.
/^start:
:normal ztj:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
vim: set ft=vim/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 82 lines, 1216 characters written:set ff& cpo+=A
/ENDTEST:normal W
GGk
:normal W
GGk
:normal W
GGk
:normal $
GGk
:" Display result.
:call append('$', 'end:')
:call append('$', positions)
:/^end/,$wq! test.out
ENDTEST

start:
.concealed.     text
|concealed|     text.concealed.     text|concealed|     text

.a.     .b.     .c.     .d.
|a|     |b|     |c|     |d|
:so! Xdotest
:so small.vim
:if !has('conceal')

:     e! test.ok

:     wq! test.out

:  :endif
:normal W
GGk
:normal W:" Conceal settings.
:set conceallevel=2
:set concealcursor=nc
:syntax match test /|/ conceal
concealed  concealed  


a       b       c       d:" Save current cursor position. Only works in <expr> mode, can't be used
:" with :normal because it moves the cursor to the command line. Thanks to ZyX
:" <zyx.vim@gmail.com> for the idea to use an <expr> mapping.
:let positions = []
:nnoremap <expr> GG ":let positions += ['".screenrow().":".screencol()."']\n"
:" Start test.
/^start:
:normal ztj














~
~
~
~
~
~
~
~
~
~
~
~
~
~:let positions += ['2:1']
:" We should end up in the same column when running these commands on the two
:" lines.
:normal ft
:let positions += ['2:17']
:normal $
:let positions += ['2:20']
:normal 0j
:let positions += ['3:1']
:normal ft
:let positions += ['3:17']
:normal $
:let positions += ['3:20']
:normal 0j0j
:let positions += ['5:8']
:" Same for next test block.
:normal ft
:let positions += ['5:25']
:normal $
:let positions += ['5:28']
:normal 0j
:let positions += ['6:8']
:normal ft
:let positions += ['6:25']
:normal $
:let positions += ['6:28']
:normal 0j0j
:let positions += ['8:1']
:" And check W with multiple tabs and conceals in a line.
:normal W
:let positions += ['8:9']
:normal W
:let positions += ['8:17']
:normal W
:let positions += ['8:25']
:normal $
:let positions += ['8:27']
:normal 0j
:let positions += ['9:1']
:normal W
:let positions += ['9:9']
:normal W
:let positions += ['9:17']
:normal W
:let positions += ['9:25']
:normal $
:let positions += ['9:26']
:set lbr
:normal $
:let positions += ['9:26']
:set list listchars=tab:>-
>------

>------->----
>------->------>----.b.>----.c.>----
a>------b>------c>------:normal 0
:let positions += ['9:1']
:normal W
:let positions += ['9:9']
:normal W
:let positions += ['9:17']
:normal W
:let positions += ['9:25']
:normal $
:let positions += ['9:26']
:" Display result.
:call append('$', 'end:')
end::call append('$', positions)
2:1
2:17
2:20
3:1
3:17
3:20
5:8
5:25
5:28
6:8
6:25
6:28
8:1:/^end/,$wq! test.out
"test.out" [New File] 29 lines, 135 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test88 = test61; then \
#	  if diff test.out test88.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test88.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test88.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test90.failed test.ok test.out X* viminfo
cp test90.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test90.in
[?1h="test90.in" 53 lines, 1204 charactersTests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :

STARTTEST
:so small.vim
:if !has('cryptv') || !exists('*sha256')
   e! test.ok
   wq! test.out
:endif
:"
:let testcase='test for empty string: '
:if sha256("") ==# 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b78522b855'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:let testcase='test for 1 char: '
:if sha256("a") ==# 'ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afeee48bb'
: let res='ok'
:else:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 47 lines, 1114 characters written:set ff& cpo+=A
/ENDTEST:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc39ed110ca776'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:let testcase='test for contains non-ascii char: '
:if sha256("\xde\xad\xbe\xef") ==# '5f78c33274e43fa9de5659265c1d917e25c03722dcb00b8d27db8d5feaa813953'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:/^start:/,$wq! test.out
ENDTEST

start:


:so! Xdotest
:so small.vim
:if !has('cryptv') || !exists('*sha256')

:     e! test.ok

:     wq! test.out

:  :endif
:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc3

:"
:let testcase='test for empty string: '
:if sha256("") ==# 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b785

2b855'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc39ed110ca776'

:$put =testcase.res

test for empty string: ok
:"
:let testcase='test for 1 char: '
:if sha256("a") ==# 'ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785af

ee48bb'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc39ed110ca776'
: let res='ok'
:$put =testcase.res

test for 1 char: ok
:"
:let testcase='test for 3 chars: '
:if sha256("abc") ==# 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61

f20015ad'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc39ed110ca776'
: let res='ok'
:else
:$put =testcase.res


test for 3 chars: ok
~

:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8c

c39ed110ca776'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
: let res='ok'
:else
: let res='ng'
:endif

:$put =testcase.res
test for contains meta char: ok
:"
:let testcase='test for contains non-ascii char: '
:if sha256("\xde\xad\xbe\xef") ==# '5f78c33274e43fa9de5659265c1d917e25c03722dcb

0b8d27db8d5feaa813953'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res

test for contains non-ascii char: ok
:"
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 6 lines, 143 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test90 = test61; then \
#	  if diff test.out test90.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test90.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test90.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test91.failed test.ok test.out X* viminfo
cp test91.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test91.in
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/mbyte.o mbyte.c
[?1h="test91.in" 116 lines, 3240 charactersTests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar().
vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Use strings to test for memory leaks.
:" First, check that in an empty window, gettabvar() returns the correct value
:let t:testvar='abcd'
:$put =string(gettabvar(1,'testvar'))
:$put =string(gettabvar(1,'testvar'))
:" Test for getbufvar()
:let b:var_num = '1234'
:let def_num = '5678'
:$put =string(getbufvar(1, 'var_num'))
:$put =string(getbufvar(1, 'var_num', def_num))
:$put =string(getbufvar(1, ''))
:$put =string(getbufvar(1, '', def_num))
:unlet b:var_num
:$put =string(getbufvar(1, 'var_num', def_num))
:$put =string(getbufvar(1, ''))
:$put =string(getbufvar(1, '', def_num)):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar()./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 109 lines, 3127 characters written:set ff& cpo+=A
/ENDTEST:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:tabnext
:3wincmd w
:unlet w:var_dict
:tabrewind
:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:$put =string(gettabwinvar(2, 9, ''))
:$put =string(gettabwinvar(2, 9, '', def_dict))
:$put =string(gettabwinvar(9, 3, ''))
:$put =string(gettabwinvar(9, 3, '', def_dict))
:unlet def_dict
:$put =string(gettabwinvar(2, 3, '&nux'))
:$put =string(gettabwinvar(2, 3, '&nux', 1))
:tabonly
:"
:/^start/,$wq! test.out
ENDTEST

start:


:so! Xdotest
:so small.vim
:so mbyte.vim
:"
:" Use strings to test for memory leaks.
:" First, check that in an empty window, gettabvar() returns the correct value
:let t:testvar='abcd'
:$put =string(gettabvar(1,'testvar'))

'abcd'
:$put =string(gettabvar(1,'testvar'))

'abcd'
:" Test for getbufvar()
:let b:var_num = '1234'
:let def_num = '5678'
:$put =string(getbufvar(1, 'var_num'))

'1234'
:$put =string(getbufvar(1, 'var_num', def_num))

'1234'
:$put =string(getbufvar(1, ''))

{'var_num': '1234'}
:$put =string(getbufvar(1, '', def_num))

{'var_num': '1234'}
:unlet b:var_num
:$put =string(getbufvar(1, 'var_num', def_num))

'5678'
:$put =string(getbufvar(1, ''))

{}
:$put =string(getbufvar(1, '', def_num))

{}
:$put =string(getbufvar(9, ''))

''
:$put =string(getbufvar(9, '', def_num))

'5678'
:unlet def_num
:$put =string(getbufvar(1, '&autoindent'))

0
:$put =string(getbufvar(1, '&autoindent', 1))

0
:"
:" Open new window with forced option values
:set fileformats=unix,dos
:new ++ff=dos ++bin ++enc=iso-8859-2
~~~~~~~
~~~
[No Name]                                                                       {'var_num': '1234'}

'5678'{}''
'5678'
0test91.in [+]                                                                   :let otherff = getbufvar(bufnr('%'), '&fileformat')
:let otherbin = getbufvar(bufnr('%'), '&bin')
:let otherfenc = getbufvar(bufnr('%'), '&fenc')
:close
:$put =string(gettabwinvar(9, 3, '', def_dict))
:unlet def_dict
:$put =string(gettabwinvar(2, 3, '&nux'))
:$put =string(gettabwinvar(2, 3, '&nux', 1))
:tabonly
:"
:/^start/,$wq! test.out
ENDTESTstart:
'abcd'
'abcd''1234'{'var_num': '1234'}
'5678'

{}
'''5678'

0:$put =otherff

dos
:$put =string(otherbin)

1
:$put =otherfenc

iso-8859-2
:unlet otherff otherbin otherfenc
:" test for getwinvar()
:let w:var_str = "Dance"
:let def_str = "Chance"
:$put =string(getwinvar(1, 'var_str'))

'Dance'
:$put =string(getwinvar(1, 'var_str', def_str))

'Dance'
:$put =string(getwinvar(1, ''))

{'var_str': 'Dance'}
:$put =string(getwinvar(1, '', def_str))

{'var_str': 'Dance'}
:unlet w:var_str
:$put =string(getwinvar(1, 'var_str', def_str))

'Chance'
:$put =string(getwinvar(1, ''))

{}
:$put =string(getwinvar(1, '', def_str))

{}
:$put =string(getwinvar(9, ''))

''
:$put =string(getwinvar(9, '', def_str))

'Chance'
:$put =string(getwinvar(1, '&nu'))

0
:$put =string(getwinvar(1, '&nu',  1))

0
:unlegcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ops.o ops.c
t def_str
:"
:" test for gettabvar()
:tabnew
 + test91.in | [No Name] _______________________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:tabnew
 + test91.in | [No Name] | [No Name] ___________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:let t:var_list = [1, 2, 3]
:let t:other = 777
:let def_list = [4, 5, 6, 7]
:tabrewind
 + test91.in | [No Name] | [No Name] ___________________________________________X{'var_num': '1234'}
'5678'
{}
{}
''
'5678'
0
0
dos
1
iso-8859-2
'Dance'
'Dance'
{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
:$put =string(gettabvar(3, 'var_list'))

[1, 2, 3]
:$put =string(gettabvar(3, 'var_list', def_list))

[1, 2, 3]
:$put =string(gettabvar(3, ''))

{'var_list': [1, 2, 3], 'other': 777}
:$put =string(gettabvar(3, '', def_list))

{'var_list': [1, 2, 3], 'other': 777}
:tablast
 + test91.in | [No Name] | [No Name] ___________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:unlet t:var_list
:tabrewind
 + test91.in | [No Name] | [No Name] ___________________________________________X''
'5678'
0
0
dos
1
iso-8859-2
'Dance'
'Dance'
{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
[1, 2, 3]
[1, 2, 3]
{'var_list': [1, 2, 3], 'other': 777}
{'var_list': [1, 2, 3], 'other': 777}

:$put =string(gettabvar(3, 'var_list', def_list))

[4, 5, 6, 7]
:$put =string(gettabvar(9, ''))

''
:$put =string(gettabvar(9, '', def_list))

[4, 5, 6, 7]
:$put =string(gettabvar(3, '&nu'))

''
:$put =string(gettabvar(3, '&nu', def_list))

[4, 5, 6, 7]
:unlet def_list
:tabonly
dos:"
:" test for gettabwinvar()
:tabnew
 + test91.in | [No Name] _______________________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:tabnew
 + test91.in | [No Name] | [No Name] ___________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:tabprev
 + test91.in | [No Name] | [No Name] ___________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:split
2 [No Name] | [No Name] _X[No Name]                                                                       [No Name]                                                                       :split
 + test91.in | 3 [No Name] | [No Name] _________________________________________X~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :wincmd w
[No Name]                                                                       [No Name]                                                                       _X:vert split
4_X||||||                                       
~                                       
~                                       
~                                       
~                                       ~~~~~[No Name]                              :wincmd w
[No Name]                                [No Name]                              _X:let w:var_dict = {'dict': 'tabwin'}
:let def_dict = {'dict2': 'newval'}
:wincmd b
[No Name]                              [No Name]                                                                       _X:tabrewind
 + test91.in | 4 [No Name] | [No Name] _________________________________________X1
iso-8859-2
'Dance'
'Dance'
{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
[1, 2, 3]
[1, 2, 3]
{'var_list': [1, 2, 3], 'other': 777}
{'var_list': [1, 2, 3], 'other': 777}
[4, 5, 6, 7]
''
[4, 5, 6, 7]
''
[4, 5, 6, 7]

:$put =string(gettabwinvar(2, 3, 'var_dict'))

{'dict': 'tabwin'}
:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))

{'dict': 'tabwin'}
:$put =string(gettabwinvar(2, 3, ''))

{'var_dict': {'dict': 'tabwin'}}
:$put =string(gettabwinvar(2, 3, '', def_dict))

{'var_dict': {'dict': 'tabwin'}}
:tabnext
 + test91.in | 4 [No Name] | [No Name] _________________________________________X~
~
~
~
~
~
[No Name]                                                                       ||||||~                                       
~                                       
~                                       
~                                       
~                                       
[No Name]                                ~~~~~[No Name]                              ~
~
~
~
~
[No Name]                                                                       :3wincmd w
[No Name]                              [No Name]                                                                       _X:unlet w:var_dict
:tabrewind
 + test91.in | 4 [No Name] | [No Name] _________________________________________X{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
[1, 2, 3]
[1, 2, 3]
{'var_list': [1, 2, 3], 'other': 777}
{'var_list': [1, 2, 3], 'other': 777}
[4, 5, 6, 7]
''
[4, 5, 6, 7]
''
[4, 5, 6, 7]
{'dict': 'tabwin'}
{'dict': 'tabwin'}
{'var_dict': {'dict': 'tabwin'}}
{'var_dict': {'dict': 'tabwin'}}

:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))

{'dict2': 'newval'}
:$put =string(gettabwinvar(2, 3, ''))

{}
:$put =string(gettabwinvar(2, 3, '', def_dict))

{}
:$put =string(gettabwinvar(2, 9, ''))

''
:$put =string(gettabwinvar(2, 9, '', def_dict))

{'dict2': 'newval'}
:$put =string(gettabwinvar(9, 3, ''))

''
:$put =string(gettabwinvar(9, 3, '', def_dict))

{'dict2': 'newval'}
:unlet def_dict
:$put =string(gettabwinvar(2, 3, '&nux'))

''
:$put =string(gettabwinvar(2, 3, '&nux', 1))

1
:tabonly
0:"
:/^start/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 50 lines, 530 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test91 = test61; then \
#	  if diff test.out test91.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test91.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test91.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test92.failed test.ok test.out X* viminfo
cp test92.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test92.in
[?1h="test92.in" 48 lines, 852 charactersvim: set ft=vim fenc=utf-8:

Tests if :mksession saves cursor columns correctly in presence of tab and
multibyte characters when fileencoding=utf-8.

STARTTEST
:so mbyte.vim
:if !has('mksession')
:  e! test.ok
:  wq! test.out
:endif
:set sessionoptions=buffers splitbelow fileencoding=utf-8
/^start:
:vsplit
j16|:split
j16|:split
j16|:split
j8|:split
j8|:split
j16|:split
j16|:split
j16|:wincmd l
/^start::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
vim: set ft=vim fenc=utf-8:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 31 lines, 467 characters written:set ff& cpo+=A
/ENDTESTj016|3zl:split
j016|3zl:split
j08|3zl:split
j08|3zl:split
j016|3zl:split
j016|3zl:split
j016|3zl:split
:mksession! test.out
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!
ENDTEST

start:
no multibyte chAracterone leaDing tab
    four leadinG spaces
twoconsecutive tabs
two     tabs    in one line
:so! Xdotest
:so mbyte.vim
:if !has('mksession')

:  :  e! test.ok

:  :  wq! test.out

:  :endif
j016|3zl:split
j016|3zl:split
j08|3zl:split:set sessionoptions=buffers splitbelow fileencoding=utf-8
/^start:
:vsplit
|
j08|3zl:split ||
j016|3zl:split|||
:mksession! test.out|
:new test.out       |
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d  |
:w! test.out                            |
:qa!        |
ENDTEST|
       |
start:|
no multibyte chAracter|
        one leaDing tab|
    four leadinG spaces|
two             consecutive tabs|tabs    in one line     |
:split
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out 
:qa!         
ENDTEST       
              
start:        
no multibyte chAracter
        one leaDing tab
    four leadinG spaces               
two             consecutive tabs
test92.in [+]                           
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!                  
ENDTEST                
                       
start:                
no multibyte chAracter     
        one leaDing tab    
    four leadinG spaces               
two             consecutive tabs        :split
:qa!|
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
:w! test.out|
:qa!|
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
ENDTEST                                 
                                        
start:                                  
no multibyte chAracter                  
        one leaDing tab                 
                                        
    four leadinG spaces

:split
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|

:split
ENDTEST||
start:|
no multibyte chAracter|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
two     tabs    in one line|

:split
|
start:|
no multibyte chAracter|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |
test92.in [+]                            !TESTrt:multibyte chAracterone leaDing tabfour leadinG spacestest92.in [+]                          TESTrt:multibyte chAracterone leaDing tabfour leadinG spacestest92.in [+]                          test.out!TESTrt:multibyte chAracterone leaDing tabtest92.in [+]                          !                                      TEST                                                                          rt:                                    multibyte chAracter                         one leaDing tab                                                          four leadinG spaces:qa!ENDTESTstart:no multibyte chAracter   one leaDing tab   four leadinG spaces!TESrt:multibyte chAracterone leaDing tabfour leadinG spaces

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |
test92.in [+]                            TESTrt:multibyte chAracterone leaDing tabtest92.in [+]                          TESTrt:multibyte chAracterone leaDing tabtest92.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacestest92.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacesconsecutive tabstest92.in [+]                          start:no multibyte chAracter   one leaDing tab   four leadinG spacestwo   consecutive tabsrt:multibyte chAracterone leaDing tabfour leadinG spaces   consecutive tabs

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |
test92.in [+]                            TESTrt:multibyte chAractertest92.in [+]                          rt:multibyte chAracterone leaDing tabtest92.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacestest92.in [+]                          one leaDing tabfour leadinG spacesconsecutive tabstest92.in [+]                          one leaDing tabfour leadinG spacesconsecutive tabstabs    in one linetest92.in [+]                             one leaDing tab   four leadinG spacestwo   consecutive tabstwo     tabs    in one lineone leaDing tabfour leadinG spaces   consecutive tabs     tabs    in one line

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:mksession! test.out
:new test.out
"test.out" 282 lines, 5869 charactersstart:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
256 fewer lines  normal! 016|[+]:w! test.out
"test.out" 26 lines, 611 characters written   :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test92 = test61; then \
#	  if diff test.out test92.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test92.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test92.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test93.failed test.ok test.out X* viminfo
cp test93.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test93.in
[?1h="test93.in" 48 lines, 843 charactersvim: set ft=vim fenc=latin1:

Tests if :mksession saves cursor columns correctly in presence of tab and
multibyte characters when fileencoding=latin1.

STARTTEST
:so mbyte.vim
:if !has('mksession')
:  e! test.ok
:  wq! test.out
:endif
:set sessionoptions=buffers splitbelow fileencoding=latin1
/^start:
:vsplit
j16|:split
j16|:split
j16|:split
j8|:split
j8|:split
j16|:split
j16|:split
j16|:wincmd l
/^start::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
vim: set ft=vim fenc=latin1:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 31 lines, 468 characters written:set ff& cpo+=A
/ENDTESTj016|3zl:split
j016|3zl:split
j08|3zl:split
j08|3zl:split
j016|3zl:split
j016|3zl:split
j016|3zl:split
:mksession! test.out
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!
ENDTEST

start:
no multibyte chAracterone leaDing tab
    four leadinG spaces
twoconsecutive tabs
two     tabs    in one line
:so! Xdotest
:so mbyte.vim
:if !has('mksession')

:  :  e! test.ok

:  :  wq! test.out

:  :endif
j016|3zl:split
j016|3zl:split
j08|3zl:split:set sessionoptions=buffers splitbelow fileencoding=latin1
/^start:
:vsplit
|
j08|3zl:split ||
j016|3zl:split|||
:mksession! test.out|
:new test.out       |
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d  |
:w! test.out                            |
:qa!        |
ENDTEST|
       |
start:|
no multibyte chAracter|
        one leaDing tab|
    four leadinG spaces|
two             consecutive tabs|tabs    in one line     |
:split
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out 
:qa!         
ENDTEST       
              
start:        
no multibyte chAracter
        one leaDing tab
    four leadinG spaces               
two             consecutive tabs
test93.in [+]                           
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!                  
ENDTEST                
                       
start:                
no multibyte chAracter     
        one leaDing tab 
    four leadinG spaces       
two             consecutive tab:split
:qa!|
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
:w! test.out|
:qa!|
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
ENDTEST                                 
                                        
start:                                  
no multibyte chAracter                  
        one leaDing tab                 
                                        
    four leadinG spaces

:split
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|

:split
ENDTEST||
start:|
no multibyte chAracter|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
two     tabs    in one line|

:split
|
start:|
no multibyte chAracter|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |
test93.in [+]                            !TESTrt:multibyte chAracterone leaDing tabfour leadinG spacestest93.in [+]                          TESTrt:multibyte chAracterone leaDing tabfour leadinG spacestest93.in [+]                          test.out!TESTrt:multibyte chAracterone leaDing tabtest93.in [+]                          !                                      TEST                                                                          rt:                                    multibyte chAracter                         one leaDing tab                                                          four leadinG spaces:qa!ENDTESTstart:no multibyte chAracter   one leaDing tab   four leadinG spaces!TESrt:multibyte chAracterone leaDing tabfour leadinG spaces

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |
test93.in [+]                            TESTrt:multibyte chAracterone leaDing tabtest93.in [+]                          TESTrt:multibyte chAracterone leaDing tabtest93.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacestest93.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacesconsecutive tabstest93.in [+]                          start:no multibyte chAracter   one leaDing tab   four leadinG spacestwo   consecutive tabsrt:multibyte chAracterone leaDing tabfour leadinG spaces   consecutive tabs

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |
test93.in [+]                            TESTrt:multibyte chAractertest93.in [+]                          rt:multibyte chAracterone leaDing tabtest93.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacestest93.in [+]                          one leaDing tabfour leadinG spacesconsecutive tabstest93.in [+]                          one leaDing tabfour leadinG spacesconsecutive tabstabs    in one linetest93.in [+]                             one leaDing tab   four leadinG spacestwo   consecutive tabstwo     tabs    in one lineone leaDing tabfour leadinG spaces   consecutive tabs     tabs    in one line

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:mksession! test.out
:new test.out
"test.out" 282 lines, 5869 charactersstart:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
256 fewer lines  normal! 016|[+]:w! test.out
"test.out" 26 lines, 611 characters written   :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test93 = test61; then \
#	  if diff test.out test93.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test93.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test93.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test94.failed test.ok test.out X* viminfo
cp test94.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test94.in
[?1h="test94.in" 256 lines, 4824 charactersTest for Visual mode and operators

Tests for the two kinds of operations: Those executed with Visual mode
followed by an operator and those executed via Operator-pending mode. Also
part of the test are mappings, counts, and repetition with the . command.

Test cases:
- Visual modes (v V CTRL-V) followed by an operator; count; repeating
- Visual mode maps; count; repeating
  - Simple
  - With an Ex command (custom text object)
- Operator-pending mode maps
  - Simple
  - With Ex command moving the cursor
  - With Ex command and Visual selection (custom text object)
- Patch 7.3.879: Properly abort Ex command in Operator-pending mode

STARTTEST
:so small.vim
:set enc=utf-8 nocp viminfo+=nviminfo
:
:" User functions
:function MoveToCap():set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for Visual mode and operators/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 211 lines, 3837 characters written:set ff& cpo+=A
/ENDTESTkv3lyjv3lpgvcxxx^[
:$put ='---'
:
:$put =''
:$put ='gv in exclusive select mode without operation'
:$put ='zzz '
:set selection=exclusive
0v3l^[gvcxxx^[
:$put ='---'
:/^start:/+2,$w! test.out
:q!
ENDTEST

start:

apple banana cherry

line 1 line 1
line 2 line 2
line 3 line 3
line 4 line 4
line 5 line 5
line 6 line 6
:so! Xdotest
:so small.vim
:set enc=utf-8 nocp viminfo+=nviminfo
kv3lyjv3lpgvcxxx^[
:$put ='---'
:
:$put =''
:$put ='gv in exclusive select mode without operation'
:$put ='zzz '
:set selection=exclusive
0v3l^[gvcxxx^[
:$put ='---'
:/^start:/+2,$w! test.out
:q!
ENDTEST

start:

apple banana cherry

line 1 line 1
line 2 line 2
line 3 line 3
line 4 line 4
line 5 line 5
line 6 line 6::" User functions
:function MoveToCap()

:  :  call search('\u', 'W')

:  :endfunction
kv3lyjv3lpgvcxxx^[
:$put ='---':function SelectInCaps()

:  :  let [line1, col1] = searchpos('\u', 'bcnW')

:  :  let [line2, col2] = searchpos('.\u', 'nW')

:  :  call setpos("'<", [0, line1, col1, 0])

:  :  call setpos("'>", [0, line2, col2, 0])

:  :  normal! gv

:  :endfunction
kv3lyjv3lpgvcxxx^[
:$put ='---'
:
:$put =''
:$put ='gv in exclusive select mode without operation'
:$put ='zzz '::" Visual modes followed by operator
/^apple
a-- VISUAL --ple banana cherry banana cherry banan-- VISUAL --
a  cherryy:/^line 1
line 1 line 1 -- VISUAL LINE --INSERT --newline-- INSERT --newline
line 3 line 3 
line 4 line 4 


-- VISUAL LINE --line 5 line 5line 6 line 6xxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxx:/^xxxx



-- VISUAL BLOCK --x
x
xINSERT --  
   


-- INSERT --  
     
xxxx
    xxxx
xxxxxxxx
xxxxxxxxxxxxx
-- VISUAL BLOCK --
-- INSERT ------
    ----
xxxx----
xxxx------- INSERT ------------------:::" Visual mode maps (movement and text object)
:vnoremap W /\u/s-1<CR>
:vnoremap iW :<C-U>call SelectInCaps()<CR>
/^Kiwi


KiwiRaspberryDateWatermelonPeach
-- VISUAL --/\u/s-1
Kiw
-- INSERT --NoRaspberryDateWatermelonPeacho
-- INSERT --NoberryDateWatermelonPeachoberryDateWat
-- VISUAL --rmelonPeachach
:/^Jambu

JambuRambutanBananaTangerineMangoJa
-- VISUAL --:'<,'>call SelectInCaps()
Jamb
-- INSERT ---RambutanBananaTangerineMango-
-- INSERT ---tanBananaTangerineMango-tanBanana
-- VISUAL --
--angerineMangoago
:::" Operator-pending mode maps (movement and text object)
:onoremap W /\u/<CR>
:onoremap <Leader>W :<C-U>call MoveToCap()<CR>
:onoremap iW :<C-U>call SelectInCaps()<CR>
/^Pineapple


PineappleQuinceLoganberryOrangeGrapefruitKiwiZ
/\u/
-QuinceLoganberryOrangeGrapefruitKiwiZ-
/\u/
-- INSERT ---LoganberryOrangeGrapefruitKiwiZ-
/\u/
-- INSERT ---GrapefruitKiwiZ-
/\u/
-- INSERT ---Z
:/^Juniper

JuniperDurianZ
:call MoveToCap()
Whavcre
:call MoveToCap()
Qhevna:/^Lemon

LemonNectarineZ
:call SelectInCaps()
LemonLemonNectarineZ
Lemon:call SelectInCaps()
NewNectarineZwNecta
:call SelectInCaps()
wZ
:::" Patch 7.3.879: Properly abort Operator-pending mode for "dv:<Esc>" etc.
/^zzzz


zzzz
:::set noma | let v:errmsg = ''
:E21: Cannot make changes, 'modifiable' is off:set ma | put = v:errmsg =~# '^E21' ? 'ok' : 'failed'

ok
:
:
:set noma | let v:errmsg = ''
:
:set ma | put = v:errmsg =~# '^E21' ? 'failed' : 'ok'

ok
::$put =''


:$put ='characterwise visual mode: replace last line'

characterwise visual mode: replace last line
:$put ='a'

a
:let @" = 'x'
:let v:errmsg = ''

-- VISUAL --ax
:$put ='---'

---
:$put ='v:errmsg='.v:errmsg

v:errmsg=
::$put =''


:$put ='characterwise visual mode: delete middle line'

characterwise visual mode: delete middle line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c


-- VISUAL --ab
c
~


:$put ='---'
---
::$put =''


:$put ='characterwise visual mode: delete middle two line'

characterwise visual mode: delete middle two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c


-- VISUAL --a 
bc~
~


:$put ='---'
---
::$put =''
:$put ='characterwise visual mode: delete last line'

characterwise visual mode: delete last line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c
-- VISUAL --c
:$put ='---'

---
::$put =''


:$put ='characterwise visual mode: delete last two line'

characterwise visual mode: delete last two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c

-- VISUAL --b 
c~

:$put ='---'
---
::" Select mode maps
:snoremap <lt>End> <End>
:snoremap <lt>Down> <Down>
:snoremap <lt>Del> <Del>
::$put =''


:$put ='characterwise select mode: delete middle line'

characterwise select mode: delete middle line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c


-- SELECT --ab
c
~


:$put ='---'
---
::$put =''


:$put ='characterwise select mode: delete middle two line'

characterwise select mode: delete middle two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c


-- SELECT --a 
bc~
~


:$put ='---'
---
::$put =''
:$put ='characterwise select mode: delete last line'

characterwise select mode: delete last line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c
-- SELECT --c
:$put ='---'

---
::$put =''


:$put ='characterwise select mode: delete last two line'

characterwise select mode: delete last two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c

-- SELECT --b 
c~

:$put ='---'
---
::$put =''


:$put ='linewise select mode: delete middle line'

linewise select mode: delete middle line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

ca 


-- SELECT LINE --bc
~


:$put ='---'
---
::$put =''


:$put ='linewise select mode: delete middle two line'

linewise select mode: delete middle two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

ca 


-- SELECT LINE --a
b 
c~
~


:$put ='---'
---
::$put =''
:$put ='linewise select mode: delete last line'

linewise select mode: delete last line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

cc 
-- SELECT LINE --~

:$put ='---'
---
::$put =''


:$put ='linewise select mode: delete last two line'

linewise select mode: delete last two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

cb 

-- SELECT LINE --b
c 
~~


:$put ='---'
---
::$put =''
:$put ='v_p: replace last character with line register at middle line'

v_p: replace last character with line register at middle line
:$put ='aaa'

aaa
:$put ='bbb'

bbb
:$put ='ccc'

ccc
:-2yank
bb

-- VISUAL --aaa

:$put ='---'


ccc
---
::$put =''


:$put ='v_p: replace last character with line register at middle line selecting

newline'
linewise select mode: delete middle two line
c---linewise select mode: delete last line
ab
---linewise select mode: delete last two line
a---v_p: replace last character with line register at middle line
aaabbaaaccc
---v_p: replace last character with line register at middle line selecting newline
:$put ='aaa'

aaa
:$put ='bbb'

bbb
:$put ='ccc'

ccc
:-2yank
bb

-- VISUAL --baaa
ccc

:$put ='---'

---
::$put =''


:$put ='v_p: replace last character with line register at last line'

v_p: replace last character with line register at last line
:$put ='aaa'

aaa
:$put ='bbb'

bbb
:$put ='ccc'

ccc
:-2yank
cc
-- VISUAL --
aaa

:$put ='---'

---
::$put =''


:$put ='v_p: replace last character with line register at last line selecting n

ewline'
aaa
bbaaaccc
---v_p: replace last character with line register at middle line selecting newline
aaabbaaa
ccc
---v_p: replace last character with line register at last line
aaabbb
ccaaa---v_p: replace last character with line register at last line selecting newline
:$put ='aaa'

aaa
:$put ='bbb'

bbb
:$put ='ccc'

ccc
:-2yank
cc
-- VISUAL --c
aaa

:$put ='---'

---
::$put =''


:$put ='gv in exclusive select mode after operation'

gv in exclusive select mode after operation
:$put ='zzz '

zzz
:$put ='äà '

äÃ
:set selection=exclusive


-- VISUAL --zzz
zzz

-- VISUAL --äÃ
zzz
-- VISUAL --zzzINSERTxxx
:$put ='---'

---
::$put =''


:$put ='gv in exclusive select mode without operation'

gv in exclusive select mode without operation
:$put ='zzz '

zzz
:set selection=exclusive

-- VISUAL --zzz
zzz
-- VISUAL --zzzINSERTxxx
:$put ='---'

---
:/^start:/+2,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New] 123L, 1328C written:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test94 = test61; then \
#	  if diff test.out test94.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test94.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test94.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test95.failed test.ok test.out X* viminfo
cp test95.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test95.in
[?1h="test95.in" 141 lines, 5827 charactersTest for regexp patterns with multi-byte support, using utf-8.
See test64 for the non-multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:so mbyte.vim
:set nocp encoding=utf-8 viminfo+=nviminfo nomore
:" tl is a List of Lists with:
:"    2: test auto/old/new  0: test auto/old  1: test auto/new
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:
:"""" Multi-byte character tests. These will fail unless vim is compiled
:"""" with Multibyte (FEAT_MBYTE) or BIG/HUGE features.:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for regexp patterns with multi-byte support, using utf-8./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 131 lines, 5590 characters written:set ff& cpo+=A
/ENDTEST:endif
:      endfor
:      unlet i
:    endif
:  endfor
:endfor
:unlet t tl e l
:
:" check that 'ambiwidth' does not change the meaning of \p
:set regexpengine=1 ambiwidth=single
:$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=1 ambiwidth=double
:$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=single
:$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=double
:$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')
:
:/\%#=1^Results/,$wq! test.out
ENDTEST

Results of test95:
~



:so! Xdotest
:so small.vim
:so mbyte.vim
:set nocp encoding=utf-8 viminfo+=nviminfo nomore
:endif
:      endfor
:      unlet i
:    endif
:  endfor
:endfor
:unlet t tl e l
:
:" check that 'ambiwidth' does not change the meaning of \p
:set regexpengine=1 ambiwidth=single
:$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=1 ambiwidth=double
:$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=single
:$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=double
:$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')
:
:/\%#=1^Results/,$wq! test.out
ENDTEST

Results of test95:
~


:" tl is a List of Lists with:
:"    2: test auto/old/new  0: test auto/old  1: test auto/new
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
::"""" Multi-byte character tests. These will fail unless vim is compiled
:"""" with Multibyte (FEAT_MBYTE) or BIG/HUGE features.
:call add(tl, [2, '[[:alpha:][=a=]]\+', '879 aiaãâaiuvna ', 'aiaãâaiuvna'])
:call add(tl, [2, '[[=a=]]\+', 'ddaãâbcd', 'aãâ'])^I^I^I^I^I^I^I^I" equivalence

classes
:endif


:call add(tl, [2, '[^ม ]\+', 'มม oijasoifjos ifjoisj f osij j มมมมม abcd', 'oij

asoifjos'])
:endif


:call add(tl, [2, ' [^ ]\+', 'start มabcdม ', ' มabcdม'])
:call add(tl, [2, '[ม[:alpha:][=a=]]\+', '879 aiaãมâมaiuvna ', 'aiaãมâมaiuvna']

):endif


::" this is not a normal "i" but 0xec
:call add(tl, [2, '\p\+', 'ìa', 'ìa'])
:call add(tl, [2, '\p*', 'aあ', 'aあ'])
::"""" Test recognition of some character classes
:call add(tl, [2, '\i\+', '&*¨xx ', 'xx'])
:call add(tl, [2, '\f\+', '&*<9f>fname ', 'fname'])
::"""" Test composing character matching
:call add(tl, [2, '.ม', 'xมม่x yมy', 'yม'])
:call add(tl, [2, '.มม่', 'xมม่x yมy', 'xมม่'])
:call add(tl, [2, "\u05b9", " x\u05b9 ", "x\u05b9"])
:call add(tl, [2, ".\u05b9", " x\u05b9 ", "x\u05b9"])
:call add(tl, [2, "\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, ".\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, "\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, ".\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, "\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])
:call add(tl, [2, ".\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])
:call add(tl, [2, "\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])
:call add(tl, [2, ".\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])
:call add(tl, [1, "\u05b9\u05bb", " y\u05b9 x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, ".\u05b9\u05bb", " y\u05bb x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, "a", "ca\u0300t"])
:call add(tl, [2, "ca", "ca\u0300t"])
:call add(tl, [2, "a\u0300", "ca\u0300t", "a\u0300"])
:call add(tl, [2, 'a\%C', "ca\u0300t", "a\u0300"])
:call add(tl, [2, 'ca\%C', "ca\u0300t", "ca\u0300"])
:call add(tl, [2, 'ca\%Ct', "ca\u0300t", "ca\u0300t"])
:::"""" Test \Z
:call add(tl, [2, 'ú\Z', 'x'])
:call add(tl, [2, 'יהוה\Z', 'יהוה', 'יהוה'])
:call add(tl, [2, 'ייְהווָה\Z', 'יהוה', 'יהוה'])
:call add(tl, [2, 'יהוה\Z', 'ייְהווָה', 'ייְהווָה'])
:call add(tl, [2, 'ייְהווָה\Z', 'ייְהווָה', 'ייְהווָה'])
:call add(tl, [2, 'ייְ\Z', 'ווְייַ', 'ייַ'])
:call add(tl, [2, "ק\u200d\u05b9x\\Z", "xק\u200d\u05b9xy", "ק\u200d\u05b9x"])
:call add(tl, [2, "ק\u200d\u05b9x\\Z", "xק\u200dxy", "ק\u200dx"])
:call add(tl, [2, "ק\u200dx\\Z", "xק\u200d\u05b9xy", "ק\u200d\u05b9x"])
:call add(tl, [2, "ק\u200dx\\Z", "xק\u200dxy", "ק\u200dx"])
:call add(tl, [2, "\u05b9\\Z", "xyz"])
:call add(tl, [2, "\\Z\u05b9", "xyz"])
:call add(tl, [2, "\u05b9\\Z", "xy\u05b9z", "y\u05b9"])
:call add(tl, [2, "\\Z\u05b9", "xy\u05b9z", "y\u05b9"])
:call add(tl, [1, "\u05b9\\+\\Z", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])
:call add(tl, [1, "\\Z\u05b9\\+", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])
::"""" Combining different tests and features
:call add(tl, [2, '[^[=a=]]\+', 'ddaãâbcd', 'dd'])
::"""" Run the tests
::"
:for t in tl

:  :  let re = t[0]

:  :  let pat = t[1]

:  :  let text = t[2]

:  :  let matchidx = 3

:  :  for engine in [0, 1, 2]

:    :    if engine == 2 && re == 0 || engine == 1 && re == 1

:      :      continue

:      :    endif

:    :    let &regexpengine = engine

:    :    try

:      :      let l = matchlist(text, pat)

:      :    catch

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", caused an exception: \"' . v:exception . '\"'

:      :    endtry

:    :" check the match itself

:    :    if len(l) == 0 && len(t) > matchidx

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", did not match, expected: \"' . t[matchidx] . '\"'

:      :    elseif len(l) > 0 && len(t) == matchidx

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", match: \"' . l[0] . '\", expected no match'

:      :    elseif len(t) > matchidx && l[0] != t[matchidx]

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te
t . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"'

:      :    else

:      :      $put ='OK ' . engine . ' - ' . pat

:      :    endif

:    :    if len(l) > 0

:      :"   check all the nine submatches

:      :      for i in range(1, 9)

::        if len(t) <= matchidx + i

::          let e = ''

::        else

::          let e = t[matchidx + i]

::        endif

::        if l[i] != e

::          $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: 
"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"'

::        endif

::      endfor

:      :      unlet i

:      :    endif

:    :  endfor

:  :endfor
OK 2 - ק<200d>x\Z
OK 0 - ק<200d>x\Z
OK 1 - ק<200d>x\Z
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+

:unlet t tl e l
::" check that 'ambiwidth' does not change the meaning of \p
:set regexpengine=1 ambiwidth=single
OK 2 - ק<200d>x\Z
OK 0 - ק<200d>x\Z
OK 1 - ק<200d>x\Z
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+

:$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')

eng 1 ambi single: 0
:set regexpengine=1 ambiwidth=double
OK 0 - ק<200d>x\Z
OK 1 - ק<200d>x\Z
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+
eng 1 ambi single: 0

:$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')

eng 1 ambi double: 0
:set regexpengine=2 ambiwidth=single
OK 1 - ק<200d>x\Z
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+
eng 1 ambi single: 0
eng 1 ambi double: 0

:$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')

eng 2 ambi single: 0
:set regexpengine=2 ambiwidth=double
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+
eng 1 ambi single: 0
eng 1 ambi double: 0
eng 2 ambi single: 0

:$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')

eng 2 ambi double: 0
::/\%#=1^Results/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New] 140L, 2022C written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test95 = test61; then \
#	  if diff test.out test95.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test95.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test95.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test98.failed test.ok test.out X* viminfo
cp test98.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test98.in
[?1h="test98.in" 43 lines, 908 charactersTest for 'scrollbind' causing an unexpected scroll of one of the windows.
STARTTEST
:so small.vim
:" We don't want the status line to cause problems:
:set laststatus=0
:let g:totalLines = &lines * 20
:let middle = g:totalLines / 2
:wincmd n
:wincmd o
:for i in range(1, g:totalLines)
:    call setline(i, 'LINE ' . i)
:endfor
:exe string(middle)
:normal zt
:normal M
:aboveleft vert new
:for i in range(1, g:totalLines)
:    call setline(i, 'line ' . i)
:endfor
:exe string(middle)
:normal zt
:normal M
:" Execute the following two command at once to reproduce the problem.:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for 'scrollbind' causing an unexpected scroll of one of the windows./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 35 lines, 791 characters written:set ff& cpo+=A
/ENDTEST















:setl scb | wincmd p
:setl scb
:wincmd w
:let topLineLeft = line('w0')
:wincmd p
:let topLineRight = line('w0')
:setl noscrollbind
:wincmd p
:setl noscrollbind
:q!
:%del _
:call setline(1, 'Difference between the top lines (left - right): ' . string(toopLineLeft - topLineRight))
:w! test.out
:brewind
ENDTEST

:so! Xdotest
:so small.vim
:" We don't want the status line to cause problems:
:set laststatus=0
:let g:totalLines = &lines * 20
:let middle = g:totalLines / 2
:wincmd n
~~~~~~~~~~
[No Name]                                                                       :wincmd o
~~~~~~~~~~~
~:for i in range(1, g:totalLines)

:  :    call setline(i, 'LINE ' . i)

:  :endfor
LINE 1
LINE 2
LINE 3
LINE 4
LINE 5
LINE 6
LINE 7
LINE 8
LINE 9
LINE 10
LINE 11
LINE 12
LINE 13
LINE 14
LINE 15
LINE 16
LINE 17
LINE 18
LINE 19
LINE 20
LINE 21
LINE 22
LINE 23:exe string(middle)
LINE 229
LINE 230
LINE 231
LINE 232
LINE 233
LINE 234
LINE 235
LINE 236
LINE 237
LINE 238
LINE 239
LINE 240
LINE 241
LINE 242
LINE 243
LINE 244
LINE 245
LINE 246
LINE 247
LINE 248
LINE 249
LINE 250
LINE 251:normal zt











LINE 252
LINE 253
LINE 254
LINE 255
LINE 256
LINE 257
LINE 258
LINE 259
LINE 260
LINE 261
LINE 262:normal M
:aboveleft vert new
        |||||||||||||||||||||||~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       LINE 240LINE 241LINE 242LINE 243LINE 244LINE 245LINE 246LINE 247LINE 248LINE 249LINE 250LINE 251LINE 252LINE 253LINE 254LINE 255LINE 256LINE 257LINE 258LINE 259LINE 260LINE 261LINE 262:for i in range(1, g:totalLines)

:  :    call setline(i, 'line ' . i)

:  :endfor
line 1|
line 2|
line 3                                  
line 4                                  
line 5                                  
line 6                                  
line 7                                  
line 8                                  
line 9                                  
line 10                                 
line 11                                 
line 12                                 
line 13                                 
line 14                                 
line 15                                 
line 16                                 
line 17                                 
line 18                                 
line 19                                 
line 20                                 
line 21                                 
line 22                                 
line 23                                 LINE 240LINE 241:exe string(middle)
2293023123223323423523623723823924024124224324424524624748495051:normal zt
line 240                                
line 241                                
line 242                                
line 243                                
line 244                                
line 245                                
line 246                                
line 247                                
line 248                                
line 249                                
line 250                                
line 251                                
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        line 252
line 253
line 254
line 255
line 256
line 257
line 258
line 259
line 260
line 261
line 262:normal M
:" Execute the following two command at once to reproduce the problem.
:setl scb | wincmd p
:setl scb
:wincmd w
:let topLineLeft = line('w0')
:wincmd p
:let topLineRight = line('w0')
:setl noscrollbind
:wincmd p
:setl noscrollbind
:q!
LINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINE:%del _
~~~~~~~~~~~~~~~~~~~~~~
--No lines in buffer--:call setline(1, 'Difference between the top lines (left - right): ' . string(t

opLineLeft - topLineRight))
Difference between the top lines (left - right): 0:w! test.out
"test.out" [New File] 1 line, 51 characters written:brewind
"test98.in" 43 lines, 908 characters:normal M:" Execute the following two command at once to reproduce the problem.
:setl scb | wincmd p
:setl scb
:wincmd w
:let topLineLeft = line('w0')
:wincmd p
:let topLineRight = line('w0')
:setl noscrollbind
:wincmd p
:setl noscrollbind
:q!
:%del _
:call setline(1, 'Difference between the top lines (left - right): ' . string(toopLineLeft - topLineRight))
:w! test.out
:brewind
ENDTESTSTARTTEST
:qa!
ENDTEST/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 1 line, 5 characters written:set ff& cpo+=A



/ENDTEST
:so! Xdotest
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test98 = test61; then \
#	  if diff test.out test98.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test98.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test98.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test99.failed test.ok test.out X* viminfo
cp test99.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test99.in
[?1h="test99.in" 69 lines, 1400 charactersTests for regexp with multi-byte encoding and various magic settings.
Test matchstr() with a count and multi-byte chars.
See test44 for exactly the same test with re=1.

STARTTEST
:so mbyte.vim
:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
:set re=2
/^1
/a*b\{2}c\+/e
x/\Md\*e\{2}f\+/e
x:set nomagic
/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$
x:set magic
/\v(a)(b)\2\1\1/e
x/\V[ab]\(\[xy]\)\1
x:" Now search for multi-byte without composing char
/ม
x:" Now search for multi-byte with composing char
f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with multi-byte encoding and various magic settings./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 43 lines, 931 characters written:set ff& cpo+=A
/ENDTEST:" l Test what 7.3.192 fixed
/^l
:s/ \?/ /g
:?^1?,$w! test.out
:e! test.out
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
:so! Xdotest
:so mbyte.vim
:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
:" l Test what 7.3.192 fixed
/^l
:s/ \?/ /g
:?^1?,$w! test.out
:e! test.out
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
:" Test \%u, [\u] and friends
/\%u20ac

/[\u4f7f\u5929]\+

/\%U12345678

/[\U1234abcd\u1234\uabcd]

/\%d21879b

:" Test backwards search from a multi-byte char
/x

:"
:" l Test what 7.3.192 fixed
/^l

2 d dd dee deeff
3 g gg ghh ghhii
4 j jj jkk jkkll
5 m mm mnn mnnoo
#@/bin/sh -c "if test -f test.out -a test99 = test61; then \
#	  if diff test.out test99.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test99.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test99.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test103.failed test.ok test.out X* viminfo
cp test103.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test103.in
[?1h="test103.in" 37 lines, 823 charactersTest for visual mode not being reset causing E315 error.
STARTTEST
:so small.vim
:enew
:let g:msg="Everything's fine."
:function! TriggerTheProblem()
:" At this point there is no visual selection because :call reset it.
:" Let's restore the selection:
:normal gv
:'<,'>del _
:try
:exe "normal \<Esc>"
:catch /^Vim\%((\a\+)\)\=:E315/
:echom 'Snap! E315 error!'
:let g:msg='Snap! E315 error!'
:endtry
:endfunction
:enew
:setl buftype=nofile
:call append(line('$'), 'Delete this line.')
:"
:"
:" NOTE: this has to be done by a call to a function because executing :del the:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for visual mode not being reset causing E315 error./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 29 lines, 723 characters written:set ff& cpo+=A
/ENDTEST









:"ex-way will require the colon operator which resets the visual mode thuus
:"preventing the problem:
:"
GV:call TriggerTheProblem()
:%del _
:call append(line('$'), g:msg)
:w! test.out
:brewind
ENDTEST

:so! Xdotest
:so small.vim
:enew
~~~~~~~~~~~~
~~~~~~~~~
~:let g:msg="Everything's fine."
:function! TriggerTheProblem()

:  :^I" At this point there is no visual selection because :call reset it.

:  :^I" Let's restore the selection:

:  :^Inormal gv

:  :^I'<,'>del _

:  :^Itry

:    :^I^Iexe "normal \<Esc>"

:    :^Icatch /^Vim\%((\a\+)\)\=:E315/

:    :^I^Iechom 'Snap! E315 error!'

:    :^I^Ilet g:msg='Snap! E315 error!'

:    :^Iendtry

:  :endfunction
~
~
~
~
~
~
~
~
~
~:enew
:setl buftype=nofile
:call append(line('$'), 'Delete this line.')
Delete this line.:"
:"
:" NOTE: this has to be done by a call to a function because executing :del the
:"       ex-way will require the colon operator which resets the visual mode th

us:"       preventing the problem:
:"

Delete this line. 
:'<,'>call TriggerTheProblem()
~:%del _
--No lines in buffer--:call append(line('$'), g:msg)
Everything's fine.:w! test.out
"test.out" [New File] 2 lines, 20 characters written:brewind
"test103.in" 37 lines, 823 characters:endtry
:endfunction:enew
:setl buftype=nofile
:call append(line('$'), 'Delete this line.')
:"
:"
:" NOTE: this has to be done by a call to a function because executing :del the
:"ex-way will require the colon operator which resets the visual mode thuus
:"preventing the problem:
:"
GV:call TriggerTheProblem()
:%del _
:call append(line('$'), g:msg)
:w! test.out
:brewind
ENDTESTSTARTTEST
:qa!
ENDTEST/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 1 line, 5 characters written:set ff& cpo+=A



/ENDTEST
:so! Xdotest
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test103 = test61; then \
#	  if diff test.out test103.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test103.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test103.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test104.failed test.ok test.out X* viminfo
cp test104.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test104.in
[?1h="test104.in" 30 lines, 698 charactersTests for :let.  vim: set ft=vim ts=8 :

STARTTEST
:so small.vim
:set runtimepath+=./sautest
:" Test to not autoload when assigning.  It causes internal error.
:try
:  let Test104#numvar = function('tr')
:  $put ='OK: ' . string(Test104#numvar)
:catch
:  $put ='FAIL: ' . v:exception
:endtry
:let a = 1
:let b = 2
:for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0  == 1 ? "a" : "b"}']
:  try
:    redir => messages
:    execute 'let' letargs
:    redir END
:    $put ='OK:'
:    $put =split(substitute(messages, '\n', '\0  ', 'g'), '\n')
:  catch:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :let.  vim: set ft=vim ts=8 :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 24 lines, 618 characters written:set ff& cpo+=A
/ENDTEST





:    $put ='FAIL: ' . v:exception
:    redir END
:  endtry
:endfor
:/^Results/,$wq! test.out
ENDTEST

:so! Xdotest
:so small.vim
:set runtimepath+=./sautest
:" Test to not autoload when assigning.  It causes internal error.
:try

:  :  let Test104#numvar = function('tr')

:  :  $put ='OK: ' . string(Test104#numvar)

:  :catch

:  :  $put ='FAIL: ' . v:exception

:  :endtry
:catch
:  $put ='FAIL: ' . v:exception
:endtry
:let a = 1
:let b = 2
:for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0  == 1 ? "a" : "b"}']
:  try:    redir => messages
:    execute 'let' letargsEND$put ='OK:'$put =split(substitute(messages, '\n', '\0  ', 'g'), '\n')
:  catch'FAIL: ' . v:exception  redir END
:  endtryendfor/^Results/,$wq! test.out
ENDTESTResults of test104:
OK: function('tr')
:let a = 1
:let b = 2
:for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0

== 1 ? "a" : "b"}']
:  :  try

:    :    redir => messages

:    :    execute 'let' letargs

a#1

b#2

:    :    redir END

:    :    $put ='OK:'

:    :    $put =split(substitute(messages, '\n', '\0  ', 'g'), '\n')

:    :  catch

:    :    $put ='FAIL: ' . v:exception

:    :    redir END

:    :  endtry

:  :endfor

b#2

b#2

a#1

a#1

b#2

Press ENTER or type command to continue:/^Results/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 13 lines, 244 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test104 = test61; then \
#	  if diff test.out test104.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test104.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test104.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test107.failed test.ok test.out X* viminfo
cp test107.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test107.in
[?1h="test107.in" 38 lines, 717 charactersTests for adjusting window and contents     vim: set ft=vim :

STARTTEST
:so small.vim
:new
:call setline(1, range(1,256))
:let r=[]
:func! GetScreenStr(row)
:   let str = ""
:   for c in range(1,3)
:let str .= nr2char(screenchar(a:row, c))
:   endfor
:   return str
:endfunc
:
:exe ":norm! \<C-W>t\<C-W>=1Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p
:call add(r, [line("w0"), s3])
:
:exe ":norm! \<C-W>t\<C-W>=50Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for adjusting window and contents     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 32 lines, 628 characters written:set ff& cpo+=A
/ENDTEST












:call add(r, [line("w0"), s3])
:
:exe ":norm! \<C-W>t\<C-W>=59Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
::wincmd p
:call add(r, [line("w0"), s3])
:
:bwipeout!
:$put=r
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
ENDTEST

:so! Xdotest
:so small.vim
:new
~~~~
~~~~~
~
[No Name]                                                                       :wincmd pcall add(r, [line("w0"), s3])bwipeout!
:$put=rcall garbagecollect(1)
:"/^start:/,$wq! test.out
ENDTESTtest107.in                                                                      :call setline(1, range(1,256))
1
2
3
4
5
6
7
8
9
10
11[+]:let r=[]
:func! GetScreenStr(row)

:  :   let str = ""

:  :   for c in range(1,3)

:    :       let str .= nr2char(screenchar(a:row, c))

:    :   endfor

:  :   return str

:  :endfunc
1
2
3
4
5
6::exe ":norm! \<C-W>t\<C-W>=1Gzt\<C-W>w\<C-W>+"
[No Name] [+]                                                                   :let s3=GetScreenStr(1)test107.in                                                                      :let s3=GetScreenStr(1)
:wincmd p
[No Name] [+]                                                                   test107.in                                                                      :call add(r, [line("w0"), s3])
::exe ":norm! \<C-W>t\<C-W>=50Gzt\<C-W>w\<C-W>+"
50
51
52
53
54
55
56
57
58
59
[No Name] [+]                                                                   :let s3=GetScreenStr(1)
::wincmd p
:call add(r, [line("w0"), s3])
:
:bwipeout!
:$put=r
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
ENDTEST

test107.in                                                                      

:let s3=GetScreenStr(1)
:wincmd p
[No Name] [+]                                                                   test107.in                                                                      :call add(r, [line("w0"), s3])
::exe ":norm! \<C-W>t\<C-W>=59Gzt\<C-W>w\<C-W>+"
59
60
61
62
63
64
65
66
67
68
[No Name] [+]                                                                   :let s3=GetScreenStr(1)
::wincmd p
:call add(r, [line("w0"), s3])
:
:bwipeout!
:$put=r
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
ENDTEST

test107.in                                                                      

:let s3=GetScreenStr(1)
::wincmd p
[No Name] [+]                                                                   test107.in                                                                      :call add(r, [line("w0"), s3])
::bwipeout!
::exe ":norm! \<C-W>t\<C-W>=1Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p
:call add(r, [line("w0"), s3])
::exe ":norm! \<C-W>t\<C-W>=50Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p
:call add(r, [line("w0"), s3])
:exe ":norm! \<C-W>t\<C-W>=59Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
::wincmd pcall add(r, [line("w0"), s3])bwipeout!
:$put=rcall garbagecollect(1)
:":/^start:/,$wq! test.out
ENDTEST:$put=r
3 more lines



start:
[1, '1  ']
[50, '50 ']
[59, '59 ']3 more lines:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 4 lines, 42 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test107 = test61; then \
#	  if diff test.out test107.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test107.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test107.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test108.failed test.ok test.out X* viminfo
cp test108.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test108.in
[?1h="test108.in" 88 lines, 1329 charactersTests for backtrace debug commands.     vim: set ft=vim :

STARTTEST
:so small.vim
:lang mess C
:function! Foo()
:   let var1 = 1
:   let var2 = Bar(var1) + 9
:   return var2
:endfunction
:
:function! Bar(var)
:    let var1 = 2 + a:var
:    let var2 = Bazz(var1) + 4
:    return var2
:endfunction
:
:function! Bazz(var)
:    let var1 = 3 + a:var
:    let var3 = "another var"
:    return var1
:endfunction
:new:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for backtrace debug commands.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 83 lines, 1251 characters written:set ff& cpo+=A
/ENDTESTup
b
echo "fil is not frame or finish, it is file"
fil
echo "\n- relative backtrace movement\n"
fr -1
frame
fra +1
fram
echo "\n- go beyond limits does not crash\n"
fr 100
fra
frame -40
fram
echo "\n- final result 19:"
cont
:0debuggreedy
:redir END
:$put =out
:w! test.out
:qa!
ENDTEST


:so! Xdotest
:so small.vim
:lang mess C
:function! Foo()

:  :   let var1 = 1

:  :   let var2 = Bar(var1) + 9

:  :   return var2

:  :endfunction
up
b
echo "fil is not frame or finish, it is file"
fil
::function! Bar(var)

:  :    let var1 = 2 + a:var

:  :    let var2 = Bazz(var1) + 4

:  :    return var2

:  :endfunction
up
b
echo "fil is not frame or finish, it is file"
fil
::function! Bazz(var)

:  :    let var1 = 3 + a:var

:  :    let var3 = "another var"

:  :    return var1

:  :endfunction
up
b
echo "fil is not frame or finish, it is file"
fil
:new
~~~~~~~~~~
[No Name]                                                                       echo "\n- final result 19:"
cont:0debuggreedy
:redir END$put =out
:w! test.out
:qa!ENDTESTtest108.in                                                                      :debuggreedy
:redir => out
:debug echo Foo()
Entering Debug mode.  Type "cont" to continue.

cmd: echo Foo()

>step

function Foo

line 1: let var1 = 1

>step

function Foo

line 2: let var2 = Bar(var1) + 9

>step

function Foo[2]..Bar

line 1: let var1 = 2 + a:var

>step

function Foo[2]..Bar

line 2: let var2 = Bazz(var1) + 4

>step

function Foo[2]..Bar[2]..Bazz

line 1: let var1 = 3 + a:var

>step

function Foo[2]..Bar[2]..Bazz

line 2: let var3 = "another var"

>echo "- show backtrace:\n"

- show backtrace:

>backtrace

  2 function Foo[2]

  1 Bar[2]

->0 Bazz

line 2: let var3 = "another var"

>echo "\nshow variables on different levels:\n"


show variables on different levels:

>echo var1

6
>up

>back

  2 function Foo[2]

->1 Bar[2]

  0 Bazz

line 2: let var3 = "another var"

>echo var1

3
>u

>bt

->2 function Foo[2]

  1 Bar[2]

  0 Bazz

line 2: let var3 = "another var"

>echo var1

1
>echo "\n- undefined vars:\n"


- undefined vars:

>step

function Foo[2]..Bar[2]..Bazz

line 3: return var1

>frame 2

>echo "undefined var3 on former level:"

undefined var3 on former level:

>echo var3

Error detected while processing function Foo[2]..Bar[2]..Bazz:

line    3:

E121: Undefined variable: var3

E15: Invalid expression: var3

>fr 0

>echo "here var3 is defined with \"another var\":"

here var3 is defined with "another var":

>echo var3

another var

>step

function Foo[2]..Bar[2]..Bazz

line 3: End of function

>step

function Foo[2]..Bar

line 3: return var2

>step

function Foo[2]..Bar

line 3: End of function

>up

>echo "\nundefined var2 on former level"


undefined var2 on former level

>echo var2

Error detected while processing function Foo[2]..Bar:

line    3:

E121: Undefined variable: var2

E15: Invalid expression: var2

>down

>echo "here var2 is defined with 10:"

here var2 is defined with 10:

>echo var2

10

>echo "\n- backtrace movements:\n"


- backtrace movements:

>b

  1 function Foo[2]

->0 Bar

line 3: End of function

>echo "\nnext command cannot go down, we are on bottom\n"


next command cannot go down, we are on bottom

>down

frame is zero

>up

>echo "\nnext command cannot go up, we are on top\n"


next command cannot go up, we are on top

>up

frame at highest level: 1

>b

->1 function Foo[2]

  0 Bar

line 3: End of function

>echo "fil is not frame or finish, it is file"

fil is not frame or finish, it is file

>fil

"[No Name]" --No lines in buffer--

>echo "\n- relative backtrace movement\n"


- relative backtrace movement

>fr -1

>frame

  1 function Foo[2]

->0 Bar

line 3: End of function

>fra +1

>fram

->1 function Foo[2]

  0 Bar

line 3: End of function

>echo "\n- go beyond limits does not crash\n"


- go beyond limits does not crash

>fr 100

frame at highest level: 1

>fra

->1 function Foo[2]

  0 Bar

line 3: End of function

>frame -40

frame is zero

>fram

  1 function Foo[2]

->0 Bar

line 3: End of function

>echo "\n- final result 19:"


- final result 19:

>cont

19

Press ENTER or type command to continue:0debuggreedy
~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       fram
echo "\n- final result 19:"
cont
:0debuggreedy
:redir END
:$put =out
:w! test.out
:qa!
ENDTEST

test108.in                                                                      :redir END
:$put =out
83 more lines->1 function Foo[2]
  0 Bar
line 3: End of function
frame is zero
  1 function Foo[2]
->0 Bar
line 3: End of function- final result 19:
19[+]:w! test.out
"test.out" [New File] 84 lines, 1390 characters writtentest.out     :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test108 = test61; then \
#	  if diff test.out test108.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test108.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test108.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_autocmd_option.failed test.ok test.out X* viminfo
cp test_autocmd_option.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autocmd_option.in
[?1h="test_autocmd_option.in" 77 lines, 2954 charactersTest for option autocommand

STARTTEST
:so small.vim
:if !has("eval") || !has("autocmd") || !exists("+autochdir") | e! test.ok | w! ttest.out | qa! | endif
:fu! AutoCommand(match)
:let c=g:testcase
:let item=remove(g:options, 0)
:let c.=printf("Expected: Name: <%s>, Oldval: <%s>, NewVal: <%s>, Scope:  <%s>\n", item[0], item[1], item[2], item[3])
:let c.=printf("Autocmd Option: <%s>,", a:match)
:let c.=printf(" OldVal: <%s>,", v:option_old)
:let c.=printf(" NewVal: <%s>,", v:option_new)
:let c.=printf(" Scope: <%s>\n", v:option_type)
:call setreg('r', printf("%s\n%s", getreg('r'), c))
:endfu
:au OptionSet * :call AutoCommand(expand("<amatch>"))
:let g:testcase="1: Setting number option\n"
:let g:options=[['number', 0, 1, 'global']]
:set nu
:let g:testcase="2: Setting local number option\n"
:let g:options=[['number', 1, 0, 'local']]:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for option autocommand/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 72 lines, 2896 characters written:set ff& cpo+=A
/ENDTEST:let g:testcase="13: Setting option backspace through setbufvar()\n"
:let g:options=[['backup', '', '1', 'local']]
: "try twice, first time, shouldn't trigger because option name is invalid, secoond time, it should trigger
:call setbufvar(1, '&l:bk', 1)
: "should trigger, use correct option name
:call setbufvar(1, '&backup', 1)
:let g:testcase="14: Setting number option using setwinvar\n"
:let g:options=[['number', 0, 1, 'local']]
:call setwinvar(0, '&number', 1)
:" Write register now, because next test shouldn't output anything.
:$put r
:let @r=''
:let g:testcase="\n15: Setting key option, shouldn't trigger\n"
:let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
:setlocal key=blah
:setlocal key=
:$put =g:testcase
:$put r
:/^dummy text/,$w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
:if !has("eval") || !has("autocmd") || !exists("+autochdir") | e! test.ok | w! 

test.out | qa! | endif
:let g:testcase="13: Setting option backspace through setbufvar()\n"
:fu! AutoCommand(match)

:  :^Ilet c=g:testcase

:  :       let item=remove(g:options, 0)

:  :       let c.=printf("Expected: Name: <%s>, Oldval: <%s>, NewVal: <%s>, Sco

pe: <%s>\n", item[0], item[1], item[2], item[3])

:  :       let c.=printf("Autocmd Option: <%s>,", a:match)

:  :       let c.=printf(" OldVal: <%s>,", v:option_old)

:  :       let c.=printf(" NewVal: <%s>,", v:option_new)

:  :       let c.=printf(" Scope: <%s>\n", v:option_type)

:  :       call setreg('r', printf("%s\n%s", getreg('r'), c))

:  :endfu
:let g:testcase="13: Setting option backspace through setbufvar()\n"
:let g:options=[['backup', '', '1', 'local']]
: "try twice, first time, shouldn't trigger because option name is invalid, secoond time, it should trigger
:call setbufvar(1, '&l:bk', 1)
: "should trigger, use correct option name
:call setbufvar(1, '&backup', 1)
:let g:testcase="14: Setting number option using setwinvar\n"
:let g:options=[['number', 0, 1, 'local']]
:call setwinvar(0, '&number', 1)
:au OptionSet * :call AutoCommand(expand("<amatch>"))
:let g:testcase="1: Setting number option\n"
:let g:options=[['number', 0, 1, 'global']]
:set nu
     56 :let g:testcase="13: Setting option backspace through setbufvar()\n"
     57 :let g:options=[['backup', '', '1', 'local']]
     58 : "try twice, first time, shouldn't trigger because option name is invallid, second time, it should trigger
     59 :call setbufvar(1, '&l:bk', 1)
     60 : "should trigger, use correct option name
     61 :call setbufvar(1, '&backup', 1)
     62 :let g:testcase="14: Setting number option using setwinvar\n"
     63 :let g:options=[['number', 0, 1, 'local']]
     64 :call setwinvar(0, '&number', 1)
     65 :" Write register now, because next test shouldn't output anything.
     66 :$put r
     67 :let @r=''
     68 :let g:testcase="\n15: Setting key option, shouldn't trigger\n"
     69 :let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
     70 :setlocal key=blah
     71 :setlocal key=
     72 :$put =g:testcase
     73 :$put r
     74 :/^dummy text/,$w! test.out
     75 :qa!
     76 ENDTEST
     77 dummy text:let g:testcase="2: Setting local number option\n"
:let g:options=[['number', 1, 0, 'local']]
:setlocal nonu
:let g:testcase="13: Setting option backspace through setbufvar()\n":let g:options=[['backup', '', '1', 'local']]: "try twice, first time, shouldn't trigger because option name is invalid, secoond time, it should trigger:call setbufvar(1, '&l:bk', 1): "should trigger, use correct option name:call setbufvar(1, '&backup', 1):let g:testcase="14: Setting number option using setwinvar\n":let g:options=[['number', 0, 1, 'local']]:call setwinvar(0, '&number', 1):" Write register now, because next test shouldn't output anything.:$put r:let @r='':let g:testcase="\n15: Setting key option, shouldn't trigger\n":let g:options=[['key', 'invalid', 'invalid1', 'invalid']]:setlocal key=blah:setlocal key=:$put =g:testcase:$put r:/^dummy text/,$w! test.out:qa!ENDTESTdummy text:let g:testcase="3: Setting global number option\n"
:let g:options=[['number', 1, 0, 'global']]
:setglobal nonu
:let g:testcase="4: Setting local autoindent option\n"
:let g:options=[['autoindent', 0, 1, 'local']]
:setlocal ai
:let g:testcase="5: Setting global autoindent option\n"
:let g:options=[['autoindent', 0, 1, 'global']]
:setglobal ai
:let g:testcase="6: Setting global autoindent option\n"
:let g:options=[['autoindent', 1, 0, 'global']]
:set ai!
: Should not print anything, use :noa
E492: Not an editor command: Should not print anything, use :noa:noa :set nonu
:let g:testcase="7: Setting several global list and number option\n"
:let g:options=[['list', 0, 1, 'global'], ['number', 0, 1, 'global']]
:set list nu
     56 :let g:testcase="13: Setting option backspace through setbufvar()\n"$
     57 :let g:options=[['backup', '', '1', 'local']]$
     58 : "try twice, first time, shouldn't trigger because option name is invallid, second time, it should trigger$
     59 :call setbufvar(1, '&l:bk', 1)$
     60 : "should trigger, use correct option name$
     61 :call setbufvar(1, '&backup', 1)$
     62 :let g:testcase="14: Setting number option using setwinvar\n"$
     63 :let g:options=[['number', 0, 1, 'local']]$
     64 :call setwinvar(0, '&number', 1)$
     65 :" Write register now, because next test shouldn't output anything.$
     66 :$put r$
     67 :let @r=''$
     68 :let g:testcase="\n15: Setting key option, shouldn't trigger\n"$
     69 :let g:options=[['key', 'invalid', 'invalid1', 'invalid']]$
     70 :setlocal key=blah$
     71 :setlocal key=$
     72 :$put =g:testcase$
     73 :$put r$
     74 :/^dummy text/,$w! test.out$
     75 :qa!$
     76 ENDTEST$
     77 dummy text$:noa set nolist nonu
:let g:testcase="13: Setting option backspace through setbufvar()\n":let g:options=[['backup', '', '1', 'local']]: "try twice, first time, shouldn't trigger because option name is invalid, secoond time, it should trigger:call setbufvar(1, '&l:bk', 1): "should trigger, use correct option name:call setbufvar(1, '&backup', 1):let g:testcase="14: Setting number option using setwinvar\n":let g:options=[['number', 0, 1, 'local']]:call setwinvar(0, '&number', 1):" Write register now, because next test shouldn't output anything.:$put r:let @r='':let g:testcase="\n15: Setting key option, shouldn't trigger\n":let g:options=[['key', 'invalid', 'invalid1', 'invalid']]:setlocal key=blah:setlocal key=:$put =g:testcase:$put r:/^dummy text/,$w! test.out:qa!ENDTESTdummy text:let g:testcase="8: Setting global acd\n"
:let g:options=[['autochdir', 0, 1, 'global']]
:setlocal acd
:let g:testcase="9: Setting global autoread\n"
:let g:options=[['autoread', 0, 1, 'global']]
:set ar
:let g:testcase="10: Setting local autoread\n"
:let g:options=[['autoread', 0, 1, 'local']]
:setlocal ar
:let g:testcase="11: Setting global autoread\n"
:let g:options=[['autoread', 1, 0, 'global']]
:setglobal invar
:let g:testcase="12: Setting option backspace through :let\n"
:let g:options=[['backspace', '', 'eol,indent,start', 'global']]
:let &bs="eol,indent,start"
:let g:testcase="13: Setting option backspace through setbufvar()\n"
:let g:options=[['backup', '', '1', 'local']]
: "try twice, first time, shouldn't trigger because option name is invalid, sec

ond time, it should trigger
:let g:testcase="13: Setting option backspace through setbufvar()\n"
:call setbufvar(1, '&l:bk', 1)
E355: Unknown option: l:bk: "should trigger, use correct option name
:call setbufvar(1, '&backup', 1)
:let g:testcase="14: Setting number option using setwinvar\n"
:let g:options=[['number', 0, 1, 'local']]
:call setwinvar(0, '&number', 1)
     56 :let g:testcase="13: Setting option backspace through setbufvar()\n"
     57 :let g:options=[['backup', '', '1', 'local']]
     58 : "try twice, first time, shouldn't trigger because option name is invallid, second time, it should trigger
     59 :call setbufvar(1, '&l:bk', 1)
     60 : "should trigger, use correct option name
     61 :call setbufvar(1, '&backup', 1)
     62 :let g:testcase="14: Setting number option using setwinvar\n"
     63 :let g:options=[['number', 0, 1, 'local']]
     64 :call setwinvar(0, '&number', 1)
     65 :" Write register now, because next test shouldn't output anything.
     66 :$put r
     67 :let @r=''
     68 :let g:testcase="\n15: Setting key option, shouldn't trigger\n"
     69 :let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
     70 :setlocal key=blah
     71 :setlocal key=
     72 :$put =g:testcase
     73 :$put r
     74 :/^dummy text/,$w! test.out
     75 :qa!
     76 ENDTEST
     77 dummy text:" Write register now, because next test shouldn't output anything.
:$put r
60 more lines117Autocmd Option: <autoread>, OldVal: <0>, NewVal: <1>, Scope: <global>11811910: Setting local autoread    120 Expected: Name: <autoread>, Oldval: <0>, NewVal: <1>, Scope: <local>121Autocmd Option: <autoread>, OldVal: <1>, NewVal: <1>, Scope: <local>12212311: Setting global autoread124Expected: Name: <autoread>, Oldval: <1>, NewVal: <0>, Scope: <global>125Autocmd Option: <autoread>, OldVal: <1>, NewVal: <0>, Scope: <global>12612712: Setting option backspace through :let128Expected: Name: <backspace>, Oldval: <>, NewVal: <eol,indent,start>, Scoope: <global>129Autocmd Option: <backspace>, OldVal: <>, NewVal: <eol,indent,start>, Scoope: <global>131313: Setting option backspace through setbufvar()13Expected: Name: <backup>, Oldval: <>, NewVal: <1>, Scope: <local>13Autocmd Option: <backup>, OldVal: <0>, NewVal: <1>, Scope: <local>131314: Setting number option using setwinvar13xpected: Name: <number>, Oldval: <0>, NewVal: <1>, Scope: <local>13Autocmd Option: <number>, OldVal: <0>, NewVal: <1>, Scope: <local>:let @r=''
:let g:testcase="\n15: Setting key option, shouldn't trigger\n"
:let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
:setlocal key=blah
:setlocal key=
:$put =g:testcase


    138 
    139 15: Setting key option, shouldn't trigger
:$put r

    140 
:/^dummy text/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 64 lines, 2700 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_autocmd_option = test61; then \
#	  if diff test.out test_autocmd_option.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_autocmd_option.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autocmd_option.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_autoformat_join.failed test.ok test.out X* viminfo
cp test_autoformat_join.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autoformat_join.in
[?1h="test_autoformat_join.in" 23 lines, 524 charactersTests for setting the '[,'] marks when joining lines.

STARTTEST
:so small.vim
:/^\t\t/
0gqj:
:let a=string(getpos("'[")).'/'.string(getpos("']"))
:/^This line/;'}-join
:let b=string(getpos("'[")).'/'.string(getpos("']"))
:$put ='First test: Start/End '.string(a)
:$put ='Second test: Start/End '.string(b)
:/^\t\t/,$wq! test.out
ENDTESTO sodales, ludite, vos qui
attamen consulite per voster honur. Tua pulchra facies me fay planszer milies

This line.
Should be joined with the next line
and with this line

Results::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for setting the '[,'] marks when joining lines./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 9 lines, 265 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:/^\t\t/
attamen consulite per voster honur.
Tua pulchra facies me fay planszer milies::let a=string(getpos("'[")).'/'.string(getpos("']"))
:/^This line/;'}-join


This line.  Should be joined with the next line and with this line


~
~:let b=string(getpos("'[")).'/'.string(getpos("']"))
:$put ='First test: Start/End '.string(a)
First test: Start/End '[0, 16, 1, 0]/[0, 17, 1, 0]'
:$put ='Second test: Start/End '.string(b)
Second test: Start/End '[0, 19, 11, 0]/[0, 19, 67, 0]'
:/^\t\t/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 8 lines, 292 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_autoformat_join = test61; then \
#	  if diff test.out test_autoformat_join.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_autoformat_join.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autoformat_join.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_breakindent.failed test.ok test.out X* viminfo
cp test_breakindent.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_breakindent.in
[?1h="test_breakindent.in" 122 lines, 3678 charactersTest for breakindent

STARTTEST
:so small.vim
:if !exists("+breakindent") | e! test.ok | w! test.out | qa! | endif
:10new|:vsp|:vert resize 20
:put =\"\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP\"
:set ts=4 sw=4 sts=4 breakindent
:fu! ScreenChar(line, width)
:let c=''
:for i in range(1,a:width)
:let c.=nr2char(screenchar(a:line, i))
:endfor
:let c.="\n"
:for i in range(1,a:width)
:let c.=nr2char(screenchar(a:line+1, i))
:endfor
:let c.="\n"
:for i in range(1,a:width)
:let c.=nr2char(screenchar(a:line+2, i))
:endfor
:return c
:endfu:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for breakindent/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 117 lines, 3627 characters written:set ff& cpo+=A
/ENDTEST:$put =line2
:"
:let g:test="Test 14: breakindent + visual blockwise delete #1"
:set all& breakindent viminfo+=nviminfo
:30vnew
:normal! 3a1234567890
:normal! a    abcde
:exec "normal! 0\<C-V>tex"
:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
:"
:let g:test="Test 15: breakindent + visual blockwise delete #2"
:%d
:normal! 4a1234567890
:exec "normal! >>\<C-V>3f0x"
:let line1=ScreenChar(line('.'),20)
:call DoRecordScreen()
:quit!
:"
:%w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
:if !exists("+breakindent") | e! test.ok | w! test.out | qa! | endif
:10new|:vsp|:vert resize 20
            ||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            ~~~~~~~~~[No Name]                                                  %dnormal! 4a1234567890
:exec "normal! >>\<C-V>3f0x"
:let line1=ScreenChar(line('.'),20)
:call DoRecordScreen()quit!"%w! test.out
:qaENDTEST
dummy text
test_breakindent.in                                                             :put =\"\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP\"
        abcdefghijkl
mnopqrstuvwxyzABCDEF
GHIJKLMNOP          [+] abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP[+]:set ts=4 sw=4 sts=4 breakindent
abcdefghijklmnop
qrstuvwxyzABCDEFGHIJ
KLMNOP    abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP:fu! ScreenChar(line, width)

:  :^Ilet c=''

:  :^Ifor i in range(1,a:width)

:    :^I^Ilet c.=nr2char(screenchar(a:line, i))

:    :^Iendfor

:  :       let c.="\n"

:  :^Ifor i in range(1,a:width)

:    :^I^Ilet c.=nr2char(screenchar(a:line+1, i))

:    :^Iendfor

:  :       let c.="\n"

:  :^Ifor i in range(1,a:width)

:    :^I^Ilet c.=nr2char(screenchar(a:line+2, i))

:    :^Iendfor

:  :^Ireturn c

:  :endfu
|
    abcdefghijklmnop|
qrstuvwxyzABCDEFGHIJ|
KLMNOP|||||||~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP~~~~~~~~[No Name] [+]                                              :%d
:normal! 4a1234567890
:exec "normal! >>\<C-V>3f0x":fu DoRecordScreen()

:  :^Iwincmd l

:  :^I$put =printf(\"\n%s\", g:test)

:  :^I$put =g:line1

:  :^Iwincmd p

:  :endfu
|
    abcdefghijklmnop|
qrstuvwxyzABCDEFGHIJ|
KLMNOP||
~                   abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP~~~:set briopt=min:0
    qrstuvwxyzABCDEF
    GHIJKLMNOP:let g:test="Test 1: Simple breakindent"
:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                    
Test 1: Simple break
indent              
    abcd            
    qrst            
    GHIJ            Test 1: Simple breakindent    abcd    qrst    GHIJ:let g:test="Test 2: Simple breakindent + sbr=>>"
:set sbr=>>
>>qrstuvwxyzABCD
    >>EFGHIJKLMNOP


>>indent:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                           Test 1: Simple breakindent                                     abcd                                                       qrst                                                       GHIJ                                                   ~                                                          ~                                                          ~                                                                                                                                                                                Test 2: Simple breakindent + sbr=>>    abcd>>qr>>EF3 more lines:let g:test ="Test 3: Simple breakindent + briopt:sbr"
:set briopt=sbr,min:0 sbr=++
++  qrstuvwxyzABCDEF
++  GHIJKLMNOP    


++:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                           Test 2: Simple breakindent + sbr=>>                            abcd                                                       >>qr                                                       >>EF                                                                                                                                                                                                                                                                                                                                                          Test 3: Simple breakindent + briopt:sbrabcd++  qrst++  GHIJ3 more lines:let g:test ="Test 4: Simple breakindent + min width: 18"
:set sbr= briopt=min:18
  qrstuvwxyzABCDEFGH
  IJKLMNOP    


indent  :let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                           Test 3: Simple breakindent + briopt:sbr                        abcd                                                   ++  qrst                                                   ++  GHIJ                                                                                                                                                                                                                                                                                                                                                          Test 4: Simple breakindent + min width: 18abcdqrstuvIJKLMN3 more lines:let g:test =" Test 5: Simple breakindent + shift by 2"
:set briopt=shift:2,min:0
    qrstuvwxyzABCD
      EFGHIJKLMNOP


  indent:let line1=ScreenChar(line('.'),8)
:gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/evalfunc.o evalfunc.c
call DoRecordScreen()
3 more lines                                                           Test 4: Simple breakindent + min width: 18                     abcd                                                     qrstuv                                                     IJKLMN                                                                                                                                                                                                                                                                                                                                                          Test 5: Simple breakindent + shift by 2abcdqrEF3 more lines:let g:test=" Test 6: Simple breakindent + shift by -1"
:set briopt=shift:-1,min:0
qrstuvwxyzABCDEFG
   HIJKLMNOP      


indent  :let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                            Test 5: Simple breakindent + shift by 2                       abcd                                                         qr                                                         EF                                                                                                                                                                                                                                                                                                                                                          Test 6: Simple breakindent + shift by -1abcdqrstuHIJKL3 more lines:let g:test=" Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr"
:set briopt=shift:1,sbr,min:0 nu sbr=? nuw=4
  1 
  2     abcdefghijkl
?        mnopqrstuvw
?        xyzABCDEFGH
?IJKLMNOP
  3                 
  4 Test 1: Simple b
?    reakindent
  5     abcd
  6     qrst:let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
3 more lines                                                            Test 6: Simple breakindent + shift by -1                      abcd                                                      qrstu                                                      HIJKL                                                                                                                                                                                                                                                                                                                                                          Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr2     ab?m?x3 more lines:let g:test=" Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr"
:set briopt=shift:1,sbr,min:0 nu sbr=# list
$^Iabcdefghijklmn
#      opqrstuvwxyzA
#      BCDEFGHIJKLMN
#      OP$       $

#$$$:let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
3 more lines                                                            Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr   2     ab                                                 ?        m                                                 ?        x                                                                                                                                                                                                                                                                                                                                                        Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr2 ^Iabcd#      opq#      BCD3 more lines:let g:test=" Test 9: breakindent + shift by +1 + 'nu' + sbr=# list"
:set briopt-=sbr
       #opqrstuvwxyz
       #ABCDEFGHIJKL
       #MNOP$


     #reakindent$:let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
3 more lines                                                            Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr  2 ^Iabcd                                                 #      opq                                                 #      BCD                                                                                                                                                                                                                                                                                                                                                        Test 9: breakindent + shift by +1 + 'nu' + sbr=# list2 ^Iabcd#op#AB3 more lines:let g:test=" Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n"
:set cpo+=n sbr=~ nu nuw=4 nolist briopt=sbr,min:0
     abcdefghijkl
~       mnopqrstuvwx
~       yzABCDEFGHIJ
~       KLMNOP 

~   reakindent     :let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
3 more lines                                                            Test 9: breakindent + shift by +1 + 'nu' + sbr=# list       2 ^Iabcd                                                        #op                                                        #AB                                                                                                                                                                                                                                                                                                                                                        Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n2     ab~mn~yz3 more lines:wincmd p
[No Name] [+]        [No Name] [+]                                              :let g:test="\n Test 11: strdisplaywidth when breakindent is on"
:set cpo-=n sbr=>> nu nuw=4 nolist briopt= ts=4
    >>
    >>
    >>


    >>reakindent 44  Test 9: breakindent + shift by +1 + 'nu' + sbr=# list 45   2 ^Iabcd 46        #op 47        #AB 48  49  Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+    >>=n 50   2     ab 51 ~       mn 52 ~       yz:let text=getline(2) "skip leading tab when calculating text width
:let width = strlen(text[1:])+indent(2)*4+strlen(&sbr)*3 " text wraps 3 times
:$put =g:test
 46        #op                                              47        #AB                                              48                                                         49  Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+    >>=n                                                    50   2     ab                                              51 ~       mn                                              52 ~       yz                                                                                                                                                                    53  54  Test 11: strdisplaywidth when breakindent is on:$put =printf(\"strdisplaywidth: %d == calculated: %d\", strdisplaywidth(text),

width)
  1 | 47 #AB89Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+  >>=n50  2     ab1~       mn2yz34Test 11: strdisplaywidth when breakindent is on5strdisplaywidth: 46 == calculated: 64:let g:str="\t\t\t\t\t{"
:let g:test=" Test 12: breakindent + long indent"
:wincmd p
[No Name] [+]        [No Name] [+]                                              :set all& breakindent linebreak briopt=min:10 nu numberwidth=3 ts=4
 1 |
 2 |abcdefghijklm|nopqrstuvwxyz|ABCDEFGHIJKLM|NOP|
 3 |
 4 Test 1: Simple   |
   breakindent      |
 5     abcd|
[No Name]             47 #AB 48  49  Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n 50   2     ab 51 ~mn 52 ~yz 53  54  Test 11: strdisplaywidth when breakindent is on 55 strdisplaywidth: 46 == calculated: 64[No Name]                                                  :%d
:normal! 4a1234567890
:exec "normal! >>\<C-V>3f0x"
:let line1=ScreenChar(line('.'),20)
:call DoRecordScreen()
:quit!
:"
:%w! test.out
:qa!
ENDTEST
dummy text
test_breakindent.in                                                             :$put =g:str
54Test 11:
    strdisplaywidth
    when            
    breakindent is  
    on              
55 strdisplaywidth:
   46 ==
   calculated: 64
56            
             {[+][+]56                  
             {      
                    
                    
                    
                    
                    
                    
                    
                    ~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   :let line1=ScreenChar(1,10)
:wincmd p
[No Name] [+]        [No Name] [+]                                              :call DoRecordScreen()
3 more lines57                  
58  Test 12:        
    breakindent +   
    long indent     
59 56               
60                  
61 ~                

[No Name] [+]         52 ~       yz                                              53                                                         54  Test 11: strdisplaywidth when breakindent is on        55 strdisplaywidth: 46 == calculated: 64                                                                                                                                                                                                                                                                                                                                                                                     56 { 57  58  Test 12: breakindent + long indent 59 56 60  61 ~[No Name] [+]                                              3 more lines:"
:" Test, that the string "    a\tb\tc\td\te" is correctly
:" displayed in a 20 column wide window (see bug report
:" https://groups.google.com/d/msg/vim_dev/ZOdg2mc9c9Y/TT8EhFjEy0IJ
:only
   {57 8Test 12: breakindent + long indent956       60           61 ~         ~~~~~~~~~~~~~~~~:vert 20new
 1||||||||||||||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            56 {57 58  Test 12: breakindent + long indent59 5660 61 ~~~~~~~~~~~~~~~~~[No Name] [+]                                              :set all& nocp breakindent briopt=min:10
||||||||||||||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            56 {57 58  Test 12: breakindent + long indent59 5660 61 ~~~~~~~~~~~~~~~~~[No Name] [+]                                              :call setline(1, ["    a\tb\tc\td\te", "    z   y       x       w       v"])
a   bc
        d   e       
    z   y       x   
        w       v   [+]:/^\s*a
search hit BOTTOM, continuing at TOPa   :let line1 = @0
:?^\s*zgcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/normal.o normal.c

search hit TOP, continuing at BOTTOMz   :let line2 = @0
:quit!
56              {57 58  Test 12: breakindent + long indent59 56    60           61 ~         ~:$put ='Test 13: breakindent with wrapping Tab'
62 Test 13: breakindent with wrapping Tab:$put =line1
63 d:$put =line2
64 w:"
:let g:test="Test 14: breakindent + visual blockwise delete #1"
:set all& breakindent viminfo+=nviminfo
{

 Test 12: breakindent + long indent
56

~
Test 13: breakindent with wrapping Tab
d
w
~
~
~
~
~
~
~
~
~
~
~
~
~
~:30vnew
||||||||||||||||||||||~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
[No Name]                       { Test 12: breakindent + long indent56~Test 13: breakindent with wrapping Tabdw~~~~~~~~~~~~~[No Name]                                        :normal! 3a1234567890
123456789012345678901234567890[+]:normal! a    abcde
    abcde                     :exec "normal! 0\<C-V>tex"
e                             
~                             :let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more linesTest 14: breakindent + visual blockwise delete #1e~~[+]:"
:let g:test="Test 15: breakindent + visual blockwise delete #2"
:%d
 --No lines in buffer--:normal! 4a1234567890
123456789012345678901234567890
1234567890                    :exec "normal! >>\<C-V>3f0x"
        1234567890            
~                             :let line1=ScreenChar(line('.'),20)
:call DoRecordScreen()
3 more linesTest 15: breakindent + visual blockwise delete #2 1234567890~~:quit!
strdisplaywidth: 46 == calculated: 64                               { Test 12: breakindent + long indent
56                  ~         Test 13: breakindent with wrapping Tab
dwTest 14: breakindent + visual blockwise delete #1
e       ~       ~       Test 15: breakindent + visual blockwise delete #2
        1234567890  ~                   ~                   ~:"
:%w! test.out
"test.out" [New] 74L, 1210C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_breakindent = test61; then \
#	  if diff test.out test_breakindent.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_breakindent.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_breakindent.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_changelist.failed test.ok test.out X* viminfo
cp test_changelist.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_changelist.in
[?1h="test_changelist.in" 22 lines, 288 charactersTest changelist position after splitting window
Set 'undolevels' to make changelist for sourced file

STARTTEST
:so small.vim
Gkylp:set ul=100
Gylp:set ul=100
gg
:vsplit
:try
:  normal g;
:  normal ggVGcpass^[
:catch
:  normal ggVGcfail^[
:finally
:  %w! test.out
:endtry
:qa!
ENDTEST

1
2
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test changelist position after splitting window/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 14 lines, 163 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim


11:set ul=100

22:set ul=100

:vsplit
|
 window                                 |
Set 'undolevels' to make changelist for |
sourced file|
             |
STARTTEST       |
:so small.vim  |
Gkylp:set ul=100|
Gylp:set ul=100|
gg  |
:vsplit     |
:try                 |
:  normal g;|pass|
:catch  |
:  normal ggVGcfail^[|
:finally|
:  %w! test.out|
:endtry|
:qa!|
ENDTEST|
  |
test_changelist.in [+]                   Test changelist position after splitting windowSet 'undolevels' to make changelist forsourced fileSTARTTEST:so small.vimGkylp:set ul=100Gylp:set ul=100gg:vsplit:try:  normal g;:  normal ggVGcpass^[:catch:  normal ggVGcfail^[:finally:  %w! test.out:endtry:qa!ENDTESTtest_changelist.in [+]                 :try

:  :  normal g;

:  :  normal ggVGcpass
21 fewer lines
:  

:  :catch

:  :  normal ggVGcfail

:  

:  :finally

:  :  %w! test.out

"test.out" [New File] 1 line, 5 characters written

:  :endtry
pass||||||||||~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                          pass~~~~~~~~~~~~~~~~~~~~~   :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_changelist = test61; then \
#	  if diff test.out test_changelist.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_changelist.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_changelist.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_close_count.failed test.ok test.out X* viminfo
cp test_close_count.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_close_count.in
[?1h="test_close_count.in" 153 lines, 2665 charactersTests for :[count]close! and :[count]hide     vim: set ft=vim :

STARTTEST
:so small.vim
:let tests = []
:for i in range(5)
:new
:endfor
:4wincmd w
:close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:$close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
:2close!:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :[count]close! and :[count]hide     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 41 lines, 749 characters written:set ff& cpo+=A
/ENDTEST:call add(tests, buffers)
:2wincmd w
:+1close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(0, map(copy(tests), 'join(v:val, " ")'))
:w
:only!
:b1
ENDTEST

STARTTEST
:let tests = []
:for i in range(5)
:new
:endfor
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:4wincmd w
:.hide
:so! Xdotest
:so small.vim
:let tests = []
:for i in range(5)

:  :new

:  :endfor
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ENDTEST

test_close_count.in                                                             :4wincmd w
[No Name]                                                                       [No Name]                                                                       :close!
~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :b1
ENDTEST

test_close_count.in                                                             :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       test_close_count.in                                                             :call add(tests, buffers)
:1close!
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :only!
:b1
ENDTEST

STARTTEST
test_close_count.in                                                             


:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:$close!
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :2close!
~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :new
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :new
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :2wincmd w
[No Name]                                                                       [No Name]                                                                       :-1close!
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:2wincmd w
[No Name]                                                                       [No Name]                                                                       :+1close!
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
"test.out" [New File]test.out :call append(0, map(copy(tests), 'join(v:val, " ")'))
6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5[+]:w
"test.out" [New File] 7 lines, 39 characters written   :only!
6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5~~~~~~~
~~:b1
"test_close_count.in" 153 lines, 2665 characters:2wincmd w
:+1close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(0, map(copy(tests), 'join(v:val, " ")'))
:w
:only!
:b1
ENDTESTSTARTTEST
:let tests = []
:for i in range(5)
:new
:endfor
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:4wincmd w
:.hide
:let buffers = []/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 44 lines, 815 characters written:set ff& cpo+=A
/ENDTEST:2wincmd w
:+hide
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
Go^[
:w
:only!
:b1
ENDTEST

STARTTEST
:let tests = []
:set hidden
:for i in range(5)
:new
:endfor
:1wincmd w
:$ hide
:let buffers = []
:windo call add(buffers, bufnr('%'))
:so! Xdotest
:let tests = []
:for i in range(5)

:  :new

:  :endfor
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ENDTEST

test_close_count.in                                                             :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       test_close_count.in                                                             :call add(tests, buffers)
:4wincmd w
[No Name]                                                                       test_close_count.in                                                             :.hide
~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :b1
ENDTEST

test_close_count.in                                                             :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       test_close_count.in                                                             :call add(tests, buffers)
:1hide
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :only!
:b1
ENDTEST

STARTTEST
test_close_count.in                                                             


:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:$hide
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :2hide
~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :new
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :new
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :3wincmd w
[No Name]                                                                       [No Name]                                                                       :-hide
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:2wincmd w
[No Name]                                                                       [No Name]                                                                       :+hide
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
"test.out" 7 lines, 39 characters6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5test.out :call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
13 12 11 10 9 1
13 12 11 9 1
12 11 9 1
12 11 9[+]


12 9
15 12 9
15 12


:w
"test.out" 15 lines, 106 characters written   :only!
6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 513 12 11 10 9 1
13 12 11 9 1
12 11 9 1
12 11 912 915 12 9
15 12~~~~~~
~~:b1
:+hide:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
Go^[
:w:only!:b1ENDTESTSTARTTEST
:let tests = []
:set hidden
:for i in range(5)
:new
:endfor
:1wincmd w
:$ hide
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
"test_close_count.in" line 93 of 153 --60%-- col 1/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 25 lines, 448 characters written:set ff& cpo+=A
/ENDTEST:1wincmd w
:.+close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
Go^[
:w
:only!
:b1
ENDTEST

STARTTEST
:let tests = []
:set hidden
:for i in range(5)
:new
:endfor
:4wincmd w
^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:so! Xdotest
:let tests = []
:set hidden
:for i in range(5)

:  :new

:  :endfor
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ENDTEST

test_close_count.in                                                             :1wincmd w
:$ hide
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:$-1 close!
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :.+close!
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:e! test.out
"test.out" 15 lines, 106 characters6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5
test.out :call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
[+]15 12 915 120 19 18 17 16
20 19 18 16
20 18 16



:w
"test.out" 19 lines, 143 characters written   :only!
6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5

13 12 11 10 9 1
13 12 11 9 1
12 11 9 1
12 11 9
12 9
15 12 9
15 12

20 19 18 17 16
20 19 18 16
20 18 16

~
~
~
~:b1
:.+close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
Go^[
:w:only!:b1ENDTESTSTARTTEST
:let tests = []
:set hidden
:for i in range(5)
:new:endfor:4wincmd w
^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
"test_close_count.in" line 121 of 153 --79%-- col 1/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 28 lines, 511 characters written:set ff& cpo+=A
/ENDTEST


















1^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
9^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
2^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:only!
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
:w
:qa!
ENDTEST

:so! Xdotest
:let tests = []
:set hidden
:for i in range(5)

:  :new

:  :endfor
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ENDTEST

test_close_count.in                                                             :4wincmd w
[No Name]                                                                       [No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :qa!
ENDTEST

test_close_count.in                                                             :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       test_close_count.in                                                             :call add(tests, buffers)
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
:w
:qa!
ENDTEST

test_close_count.in                                                             


:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       ~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:only!
~
~~:e! test.out
"test.out" line 19 of 19 --100%-- col 16 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 513 12 11 10 9 1
13 12 11 9 1
12 11 9 1
12 11 9
12 9
15 12 9
15 1220 19 18 17 16
20 19 18 16
20 18 16:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
25 24 23 21 1
24 23 21 1
24 23 21
24 21:w
"test.out" 23 lines, 183 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_close_count = test61; then \
#	  if diff test.out test_close_count.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_close_count.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_close_count.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_comparators.failed test.ok test.out X* viminfo
cp test_comparators.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_comparators.in
[?1h="test_comparators.in" 21 lines, 283 characters" Test for expression comparators.   vim: set ft=vim :


STARTTEST
:so small.vim
:try
:  let oldisident=&isident
:  set isident+=#
:  if 1 is#1
:    $put ='ok'
:  else
:    $put ='ng'
:  endif
:finally
:  let &isident=oldisident
:endtry
:"
:/^marker/+1,$wq! test.out
ENDTEST

marker
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
" Test for expression comparators.   vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 14 lines, 200 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:try

:  :  let oldisident=&isident

:  :  set isident+=#

:  :  if 1 is#1

:    :    $put ='ok'

:    :  else

:    :    $put ='ng'

:    :  endif

:  :finally

:  :  let &isident=oldisident

:  :endtry
" Test for expression comparators.   vim: set ft=vim :


STARTTEST
:so small.vim
:try
:  let oldisident=&isident
:  set isident+=#
:  if 1 is#1
:    $put ='ok'ok

:"
:/^marker/+1,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 1 line, 3 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_comparators = test61; then \
#	  if diff test.out test_comparators.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_comparators.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_comparators.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_erasebackword.failed test.ok test.out X* viminfo
cp test_erasebackword.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_erasebackword.in
[?1h="test_erasebackword.in" 19 lines, 427 charactersTest for erasing backword

STARTTEST
:so small.vim
:so mbyte.vim
:set encoding=utf-8
G
:/^test/,$w! test.out
:qa!
ENDTEST

test starts here:

~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for erasing backword/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 12 lines, 362 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:so mbyte.vim
:set encoding=utf-8
Test for erasing backword

STARTTEST
:so small.vim
:so mbyte.vim
:set encoding=utf-8
G
o wwwこんにちわ世界ワールドvim ^W^[
o wwwこんにちわ世界ワールドvim ^W^W^[
o wwwこんにちわ世界ワールドvim ^W^W^W^[
o wwwこんにちわ世界ワールドvim ^W^W^W^W^[
o wwwこんにちわ世界ワールドvim ^W^W^W^W^W^[
o wwwこんにちわ世界ワールドvim ^W^W^W^W^W^W^[
:/^test/,$w! test.out
:qa!
ENDTEST

test starts here:

~
~
~
~


 wwwこんにちわ世界ワールド
 wwwこんにちわ世界ワール
 wwwこんにちわ世界ワール
 wwwこんにちわ世界ワール
wwwこんにちわ世界ワール
wwwこんにちわ世界ワール
:/^test/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 8 lines, 111 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_erasebackword = test61; then \
#	  if diff test.out test_erasebackword.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_erasebackword.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_erasebackword.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_eval.failed test.ok test.out X* viminfo
cp test_eval.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_eval.in
[?1h="test_eval.in" 247 lines, 6201 charactersTest for various eval features.   vim: set ft=vim :

Note: system clipboard is saved, changed and restored.

clipboard contents
something else

STARTTEST
:so small.vim
:set encoding=latin1
:set noswapfile
:lang C
:fun AppendRegContents(reg)
  call AppendRegParts(a:reg, getregtype(a:reg), getreg(a:reg), string(getreg(a:rreg, 0, 1)), getreg(a:reg, 1), string(getreg(a:reg, 1, 1)))
:endfun
:fun AppendRegParts(reg, type, cont, strcont, cont1, strcont1)
  call append('$', printf('%s: type %s; value: %s (%s), expr: %s (%s)', a:reg, aa:type, a:cont, a:strcont, a:cont1, a:strcont1))
endfun
:command -nargs=? AR :call AppendRegContents(<q-args>)
:fun SetReg(...)
    call call('setreg', a:000):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for various eval features.   vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 233 lines, 6010 characters written:set ff& cpo+=A
/ENDTEST:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]
:unlet nn
:let b:nn = 4
:$put =str[b:nn:]
:$put =str[:b:nn]
:$put =str[b:nn:b:nn]
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start:
:so! Xdotest
:so small.vim
:set encoding=latin1
:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]
:unlet nn
:let b:nn = 4
:$put =str[b:nn:]
:$put =str[:b:nn]
:$put =str[b:nn:b:nn]
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start::set noswapfile
:lang C
:fun AppendRegContents(reg)

:    call AppendRegParts(a:reg, getregtype(a:reg), getreg(a:reg), string(getreg

(a:reg, 0, 1)), getreg(a:reg, 1), string(getreg(a:reg, 1, 1)))

:  :endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n:fun AppendRegParts(reg, type, cont, strcont, cont1, strcont1)

:    call append('$', printf('%s: type %s; value: %s (%s), expr: %s (%s)', a:re

g, a:type, a:cont, a:strcont, a:cont1, a:strcont1))

:  endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n:command -nargs=? AR :call AppendRegContents(<q-args>)
:fun SetReg(...)

:      call call('setreg', a:000)

:      call append('$', printf('{{{2 setreg(%s)', string(a:000)[1:-2]))

:      call AppendRegContents(a:1)

:      if a:1 isnot# '='

:            execute "silent normal! Go==\n==\e\"".a:1."P"

:        endif

:  endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]:fun ErrExe(str)

:      call append('$', 'Executing '.a:str)

:      try

:            execute a:str

:        catch

:            $put =v:exception

:        endtry

:  endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]:fun Test()

:  $put ='{{{1 let tests'

:  let @" = 'abc'

:  AR "

:  let @" = "abc\n"

:  AR "

:  let @" = "abc\<C-m>"

:  AR "

:  let @= = '"abc"'

:  AR =

:  

:  $put ='{{{1 Basic setreg tests'

:  call SetReg('a', 'abcA', 'c')

:  call SetReg('b', 'abcB', 'v')

:  call SetReg('c', 'abcC', 'l')

:  call SetReg('d', 'abcD', 'V')

:  call SetReg('e', 'abcE', 'b')

:  call SetReg('f', 'abcF', "\<C-v>")

:  call SetReg('g', 'abcG', 'b10')

:  call SetReg('h', 'abcH', "\<C-v>10")

:  call SetReg('I', 'abcI')

:  

:  $put ='{{{1 Appending single lines with setreg()'

:  call SetReg('A', 'abcAc', 'c')

:  call SetReg('A', 'abcAl', 'l')

:  call SetReg('A', 'abcAc2','c')

:  call SetReg('b', 'abcBc', 'ca')

:  call SetReg('b', 'abcBb', 'ba')

:  call SetReg('b', 'abcBc2','ca')

:  call SetReg('b', 'abcBb2','b50a')

:  

:  call SetReg('C', 'abcCl', 'l')

:  call SetReg('C', 'abcCc', 'c')

:  call SetReg('D', 'abcDb', 'b')

:  

:  call SetReg('E', 'abcEb', 'b')

:  call SetReg('E', 'abcEl', 'l')

:  call SetReg('F', 'abcFc', 'c')

:  

:  $put ='{{{1 Appending NL with setreg()'

:  call setreg('a', 'abcA2', 'c')

:  call setreg('b', 'abcB2', 'v')

:  call setreg('c', 'abcC2', 'l')

:  call setreg('d', 'abcD2', 'V')

:  call setreg('e', 'abcE2', 'b')

:  call setreg('f', 'abcF2', "\<C-v>")

:  call setreg('g', 'abcG2', 'b10')

:  call setreg('h', 'abcH2', "\<C-v>10")

:  call setreg('I', 'abcI2')

:  

:  call SetReg('A', "\n")

:  call SetReg('B', "\n", 'c')

:  call SetReg('C', "\n")

:  call SetReg('D', "\n", 'l')

:  call SetReg('E', "\n")

:  call SetReg('F', "\n", 'b')

:  

:  $put ='{{{1 Setting lists with setreg()'

:  call SetReg('a', ['abcA3'], 'c')

:  call SetReg('b', ['abcB3'], 'l')

:  call SetReg('c', ['abcC3'], 'b')

:  call SetReg('d', ['abcD3'])

:  call SetReg('e', [1, 2, 'abc', 3])

:  call SetReg('f', [1, 2, 3])

:  

:  $put ='{{{1 Appending lists with setreg()'

:  call SetReg('A', ['abcA3c'], 'c')

:  call SetReg('b', ['abcB3l'], 'la')

:  call SetReg('C', ['abcC3b'], 'lb')

:  call SetReg('D', ['abcD32'])

:  

:  call SetReg('A', ['abcA32'])

:  call SetReg('B', ['abcB3c'], 'c')

:  call SetReg('C', ['abcC3l'], 'l')

:  call SetReg('D', ['abcD3b'], 'b')

:  

:  $put ='{{{1 Appending lists with NL with setreg()'

:  call SetReg('A', ["\n", 'abcA3l2'], 'l')

:  call SetReg('B', ["\n", 'abcB3c2'], 'c')

:  call SetReg('C', ["\n", 'abcC3b2'], 'b')

:  call SetReg('D', ["\n", 'abcD3b50'],'b50')

:  

:  $put ='{{{1 Setting lists with NLs with setreg()'

:  call SetReg('a', ['abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4

-4-2"])

:  call SetReg('b', ['abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\na

bcB4c-4-2"], 'c')

:  call SetReg('c', ['abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\na

bcC4l-4-2"], 'l')

:  call SetReg('d', ['abcD4b-0', "\n", "abcD4b-2\n", "\nabcD4b-3", "abcD4b-4\na

bcD4b-4-2"], 'b')

:  call SetReg('e', ['abcE4b10-0', "\n", "abcE4b10-2\n", "\nabcE4b10-3", "abcE4

b10-4\nabcE4b10-4-2"], 'b10')

:  

:  $put ='{{{1 Search and expressions'

:  call SetReg('/', ['abc/'])

:  call SetReg('/', ["abc/\n"])

:  call SetReg('=', ['"abc/"'])

:  call SetReg('=', ["\"abc/\n\""])

:  $put ='{{{1 System clipboard'

:  if has('clipboard')

:    " Save and restore system clipboard.

:    " If no connection to X-Server is possible, test should succeed.

:    let _clipreg = ['*', getreg('*'), getregtype('*')]

:    let _clipopt = &cb

:    let &cb='unnamed'

:    5y

:    AR *

:    tabdo :windo :echo "hi"

:    6y

:    AR *

:    let &cb=_clipopt

:    call call('setreg', _clipreg)

:    else

:      call AppendRegParts('*', 'V', "clipboard contents\n", "['clipboard conte

nts']", "clipboard contents\n", "['clipboard contents']")

:      call AppendRegParts('*', 'V', "something else\n", "['something else']", 

"something else\n", "['something else']")

:    endif

:  $put ='{{{1 Errors'

:  call ErrExe('call setreg()')

:  call ErrExe('call setreg(1)')

:  call ErrExe('call setreg(1, 2, 3, 4)')

:  call ErrExe('call setreg([], 2)')

:  call ErrExe('call setreg(1, {})')

:  call ErrExe('call setreg(1, 2, [])')

:  call ErrExe('call setreg("/", ["1", "2"])')

:  call ErrExe('call setreg("=", ["1", "2"])')

:  call ErrExe('call setreg(1, ["", "", [], ""])')

:  endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]
:unlet nn
:let b:nn = 4
:$put =str[b:nn:]
:$put =str[:b:nn]
:$put =str[b:nn:b:nn]
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start::"
:call Test()
*: type V; value: something else^@ (['something else']), expr: something else^@  (['something else'])
{{{1 Errors
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)
Vim(call):E118: Too many arguments for function: setreg
Executing call setreg([], 2)
Vim(call):E730: using List as a String
Executing call setreg(1, {})
Vim(call):E731: using Dictionary as a String
Executing call setreg(1, 2, [])
Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore lines
Executing call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a String
:"
:delfunction SetReg
:delfunction AppendRegContents
:delfunction ErrExe
:delfunction Test
:delcommand AR
:call garbagecollect(1)
:"
:" function name not starting with capital
:try

:  :func! g:test()

:  :echo "test"

:  :endfunc

:  :catch

:  :$put =v:exception

:  :endtry
{{{1 Errors
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)8: Too many arguments for function: setreg[], 2)730: using List as a String1, {}1Dictionary as a String2, [])0List as a String"/", ["1", "2"])883: search pattern and expression register may not contain two or moore linesExecuting call setreg("=", ["1", "2"])Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg(1, ["", "", [], ""])Vim(call):E730: using List as a String
Vim(function):E128: Function name must start with a capital or "s:": g:test()~

:"
:" function name includes a colon
:try

:  :func! b:test()

:  :echo "test"

:  :endfunc

:  :catch

:  :$put =v:exception

:  :endtry
{{{1 Errors
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)Vim(function):E128: Function name must start with a capital or "s:": b:test()
:"
:" function name folowed by #
:try

:  :func! test2() "#

:  :echo "test2"

:  :endfunc

:  :catch

:  :$put =v:exception

:  :endtry
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)
Vim(call):E118: Too many arguments for function: setreg
Executing call setreg([], 2)Vim(call):E730: using List as a String
Executing call setreg(1, {})Vim(call):E731: using Dictionary as a String
Executing call setreg(1, 2, [])Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a Stringfunction):E128: Function name must start with a capital or "s:": g:test()btest2() "#
:"
:" function name starting with/without "g:", buffer-local funcref.
:function! g:Foo(n)

:  :  $put ='called Foo(' . a:n . ')'

:  :endfunction
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
:let b:my_func = function('Foo')
:call b:my_func(1)

called Foo(1)
:echo g:Foo(2)
0
called Foo(2)
:echo Foo(3)
0
called Foo(3)
:"
:" script-local function used in Funcref must exist.
:so test_eval_func.vim




s:Testje exists: 0
func s:Testje exists: 1
Bar exists: 1
func Bar exists: 1
:"
:" Using $ instead of '$' must give an error
:try

:  : call append($, 'foobar')

:  :catch

:  :$put =v:exception

:  :endtry
Executing call setreg(1, {})
Vim(call):E731: using Dictionary as a String
Executing call setreg(1, 2, [])
Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a Stringfunction):E128: Function name must start with a capital or "s:": g:test()btest2() "#
called Foo(123
s:Testje exists: 0
func s:Testje exists: 1
Bar exists: 1func Bar exists: 1
Vim(call):E116: Invalid arguments for function append
:"
:$put ='{{{1 getcurpos/setpos'

{{{1 getcurpos/setpos
/^012345678
search hit BOTTOM, continuing at TOP:let b:nn = 4
:$put =str[b:nn:]
:$put =str[:b:nn]
:$put =str[b:nn:b:nn]
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start:
{{{1 let tests
": type v; value: abc (['abc']), expr: abc (['abc'])
": type V; value: abc^@ (['abc']), expr: abc^@ (['abc'])
": type V; value: abc^M^@ (['abc^M']), expr: abc^M^@ (['abc^M'])
=: type v; value: abc (['abc']), expr: "abc" (['"abc"'])
{{{1 Basic setreg tests
{{{2 setreg('a', 'abcA', 'c')
a: type v; value: abcA (['abcA']), expr: abcA (['abcA'])
search hit BOTTOM, continuing at TOP012345:let sp = getcurpos()

:call setpos('.', sp)
:$put
Executing call setreg(1, 2, [])
Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore lines
Executing call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore lines
Executing call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a String
Vim(function):E128: Function name must start with a capital or "s:": g:test()
Vim(function):E128: Function name must start with a capital or "s:": b:test()
Vim(function):E128: Function name must start with a capital or "s:": test2() "#
called Foo(1)
called Foo(2)
called Foo(3)
s:Testje exists: 0
func s:Testje exists: 1
Bar exists: 1
func Bar exists: 1
Vim(call):E116: Invalid arguments for function append
{{{1 getcurpos/setpos
6
:"
:" substring and variable name
:let str = 'abcdef'
:let n = 3
:$put =str[n:]

def
:$put =str[:n]

abcd
:$put =str[n:n]

d
:unlet n
:let nn = 3
:$put =str[nn:]


def
~

:$put =str[:nn]
abcd
:$put =str[nn:nn]

d
:unlet nn
:let b:nn = 4
:$put =str[b:nn:]


ef
~

:$put =str[:b:nn]
abcde
:$put =str[b:nn:b:nn]

e
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 362 lines, 11279 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_eval = test61; then \
#	  if diff test.out test_eval.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_eval.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_eval.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_fixeol.failed test.ok test.out X* viminfo
cp test_fixeol.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_fixeol.in
[?1h="test_fixeol.in" 40 lines, 780 charactersTests for 'fixeol'vim: set ft=vim :

STARTTEST
:" use Unix fileformat for consistency
:set ff=unix
:enew!
awith eol^[:w! XXEol
:enew!
:set noeol nofixeol
awithout eol^[:w! XXNoEol
:set eol fixeol
:bwipe XXEol XXNoEol
:"
:" try editing files with 'fixeol' disabled
:e! XXEol
ostays eol^[:set nofixeol
:w! XXTestEol
:e! XXNoEol
ostays without^[:set nofixeol
:w! XXTestNoEol
:bwipe XXEol XXNoEol XXTestEol XXTestNoEol
:set fixeol:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for 'fixeol'vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 35 lines, 698 characters written:set ff& cpo+=A
/ENDTEST















:"
:" Append "END" to each file so that we can see what the last written char was.
ggdGaEND^[:w >>XXEol
:w >>XXNoEol
:w >>XXTestEol
:w >>XXTestNoEol
:"
:" Concatenate the results
:e! test.out
a0^[:$r XXEol
:$r XXNoEol
Go1^[:$r XXTestEol
:$r XXTestNoEol
:w
:qa!
ENDTEST

~with eol:w! XXEol
"XXEol" [New File] 1 line, 9 characters written:enew!
:set noeol nofixeol
without eol:w! XXNoEol
"XXNoEol" [New File][Incomplete last line] 1 line, 11 characters written:set eol fixeol
:bwipe XXEol XXNoEol
"test_fixeol.in" 40 lines, 780 characters

2 buffers wiped out

Press ENTER or type command to continue:"
:w! XXTestEol
:e! XXNoEol
ostays without^[:set nofixeol
:w! XXTestNoEol
:bwipe XXEol XXNoEol XXTestEol XXTestNoEol
:set fixeol
:"
:" Append "END" to each file so that we can see what the last written char was.
ggdGaEND^[:w >>XXEol
:w >>XXNoEol
:w >>XXTestEol
:w >>XXTestNoEol
:"
:" Concatenate the results
:e! test.out
a0^[:$r XXEol
:$r XXNoEol
Go1^[:$r XXTestEol
:$r XXTestNoEol
:w
:qa!
ENDTEST
:" try editing files with 'fixeol' disabled
:e! XXEol
"XXEol" 1 line, 9 characterswith eol~~~~~~~~~~~~~~~~~~~~~
~
stays eol:set nofixeol
:w! XXTestEol
"XXTestEol" [New File] 2 lines, 19 characters written:e! XXNoEol
"XXNoEol" [Incomplete last line] 1 line, 11 charactersout eol~
stays without:set nofixeol
:w! XXTestNoEol
"XXTestNoEol" [New File][Incomplete last line] 2 lines, 25 characters written:bwipe XXEol XXNoEol XXTestEol XXTestNoEol
"test_fixeol.in" 40 lines, 780 characters

4 buffers wiped out

Press ENTER or type command to continue:set fixeol
:w! XXTestEol
:e! XXNoEol
ostays without^[:set nofixeol
:w! XXTestNoEol
:bwipe XXEol XXNoEol XXTestEol XXTestNoEol
:set fixeol
:"
:" Append "END" to each file so that we can see what the last written char was.
ggdGaEND^[:w >>XXEol
:w >>XXNoEol
:w >>XXTestEol
:w >>XXTestNoEol
:"
:" Concatenate the results
:e! test.out
a0^[:$r XXEol
:$r XXNoEol
Go1^[:$r XXTestEol
:$r XXTestNoEol
:w
:qa!
ENDTEST
:"
:" Append "END" to each file so that we can see what the last written char was.
Tests for 'fixeol'vim: set ft=vim :

STARTTEST
:" use Unix fileformat for consistency
:set ff=unix
:enew!
awith eol^[:w! XXEol
:enew!
:set noeol nofixeol
awithout eol^[:w! XXNoEol
:set eol fixeol
:bwipe XXEol XXNoEol
:"
:" try editing files with 'fixeol' disabled
:e! XXEol
ostays eol^[:set nofixeol~~~~~~~~~~~~~~~~~~~~~~
--No lines in buffer--END:w >>XXEol
"XXEol" 1 line, 4 characters appended:w >>XXNoEol
"XXNoEol" 1 line, 4 characters appended:w >>XXTestEol
"XXTestEol" 1 line, 4 characters appended:w >>XXTestNoEol
"XXTestNoEol" 1 line, 4 characters appended:"
:" Concatenate the results
:e! test.out
"test.out" [New File]0:$r XXEol
"XXEol" 2 lines, 13 characterswith eol
END:$r XXNoEol
"XXNoEol" 1 line, 15 characterswithout eolEND

1:$r XXTestEol
"XXTestEol" 3 lines, 23 characterswith eol
stays eol
END:$r XXTestNoEol
"XXTestNoEol" 2 lines, 29 characterswithout eol
stays withoutEND:w
"test.out" [New File] 10 lines, 84 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_fixeol = test61; then \
#	  if diff test.out test_fixeol.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_fixeol.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_fixeol.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_getcwd.failed test.ok test.out X* viminfo
cp test_getcwd.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_getcwd.in
[?1h="test_getcwd.in" 96 lines, 2374 charactersTests for getcwd(), haslocaldir(), and :lcdvim: set ft=vim :

STARTTEST
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xtopdir directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a swapfile in Xtopdir prevents it from being cleaned up.
:set noswapfile
:"
:function! GetCwdInfo(win, tab)
: let tab_changed = 0
: let mod = ":t"
: if a:tab > 0 && a:tab != tabpagenr()
:   let tab_changed = 1
:   exec "tabnext " . a:tab
: endif
: let bufname = fnamemodify(bufname(winbufnr(a:win)), mod)
: if tab_changed:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for getcwd(), haslocaldir(), and :lcdvim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 90 lines, 2273 characters written:set ff& cpo+=A
/ENDTEST:wincmd W
:lcd Xdir2
:call add(r, GetCwdInfo(0, 0))
:wincmd W
:lcd Xdir3
:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("x"), 0))
:call add(r, GetCwdInfo(bufwinnr("y"), 0))
:call add(r, GetCwdInfo(bufwinnr("z"), 0))
:let tp_nr = tabpagenr()
:tabrewind
:call add(r, GetCwdInfo(3, tp_nr))
:call add(r, GetCwdInfo(2, tp_nr))
:call add(r, GetCwdInfo(1, tp_nr))
:"
:call writefile(r, test_out, "a")
:q
:exec "cd " . cwd
:call delete("Xtopdir", "rf")
:qa!
ENDTEST



:so! Xdotest
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xtopdir directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a swapfile in Xtopdir prevents it from being cleaned up.
:set noswapfile
:"
:function! GetCwdInfo(win, tab)

:  : let tab_changed = 0

:  : let mod = ":t"

:  : if a:tab > 0 && a:tab != tabpagenr()

:    :   let tab_changed = 1

:    :   exec "tabnext " . a:tab

:    : endif

:  : let bufname = fnamemodify(bufname(winbufnr(a:win)), mod)

:  : if tab_changed

:    :   tabprevious

:    : endif

:  : if a:win == 0 && a:tab == 0

:    :   let dirname = fnamemodify(getcwd(), mod)

:    :   let lflag = haslocaldir()

:    : elseif a:tab == 0

:    :   let dirname = fnamemodify(getcwd(a:win), mod)

:    :   let lflag = haslocaldir(a:win)

:    : else

:    :   let dirname = fnamemodify(getcwd(a:win, a:tab), mod)

:    :   let lflag = haslocaldir(a:win, a:tab)

:    : endif

:  : return bufname . ' ' . dirname . ' ' . lflag

:  :endfunction
:wincmd W
:lcd Xdir2
:call add(r, GetCwdInfo(0, 0))
:wincmd W
:lcd Xdir3
:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("x"), 0))
:call add(r, GetCwdInfo(bufwinnr("y"), 0))
:call add(r, GetCwdInfo(bufwinnr("z"), 0))
:let tp_nr = tabpagenr()
:tabrewind
:call add(r, GetCwdInfo(3, tp_nr))
:call add(r, GetCwdInfo(2, tp_nr))
:call add(r, GetCwdInfo(1, tp_nr))
:"
:call writefile(r, test_out, "a")
:q
:exec "cd " . cwd
:call delete("Xtopdir", "rf")
:qa!
ENDTEST


:" On windows a stale "Xtopdir" directory may exist, remove it so that
:" we start from a clean state.
:call delete("Xtopdir", "rf")
:let r=[]
:new
~~~~~~~~~~
[No Name]                                                                       test_getcwd.in                                                                  :let cwd=getcwd()
:let test_out = cwd . '/test.out'
:call mkdir('Xtopdir')
:cd Xtopdir
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtopdir/<<PKGBUILDDIR>>/src/vim-basic/testdir/test_getcwd.in:call mkdir('Xdir1')
:call mkdir('Xdir2')
:call mkdir('Xdir3')
:new a
"a" [New File]~
~
~
~
~
~
a                                                                               ~
~
~
~
~
~
[No Name]                                                                       :q
:exec "cd " . cwd
:call delete("Xtopdir", "rf")
:qa!
ENDTEST

/<<PKGBUILDDIR>>/src/vim-basic/testdir/test_getcwd.in             :new b
"b" [New File]~
~
~
~
b                                                                               ~
~
~
~
a                                                                               ~
~
~
~
[No Name]                                                                       :call delete("Xtopdir", "rf")
:qa!
ENDTEST

/<<PKGBUILDDIR>>/src/vim-basic/testdir/test_getcwd.in             :new c
"c" [New File]~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       :qa!
ENDTEST

/<<PKGBUILDDIR>>/src/vim-basic/testdir/test_getcwd.in             :3wincmd w
c                                                                               a                                                                               :lcd Xdir1
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtopdir/Xdir1/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtopdir/c/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtopdir/b/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtopdir/a:call add(r, GetCwdInfo(0, 0))
:wincmd W
c                                                             b                                                                               a                                                                               :call add(r, GetCwdInfo(0, 0))
:wincmd W
c                                                                               b                                                                               :lcd Xdir3
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtopdir/Xdir3/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtopdir/c/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtopdir/b/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtopdir/a:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("a"), 0))
:call add(r, GetCwdInfo(bufwinnr("b"), 0))
:call add(r, GetCwdInfo(bufwinnr("c"), 0))
:wincmd W
c                                                                               b                                                             a                                                             /<<PKGBUILDDIR>>/src/vim-basic/testdir/test_getcwd.in             :call add(r, GetCwdInfo(bufwinnr("a"), tabpagenr()))
:call add(r, GetCwdInfo(bufwinnr("b"), tabpagenr()))
:call add(r, GetCwdInfo(bufwinnr("c"), tabpagenr()))
:"
:tabnew x
"x" [New File] 5 /b/v/v/s/v/t/test_getcwd.in | x _____________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:new y
"y" [New File]2 y _Xy                                                                               x                                                                               :new z
"z" [New File] 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
~
~
~
z                                                                               ~
~
~
~
~
y                                                                               ~
~
~
~
~
x                                                                               :3wincmd w
z                                                                               x                                                                               x_X:call add(r, GetCwdInfo(0, 0))
:wincmd W
y                                                                               x                                                                               y_X:lcd Xdir2
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtopdir/Xdir2/b/v/v/s/v/t/X/y _X/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtopdir/z/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtopdir/y/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtopdir/x:call add(r, GetCwdInfo(0, 0))
:wincmd W
z ________________Xz                                                                               y                                                                               x                                                             :lcd Xdir3
/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtopdir/Xdir3/b/v/v/s/v/t/X/z _X/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtopdir/z/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtopdir/y/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtopdir/x:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("x"), 0))
:call add(r, GetCwdInfo(bufwinnr("y"), 0))
:call add(r, GetCwdInfo(bufwinnr("z"), 0))
:let tp_nr = tabpagenr()
:tabrewind
 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       ENDTEST

/<<PKGBUILDDIR>>/src/vim-basic/testdir/test_getcwd.in             

:call add(r, GetCwdInfo(3, tp_nr))
 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       ENDTEST

/<<PKGBUILDDIR>>/src/vim-basic/testdir/test_getcwd.in             

:call add(r, GetCwdInfo(2, tp_nr))
 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       ENDTEST

/<<PKGBUILDDIR>>/src/vim-basic/testdir/test_getcwd.in             

:call add(r, GetCwdInfo(1, tp_nr))
 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       ENDTEST

/<<PKGBUILDDIR>>/src/vim-basic/testdir/test_getcwd.in             

:"
:call writefile(r, test_out, "a")
:q
 4 [No Name] | 3 z _____________________________________________________________X~
~
~
c                                                                               ~
~
~
~
b                                                                               ~
~
~
a                                                                               ~
~
~
~
[No Name]                                                                       :exec "cd " . cwd
/<<PKGBUILDDIR>>/src/vim-basic/testdirX/z _XXtopdir/cXtopdir/bXtopdir/a
:call delete("Xtopdir", "rf")
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_getcwd = test61; then \
#	  if diff test.out test_getcwd.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_getcwd.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_getcwd.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_insertcount.failed test.ok test.out X* viminfo
cp test_insertcount.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_insertcount.in
[?1h="test_insertcount.in" 14 lines, 204 charactersTests for repeating insert and replace.

STARTTEST
:so small.vim
:/Second
4gro
:/^First/,$wq! test.out
:" get here when failed and in Insert mode
^[:.wq! test.out
ENDTEST

First line
Second line
Last line
~
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for repeating insert and replace./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 6 lines, 111 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:/Second
ooooecond line
ooo
Las:/^First/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 3 lines, 36 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_insertcount = test61; then \
#	  if diff test.out test_insertcount.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_insertcount.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_insertcount.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_listchars.failed test.ok test.out X* viminfo
cp test_listchars.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listchars.in
[?1h="test_listchars.in" 54 lines, 705 charactersTests for 'listchars' display with 'list' and :list

STARTTEST
:so small.vim
:set ff=unix
:let g:lines = []
:function GetScreenCharsForLine(lnum)
:  return join(map(range(1, virtcol('$')), 'nr2char(screenchar(a:lnum, v:val))')), '')
:endfunction
:nnoremap <expr> GG ":call add(g:lines, GetScreenCharsForLine(".screenrow()."))\\<CR>"
:set listchars+=tab:>-,space:.,trail:<
:set list
:
/^start:/
:normal! jzt
GG
GG
GG
GG
GGH:
:set listchars-=trail:<:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for 'listchars' display with 'list' and :list/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 25 lines, 431 characters written:set ff& cpo+=A
/ENDTEST








GG
GG
GG
GG
GG:
:put =g:lines
:'[,']w! test.out
ENDTEST

:so! Xdotest
:so small.vim
:set ff=unix
:let g:lines = []
:function GetScreenCharsForLine(lnum)

:  :  return join(map(range(1, virtcol('$')), 'nr2char(screenchar(a:lnum, v:val

))'), '')

:  :endfunction
:endfunction
:nnoremap <expr> GG ":call add(g:lines, GetScreenCharsForLine(".screenrow()."))\\<CR>"
:nnoremap <expr> GG ":call add(g:lines, GetScreenCharsForLine(".screenrow()."))

\<CR>"
:endfunction
:set listchars+=tab:>-,space:.,trail:<
:set list
$.<expr>.GG.":call..\\<CR>"$
:set.$
:set.list$
:$$.jzt$
GG$
GG$
GG$
GG$
GGH:$
:set.$
GG$
GG$
GG$
GG$
GG:$
:put.$.$$
$:/^start:/

start:$
:normal! jzt
>-------aa>-----$
..bb>---<<$
...cccc><$
dd........ee<<>-$
<$
$
$
STARTTEST$
:set.listchars+=trail:<$
:set.nolist$
:$
/^start:/$
:redir!.>>.test.out$
:+1,$list$
:redir.END$
:q!$
ENDTEST$
$
start:$
..fff>--<<$
>-------gg>-----$
.....h>-$
iii<<<<><<$:call add(g:lines, GetScreenCharsForLine(1))

:call add(g:lines, GetScreenCharsForLine(2))

:call add(g:lines, GetScreenCharsForLine(3))

:call add(g:lines, GetScreenCharsForLine(4))

:call add(g:lines, GetScreenCharsForLine(5))
::set listchars-=trail:<
.....
.......>..:call add(g:lines, GetScreenCharsForLine(1))
:call add(g:lines, GetScreenCharsForLine(2))
:call add(g:lines, GetScreenCharsForLine(3))
:call add(g:lines, GetScreenCharsForLine(4))

:call add(g:lines, GetScreenCharsForLine(5))
::put =g:lines
10 more >-------aa>-----$$
..bb>---<<$$
...cccc><$$
dd........ee<<>-$$
<$$
>-------aa>-----$$
..bb>---..$$
...cccc>.$$
dd........ee..>-$$
.$$10 more lines:'[,']w! test.out
"test.out" [New File] 10 lines, 124 characters written/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 8 lines, 93 characters written:set ff& cpo+=A
/ENDTEST



:+1,$list$
:redir.END$
:q!$
ENDTEST$
$
:so! Xdotest
:set listchars+=trail:<
:set nolist
   >>  :/^start:/

start:
:redir! >> test.out
:+1,$list
..fff>--<<$

>-------gg>-----$

.....h>-$

iii<<<<><<$

Press ENTER or type command to continue:redir END
>-------aa>-----$
..bb>---..$
...cccc>.$
dd........ee..>-$
.$STARTTEST:set listchars+=trail:<
:set nolist
:
/^start:/
:redir! >> test.out+1,$listredir END
:q!ENDTESTstart:  fff
        ggh
iii   
:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_listchars = test61; then \
#	  if diff test.out test_listchars.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_listchars.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listchars.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_listlbr.failed test.ok test.out X* viminfo
cp test_listlbr.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr.in
[?1h="test_listlbr.in" 119 lines, 2868 charactersTest for linebreak and list option (non-utf8)

STARTTEST
:so small.vim
:if !exists("+linebreak") || !has("conceal") | e! test.ok | w! test.out | qa! |  endif
:10new|:vsp|:vert resize 20
:put =\"\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \"
:norm! zt
:set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
:fu! ScreenChar(width)
:let c=''
:for j in range(1,4)
:for i in range(1,a:width)
:let c.=nr2char(screenchar(j, i))
:endfor
:let c.="\n"
:endfor
:return c
:endfu
:fu! DoRecordScreen()
:wincmd l
:$put =printf(\"\n%s\", g:test):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for linebreak and list option (non-utf8)/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 114 lines, 2792 characters written:set ff& cpo+=A
/ENDTESTabcd{ef
ghijklm
no}pqrs^[2k0f{^V^Vc%^[
:"
:let g:test ="Test 11: using block replace mode after wrapping"
:$put =g:test
:set linebreak wrap
Go^[150aa^[yypk147|^Vjr0
:"
:let g:test ="Test 12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$":set list listchars=space:_,trail:-,tab:>-,eol:$
:$put =g:test
:let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
:if !exists("+linebreak") || !has("conceal") | e! test.ok | w! test.out | qa! |

endif
abcd{ef
:10new|:vsp|:vert resize 20
       ||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            ~~~~~~~~~[No Name]                                                  let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =linenorm! zt
:redraw!let line=ScreenChar(winwidth(0))
:call DoRecordScreen()%w! test.outqaENDTEST
dummy text
test_listlbr.in                                                                 :put =\"\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \"
        abcdef hijkl
mn  pqrstuvwxyz_1060
ABCDEFGHIJKLMNOP    [+] abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP[+]:norm! zt
        abcdef hijkl
mn  pqrstuvwxyz_1060
ABCDEFGHIJKLMNOP    
~                   
~                   
~                   
~                   
~                   
~                   
                    
~                   :set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
abcdef          
+hijklmn            
+pqrstuvwxyz_1060ABC
+DEFGHIJKLMNOP      abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP :fu! ScreenChar(width)

:  :^Ilet c=''

:  :^Ifor j in range(1,4)

:    :^I    for i in range(1,a:width)

:      :^I    ^Ilet c.=nr2char(screenchar(j, i))

:      :^I    endfor

:    :           let c.="\n"

:    :^Iendfor

:  :^Ireturn c

:  :endfu
abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      ||||||~                   
~                   
~                   
~                   
~                   abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP~~~~~~~:fu! DoRecordScreen()

:  :^Iwincmd l

:  :^I$put =printf(\"\n%s\", g:test)

:  :^I$put =g:line

:  :^Iwincmd p

:  :endfu
abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      ||
~                   abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP~~~:"
:let g:test="Test 1: set linebreak"
:redraw!
abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      |||||||~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP~~~~~~~~[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines                    
Test 1: set         
+linebreak          
    abcdef          
+hijklmn            
+pqrstuvwxyz_1060ABCTest 1: set linebreak    abcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP:"
:let g:test="Test 2: set linebreak + set list"
:set linebreak list listchars=
^Iabcdef hijklmn^I  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP      
              
Test 1: set
+linebreak 
    abcdef
+hijklmn  
+pqrstuvwxyz_1060ABC
+DEFGHIJKLMNOP      :redraw!
^Iabcdef hijklmn^I  |
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      ||
Test 1: set|
+linebreak|
    abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      |
[No Name] [+]        abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOPTest 1: set linebreakabcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP~~[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines    abcdef                                                 +hijklmn                                                   +pqrstuvwxyz_1060ABC                                       +DEFGHIJKLMNOP                                             ~                                                          ~                                                                                                                                                                                                                                                                                                      Test 2: set linebreak + set list^Iabcdef hijklmn^I+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP4 more lines:"
:let g:test ="Test 3: set linebreak nolist"
:set nolist linebreak
    abcdef          hijklmn            pqrstuvwxyz_1060ABC
+DEFGHIJKLMNOP
           
Test 1: set
+linebreak
    abcdef
+hijklmn            
+pqrstuvwxyz_1060ABC:redraw!
abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      ||
Test 1: set|
+linebreak|
    abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
[No Name] [+]        abcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOPTest 2: set linebreak + set list^Iabcdef hijklmn^I+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines^Iabcdef hijklmn^I                                         +pqrstuvwxyz_1060ABC                                       +DEFGHIJKLMNOP                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Test 3: set linebreak nolistabcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP4 more lines:"
:let g:test ="Test 4: set linebreak with tab and 1 line as long as screen: shou

ld break!"
abcdef|^Iabcdef hijklmn^I:set nolist linebreak ts=8
    abcdef:let line="1\t".repeat('a', winwidth(0)-2)
:$put =line
      
        
Test 3: set         linebreak nolist
    abcdef
+hijklmn   
+pqrstuvwxyz_1060ABC
+DEFGHIJKLMNOP
1       
+aaaaaaaaaaaaaaaaaa :$
:norm! zt
1                   
+aaaaaaaaaaaaaaaaaa 
                    
                    
                    
                    
                    
                    
                    
                    ~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   :redraw!
1|
+aaaaaaaaaaaaaaaaaa |||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        ^Iabcdef hijklmn^I+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOPTest 3: set linebreak nolistabcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines                    
Test 4: set         
+linebreak with tab 
+and 1 line as long 
+as screen: should  
+break!             
1                   
+aaaaaaaaaaaaaaaaaa +pqrstuvwxyz_1060ABC                                       +DEFGHIJKLMNOP                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     1aaaaaaaaaaaaaaaaaaTest 4: set linebreak with tab and 1 line as long as screen+: should break!1+aaaaaaaaaaaaaaaaaa~~4 more lines:let line="_S_\t bla"
:$put =line
Test 4: set         
+linebreak with tab 
+and 1 line as long 
+as screen: should  
+break!             
1                   
+aaaaaaaaaaaaaaaaaa 
                    
                    
                    ~
~
_S_      bla:$
:norm! zt
_S_      bla        
                    
                    
                    
                    
                    
                    
                    
                    
                    ~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   :"
:let g:test ="Test 5: set linebreak with conceal and set list and tab displayed

by different char (line may not be truncated)"
_S_      bla|+pqrstuvwxyz_1060ABC:set cpo&vim list linebreak conceallevel=2 concealcursor=nv listchars=tab:ab
abbbb:syn match ConcealVar contained /_/ conceal
:syn match All /.*/ contains=ConcealVar
Sabb:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines                    
Test 5: set         
+linebreak with     
+conceal and set    
+list and tab       
+displayed by       
+different char     
+(line may not be   
+truncated)         ~                                                          ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  _S_      blaTest 5: set linebreak with conceal and set list and tab dis+played by different char (line may not be truncated)Sabbbbbb bla~~~4 more lines:set cpo&vim linebreak
:"
:let g:test ="Test 6: set linebreak with visual block mode"
:let line="REMOVE: this not"
:$put =g:test
abbbbbb
~
~          
~              
Test 6: set     nebreak withvisual block mode
~                   
~                   
~                   :$put =line
REMOVE: this not    :let line="REMOVE: aaaaaaaaaaaaa"
:$put =line
REMOVE:             
+aaaaaaaaaaaaa      :1/^REMOVE:
REMOVE: 
REMOVE:this not        
aaaaaaaaaaaaa
~                   :$put
~                   
~                   
~                   
Test 6: set         
+linebreak with     
+visual block mode  
this not            
aaaaaaaaaaaaa       
~                   
                    REMOVE:             
REMOVE::set cpo&vim linebreak
:"
:let g:test ="Test 7: set linebreak with visual block mode and v_b_A"
:$put =g:test
this not            
aaaaaaaaaaaaa       
REMOVE:             
REMOVE:             
                    
                    
                    
                    
                    
                    Test 7: set
+linebreak with
+visual block mode
+and vbA
~                   
~                   long line:           foobar
+foobar foobar      @                   
@                           
             
       
       
           
               
                  
        
                    
                    +foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar             
                    TARGET at
+end:exe "norm! $3B\<C-v>eAx\<Esc>"
x at:set cpo&vim linebreak sbr=
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar TARGETx at 
end played by different char (line may not be truncated):"
:let g:test ="Test 8: set linebreak with visual char mode and changing block"
:$put =g:test
Test 8: set  
linebreak with
visual char mode
and changing block
~                   
~                   
~                   
~                   
~                   
~                   1111-1111-1111-11-  
1111-1111-1111      11122222222:"
:let g:test ="Test 9: using redo after block visual mode"
:$put =g:test
Test 9: using redo  
after block visual  
mode                1111-2222-1111-11-  
1111-2222-1111      
Test 9: using redo  
after block visual  
mode                
~                   
                    
                    
                    
                                        
aaa
aaa
a
~                   a
a3 lines changedA
A
AA
AaA:"
:let g:test ="Test 10: using normal commands after block-visual"
:$put =g:test
Test 9: using redo  
after block visual  
mode                
                    
AaA                 
AaA                 
A                   
~                   
                    
                    Test 10: using      
normal commands
after block-visual:set linebreak
AaA                 
AaA                 
A                   
Test 10: using      
normal commands     
after block-visual  
                    
                    
                    
                    abcd{ef
ghijklm
no}pqrspqrs
~                   
~                   :"
:let g:test ="Test 11: using block replace mode after wrapping"
:$put =g:test
AaA                 
A                   
Test 10: using      
normal commands     
after block-visual  
                    
abcdpqrs            
~                   
~                   
                    Test 11: using      
block replace mode  
after wrapping:set linebreak wrap
A                   
Test 10: using      
normal commands     
after block-visual  
                    
abcdpqrs            
Test 11: using      
block replace mode  
after wrapping      
                    aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaa        
~                   
~                   aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa@                   
@                   @                   
@                   
                    
                    
                    
                    
                    
                    
                    
                    aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaa
~                   
~                   0
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa@                   
@                   @                   
@                   
                    
                    
                    
                    
                    
                    
                    
                    aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaa0aaa
~                   
~                   :"
:let g:test ="Test 12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$

"aaaaaaaaaaaaaaaaaaaa|~:set list listchars=space:_,trail:-,tab:>-,eol:$
$:$put =g:test
Test_12:_set_       
linebreak_list_     
listchars=space:,   
tab:>-,tail:-,eol:$$
~                   
~                   
~                   
~                   :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
a_                  
aaaaaaaaaaaaaaaaaaaa
aa>-----a-$         :$
:norm! zt
a_                  
aaaaaaaaaaaaaaaaaaaa
aa>-----a-$         
~                   
~                   
~                   
                    
                    
                    
                    ~                   
~                   
~                   
~                   :redraw!
a_|
aaaaaaaaaaaaaaaaaaaa|
aa>-----a-$||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        ~~_S_      blaTest 5: set linebreak with conceal and set list and tab displayed by different char (line may not be truncated)Sabbbbbb bla~~~[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines$                   
Test_12:_set_       
linebreak_list_     
listchars=space:,   
tab:>-,tail:-,eol:$$
a------------------ 
$                   Test 12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$a aaaaaaaaaaaaaaaaaaaaaaa12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$a_          aaaaaaaaaaaaaaaaaaaaaa>-----a-$:%w! test.out
"test.out" [New File] 62 lines, 2030 characters writtentest.out     test.out     :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_listlbr = test61; then \
#	  if diff test.out test_listlbr.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_listlbr.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_search_mbyte.failed test.ok test.out X* viminfo
cp test_search_mbyte.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_search_mbyte.in
[?1h="test_search_mbyte.in" 15 lines, 226 charactersTest for search('multi-byte char', 'bce')

STARTTEST
:source small.vim
:source mbyte.vim
:set encoding=utf-8
:/^Test bce:/+1
:$put =search('A', 'bce', line('.'))
:1;/^Results:/,$wq! test.out
ENDTEST

Results:

Test bce:
A
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for search('multi-byte char', 'bce')/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 6 lines, 140 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:source small.vim
:source mbyte.vim
:set encoding=utf-8
Test for search('multi-byte char', 'bce')

STARTTEST
:source small.vim
:source mbyte.vim
:set encoding=utf-8
:/^Test bce:/+1
:$put =search('A', 'bce', line('.'))
:1;/^Results:/,$wq! test.out
ENDTEST

Results:

Test bce:
A
~
~
~
~
~
~
~
~:/^Test bce:/+1
:$put =search('A', 'bce', line('.'))
15
:1;/^Results:/,$wq! test.out
"test.out" [New File] 5 lines, 27 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_search_mbyte = test61; then \
#	  if diff test.out test_search_mbyte.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_search_mbyte.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_search_mbyte.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_utf8.failed test.ok test.out X* viminfo
cp test_utf8.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_utf8.in
[?1h="test_utf8.in" 46 lines, 1245 charactersTests for Unicode manipulationsvim: set ft=vim :

STARTTEST
:so small.vim
:set encoding=utf-8
:"
:" Visual block Insert adjusts for multi-byte char
:new
:exe ":norm! gg0l\<C-V>jjIx\<Esc>"
:let r = getline(1, '$')
:"
:bwipeout!
:$put=r
:"
:" Test for built-in function strchars()
:$put=strchars(str)
:$put=strchars(str, 0)
:$put=strchars(str, 1)
:endfor
:"
:" Test for customlist completion:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for Unicode manipulationsvim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 40 lines, 1151 characters written:set ff& cpo+=A
/ENDTEST:"
:" Test for customlist completion
:function! CustomComplete1(lead, line, pos)
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
:call feedkeys(":Test1 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete2(lead, line, pos)
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
:call feedkeys(":Test2 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete3(lead, line, pos)
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:call garbagecollect(1)
:/^start:/,$wq! test.out
ENDTEST


:so! Xdotest
:so small.vim
:set encoding=utf-8
:" Test for customlist completion
:function! CustomComplete1(lead, line, pos)
:return ['あ', 'い']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
:call feedkeys(":Test1 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete2(lead, line, pos)
:return ['あたし', 'あたま', 'あたりめ']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
:call feedkeys(":Test2 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete3(lead, line, pos)
:return ['Nこ', 'Nん', 'Nぶ']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:call garbagecollect(1)
:/^start:/,$wq! test.out
ENDTEST

:"
:" Visual block Insert adjusts for multi-byte char
:new
~~~~~~~~~~
[No Name]                                                                       function! CustomComplete3(lead, line, pos)
:       return ['Nこ', 'Nん', 'Nぶ']endfunctioncommand -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')"call garbagecollect(1)
:/^start:/,$wq! test.out
ENDTEST test_utf8.in                                                                    :call setline(1, ["aaa", "あああ", "bbb"])
aaa
あああ
bbb[+]:exe ":norm! gg0l\<C-V>jjIx\<Esc>"
xaa
xあああ
bxbb:let r = getline(1, '$')
:"
:bwipeout!
:" Test for customlist completion
:function! CustomComplete1(lead, line, pos)
:       return ['あ', 'い']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
:call feedkeys(":Test1 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete2(lead, line, pos)
:return ['あたし', 'あたま', 'あたりめ']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
:call feedkeys(":Test2 \<C-L>'\<C-B>$put='\<CR>", 'it')"function! CustomComplete3(lead, line, pos)
:       return ['Nこ', 'Nん', 'Nぶ']
:endfunctionommand -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"call garbagecollect(1):/^start:/,$wq! test.out
ENDTEST
 :$put=r
3 more lines



start:
axaa
xあああ
bxbb3 more lines:"
:" Test for built-in function strchars()
:for str in ["a", "あいa", "A\u20dd", "A\u20dd\u20dd", "\u20dd"]

:  :^I$put=strchars(str)

:  :^I$put=strchars(str, 0)

:  :^I$put=strchars(str, 1)

:  :endfor
:call garbagecollect(1)
:/^start:/,$wq! test.out
ENDTEST

start:axaaxあああbxbb11133322133
1111
:"
:" Test for customlist completion
:function! CustomComplete1(lead, line, pos)

:  :^Ireturn ['あ', 'い']

:  :endfunction
:call garbagecollect(1)
:/^start:/,$wq! test.out
:command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
:call feedkeys(":Test1 \<C-L>'\<C-B>$put='\<CR>", 'it')
:Test1 ...'
:$Test1 '
:$pTest1 '
:$puTest1 '
:$putTest1 '
:$put=Test1 ''Test1 '

Test1
:"
:function! CustomComplete2(lead, line, pos)

:  :^Ireturn ['あたし', 'あたま', 'あたりめ']

:  :endfunction
:/^start:/,$wq! test.out
ENDTEST
:command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
:call feedkeys(":Test2 \<C-L>'\<C-B>$put='\<CR>", 'it')
:Test2 ...あた'
:$Test2 あた'
:$pTest2 あた'
:$puTest2 あた'
:$putTest2 あた'
:$put=Test2 あた''Test2 あた'

Test2 あた
:"
:function! CustomComplete3(lead, line, pos)

:  :^Ireturn ['Nこ', 'Nん', 'Nぶ']

:  :endfunction
ENDTEST
:command -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')
:Test3 ...N'
:$Test3 N'
:$pTest3 N'
:$puTest3 N'
:$putTest3 N'
:$put=Test3 N''Test3 N'

Test3 N
:"
:call garbagecollect(1)
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 22 lines, 86 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_utf8 = test61; then \
#	  if diff test.out test_utf8.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_utf8.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_utf8.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -I/usr/include/lua5.2 -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv  -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/arm-linux-gnueabihf/perl/5.24/CORE   -I/usr/include/python3.5m -DPYTHON3_HOME='L"/usr"' -pthread -fPIE -I/usr/include/ruby-2.3.0 -I/usr/include/arm-linux-gnueabihf/ruby-2.3.0 -DRUBY_VERSION=23 -I/usr/include/tcl8.6  -D_REENTRANT=1  -D_THREAD_SAFE=1  -D_LARGEFILE64_SOURCE=1  -o objects/option.o option.c
rm -rf X* test.ok viminfo
rm -rf test_wordcount.failed test.ok test.out X* viminfo
cp test_wordcount.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_wordcount.in
[?1h="test_wordcount.in" 126 lines, 2815 charactersTest for wordcount() function

STARTTEST
:so small.vim
:so mbyte.vim
:set enc=utf8
:set selection=inclusive fileformat=unix fileformats=unix
:new
:fu DoRecordWin(...)
:wincmd k
:if exists("a:1")
:call cursor(a:1)
:endif
:let result=[]
:call add(result, g:test)
:call add(result, getline(1, '$'))
:call add(result, wordcount())
:wincmd j
:return result
:endfu
:fu PutInWindow(args)
:wincmd k
:%d _:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for wordcount() function/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 121 lines, 2753 characters written:set ff& cpo+=A
/ENDTEST:0
v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])
:let log[2]=g:visual_stat
:call Log()
:"
:let g:test="Test 11: visual mode, single line"
:wincmd k
:set ls=2 stl=%{STL()}
:" start visual mode quickly and select complete buffer
:2
0v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])
:let log[2]=g:visual_stat
:call Log()
:"
:/^RESULT test/,$w! test.out
:qa!
ENDTEST
RESULT test:

:so! Xdotest
:so small.vim
:so mbyte.vim
:set enc=utf8
:0
v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])
:let log[2]=g:visual_stat
:call Log()
:"
:let g:test="Test 11: visual mode, single line"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
:wincmd k
:set ls=2 stl=%{STL()}
:" start visual mode quickly and select complete buffer
:2
0v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])
:let log[2]=g:visual_stat
:call Log()
:"
:/^RESULT test/,$w! test.out
:qa!
ENDTEST
RESULT test:

:set selection=inclusive fileformat=unix fileformats=unix
:new
~~~~~~~~~~
[No Name]                                                                       0v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])[2]=g:visual_statcall Log()"/^RESULT test/,$w! test.out
:qa!ENDTEST
RESULT test:
test_wordcount.in                                                               :fu DoRecordWin(...)

:  :^Iwincmd k

:  :       if exists("a:1")

:    :           call cursor(a:1)

:    :       endif

:  :       let result=[]

:  :       call add(result, g:test)

:  :       call add(result, getline(1, '$'))

:  :       call add(result, wordcount())

:  :^Iwincmd j

:  :       return result

:  :endfu
~
~
~
~
~
~
~
~
~
~:fu PutInWindow(args)

:  :       wincmd k

:  :       %d _

:  :       call append(1, a:args)

:  :^Iwincmd j

:  :endfu
~
~
~
~:fu Log()

:  :   $put ='----'

:  :   $put =remove(g:log,0)

:  :   $put =string(g:log)

:  :endfu
~
~
~:fu! STL()

:  :    if mode() =~? 'V'

:    :       let g:visual_stat=wordcount()

:    :    endif

:  :    return string(wordcount())

:  :endfu
~
~
~
~:let g:test="Test 1: empty window"
:let log=DoRecordWin()
[No Name]                                                                       test_wordcount.in                                                               :call Log()




----
Test 1: empty window
[[''], {'chars': 0, 'cursor_chars': 0, 'words': 0, 'cursor_words': 0, 'bytes': 00, 'cursor_bytes': 0}][+]


:"
:let g:test="Test 2: some words, cursor at start"
:call PutInWindow('one two three')
one two three[+]:let log=DoRecordWin([1,1,0])
:call Log()




----
Test 2: some words, cursor at start
[['', 'one two three'], {'chars': 15, 'cursor_chars': 1, 'words': 3, 'cursor_worrds': 0, 'bytes': 15, 'cursor_bytes': 1}]


:"
:let g:test="Test 3: some words, cursor at end"
:call PutInWindow('one two three')
--No lines in buffer--:let log=DoRecordWin([2,99,0])
:call Log()




----
Test 3: some words, cursor at end
[['', 'one two three'], {'chars': 15, 'cursor_chars': 14, 'words': 3, 'cursor_woords': 3, 'bytes': 15, 'cursor_bytes': 14}]


:"
:let g:test="Test 4: some words, cursor at end, ve=all"
:set ve=all
:call PutInWindow('one two three')
--No lines in buffer--:let log=DoRecordWin([2,99,0])
:call Log()




----
Test 4: some words, cursor at end, ve=all
[['', 'one two three'], {'chars': 15, 'cursor_chars': 15, 'words': 3, 'cursor_woords': 3, 'bytes': 15, 'cursor_bytes': 15}]


:set ve=
:"
:let g:test="Test 5: several lines with words"
:call PutInWindow(['one two three', 'one two three', 'one two three'])
one two three
one two three--No lines in buffer--:let log=DoRecordWin([4,99,0])
:call Log()




----
Test 5: several lines with words
[['', 'one two three', 'one two three', 'one two three'], {'chars': 43, 'cursor__chars': 42, 'words': 9, 'cursor_words': 9, 'bytes': 43, 'cursor_bytes': 42}]


:"
:let g:test="Test 6: one line with BOM set"
:call PutInWindow('one two three')
~~--No lines in buffer--:wincmd k
[No Name] [+]                                                                   test_wordcount.in [+]                                                           :set bomb
:w! Xtest
"Xtest" [New File] 2 lines, 18 characters writtenXtest        :wincmd j
Xtest                                                                           test_wordcount.in [+]                                                           :let log=DoRecordWin([2,99,0])
:call Log()




----
Test 6: one line with BOM set
[['', 'one two three'], {'chars': 15, 'cursor_chars': 14, 'words': 3, 'cursor_woords': 3, 'bytes': 18, 'cursor_bytes': 14}]


:wincmd k
Xtest                                                                           test_wordcount.in [+]                                                           :set nobomb
[+]:w!
"Xtest" 2 lines, 15 characters written   :wincmd j
Xtest                                                                           test_wordcount.in [+]                                                           :"
:let g:test="Test 7: one line with multibyte words"
:call PutInWindow(['Äne M¤ne Müh'])
Äne M¤ne Müh[+]--No lines in buffer--:let log=DoRecordWin([2,99,0])
:call Log()




----
Test 7: one line with multibyte words
[['', 'Äne M¤ne Müh'], {'chars': 14, 'cursor_chars': 13, 'words': 3, 'cursor_worrds': 3, 'bytes': 17, 'cursor_bytes': 16}]


:"
:let g:test="Test 8: several lines with multibyte words"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
und raus bist dü!--No lines in buffer--:let log=DoRecordWin([3,99,0])
:call Log()




----
Test 8: several lines with multibyte words
[['', 'Äne M¤ne Müh', 'und raus bist dü!'], {'chars': 32, 'cursor_chars': 31, 'wwords': 7, 'cursor_words': 7, 'bytes': 36, 'cursor_bytes': 35}]


:"
:let g:test="Test 9: visual mode, complete buffer"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
--No lines in buffer--:wincmd k
Xtest [+]                                                                       test_wordcount.in [+]                                                           :set ls=2 stl=%{STL()}
<ursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor_bytes': 1}<: 3985, 'words': 579, 'cursor_words': 560, 'bytes': 4153, 'cursor_bytes': 4007}:" start visual mode quickly and select complete buffer
:0
ords': 7, 'bytes': 36, 'visual_chars': 1, 'visual_words': 0, 'visual 
Äne M¤ne Müh 
und raus bist dü! ds': 7, 'bytes': 36, 'visual_chars': 32, 'visual_words': 7, 'visual_bytes': 36Äne M¤ne Mühnd raus bist dü!3 lines yankedursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor_bytes': 1213:set stl= ls=1
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log=DoRecordWin([3,99,0])
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log[2]=g:visual_stat
:call Log()




----
Test 9: visual mode, complete buffer
[['', 'Äne M¤ne Müh', 'und raus bist dü!'], {'chars': 32, 'words': 7, 'bytes': 336, 'visual_chars': 32, 'visual_words': 7, 'visual_bytes': 36}]


:"
:let g:test="Test 10: visual mode (empty)"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
--No lines in buffer--:wincmd k
Xtest [+]                                                                       test_wordcount.in [+]                                                           :set ls=2 stl=%{STL()}
<ursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor_bytes': 1}<: 4170, 'words': 606, 'cursor_words': 587, 'bytes': 4342, 'cursor_bytes': 4196}:" start visual mode quickly and select complete buffer
:0
ords': 7, 'bytes': 36, 'visual_chars': 1, 'visual_words': 0, 'visualursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor213:set stl= ls=1
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log=DoRecordWin([3,99,0])
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log[2]=g:visual_stat
:call Log()




----
Test 10: visual mode (empty)
[['', 'Äne M¤ne Müh', 'und raus bist dü!'], {'chars': 32, 'words': 7, 'bytes': 336, 'visual_chars': 1, 'visual_words': 0, 'visual_bytes': 1}]


:"
:let g:test="Test 11: visual mode, single line"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
--No lines in buffer--:wincmd k
Xtest [+]                                                                       test_wordcount.in [+]                                                           :set ls=2 stl=%{STL()}
<ursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor_bytes': 1}<: 4347, 'words': 632, 'cursor_words': 613, 'bytes': 4521, 'cursor_bytes': 4377}:" start visual mode quickly and select complete buffer
:2
213ords': 7, 'bytes': 36, 'visual_chars': 1, 'visual_words': 1, 'visual2Äne M¤ne Mühds': 7, 'bytes': 36, 'visual_chars': 13, 'visual_words': 3, 'visual_bytes': 16
Äne M¤ne Mühursor_chars': 2, 'words': 7, 'cursor_words': 1, 'bytes': 36, 'cursor_bytes': 3sor_chars': 15, 'words': 7, 'cursor_words': 4, 'bytes': 36, 'cursor_bytes': 18:set stl= ls=1
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log=DoRecordWin([3,99,0])
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log[2]=g:visual_stat
:call Log()




----
Test 11: visual mode, single line
[['', 'Äne M¤ne Müh', 'und raus bist dü!'], {'chars': 32, 'words': 7, 'bytes': 336, 'visual_chars': 13, 'visual_words': 3, 'visual_bytes': 16}]


:"
:/^RESULT test/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 34 lines, 1905 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_wordcount = test61; then \
#	  if diff test.out test_wordcount.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_wordcount.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_wordcount.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test11.failed test.ok test.out X* viminfo
cp test11.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test11.in
[?1h="test11.in" 84 lines, 3366 charactersTests for autocommands:
- FileWritePrewriting a compressed file
- FileReadPostreading a compressed file
- BufNewFilereading a file template
- BufReadPredecompressing the file to be read
- FilterReadPresubstituting characters in the temp file
- FilterReadPostsubstituting characters after filtering
- FileReadPreset options for decompression
- FileReadPostdecompress the file

Note: This test is skipped if "gzip" is not available.
$GZIP is made empty, "-v" would cause trouble.
Use a FileChangedShell autocommand to avoid a prompt for "Xtestfile.gz" being
modified outside of Vim (noticed on Solaris).

STARTTEST
:so small.vim
:" drop out when there is no gzip program
:if !executable("gzip")
: e! test.ok
: w! test.out
: qa!
:endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for autocommands:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 48 lines, 2298 characters written:set ff& cpo+=A
/ENDTEST:au! FileReadPre    *.gz   exe 'silent !gzip -d ' . shellescape(expand("<afile>""))
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/
:$r Xtestfile.gz" Read compressed file
:w" write it, after filtering
:au!" remove all autocommands
:e" Edit test.out again
:set nobin ff&   " use the default fileformat for writing
:w
:qa!
ENDTEST

startstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 4  Abcdefghijklmnopqrstuvwxyz
line 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 6  Abcdefghijklmnopqrstuvwxyz
line 7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 8  Abcdefghijklmnopqrstuvwxyz
line 9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
:so! Xdotest
:so small.vim
:" drop out when there is no gzip program
:if !executable("gzip")

:  : e! test.ok

:  : w! test.out

:  : qa!

:  :endif
:au! FileReadPre    *.gz   exe 'silent !gzip -d ' . shellescape(expand("<afile>""))
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/:let $GZIP = ""
:au FileChangedShell * echo "caught FileChangedShell"
:set bin
:au FileWritePre    *.gz   '[,']!gzip
:au FileWritePost   *.gz   undo
:/^start of testfile/,/^end of testfile/w! Xtestfile.gz
11 lines filtered
"Xtestfile.gz" [New File][Incomplete last line] 1 line, 111 characters written

10 more lines; before #1  1 seconds ago

Press ENTER or type command to continue:au FileReadPost    *.gz   '[,']!gzip -d
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/
:$r Xtestfile.gz" Read compressed file
:w                           " write it, after filtering
:au!             " remove all autocommandse" Edit test.out againset nobin ff&   " use the default fileformat for writing
:wqa!ENDTESTstartstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx45678910
end of testfile
:$r Xtestfile.gz                " Read and decompress the testfile
"Xtestfile.gz" [Incomplete last line] 1 line, 111 characters







start of test.c
/*
 * Here is a new .c file
 */
end of test.c
start of testfile
:?startstart?,$w! test.out      " Write contents of this file
"test.out" [New File] 29 lines, 788 characters written:au BufNewFile      *.c    read Xtest.c
:/^start of test.c/+1,/^end of test.c/-1w! Xtest.c
search hit BOTTOM, continuing at TOP"Xtest.c" [New File] 3 lines, 32 characters written:e! foo.c                       " Will load Xtest.c
"foo.c" [New File]
"Xtest.c" 3 lines, 32 characters

Press ENTER or type command to continue:au FileAppendPre   *.out  '[,']s/new/NEW/
/*
 * Here is a new .c file
 */~~~~~~~~~~~~
~~~~~~~:au FileAppendPost  *.out  !cat Xtest.c >>test.out
:w>>test.out                    " Append it to the output file
"test.out" 4 lines, 33 characters appended

:!cat Xtest.c >>test.out


Press ENTER or type command to continue:au! FileAppendPre
/*
 * Here is a NEW .c file
 */
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:" setup autocommands to decompress before reading and re-compress afterwards
:au BufReadPre      *.gz   exe '!gzip -d ' . shellescape(expand("<afile>"))
:au BufReadPre      *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au BufReadPost     *.gz   call rename(expand("<afile>"), expand("<afile>:r"))
:au BufReadPost     *.gz   exe '!gzip ' . shellescape(expand("<afile>:r"))
:e! Xtestfile.gz                " Edit compressed file
:!gzip -d 'Xtestfile.gz'

"Xtestfile.gz""Xtestfile.gz" 11 lines, 357 characters:!gzip 'Xtestfile'

caught FileChangedShell

Press ENTER or type command to continue:w>>test.out                    " Append it to the output file
"test.out" 11 lines, 357 characters appended

:!cat Xtest.c >>test.out


Press ENTER or type command to continue:set shelltemp                  " need temp files here
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 4  Abcdefghijklmnopqrstuvwxyz
line 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 6  Abcdefghijklmnopqrstuvwxyz
line 7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 8  Abcdefghijklmnopqrstuvwxyz
line 9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 10 Abcdefghijklmnopqrstuvwxyz
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~:au FilterReadPre   *.out  call rename(expand("<afile>"), expand("<afile>") . "

.t")
start of testfile:au FilterReadPre   *.out  exe 'silent !sed s/e/E/ ' . shellescape(expand("<afi

le>")) . ".t >" . shellescape(expand("<afile>"))
start of testfile:au FilterReadPre   *.out  exe 'silent !rm ' . shellescape(expand("<afile>")) .

'.t'
start of testfile:au FilterReadPost  *.out  '[,']s/x/X/g
:e! test.out                    " Edit the output file
"test.out" 50 lines, 1242 charactersstarstart of testfile2  Abcdefghijklmnopqrstuvwxyz3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4  Abcdefghijklmnopqrstuvwxyz5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx6  Abcdefghijklmnopqrstuvwxyz7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8  Abcdefghijklmnopqrstuvwxyz9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 10 Abcdefghijklmnopqrstuvwxyz
end of testfilestart of test.c
/*
 * Here is a new .c file
 */
end of test.c
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 4  Abcdefghijklmnopqrstuvwxyz
line 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:23,$!cat
218 substitutions on 15 lines

28 lines filtered

Press ENTER or type command to continue:23,$s/\r$//                 " remove CR for when sed adds them
E486: Pattern not found: \r$
Press ENTER or type command to continue:au! FileReadPre    *.gz   exe 'silent !gzip -d ' . shellescape(expand("<afile>

"))
startstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE 5  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/
:$r Xtestfile.gz             " Read compressed file
"Xtestfile.gz" 11 lines, 357 characters

11 substitutions on 11 lines

Press ENTER or type command to continue:w                           " write it, after filtering
"test.out"61 lines, 1599 characters written

Press ENTER or type command to continue:au!             " remove all autocommands
E216: No such group or event: " remove all autocommands

Press ENTER or type command to continue:e               " Edit test.out again
"test.out"61 lines, 1599 charactersstartstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"test.out" 61 lines, 1599 characters:set nobin ff&   " use the default fileformat for writing
:w
"test.out" 61 lines, 1599 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test11 = test61; then \
#	  if diff test.out test11.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test11.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test11.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test52.failed test.ok test.out X* viminfo
cp test52.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test52.in
[?1h="test52.in" 65 lines, 1645 charactersTests for reading and writing files with conversion for Win32.

STARTTEST
:so mbyte.vim
:" make this a dummy test for non-Win32 systems
:if !has("win32") | e! test.ok | wq! test.out | endif
:"
:" write tests:
:" combine three values for 'encoding' with three values for 'fileencoding'
:" also write files for read tests
/^1
:set encoding=utf-8
:.w! ++enc=utf-8 test.out
:.w ++enc=cp1251 >>test.out
:.w ++enc=cp866 >>test.out
:.w! ++enc=utf-8 Xutf8
/^2
:set encoding=cp1251
:.w ++enc=utf-8 >>test.out
:.w ++enc=cp1251 >>test.out
:.w ++enc=cp866 >>test.out
:.w! ++enc=cp1251 Xcp1251
/^3:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for reading and writing files with conversion for Win32./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 57 lines, 1333 characters written:set ff& cpo+=A
/ENDTEST:e Xcp1251
:.w ++enc=cp1251 >>test.out
:set fencs=utf-8,cp866
:e Xcp866
:.w ++enc=cp1251 >>test.out
:"
:" read three 'fileencoding's with cp866 'encoding'
:set encoding=cp866 fencs=utf-8,cp1251
:e Xutf8
:.w ++enc=cp866 >>test.out
:e Xcp1251
:.w ++enc=cp866 >>test.out
:set fencs=utf-8,cp866
:e Xcp866
:.w ++enc=cp866 >>test.out
:"
:qa!
ENDTEST

:so! Xdotest
:so mbyte.vim
:" make this a dummy test for non-Win32 systems
:if !has("win32") | e! test.ok | wq! test.out | endif
"test.ok" 18 lines, 1374 characters

"test.out" [New File] 18 lines, 1374 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test52 = test61; then \
#	  if diff test.out test52.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test52.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test52.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test85.failed test.ok test.out X* viminfo
cp test85.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test85.in
[?1h="test85.in" 85 lines, 1868 charactersTest 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):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for Lua interface and luaeval() function/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 77 lines, 1775 characters written:set ff& cpo+=A
/ENDTEST:lua d = vim.eval("d")
:lua d[0] = 123
:lua d[1] = "abc"
:lua d[2] = vim.eval("[1, 2, 3]")
:lua d[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
:lua d[4] = d[0]
:lua d[5] = d[1]
:lua d[6] = d[2]
:lua d[7] = d[3]
:lua d[3] = nil
:lua d[2] = nil
:lua d[1] = nil
:lua d[0] = nil
:lua d = nil
:$put =string(d)

:?^1?,$w! test.out
:qa!
ENDTEST

1 line 1
2 line 2
3 line 3
:so! Xdotest
:so small.vim
:so lua.vim
"test.ok" 7 lines, 206 characters

"test.out" [New File] 7 lines, 206 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test85 = test61; then \
#	  if diff test.out test85.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test85.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test85.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test86.failed test.ok test.out X* viminfo
cp test86.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test86.in
[?1h="test86.in" 1711 lines, 48481 charactersTests for various python features.     vim: set ft=vim :

NOTE: This will cause errors when run under valgrind.
This would require recompiling Python with:
  ./configure --without-pymalloc
See http://svn.python.org/view/python/trunk/Misc/README.valgrind?view=markup

STARTTEST
:so small.vim
:set encoding=latin1
:set noswapfile
:if !has('python') | e! test.ok | wq! test.out | endif
:lang C
:fun Test()
:py import vim
:py cb = vim.current.buffer
: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]):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for various python features.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1700 lines, 48188 characters written:set ff& cpo+=A
/ENDTEST:   endif
:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:" vim: et ts=4 isk-=\:
:while getchar(0) isnot 0|endwhile
ENDTEST

start:


:so! Xdotest
:so small.vim
:set encoding=latin1
:   endif
:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:" vim: et ts=4 isk-=\:
:while getchar(0) isnot 0|endwhile
ENDTEST

start:

:set noswapfile
:if !has('python') | e! test.ok | wq! test.out | endif
"test.ok" 1445 lines, 67439 characters

"test.out" [New File] 1445 lines, 67439 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test86 = test61; then \
#	  if diff test.out test86.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test86.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test86.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test87.failed test.ok test.out X* viminfo
cp test87.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test87.in
[?1h="test87.in" 1707 lines, 49069 charactersTests for various python features.     vim: set ft=vim :

STARTTEST
:so small.vim
:set noswapfile
:if !has('python3') | e! test.ok | wq! test.out | endif
:lang C
:fun Test()
:py3 import vim
:py3 cb = vim.current.buffer
: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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for various python features.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1701 lines, 48985 characters written:set ff& cpo+=A
/ENDTEST:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:/^start:/,$w! test.out
:" vim: et ts=4 isk-=\:
:while getchar(0) isnot 0|endwhile
ENDTEST

start:


:so! Xdotest
:so small.vim
:set noswapfile
:if !has('python3') | e! test.ok | wq! test.out | endif
"test.ok" 1445 lines, 77744 characters

"test.out" [New File] 1445 lines, 77744 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test87 = test61; then \
#	  if diff test.out test87.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test87.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test87.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test12.failed test.ok test.out X* viminfo
cp test12.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test12.in
[?1h="test12.in" 52 lines, 1199 charactersTests for 'directory' option.
- ".", in same dir as file
- "./dir", in directory relative to file
- "dir", in directory relative to current dir

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo
:set dir=.,~
:/start of testfile/,/end of testfile/w! Xtest1
:" do an ls of the current dir to find the swap file (should not be there)
:if has("unix")
:  !ls .X*.swp >test.out
:else
:  r !ls X*.swp >test.out
:endif
:!echo first line >>test.out
:e Xtest1
:if has("unix")
:" Do an ls of the current dir to find the swap file, remove the leading dot
:" to make the result the same for all systems.
:  r!ls .X*.swp
:  s/\.*X/X/:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for 'directory' option./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 40 lines, 965 characters written:set ff& cpo+=A
/ENDTEST:!mkdir Xtest2
:set dir=./Xtest2,.,~
:e Xtest1
:!ls X*.swp >>test.out
:!echo under under >>test.out
:!ls Xtest2 >>test.out
:!echo under Xtest1.swp >>test.out
:!mkdir Xtest.je
:/start of testfile/,/end of testfile/w! Xtest2/Xtest3
:set dir=Xtest.je,~
:e Xtest2/Xtest3
:swap
:!ls Xtest2 >>test.out
:!echo under Xtest3 >>test.out
:!ls Xtest.je >>test.out
:!echo under Xtest3.swp >>test.out
:qa!
ENDTEST

start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo
:set dir=.,~
:/start of testfile/,/end of testfile/w! Xtest1
"Xtest1" [New] 4L, 70C written:" do an ls of the current dir to find the swap file (should not be there)
:if has("unix")

:  :  !ls .X*.swp >test.out

:!ls .X*.swp >test.out[?1l>
ls: cannot access '.X*.swp': No such file or directory

shell returned 2

[?1h=:  :else

:  :  r !ls X*.swp >test.out

:  :endif
:!mkdir Xtest2
:set dir=./Xtest2,.,~
:e Xtest1
:!ls X*.swp >>test.out
:!echo under under >>test.out
:!ls Xtest2 >>test.out
:!echo under Xtest1.swp >>test.out
:!mkdir Xtest.je
:/start of testfile/,/end of testfile/w! Xtest2/Xtest3
:set dir=Xtest.je,~
:e Xtest2/Xtest3
:swap
:!ls Xtest2 >>test.out
:!echo under Xtest3 >>test.out
:!ls Xtest.je >>test.out
:!echo under Xtest3.swp >>test.out
:qa!
ENDTEST

start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile:!echo first line >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:e Xtest1
"Xtest1" 4L, 70Cstart of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"Xtest1" 4L, 70C:if has("unix")

:  :" Do an ls of the current dir to find the swap file, remove the leading dot

:  :" to make the result the same for all systems.

:  :  r!ls .X*.swp

:  :  s/\.*X/X/

:  :  .w >>test.out
"test.out" 1L, 11C appended

:  :  undo

1 line less; before #1  0 seconds ago

:  :else

:  :  !ls X*.swp >>test.out

:  :endif
start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:!echo under Xtest1.swp >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir Xtest2
[?1l>
[?1h=
Press ENTER or type command to continue:set dir=./Xtest2,.,~
start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:e Xtest1
"Xtest1" 4L, 70C:!ls X*.swp >>test.out
[?1l>
ls: cannot access 'X*.swp': No such file or directory

shell returned 2

[?1h=
Press ENTER or type command to continue:!echo under under >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!ls Xtest2 >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!echo under Xtest1.swp >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir Xtest.je
[?1l>
[?1h=
Press ENTER or type command to continue:/start of testfile/,/end of testfile/w! Xtest2/Xtest3
search hit BOTTOM, continuing at TOP"Xtest2/Xtest3" [New] 4L, 70C written

Press ENTER or type command to continue:set dir=Xtest.je,~
start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:e Xtest2/Xtest3
"Xtest2/Xtest3" 4L, 70C:swap
Xtest.je/Xtest3.swp:!ls Xtest2 >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!echo under Xtest3 >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!ls Xtest.je >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!echo under Xtest3.swp >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test12 = test61; then \
#	  if diff test.out test12.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test12.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test12.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test25.failed test.ok test.out X* viminfo
cp test25.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test25.in
[?1h="test25.in" 31 lines, 840 charactersTest for jumping to a tag with 'hidden' set, with symbolic link in path of tag.
This only works for Unix, because of the symbolic link.

STARTTEST
:so small.vim
:set hidden
:" Create a link from test25.dir to the current directory.
:!rm -f test25.dir
:!ln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line
:r !pwd
d$/test
hP:.w! tags.test
:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.test
G^] x:.w! test.out
:!rm -f test25.dir tags.test
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for jumping to a tag with 'hidden' set, with symbolic link in path of tag./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 540 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:set hidden
:" Create a link from test25.dir to the current directory.
:!rm -f test25.dir
[?1l>
[?1h=
Press ENTER or type command to continue:!ln -s . test25.dir
[?1l>
[?1h=
Press ENTER or type command to continue:" Create tags.text, with the current directory name inserted.
Test for jumping to a tag with 'hidden' set, with symbolic link in path of tag.
This only works for Unix, because of the symbolic link.

STARTTEST
:so small.vim
:set hidden
:" Create a link from test25.dir to the current directory.
:!rm -f test25.dir
:!ln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line
:r !pwd
d$/test
hP:.w! tags.test
:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.test
G^] x:.w! test.out
:!rm -f test25.dir tags.test
:qa!
ENDTEST

/tags line
his only works for Unix, because of the symbolic link.STARTTEST
:so small.vim
:set hidden" Create a link from test25.dir to the current directory.
:!rm -f test25.dirln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line:r !pwdd$/test
hP:.w! tags.test
:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.testG^] x:.w! test.out:!rm -f test25.dir tags.test
:qa!ENDTESTtags line:
:r !pwd
STARTTEST
:so small.vim
:set hidden
:" Create a link from test25.dir to the current directory.
:!rm -f test25.dir
:!ln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line
:r !pwd
d$/test
hP:.w! tags.test
:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.test
G^] x:.w! test.out
:!rm -f test25.dir tags.test
:qa!
ENDTEST

tags line:
/<<PKGBUILDDIR>>/src/vim-basic/testdir

/test

SECTION_OFF     /test25.dir/test25.in   /^#define  SECTION_OFF  3$//<<PKGBUILDDIR>>/src/vim-basic/testdir/test25.dir/@
SECTION_OFF     /<<PKGBUILDDIR>>/src/vim-basic/testdir/test25.dir//test25.in/^#define  SECTION_OFF  3$/

:.w! tags.test
"tags.test" [New File] 1 line, 114 characters written:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.test






/*tx.c*/
#define  SECTION_OFF  3
#define  NUM_SECTIONS 3

SECTION_OFF#efine  SECTION_OFF  3:.w! test.out
"test.out" [New File] 1 line, 23 characters written:!rm -f test25.dir tags.test
[?1l>
[No write since last change]

[?1h=
Press ENTER or type command to continue:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test25 = test61; then \
#	  if diff test.out test25.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test25.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test25.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test49.failed test.ok test.out X* viminfo
cp test49.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test49.in
[?1h="test49.in" 32 lines, 705 charactersThis is a test of the script language.

If after adding a new test, the test output doesn't appear properly in
test49.failed, try to add one or more "G"s at the line ending in "test.out"

STARTTEST
:so small.vim
:se nocp nomore viminfo+=nviminfo
:lang mess C
:so test49.vim
:" Go back to this file and append the results from register r.
:buf test49.in
G"rp:/^Results/,$w! test.out
:"
:" make valgrind happy
:redir => funclist
:silent func
:redir END
:for line in split(funclist, "\n")
:  let name = matchstr(line, 'function \zs[A-Z]\w*\ze(')
:  if name != ''
:    exe "delfunc " . name
:  endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
This is a test of the script language./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 23 lines, 475 characters written:set ff& cpo+=A
/ENDTEST






:endfor
:for v in keys(g:)
:  silent! exe "unlet " . v
:endfor
:unlet v
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:se nocp nomore viminfo+=nviminfo
:lang mess C
:so test49.vim
Error detected while processing function F:

line    5:

E583: multiple :else:     else^I^I

Error detected while processing function G:

line    5:

E584: :elseif after :else:     elseif 1^I^I" aborts function

Error detected while processing function H:

line    7:

E583: multiple :else:     else^I^I

Error detected while processing function I:

line    7:

E584: :elseif after :else:     elseif 1^I^I" aborts function

*** Test  16: OK (8722)

Error detected while processing function F:

line   18:

E171: Missing :endif:     endwhile^I

E171: Missing :endif:     endwhile^I

line   34:

E171: Missing :endif:     endwhile^I

E171: Missing :endif:     endwhile^I

E171: Missing :endif:     endwhile^I

line   47:

E580: :endif without :if: ^Iendif^I

E580: :endif without :if: ^Iendif^I

E580: :endif without :if: ^Iendif^I

Error detected while processing /<<PKGBUILDDIR>>/src/vim-basic/te

stdir/test49.vim:

line  784:

E171: Missing :endif: endwhile 

*** Test  17: OK (285127993)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"/tmp/vziwm4Z/0" [New] 53L, 1582C written14L, 358C appended26L, 824C appended34L, 986C appended

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/1[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/1" 16L, 304C appended17L, 326C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/2[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/2"' -c 'breakad

dfile 8 /tmp/vziwm4Z/1' -S /tmp/vziwm4Z/1[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/2" 3L, 6C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/3[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/3" 6L, 127C appended7L, 149C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/4[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/4"' -c 'breakad

dfile 4 /tmp/vziwm4Z/3' -S /tmp/vziwm4Z/3[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/4" 1L, 5C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/5[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/5" 21L, 486C appended22L, 508C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/6[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/6"' -c 'breakad

dfunc 7 F' -S /tmp/vziwm4Z/5[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/6" 3L, 18C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/7[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/7" 13L, 364C appended14L, 386C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/8[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/8"' -c 'breakad

dfunc 3 G' -S /tmp/vziwm4Z/7[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/8" 1L, 9C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  18: OK (67224583)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/9[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/9" 12L, 201C appended13L, 223C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/10[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/10"' -S /tmp/vziwm

4Z/9[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/10" 2L, 4C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/11[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/11" 12L, 205C appended13L, 227C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/12[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/12"' -S /tmp/vziwm

4Z/11[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/12" 2L, 7C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/13[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/13" 6L, 122C appended7L, 144C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/14[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/14"' -S /tmp/vziwm

4Z/13[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/14" 1L, 5C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/15[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/15" 8L, 176C appended9L, 198C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/16[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/16"' -S /tmp/vziwm

4Z/15[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/16" 1L, 6C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/17[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/17" 10L, 215C appended11L, 237C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/18[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/18"' -S /tmp/vziwm

4Z/17[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/18" 1L, 8C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/19[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/19" 7L, 149C appended8L, 171C8L, 170C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/20[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/20"' -S /tmp/vziwm

4Z/19[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/20" 1L, 9C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  19: OK (69275973)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/21[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/21" 9L, 135C appended10L, 157C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/22[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/22"' -S /tmp/vziwm

4Z/21[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/22" 2L, 4C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/23[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/23" 10L, 155C appended11L, 177C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/24[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/24"' -S /tmp/vziwm

4Z/23[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/24" 3L, 8C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/25[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/25" 12L, 204C appended13L, 226C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/26[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/26"' -S /tmp/vziwm

4Z/25[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/26" 4L, 18C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/27[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/27" 12L, 214C appended13L, 236C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/28[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/28"' -S /tmp/vziwm

4Z/27[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/28" 4L, 22C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/29[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/29" 12L, 211C appended13L, 233C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/30[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/30"' -S /tmp/vziwm

4Z/29[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/30" 3L, 22C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/31[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/31" 14L, 263C appended15L, 285C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/32[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/32"' -S /tmp/vziwm

4Z/31[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/32" 4L, 34C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/33[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/33" 14L, 277C appended15L, 299C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/34[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/34"' -S /tmp/vziwm

4Z/33[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/34" 4L, 40C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  20: OK (1874575085)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/35[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/35" 58L, 1022C appended59L, 1044C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/36[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/36"' -S /tmp/vziwm

4Z/35[?1l>
[?1h="/tmp/vziwm4Z/36" 9L, 56C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  21: OK (147932225)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/37[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/37" 23L, 418C appended24L, 440C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/38[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/38"' -S /tmp/vziwm

4Z/37[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/38" 1L, 2C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/39[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/39" 23L, 437C appended24L, 459C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/40[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/40"' -c 'breaka

dd func 2 Interrupt' -S /tmp/vziwm4Z/39[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/40" 1L, 3C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/41[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/41" 21L, 386C appended22L, 408C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/42[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/42"' -S /tmp/vziwm

4Z/41[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/42" 1L, 5C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  22: OK (4161)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/43[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/43" 25L, 432C appended26L, 454C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/44[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/44"' -S /tmp/vziwm

4Z/43[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/44" 3L, 8C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  23: OK (49)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/45[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/45" 16L, 392C appended17L, 414C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/46[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/46"' -S /tmp/vziwm

4Z/45[?1l>
[?1h="/tmp/vziwm4Z/46" 3L, 7C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  24: OK (41)

*** Test  25: OK (260177811)

*** Test  26: OK (1681500476)

*** Test  27: OK (1996459)

   function F()

1      try

2Xpath 1" X: 1

3try

4Xpath 2" X: 2

5return

6Xpath 4" X: 0

7finally

8Xpath 8" X: 8

9endtry

10Xpath 16" X: 0

11     finally

12Xpath 32" X: 32

13     endtry

14     Xpath 64" X: 0

   endfunction"/tmp/vziwm4Z/47"[noeol] 17L, 552C
14 substitutions on 14 lines
Pattern not found: ^\s*$
"/tmp/vziwm4Z/47" 14L, 502C written
"test49.in" 32L, 705C
   function G()
1      try
2Xpath 128" X: 128
3return
4Xpath 256" X: 0
5      finally
6Xpath 512" X: 512
7call F()
8Xpath 1024" X: 1024
9      endtry
10     Xpath 2048" X: 0
   endfunction"/tmp/vziwm4Z/48"[noeol] 13L, 406C
10 substitutions on 10 lines
Pattern not found: ^\s*$
"/tmp/vziwm4Z/48" 10L, 378C written
"test49.in" 32L, 705C
   function H()
1      try
2Xpath 4096" X: 4096
3call G()
4Xpath 8192" X: 8192
5      finally
6Xpath 16384" X: 16384
7return
8Xpath 32768" X: 0
9      endtry

10     Xpath 65536" X: 0

   endfunction"/tmp/vziwm4Z/49"[noeol] 13L, 409C
10 substitutions on 10 lines
Pattern not found: ^\s*$
"/tmp/vziwm4Z/49" 10L, 381C written
"test49.in" 32L, 705C
*** Test  28: OK (1996459)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/50[?1l>[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/50" 39L, 721C appended40L, 743C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/51[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/51"' -S /tmp/vziwm

4Z/50[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/51" 6L, 21C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/52[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/52" 23L, 509C appended24L, 531C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/53[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/53"' -S /tmp/vziwm

4Z/52[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/53" 4L, 34C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  29: OK (170428555)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/54[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/54" 60L, 1101C appended61L, 1123C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/55[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nv

iminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/55"' -

c'breakadd func 3 F' -c 'breakadd file 19 /tmp/vziwm4Z/54' -c 'breakadd file 31

/tmp/vziwm4Z/54' -S /tmp/vziwm4Z/54[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/55" 16L, 89C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  30: OK (190905173)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/56[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/56" 60L, 1122C appended61L, 1144C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/57[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/57"' -S /tmp/vziwm

4Z/56[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/57" 16L, 89C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  31: OK (190905173)

*** Test  32: OK (354833067)

*** Test  33: OK (1216907538)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/58[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/58" 63L, 1288C appended64L, 1310C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/59[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi

minfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm

4Z/59"' -c 'breakadd func 16 C' -S /tmp/vziwm4Z/58[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/59" 17L, 127C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  34: OK (2146584868)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/60[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/60" 63L, 1285C appended64L, 1307C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/61[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi

minfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm

4Z/61"' -c 'breakadd func 16 B' -S /tmp/vziwm4Z/60[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/61" 17L, 127C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  35: OK (2146584868)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/62[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/62" 66L, 1430C appended67L, 1452C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/63[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vimin

fo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/

63"' -c 'breakadd func 16 R' -S /tmp/vziwm4Z/62[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/63" 9L, 81C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  36: OK (1071644672)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/64[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/64" 73L, 1488C appended74L, 1510C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/65[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/65"' -c 'breakadd

func 16 F' -S /tmp/vziwm4Z/64[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/65" 9L, 81C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  37: OK (1071644672)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/66[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/66" 82L, 1519C appended83L, 1541C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/67[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi

minfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm

4Z/67"' -c 'breakadd func 16 E' -S /tmp/vziwm4Z/66[?1l>
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_cmds.o ex_cmds.c

shell returned 1

[?1h="/tmp/vziwm4Z/67" 8L, 63C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  38: OK (357908480)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/68[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/68" 83L, 1538C appended84L, 1560C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/69[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -

c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVi

mResult = "/tmp/vziwm4Z/69"' -c 'breakadd func 16 I' -c 'breakadd func 22 I' -S

/tmp/vziwm4Z/68[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/69" 8L, 63C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  39: OK (357908480)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/70[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/70" 82L, 1519C appended83L, 1541C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/71[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi

minfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm

4Z/71"' -c 'breakadd func 16 T' -S /tmp/vziwm4Z/70[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/71" 8L, 63C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  40: OK (357908480)

*** Test  41: OK (3076095)

*** Test  42: OK (1505155949)

*** Test  43: OK (1157763329)

*** Test  44: OK (1031761407)

*** Test  45: OK (1157763329)

*** Test  46: OK (739407)

*** Test  47: OK (371213935)

*** Test  48: OK (756255461)

*** Test  49: OK (179000669)

   function C()

1      try

2Xpath 1" X: 1

3throw "arrgh"

4Xpath 2" X: 0

5      catch /arrgh/

6Xpath 4" X: 4

7      endtry

8      Xpath 8" X: 8

   endfunction"/tmp/vziwm4Z/72"[noeol] 11L, 334C
8 substitutions on 8 lines
Pattern not found: ^\s*$
"/tmp/vziwm4Z/72" 8L, 295C written
"test49.in" 32L, 705C
   function T1()
1      XloopNEXT
2      try
3Xloop 1" X: 16 + 16*16
4throw "arrgh"
5Xloop 2" X: 0
6      finally

7Xloop 4" X: 64 + 64*16

8      endtry

9      Xloop 8" X: 0

   endfunction"/tmp/vziwm4Z/73"[noeol] 12L, 364C
9 substitutions on 9 lines
Pattern not found: ^\s*$
"/tmp/vziwm4Z/73" 9L, 323C written
"test49.in" 32L, 705C
   function T2()
1      try
2Xpath 4096" X: 4096
3call T1()
4Xpath 8192" X: 0
5      finally
6Xpath 16384" X: 16384
7      endtry

8      Xpath 32768" X: 0

   endfunction"/tmp/vziwm4Z/74"[noeol] 11L, 332C
8 substitutions on 8 lines
Pattern not found: ^\s*$
"/tmp/vziwm4Z/74" 8L, 305C written
"test49.in" 32L, 705C
*** Test  50: OK (363550045)
*** Test  51: OK (40744667)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/76[?1l>[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/76" 2L, 41C appended3L, 63C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ops.o ops.c

<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/77[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/77"' -S /tmp/vziwm4Z/76[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/77" 1L, 2C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/75" 8L, 182C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/78[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/78" 7L, 115C appended8L, 137C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/79[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/79"' -S /tmp/vziwm4Z/78[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/79" 1L, 2C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/75" 8L, 181C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/80[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/80" 12L, 180C appended13L, 202C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/81[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/81"' -S /tmp/vziwm4Z/80[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/81" 2L, 8C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/75" 10L, 209C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/82[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/82" 8L, 139C appended9L, 161C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/83[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/83"' -S /tmp/vziwm4Z/82[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/83" 2L, 11C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/75" 10L, 217C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/84[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/84" 5L, 87C appended6L, 109C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/85[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir!

>/tmp/vziwm4Z/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin =

1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/85"' -c 'breakadd file 4 /tmp/vziwm4Z

/84' -S /tmp/vziwm4Z/84[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/85" 1L, 7C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/75" [noeol] 9L, 202C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/86[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/86" 7L, 189C appended8L, 211C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/87[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/87"' -S /tmp/vziwm4Z/86[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/87" 1L, 8C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/75" 9L, 252C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/88[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/88" 7L, 199C appended8L, 221C8L, 220C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/89[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/89"' -S /tmp/vziwm4Z/88[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/89" 1L, 10C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/75" 9L, 214C
"test49.in" 32L, 705C

*** Test  52: OK (1247112011)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/91[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/91" 1L, 10C appended2L, 32C2L, 31C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/92[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/92"' -S /tmp/vziwm4Z/91[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/92" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/90" 6L, 154C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/93[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/93" 3L, 39C appended4L, 61C

3 substitutions on 3 lines
"/tmp/vziwm4Z/93" 4L, 58C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/94[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/94"' -S /tmp/vziwm4Z/93[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/94" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/90" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/95[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/95" 4L, 45C appended5L, 67C

4 substitutions on 4 lines
"/tmp/vziwm4Z/95" 5L, 63C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/96[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/96"' -S /tmp/vziwm4Z/95[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/96" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/90" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/97[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/97" 3L, 33C appended4L, 55C

3 substitutions on 3 lines
"/tmp/vziwm4Z/97" 4L, 52C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/98[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/98"' -S /tmp/vziwm4Z/97[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/98" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/90" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/99[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/99" 5L, 65C appended6L, 87C

5 substitutions on 5 lines
"/tmp/vziwm4Z/99" 6L, 82C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/100[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/100"' -S /tmp/vziwm4Z/99[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/100" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/90" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/101[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/101" 1L, 9C appended2L, 31C2L, 30C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/102[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/102"' -S /tmp/vziwm4Z/101[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/102" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/90" 6L, 153C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/103[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/103" 3L, 38C appended4L, 60C

3 substitutions on 3 lines
"/tmp/vziwm4Z/103"4L, 57C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/104[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/104"' -S /tmp/vziwm4Z/103[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/104" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/105[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/105" 4L, 44C appended5L, 66C

4 substitutions on 4 lines
"/tmp/vziwm4Z/105"5L, 62C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/106[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/106"' -S /tmp/vziwm4Z/105[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/106" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/107[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/107" 3L, 32C appended4L, 54C

3 substitutions on 3 lines
"/tmp/vziwm4Z/107"4L, 51C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/108[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/108"' -S /tmp/vziwm4Z/107[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/108" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/109[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/109" 5L, 64C appended6L, 86C

5 substitutions on 5 lines
"/tmp/vziwm4Z/109"6L, 81C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/110[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/110"' -S /tmp/vziwm4Z/109[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/110" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/111[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/111" 1L, 11C appended2L, 33C2L, 32C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/112[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/112"' -S /tmp/vziwm4Z/111[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/112" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/113[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/113" 3L, 40C appended4L, 62C

3 substitutions on 3 lines
"/tmp/vziwm4Z/113"4L, 59C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/114[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/114"' -S /tmp/vziwm4Z/113[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/114" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/90" 6L, 161C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/115[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/115" 4L, 46C appended5L, 68C

4 substitutions on 4 lines
"/tmp/vziwm4Z/115"5L, 64C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/116[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/116"' -S /tmp/vziwm4Z/115[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/116" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/90" 6L, 161C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/117[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/117" 3L, 34C appended4L, 56C

3 substitutions on 3 lines
"/tmp/vziwm4Z/117"4L, 53C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/118[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/118"' -S /tmp/vziwm4Z/117[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/118" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/90" 6L, 161C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/119[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/119" 5L, 66C appended6L, 88C

5 substitutions on 5 lines
"/tmp/vziwm4Z/119"6L, 83C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/120[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/120"' -S /tmp/vziwm4Z/119[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/120" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/90" 6L, 161C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/121[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/121" 4L, 37C appended5L, 59C

4 substitutions on 4 lines
"/tmp/vziwm4Z/121"5L, 55C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/122[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/122"' -S /tmp/vziwm4Z/121[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/122" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/90" 6L, 150C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/123[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/123" 4L, 41C appended5L, 63C

4 substitutions on 4 lines
"/tmp/vziwm4Z/123"5L, 59C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/124[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vziwm4Z/124"' -S /tmp/vziwm4Z/123[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/124" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/90" 6L, 159C
"test49.in" 32L, 705C

*** Test  53: OK (131071)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/126[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/126" 1L, 13C appended2L, 35C2L, 34C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/127[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/127"' -S /tmp/vziwm4Z/126[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/127" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/125" 6L, 164C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/128[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/128" 3L, 36C appended4L, 58C

3 substitutions on 3 lines
"/tmp/vziwm4Z/128"4L, 55C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/129[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/129"' -S /tmp/vziwm4Z/128[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/129" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/125" 6L, 168C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/130[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/130" 3L, 38C appended4L, 60C

3 substitutions on 3 lines
"/tmp/vziwm4Z/130"4L, 57C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/131[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/131"' -S /tmp/vziwm4Z/130[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/131" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/125" 6L, 154C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/132[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/132" 4L, 48C appended5L, 70C

4 substitutions on 4 lines
"/tmp/vziwm4Z/132"5L, 66C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/133[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/133"' -S /tmp/vziwm4Z/132[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/133" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/125" 6L, 168C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/134[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/134" 4L, 53C appended5L, 75C

4 substitutions on 4 lines
"/tmp/vziwm4Z/134"5L, 71C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/135[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/135"' -S /tmp/vziwm4Z/134[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/135" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/125" 6L, 155C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/136[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/136" 5L, 62C appended6L, 84C

5 substitutions on 5 lines
"/tmp/vziwm4Z/136"6L, 79C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/137[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/137"' -S /tmp/vziwm4Z/136[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/137" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/125" 6L, 155C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/138[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/138" 5L, 64C appended6L, 86C

5 substitutions on 5 lines
"/tmp/vziwm4Z/138"6L, 81C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/139[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/139"' -S /tmp/vziwm4Z/138[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/139" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/125" 6L, 154C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/140[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/140" 3L, 36C appended4L, 58C

3 substitutions on 3 lines
"/tmp/vziwm4Z/140"4L, 55C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/141[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/141"' -S /tmp/vziwm4Z/140[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/141" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/125" 6L, 168C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/142[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/142" 5L, 67C appended6L, 89C

5 substitutions on 5 lines
"/tmp/vziwm4Z/142"6L, 84C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/143[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/143"' -S /tmp/vziwm4Z/142[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/143" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/125" 6L, 167C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/144[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/144" 5L, 68C appended6L, 90C

5 substitutions on 5 lines
"/tmp/vziwm4Z/144"6L, 85C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/145[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/145"' -S /tmp/vziwm4Z/144[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/145" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/os_unix.o os_unix.c

<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/125" 6L, 168C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/146[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/146" 7L, 95C appended8L, 117C

7 substitutions on 7 lines
"/tmp/vziwm4Z/146"8L, 110C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/147[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/147"' -S /tmp/vziwm4Z/146[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/147" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/125" 6L, 167C
"test49.in" 32L, 705C

*** Test  54: OK (2047)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/149[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/149" 1L, 13C appended2L, 35C2L, 34C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/150[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/150"' -S /tmp/vziwm4Z/149[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/150" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/148" 6L, 172C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/151[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/151" 3L, 36C appended4L, 58C

3 substitutions on 3 lines
"/tmp/vziwm4Z/151"4L, 55C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/152[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/152"' -S /tmp/vziwm4Z/151[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/152" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/148" 6L, 176C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/153[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/153" 4L, 48C appended5L, 70C

4 substitutions on 4 lines
"/tmp/vziwm4Z/153"5L, 66C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/154[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/154"' -S /tmp/vziwm4Z/153[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/154" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/148" 6L, 176C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/155[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/155" 3L, 36C appended4L, 58C

3 substitutions on 3 lines
"/tmp/vziwm4Z/155"4L, 55C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/156[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/156"' -S /tmp/vziwm4Z/155[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/156" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/148" 6L, 176C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/157[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/157" 5L, 68C appended6L, 90C

5 substitutions on 5 lines
"/tmp/vziwm4Z/157"6L, 85C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/158[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/158"' -S /tmp/vziwm4Z/157[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/158" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/148" 6L, 176C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/159[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/159" 1L, 10C appended2L, 32C2L, 31C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/160[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/160"' -S /tmp/vziwm4Z/159[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/160" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/148" 6L, 166C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/161[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/161" 3L, 33C appended4L, 55C

3 substitutions on 3 lines
"/tmp/vziwm4Z/161"4L, 52C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/162[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/162"' -S /tmp/vziwm4Z/161[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/162" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/148" 6L, 170C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/163[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/163" 4L, 45C appended5L, 67C

4 substitutions on 4 lines
"/tmp/vziwm4Z/163"5L, 63C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/164[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/164"' -S /tmp/vziwm4Z/163[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/164" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/148" 6L, 170C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/165[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/165" 3L, 33C appended4L, 55C

3 substitutions on 3 lines
"/tmp/vziwm4Z/165"4L, 52C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/166[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/166"' -S /tmp/vziwm4Z/165[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/166" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/148" 6L, 170C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/167[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/167" 5L, 65C appended6L, 87C

5 substitutions on 5 lines
"/tmp/vziwm4Z/167"6L, 82C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/168[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/168"' -S /tmp/vziwm4Z/167[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/168" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/148" 6L, 170C
"test49.in" 32L, 705C

*** Test  55: OK (1023)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/170[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/170" 1L, 11C appended2L, 33C2L, 32C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/171[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/171"' -S /tmp/vziwm4Z/170[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/171" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/169" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/172[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/172" 3L, 34C appended4L, 56C

3 substitutions on 3 lines
"/tmp/vziwm4Z/172"4L, 53C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/173[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/173"' -S /tmp/vziwm4Z/172[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/173" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/169" 6L, 162C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/174[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/174" 3L, 40C appended4L, 62C

3 substitutions on 3 lines
"/tmp/vziwm4Z/174"4L, 59C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/175[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/175"' -S /tmp/vziwm4Z/174[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/175" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/169" 6L, 162C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/176[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/176" 3L, 32C appended4L, 54C

3 substitutions on 3 lines
"/tmp/vziwm4Z/176"4L, 51C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/177[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/177"' -S /tmp/vziwm4Z/176[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/177" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/169" 6L, 152C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/178[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/178" 3L, 35C appended4L, 57C

3 substitutions on 3 lines
"/tmp/vziwm4Z/178"4L, 54C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/179[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/179"' -S /tmp/vziwm4Z/178[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/179" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/169" 6L, 155C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/180[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/180" 4L, 44C appended5L, 66C

4 substitutions on 4 lines
"/tmp/vziwm4Z/180"5L, 62C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/181[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/181"' -S /tmp/vziwm4Z/180[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/181" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/169" 6L, 152C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/182[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/182" 4L, 47C appended5L, 69C

4 substitutions on 4 lines
"/tmp/vziwm4Z/182"5L, 65C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/183[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/183"' -S /tmp/vziwm4Z/182[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/183" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/169" 6L, 155C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/184[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/184" 5L, 64C appended6L, 86C

5 substitutions on 5 lines
"/tmp/vziwm4Z/184"6L, 81C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/185[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/185"' -S /tmp/vziwm4Z/184[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/185" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/169" 6L, 152C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/186[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/186" 5L, 67C appended6L, 89C

5 substitutions on 5 lines
"/tmp/vziwm4Z/186"6L, 84C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/187[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vziwm4Z/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vziwm4Z/187"' -S /tmp/vziwm4Z/186[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/187" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vziwm4Z/169" 6L, 155C
"test49.in" 32L, 705C

*** Test  56: OK (511)

   function FuncException()

1      let g:exception = v:exception

   endfunction"/tmp/vziwm4Z/188" [noeol] 4L, 80C
Pattern not found: ^\s*$
"/tmp/vziwm4Z/188"1L, 36C written
"test49.in" 32L, 705C
   function FuncThrowpoint()

1      let g:throwpoint = v:throwpoint

   endfunction"/tmp/vziwm4Z/189" [noeol] 4L, 83C
Pattern not found: ^\s*$
"/tmp/vziwm4Z/189"1L, 38C written
"test49.in" 32L, 705C
   function T(arg, line)

1      if a:line == 2

2throw a:arg" in line 2

3      elseif a:line == 4

4throw a:arg" in line 4

5      elseif a:line == 6

6throw a:arg" in line 6

7      elseif a:line == 8

8throw a:arg" in line 8

9      endif

   endfunction"/tmp/vziwm4Z/190"[noeol] 12L, 341C
9 substitutions on 9 lines
8 substitutions on 8 lines
Pattern not found: ^\s*$
"/tmp/vziwm4Z/190"9L, 292C written
"test49.in" 32L, 705C
   function G(arg, line)
1      call T(a:arg, a:line)
   endfunction"/tmp/vziwm4Z/191"[noeol] 4L, 69C
Pattern not found: ^\s*$
"/tmp/vziwm4Z/191"1L, 30C written
"test49.in" 32L, 705C
   function F(arg, line)
1      call G(a:arg, a:line)
   endfunction"/tmp/vziwm4Z/192"[noeol] 4L, 69C
Pattern not found: ^\s*$
"/tmp/vziwm4Z/192"1L, 30C written
"test49.in" 32L, 705C
*** Test  57: OK (2147450880)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/193[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/193" 87L, 1700C appended88L, 1722C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/194[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/194"' -c 'break

add func 4 T' -S /tmp/vziwm4Z/193[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/194" 8L, 36C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  58: OK (624945)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/195[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/195" 293L, 5789C appended294L, 5811C

3 substitutions on 3 lines
"/tmp/vziwm4Z/195"294L, 5808C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/196[?1l>
[?1h=:!echo 'q^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo

'-c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/196"' -c 'br

eakadd file 115 /tmp/vziwm4Z/195' -c 'breakadd file 225 /tmp/vziwm4Z/195' -S /tm

p/vziwm4Z/195[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/196" 28L, 162C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  59: OK (2038431743)
"/n/o/n/w/r/i/t/a/b/l/e/_/f/i/l/e"
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/197[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/197" 33L, 765C appended34L, 787C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/198[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/198"' -c 'break

add file 7 /tmp/vziwm4Z/197' -S /tmp/vziwm4Z/197[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/198" 3L, 27C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  60: OK (311511339)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/199[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/199" 115L, 2272C appended116L, 2294C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/200[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vimin

fo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/

200"' -c 'breakadd file 8 /tmp/vziwm4Z/199' -c 'breakadd file 36 /tmp/vziwm4Z/19

9' -c 'breakadd file 40 /tmp/vziwm4Z/199' -c 'breakadd file 69 /tmp/vziwm4Z/199'

-c 'breakadd file 95 /tmp/vziwm4Z/199' -c 'breakadd file 97 /tmp/vziwm4Z/199' -

S/tmp/vziwm4Z/199[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/200" 14L, 81C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  61: OK (374889517)

   function F()

1      while 1

2      " Missing :endwhile

   endfunction"/tmp/vziwm4Z/201"[noeol] 5L, 73C
Pattern not found: ^\s*$
"/tmp/vziwm4Z/201"2L, 40C written
"test49.in" 32L, 705C
*** Test  62: OK (286331153)
"/i/m/p/o/s/s/i/b/l/e" line 5500:

"/i/m/p/o/s/s/i/b/l/e" E212: Can't open file for writing

*** Test  63: OK (236978127)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/202[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/202" 149L, 2828C appended150L, 2850C

6 substitutions on 6 lines
"/tmp/vziwm4Z/202"150L, 2844C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/203[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/203"' -c 'break

add file 63 /tmp/vziwm4Z/202' -S /tmp/vziwm4Z/202[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/203" 16L, 97C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  64: OK (1499645335)

*** Test  65: OK (70187)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/204[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/204" 78L, 1520C appended79L, 1542C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/205[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/205"' -c 'break

add func 8 F' -S /tmp/vziwm4Z/204[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/205" 6L, 22C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  66: OK (5464)

*** Test  67: OK (212514423)

*** Test  68: OK (212514423)

*** Test  69: OK (8995471)

*** Test  70: OK (69544277)

*** Test  71: OK (34886997)

*** Test  72: OK (1789569365)

   function F0()

   endfunction

   function F1()

   endfunction

*** Test  73: OK (9032615)
"/tmp/vziwm4Z/206" [New File]
"test49.in" 32L, 705C
"/tmp/vziwm4Z/207" [New File]
"test49.in" 32L, 705C

*** Test  74: OK (224907669)

*** Test  75: OK (2000403408)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/208[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/208" 253L, 6369C appended254L, 6391C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/209[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|

set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp

/vziwm4Z/209"' -c 'breakadd func 2 INT' -S /tmp/vziwm4Z/208[?1l>
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_cmds2.o ex_cmds2.c

shell returned 1

[?1h="/tmp/vziwm4Z/209" 28L, 167C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  76: OK (1610087935)

Error detected while processing function ERR:

line    2:

E492: Not an editor command:     asdf

E492: Not an editor command:     asdf

E492: Not an editor command:     asdf

*** Test  77: OK (1388671)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/210[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/210" 161L, 4543C appended162L, 4565C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/211[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/211"' -S /tmp/vziw

m4Z/210[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/211" 1L, 10C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  78: OK (134217728)

Error detected while processing function NEXT:

line    1:

E121: Undefined variable: novar

E15: Invalid expression: novar | Xloop 1

E121: Undefined variable: novar

E488: Trailing characters

E108: No such variable: "novar"

E488: Trailing characters

E121: Undefined variable: novar

E15: Invalid expression: novar

E475: Invalid argument: {novar} | Xloop 1

E121: Undefined variable: novar

E15: Invalid expression:  novar

E475: Invalid argument: { novar} | Xloop 1

*** Test  79: OK (70288929)

Error detected while processing /<<PKGBUILDDIR>>/src/vim-basic/te

stdir/test49.vim:

line 7985:

E584: :elseif after :else: elseif 1 ||| 2

line 7995:

E584: :elseif after :else: elseif 1 ||| 2

line 8003:

E582: :elseif without :if: elseif 1 ||| 2

line 8011:

E582: :elseif without :if:     elseif 1 ||| 2

*** Test  80: OK (17895765)gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -I/usr/include/lua5.2 -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv  -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/arm-linux-gnueabihf/perl/5.24/CORE   -I/usr/include/python3.5m -DPYTHON3_HOME='L"/usr"' -pthread -fPIE -I/usr/include/ruby-2.3.0 -I/usr/include/arm-linux-gnueabihf/ruby-2.3.0 -DRUBY_VERSION=23 -I/usr/include/tcl8.6  -D_REENTRANT=1  -D_THREAD_SAFE=1  -D_LARGEFILE64_SOURCE=1  -o objects/option.o option.c

"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/212[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/212" 15L, 272C appended16L, 294C16L, 293C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/213[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/213"' -S /tmp/vziw

m4Z/212[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/213" 2L, 4C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/214[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/214" 12L, 227C appended13L, 249C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/215[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/215"' -c 'break

add file 8 /tmp/vziwm4Z/214' -S /tmp/vziwm4Z/214[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/215" 2L, 8C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  81: OK (387)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/216[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/216" 20L, 417C appended21L, 439C21L, 438C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/217[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/217"' -S /tmp/vziw

m4Z/216[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/217" 1L, 2C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/218[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/218" 24L, 480C appended25L, 502C25L, 501C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/219[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/219"' -S /tmp/vziw

m4Z/218[?1l>
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/pathdef.o auto/pathdef.c

shell returned 1

[?1h="/tmp/vziwm4Z/219" 1L, 4C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/220[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/220" 17L, 390C appended18L, 412C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/221[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/221"' -c 'break

add file 7 /tmp/vziwm4Z/220' -S /tmp/vziwm4Z/220[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/221" 1L, 6C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/222[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/222" 21L, 444C appended22L, 466C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/223[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/223"' -c 'break

add func 6 I' -S /tmp/vziwm4Z/222[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/223" 1L, 8C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  82: OK (8454401)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/224[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/224" 17L, 307C appended18L, 329C18L, 328C written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/225[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/225"' -S /tmp/vziw

m4Z/224[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/225" 3L, 7C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/226[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/226" 14L, 266C appended15L, 288C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/227[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/227"' -c 'break

add file 8 /tmp/vziwm4Z/226' -S /tmp/vziwm4Z/226[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/227" 3L, 13C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  83: OK (2835)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/228[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/228" 154L, 3580C appended155L, 3602C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/229[?1l>
[?1h=:!echo 'q^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo

'-c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/229"' -c 'br

eakadd func 1 INT' -S /tmp/vziwm4Z/228[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/229" 18L, 118C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  84: OK (934782101)

TMP
"/tmp/vziwm4Z/230" [noeol] 2L, 6C/  
"test49.in" 32L, 705C
"/n/o/n/e/x/i/s/t/e/n/t"

"/tmp/vziwm4Z/232" 1L, 1C
"test49.in" 32L, 705C

:!echo XYZ >/tmp/vziwm4Z/233[?1l>
[?1h="/tmp/vziwm4Z/234" [New File]
"test49.in" 32L, 705C

*** Test  85: OK (198689)

line 8769:

E123: Undefined function: F

Make_all.mak
"Make_all.mak" line 1 of 202 --0%-- col 1

line 8772:

E926: Current location list was changed

line 8773:

E193: :endfunction not inside a function

Error detected while processing function ExecAsScript[2]..MakeScript:

line    3:

E123: Undefined function: Fgcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/gui_gtk_x11.o gui_gtk_x11.c

"/tmp/vziwm4Z/235" [noeol] 4L, 109C

search hit BOTTOM, continuing at TOP
line   10:
E486: Pattern not found: .*F(.*)

search hit BOTTOM, continuing at TOP
line   11:
E486: Pattern not found: ^\d*\s*endfunction\>

4 substitutions on 4 lines
"/tmp/vziwm4Z/235"3L, 109C written
"Make_all.mak" 202L, 3684C

Error detected while processing /tmp/vziwm4Z/235:

line    1:

E492: Not an editor command: Error detected while processing function ExecAsScr

ipt[2]..MakeScript:

line    2:

E492: Not an editor command: line    3:

line    3:

E492: Not an editor command: E123: Undefined function: F

Error detected while processing /<<PKGBUILDDIR>>/src/vim-basic/te

stdir/test49.vim:

line 8779:

E130: Unknown function: F

*** Test  86: OK (0)

5
*** Test  87: OK (0)
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vziwm4Z/0' >/tmp/vziwm4Z/236[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vziwm4Z/236" 151L, 3929C appended152L, 3951C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vziwm4Z/237[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nvimi

nfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vziwm4Z/237"' -c

'breakadd func 5 ThrowOnInterrupt' -S /tmp/vziwm4Z/236[?1l>

shell returned 1

[?1h="/tmp/vziwm4Z/237" 16L, 281C
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/test49.vim"
<FPoUg/vim-8.0.0022/src/vim-basic/testdir/test49.vim" [readonly] 9009L, 206880C
"Make_all.mak" 202L, 3684C

*** Test  88: OK (50443995)

Press ENTER or type command to continue:" Go back to this file and append the results from register r.
#
# Common Makefile, defines the list of tests to run.
#

NO_PLUGIN = -U NONE --noplugin --not-a-term

# The first script creates small.vim.
SCRIPTS_FIRST = \test1.out

# Tests that run on all systems.
SCRIPTS_ALL = \test3.out \test4.out \test5.out \test7.out \test8.out \test9.out \test14.out \test15.out \test19.out \test20.out \test22.out \:buf test49.in
"test49.in" 32L, 705C:so test49.vim
:" Go back to this file and append the results from register r.
:buf test49.in
G"rp:/^Results/,$w! test.out
:":" make valgrind happy
:redir => funclis:silent func:redir END:for line in split(funclist, "\n")
:  let name = matchstr(line, 'function \zs[A-Z]\w*\ze(')
:  if name != ''
:    exe "delfunc " . name
:  endif:endfor:for v in keys(g:):  silent! exe "unlet " . v
:endfor:unlet v:qa!ENDTESTResults of test49.vim:

83 more lines
*** Test  16: OK (8722)83 more lines:/^Results/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New] 84L, 2484C written:"
:" make valgrind happy
:redir => funclist
:silent func
:redir END
:for line in split(funclist, "\n")

:  :  let name = matchstr(line, 'function \zs[A-Z]\w*\ze(')

:  :  if name != ''

:    :    exe "delfunc " . name

:    :  endif

:  :endfor
:" Go back to this file and append the results from register r.
:buf test49.in
G"rp:/^Results/,$w! test.out
:"
:" make valgrind happy
:for v in keys(g:)

:  :  silent! exe "unlet " . v

:  :endfor
:" Go back to this file and append the results from register r.
:buf test49.in
:unlet v
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test49 = test61; then \
#	  if diff test.out test49.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test49.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test49.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test97.failed test.ok test.out X* viminfo
cp test97.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test97.in
[?1h="test97.in" 23 lines, 483 charactersTest whether glob()/globpath() return correct results with certain escaped
characters.

STARTTEST
:so small.vim
:" make sure glob() doesn't use the shell
:set shell=doesnotexist
:" consistent sorting of file names
:set nofileignorecase
:e test.out
:$put =glob('Xxx\{')
:$put =glob('Xxx\$')
:w! Xxx{
:w! Xxx\$
:$put =glob('Xxx\{')
:$put =glob('Xxx\$')
:"
:$put =string(globpath('sautest/autoload', '*.vim'))
:$put =string(globpath('sautest/autoload', '*.vim', 0, 1))
:w
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test whether glob()/globpath() return correct results with certain escaped/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 376 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:" make sure glob() doesn't use the shell
:set shell=doesnotexist
:" consistent sorting of file names
:set nofileignorecase
:e test.out
"test.out" [New File]~
~~~~~~~~~~~~~~~~~~~~
~:$put =glob('Xxx\{')
:$put =glob('Xxx\$')
:w! Xxx{

Cannot execute shell doesnotexist


E79: Cannot expand wildcards

"Xxx{" [New File] 3 lines, 3 characters written

Press ENTER or type command to continue:w! Xxx\$
"Xxx$" [New File] 3 lines, 3 characters written

Press ENTER or type command to continue:$put =glob('Xxx\{')
Xxx{
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:$put =glob('Xxx\$')
Xxx$
:"
:$put =string(globpath('sautest/autoload', '*.vim'))
'sautest/autoload/Test104.vim
sautest/autoload/footest.vim'
:$put =string(globpath('sautest/autoload', '*.vim', 0, 1))
['sautest/autoload/Test104.vim', 'sautest/autoload/footest.vim']
:w
"test.out" [New File] 8 lines, 138 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test97 = test61; then \
#	  if diff test.out test97.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test97.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test97.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_listlbr_utf8.failed test.ok test.out X* viminfo
cp test_listlbr_utf8.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr_utf8.in
[?1h="test_listlbr_utf8.in" 134 lines, 4027 charactersTest for linebreak and list option in utf-8 mode

STARTTEST
:so small.vim
:if !exists("+linebreak") || !has("conceal") || !has("signs") | e! test.ok | w!  test.out | qa! | endif
:so mbyte.vim
:set encoding=utf8
:if &enc !=? 'utf-8'|:e! test.ok|:w! test.out|qa!|endif
:10new|:vsp|:vert resize 20
:put =\"\tabcdef hijklmn\tpqrstuvwxyz\u00a01060ABCDEFGHIJKLMNOP \"
:norm! zt
:set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
:fu! ScreenChar(width, lines)
:let c=''
:for j in range(1,a:lines)
:for i in range(1,a:width)
:let c.=nr2char(screenchar(j, i))
:endfor
:let c.="\n"
:endfor
:return c
:endfu:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for linebreak and list option in utf-8 mode/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 129 lines, 3948 characters written:set ff& cpo+=A
/ENDTEST:set list nolinebreak cc=3
:sign define foo text=^Vuff0b
:sign place 1 name=foo line=50 buffer=2
:norm! 2kztj
:let line1=line('.')
0GGlGGlGGlGGl
:let line2=line('.')
:let attr2=attr
:let attr=[]
0GGlGGlGGlGGl
:redraw!
:let line=ScreenChar(winwidth(0),3)
:call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
:if !exists("+linebreak") || !has("conceal") || !has("signs") | e! test.ok | w!

test.out | qa! | endif
:set list nolinebreak cc=3
:so mbyte.vim
:set encoding=utf8
:set list nolinebreak cc=3
:sign define foo text=^Vuff0b
:sign place 1 name=foo line=50 buffer=2
:norm! 2kztj
:let line1=line('.')
0GGlGGlGGlGGl
:let line2=line('.')
:let attr2=attr
:let attr=[]
0GGlGGlGGlGGl
:redraw!
:let line=ScreenChar(winwidth(0),3)
:call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text

:if &enc !=? 'utf-8'|:e! test.ok|:w! test.out|qa!|endif
:10new|:vsp|:vert resize 20
                    ||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            ~~~~~~~~~[No Name]                                                  call DoRecordScreen()" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")else   call append('$', "Screen attributes are the same!")
:endif%w! test.out
:qaENDTEST
dummy text
test_listlbr_utf8.in                                                            :put =\"\tabcdef hijklmn\tpqrstuvwxyz\u00a01060ABCDEFGHIJKLMNOP \"
        abcdef hijkl
mn  pqrstuvwxyz 1060
ABCDEFGHIJKLMNOP    [+] abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP[+]:norm! zt
        abcdef hijkl
mn  pqrstuvwxyz 1060
ABCDEFGHIJKLMNOP    
~                   
~                   
~                   
~                   
~                   
~                   
                    
~                   :set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
abcdef          
+hijklmn            
+pqrstuvwxyz 1060ABC
+DEFGHIJKLMNOP      abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP :fu! ScreenChar(width, lines)

:  :^Ilet c=''

:  :^Ifor j in range(1,a:lines)

:    :^I    for i in range(1,a:width)

:      :^I    ^Ilet c.=nr2char(screenchar(j, i))

:      :^I    endfor

:    :           let c.="\n"

:    :^Iendfor

:  :^Ireturn c

:  :endfu
abcdef|
+hijklmn|
+pqrstuvwxyz 1060ABC|
+DEFGHIJKLMNOP      ||||||~                   
~                   
~                   
~                   
~                   abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP~~~~~~~:fu! DoRecordScreen()

:  :^Iwincmd l

:  :^I$put =printf(\"\n%s\", g:test)

:  :^I$put =g:line

:  :^Iwincmd p

:  :endfu
abcdef|
+hijklmn|
+pqrstuvwxyz 1060ABC|
+DEFGHIJKLMNOP      ||
~                   abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP~~~:"
:let g:test ="Test 1: set linebreak + set list + fancy listchars"
:exe "set linebreak list listchars=nbsp:\u2423,tab:\u2595\u2014,trail:\u02d1,eo

l:\ub6"
▕———abcdef|▕———␣ˑ¶:redraw!
▕———abcdef|
+hijklmn▕———|
+pqrstuvwxyz␣1060ABC|
+DEFGHIJKLMNOPˑ¶|||||||~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP~~~~~~~~[No Name] [+]                                              :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),4)
:call DoRecordScreen()
4 more lines¶                   
Test 1: set         
+linebreak + set    
+list + fancy       
+listchars¶         
▕———abcdefˑˑˑˑˑˑˑˑˑˑ
@                   Test 1: set linebreak + set list + fancy listchars▕———abcdef+hijklmn▕———+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶:"
:let g:test ="Test 2: set nolinebreak list"
:set list nolinebreak
hijklmn▕—pqrstuvwxyz␣1060ABCDEFGHIJKLMNOPˑ¶    
¶               
Test 1: set linebrea
+k + set list + fancy listchars¶   
▕———abcdefˑˑˑˑˑˑˑˑˑˑ
+¶         
+hijklmn▕———ˑˑˑˑˑˑˑˑ
@                   :redraw!
▕———abcdef hijklmn▕—|
+pqrstuvwxyz␣1060ABC|
+DEFGHIJKLMNOPˑ¶|
¶|
Test 1: set linebrea|
+k + set list + fanc|
+y listchars¶|
▕———abcdefˑˑˑˑˑˑˑˑˑˑ|
+¶|
+hijklmn▕———ˑˑˑˑˑˑˑˑ|
@                   
[No Name] [+]        abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOPTest 1: set linebreak + set list + fancy listchars▕———abcdef+hijklmn▕———+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶~~[No Name] [+]                                              :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            +hijklmn▕———ˑˑˑˑˑˑˑˑ
@                   :let line=ScreenChar(winwidth(0),4)
:call DoRecordScreen()
4 more lines▕———abcdef                                                 +hijklmn▕———                                               +pqrstuvwxyz␣1060ABC                                       +DEFGHIJKLMNOPˑ¶                                           ~                                                          ~                                                                                                                                                                                                                                                                                                      Test 2: set nolinebreak list▕———abcdef hijklmn▕—+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶4 more lines:"
:let g:test ="Test 3: set linebreak nolist"
:$put =\"\t*mask = nil;\"
▕———▕—¶                  
+pqrstuvwxyz␣1060ABC
+¶+DEFGHIJKLMNOPˑ¶ˑˑˑˑ
+¶                 
¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ
+¶                  
▕———*mask = nil;¶~:$
:norm! zt
▕———*mask = nil;¶   
~                   
                    
                    
                    
                    
                    
                    
                    
                    ~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   :set nolist linebreak
     
    :redraw!
*mask = nil;    ||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        ▕———abcdef+hijklmn▕———+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶Test 2: set nolinebreak list▕———abcdef hijklmn▕—+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶[No Name] [+]                                              :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),4)
:call DoRecordScreen()
4 more lines                    
Test 3: set         
+linebreak nolist   
    *mask = nil;    
~                   
~                   
~                   +pqrstuvwxyz␣1060ABC                                       +DEFGHIJKLMNOPˑ¶                                           ¶                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       *mask = nil;Test 3: set linebreak nolist*mask = nil;~~~4 more lines:"
:let g:test ="Test 4: set linebreak list listchars and concealing"
:let c_defines=['#define ABCDE^I^I1','#define ABCDEF^I^I1','#define ABCDEFG^I^I

1','#define ABCDEFGH^I1', '#define MSG_MODE_FILE^I^I^I1','#define MSG_MODE_CONSO

LE^I^I2','#define MSG_MODE_FILE_AND_CONSOLE^I3','#define MSG_MODE_FILE_THEN_CONS

OLE^I4']
*mask = nil;    ||
Test 3: set|+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶:call append('$', c_defines)
#define             
+ABCDE      1       :vert resize 40
                    |                    |linebreak nolist|
    *mask = nil;                        |
~                    |                    |                    |
#define ABCDE1 |ABCDEF      1 |
#define ABCDEFG     1 |                    +pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶*mask = nil;Test 3: set linebreak nolist*mask = nil;~~~[No Name] [+]:$-7
:norm! zt
#define ABCDE       1                   
#define ABCDEF      1                   
#define ABCDEFG     1                   
                                        
                                        
                                        
                                        
                                        
                                        
                                        #define ABCDEFGH    1
#define MSG_MODE_FILE1
#define MSG_MODE_CONSOLE2
#define MSG_MODE_FILE_AND_CONSOLE   3
#define MSG_MODE_FILE_THEN_CONSOLE  4
~                                       
~                                       :set list linebreak listchars=tab:>- cole=1
>-->--->->--->>--->--->-->--->--->--->--->-->-:syn match Conceal conceal cchar=>'AB\|MSG_MODE'
>CDEF>->CDEFG>->CDEFGH>->_FILE>------->_CONSOLE>------->_FILE_AND_CONSOLE>------->_FILE_THEN_CONSOLE>-------:redraw!
#define ABCDE>-->---1|
#define >CDEF>-->---1|
#define >CDEFG>->---1|
#define >CDEFGH>----1|
#define >_FILE>--------->--->---1|
#define >_CONSOLE>---------->---2|
#define >_FILE_AND_CONSOLE>---------3   |
#define >_FILE_THEN_CONSOLE>--------4   |||~                                       
~                                       
[No Name] [+]                            +pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶*mask = nil;Test 3: set linebreak nolist*mask = nil;~~~[No Name] [+]                          :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),7)
:call DoRecordScreen()
>CDE>-7 more lines                                        
Test 4: set linebreak list listchars    
@                                       #define >CDEFG>->---1+ #define >CDEFGH>----1+#define >_FILE>--------->--->---1+ #define >_CONSOLE>---------->---2+#define >_FILE_AND_CONSOLE>---------3+ABCDE>
:"
:let g:test ="Test 5: set linebreak list listchars and concealing part2"
:let c_defines=['bbeeeeee^I^I;^Isome text']
:call append('$', c_defines)
:$
@                                       
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        Test 4: set linebreak list listchars    
+and concealing
#define >CDE>-->---1
#define >CDEF>-->---1
#define >CDEFG>->---1
#define >CDEFGH>----1
#define >_FILE>--------->--->---1
#define >_CONSOLE>---------->---2
#define >_FILE_AND_CONSOLE>---------3
bbeeeeee>--->---;>--some text:norm! zt
bbeeeeee>--->---;>--some text           
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        ~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       :set nowrap ts=2 list linebreak listchars=tab:>- cole=2 concealcursor=n
>;>some text      :syn clear
:syn match meaning    /;\s*\zs.*/
:syn match hasword    /^\x\{8}/    contains=word
:syn match word       /\<\x\{8}\>/ contains=beginword,endword contained
:syn match beginword  /\<\x\x/     contained conceal
eeeeee>--:syn match endword    /\x\{6}\>/   contained
:hi meaning   guibg=blue
:hi beginword guibg=green
:hi endword   guibg=red
:redraw!
eeeeee>--->-;>some text||||||||||~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
[No Name] [+]                            #define >CDEFG>->---1+#define >CDEFGH>----1+#define >_FILE>--------->--->---1+#define >_CONSOLE>---------->---2+#define >_FILE_AND_CONSOLE>---------3+[No Name] [+]                          :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),1)
:call DoRecordScreen()
                                        
Test 5: set linebreak list listchars and
eeeeee>--->-;>some text                 #define >_CONSOLE>---------->---2      +                                      #define >_FILE_AND_CONSOLE>---------3  +                                                                                                                                                                                                                                                                                bbeeeeee    ; some textTest 5: set linebreak list listchars an+d concealing part2eeeeee>--->-;>some text+:"
:let g:test ="Test 6: Screenattributes for comment"
:$put =g:test
Test 6: Screenattributes for comment    :call append('$', ' /*^I^I and some more */')
 /*>>- and some more */                 :exe "set ft=c ts=7 linebreak list listchars=nbsp:\u2423,tab:\u2595\u2014,trail

:\u02d1,eol:\ub6"
eeeeee▕———————▕——————;▕—————some text¶|
¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ¶▕———▕—————— and some more */¶#define >_CONSOLE>---------->---2         ;      some text:syntax on
bbeeeeee▕56for
 /* and some more */#define >_CONSOLE>---------->---2       #define >_FILE_AND_CONSOLE>---------3   5:hi SpecialKey term=underline ctermfg=red guifg=red
▕—————▕——————▕—————ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ▕———▕——————:let attr=[]
:nnoremap <expr> GG ":let attr += ['".screenattr(screenrow(),screencol())."']\n

"bbeeeeee▕—————▕——————;▕—————some text¶|#define >_CONSOLE>---------->---2      :$
:norm! zt0
 /*▕———▕—————— and some more */¶        
~                                       
~                                       
~                                       
~                                       
                                        
                                        
                                        
                                        
                                        ~                                       
~                                       
~                                       
~                                       
~                                       :let attr += ['0']
:let attr += ['2']
:let attr += ['2']
:let attr += ['8']
:let attr += ['8']
:let attr += ['2']
:let attr += ['2']
:let attr += ['2']
:let attr += ['2']
:let attr += ['2']
:call append('$', ['ScreenAttributes for test6:'])
ScreenAttributes for test6:¶            :if attr[0] != attr[1] && attr[1] != attr[3] && attr[3] != attr[5]

:  :   call append('$', "Attribut 0 and 1 and 3 and 5 are different!")

:  :else

:  :   call append('$', "Not all attributes are different")

:  :endif
/*▕———▕—————— and some more */¶|
ScreenAttributes for test6:¶|
Attribut 0 and 1 and 3 and 5 are differe||
~                                       #define >_CONSOLE>---------->---2      + #define >_FILE_AND_CONSOLE>---------3  + :set cpo&vim linebreak selection=exclusive
:"
:let g:test ="Test 8: set linebreak with visual block mode and v_b_A and select

ion=exclusive and multibyte char"
/*▕———▕—————— and some more */¶|#define >_CONSOLE>---------->---2      :$put =g:test
Test 8: set linebreak with visual block long line:ˑ¶                            ¶                               
¶                           
¶                                       
¶                                      
oobar foobar foobar foobar foobarˑ¶
foobar foobar TARGET¶              Ã' at end¶:exe "norm! $3B\<C-v>eAx\<Esc>"
x' at end¶:"
:let g:test ="Test 9: a multibyte sign and colorcolumn"
:let attr=[]
:let attr2=[]
:$put =''
 /*▕———▕—————— and some more */¶ScreenAttributes for test6:¶Attribut 0 and 1 and 3 and 5 are differe
Test 8: set linebreak with visual block
long line: foobar foobar foobar foobar f
¶                                       :$put ='a b c'
a b c¶                                  :$put ='a b c'
a b c¶                                  :set list nolinebreak cc=3
*
Scr
Att
Tesn 
a b
a b:sign define foo text=^+
:sign place 1 name=foo line=50 buffer=2
   /*▕—▕—— and some more */¶  ScreenAttributes for test6:¶  Attribut 0 and 1 and 3 and 5 are diff
  Test 8: set linebreak with visual bloc
  long line: foobar foobar foobar foobar
  ¶ 
+a b c¶  a b c¶  
  ~~  #define >_CONSOLE>-->---2  +     #define >_FILE_AND_CONSOLE>--3  +     bbeeeeee  ;      some text    Test 5: set linebreak list listchars   +and concealing part2  eeeeee>--->-;>some text  +:norm! 2kztj
  ¶                                     
+a b c¶                                
  a b c¶                                
  ~                                     
  ~                                     
                                        
                                        
                                        
                                        
                                          
  
  
  
  ~                                     ~                                     ~                                     ~                                     ~                                     :let line1=line('.')
:let attr += ['0']
:let attr += ['0']
:let attr += ['1']
:let attr += ['0']
:let line2=line('.')
:let attr2=attr
:let attr=[]
:let attr += ['0']
:let attr += ['0']
:let attr += ['1']
:let attr += ['0']
:redraw!
  ¶ |
+a b c¶|
  a b c¶||||||||  
  
  
  
  
  
  ~                                     ~                                     ~                                     ~                                     ~                                     ~                                     ~                                     
[No Name] [+]                              #define >_CONSOLE>---------->---2      +     #define >_FILE_AND_CONSOLE>---------3  +     bbeeeeee;      some text    Test 5: set linebreak list listchars  +and concealing part2  eeeeee>--->-;>some text  +[No Name] [+]                          :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),3)
:call DoRecordScreen()
3 more lines¶                                     Test 9: a multibyte sign and colorcolu  ¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ+a b c¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ  a b c¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑa b cTest 9: a multibyte sign and colorcolumn  ¶                     ++a b c¶                                 a b c¶               :" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]

:  :   call append('$', "Screen attributes are different!")

:  :else

:  :   call append('$', "Screen attributes are the same!")

:  :endif
  ¶ |
+a b c¶|
  a b c¶|
  ¶ |Screen attributes are the same!¶        a b c    Test 9: a multibyte sign and colorcol  +umn:%w! test.out
"test.out" [New File] 57 lines, 1882 characters writtentest.out     test.out     :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_listlbr_utf8 = test61; then \
#	  if diff test.out test_listlbr_utf8.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_listlbr_utf8.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr_utf8.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_docmd.o ex_docmd.c
rm -rf X* test.ok viminfo
rm -rf test54.failed test.ok test.out X* viminfo
cp test54.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test54.in
[?1h="test54.in" 22 lines, 658 charactersSome tests for buffer-local autocommands

STARTTEST
:so small.vim
:e xx
:if has("vms")
: !del test.out.*
: au BufLeave <buffer> :!write sys$output "buffer-local autommand in %" > test.oout
:else
: !rm -f test.out
: au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
:endif
:e somefile" here, autocommand for xx shall write test.out
:" but autocommand shall not apply to buffer named <buffer>:bwipe xx" here, autocommand shall be auto-deleted
:e xx" nothing shall be written
:e somefile" nothing shall be written
:qa!
ENDTEST

start of test file xx
end of test file xx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Some tests for buffer-local autocommands/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 15 lines, 555 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:e xx
"xx" [New File]~~~~~~~~~~~~~~~~~~~
~~~:if has("vms")

:  : !del test.out.*

:  : au BufLeave <buffer> :!write sys$output "buffer-local autommand in %" > te

st.out

:  :else

:  : !rm -f test.out

:!rm -f test.out[?1l>
[?1h=:  : au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out

:  :endif
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:e somefile           " here, autocommand for xx shall write test.out 
:!echo buffer-local autommand in xx>> test.out

"somefile" [New File]

Press ENTER or type command to continue:                     " but autocommand shall not apply to buffer named <buffer

>~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:bwipe xx             " here, autocommand shall be auto-deleted
:e xx                 " nothing shall be written
"xx" [New File]:e somefile           " nothing shall be written
"somefile" [New File]:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test54 = test61; then \
#	  if diff test.out test54.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test54.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test54.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test17.failed test.ok test.out X* viminfo
cp test17.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test17.in
[?1h="test17.in" 135 lines, 2431 charactersTests for:
- "gf" on ${VAR},
- ":checkpath!" with various 'include' settings.

STARTTEST
:so small.vim
:if has("ebcdic")
: set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,}
:else
: set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,}
:endif
:"
:if has("unix")
:let $CDIR = "."
/CDIR
:else
:if has("amiga")
:let $TDIR = "/testdir"
:else
:let $TDIR = "."
:endif
/TDIR
:endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 27 lines, 564 characters written:set ff& cpo+=A
/ENDTEST









:" Dummy writing for making that sure gf doesn't fail even if the current
:" file is modified. It can be occurred when executing the following command
:" directly on Windows without fixing the 'fileformat':
:"  > nmake -f Make_dos.mak test17.out
:w! test.out
gf
:set ff=unix
:w! test.out
:brewind
ENDTEST

:so! Xdotest
:so small.vim
:if has("ebcdic")

:  : set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,}

:  :else

:  : set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,}

:  :endif
:"
:if has("unix")
:let $CDIR = "."
/CDIR
:"
:if has("unix")

:  :let $CDIR = "."

:  /CDIR

:  :else

:  :if has("amiga")

:    :let $TDIR = "/testdir"

:    :else

:    :let $TDIR = "."

:    :endif

:  /TDIR

:  :endif
:if has("unix")
:let $CDIR = "."
/CDIR
:else
:if has("amiga")
:let $TDIR = "/testdir"
:else
:let $TDIR = "."
:endif
/TDIR
:endif
:" Dummy writing for making that sure gf doesn't fail even if the current
:" file is modified. It can be occurred when executing the following command
:" directly on Windows without fixing the 'fileformat': > nmake -f Make_dos.mak test17.outw! test.outgf:set ff=unix
:w! test.out
:brewindENDTEST${CDIR}/test17a.in
:" Dummy writing for making that sure gf doesn't fail even if the current
:" file is modified. It can be occurred when executing the following command
:" directly on Windows without fixing the 'fileformat':
:"  > nmake -f Make_dos.mak test17.out
:w! test.out
"test.out" [New File] 135 lines, 2431 characters written
"/<<PKGBUILDDIR>>/src/vim-basic/testdir/./test17a.in" 3 lines, 88

characters

Press ENTER or type command to continueThis file is just to test "gf" in test 17.
The contents is not important.
Just testing!~~~~~~~~~~~~~~~~~~
~~:set ff=unix
:w! test.out
"test.out" 3 lines, 88 characters written:brewind
"test17.in" 135 lines, 2431 characters:" Dummy writing for making that sure gf doesn't fail even if the current
:" file is modified. It can be occurred when executing the following command
:" directly on Windows without fixing the 'fileformat':
:"  > nmake -f Make_dos.mak test17.out
:w! test.out
gf
:set ff=unix
:w! test.out
:brewind
ENDTEST ${CDIR}/test17a.in
 $TDIR/test17a.inSTARTTEST
:" check for 'include' without \zs or \ze
:lang C
:call delete("./Xbase.a")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:e! Xdir1/dir2/foo.a
i#include   "bar.a"^[:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 23 lines, 396 characters written:set ff& cpo+=A
/ENDTEST: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
:call delete("./Xbase.b")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*/\zs[^/]\+\ze'
:function! DotsToSlashes()
:  return substitute(v:fname, '\.', '/', 'g') . '.b'
:endfunction
:so! Xdotest
:" check for 'include' without \zs or \ze
:lang C
:call delete("./Xbase.a")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir "Xdir1/dir2"
[?1l>
[?1h=
Press ENTER or type command to continue:e! Xdir1/dir2/foo.a
"Xdir1/dir2/foo.a" [New File]~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~#include   "bar.a"::w
"Xdir1/dir2/foo.a" [New File] 1 line, 19 characters written:e Xdir1/dir2/bar.a
"Xdir1/dir2/bar.a" [New File]#include      "baz.a"::w
"Xdir1/dir2/bar.a" [New File] 1 line, 22 characters written:e Xdir1/dir2/baz.a
"Xdir1/dir2/baz.a" [New File]#include"foo.a"::w
"Xdir1/dir2/baz.a" [New File] 1 line, 28 characters written:e Xbase.a
"Xbase.a" [New File]:set path=Xdir1/dir2
#include    <foo.a>::w
"Xbase.a" [New File] 1 line, 20 characters written:redir! >>test.out
:checkpath!
--- 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)

Press ENTER or type command to continue:redir END
#include    <foo.a>
~
~
~
~
~
~
~:brewind
"test17.in" 135 lines, 2431 charactersi#include            "foo.a"^[:
:w
:e Xbase.a
:set path=Xdir1/dir2
i#include    <foo.a>^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
ENDTESTSTARTTEST
:" check for 'include' with \zs and \ze
:call delete("./Xbase.b")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*/\zs[^/]\+\ze'
:function! DotsToSlashes()
:  return substitute(v:fname, '\.', '/', 'g') . '.b'
:endfunction
:let &includeexpr='DotsToSlashes()'/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 27 lines, 532 characters written:set ff& cpo+=A
/ENDTEST: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
:call delete("./Xbase.c")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
:function! StripNewlineChar()
:  if v:fname =~ '\n$'
:    return v:fname[:-2]
:so! Xdotest
:" check for 'include' with \zs and \ze
:call delete("./Xbase.b")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir "Xdir1/dir2"
[?1l>
[?1h=
Press ENTER or type command to continue:let &include='^\s*%inc\s*/\zs[^/]\+\ze'
: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
:call delete("./Xbase.c")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
:function! StripNewlineChar()
:  if v:fname =~ '\n$'
:    return v:fname[:-2]:function! DotsToSlashes()

:  :  return substitute(v:fname, '\.', '/', 'g') . '.b'

:  :endfunction
:e Xdir1/dir2/baz.b
i%inc/foo/^[::let &includeexpr='DotsToSlashes()'
:e! Xdir1/dir2/foo.b
"Xdir1/dir2/foo.b" [New File]~~~~~~~~~~~
~~~~~~~~~~~%inc   /bar/::w
"Xdir1/dir2/foo.b" [New File] 1 line, 13 characters written:e Xdir1/dir2/bar.b
"Xdir1/dir2/bar.b" [New File]%inc      /baz/::w
"Xdir1/dir2/bar.b" [New File] 1 line, 16 characters written:e Xdir1/dir2/baz.b
"Xdir1/dir2/baz.b" [New File]%inc/foo/::w
"Xdir1/dir2/baz.b" [New File] 1 line, 22 characters written:e Xbase.b
"Xbase.b" [New File]:set path=Xdir1/dir2
%inc    /foo/::w
"Xbase.b" [New File] 1 line, 14 characters written:redir! >>test.out
:checkpath!
--- 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)

Press ENTER or type command to continue:redir END
%inc    /foo/
~
~
~
~
~
~
~:brewind
"test17.in" 135 lines, 2431 charactersi%inc            /foo/^[:
:w
:e Xbase.b
:set path=Xdir1/dir2
i%inc    /foo/^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
ENDTESTSTARTTEST
:" check for 'include' with \zs and no \ze
:call delete("./Xbase.c")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
:function! StripNewlineChar()
:  if v:fname =~ '\n$'
:    return v:fname[:-2]
:  endif/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 39 lines, 745 characters written:set ff& cpo+=A
/ENDTEST:w
:e Xdir1/dir2/baz.c
i%incfoo.c^[:
:w
:e Xdir1/dir2/FALSE.c
i%incfoo.c^[:
:w
:e Xbase.c
:set path=Xdir1/dir2
i%inc    FALSE.c foo.c^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
:" change "\" to "/" for Windows and fix 'fileformat'
:e test.out
:%s#\\#/#g
:set ff&
:w
:q
ENDTEST


:so! Xdotest
:" check for 'include' with \zs and no \ze
:call delete("./Xbase.c")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir "Xdir1/dir2"
[?1l>
[?1h=
Press ENTER or type command to continue:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
:w
:e Xdir1/dir2/baz.c
i%incfoo.c^[:
:w
:e Xdir1/dir2/FALSE.c
i%incfoo.c^[:
:w
:e Xbase.c
:set path=Xdir1/dir2
i%inc    FALSE.c foo.c^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
:" change "\" to "/" for Windows and fix 'fileformat'
:e test.out
:%s#\\#/#g
:set ff&
:w
:q
ENDTEST

:function! StripNewlineChar()

:  :  if v:fname =~ '\n$'

:    :    return v:fname[:-2]

:    :  endif

:  :  return v:fname

:  :endfunction
:w
:e Xdir1/dir2/baz.c
i%incfoo.c^[:
:w
:e Xdir1/dir2/FALSE.c
:let &includeexpr='StripNewlineChar()'
:e! Xdir1/dir2/foo.c
"Xdir1/dir2/foo.c" [New File]~~~~~~~~~~~~~~~~~~~~~
~%inc   bar.c::w
"Xdir1/dir2/foo.c" [New File] 1 line, 13 characters written:e Xdir1/dir2/bar.c
"Xdir1/dir2/bar.c" [New File]%inc      baz.c::w
"Xdir1/dir2/bar.c" [New File] 1 line, 16 characters written:e Xdir1/dir2/baz.c
"Xdir1/dir2/baz.c" [New File]%incfoo.c::w
"Xdir1/dir2/baz.c" [New File] 1 line, 22 characters written:e Xdir1/dir2/FALSE.c
"Xdir1/dir2/FALSE.c" [New File]%incfoo.c::w
"Xdir1/dir2/FALSE.c" [New File] 1 line, 22 characters written:e Xbase.c
"Xbase.c" [New File]:set path=Xdir1/dir2
%inc    FALSE.c foo.c::w
"Xbase.c" [New File] 1 line, 22 characters written:redir! >>test.out
:checkpath!
--- 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)

Press ENTER or type command to continue:redir END
%inc    FALSE.c foo.c
~
~
~
~
~
~
~:brewind
"test17.in" 135 lines, 2431 characters:w:e Xdir1/dir2/baz.c
i%incfoo.c^[:
:w
:e Xdir1/dir2/FALSE.c
i%incfoo.c^[:
:w
:e Xbase.c
:set path=Xdir1/dir2
i%inc    FALSE.c foo.c^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
:" change "\" to "/" for Windows and fix 'fileformat'
:e test.out
:%s#\\#/#g
:set ff&
:w
:q
ENDTEST:" change "\" to "/" for Windows and fix 'fileformat'
:e test.out
"test.out" 33 lines, 655 charactersThis 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):%s#\\#/#g
E486: Pattern not found: \\:set ff&
:w
"test.out" 33 lines, 655 characters written:q
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test17 = test61; then \
#	  if diff test.out test17.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test17.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test17.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test30.failed test.ok test.out X* viminfo
cp test30.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test30.in
[?1h="test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' option

Note: This test will fail if "cat" is not available.

STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for a lot of variations of the 'fileformats' option/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 221 lines, 3592 characters written:set ff& cpo+=A
/ENDTEST:$r XXtt64
Go7^[:$r XXtt71
:$r XXtt72
Go8^[:$r XXtt81
:$r XXtt82
Go9^[:$r XXtt91
:$r XXtt92
:$r XXtt93
Go10^[:$r XXUnix
:set nobinary ff&
:w
:qa!
ENDTEST

unix
unix
eof

dos^M
dos^M
eof

mac^Mmac^M
:so! Xdotest
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
"XXUnix" [New File] 2 lines, 10 characters written:/^dos/;/eof/-1w! XXDos
"XXDos" [New File] 2 lines, 10 characters written:set bin noeol
:$w! XXMac
"XXMac" [New File][Incomplete last line] 1 line, 8 characters written
noeol
:$w! XXEol
"XXEol" [New File][Incomplete last line] 1 line, 5 characters written:set nobin eol
:enew!
~~~~~~~~~~~
~~~~
~~~~
~~~:bwipe XXUnix XXDos XXMac
3 buffers wiped out:" create mixed format files
:if has("vms")

:  : !copy XXUnix,XXDos XXUxDs.

:  : !copy XXUnix,XXMac XXUxMac.

:  : !copy XXDos,XXMac  XXDosMac.

:  : !copy XXMac,XXEol  XXMacEol.

:  : !copy XXUnix,XXDos,XXMac XXUxDsMc.

:  :elseif has("win32")

:  : !copy /b XXUnix+XXDos XXUxDs

:  : !copy /b XXUnix+XXMac XXUxMac

:  : !copy /b XXDos+XXMac XXDosMac

:  : !copy /b XXMac+XXEol XXMacEol

:  : !copy /b XXUnix+XXDos+XXMac XXUxDsMc

:  :else

:  : !cat XXUnix XXDos >XXUxDs

:!cat XXUnix XXDos >XXUxDs[?1l>
[?1h=:  : !cat XXUnix XXMac >XXUxMac

:!cat XXUnix XXMac >XXUxMac[?1l>
[?1h=:  : !cat XXDos XXMac >XXDosMac

:!cat XXDos XXMac >XXDosMac[?1l>
[?1h=:  : !cat XXMac XXEol >XXMacEol

:!cat XXMac XXEol >XXMacEol[?1l>
[?1h=:  : !cat XXUnix XXDos XXMac >XXUxDsMc

:!cat XXUnix XXDos XXMac >XXUxDsMc[?1l>
[?1h=:  :endif
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:"
:" try reading and writing with 'fileformats' empty
:set fileformat=unix
:e! XXUnix
"XXUnix" 2 lines, 10 charactersunix
unix:w! test.out
"test.out" [New File] 2 lines, 10 characters written:e! XXDos
"XXDos" 2 lines, 10 charactersdos^M
dos^M:w! XXtt01
"XXtt01" [New File] 2 lines, 10 characters written:e! XXMac
"XXMac" [Incomplete last line] 1 line, 8 charactersmacmac^M~:w! XXtt02
"XXtt02" [New File] 1 line, 9 characters written:bwipe XXUnix XXDos XXMac
"test30.in" 237 lines, 3762 characters

3 buffers wiped out

Press ENTER or type command to continue:set fileformat=dos
:$r XXtt64
Go7^[:$r XXtt71
:$r XXtt72
Go8^[:$r XXtt81
:$r XXtt82
Go9^[:$r XXtt91
:$r XXtt92
:$r XXtt93
Go10^[:$r XXUnix
:set nobinary ff&
:w
:qa!
ENDTESTunix
unix
eofdos^M
dos^M
eofmac^Mmac^M
:e! XXUnix
"XXUnix" [CR missing][dos format] 2 lines, 10 charactersunixunix~~~~~~~~~~~
~~~~
~~~~
~~:w! XXtt11
"XXtt11" [New File][dos format] 2 lines, 12 characters written:e! XXDos
"XXDos" [dos format] 2 lines, 10 charactersdosdos:w! XXtt12
"XXtt12" [New File][dos format] 2 lines, 10 characters written:e! XXMac
"XXMac" [Incomplete last line][dos format] 1 line, 8 charactersmac^Mmac^M~:w! XXtt13
"XXtt13" [New File][dos format] 1 line, 10 characters written:bwipe XXUnix XXDos XXMac
"test30.in" [CR missing][dos format] 237 lines, 3762 characters

3 buffers wiped out

Press ENTER or type command to continue:set fileformat=mac
:$r XXtt64
Go7^[:$r XXtt71
:$r XXtt72
Go8^[:$r XXtt81
:$r XXtt82
Go9^[:$r XXtt91
:$r XXtt92
:$r XXtt93
Go10^[:$r XXUnix
:set nobinary ff&
:w
:qa!
ENDTESTunix
unix
eofdos
dos
eofmac^Jmac
:e! XXUnix
"XXUnix" [Incomplete last line][mac format] 1 line, 10 charactersunix^Junix^J~~~~~~~~~~~~
~~~~
~~~~
~~:w! XXtt21
"XXtt21" [New File][mac format] 1 line, 11 characters written:e! XXDos
"XXDos" [Incomplete last line][mac format] 3 lines, 10 charactersdos^Jdos
^J:w! XXtt22
"XXtt22" [New File][mac format] 3 lines, 11 characters written:e! XXMac
"XXMac" [mac format] 2 lines, 8 charactersmac
mac~:w! XXtt23
"XXtt23" [New File][mac format] 2 lines, 8 characters written:bwipe XXUnix XXDos XXMac
"test30.in" [Incomplete last line][mac format] 5 lines, 3762 characters

3 buffers wiped out

Press ENTER or type command to continue:"
^Jdos
^Jeof^J^Jmac
mac
^J:" try reading and writing with 'fileformats' set to one format
:set fileformats=unix
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunixdos^M
dos^M
mac^Mmac^M:w! XXtt31
"XXtt31" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=dos
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line][CR missing][dos format] 5 lines, 28 character

s
Press ENTER or type command to continue:w! XXtt32
"XXtt32" [New File][dos format] 5 lines, 32 characters written

Press ENTER or type command to continue:bwipe XXUxDsMc
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' option

Note: This test will fail if "cat" is not available."test30.in" [CR missing][dos format] 237 lines, 3762 characters:set fileformats=mac
:e! XXUxDsMc
"XXUxDsMc" [mac format] 4 lines, 28 charactersunix^Junix^Jdos^Jdos
^Jmacmac~~~~~~~~~~~~~~~~~~~:w! XXtt33
"XXtt33" [New File][mac format] 4 lines, 28 characters written:bwipe XXUxDsMc
"test30.in" [Incomplete last line][mac format] 5 lines, 3762 characters^Jdoseof^J^Jmac
mac^J:"
:" try reading and writing with 'fileformats' set to two formats
:set fileformats=unix,dos
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunixdos^M
dos^M
mac^Mmac^M:w! XXtt41
"XXtt41" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXUxMac
"XXUxMac" [Incomplete last line] 3 lines, 18 charactersunixunix
mac^Mmac^M~~~~~~~~~~~~~~~~~~~~:w! XXtt42
"XXtt42" [New File] 3 lines, 19 characters written:bwipe XXUxMac
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXDosMac
"XXDosMac" [Incomplete last line][dos format] 3 lines, 18 charactersdodos
mac^Mmac^M~~~~~~~~~~~~~~~~~~~~:w! XXtt43
"XXtt43" [New File][dos format] 3 lines, 20 characters written:bwipe XXDosMac
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=unix,mac
:e! XXUxDs
"XXUxDs" 4 lines, 20 charactersunixunix
dos^Mdos^M~~~~~~~~~~~~~~~~~~~:w! XXtt51
"XXtt51" [New File] 4 lines, 20 characters written:bwipe XXUxDs
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt52
"XXtt52" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXDosMac
"XXDosMac" [mac format] 4 lines, 18 charactersdo^Jdos
^Jmacmac~~~~~~~~~~~~~~~~~~~:w! XXtt53
"XXtt53" [New File][mac format] 4 lines, 18 characters written:bwipe XXDosMac
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXEol
"XXEol" [Incomplete last line] 1 line, 5 charactersnoeol~~
~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
unix,mac:unix:w! XXtt54
"XXtt54" [New File] 2 lines, 20 characters written:bwipe XXEol
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=dos,mac
:e! XXUxDs
"XXUxDs" [CR missing][dos format] 4 lines, 20 charactersunixunix
dosdos~~~~~~~~~~~~~~~~~~~:w! XXtt61
"XXtt61" [New File][dos format] 4 lines, 22 characters written:bwipe XXUxDs
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXUxMac
"XXUxMac" [Incomplete last line][CR missing][dos format] 3 lines, 18 charactersunixunix
mac^Mmac^M~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
dos,mac:dos:w! XXtt62
"XXtt62" [New File][dos format] 4 lines, 35 characters written:bwipe XXUxMac
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line][CR missing][dos format] 5 lines, 28 character

s
Press ENTER or type command to continue:w! XXtt63
"XXtt63" [New File][dos format] 5 lines, 32 characters written

Press ENTER or type command to continue:bwipe XXUxDsMc
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' option

Note: This test will fail if "cat" is not available."test30.in" [CR missing][dos format] 237 lines, 3762 characters:e! XXMacEol
"XXMacEol" [Incomplete last line][mac format] 3 lines, 13 charactersmacmac
noeol~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
dos,mac:mac:w! XXtt64
"XXtt64" [New File][mac format] 4 lines, 26 characters written:bwipe XXMacEol
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:"
:" try reading and writing with 'fileformats' set to three formats
:set fileformats=unix,dos,mac
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt71
"XXtt71" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXEol
"XXEol" [Incomplete last line] 1 line, 5 charactersnoeol~~
~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
unix,dos,mac:unix:w! XXtt72
"XXtt72" [New File] 2 lines, 24 characters written:bwipe XXEol
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=mac,dos,unix
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt81
"XXtt81" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXEol
"XXEol" [Incomplete last line][mac format] 1 line, 5 charactersnoeol~~
~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
mac,dos,unix:mac:w! XXtt82
"XXtt82" [New File][mac format] 2 lines, 23 characters written:bwipe XXEol
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:" try with 'binary' set
:set fileformats=mac,unix,dos
:set binary
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt91
"XXtt91" [New File][Incomplete last line] 5 lines, 28 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=mac
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt92
"XXtt92" [New File][Incomplete last line] 5 lines, 28 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=dos
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt93
"XXtt93" [New File][Incomplete last line] 5 lines, 28 characters written:"
:" Append "END" to each file so that we can see what the last written char was.
:set fileformat=unix nobin
~~~~--No lines in buffer--END:w >>XXtt01
"XXtt01" 1 line, 4 characters appended:w >>XXtt02
"XXtt02" 1 line, 4 characters appended:w >>XXtt11
"XXtt11" 1 line, 4 characters appended:w >>XXtt12
"XXtt12" 1 line, 4 characters appended:w >>XXtt13
"XXtt13" 1 line, 4 characters appended:w >>XXtt21
"XXtt21" 1 line, 4 characters appended:w >>XXtt22
"XXtt22" 1 line, 4 characters appended:w >>XXtt23
"XXtt23" 1 line, 4 characters appended:w >>XXtt31
"XXtt31" 1 line, 4 characters appended:w >>XXtt32
"XXtt32" 1 line, 4 characters appended:w >>XXtt33
"XXtt33" 1 line, 4 characters appended:w >>XXtt41
"XXtt41" 1 line, 4 characters appended:w >>XXtt42
"XXtt42" 1 line, 4 characters appended:w >>XXtt43
"XXtt43" 1 line, 4 characters appended:w >>XXtt51
"XXtt51" 1 line, 4 characters appended:w >>XXtt52
"XXtt52" 1 line, 4 characters appended:w >>XXtt53
"XXtt53" 1 line, 4 characters appended:w >>XXtt54
"XXtt54" 1 line, 4 characters appended:w >>XXtt61
"XXtt61" 1 line, 4 characters appended:w >>XXtt62
"XXtt62" 1 line, 4 characters appended:w >>XXtt63
"XXtt63" 1 line, 4 characters appended:w >>XXtt64
"XXtt64" 1 line, 4 characters appended:w >>XXtt71
"XXtt71" 1 line, 4 characters appended:w >>XXtt72
"XXtt72" 1 line, 4 characters appended:w >>XXtt81
"XXtt81" 1 line, 4 characters appended:w >>XXtt82
"XXtt82" 1 line, 4 characters appended:w >>XXtt91
"XXtt91" 1 line, 4 characters appended:w >>XXtt92
"XXtt92" 1 line, 4 characters appended:w >>XXtt93
"XXtt93" 1 line, 4 characters appended:"
:" Concatenate the results.
:" Make fileformat of test.out the native fileformat.
:" Add a newline at the end.
:set binary
:e! test.out
"test.out" 2 lines, 10 charactersunix
unix:$r XXtt01
"XXtt01" 3 lines, 14 charactersdos^M
dos^M
END:$r XXtt02
"XXtt02" 2 lines, 13 charactersmac^Mmac^M
END

1:$r XXtt11
"XXtt11" 3 lines, 16 charactersunix^M
unix^M
END:$r XXtt12
"XXtt12" 3 lines, 14 charactersdos^M
dos^M
END:$r XXtt13
"XXtt13" 2 lines, 14 charactersmac^Mmac^M^M
END

2:$r XXtt21
"XXtt21" 3 lines, 15 charactersunix
unix
^MEND:$r XXtt22
"XXtt22" 3 lines, 15 charactersdos^M
dos^M
^MEND:$r XXtt23
"XXtt23" 1 line, 12 characters
mac^Mmac^MEND
3
:$r XXtt31
"XXtt31" 6 lines, 33 characters
unix
:$r XXtt32
"XXtt32" 6 lines, 36 characters





unix
dos^M
dos^M
mac^Mmac^M
END
unix^M
:$r XXtt33
"XXtt33" 5 lines, 32 characters





unix^M
dos^M
dos^M
mac^Mmac^M^M
END
unix



unix
dos^M
dos^M
mac^Mmac^MEND

4
:$r XXtt41
"XXtt41" 6 lines, 33 characters
unix
:$r XXtt42
"XXtt42" 4 lines, 23 characters





unix
dos^M
dos^M
mac^Mmac^M
END
unix
:$r XXtt43
"XXtt43" 4 lines, 24 characters



unix
mac^Mmac^M
END
dos^M


dos^M
mac^Mmac^M^M
END

5
:$r XXtt51
"XXtt51" 5 lines, 24 characters
unix
:$r XXtt52
"XXtt52" 6 lines, 33 characters




unix
dos^M
dos^M
END
unix
:$r XXtt53
"XXtt53" 3 lines, 22 characters





unix
dos^M
dos^M
mac^Mmac^M
END
dos^M
:$r XXtt54
"XXtt54" 3 lines, 24 characters


dos^M
mac^Mmac^MEND
unix,mac:unix

noeol
END

6
:$r XXtt61
"XXtt61" 5 lines, 26 characters
unix^M
:$r XXtt62
"XXtt62" 5 lines, 39 characters




unix^M
dos^M
dos^M
END
dos,mac:dos^M
:$r XXtt63
"XXtt63" 6 lines, 36 characters




unix^M
unix^M
mac^Mmac^M^M
END
unix^M
:$r XXtt64
"XXtt64" 1 line, 30 characters





unix^M
dos^M
dos^M
mac^Mmac^M^M
END
dos,mac:mac^Mmac^Mmac^Mnoeol^MEND
7
:$r XXtt71
"XXtt71" 6 lines, 33 characters
unix
:$r XXtt72
"XXtt72" 3 lines, 28 characters





unix
dos^M
dos^M
mac^Mmac^M
END
unix,dos,mac:unix

noeol
END

8
:$r XXtt81
"XXtt81" 6 lines, 33 characters
unix
:$r XXtt82
"XXtt82" 1 line, 27 characters





unix
dos^M
dos^M
mac^Mmac^M
END
mac,dos,unix:mac^Mnoeol^MEND
9
:$r XXtt91
"XXtt91" 5 lines, 32 characters
unix
:$r XXtt92
"XXtt92" 5 lines, 32 characters




unix
dos^M
dos^M
mac^Mmac^MEND
unix
:$r XXtt93
"XXtt93" 5 lines, 32 characters




unix
dos^M
dos^M
mac^Mmac^MEND
unix



unix
dos^M
dos^M
mac^Mmac^MEND

10
:$r XXUnix
"XXUnix" 2 lines, 10 characters
unix
:set nobinary ff&
:w
"test.out" 130 lines, 786 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test30 = test61; then \
#	  if diff test.out test30.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test30.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test30.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test32.failed test.ok test.out X* viminfo
cp test32.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test32.in
[?1h="test32.in" 60 lines, 1391 charactersTest for insert expansion

:se cpt=.,w
* add-expands (word from next line) from other window
* add-expands (current buffer first)
* Local expansion, ends in an empty line (unless it becomes a global expansion)
* starts Local and switches to global add-expansion
:se cpt=.,w,i
* i-add-expands and switches to local
* add-expands lines (it would end in an empty line if it didn't ignored it self):se cpt=kXtestfile
* checks k-expansion, and file expansion (use Xtest11 instead of test11,
* because TEST11.OUT may match first on DOS)
:se cpt=w
* checks make_cyclic in other window
:se cpt=u nohid
* checks unloaded buffer expansion
* checks adding mode abortion
:se cpt=t,d
* tag expansion, define add-expansion interrupted
* t-expansion

STARTTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for insert expansion/^STARTTEST

:so small.vim
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 27 lines, 533 characters written:set ff& cpo+=A

/ENDTESTO^N^[IX^[A^X^F^N^[
:" use CTRL-X CTRL-F to complete Xtest11.one, remove it and then use
:" CTRL-X CTRL-F again to verify this doesn't cause trouble.
OX^X^F^H^H^H^H^H^H^H^H^X^F^[ddk
:se cpt=w
OST^N^P^P^P^P^[
:se cpt=u nohid
^WoOEN^N
unl^N^X^X^P^[
:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
O^X^]^X^D^X^D^X^X^D^X^D^X^D^X^D
a^N^[
:wq! test.out
ENDTEST

start of testfile
run1
run2
end of testfile

test11  36Gepeto/Tag/
asd     test11file      36G
Makefileto      run
:so! Xdotest
:so small.vim
:se nocp viminfo+=nviminfo cpt=.,w ff=unix | $-2,$w!Xtestfile | set ff&
"Xtestfile" [New] 3L, 57C written:se cot=
~~~~~~~~~~
[No Name]                                                                       unl^N^X^X^P^[
:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
O^X^]^X^D^X^D^X^X^D^X^D^X^D^X^D
a^N^[:wq! test.out
ENDTESTstart of testfile
run1run2test32.in                                                                       -- INSERT --
-- Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) match 1 of 4match in file test32.in-- Keyword completion (^N^P) match 2 of 4-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Adding Keyword completion (^N^P) Word from other line#include "Xtestfile"
run1 run2[+]-- Adding Keyword completion (^N^P) Word from other line-- INSERT --3
-- INSERT --
-- Keyword completion (^N^P) -- Searching...
Scanning: test32.in-- Keyword completion (^N^P) match 1 of 115-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.in-- Adding Keyword completion (^N^P) Word from other line-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword Local completion (^N^P) -- Searching...match 1 of 4 match 2 of 4 match 3 of 4 match 4 of 4 Back at original-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword Local completion (^N^P) -- Searching...match 1 of 4 match 2 of 4-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning: test32.in-- Keyword completion (^N^P) The only match-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.in-- Adding Keyword completion (^N^P) match 1 of 2match in file test32.in-- Adding Keyword completion (^N^P) Word from other linerun3 run3

run1 run2-- Adding Keyword completion (^N^P) Word from other line-- INSERT --
:se cpt=.,w,i
-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning: test32.in included file: Xtestfile
match in file test32.in-- Keyword completion (^N^P) The only match-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.in included file: Xtestfile
match in file test32.in-- Adding Keyword completion (^N^P) The only match-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.in included file: Xtestfile
match in file test32.in-- Adding Keyword completion (^N^P) The only match-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword Local completion (^N^P) -- Searching...match 1 of 3-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- Whole line completion (^L^N^P) -- Searching...
Scanning: test32.in-- Whole line completion (^L^N^P) match 1 of 57INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) match 1 of 57Adding Whole line completion (^L^N^P) -- Searching...
Scanning: test32.in-- Adding Whole line completion (^L^N^P) The only match Back at original The only matchMakefileto      run3
Makefileto      run3
Makefileto      run3-- INSERT --:se cpt=kXtestfile
:w Xtest11.one
"Xtest11.one" [New] 9L, 104C writtenXtest11.one  :w Xtest11.two
"Xtest11.two" [New] 9L, 104C written-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning dictionary: Xtestfilematch in file Xtestfile-- Keyword completion (^N^P) match 1 of 9test11[+]I -- Keyword completion (^N^P) match 1 of 9-- INSERT ---- INSERT --Xtest11
-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- File name completion (^F^N^P) -- Searching...match 1 of 2 match 2 of 2.two-- INSERT --:" use CTRL-X CTRL-F to complete Xtest11.one, remove it and then use
:" CTRL-X CTRL-F again to verify this doesn't cause trouble.
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- File name completion (^F^N^P) -- Searching...match 1 of 4INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- File name completion (^F^N^P) -- Searching...match 1 of 443
Make_all.mak
run1 run2d -- INSERT --
run1 run2~
:se cpt=w
-- INSERT --
-- Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) The only match Back at originalmatch in file test32.in-- Keyword completion (^N^P) The only match Back at originalmatch in file test32.in-- Keyword completion (^N^P) The only match
STARTTEST
run1 run2-- Keyword completion (^N^P) The only match-- INSERT --:se cpt=u nohid
~~~~~~~
~~~~~-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) The only match-- INSERT --
-- Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) match 1 of 3-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) The only matchENDTEST
unless-- Keyword completion (^N^P) The only match-- INSERT --:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- Tag completion (^]^N^P) -- Searching...match 1 of 3INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) match 1 of 3Definition completion (^D^N^P) -- Searching...Scanning included file: Xtestfilematch in file Xtestfile-- Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- Adding Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Adding Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- Adding Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Adding Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- Adding Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Adding Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- Adding Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Adding Definition completion (^D^N^P) Word from other lineINSERT ---- Keyword completion (^N^P) -- Searching...
Scanning tags.included file: Xtestfile
-- Keyword completion (^N^P) The only matchtest11file      36Gepeto/Tag/ asd
asd-- Keyword completion (^N^P) The only match-- INSERT --
ru:wq! test.out
"test.out" [New] 15L, 175C written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test32 = test61; then \
#	  if diff test.out test32.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test32.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test32.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test58.failed test.ok test.out X* viminfo
cp test58.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test58.in
[?1h="test58.in" 656 lines, 11024 charactersTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for spell checking.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 111 lines, 2591 characters written:set ff& cpo+=A
/ENDTEST:"
:" NOSLITSUGS
:call TestOne('8', '8')
:" Numbers
:call TestOne('9', '9')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1


:so! Xdotest
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:"
:" NOSLITSUGS
:call TestOne('8', '8')
:" Numbers
:call TestOne('9', '9')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1


:"Don't want to depend on the locale from the environment
:set enc=latin1e!"Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spelliasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=$put =''
  $put ='test '. a:aff . '-' . a:dic  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest  " use that spell file:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
vim

STARTTESTlatin1maxmem
iasdaff/.dic
:func TestOne(aff, dicspellfilea:affa:dicspldic and .aff
  exea:aff . 'affstarta:aff . 'affend/-1w! Xtest.aff
  exea:dic . 'dicstarta:dic . 'dicend/-1w! Xtest.dic
  mkspell! Xtest XtestasdTests for spell checking.     vim: set ft=vim :Change "asdTests" to:

 1 "Acid tests"

 2 "Attests"

 3 "Ass Tests"

 4 "As Tests"

 5 "Sad Tests"

 6 "Ads Tests"

 7 "As tests"

 8 "As detests"

 9 "Add Tests"

10 "Aid Tests"

11 "Ash Tests"

12 "Ad Tests"

13 "And Tests"

14 "Ask Tests"

15 "Asp Tests"

16 "USD Tests"

17 "Astutest"

18 "Autotests"

19 "Sadists"

20 "Asst Tests"

21 "Assad Tests"

22 "SSD Tests"

Type number and <Enter> or click with mouse (empty cancels): :"
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)

:    set spellfile=

:    $put =''

:    $put ='test '. a:aff . '-' . a:dic

:    " Generate a .spl file from a .dic and .aff file.

:    exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'

:    exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'

:    mkspell! Xtest Xtest

:    " use that spell file

:    set spl=Xtest.latin1.spl spell

:    " list all valid words

:    spelldump

:    %yank

:    quit

:    $put

:    $put ='-------'

:    " find all bad words and suggestions for them

:    exe '1;/^' . a:aff . 'good:'

:    normal 0f:]s

:    let prevbad = ''

:    while 1

:        let [bad, a] = spellbadword()

:        if bad == '' || bad == prevbad || bad == 'badend'

:            break

:          endif

:        let prevbad = bad

:        let lst = spellsuggest(bad, 3)

:        normal mm

:        $put =bad

:        $put =string(lst)

:        normal `m]s

:      endwhile

:  endfunc
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:"
:call TestOne('1', '1')
"Xtest.aff" [New File] 46 lines, 754 characters written

"Xtest.dic" [New File] 11 lines, 71 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 29 of 127 nodes; 98 (77%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 490 bytes

Reading back spell file...

Performing soundfolding...

Total number of words: 16

Number of words after soundfolding: 16

Compressing word tree...

Compressed 39 of 104 nodes; 65 (62%) remaining

Writing suggestion file Xtest.latin1.sug ...

Estimated runtime memory use: 357 bytes

17 lines yanked

17 more lines

Press ENTER or type command to continue:$put =soundfold('goobledygoook')
the end
uk
wrong
-------
bad
['put', 'uk', 'OK']
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']th['put', 'uk', 'test']gebletegek
kepereneven
:$put =soundfold('oeverloos gezwets edale')

everles gesvets etele
:"
:"
:" and now with SAL instead of SOFO items; test automatic reloading
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^affstart_sal/+1,/^affend_sal/-1w! Xtest.aff
"Xtest.aff" 151 lines, 3412 characters written:mkspell! Xtest Xtest
Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 29 of 127 nodes; 98 (77%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 490 bytes

Performing soundfolding...

Total number of words: 16

Number of words after soundfolding: 15

Compressing word tree...

Compressed 33 of 75 nodes; 42 (56%) remaining

Writing suggestion file Xtest.latin1.sug ...

Estimated runtime memory use: 241 bytes

Press ENTER or type command to continue:$put =soundfold('goobledygoook')
-------
bad
['put', 'uk', 'OK']
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end['put', 'uk', 'test']
the['put', 'uk', 'test']gebletegekkepereneveneverles gesvet etelekbltykk
kprnfn
:$put =soundfold('oeverloos gezwets edale')

*fls kswts tl
:"
:" also use an addition file
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^addstart/+1,/^addend/-1w! Xtest.latin1.add
"Xtest.latin1.add" [New File] 3 lines, 38 characters written:mkspell! Xtest.latin1.add.spl Xtest.latin1.add
Reading word file Xtest.latin1.add ...
Compressing word tree...

Compressed 0 of 29 nodes; 29 (100%) remaining

Writing spell file Xtest.latin1.add.spl ...

Done!

Estimated runtime memory use: 145 bytes

Press ENTER or type command to continue:set spellfile=Xtest.latin1.add
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment/^test2:
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent

:set spl=Xtest_us.latin1.spl
/^test2:
search hit BOTTOM, continuing at TOP2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend
search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint

:set spl=Xtest_gb.latin1.spl
elequint
/^test2:
search hit BOTTOM, continuing at TOP2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend
search hit BOTTOM, continuing at TOP:let [str, a] = spellbadword()
:$put =str
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent

:set spl=Xtest_nz.latin1.spl
elequint
elekwint
elekwint
/^test2:
search hit BOTTOM, continuing at TOP2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend
search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent

:set spl=Xtest_ca.latin1.spl
elequint
elekwint
elekwint

elequint
/^test2:
search hit BOTTOM, continuing at TOP2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend
search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
elekwint

:unlet str a
:"
:" Postponed prefixes
:call TestOne('2', '1')
"Xtest.aff" 44 lines, 447 characters written

"Xtest.dic"gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv  -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/arm-linux-gnueabihf/perl/5.24/CORE  -o objects/gui_gtk_gresources.o auto/gui_gtk_gresources.c
 11 lines, 71 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 10 of 98 nodes; 88 (89%) remaining

Compressed 0 of 13 nodes; 13 (100%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 505 bytes

17 lines yanked

17 more lines

2affend

2good: puts
badendaddstar
/regions=usgbnz
elequ/2/3
addendtest2:test elekwint test elekwent asdf:" Compound words
:call TestOne('3', '3')
"Xtest.aff" 5 lines, 60 characters written

"Xtest.dic" 5 lines, 29 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 6 of 29 nodes; 23 (79%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 115 bytes

3 lines yanked

3 more lines

Press ENTER or type command to continue:call TestOne('4', '4')
"Xtest.aff" 45 lines, 559 characters written

"Xtest.dic" 8 lines, 59 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - word
Compressing word tree...
Compressed 2 of 91 nodes; 89 (97%) remaining

Compressed 0 of 15 nodes; 15 (100%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 520 bytes

12 lines yanked

12 more lines

Press ENTER or type command to continue:call TestOne('5', '5')
"Xtest.aff" 25 lines, 237 characters written

"Xtest.dic" 6 lines, 57 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 19 of 105 nodes; 86 (81%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 440 bytes

10 lines yanked

10 more lines

Press ENTER or type command to continue:call TestOne('6', '6')
"Xtest.aff" 23 lines, 211 characters written

"Xtest.dic" 6 lines, 53 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - mee
Compressing word tree...
Compressed 19 of 87 nodes; 68 (78%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 350 bytes

9 lines yanked

9 more lines

Press ENTER or type command to continue:call TestOne('7', '7')
"Xtest.aff" 22 lines, 223 characters written

"Xtest.dic" 6 lines, 67 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - mee
Compressing word tree...
Compressed 19 of 89 nodes; 70 (78%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 360 bytes

9 lines yanked

9 more lines

Press ENTER or type command to continue:"
1234
mee/391,111,9999
bar/17,61003,123
lead/2
tail/123
middle/77,1
7dicend

bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar
badend

Test NOSLITSUGS

8affstart
SET ISO8859-1

NOSPLITSUGS
8affend

8dicstart:" NOSLITSUGS
:call TestOne('8', '8')
"Xtest.aff" 3 lines, 27 characters written

"Xtest.dic" 4 lines, 20 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 8 of 26 nodes; 18 (69%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 90 bytes

4 lines yanked

4 more lines

Press ENTER or type command to continue:" Numbers
NOSPLITSUGS
8affend

8dicstart
1234
foo
bar
faabar
8dicend

8good: foo bar faabar
bad: foobar barfooTest Numbers9affstart9affend9dicstart
1234
foo:call TestOne('9', '9')
Error detected while processing function TestOne:

line    5:

E493: Backwards range given: 1;/^9affstart/+1,/^9affend/-1w! Xtest.aff

"Xtest.dic" 3 lines, 13 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 2 of 15 nodes; 13 (86%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 65 bytes

3 lines yanked

3 more lines

Press ENTER or type command to continue:"
Test Numbers

9affstart
9affend

9dicstart
1234
foo
bar
9dicend

9good: 0b1011 0777 1234 0x01ff
badend


test output:

test 1-1# ile: Xtest.latin1.spl
Comment
input:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
Test Numbers

9affstart
9affend

9dicstart
1234
foo
bar
9dicend

9good: 0b1011 0777 1234 0x01ff
badend


test output:

test 1-1
# file: Xtest.latin1.spl
Comment
deol
input:"
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^test output:/,$wq! test.out
"test.out" [New File] 289 lines, 3844 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test58 = test61; then \
#	  if diff test.out test58.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test58.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test58.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test59.failed test.ok test.out X* viminfo
cp test59.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test59.in
[?1h="test59.in" 626 lines, 10897 charactersTests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 106 lines, 2520 characters written:set ff& cpo+=A
/ENDTEST:call TestOne('3', '3')
:call TestOne('4', '4')
:call TestOne('5', '5')
:call TestOne('6', '6')
:call TestOne('7', '7')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1


:so! Xdotest
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:call TestOne('3', '3')
:call TestOne('4', '4')
:call TestOne('5', '5')
:call TestOne('6', '6')
:call TestOne('7', '7')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1


:" text is in latin1, the test text is utf-8.enc=latin1e!
:set enc=utf-8:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=$put =''
  $put ='test '. a:aff . '-' . a:dic  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest  " use that spell file:set enc=utf-8
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)

:    set spellfile=

:    $put =''

:    $put ='test '. a:aff . '-' . a:dic

:    " Generate a .spl file from a .dic and .aff file.

:    exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'

:    exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'

:    mkspell! Xtest Xtest

:    " use that spell file

:    set spl=Xtest.utf-8.spl spell

:    " list all valid words

:    spelldump

:    %yank

:    quit

:    $put

:    $put ='-------'

:    " find all bad words and suggestions for them

:    exe '1;/^' . a:aff . 'good:'

:    normal 0f:]s

:    let prevbad = ''

:    while 1

:        let [bad, a] = spellbadword()

:        if bad == '' || bad == prevbad || bad == 'badend'

:            break

:          endif

:        let prevbad = bad

:        let lst = spellsuggest(bad, 3)

:        normal mm

:        $put =bad

:        $put =string(lst)

:        normal `m]s

:      endwhile

:  endfunc
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:"
:call TestOne('1', '1')
"Xtest.aff" [New File] 48 lines, 768 characters written

"Xtest.dic" [New File] 11 lines, 71 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 29 of 131 nodes; 102 (77%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 510 bytes

Reading back spell file...

Performing soundfolding...

Total number of words: 16

Number of words after soundfolding: 16

Compressing word tree...

Compressed 39 of 104 nodes; 65 (62%) remaining

Writing suggestion file Xtest.utf-8.sug ...

Estimated runtime memory use: 357 bytes

17 lines yanked

17 more lines

Press ENTER or type command to continue:$put =soundfold('goobledygoook')
the end
uk
wrong
-------
bad
['put', 'uk', 'OK']
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']the['put', 'uk', 'test']gebletegek
:$put =soundfold('kóopërÿnôven')

kepereneven
:$put =soundfold('oeverloos gezwets edale')

everles gesvets etele
:"
:"
:gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv  -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/arm-linux-gnueabihf/perl/5.24/CORE  -o objects/if_perl.o auto/if_perl.c
" and now with SAL instead of SOFO items; test automatic reloading
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^affstart_sal/+1,/^affend_sal/-1w! Xtest.aff
"Xtest.aff" 153 lines, 3426 characters written:mkspell! Xtest Xtest
Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 29 of 131 nodes; 102 (77%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 510 bytes

Performing soundfolding...

Total number of words: 16

Number of words after soundfolding: 15

Compressing word tree...

Compressed 33 of 75 nodes; 42 (56%) remaining

Writing suggestion file Xtest.utf-8.sug ...

Estimated runtime memory use: 241 bytes

Press ENTER or type command to continue:$put =soundfold('goobledygoook')
-------
bad
['put', 'uk', 'OK']
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end['put', 'uk', 'test']
the['put', 'uk', 'test']gebletegekkepereneveneverles gesvet etelekbltykk
:$put =soundfold('kóopërÿnôven')

kprnfn
:$put =soundfold('oeverloos gezwets edale')

*fls kswts tl
:"
:" also use an addition file
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^addstart/+1,/^addend/-1w! Xtest.utf-8.add
"Xtest.utf-8.add" [New File] 3 lines, 38 characters written:mkspell! Xtest.utf-8.add.spl Xtest.utf-8.add
Reading word file Xtest.utf-8.add ...
Compressing word tree...

Compressed 0 of 29 nodes; 29 (100%) remaining

Writing spell file Xtest.utf-8.add.spl ...

Done!

Estimated runtime memory use: 145 bytes

Press ENTER or type command to continue:set spellfile=Xtest.utf-8.add
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"/^test2:
tomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!:let [str, a] = spellbadword()
:$put =str
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent

:set spl=Xtest_us.utf-8.spl
/^test2:
search hit BOTTOM, continuing at TOPtomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
startwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

COMPOUNDRULE ssmm*ee:let [str, a] = spellbadword()
:$put =str
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint

:set spl=Xtest_gb.utf-8.spl
elequint
/^test2:
search hit BOTTOM, continuing at TOPtomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

search hit BOTTOM, continuing at TOP:let [str, a] = spellbadword()
:$put =str
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
startwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

COMPOUNDRULE ssmm*ee:let [str, a] = spellbadword()
:$put =str
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent

:set spl=Xtest_nz.utf-8.spl
elequint
elekwint
elekwint
/^test2:
search hit BOTTOM, continuing at TOPtomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
startwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

COMPOUNDRULE ssmm*ee:let [str, a] = spellbadword()
:$put =str
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent

:set spl=Xtest_ca.utf-8.spl
elequint
elekwint
elekwint

elequint
/^test2:
search hit BOTTOM, continuing at TOPtomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
startwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

COMPOUNDRULE ssmm*ee:let [str, a] = spellbadword()
:$put =str
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
elekwint

:unlet str a
:"
:" Postponed prefixes
:call TestOne('2', '1')
"Xtest.aff" 46 lines, 461 characters written

"Xtest.dic" 11 lines, 71 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 10 of 102 nodes; 92 (90%) remaining

Compressed 0 of 13 nodes; 13 (100%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 525 bytes

17 lines yanked

17 more lines

Press ENTER or type command to continue:"
addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

1good: wrong OK puts. Test the end
bad:  inputs comment ok Ok. test déôl end the
badend

2good: puts
bad: inputs comment ok Ok end the. test déôl
badendTest rules for compounding.3affstart
SET ISO8859-1COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:" Compound words
:call TestOne('3', '3')
"Xtest.aff" 5 lines, 60 characters written

"Xtest.dic" 5 lines, 29 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 6 of 31 nodes; 25 (80%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 125 bytes

3 lines yanked

3 more lines

Press ENTER or type command to continue:call TestOne('4', '4')
"Xtest.aff" 45 lines, 559 characters written

"Xtest.dic" 8 lines, 59 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - word
Compressing word tree...
Compressed 2 of 91 nodes; 89 (97%) remaining

Compressed 0 of 15 nodes; 15 (100%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 520 bytes

12 lines yanked

12 more lines

Press ENTER or type command to continue:call TestOne('5', '5')
"Xtest.aff" 25 lines, 237 characters written

"Xtest.dic" 6 lines, 57 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 19 of 107 nodes; 88 (82%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 440 bytes

10 lines yanked

10 more lines

Press ENTER or type command to continue:call TestOne('6', '6')
"Xtest.aff" 23 lines, 211 characters written

"Xtest.dic" 6 lines, 53 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - mee
Compressing word tree...
Compressed 19 of 89 nodes; 70 (78%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 350 bytes

9 lines yanked

9 more lines

Press ENTER or type command to continue:call TestOne('7', '7')
"Xtest.aff" 26 lines, 338 characters written

"Xtest.dic" 6 lines, 67 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - mee
Compressing word tree...
Compressed 19 of 91 nodes; 72 (79%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 360 bytes

9 lines yanked

9 more lines

Press ENTER or type command to continue:"
1234
mee/391,111,9999
bar/17,61003,123
lead/2
tail/123
middle/77,1
7dicend

7good: meea1 meeaébar prebar barmeat prebarmeat  leadprebarlead tail leadtail  leadmiddletail
bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar
badend

test output:

test 1-1
# file: Xtest.utf-8.spl
Comment
deol
déôr
input
OK:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
1234
mee/391,111,9999
bar/17,61003,123
lead/2
tail/123
middle/77,1
7dicend

7good: meea1 meeaé bar prebar barmeat prebarmeat  leadprebarlead tail leadtail  leadmiddletail
bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar
badend

test output:

test 1-1
# file: Xtest.utf-8.spl
Comment
deol
déôr
input
OK:"
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^test output:/,$wq! test.out
"test.out" [New File] 270 lines, 3685 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test59 = test61; then \
#	  if diff test.out test59.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test59.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test59.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test72.failed test.ok test.out X* viminfo
cp test72.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test72.in
[?1h="test72.in" 146 lines, 2110 charactersTests for undo file.
Since this script is sourced we need to explicitly break changes up in
undo-able pieces.  Do that by setting 'undolevels'.

STARTTEST
:so small.vim
:"
:" Test 'undofile': first a simple one-line change.
:set nocompatible viminfo+=nviminfo visualbell
:set ul=100 undofile nomore
:e! Xtestfile
ggdGithis is one line^[:set ul=100
:s/one/ONE/
:set ul=100
:w
:bwipe!
:e Xtestfile
u:.w! test.out
:"
:" Test 'undofile', change in original file fails check
:set noundofile
:e! Xtestfile
:s/line/Line/:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for undo file./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 135 lines, 1913 characters written:set ff& cpo+=A
/ENDTEST:bwipe!
:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST

1111 -----
2222 -----

123456789
:so! Xdotest
:so small.vim
:"
:" Test 'undofile': first a simple one-line change.
:set nocompatible viminfo+=nviminfo visualbell
:set ul=100 undofile nomore
:e! Xtestfile
"Xtestfile" [New File]~~~~~~~~~~~~~~~~~
~~~
~~-- INSERT --this is one line:set ul=100
:s/one/ONE/
ONE
:set ul=100
:w
"Xtestfile" [New] 1L, 17C written:bwipe!
"test72.in" 146L, 2110C:bwipe!:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 1L, 17Cthis is ONE line~~~~~~~~~~~~~~~~~
~~~
~~1 change; before #2  0 seconds agoone
:.w! test.out
"test.out" [New] 1L, 17C written:"
:" Test 'undofile', change in original file fails check
:set noundofile
:e! Xtestfile
"Xtestfile" 1L, 17CONE
:s/line/Line/
L
:w
"Xtestfile" 1L, 17C written:set undofile
:bwipe!
"test72.in" 146L, 2110C:bwipe!:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 1L, 17Cthis is ONE Line~~~~~~~~~~~~~~~~~
~~~
~~:" TODO: this beeps
Already at oldest change:.w >>test.out
"test.out" 1L, 17C appended:"
:" Test 'undofile', add 10 lines, delete 6 lines, undo 3
:set undofile
--No lines in buffer---- INSERT --one
two
three
four
five
six
seven
eight
nine
ten:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100
:w
"Xtestfile" 4L, 17C written:bwipe!
"test72.in" 146L, 2110C:bwipe!
:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 4L, 17Conetwonineten~~~~~~~~~~~~~~
~~~
~~1 more line; before #7  0 seconds agoeight1 more line; before #6  0 seconds agoseven1 more line; before #5  0 seconds agosix:w >>test.out
"test.out" 7L, 33C appended:"
:" Test that reading the undofiles when setting undofile works
:set noundofile ul=0
-- INSERT --six
us1 line less; before #8  0 seconds ago
~:e! Xtestfile
"Xtestfile" 4L, 17Cnine
ten~~~:set undofile ul=100
1 more line; before #7  0 seconds agoeight1 more line; before #6  0 seconds agoseven1 more line; before #5  0 seconds agosix1 more line; before #4  0 seconds agofive1 more line; before #3  0 seconds agofour1 more line; before #2  0 seconds agothree:w >>test.out
"test.out" 10L, 49C appended:" And now with encryption, cryptmethod=zip
:e! Xtestfile
"Xtestfile" 4L, 17Cninten~~~~~~:set undofile cm=zip
~~~--No lines in buffer---- INSERT --monday
tuesday
wednesday
thursday
friday:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100
:X
Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

Enter same key again: ******

monday
friday
~:w!
"Xtestfile" [crypted] 2L, 14C written:bwipe!
"test72.in" 146L, 2110C:bwipe!
:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 
Need encryption key for "Xtestfile"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtestfile" [crypted] 2L, 14Cmonday
friday
~~~~~~~~~~~~~~~~
~~~
~~"Xtestfile" [crypted] 2L, 14C:set key=
1 more line; before #11  1 seconds agothursday1 more line; before #10  1 seconds agowednesday:w >>test.out
"test.out" 4L, 33C appended:"
:"
:" With encryption, cryptmethod=blowfish
:e! Xtestfile
"Xtestfile" Need encryption key for "Xtestfile"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: *******

~
~~"Xtestfile" [noeol][crypted] 1L, 14C:set undofile cm=blowfish ff&
--No lines in buffer---- INSERT --jan
feb
mar
apr
jun:set ul=100

-- INSERT --foo mar:set ul=100

~:set ul=100
-- INSERT --bar apr:set ul=100
:X
Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

Enter same key again: ******

jan
feb
bar apr:w!
"Xtestfile" [blowfish] 4L, 20C written:bwipe!
"test72.in" 146L, 2110C:bwipe!
:e Xtestfile
foo2ba
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 
Need encryption key for "Xtestfile"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtestfile" [blowfish] 4L, 20Cjan
feb
bar apr
jun~~~~~~~~~~~~~~
~~~
~~"Xtestfile" [blowfish] 4L, 20C:set key=
/bar
:.w >>test.out
"test.out" 1L, 8C appended1 change; before #15  1 seconds agoap:.w >>test.out
"test.out" 1L, 4C appended1 more line; before #14  1 seconds agofoo mar:.w >>test.out
"test.out" 1L, 8C appended1 change; before #13  1 seconds agomar:.w >>test.out
"test.out" 1L, 4C appended:"
:" With encryption, cryptmethod=blowfish2
:e! Xtestfile
"Xtestfile" Need encryption key for "Xtestfile"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: *******

~
~~~"Xtestfile" [noeol][blowfish] 1L, 20C:set undofile cm=blowfish2 ff&
--No lines in buffer---- INSERT --jan
feb
mar
apr
jun:set ul=100

-- INSERT --foo mar:set ul=100

~:set ul=100
-- INSERT --bar apr:set ul=100
:X
Enter encryption key: *******

Enter same key again: *******

jan
feb:w!
"Xtestfile" [blowfish2] 4L, 20C written:bwipe!
"test72.in" 146L, 2110C:bwipe!
:e Xtestfile
foo2ba
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 
Need encryption key for "Xtestfile"

Enter encryption key: *******

"Xtestfile" [blowfish2] 4L, 20Cjan
feb
bar ap
jun~~~~~~~~~~~~~~
~~~
~~"Xtestfile" [blowfish2] 4L, 20C:set key=
/bar
:.w >>test.out
"test.out" 1L, 8C appended1 change; before #19  0 seconds agoap:.w >>test.out
"test.out" 1L, 4C appended1 more line; before #18  0 seconds agofoo mar:.w >>test.out
"test.out" 1L, 8C appended1 change; before #17  0 seconds agomar:.w >>test.out
"test.out" 1L, 4C appended:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")

:  : call rename("_un_Xtestfile", "Xtestundo")

:  :else

:  : call rename(".Xtestfile.un~", "Xtestundo")

:  :endif
jan
feb
mar
apr:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test72 = test61; then \
#	  if diff test.out test72.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test72.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test72.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test78.failed test.ok test.out X* viminfo
cp test78.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test78.in
[?1h="test78.in" 46 lines, 1464 charactersInserts 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 viminfo+=nviminfo
:e! Xtest
ggdG
:let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01223456789abcdefghijklmnoparstuvwxyz0123456789"
: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', ''):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Inserts 10000 lines with text to fill the swap file with two levels of pointer/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 37 lines, 1208 characters written:set ff& cpo+=A
/ENDTEST: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 linnecount = linedollar | endif
:let i = 1
:while i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call appendd(line('$'), i . ' differs') | exe 'wincmd w' | endif | let i += 1 | endwhile
:q!
:call append(line('$'), 'recovery end')
:w! test.out
:qa!
ENDTEST


:so! Xdotest
:so small.vim
:set nocp fileformat=unix undolevels=-1 viminfo+=nviminfo
:e! Xtest
"Xtest" [New File]~~~~~~~~~~~~~~~~~~~~~
~:let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01

23456789abcdefghijklmnoparstuvwxyz0123456789"
:let i = 1
:let linecount = 10000
:while i <= linecount | call append(i - 1, i . text) | let i += 1 | endwhile
9990    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9991    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9992    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9993    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9994    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9995    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9996    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9997    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9998    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9999    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
10000   abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789:preserve
File preserved:" get the name of the swap file
:redir => swapname
:swapname
.Xtest.swp:redir END
:let swapname = substitute(swapname, '[[:blank:][:cntrl:]]*\(.\{-}\)[[:blank:][

:cntrl:]]*$', '\1', '')
9990    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899a
:" make a copy of the swap file in Xswap
:set bin
:exe 'sp ' . swapname
".Xtest.swp"[noeol] 611L, 1224704Cb0VIM 8.0^@^@^@^@^P^@^@^@^@^@^@^@^@^@^@2h^@^@buildd^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@bm-wb-03^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@/<<PKGBUILDDIR>>/src/vim-basic/testtdir/Xtest^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^.Xtest.swp                                                                      799a
999899a
999999a
1000099a~
Xtest [+]                                                                       :w! Xswap
"Xswap" [New][noeol] 611L, 1224704C written:echo swapname
.Xtest.sw:set nobin
:new
~
~
~
~
~
~
[No Name]                                                                       b0VIM 8.0^@^@^@^@^P^@^@^@^@^@^@^@^@^@^@2h^@^@buildd^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@bm-wb-03^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@/<<PKGBUILDDIR>>/src/vim-basic/testtdir/Xtest^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^.Xtest.swp                                                                      9999    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
10000   abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789

~
Xtest [+]                                                                       :only!
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:bwipe! Xtest
:call rename('Xswap', swapname)
:recover Xtest
Using swap file ".Xtest.swp"

Original file "/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtest"

"/<<PKGBUILDDIR>>/src/vim-basic/testdir/Xtest" [New File]Recovery completed. You should check if everything is OK.

(You might want to write out this file under another name

and run diff with the original file to check for changes)

You may want to delete the .swp file now.



Press ENTER or type command to continue:call delete(swapname)
1abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
2abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
3abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
4abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
5abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
6abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
7abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
8abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
10      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
11      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
12      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@:new
~~~~~~~~~~
[No Name]                                                                       199a
299a
399a
4 99a
5 99a
Xtest [+]                                                                       :call append(0, 'recovery start')
recovery start[+]:wincmd w
[No Name] [+]                                                                   Xtest [+]                                                                       :let linedollar = line('$')
:if linedollar < linecount | exe 'wincmd w' | call append(line('$'), "expected 

" . linecount . " lines but found only " . linedollar) | exe 'wincmd w' | let li

necount = linedollar | endif
recovery start:let i = 1
:while i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call appen

d(line('$'), i . ' differs') | exe 'wincmd w' | endif | let i += 1 | endwhile
recovery start:q!
~~~~~~~~~~~~:call append(line('$'), 'recovery end')
recovery end:w! test.out
"test.out" [New] 3L, 29C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test78 = test61; then \
#	  if diff test.out test78.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test78.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test78.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/os_unix.o os_unix.c
rm -rf X* test.ok viminfo
rm -rf test83.failed test.ok test.out X* viminfo
cp test83.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test83.in
[?1h="test83.in" 76 lines, 1273 charactersTests for tag search with !_TAG_FILE_ENCODING.

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
:/^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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for tag search with !_TAG_FILE_ENCODING./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 58 lines, 1021 characters written:set ff& cpo+=A
/ENDTEST: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
:so! Xdotest
:so mbyte.vim
:set enc=utf8
: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:if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"

:  : e! test.ok

:  : w! test.out

:  : qa!

:  :endif
:tag abc50
:if v:errmsg =~ 'E426:' || getline('.') != 'ABC'
: close
: put ='case3: failed'::/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt
"Xtags1.txt" [New File] 2 lines, 35 characters written:/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt
"Xtags2.txt" [New File] 2 lines, 25 characters written:/^text for tags3$/,/^text for tags3$/+1w! Xtags3.txt
"Xtags3.txt" [New File] 2 lines, 25 characters written:/^tags1$/+1,/^tags1-end$/-1w! Xtags1
"Xtags1" [New File] 2 lines, 81 characters written:Tests for tag search with !_TAG_FILE_ENCODING.

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
:/^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~~~~~~~~~
~~~~~
~~
~~
~~~~
--No lines in buffer--:::call setline('.', 'Results of test83')
Results of test83
::" case1:
:new
[No Name]                                                                       Results of test83test83.in [+]                                                                   :set tags=Xtags1
:let v:errmsg = ''
:tag abcdefghijklmnopqrs
"Xtags1.txt" 2 lines, 35 characterstext for tags1
abcdefghijklmnopqrsXtags1.txt:if v:errmsg =~ 'E426:' || getline('.') != 'abcdefghijklmnopqrs'

:  : close

:  : put ='case1: failed'

:  :else

:  : close

:  : put ='case1: ok'

:  :endif
Results of test83
case1: ok
~
~
~
~~~~::" case2:
:new
~[No Name]                                                                       Results of test83
case1: oktest83.in [+]                                                                   :set tags=test83-tags2
:let v:errmsg = ''
:tag /.BC
"Xtags2.txt" 2 lines, 25 characterstext for tags2
ABCXtags2.txt:if v:errmsg =~ 'E426:' || getline('.') != 'ABC'

:  : close

:  : put ='case2: failed'

:  :else

:  : close

:  : put ='case2: ok'

:  :endif
Results of test83
case1: ok
case2: ok
~
~
~~~~~::" case3:
:new
~~[No Name]                                                                       case1: ok
case2: oktest83.in [+]                                                                   :set tags=test83-tags3
:let v:errmsg = ''
:tag abc50
"Xtags3.txt" 2 lines, 25 characterstext for tags3
ABCXtags3.txt:if v:errmsg =~ 'E426:' || getline('.') != 'ABC'

:  : close

:  : put ='case3: failed'

:  :else

:  : close

:  : put ='case3: ok'

:  :endif
Results of test83
case1: ok
case2: ok
case3: ok
~
~~~~~:close
E37: No write since last change (add ! to override)::wq! test.out
"test.out" [New File] 4 lines, 48 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test83 = test61; then \
#	  if diff test.out test83.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test83.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test83.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test89.failed test.ok test.out X* viminfo
cp test89.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test89.in
[?1h="test89.in" 71 lines, 1514 characters- Some tests for setting 'number' and 'relativenumber'
  This is not all that useful now that the options are no longer reset when
  setting the other.
- Some tests for findfile() function

STARTTEST
:so small.vim
:set hidden nocp nu rnu viminfo+=nviminfo
:redir @a | set nu? rnu? | redir END
:e! xx
:redir @b | set nu? rnu? | redir END
:e! #
:$put ='results:'
:$put a
:$put b
:"
:set nonu nornu
:setglobal nu
:setlocal rnu
:redir @c | setglobal nu? | redir END
:set nonu nornu
:setglobal rnu
:setlocal nu:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
- Some tests for setting 'number' and 'relativenumber'/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 63 lines, 1305 characters written:set ff& cpo+=A
/ENDTEST:$put =':set MUST reset the other global value'
:$put g
:$put h
:"
:let cwd=getcwd()
:cd ..
:" Tests may be run from a shadow directory, so an extra cd needs to be done to
:" get above src/
:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
:$put =''
:$put ='Testing findfile'
:$put =''
:set ssl
:$put =findfile('test19.in','src/test*')
:exe "cd" cwd
:cd ..
:$put =findfile('test19.in','test*')
:$put =findfile('test19.in','testdir')
:exe "cd" cwd
:/^results/,$w! test.out
:q!
ENDTEST


:so! Xdotest
:so small.vim
:set hidden nocp nu rnu viminfo+=nviminfo
 21 :$put g 20 :$put h
 19 :" 18 :let cwd=getcwd()
 17 :cd .. 16 :" Tests may be run from a shadow directory, so an extra cd needs to be donee     to 15 :" get above src/
 14 :if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
 13 :$put =''
 12 :$put ='Testing findfile'
 11 :$put =''
 10 :set ssl
  9 :$put =findfile('test19.in','src/test*')
  8 :exe "cd" cwd
  7 :cd ..
  6 :$put =findfile('test19.in','test*')
  5 :$put =findfile('test19.in','testdir')
  4 :exe "cd" cwd
  3 :/^results/,$w! test.out
  2 :q!
  1 ENDTEST
71  :redir @a | set nu? rnu? | redir END
  number

  relativenumber

Press ENTER or type command to continue:e! xx
"xx" [New File]1   
~~~~~~~~~~~~~~~~~~~~~~:redir @b | set nu? rnu? | redir END
  number

  relativenumber

Press ENTER or type command to continue:e! #
"test89.in" line 71 of 71 --100%-- col 1 21 :$put g
 20 :$put h
 19 :"
 18 :let cwd=getcwd()
 17 :cd ..
 16 :" Tests may be run from a shadow directory, so an extra cd needs to be donee     to
 15 :" get above src/
 14 :if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
 13 :$put =''
 12 :$put ='Testing findfile'
 11 :$put =''
 10 :set ssl
  9 :$put =findfile('test19.in','src/test*')
  8 :exe "cd" cwd
  7 :cd ..
  6 :$put =findfile('test19.in','test*')
  5 :$put =findfile('test19.in','testdir')
  4 :exe "cd" cwd
  3 :/^results/,$w! test.out
  2 :q!
  1 ENDTEST
71  "test89.in" line 71 of 71 --100%-- col 1:$put ='results:'

1
 20
 19
 18
 17ee 
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
72  results:
:$put a
3 more lines


21
 20ee 
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3 
  2 
  1   number
75    relativenumber3 more lines:$put b
3 more lines


22
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3 
  2 
  1   number
78    relativenumber3 more lines:"
:set nonu nornu
:" get above src/:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif:$put ='':$put ='Testing findfile':$put ='':set ssl:$put =findfile('test19.in','src/test*'):exe "cd" cwd:cd ..:$put =findfile('test19.in','test*'):$put =findfile('test19.in','testdir'):exe "cd" cwd:/^results/,$w! test.ou:q!ENDTESTresults:  number  relativenumber  number  relativenumber:setglobal nu
:setlocal rnu
 22 :" get above src/
 21 :if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
 20 :$put =''
 19 :$put ='Testing findfile'
 18 :$put =''
 17 :set ssl
 16 :$put =findfile('test19.in','src/test*')
 15 :exe "cd" cwd
 14 :cd ..
 13 :$put =findfile('test19.in','test*')
 12 :$put =findfile('test19.in','testdir')
 11 :exe "cd" cwd
 10 :/^results/,$w! test.out
  9 :q!
  8 ENDTEST
  7 
  6 results:
  5 
  4   number
  3   relativenumber
  2 
  1   number
  0   relativenumber:redir @c | setglobal nu? | redir END
  number:set nonu nornu
:" get above src/:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif:$put ='':$put ='Testing findfile':$put ='':set ssl:$put =findfile('test19.in','src/test*'):exe "cd" cwd:cd ..:$put =findfile('test19.in','test*'):$put =findfile('test19.in','testdir'):exe "cd" cwd:/^results/,$w! test.ou:q!ENDTESTresults:  number  relativenumber  number  relativenumber:setglobal rnu
:setlocal nu
 56 :" get above src/
 57 :if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
 58 :$put =''
 59 :$put ='Testing findfile'
 60 :$put =''
 61 :set ssl
 62 :$put =findfile('test19.in','src/test*')
 63 :exe "cd" cwd
 64 :cd ..
 65 :$put =findfile('test19.in','test*')
 66 :$put =findfile('test19.in','testdir')
 67 :exe "cd" cwd
 68 :/^results/,$w! test.out
 69 :q!
 70 ENDTEST
 71 
 72 results:
 73 
 74   number
 75   relativenumber
 76 
 77   number
 78   relativenumber:redir @d | setglobal rnu? | redir END
  relativenumber:$put =':setlocal must NOT reset the other global value'

 79 :setlocal must NOT reset the other global value
:$put c


 80 
 81   number
:$put d


 82 
 83   relativenumber
:"
:set nonu nornu
:set ssl:$put =findfile('test19.in','src/test*'):exe "cd" cwd:cd ..:$put =findfile('test19.in','test*'):$put =findfile('test19.in','testdir'):exe "cd" cwd:/^results/,$w! test.ou:q!ENDTESTresults:  number  relativenumber  number  relativenumber:setlocal must NOT reset the other global value  number  relativenumber:setglobal nu
:setglobal rnu
:redir @e | setglobal nu? | redir END
  number:set nonu nornu
:setglobal rnu
:setglobal nu
:redir @f | setglobal rnu? | redir END
  relativenumber:$put =':setglobal MUST reset the other global value'

:setglobal MUST reset the other global value
:$put e


number
:$put f


relativenumber
:"
:set nonu nornu
:set nu
 66 :$put =findfile('test19.in','testdir')
 67 :exe "cd" cwd
 68 :/^results/,$w! test.out
 69 :q!
 70 ENDTEST
 71 
 72 results:
 73 
 74   number
 75   relativenumber
 76 
 77   number
 78   relativenumber
 79 :setlocal must NOT reset the other global value
 80 
 81   number
 82 
 83   relativenumber
 84 :setglobal MUST reset the other global value
 85 
 86   number
 87 
 88   relativenumber:set rnu
22
 21
 20
 1
 18
 17
 16
 15
 1
 13
 12
 11
 10
  
  8
  7
  6
  5
  
  3
  2
  1
88    :redir @g | setglobal nu? | redir END
  number:set nonu nornu
:$put =findfile('test19.in','testdir'):exe "cd" cwd:/^results/,$w! test.ou:q!ENDTESTresults:  number  relativenumber  number  relativenumber:setlocal must NOT reset the other global value  number  relativenumber:setglobal MUST reset the other global value  number  relativenumber:set rnu
 22 :$put =findfile('test19.in','testdir')
 21 :exe "cd" cwd
 20 :/^results/,$w! test.out
 19 :q!
 18 ENDTEST
 17 
 16 results:
 15 
 14   number
 13   relativenumber
 12 
 11   number
 10   relativenumber
  9 :setlocal must NOT reset the other global value
  8 
  7   number
  6 
  5   relativenumber
  4 :setglobal MUST reset the other global value
  3 
  2   number
  1 
  0   relativenumber:set nu
88    :redir @h | setglobal rnu? | redir END
  relativenumber:$put =':set MUST reset the other global value'

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
89  :set MUST reset the other global value
:$put g


2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2 
  1 
91    number
:$put h


2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2 
  1 
93    relativenumber
:"
:let cwd=getcwd()
:cd ..
/<<PKGBUILDDIR>>/src/vim-basic:" Tests may be run from a shadow directory, so an extra cd needs to be done to
:" get above src/
:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
/<<PKGBUILDDIR>>:$put =''

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
94  
:$put ='Testing findfile'

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
95  Testing findfile
:$put =''

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
96  
:set ssl
:$put =findfile('test19.in','src/test*')

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
97  src/testdir/test19.in
:exe "cd" cwd
/<<PKGBUILDDIR>>/src/vim-basic/testdir:cd ..
/<<PKGBUILDDIR>>/src/vim-basic:$put =findfile('test19.in','test*')

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
98  testdir/test19.in
:$put =findfile('test19.in','testdir')

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
99  testdir/test19.in
:exe "cd" cwd
/<<PKGBUILDDIR>>/src/vim-basic/testdir:/^results/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New] 28L, 356C written:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test89 = test61; then \
#	  if diff test.out test89.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test89.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test89.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_arglist.vim
[?1h="test_arglist.vim" 318 lines, 6653 characters

Executing Test_argadd()
"a" [New File]bababababd

Executing Test_argc()
"a" [New File]
Executing Test_argdelete()
"a" [New File]a" [New File]
"bb

Executing Test_argedit()
"a" [New File]ba

"c" [New File]
"x

"y" [New File]

Executing Test_argidx()
"a" [New File]cabc

Executing Test_arglist_autocmd()
"Xxx1" 1L, 15C
"Xxx21L, 15C1L, 15C
"Xxx1" line 1 of 1 --100%-- col 1 ((3) of 2)
"Xxx21 of 2)
3 buffers wiped out

Executing Test_arglistid()
"a" [New File]
Executing Test_argpos()
"a" [New File]d

"c" [New File]
"ba

"d" [New File]
"a

Executing Test_argument()
"d" [New File]cbafile] --No lines in buffer-- (1 of 4)
"c3

a b [c] d
"c" [New File]

"x" [New File]
"z

Executing Test_argv()
"a" [New file] --No lines in buffer--

Executing Test_zero_argadd()
"b" [New file] --No lines in buffer-- (2 of 4)
"aFbedited" [New File]
"a" [New File]test_arglist.res" [New File][New] 0L, 0C written

Executed 11 tests
"messages" [New File][New] 15L, 326C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_assert.vim
[?1h="test_assert.vim" 125 lines, 2880 characters

Executing Test_assert_equal()

Executing Test_assert_exception()

Executing Test_assert_fail_fails()

Executing Test_assert_false()

Executing Test_assert_inrange()

Executing Test_assert_notequal()

Executing Test_assert_true()

Executing Test_compare_fail()

Executing Test_match()

Executing Test_notmatch()

Executing Test_user_is_happy()


oooo$$$$$$$$$$$$oooo

oo$$$$$$$$$$$$$$$$$$$$$$$$o

oo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$oo$   $$ o$

     o $ ooo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o$$ $$ $$o$

  oo $ $ "$      o$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$o$$$o$$o$

  "$$$$$$o$     o$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$o    $$$$$$$$

    $$$$$$$    $$$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$

    $$$$$$$$$$$$$$$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$$$$$$  """$$$

     "$$$""""$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$

      $$$   o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$o

     o$$"   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o

     $$$    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" "$$$$$$ooooo$$$$o

    o$$$oooo$$$$$  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$   o$$$$$$$$$$$$$$$$$

    $$$$$$$$"$$$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     $$$$""""""""

   """"$$$$    "$$$$$$$$$$$$$$$$$$$$$$$$$$$$"      o$$$

"$$$o     """$$$$$$$$$$$$$$$$$$"$$"$$$

$$$o"$$""$$$$$$""""o$$$

$$$$oo$$$"

"$$$$o      o$$$$$$o"$$$$oo$$$$

"$$$$$oo     ""$$$$o$$$$$o   o$$$$""

""$$$$$oooo  "$$$o$$$$$$$$$"""

""$$$$$$$oo $$$$$$$$$$

""""$$$$$$$$$$$

$$$$$$$$$$$$

$$$$$$$$$$"

"$$$""""

Executing Test_wrong_error_type()
"test_assert.res" [New File][New] 0L, 0C written

Executed 12 tests
"messages" 15L, 326C30L, 734C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_autochdir.vim
[?1h="test_autochdir.vim" 17 lines, 332 characters

Executing Test_set_filename()
"samples/Xtest" [New] 0L, 0C written
"test_autochdir.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"30L, 734C34L, 806C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_backspace_opt.vim
[?1h="test_backspace_opt.vim" 59 lines, 1673 characters

Executing Test_backspace_option()
"test_backspace_opt.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"34L, 806C38L, 886C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_bufwintabinfo.vim
[?1h="test_bufwintabinfo.vim" 116 lines, 3459 characters

Executing Test_get_buf_options()

Executing Test_get_win_options()

Executing Test_getbufwintabinfo()
"Xtestfile1" [New File]212

Already only one window
"test_bufwintabinfo.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"38L, 886C44L, 1033C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_cdo.vim
[?1h="test_cdo.vim" 205 lines, 5116 characters

Executing Test_cdo()
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile1" 3L, 18C33L, 18C

(1 of 1): Line3
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2

(7 of 8): Line2
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile2" 3L, 18C

(5 of 8): Line2

(5 of 8): Line2

(1 of 1): Line2

Executing Test_ldo()
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile1" 3L, 18C33L, 18C

(1 of 1): Line3
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2

(7 of 8): Line2
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile2" 3L, 18C

(5 of 8): Line2

(5 of 8): Line2

(1 of 1): Line2
"test_cdo.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"44L, 1033Cgcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/freetype2 -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       version.c -o objects/version.o
49L, 1112C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_channel.vim
[?1h="test_channel.vim" 1528 lines, 43719 characters
"test_channel.res" [New File][New] 0L, 0C written

Executed 0 test
"messages"49L, 1112C52L, 1152C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_charsearch.vim
[?1h="test_charsearch.vim" 62 lines, 1475 characters

Executing Test_charsearch()

Executing Test_search_cmds()
"test_charsearch.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"52L, 1152C57L, 1253C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_cmdline.vim
[?1h="test_cmdline.vim" 191 lines, 5876 characters

Executing Test_complete_list():e test

test1.intest84.ok

test1.oktest84.out

test1.outtest85.in

test103.intest85.ok

test103.oktest85.out

test103.outtest86.in

test104.intest86.ok

test104.oktest86.out

test104.outtest87.in

test107.intest87.ok

test107.oktest87.out

test107.outtest88.in

test108.intest88.ok

test108.oktest88.out

test108.outtest89.in

test11.intest89.ok

test11.oktest89.out

test11.outtest9.in

test12.intest9.ok

test12.oktest9.out

test12.outtest90.in

test14.intest90.ok

test14.oktest90.out

test14.outtest91.in

test15.intest91.ok

test15.oktest91.out

test15.outtest92.in

test17.intest92.ok

test17.oktest92.out

test17.outtest93.in

test17a.intest93.ok

test19.intest93.out

test19.oktest94.in

test19.outtest94.ok

test20.intest94.out

test20.oktest95.in

test20.outtest95.ok

test22.intest95.out

test22.oktest97.in

test22.outtest97.ok

test23.intest97.out

test23.oktest98.in

test23.outtest98.ok

test24.intest98.out

test24.oktest99.in

test24.outtest99.ok

test25.intest99.out

test25.oktest_alot.vim

test25.outtest_alot_latin.vim

test26.intest_alot_utf8.vim

test26.oktest_arglist.res

test26.outtest_arglist.vim

test28.intest_assert.res

test28.oktest_assert.vim

test28.outtest_assign.vim

test29.intest_autochdir.res

test29.oktest_autochdir.vim

test29.outtest_autocmd.vim

test3.intest_autocmd_option.in

test3.oktest_autocmd_option.ok

test3.outtest_autocmd_option.out

test30.intest_autoformat_join.in

test30.oktest_autoformat_join.ok

test30.outtest_autoformat_join.out

test31.intest_backspace_opt.res

test31.oktest_backspace_opt.vim

test31.outtest_breakindent.in

test32.intest_breakindent.ok

test32.oktest_breakindent.out

test32.outtest_bufwintabinfo.res

test33.intest_bufwintabinfo.vim

test33.oktest_cdo.res

test33.outtest_cdo.vim

test34.intest_changelist.in

test34.oktest_changelist.ok

test34.outtest_changelist.out

test36.intest_channel.py

test36.oktest_channel.res

test36.outtest_channel.vim

test37.intest_channel_pipe.py

test37.oktest_charsearch.res

test37.outtest_charsearch.vim

test38.intest_close_count.in

test38.oktest_close_count.ok

test38.outtest_close_count.out

test39.intest_cmdline.vim

test39.oktest_command_count.vim

test39.outtest_comparators.in

test4.intest_comparators.ok

test4.oktest_comparators.out

test4.outtest_crypt.vim

test40.intest_cscope.vim

test40.oktest_cursor_func.vim

test40.outtest_delete.vim

test41.intest_diffmode.vim

test41.oktest_digraph.vim

test41.outtest_erasebackword.in

test42.intest_erasebackword.ok

test42.oktest_erasebackword.out

test42.outtest_eval.in

test43.intest_eval.ok

test43.oktest_eval.out

test43.outtest_eval_func.vim

test44.intest_ex_undo.vim

test44.oktest_execute_func.vim

test44.outtest_expand.vim

test45.intest_expand_dllpath.vim

test45.oktest_expr.vim

test45.outtest_expr_utf8.vim

test48.intest_farsi.vim

test48.oktest_feedkeys.vim

test48.outtest_file_perm.vim

test49.intest_filter_cmd.vim

test49.oktest_filter_map.vim

test49.outtest_fixeol.in

test49.vimtest_fixeol.ok

test5.intest_fixeol.out

test5.oktest_fnameescape.vim

test5.outtest_fnamemodify.vim

test50.intest_getcwd.in

test50.oktest_getcwd.ok

test51.intest_getcwd.out

test51.oktest_gf.vim

test51.outtest_glob2regpat.vim

test52.intest_gn.vim

test52.oktest_goto.vim

test52.outtest_gui.vim

test53.intest_hardcopy.vim

test53.oktest_help_tagjump.vim

test53.outtest_history.vim

test54.intest_hlsearch.vim

test54.oktest_increment.vim

test54.outtest_increment_dbcs.vim

test55.intest_insertcount.in

test55.oktest_insertcount.ok

test55.outtest_insertcount.out

test56.intest_job_fails.vim

test56.oktest_join.vim

test56.outtest_json.vim

test57.intest_jumps.vim

test57.oktest_lambda.vim

test57.outtest_langmap.vim

test58.intest_largefile.vim

test58.oktest_lispwords.vim

test58.outtest_listchars.in

test59.intest_listchars.ok

test59.oktest_listchars.out

test59.outtest_listlbr.in

test60.intest_listlbr.ok

test60.oktest_listlbr.out

test60.outtest_listlbr_utf8.in

test60.vimtest_listlbr_utf8.ok

test64.intest_listlbr_utf8.out

test64.oktest_man.vim

test64.outtest_mapping.vim

test65.intest_marks.vim

test65.oktest_match.vim

test65.outtest_matchadd_conceal.vim

test66.intest_matchadd_conceal_utf8.vim

test66.oktest_menu.vim

test66.outtest_messages.vim

test67.intest_nested_function.vim

test67.oktest_netbeans.py

test67.outtest_netbeans.vim

test68.intest_normal.vim

test68.oktest_options.vim

test68.outtest_packadd.vim

test69.intest_partial.vim

test69.oktest_perl.vim

test69.outtest_popup.vim

test7.intest_quickfix.vim

test7.oktest_regexp_latin.vim

test7.outtest_regexp_utf8.vim

test70.intest_reltime.vim

test70.oktest_ruby.vim

test70.outtest_search.vim

test72.intest_search_mbyte.in

test72.oktest_search_mbyte.ok

test72.outtest_search_mbyte.out

test73.intest_searchpos.vim

test73.oktest_set.vim

test73.outtest_signs.vim

test75.intest_smartindent.vim

test75.oktest_sort.vim

test75.outtest_source_utf8.vim

test76.intest_startup.vim

test76.oktest_startup_utf8.vim

test76.outtest_stat.vim

test77.intest_statusline.vim

test77.oktest_substitute.vim

test77.outtest_syn_attr.vim

test77a.intest_syntax.vim

test77a.oktest_tabline.vim

test78.intest_tabpage.vim

test78.oktest_tagcase.vim

test78.outtest_tagjump.vim

test79.intest_textobjects.vim

test79.oktest_timers.vim

test79.outtest_true_false.vim

test8.intest_undo.vim

test8.oktest_unlet.vim

test8.outtest_usercommands.vim

test80.intest_utf8.in

test80.oktest_utf8.ok

test80.outtest_utf8.out

test82.intest_viminfo.vim

test82.oktest_viml.vim

test82.outtest_visual.vim

test83-tags2test_window_cmd.vim

test83-tags3test_window_id.vim

test83.intest_wordcount.in

test83.oktest_wordcount.ok

test83.outtest_wordcount.out

test84.intest_writefile.vim

:e test
"test" [New File]

Executing Test_complete_tab():e Xtest...file
"Xtestfile" 1L, 9C

Executing Test_complete_wildmenu():e Xtest...file1...

Xtestfile1  Xtestfile2  
Xtestfile1                                                        :e Xtest...Xtestfile1
Xtestfile1file1...Xtestfile1Xtestfile22:e Xtestfile2"Xtestfile2" 1L, 10C
Executing Test_expand_star_star():find **/fileXname...a/b/fileXname
"a/b/fileXname" 1L, 9C
"Xtestfile2" [New File]

Executing Test_getcompletion():cscope find 

a  c  d  e  f  g  i  s  t

:cscope find :sign list 

Testing

:sign list "test_cmdline.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"57L, 1253C65L, 1455C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_crypt.vim
[?1h="test_crypt.vim" 83 lines, 2590 characters

Executing Test_crypt_blowfish()
"Xtest.txt" [New File]:X

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

Enter same key again: ******
link.sh: $LINK_AS_NEEDED set to 'yes': invoking linker directly.

"Xtest.txt"   gcc   -L. -Wl,-z,relro -Wl,-z,now -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-E  -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed 	-o vim objects/arabic.o objects/buffer.o objects/blowfish.o objects/charset.o objects/crypt.o objects/crypt_zip.o objects/dict.o objects/diff.o objects/digraph.o objects/edit.o objects/eval.o objects/evalfunc.o objects/ex_cmds.o objects/ex_cmds2.o objects/ex_docmd.o objects/ex_eval.o objects/ex_getln.o objects/farsi.o objects/fileio.o objects/fold.o objects/getchar.o objects/hardcopy.o objects/hashtab.o  objects/if_cscope.o objects/if_xcmdsrv.o objects/list.o objects/mark.o objects/memline.o objects/menu.o objects/misc1.o objects/misc2.o objects/move.o objects/mbyte.o objects/normal.o objects/ops.o objects/option.o objects/os_unix.o objects/pathdef.o objects/popupmnu.o objects/quickfix.o objects/regexp.o objects/screen.o objects/search.o objects/sha256.o objects/spell.o objects/spellfile.o objects/syntax.o objects/tag.o objects/term.o objects/ui.o objects/undo.o objects/userfunc.o objects/version.o objects/window.o objects/gui.o objects/gui_gtk.o objects/gui_gtk_x11.o objects/pty.o objects/gui_gtk_f.o objects/gui_beval.o objects/gui_gtk_gresources.o objects/if_lua.o  objects/if_perl.o objects/if_perlsfio.o  objects/if_python3.o objects/if_tcl.o objects/if_ruby.o   objects/netbeans.o objects/channel.o  objects/json.o objects/main.o objects/memfile.o objects/message.o   -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE  -lm -ltinfo -lnsl  -lselinux  -lacl -lattr -lgpm -ldl  -L/usr/lib -llua5.2 -Wl,-E  -fstack-protector-strong -L/usr/local/lib  -L/usr/lib/arm-linux-gnueabihf/perl/5.24/CORE -lperl -ldl -lm -lpthread -lcrypt  -L/usr/lib/python3.5/config-3.5m-arm-linux-gnueabihf -lpython3.5m -lpthread -ldl -lutil -lm -L/usr/lib/arm-linux-gnueabihf -ltcl8.6 -ldl -lz -lpthread -lieee -lm -lruby-2.3 -lpthread -lgmp -ldl -lcrypt -lm     
[New][blowfish] 3L, 98C written
:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [blowfish] 3L, 98C

Executing Test_crypt_blowfish2()
"Xtest.txt" [New File]:X
Enter encryption key: ******
Enter same key again: ******

"Xtest.txt" [New][blowfish2] 3L, 98C written
:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Enter encryption key: ******

"Xtest.txt" [blowfish2] 3L, 98C

Executing Test_crypt_zip()
"Xtest.txt" [New File]:X

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

Enter same key again: ******

"Xtest.txt" [New][crypted] 3L, 98C written
:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [crypted] 3L, 98C

Executing Test_head_only_2()
"Xtest.txt" [New File][New] 1L, 16C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [readonly] 1L, 16C

Executing Test_head_only_3()
"Xtest.txt" [New File][New] 1L, 16C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Enter encryption key: ******

"Xtest.txt" [readonly] 1L, 16C

Executing Test_uncrypt_blowfish()
"Xtest.txt" [New File][converted][New][noeol] 1L, 80C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [blowfish] 2L, 27C

Executing Test_uncrypt_blowfish2()
"Xtest.txt" [New File][converted][New][noeol] 1L, 103C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Enter encryption key: *******

"Xtest.txt" [blowfish2] 2L, 44C

Executing Test_uncrypt_zip()
"Xtest.txt" [New File][converted][New][noeol] 1L, 45C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [converted][crypted] 2L, 26C"test_crypt.res" [New File][converted][New] 0L, 0C written
Executed 8 tests
"messages"65L, 1455C76L, 1742C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_cscope.vim
[?1h="test_cscope.vim" 279 lines, 10568 characters
"test_cscope.res" [New File][New] 0L, 0C written

Executed 0 test
"messages"76L, 1742C79L, 1781C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_diffmode.vim
[?1h="test_diffmode.vim" 220 lines, 4746 characters

Executing Test_diff_fold_sync()

Executing Test_diffget_diffput()

Executing Test_diffoff()  -------------------------------------|
  -------------------------------------|
  Two|
  Three|||||||||||||||||||  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    
[No Name] [+]                             One                                                                             Two  Three                                    ~~~~~~~~~~~~~~~~~~[No Name] [+]                           Two                                    
Three                                  
~                                      
~                                      
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  OneTwoThree~~~~~~~~~~~~~~~~~~

Executing Test_filler_lines()

7 more lines

10 more lines

Executing Test_vert_split()
"Xtest" [New] 5L, 25C written"Xtest2" [New] 6L, 29C written

"Nop" [Modified][Not edited] line 4 of 6 --66%-- col 3"Xtest" 5L, 25C2" 6L, 29Clink.sh: Linked fine
make[1]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-gtk'
[ yes != "yes" ] || flock debian /usr/bin/make -j1 -C src/vim-gtk test

"test_diffmode.vim" 220L, 4746Cres" [New File][New] 0L, 0C written

Executed 5 tests
"messages"79L, 1781C87L, 1971C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_digraph.vim
[?1h="test_digraph.vim" 461 lines, 14928 characters

Executing Test_digraph_cmndline()
Executing T

Executing Test_digraphs()
Executing Test_digraphs_option()
Executing Test_digraphs_output()

Executing Test_loadkeymap()"test_digraph.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"87L, 1971C95L, 2166C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_farsi.vim
[?1h="test_farsi.vim" 84 lines, 2881 characters

Executed 2 tests
"messages"[converted] 95L, 2166C[converted] 100L, 2262C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_fnameescape.vim
[?1h="test_fnameescape.vim" 21 lines, 467 characters

Executing Test_fnameescape()
"Xspa ce"[New] 21L, 467C written
"Xemark![New] 21L, 467C written
"test_fnameescape.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"100L, 2262C104L, 2335C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_gf.vim
[?1h="test_gf.vim" 33 lines, 1138 characters

Executing Test_gf_url()
"test_gf.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"104L, 2335C108L, 2394C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_gn.vim
[?1h="test_gn.vim" 93 lines, 2821 characters

Executing Test_gn_command()/[u]niquepattern/s
/a:0\@!\zs\d\+
"test_gn.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"108L, 2394C112L, 2457C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_gui.vim
[?1h="test_gui.vim" 36 lines, 838 characters
"test_gui.res" [New File]gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/pathdef.o auto/pathdef.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_eval.o ex_eval.c
[New] 0L, 0C written

Executed 0 test
"messages"112L, 2457C115L, 2493C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_hardcopy.vim
[?1h="test_hardcopy.vim" 62 lines, 2001 characters

Executing Test_printheader_parsing()

Executing Test_printmbfont_parsing()

Executing Test_printoptions_parsing()

Executing Test_with_syntax()Printing page 1 (0%)Printed: test_hardcopy.vim
"test_hardcopy.res" [New File][New] 0L, 0C written

Executed 4 tests
"messages"115L, 2493C122L, 2676C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_history.vim
[?1h="test_history.vim" 65 lines, 1978 characters

Executing Test_History()

"test_history.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"122L, 2676C126L, 2741C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_hlsearch.vim
[?1h="test_hlsearch.vim" 34 lines, 1013 characters

Executing Test_hlsearch()/aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
~
[No Name] [+]                                                                   " Test for v:hlsearch

function! Test_hlsearch()
  new
  call setline(1, repeat(['aaa'], 10))
  set hlsearch nolazyredraw
  let r=[]
  " redraw is needed to make hlsearch highlight the matches
  exe "normal! /aaa\<CR>" | redraw
  let r1 = screenattr(1, 1)
test_hlsearch.vim                                                               aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaa


/aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaa//aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaa//aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaa


"test_hlsearch.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"126L, 2741C130L, 2808C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_increment.vim
[?1h="test_increment.vim" 760 lines, 19011 characters

Executing Test_normal_increment_01()
"dummy" [New File]
Executing Test_normal_increment_02()
"dummy" [New File]
Executing Test_normal_increment_03()
"dummy" [New File]
Executing Test_visual_increment_01()
"dummy" [New File]
Executing Test_visual_increment_02()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_03()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_04()
"dummy" [New File]
Executing Test_visual_increment_05()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_06()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_07()
"dummy" [New File]5 lines changed
Executing Test_visual_increment_08()
"dummy" [New File]
Executing Test_visual_increment_09()
"dummy" [New File]
Executing Test_visual_increment_10()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_11()
"dummy" [New File]3 lines changed
Executing Test_visual_increment_12()
"dummy" [New File]3 lines changed
Executing Test_visual_increment_13()
"dummy" [New File]3 lines changed
Executing Test_visual_increment_14()
"dummy" [New File]
Executing Test_visual_increment_15()
"dummy" [New File]
Executing Test_visual_increment_16()
"dummy" [New File]3 lines changed
Executing Test_visual_increment_17()
"dummy" [New File]
Executing Test_visual_increment_18()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_19()
"dummy" [New File]
Executing Test_visual_increment_20()
"dummy" [New File]
Executing Test_visual_increment_21()
"dummy" [New File]
Executing Test_visual_increment_22()
"dummy" [New File]
Executing Test_visual_increment_23()
"dummy" [New File]
Executing Test_visual_increment_24()
"dummy" [New File]
Executing Test_visual_increment_25()
"dummy" [New File]
Executing Test_visual_increment_26()
"dummy" [New File]
Executing Test_visual_increment_27()
"dummy" [New File]
Executing Test_visual_increment_28()
"dummy" [New File]
Executing Test_visual_increment_29()
"dummy" [New File]
Executing Test_visual_increment_30()
"dummy" [New File]
Executing Test_visual_increment_31()
"dummy" [New File]
Executing Test_visual_increment_32()
"dummy" [New File]_31" [New File]

Executing Test_visual_increment_33()
"dummy" [New File]
Executing Test_visual_increment_34()
"dummy" [New File]
Executing Test_visual_increment_35()
"dummy" [New File]
Executing Test_visual_increment_36()
"dummy" [New File]
Executing Test_visual_increment_37()
"dummy" [New File]
Executing Test_visual_increment_38()
"dummy" [New File]"test_increment.res" [New File][New] 0L, 0C written

Executed 41 tests
"messages" 130L, 2808C174L, 4369C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_increment_dbcs.vim
[?1h="test_increment_dbcs.vim" 30 lines, 604 characters

Executing Test_increment_dbcs_1()
"test_increment_dbcs.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"[converted] 174L, 4369C[converted] 178L, 4450C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_job_fails.vim
[?1h="test_job_fails.vim" 19 lines, 598 characters

Executing Test_job_start_fails()
"test_job_fails.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"178L, 4450C182L, 4525C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_json.vim
[?1h="test_json.vim" 281 lines, 10366 characters

Executing Test_js_decode()

Executing Test_js_encode()

Executing Test_json_decode()

Executing Test_json_encode()

"test_json.res" [New File][New] 0L, 0C written

Executed 4 tests
"messages"182L, 4525C189L, 4675C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_langmap.vim
[?1h="test_langmap.vim" 28 lines, 628 characters

Executing Test_langmap()
"test_langmap.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"189L, 4675Cgcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/gui_gtk_x11.o gui_gtk_x11.c
193L, 4740C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_man.vim
[?1h="test_man.vim" 60 lines, 1358 characters

Executing Test_g_ft_man_open_mode()gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ex_getln.o ex_getln.c



Cannot find a 'vim'.

Executing Test_nomodifiable()


Cannot find a 'vim'.
"test_man.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"193L, 4740C198L, 4843C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_marks.vim
[?1h="test_marks.vim" 26 lines, 775 characters

Executing Test_Incr_Marks()

Executing Test_Restore_DelMark()1 more line; before #2  0 seconds ago
1 line less; after #2  0 seconds agomore line; before #2  0 seconds ago
"test_marks.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"198L, 4843C203L, 4943C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_matchadd_conceal.vim
[?1h="test_matchadd_conceal.vim" 266 lines, 8378 characters[?1l>Executing Test_clearmatches()# This is a Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       #ZThisZisZaZTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_default_conceal_char()# This is a Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       #+This+is+a+Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_matchadd_and_conceallevel_3()#ThisisaTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       #Thisisa Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_matchadd_repeat_conceal_with_syntax_off()TARGET_TARGETTARGET" Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term
endif

function! s:(lnum)t_ttsimple_matchadd()# This is a Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_simple_matchadd_and_conceal()#XThisXisXaXTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_syn_and_match_conceal()#ZThisZisZaZTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       #*This*is*a*Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_using_matchaddpos()#Pis a Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       "test.log" [New File][New] 8L, 363C written

Executed 8 tests

2 FAILED:
"messages" 203L, 4943C220L, 5654C written

VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_nested_function.vim
[?1h="test_nested_function.vim" 32 lines, 622 characters

Executing Test_nested_functions()
"test_nested_function.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"220L, 5654C224L, 5736C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_netbeans.vim
[?1h="test_netbeans.vim" 79 lines, 2100 characters
"test_netbeans.res" [New File][New] 0L, 0C written

Executed 0 test
"messages"224L, 5736C227L, 5777C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_normal.vim
[?1h="test_normal.vim" 2209 lines, 57349 characters

Executing Test_normal00_optrans()
Executing Test_normal01_keymodel()
4 lines yankedExecuting Test_normal02_selectmode()10 fewer lines
Executing Test_normal02_selectmode2():set im
:set noim

Executing Test_normal03_join()

Executing Test_normal04_filter():.!sed -e 's/^/|    /'
[?1l>one
[?1h=:.!sed -e 's/^/|    /'
:.!
:!echo one
[?1l>
[No write since last change]

one
[?1h=:.!!

Executing Test_normal05_formatexpr()

Executing Test_normal05_formatexpr_newbuf()
"another" [New File]
Executing Test_normal05_formatexpr_setopt()

Executing Test_normal06_formatprg():.,$!./Xsed_format.sh
7 lines filtered
Executing Test_normal07_internalfmt()
7 fewer lin
Executing Test_normal08_fold()

Executing Test_normal09_operatorfunc()

11 substitutions on 11 lines

Executing Test_normal10_expand()

Executing Test_normal11_showcmd()
Executing Test_normal12_nv_error()

Executing Test_normal13_help()
"help.txt" [readonly] 225L, 8437C

Executing Test_normal14_page()

Executing Test_normal14_page_eol()
Executing Test_normal15_z_scroll_vert()

Executing Test_normal16_z_scroll_hor()

Executing Test_normal17_z_scroll_hor2()

Executing Test_normal18_z_fold()

Executing Test_normal19_z_spell()
Word 'goood' added to ./Xspellfile.add
search hit BOTTOM, continuing at TOPWord 'goood' added to ./Xspellfile.add2 goood' added to ./Xspellfile.add/tmp/vMLVe92/9removed from /tmp/vMLVe92/9goood' added to /tmp/vMLVe92/9removed from /tmp/vMLVe92/9added to ./Xspellfile.addremoved from ./Xspellfile.add2 goood' added to ./Xspellfile.addremoved from ./Xspellfile.addgoood' added to ./Xspellfile2.add
Executing Test_normal20_exmode()

Executing Test_normal21_nv_hat()
"Xfoobar" [New File]ile2" [New File]
Executing Test_normal22_zet()

Executing Test_normal23_K()
"version8.txt" [readonly] 14510L, 546213Cline 1 of 14510 --0%-- col 1
:! man --pager=cat 'man'[?1l>
[No write since last change]

stdin not open for reading!

shell returned 2

[?1h=
Executing Test_normal24_rot13()

Executing Test_normal25_tag()
"help.txt" [readonly] 225L, 8437C
"change.txt" [readonly] 1829L, 74755C
"help.txt" [readonly] 225L, 8437C
"change.txt" [readonly] 1829L, 74755C
"help.txt" [readonly] 225L, 8437C
"insert.txt" [readonly] 2003L, 82815Cline 49 of 2003 --2%-- col 7-49

Executing Test_normal26_put()

Executing Test_normal27_bracket()

21 substitutions on 21 lines

Executing Test_normal28_parenthesis()

Executing Test_normal29_brace()
17 fewer lines4 fewer lines3
Executing Test_normal30_changecase()

Executing Test_normal31_r_cmd()
Executing Test_normal32_g_cmd1()
/x_foo?abc
Executing Test_normal33_g_cmd2()/[1-8]
search hit BOTTOM, continuing at TOP
9 substitutions on 9 linesblock of 3 lines yanked5
Executing Test_normal34_g_cmd3()

Executing Test_normal35_g_cmd4()

Executing Test_normal36_g_cmd5()

Executing Test_normal37_g_cmd6()
"1.txt" [New File]23

Executing Test_normal38_nvhome()

Executing Test_normal39_cw()
Executing Test_normal40_ctrl_bsl()
Executing Test_normal41_insert_reg()=a
=a
=a

Executing Test_normal42_halfpage()

Executing Test_normal43_textobject1()

Executing Test_normal44_textobjects2()

Executing Test_normal45_drop()

Executing Test_normal46_ignore()

Executing Test_normal47_autocmd()

Executing Test_normal47_visual_buf_wipe()

Executing Test_normal48_wincmd()

Executing Test_normal49_counts()

Executing Test_normal50_commandline()q:  :xxx
~
~
~
~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       :set im
:set noim
:.!sed -e 's/^/|    /'
:.!
:!echo one
:.!!
:
[Command Line]                                                                  :^M   

Executing Test_normal51_FileChangedRO()
"Xreadonly.log" 1L, 4C
Error detected while processing ...[9]..Test_normal51_FileChangedRO:
line    8:W10: Warning: Changing a readonly file
Executing Test_normal52_rl()3_digraph()

Executing Test_normal54_Ctrl_bsl()
"test_normal.res" [New File][New] 0L, 0C written

Executed 60 tests
"messages" 227L, 5777C294L, 8101C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_packadd.vim
[?1h="test_packadd.vim" 238 lines, 8288 characters

Executing Test_colorscheme()

Executing Test_colorscheme_completion():colorscheme ...one')
:ccolorscheme one')
:cacolorscheme one')
:calcolorscheme one')
:callcolorscheme one')
:call colorscheme one')acolorscheme one')dcolorscheme one')dcolorscheme one')(colorscheme one')lcolorscheme one')icolorscheme one'),colorscheme one') colorscheme one')'colorscheme one')
:colorscheme ...one...three')
:ccolorscheme three')
:cacolorscheme three')
:calcolorscheme three')
:callcolorscheme three')
:call colorscheme three')acolorscheme three')dcolorscheme three')dcolorscheme three')(colorscheme three')lcolorscheme three')icolorscheme three'),colorscheme three') colorscheme three')'colorscheme three')
:colorscheme ...one...three...wo')
:ccolorscheme two')
:cacolorscheme two')
:calcolorscheme two')
:callcolorscheme two')
:call colorscheme two')acolorscheme two')dcolorscheme two')dcolorscheme two')(colorscheme two')lcolorscheme two')icolorscheme two'),colorscheme two') colorscheme two')'colorscheme two')
:colorscheme ...one...three...wo...')
:ccolorscheme ')
:cacolorscheme ')
:calcolorscheme ')
:callcolorscheme ')
:call colorscheme ')acolorscheme ')dcolorscheme ')dcolorscheme ')(colorscheme ')lcolorscheme ')icolorscheme '),colorscheme ') colorscheme ')'colorscheme ')

Executing Test_helptags()

Executing Test_packadd()
"./Xdir/pack/mine/opt/mytest/plugin/test.vim" [New File][New] 1L, 24C writtenalso/loaded.vim" [New File][New] 1L, 29C writtenftdetect/test.vim" [New File[New] 1L, 26C written

Executing Test_packadd_completion():packadd ...pluginA')
:cpackadd pluginA')
:capackadd pluginA')
:calpackadd pluginA')
:callpackadd pluginA')
:call packadd pluginA')apackadd pluginA')dpackadd pluginA')dpackadd pluginA')(packadd pluginA')lpackadd pluginA')ipackadd pluginA'),packadd pluginA') packadd pluginA')'packadd pluginA')
:packadd ...pluginA...B')
:cpackadd pluginB')
:capackadd pluginB')
:calpackadd pluginB')
:callpackadd pluginB')
:call packadd pluginB')apackadd pluginB')dpackadd pluginB')dpackadd pluginB')(packadd pluginB')lpackadd pluginB')ipackadd pluginB'),packadd pluginB') packadd pluginB')'packadd pluginB')
:packadd ...pluginA...B...C')
:cpackadd pluginC')
:capackadd pluginC')
:calpackadd pluginC')
:callpackadd pluginC')
:call packadd pluginC')apackadd pluginC')dpackadd pluginC')dpackadd pluginC')(packadd pluginC')lpackadd pluginC')ipackadd pluginC'),packadd pluginC') packadd pluginC')'packadd pluginC')
:packadd ...pluginA...B...C...')
:cpackadd ')
:capackadd ')
:calpackadd ')
:callpackadd ')
:call packadd ')apackadd ')dpackadd ')dpackadd ')(packadd ')lpackadd ')ipackadd '),packadd ') packadd ')'packadd ')

Executing Test_packadd_noload()
"./Xdir/pack/mine/opt/mytest/plugin/test.vim" [New File][New] 1L, 24C written

Executing Test_packloadall()

Executing Test_runtime()
"test_packadd.res" [New File][New] 0L, 0C written

Executed 8 tests
"messages"294L, 8101C305L, 8384C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_perl.vim
[?1h="test_perl.vim" 123 lines, 3037 characters
"test_perl.res" [New File][New] 0L, 0C written

Executed 0 test
"messages"305L, 8384C308L, 8421C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_quickfix.vim
[?1h="test_quickfix.vim" 1594 lines, 44709 characters

Executing Test_Autocmd()
"F1" [New File]
(1 of 1): Line 10
"F2" [New File]
(1 of 2): Line 10

Executing Test_adjust_lnum()

Already only one window
"Xqftestfilec" 20L, 131C

9 fewer lines

Already only one window
"Xqftestfilel" 20L, 131C

9 fewer lines

Executing Test_browse()
"Xqftestfile1" 20L, 131C

(1 of 4): Line5

"Xqftestfile2" 20L, 131C

(3 of 4): Line10
"Xqftestfile1" 20L, 131C

(2 of 4): Line6
"Xqftestfile2" 20L, 131C

(4 of 4): Line11

"Xqftestfile1" 20L, 131C

(1 of 4): Line5

(1 of 4): Line5

"Xqftestfile2" 20L, 131C

(3 of 4): Line10
"Xqftestfile1" 20L, 131C

(2 of 4): Line6
"Xqftestfile2" 20L, 131C

(4 of 4): Line11

"Xqftestfile1" 20L, 131C

(1 of 4): Line5

Executing Test_caddbuffer_to_empty()
"autocmd.txt" [readonly] 1486L, 61530C

(1 of 475): |QuickFixCmdPre|^Ibefore a quickfix command is run

(2 of 1486):

Executing Test_cage()

error list 9 of 10; 1 errors      :cgetexpr ['Xtestfile2:2:2:Line2']

error list 10 of 10; 1 errors     :cgetexpr ['Xtestfile3:3:1:Line3']

error list 8 of 10; 1 errors      :cgetexpr ['Xtestfile1:1:3:Line1']

error list 10 of 10; 1 errors     :cgetexpr ['Xtestfile3:3:1:Line3']

error list 6 of 7; 1 errors:lgetexpr ['Xtestfile2:2:2:Line2']

error list 7 of 7; 1 errors:lgetexpr ['Xtestfile3:3:1:Line3']

error list 5 of 7; 1 errors:lgetexpr ['Xtestfile1:1:3:Line1']

error list 7 of 7; 1 errors:lgetexpr ['Xtestfile3:3:1:Line3']

Executing Test_cbottom()

Executing Test_cbuffer()
"Xtestfile7" [New File]
(1 of 2): Line 700
"Xtestfile7" [New File]

(1 of 2): Line 700

Executing Test_cexpr()

Executing Test_cfile()
"Xtestfile1" [New File]

(1 of 2): Line 700

"Xtestfile1" [New File]

(1 of 2): Line 700

Executing Test_cgetexpr_works()

Executing Test_clist()

 2 Xtestfile1:1 col 3: Line1

 4 Xtestfile2:2 col 2: Line2

 6 Xtestfile3:3 col 1: Line3

 1: non-error 1

 2 Xtestfile1:1 col 3: Line1

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 5: non-error 3

 6 Xtestfile3:3 col 1: Line3

 4 Xtestfile2:2 col 2: Line2

 6 Xtestfile3:3 col 1: Line3

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 2 Xtestfile1:1 col 3: Line1

 2 Xtestfile1:1 col 3: Line1

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 2 Xtestfile1:1 col 3: Line1

 4 Xtestfile2:2 col 2: Line2

 6 Xtestfile3:3 col 1: Line3

 1: non-error 1

 2 Xtestfile1:1 col 3: Line1

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 5: non-error 3

 6 Xtestfile3:3 col 1: Line3

 4 Xtestfile2:2 col 2: Line2

 6 Xtestfile3:3 col 1: Line3

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 2 Xtestfile1:1 col 3: Line1

 2 Xtestfile1:1 col 3: Line1

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

Executing Test_cwindow()~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       Xtestfile1|1 col 3| Line1                                                       Xtestfile2|2 col 2| Line2
Xtestfile3|3 col 1| Line3
~
~
~
~
~
~
~
[Quickfix List]                                                                 ~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       Xtestfile1|1 col 3| Line1                                                       Xtestfile2|2 col 2| Line2
Xtestfile3|3 col 1| Line3
~
~
~
~
~
~
~
[Location List]                                                                 Executing Test_duplicate_buf()
"DoesNotExist" [New File]2" [New File]

Xgrepthis
"Xgrepthis" line 1 of 2 --50%-- col 1

(1 of 2): this one

Xgrepthis
(1 of 2): this one

Executing Test_efm()

Executing Test_efm1()
"Xtestfile" 21L, 903C

(1 of 20): 1506-045 (S) Undeclared identifier fd_set.

(20 of 20): What is the title of the quickfix window?

Executing Test_efm2()
"Xtestfile" [New File]

Executing Test_efm_dirstack()

Executing Test_errortitle()

Executing Test_grep()

Already only one window[?1l>test_quickfix.vim:1379:  " Grep_Test_Text: Match 1
test_quickfix.vim:1380:  " Grep_Test_Text: Match 2
test_quickfix.vim:1385:  silent Xgrep Grep_Test_Text: test_quickfix.vim
[?1h=[?1l>test_quickfix.vim:1381:  " GrepAdd_Test_Text: Match 1
test_quickfix.vim:1382:  " GrepAdd_Test_Text: Match 2
test_quickfix.vim:1392:  silent Xgrepadd GrepAdd_Test_Text: test_quickfix.vim
[?1h=Already only one window[?1l>test_quickfix.vim:1379:  " Grep_Test_Text: Match 1
test_quickfix.vim:1380:  " Grep_Test_Text: Match 2
test_quickfix.vim:1385:  silent Xgrep Grep_Test_Text: test_quickfix.vim
[?1h=[?1l>test_quickfix.vim:1381:  " GrepAdd_Test_Text: Match 1
test_quickfix.vim:1382:  " GrepAdd_Test_Text: Match 2
test_quickfix.vim:1392:  silent Xgrepadd GrepAdd_Test_Text: test_quickfix.vim
[?1h=Executing Test_helpgrep()
"autocmd.txt" [readonly] 1486L, 61530C

(1 of 475): |QuickFixCmdPre|^Ibefore a quickfix command is run
"autocmd.txt" [readonly] line 1 of 1486 --0%-- col 1
(1 of 475): |QuickFixCmdPre|^Ibefore a quickfix command is run

Executing Test_history()

error list 1 of 10; 21 errors     :cf Xerrorfile1

error list 1 of 2; 21 errors      :cf Xerrorfile1

error list 1 of 2; 13 errors      :lexpr ""

error list 1 of 2; 13 errors      :lexpr ""

Executing Test_invalid_efm()

Executing Test_locationlist()

No matching autocommands

(1 of 7): file foo.txt
No matching autocommands

No matching autocommands

No matching autocommands

No matching autocommands

No matching autocommands

No matching autocommands

(1 of 7): file foo.txt
No matching autocommands

No matching autocommands

(1 of 7): file foo.txt
No matching autocommands

W19: Deleting augroup that is still in use
Executing Test_locationlist_curwin_was_closed()

W19: Deleting augroup that is still in use
Executing Test_long_lines()"samples/quickfix.txt" 4L, 22089C

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"samples/quickfix.txt" 4L, 22089C

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"samples/quickfix.txt" 4L, 22089C

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Executing Test_nomem()
"/<<PKGBUILDDIR>>/src/vim-basic/alloc.h" 21L, 485C

Error detected while processing function RunTheTest[9]..Test_nomem:

line    2:

E342: Out of memory!  (allocating 4096 bytes)
"/<<PKGBUILDDIR>>/src/vim-basic/alloc.h" 21L, 485C

line    5:

E342: Out of memory!  (allocating 4096 bytes)
"/<<PKGBUILDDIR>>/src/vim-basic/alloc.h" 21L, 485C

line    8:

E342: Out of memory!  (allocating 1025 bytes)
"/<<PKGBUILDDIR>>/src/vim-basic/alloc.h" 21L, 485C

line   11:

E342: Out of memory!  (allocating 1025 bytes)
"/<<PKGBUILDDIR>>/src/vim-basic/alloc.h" 21L, 485C

line   14:

E342: Out of memory!  (allocating 1025 bytes)

Executing Test_qf_property()

Executing Test_qf_title()

Executing Test_quickfix_set_list_with_act()

Executing Test_quickfix_was_changed_by_autocmd()

error list 9 of 10; 1 errors      :setqflist()

W19: Deleting augroup that is still in use
error list 9 of 10; 1 errors      :setloclist()

error list 9 of 10; 1 errors      :setloclist()

W19: Deleting augroup that is still in use
Executing Test_setqflist()"Xtestfile" [New File]
(2 of 2):

(3 of 3):

(2 of 2):

(3 of 3):

Executing Test_setqflist_empty_middle()

test_quickfix.vim
"test_quickfix.vim" 1594L, 44709C

(1 of 43): function Test_clist()

test_quickfix.vim
(1 of 13): " With an empty list, command should return error

test_quickfix.vim
(1 of 2): " number of matches is unknown

error list 9 of 10; 13 errors     :vimgrep empty test_quickfix.vim

error list 8 of 10; 43 errors     :vimgrep Test_ test_quickfix.vim

error list 9 of 10; 0 errors      :setqflist()

error list 10 of 10; 2 errors     :vimgrep matches test_quickfix.vim

test_quickfix.vim
(1 of 43): function Test_clist()

test_quickfix.vim
(1 of 13): " With an empty list, command should return error

test_quickfix.vim
(1 of 2): " number of matches is unknown

error list 9 of 10; 13 errors     :lvimgrep empty test_quickfix.vim

error list 8 of 10; 43 errors     :lvimgrep Test_ test_quickfix.vim

error list 9 of 10; 0 errors      :setloclist()

error list 10 of 10; 2 errors     :lvimgrep matches test_quickfix.vim

Executing Test_setqflist_empty_older()

test_quickfix.vim
(1 of 24): \ 'Does anyone know what is the problem and how to correction it?',

test_quickfix.vim
(1 of 21): " Go back two lists

test_quickfix.vim
(1 of 7): " Add three quickfix/location lists

error list 8 of 10; 24 errors     :vimgrep one test_quickfix.vim

error list 9 of 10; 21 errors     :vimgrep two test_quickfix.vim

error list 10 of 10; 7 errors     :vimgrep three test_quickfix.vim

test_quickfix.vim
(1 of 24): \ 'Does anyone know what is the problem and how to correction it?',

test_quickfix.vim
(1 of 21): " Go back two lists

test_quickfix.vim
(1 of 7): " Add three quickfix/location lists

error list 8 of 10; 24 errors     :lvimgrep one test_quickfix.vim

error list 9 of 10; 21 errors     :lvimgrep two test_quickfix.vim

error list 10 of 10; 7 errors     :lvimgrep three test_quickfix.vim

Executing Test_switchbuf()
"Xqftestfile1" 20L, 131C220L, 131C1" line 1 of 20 --5%-- col 1

(1 of 6): Line5

(2 of 6): Line6
"Xqftestfile2" line 1 of 20 --5%-- col 1

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16

(1 of 6): Line5

(2 of 6): Line6

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16
"Xqftestfile1" 20L, 131C220L, 131C

(1 of 6): Line5

(2 of 6): Line6

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16
"Xqftestfile1" 20L, 131C

(1 of 6): Line5

(2 of 6): Line6
"Xqftestfile2" 20L, 131C

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16
"Xqftestfile1" 20L, 131C

(1 of 6): Line5

(2 of 6): Line6
"Xqftestfile2" 20L, 131C

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16

Already only one window
"Xqftestfile1" 20L, 131C220L, 131C320L, 131C

Executing Test_two_windows()
"one" [New File]two

Executing Test_vimgreptitle()

file
"file" [New File]

Cannot open file "file"
"test_quickfix.res" [New File][New] 0L, 0C written

Executed 36 tests
"messages" 308L, 8421C347L, 9502C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_ruby.vim
[?1h="test_ruby.vim" 34 lines, 820 characters
"test_ruby.res" [New File][New] 0L, 0C written

Executed 0 test
"messages"347L, 9502C350L, 9539C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_search.vim
[?1h="test_search.vim" 281 lines, 8457 characters

Executing Test_search_cmdline()/foobar
/the
search hit BOTTOM, continuing at TOP/thes
/foobar
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
?the
?the
?the
?the
?the
?the
?the
?the
?the
?the
search hit TOP, continuing at BOTTOM/thes
/thes
/thes
/thes
/thei
/theis
/theiss
/themthe\>
Executing Test_search_cmdline2()/the
/the
/the
/the
/the
/the
/the
/foo
6 their
  7 the
  8 them
  9 these
 10 foobar
[No Name] [+]                                                                   " Test for the search command

func Test_search_cmdline()
  if !exists('+incsearch')
    return
  endif
  " need to disable char_avail,
  " so that expansion of commandline works
  call test_disable_char_avail(1)
  new
  call setline(1, ['  1', '  2 these', '  3 the', '  4 their', '  5 there', '  66 their', '  7 the', '  8 them', '  9 these', ' 10 foobar'])
  " Test 1
  " CTRL-N / CTRL-P skips through the previous search history
  set noincsearch
  :1
test_search.vim                                                                 Executing Test_use_sub_pat()
"test_search.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"350L, 9539C356L, 9673C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_signs.vim
[?1h="test_signs.vim" 199 lines, 6383 characters

Executing Test_sign()
"foo" [New File]a  b  c xd                                                                                 ~
[No Name] [+]                                                                   " Test for signs

if !has('signs')
  finish
endif
test_signs.vim                                                                  ~
~
~
~
foo                                                                               a
  b
x c
  d
[No Name] [+]                                                                     a  bx c  d  ~"foo" [New file] --No lines in buffer--
"barF
Executing Test_sign_completion():sign ...define jump list place undefine unplace
:"sign define jump list place undefine unplace
:"
:sign define Sign ...icon= linehl= text= texthl=
:"sign define Sign icon= linehl= text= texthl=
:"
:sign define Sign linehl=Spell...Bad SpellCap SpellLocal SpellRare
:"sign define Sign linehl=SpellBad SpellCap SpellLocal SpellRare
:"
:sign define Sign icon=Xsig...nOne XsignTwo
:"sign define Sign icon=XsignOne XsignTwo
:"
:sign undefine ...Sign1 Sign2
:"sign undefine Sign1 Sign2
:"
:sign place 1 ...buffer= file= line= name=
:"sign place 1 buffer= file= line= name=
:"
:sign place 1 name=...Sign1 Sign2
:"sign place 1 name=Sign1 Sign2
:"
:sign unplace 1 ...buffer= file=
:"sign unplace 1 buffer= file=
:"
:sign list ...Sign1 Sign2
:"sign list Sign1 Sign2
:"
:sign jump 1 ...buffer= file=
:"sign jump 1 buffer= file=
:"

Executing Test_sign_delete_buffer()

Executing Test_sign_invalid_commands()

Executing Test_sign_undefine_still_placed()
"foobar" [New File]test_signs.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"356L, 9673C364L, 9886C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_smartindent.vim
[?1h="test_smartindent.vim" 14 lines, 376 characters

Executing Test_nosmartindent()/some
search hit BOTTOM, continuing at TOP"test_smartindent.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"364L, 9886C368L, 9961C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_startup.vim
[?1h="test_startup.vim" 185 lines, 4581 characters

Executing Test_after_comes_later()[?1l>[?1h=1: /<<PKGBUILDDIR>>/src/vim-basic/testdir/Xbefore.vim

  2: /<<PKGBUILDDIR>>/src/vim-basic/testdir/Xhere/plugin/here.vim

  3: /<<PKGBUILDDIR>>/src/vim-basic/testdir/Xhere/pack/foo/start/

foobar/plugin/foo.vim

  4: /<<PKGBUILDDIR>>/src/vim-basic/testdir/Xafter/plugin/later.v

im
  5: /<<PKGBUILDDIR>>/src/vim-basic/testdir/Xafter.vim
[?1l>
[?1h=
Executing Test_compatible_args()[?1l>[?1h=Error detected while processing /<<PKGBUILDDIR>>/src/vim-basic/te

stdir/Xafter.vim:

line    2:

E528: Must specify a ' value: viminfo+=nviminfo
[?1l>
[?1h=[?1l>[?1h=[?1l>[?1h=
Executing Test_file_args()[?1l>[?1h=[?1l>[?1h=[?1l>[?1h="one" [New File]
[?1l>
[?1h=[?1l>[?1h="one" [New File]
[?1l>
3 files to edit
[?1h=[?1l>[?1h="one" [New File]
[?1l>
2 files to edit
[?1h=[?1l>[?1h="one" [New File]
[?1l>
4 files to edit
[?1h=
Executing Test_help_arg()[?1l>[?1h=
Executing Test_read_stdin()[?1l>[?1h="-stdin-" 1 line, 10 characters"Xtestout" [New File] 1 line, 10 characters written
[?1l>
Vim: Reading from stdin...
[?1h=
Executing Test_startup_script()

Executing Test_startuptime()[?1l>[?1h="one" [New File]
[?1l>
[?1h="test_startup.res" [New File][New] 0L, 0C written

Executed 7 tests
"messages"368L, 9961C378L, 10212C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_startup_utf8.vim
[?1h="test_startup_utf8.vim" 64 lines, 1366 characters

Executing Test_read_fifo_utf8()[?1l>[?1h="/dev/fd/63" [readonly] 2 lines, 24 characters

"Xtestout" [New File] 2 lines, 24 characters written
[?1l>
[?1h=
Executing Test_read_stdin_utf8()[?1l>[?1h="-stdin-" 2 lines, 24 characters"Xtestout" [New File] 2 lines, 24 characters written
[?1l>
Vim: Reading from stdin...
[?1h="test_startup_utf8.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"378L, 10212Cgcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv  -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/arm-linux-gnueabihf/perl/5.24/CORE  -o objects/gui_gtk_gresources.o auto/gui_gtk_gresources.c
383L, 10323C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_stat.vim
[?1h="test_stat.vim" 64 lines, 1598 characters

Executing Test_checktime()
"Xtest.tmp" 1L, 13Cgcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv  -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/arm-linux-gnueabihf/perl/5.24/CORE  -o objects/if_perl.o auto/if_perl.c
1L, 25C

Executing Test_existent_directory()

Executing Test_existent_file()

Executing Test_nonexistent_file()

Executing Test_win32_symlink_dir()
"test_stat.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"383L, 10323C391L, 10524C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_substitute.vim
[?1h="test_substitute.vim" 41 lines, 1151 characters

Executing Test_multiline_subst()

search hit BOTTOM, continuing at TOP
3 substitutions on 3 lines
3 substitutions on 2 lines
"test_substitute.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"391L, 10524C395L, 10600C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_syntax.vim
[?1h="test_syntax.vim" 82 lines, 1624 characters

Executing Test_syn_iskeyword()CREATE TABLE FOOBAR(
    DLTD_BY VARCHAR2(100)
);

~
~
~
~
~
~
~
[No Name] [+]                                                                   " Test for syntax and syntax iskeyword option

if !has("syntax")
  finish
endif

func GetSyntaxItem(pat)
  let c = ''
  let a = ['a', getreg('a'), getregtype('a')]
  0
test_syntax.vim                                                                 
syntax iskeyword not set

syntax iskeyword @,48-57,_,192-255CREATE TABLE FOOBAR(
    DLTD_BY VARCHAR2(100)
);

~
~
~
~
~
~
~
[No Name] [+]                                                                   " Test for syntax and syntax iskeyword option

if !has("syntax")
  finish
endif

func GetSyntaxItem(pat)
  let c = ''
  let a = ['a', getreg('a'), getregtype('a')]
  0
test_syntax.vim                                                                 
syntax iskeyword not set

Executing Test_syntax_after_reload()
"Xsomefile" [New File][New] 2L, 12C written
"other" [New File]Xsomefile" 2L, 12C
"test_syntax.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"395L, 10600C400L, 10708C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_textobjects.vim
[?1h="test_textobjects.vim" 43 lines, 946 characters

Executing Test_inner_block_with_cpo_M_left_backslash()

Executing Test_inner_block_with_cpo_M_right_backslash()

Executing Test_inner_block_without_cpo_M()
"test_textobjects.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"400L, 10708C406L, 10907C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_undo.vim
[?1h="test_undo.vim" 237 lines, 6322 characters

Executing Test_U_command()Executing Test_global_local_undolevels()
"one" [New File]
6 fewer lines; before #8  0 seconds ago
"two" [New File]
3 fewer lines; before #11  0 seconds ago
"three" [New File]
Executing Test_insert_expr()=setline('.','1234')
1 line less; before #4  0 seconds ago3=setline('.','1234')
1 line less; before #7  0 seconds ago=string(123)
1 line less; before #9  0 seconds ago

Executing Test_undo_del_chars()
1 change; before #3  0 seconds ago21

1 change; before #6  1 seconds ago5
4s; after #3
1; before #21

3 changes; after #6  1 seconds ago3 changes; before #7  0 seconds ago

3 changes; before #1  3 seconds ago

3 changes; after #6  3 seconds ago

3 changes; after #9  0 seconds ago

Executing Test_undo_write()
"Xtest" [New File]"Xtest" [New] 1L, 12C written"Xtest" 3L, 20C written1 line less; before #4  0 seconds ago

2 fewer lines; before #2  0 seconds ago

1 line less; before #1  0 seconds ago

1 more line; after #1  0 seconds ago

2 more lines; after #3  0 seconds ago

1 more line; after #4  0 seconds ago

Executing Test_undojoin()1 line less; before #2  0 seconds ago2 fewer lines; before #3  0 seconds ago

Executing Test_undolist()1 change; before #2  0 seconds agoExecuting Test_undotree()
1 change; before #2  0 seconds ago
"Xtest" [New] 1L, 4C written
"test_undo.res" [New File][New] 0L, 0C written

Executed 8 tests
"messages"406L, 10907C417L, 11180C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_usercommands.vim
[?1h="test_usercommands.vim" 104 lines, 2527 characters

Executing Test_Ambiguous()

Executing Test_CmdUndefined()

Executing Test_cmdmods()
"test_usercommands.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"417L, 11180C423L, 11308C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_viminfo.vim
[?1h="test_viminfo.vim" 495 lines, 13092 characters

Executing Test_cmdline_history()

Executing Test_cmdline_history_order()

Executing Test_global_vars()

Executing Test_oldfiles()

Executing Test_read_and_write()

Executing Test_viminfo_bad_syntax()

Executing Test_viminfo_encoding()
"Xviminfo" [converted] 74L, 3368C

Executing Test_viminfo_file_mark_tabclose()
"Xtestfileintab" [New File]viminfo" 84L, 3547C

Executing Test_viminfo_file_marks()
"ten" [New File]again" [New File]
"thirty" [New File]
"twen
"again" [New File]fourty" [New File]
"Xviminfo" 91L, 3345C

Executing Test_viminfo_jumplist()
"testbuf" [New File]/20
/30
/last pos
/15
/last pos
?30
/15
/last pos
?30
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here

Executing Test_viminfo_marks()
"bufa" [New File]b

Executing Test_viminfo_registers()
"test_viminfo.res" [New File][New] 0L, 0C written

Executed 12 tests
"messages" 423L, 11308C438L, 11759C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_viml.vim
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/farsi.o farsi.c
[?1h="test_viml.vim" 1245 lines, 29827 characters

Error detected while processing /<<PKGBUILDDIR>>/src/vim-basic/te

stdir/test_viml.vim:

line  432:

E492: Not an editor command: ^Iasdf

line  444:

E492: Not an editor command: ^Iasdf

line  452:

E492: Not an editor command: asdf

line  455:

E492: Not an editor command: asdf | Xpath 'p'

Error detected while processing function T8_F:

line    5:

E492: Not an editor command: ^I    asdf

line    7:

E492: Not an editor command: ^I    asdf | Xpath 'd'

line   19:

E492: Not an editor command: ^I    asdf

line   21:

E492: Not an editor command: ^I    asdf | Xpath 'l'

line   29:

E121: Undefined variable: novar

E15: Invalid expression: novar^I^I" returns (default return value 0)

Error detected while processing function T8_G:

line    5:

E492: Not an editor command: ^I    asdf^I^I" returns -1

Error detected while processing function T8_H:

line    5:

E492: Not an editor command: ^I    asdf^I^I" returns -1

Error detected while processing function F[2]..G[2]..H[2]..I:

line    2:

E492: Not an editor command:     asdf^I^I" error

Error detected while processing /<<PKGBUILDDIR>>/src/vim-basic/te

stdir/test_viml.vim:

line  663:

E15: Invalid expression: | strlen("\"") | Xpath 'j'

E15: Invalid expression: 1 ||| strlen("\"") | Xpath 'j'

line  673:

E15: Invalid expression: | strlen("\"") | Xpath 'n'

E15: Invalid expression: 1 ||| strlen("\"") | Xpath 'n'

line  682:

E15: Invalid expression: | strlen("\"") | Xpath 'r'

E15: Invalid expression: 1 ||| strlen("\"") | Xpath 'r'

line  717:

E492: Not an editor command:     asdf^I^I" error

1
line  787:

E492: Not an editor command:     asdf^I^I" error

line  794:

E492: Not an editor command:     asdf^I^I" error

line  817:

E121: Undefined variable: asdf

E15: Invalid expression: asdf

line  828:

E121: Undefined variable: asdf

E15: Invalid expression: asdf | Xpath 'f' | endwhile | Xpath 'g'

Error detected while processing function F:

line    8:

E121: Undefined variable: g:boolvar

E15: Invalid expression: g:boolvar^I" possibly undefined

E121: Undefined variable: g:boolvar

E15: Invalid expression: g:boolvar | Xpath 'd' | else | Xpath 'e' | endif

Executing Test_arg_abort()

Executing Test_braces_skipped()

Executing Test_curlies()

Executing Test_defining_functions()

Executing Test_echo_and_string()

foo bar

'foo bar'

-1.2

-1.2

string

function('string')

{'a': {...}}

{'a': {...}}

[[...]]

[[...]]

[{}, {}, {}]

[{}, {}, {}]

{'a': {}, 'b': {}}

{'a': {}, 'b': {}}

[[], [], []]

[[], [], []]

{'a': [], 'b': []}

{'a': [], 'b': []}

[{'one': 'yes', 'two': 'yes', 'three': 'yes'}, {...}, {...}]

[{'one': 'yes', 'two': 'yes', 'three': 'yes'}, {'one': 'yes', 'two': 'yes', 'th

ree': 'yes'}, {'one': 'yes', 'two': 'yes', 'three': 'yes'}]

{'a': {'one': 'yes', 'two': 'yes', 'three': 'yes'}, 'b': {...}}

{'a': {'one': 'yes', 'two': 'yes', 'three': 'yes'}, 'b': {'one': 'yes', 'two':

'yes', 'three': 'yes'}}

[[1, 2, 3], [...], [...]]

[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

{'a': [1, 2, 3], 'b': [...]}

{'a': [1, 2, 3], 'b': [1, 2, 3]}

Executing Test_endwhile_function()

Executing Test_endwhile_script()

   function T1_F()

1      Xpath 'a'

2      let first = 1

3      while 1

4Xpath 'b'

5if first

6Xpath 'c'

7let first = 0

8break

9else

10Xpath 'd'

11return

12endif

13     endwhile

   endfunction"/tmp/vLF3A0z/0" [noeol] 16L, 299C
13 substitutions on 13 lines
Pattern not found: ^\s*$
"/tmp/vLF3A0z/0" 13L, 248C written
"test_viml.vim" 1245L, 29827C
   function T1_G()
1      Xpath 'h'
2      let first = 1
3      while 1
4Xpath 'i'
5if first
6Xpath 'j'
7let first = 0
8break
9else
10Xpath 'k'
11return

12endif

13if 1    " unmatched :if

14     endwhile

   endfunction"/tmp/vLF3A0z/1" [noeol] 17L, 334C
14 substitutions on 14 lines
Pattern not found: ^\s*$
"/tmp/vLF3A0z/1" 14L, 281C written
"test_viml.vim" 1245L, 29827C
Executing Test_error_in_function()
Executing Test_error_in_script()
Executing Test_expr_parsing()
Executing Test_finish()
   function T4_F()
1      if 1
2Xpath 'a'
3let loops = 3
4while loops > 0"    3:  2:     1:
5Xpath 'b' . loops
6if (loops == 2)
7Xpath 'c' . loops
8return

9Xpath 'd' . loops

10endif

11Xpath 'e' . loops

12let loops = loops - 1

13endwhile

14Xpath 'f'

15     else

16Xpath 'g'

17     endif

   endfunction"/tmp/vLF3A0z/2" [noeol] 20L, 504C
17 substitutions on 17 lines
Pattern not found: ^\s*$
"/tmp/vLF3A0z/2" 17L, 445C written
"test_viml.vim" 1245L, 29827C
Executing Test_func_abort()
Executing Test_if_bar_fail()
Executing Test_if_fail()
Executing Test_if_while()
Executing Test_num64()
Executing Test_return()
Executing Test_skip()
Executing Test_type()
Executing Test_while_fail()
"test_viml.res" [New File][New] 0L, 0C written
Executed 20 tests
"messages" 438L, 11759C461L, 12368C written[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_visual.vim
[?1h="test_visual.vim" 17 lines, 339 characters

Executing Test_block_shift_multibyte()
"test_visual.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"461L, 12368C465L, 12446C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_window_id.vim
[?1h="test_window_id.vim" 94 lines, 2575 characters

Executing Test_win_getid()
"one" [New File]twohree" [New File]
"four" [New File]ive
"test_window_id.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"465L, 12446C469L, 12515C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_writefile.vim
[?1h="test_writefile.vim" 16 lines, 490 characters

Executing Test_WriteFile()
"test_writefile.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"469L, 12515C473L, 12584C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_alot_latin.vim
[?1h="test_alot_latin.vim" 7 lines, 280 characters

Executing Test_eow_with_optional()

Executing Test_equivalence_re1()

Executing Test_equivalence_re2()

Executing Test_nested_backrefs()

Executing Test_recursive_substitute()
"test_alot_latin.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"[converted] 473L, 12584C[converted] 481L, 12800C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_alot_utf8.vim
[?1h="test_alot_utf8.vim" 11 lines, 440 characters[?1l>Executing Test_classes_re1()gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       version.c -o objects/version.o
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/fileio.o fileio.c


Executing Test_classes_re2()

Executing Test_equivalence_re1()

Executing Test_equivalence_re2()

Executing Test_match_using_multibyte_conceal_char()#ˑThisˑisˑaˑTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " A series of tests that can run in one Vim invocation.
" This makes testing go faster, since Vim doesn't need to restart.

" These tests use utf8 'encoding'.  Setting 'encoding' is already done in
" runtest.vim.  Checking for the multi_byte feature is in the individual
" files, so that they can be run by themselves.

source test_expr_utf8.vim
source test_matchadd_conceal_utf8.vim
source test_regexp_utf8.vim
test_alot_utf8.vim                                                              Executing Test_source_latin()
"Xscript"[New] 2L, 44C written
Executing Test_source_utf8()"Xscript"[New] 2L, 42C written:%s/àx/--à1234--/g
:%s/Àx/--À1234--/g

Executing Test_strcharpart()

Executing Test_strgetchar()
"test.log" 8L, 363C12L, 547C written

Executed 9 tests

1 FAILED:
"messages" 481L, 12800C496L, 13303C written

VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_alot.vim
[?1h="test_alot.vim" 46 lines, 1183 characters

Executing Test_abbreviation()Executing Test_augroup_deleted()

W19: Deleting augroup that is still in use
Executing Test_augroup_warning()
W19: Deleting augroup that is still in useentering

Executing Test_auto_partial_rebind()

Executing Test_autocmd_bufunload_avoiding_SEGV_01()
"aa.txt" [New File]
"bb.txt" [New File]

Executing Test_autocmd_bufunload_avoiding_SEGV_02()
"a.txt" [New File]
"test_alot.vim" 46L, 1183C

Executing Test_autocmd_bufunload_with_tabnext()

Executing Test_autocmd_bufwinleave_with_tabfirst()
"a.txt" [New File]
Executing Test_bind_in_python()

Executing Test_break_undo()Executing Test_bufunload()

Executing Test_cancel_ptjump()

Already only one window:ptjump word
  # pri kind tagfile

  1 Fwordfile1

cmd1

  2 Fwordfile2

cmd2

Type number and <Enter> (empty cancels): 
"help.txt" [readonly] 225L, 8437C

Executing Test_caught_error_in_statusline()source test_messages.vim
source test_partial.vim
source test_popup.vim
source test_reltime.vim
source test_searchpos.vim
source test_set.vim
source test_sort.vim
source test_statusline.vim
source test_syn_attr.vim
source test_tabline.vim
source test_tabpage.vim
source test_tagcase.vim
source test_tagjump.vim
source test_timers.vim
source test_true_false.vim
source test_unlet.vim
source test_window_cmd.vim
source test_options.vim
new line here
Test3: text with a (parenthesis here
new line here

                                                                                Executing Test_caught_error_in_tabline()                                                                                source test_partial.vim
source test_popup.vim
source test_reltime.vim
source test_searchpos.vim
source test_set.vim
source test_sort.vim
source test_statusline.vim
source test_syn_attr.vim
source test_tabline.vim
source test_tabpage.vim
source test_tagcase.vim
source test_tagjump.vim
source test_timers.vim
source test_true_false.vim
source test_unlet.vim
source test_window_cmd.vim
source test_options.vim
new line here
Test3: text with a (parenthesis here
new line here

test_alot.vim                                                                   Executing Test_closure_counter()

Executing Test_closure_refcount()

Executing Test_closure_unlet()

Executing Test_color_names()

Executing Test_command_count_0()
"DoesNotExistEver" [New File]
Executing Test_command_count_1()

"a" [New File]

loading buffers

"b" [New File]

loading buffers

"c" [New File]

loading buffers

"d" [New File]link.sh: $LINK_AS_NEEDED set to 'yes': invoking linker directly.


loading buffers

"e" [New File]

loading buffers
"c" [New File]  gcc   -L. -Wl,-z,relro -Wl,-z,now -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-E  -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed 	-o vim objects/arabic.o objects/buffer.o objects/blowfish.o objects/charset.o objects/crypt.o objects/crypt_zip.o objects/dict.o objects/diff.o objects/digraph.o objects/edit.o objects/eval.o objects/evalfunc.o objects/ex_cmds.o objects/ex_cmds2.o objects/ex_docmd.o objects/ex_eval.o objects/ex_getln.o objects/farsi.o objects/fileio.o objects/fold.o objects/getchar.o objects/hardcopy.o objects/hashtab.o  objects/if_cscope.o objects/if_xcmdsrv.o objects/list.o objects/mark.o objects/memline.o objects/menu.o objects/misc1.o objects/misc2.o objects/move.o objects/mbyte.o objects/normal.o objects/ops.o objects/option.o objects/os_unix.o objects/pathdef.o objects/popupmnu.o objects/quickfix.o objects/regexp.o objects/screen.o objects/search.o objects/sha256.o objects/spell.o objects/spellfile.o objects/syntax.o objects/tag.o objects/term.o objects/ui.o objects/undo.o objects/userfunc.o objects/version.o objects/window.o objects/gui.o objects/gui_gtk.o objects/gui_gtk_x11.o objects/pty.o objects/gui_gtk_f.o objects/gui_beval.o objects/gui_gtk_gresources.o objects/if_lua.o  objects/if_perl.o objects/if_perlsfio.o  objects/if_python3.o objects/if_tcl.o objects/if_ruby.o   objects/netbeans.o objects/channel.o  objects/json.o objects/main.o objects/memfile.o objects/message.o   -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE  -lm -ltinfo -lnsl  -lselinux  -lacl -lattr -lgpm -ldl  -L/usr/lib -llua5.2 -Wl,-E  -fstack-protector-strong -L/usr/local/lib  -L/usr/lib/arm-linux-gnueabihf/perl/5.24/CORE -lperl -ldl -lm -lpthread -lcrypt  -L/usr/lib/python3.5/config-3.5m-arm-linux-gnueabihf -lpython3.5m -lpthread -ldl -lutil -lm -L/usr/lib/arm-linux-gnueabihf -ltcl8.6 -ldl -lz -lpthread -lieee -lm -lruby-2.3 -lpthread -lgmp -ldl -lcrypt -lm     
beb

Executing Test_command_count_2()

"d" [New File]
"a

Already only one window
"x" [New File]
Already only one window

Executing Test_command_count_3()
"aaa" [New File]bbb
"ccc
"test_alot.vim" 46L, 1183C

2 buffers deleted

Executing Test_command_count_4()
"cc" [New File]
"dd" [New File]

"ee" [New File]
"aa

"bb" [New File]

"cc" [New File]

"dd" [New File]

"ee" [New File]
"cc

"ee" [New File]

"ff" [New File]

Executing Test_compare_null_dict()

Executing Test_compare_partials()

Executing Test_compl_vim_cmds_after_register_expr()=s:test_func()
Executing Test_cursorhold_insert()Executing Test_cursorhold_insert_ctrl_x()Executing Test_curswant_with_autocommand()
Executing Test_cycle_partial_job()

Executing Test_cyclic_dict_arg()

Executing Test_cyclic_list_arg()

Executing Test_delete_myself()

Executing Test_dict()

Executing Test_dir_delete()

Executing Test_early_bar()

Executing Test_empty_buffer()

Executing Test_equal()

Executing Test_ex_undo()
"ex-undo" [New File]
1 line less; before #3  0 seconds ago

1 line less; after #1  0 seconds ago

2 fewer lines; before #1  0 seconds ago

Executing Test_execute_list()

Executing Test_execute_string()

this

theend

something

Executing Test_existing()

Executing Test_expand()

Executing Test_feedkeys_x_with_empty_string()Executing Test_file_delete()
"Xfile" [New File][New] 2L, 4C written

Executing Test_file_perm()

Executing Test_filter()
"Xdoesnotmatch" [New File]
"Xwillmatch" [New File]ff" [New File]
Executing Test_filter_fails()

Executing Test_filter_map_dict_expr_funcref()

Executing Test_filter_map_dict_expr_string()

Executing Test_filter_map_list_expr_funcref()

Executing Test_filter_map_list_expr_string()

Executing Test_fnamemodify()
"test_alot.vim" 46L, 1183C

Executing Test_func_unref()

Executing Test_funcref()

0
Executing Test_function_in_dict()

Executing Test_function_with_funcref()

Executing Test_geeDEE()

Executing Test_gee_dee()

Executing Test_get_partial_items()

Executing Test_getreg_empty_list()

Executing Test_global_local_lispwords()

Executing Test_help_complete():h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...har...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...har...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col@en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col@en...ab'
:lh test-col@ab'
:leh test-col@ab'
:leth test-col@ab'
:let h test-col@ab'
:let sh test-col@ab'th test-col@ab'rh test-col@ab'=h test-col@ab''h test-col@ab'
:h test...-col@en...ab...har@en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col@en...ab...har@en...ab'
:lh test-char@ab'
:leh test-char@ab'
:leth test-char@ab'
:let h test-char@ab'
:let sh test-char@ab'th test-char@ab'rh test-char@ab'=h test-char@ab''h test-char@ab'
:h test...-col@en...ab...har@en...ab...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...@en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col...@en...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...@en...har...@en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col...@en...har...@en...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col@en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col@en...ab'
:lh test-col@ab'
:leh test-col@ab'
:leth test-col@ab'
:let h test-col@ab'
:let sh test-col@ab'th test-col@ab'rh test-col@ab'=h test-col@ab''h test-col@ab'
:h test...-col@en...ab...ja'
:lh test-col@ja'
:leh test-col@ja'
:leth test-col@ja'
:let h test-col@ja'
:let sh test-col@ja'th test-col@ja'rh test-col@ja'=h test-col@ja''h test-col@ja'
:h test...-col@en...ab...ja...har@en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col@en...ab...ja...har@en...ab'
:lh test-char@ab'
:leh test-char@ab'
:leth test-char@ab'
:let h test-char@ab'
:let sh test-char@ab'th test-char@ab'rh test-char@ab'=h test-char@ab''h test-char@ab'
:h test...-col@en...ab...ja...har@en...ab...ja'
:lh test-char@ja'
:leh test-char@ja'
:leth test-char@ja'
:let h test-char@ja'
:let sh test-char@ja'th test-char@ja'rh test-char@ja'=h test-char@ja''h test-char@ja'
:h test...-col@en...ab...ja...har@en...ab...ja...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...@en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col...@en...ja'
:lh test-col@ja'
:leh test-col@ja'
:leth test-col@ja'
:let h test-col@ja'
:let sh test-col@ja'th test-col@ja'rh test-col@ja'=h test-col@ja''h test-col@ja'
:h test...-col...@en...ja...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...@en...ja...har...@en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col...@en...ja...har...@en...ja'
:lh test-char@ja'
:leh test-char@ja'
:leth test-char@ja'
:let h test-char@ja'
:let sh test-char@ja'th test-char@ja'rh test-char@ja'=h test-char@ja''h test-char@ja'
:h test...-col...@en...ja...har...@en...ja...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...@ja'
:lh test-col@ja'
:leh test-col@ja'
:leth test-col@ja'
:let h test-col@ja'
:let sh test-col@ja'th test-col@ja'rh test-col@ja'=h test-col@ja''h test-col@ja'
:h test...-col...@ja...en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col...@ja...en...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...@ja...en...har...@ja'
:lh test-char@ja'
:leh test-char@ja'
:leth test-char@ja'
:let h test-char@ja'
:let sh test-char@ja'th test-char@ja'rh test-char@ja'=h test-char@ja''h test-char@ja'
:h test...-col...@ja...en...har...@ja...en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col...@ja...en...har...@ja...en...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'

Executing Test_help_tagjump()
"help.txt" [readonly] 225L, 8437C
"options.txt" [readonly] 8732L, 369923Cline 7646 of 8732 --87%-- col 7-49 ((5) of 6)
"eval.txt" [readonly][converted] 10590L, 407237C line 2405 of 10590 --22%-- col 1 ((5) of 6)
"options.txt" [readonly] line 1320 of 8732 --15%-- col 4-25 ((5) of 6)
"cmdline[readonly] 1144L, 46758C

Executing Test_if()

Executing Test_info()

Executing Test_invalid()

Executing Test_invalid_submatch()

Executing Test_join_with_count()

Executing Test_keyword_jump()
"Xtestfile" 9L, 141C

Executing Test_lambda_call_lambda_from_lambda()

Executing Test_lambda_capture_by_reference()

Executing Test_lambda_circular_reference()

Executing Test_lambda_closure_counter()

Executing Test_lambda_combination()

Executing Test_lambda_delfunc()

Executing Test_lambda_do_not_share_local_variable()

Executing Test_lambda_fails()

Executing Test_lambda_feature()

Executing Test_lambda_refer_local_variable_from_other_scope()

Executing Test_lambda_scope()

Executing Test_lambda_share_scope()

Executing Test_lambda_side_effect()

Executing Test_lambda_with_a_var()

Executing Test_lambda_with_filter()

Executing Test_lambda_with_map()

Executing Test_lambda_with_partial()

Executing Test_lambda_with_sort()

Executing Test_lambda_with_timer()

1
2
3
4
5
6
7
8
Executing Test_load_menu()

Executing Test_loop_over_null_list()

Executing Test_map_ctrl_c_insert()Executing Test_map_ctrl_c_visual():'<,'>$put ='vmap works'

Executing Test_map_cursor()1 line less; before #8  0 seconds ago

Executing Test_map_feedkeys():call feedkeys(".", "in")
:call feedkeys(".", "in")
Executing Test_map_langmap():call append(line('$'), '+')

Executing Test_map_meta_quotes()Executing Test_match()

abcdefghijklmnopq
TEST2: CTRL-C |<ctrl-c>A|
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   abcdΣabcdef
TEST2: CTRL-C |<ctrl-c>A|
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   Executing Test_matchaddpos()link.sh: Linked fine
make[1]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-gtk3'
[ yes != "yes" ] || flock debian /usr/bin/make -j1 -C src/vim-gtk3 test
12345
NP
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   12345 
NP 
vmap works 
 
Test1: text with a (here some more text) 
Test1: text with a (here some more text) 
 
 
Test2: text wit a (here some more text [und undo]) 
fooc d 
fooc d 
+ 
+ 
bbbb 
bbbb 
cccc 
bbbb 
+ 
-foo- 
~
~
~
[No Name] [+]                                                                   012345 
NP 
vmap works 
 
Test1: text with a (here some more text) 
Test1: text with a (here some more text) 
 
 
Test2: text wit a (here some more text [und undo]) 
fooc d 
fooc d 
+ 
+ 
bbbb 
bbbb 
cccc 
bbbb 
+ 
-foo- 
~
~
~
[No Name] [+]                                                                   Executing Test_matchaddpos_using_negative_priority()x
NP
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   x
NP
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   x
-1 match priority
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   Executing Test_matchstrpos()

Executing Test_max_min_errors()

Executing Test_messages()

hello0x
-1 match priority
vmap works   hello1234567898

hello9xhello9
Executing Test_missing_attr()

Executing Test_move_cursor()

Executing Test_named_function_closure()

Executing Test_no_type_checking()

Executing Test_noinsert_complete()=s:complTest1()
=s:complTest2()
Executing Test_non_zero_arg()

Executing Test_not_existing()

Executing Test_not_lamda()

Executing Test_oneshot()

Executing Test_option_value()

Executing Test_options()
"option-window" [New File]

Executing Test_partial_args()

Executing Test_partial_dict()

Executing Test_partial_exists()

Executing Test_partial_implicit()

Executing Test_partial_string()

Executing Test_path_keep_commas()

Executing Test_paused()

Executing Test_popup_complete()=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
Scanning: [No Name]test_alot.vima.txtDoesNotExistEverabcdxaabbcceeffex-undoXfiletestfile tags.=ListMonths()
=ListMonths()
 =ListMonths()

+=ListMonths()

+      =ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()

  =ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
  =ListMonths()
o-=ListMonths()
=ListMonths()
=ListMonths()
Executing Test_popup_complete2()=ListMonths()
Executing Test_popup_completion_insertmode()=ListMonths()
=ListMonths()
=ListMonths()
       
=ListMonths()
=ListMonths()
Executing Test_printf_64bit()

Executing Test_printf_errors()

0
0
1
0
0
Executing Test_printf_float()

0.000000

Executing Test_printf_misc()

Executing Test_printf_spec_b()

Executing Test_printf_spec_s()

Executing Test_ptag_with_notagstack()

Executing Test_read_only()

Executing Test_recursive_delete()
"Xdir1/Xfile" [New File][New] 2L, 4C writtensubdir/Xfile" [New] 2L, 4C written

Executing Test_redefine_dict_func()

Executing Test_ref_job_partial_dict()

Executing Test_reltime()

Executing Test_repeat_many()

Executing Test_repeat_three()

Executing Test_retain_partial()

Executing Test_script_function_in_dict()

Executing Test_script_function_in_dict_arg()

Executing Test_searchpos()
"one" [New File]
Executing Test_set_add()

Executing Test_set_backslash()

Executing Test_set_reg_null_list()

Executing Test_set_tagcase()

Executing Test_setmatches()

Executing Test_signcolumn()

Executing Test_sort_default()

Executing Test_sort_float()

Executing Test_sort_nested()

Executing Test_sort_numbers()

Executing Test_sort_numeric()

Executing Test_sort_strings()

Executing Test_special_char()

Executing Test_statusline_will_be_disabled_with_error()x
-1 match priority
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
                                                                                Executing Test_stop_all_in_callback()

Executing Test_stop_in_callback()

Executing Test_stopall()

Executing Test_strcharpart()

Executing Test_strgetchar()

Executing Test_substitute_expr()

Executing Test_substitute_expr_arg()

Executing Test_symlink_delete()
"Xfile" [New File][New] 2L, 4C written[?1l>[?1h=
Executing Test_symlink_dir_delete()[?1l>[?1h=
Executing Test_symlink_recursive_delete()
"Xdir3/Xfile" [New File][New] 2L, 4C writtensubdir/Xfile" [New] 2L, 4C written
"Xdir4/Xfile" [New] 2L, 4C written[?1l>[?1h=
Executing Test_tabline_will_be_disabled_with_error()                                                                                x
-1 match priority
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
[No Name]                                                                       Executing Test_tabnext_on_buf_unload1()

Executing Test_tabnext_on_buf_unload2()

"x" [Not edited] --No lines in buffer-- ((5) of 6)
"y" [New File]
Executing Test_tabpage()
"Xtestfile" [New File]
2 fewer lines; before #1  0 seconds ago

Executing Test_tabpage_with_autocmd()

Executing Test_tabpage_with_tab_modifier()
"help.txt" [readonly] line 1 of 225 --0%-- col 1 ((5) of 6)

"ff" [New File]

Executing Test_tagcase()
"Xtext" [New File]
Executing Test_three_windows()
"Xtestje1" [New File][New] 1L, 8C written2" [New File][New] 1L, 8C written3" [New File][New] 1L, 8C written11L, 8C

"Xtestje3" 1L, 8C21L, 8C11L, 8C

"Xanother" [New File]
"Xtestje11L, 8C
"Xanother" [New File]

Already only one window
"help.txt" [readonly] 225L, 8437C

Executing Test_tostring()

Executing Test_true_false_arg()[?1l>[?1h=[?1l>[?1h=[?1l>[?1h=[?1l>[?1h=
"colored" [New File]

Executing Test_valid()

Executing Test_version()

Executing Test_vim_did_enter()

Executing Test_whichwrap()

Executing Test_win_tab_autocmd()

"somefile" [New File]

Executing Test_window_cmd_cmdwin_with_vsp()

Executing Test_window_cmd_ls0_with_split()

Executing Test_window_cmd_wincmd_gf()
"test_gf.txt" 0L, 0C
W19: Deleting augroup that is still in use
Executing Test_with_directories()"Xdir1/file" [New File]
"Xdir1/file" [New] 2L, 4C written

"Xdir3/Xdir4/file" [New] 2L, 4C written2L, 4C
"Xdir?/*/nofile" [New DIRECTORY]
"foo" [New File]Executing Test_with_partial_callback()tilde()rong_arguments()
"test.log" 12L, 547C

"test.log" 40L, 2933C written
Executed 188 tests4 FAILED:"messages" 496L, 13303C

"messages" 714L, 22013C written
[?1l>


From test_arglist.vim:
Executing Test_argadd()
Executing Test_argc()
Executing Test_argdelete()
Executing Test_argedit()
Executing Test_argidx()
Executing Test_arglist_autocmd()
Executing Test_arglistid()
Executing Test_argpos()
Executing Test_argument()
Executing Test_argv()
Executing Test_zero_argadd()
Executed 11 tests

From test_assert.vim:
Executing Test_assert_equal()
Executing Test_assert_exception()
Executing Test_assert_fail_fails()
Executing Test_assert_false()
Executing Test_assert_inrange()
Executing Test_assert_notequal()
Executing Test_assert_true()
Executing Test_compare_fail()
Executing Test_match()
Executing Test_notmatch()
Executing Test_user_is_happy()
Executing Test_wrong_error_type()
Executed 12 tests

From test_autochdir.vim:
Executing Test_set_filename()
Executed 1 test

From test_backspace_opt.vim:
Executing Test_backspace_option()
Executed 1 test

From test_bufwintabinfo.vim:
Executing Test_get_buf_options()
Executing Test_get_win_options()
Executing Test_getbufwintabinfo()
Executed 3 tests

From test_cdo.vim:
Executing Test_cdo()
Executing Test_ldo()
Executed 2 tests

From test_channel.vim:
Executed 0 test

From test_charsearch.vim:
Executing Test_charsearch()
Executing Test_search_cmds()
Executed 2 tests

From test_cmdline.vim:
Executing Test_complete_list()
Executing Test_complete_tab()
Executing Test_complete_wildmenu()
Executing Test_expand_star_star()
Executing Test_getcompletion()
Executed 5 tests

From test_crypt.vim:
Executing Test_crypt_blowfish()
Executing Test_crypt_blowfish2()
Executing Test_crypt_zip()
Executing Test_head_only_2()
Executing Test_head_only_3()
Executing Test_uncrypt_blowfish()
Executing Test_uncrypt_blowfish2()
Executing Test_uncrypt_zip()
Executed 8 tests

From test_cscope.vim:
Executed 0 test

From test_diffmode.vim:
Executing Test_diff_fold_sync()
Executing Test_diffget_diffput()
Executing Test_diffoff()
Executing Test_filler_lines()
Executing Test_vert_split()
Executed 5 tests

From test_digraph.vim:
Executing Test_digraph_cmndline()
Executing Test_digraphs()
Executing Test_digraphs_option()
Executing Test_digraphs_output()
Executing Test_loadkeymap()
Executed 5 tests

From test_farsi.vim:
Executing Test_farsi_map()
Executing Test_farsi_toggle()
Executed 2 tests

From test_fnameescape.vim:
Executing Test_fnameescape()
Executed 1 test

From test_gf.vim:
Executing Test_gf_url()
Executed 1 test

From test_gn.vim:
Executing Test_gn_command()
Executed 1 test

From test_gui.vim:
Executed 0 test

From test_hardcopy.vim:
Executing Test_printheader_parsing()
Executing Test_printmbfont_parsing()
Executing Test_printoptions_parsing()
Executing Test_with_syntax()
Executed 4 tests

From test_history.vim:
Executing Test_History()
Executed 1 test

From test_hlsearch.vim:
Executing Test_hlsearch()
Executed 1 test

From test_increment.vim:
Executing Test_normal_increment_01()
Executing Test_normal_increment_02()
Executing Test_normal_increment_03()
Executing Test_visual_increment_01()
Executing Test_visual_increment_02()
Executing Test_visual_increment_03()
Executing Test_visual_increment_04()
Executing Test_visual_increment_05()
Executing Test_visual_increment_06()
Executing Test_visual_increment_07()
Executing Test_visual_increment_08()
Executing Test_visual_increment_09()
Executing Test_visual_increment_10()
Executing Test_visual_increment_11()
Executing Test_visual_increment_12()
Executing Test_visual_increment_13()
Executing Test_visual_increment_14()
Executing Test_visual_increment_15()
Executing Test_visual_increment_16()
Executing Test_visual_increment_17()
Executing Test_visual_increment_18()
Executing Test_visual_increment_19()
Executing Test_visual_increment_20()
Executing Test_visual_increment_21()
Executing Test_visual_increment_22()
Executing Test_visual_increment_23()
Executing Test_visual_increment_24()
Executing Test_visual_increment_25()
Executing Test_visual_increment_26()
Executing Test_visual_increment_27()
Executing Test_visual_increment_28()
Executing Test_visual_increment_29()
Executing Test_visual_increment_30()
Executing Test_visual_increment_31()
Executing Test_visual_increment_32()
Executing Test_visual_increment_33()
Executing Test_visual_increment_34()
Executing Test_visual_increment_35()
Executing Test_visual_increment_36()
Executing Test_visual_increment_37()
Executing Test_visual_increment_38()
Executed 41 tests

From test_increment_dbcs.vim:
Executing Test_increment_dbcs_1()
Executed 1 test

From test_job_fails.vim:
Executing Test_job_start_fails()
Executed 1 test

From test_json.vim:
Executing Test_js_decode()
Executing Test_js_encode()
Executing Test_json_decode()
Executing Test_json_encode()
Executed 4 tests

From test_langmap.vim:
Executing Test_langmap()
Executed 1 test

From test_man.vim:
Executing Test_g_ft_man_open_mode()
Executing Test_nomodifiable()
Executed 2 tests

From test_marks.vim:
Executing Test_Incr_Marks()
Executing Test_Restore_DelMark()
Executed 2 tests

From test_matchadd_conceal.vim:
Executing Test_clearmatches()
Executing Test_default_conceal_char()
Executing Test_matchadd_and_conceallevel_3()
Executing Test_matchadd_repeat_conceal_with_syntax_off()
Executing Test_simple_matchadd()
Executing Test_simple_matchadd_and_conceal()
Executing Test_syn_and_match_conceal()
Executing Test_using_matchaddpos()
Executed 8 tests
2 FAILED:
Found errors in Test_clearmatches():
function RunTheTest[9]..Test_clearmatches line 29: Expected 0 differs from 0
Found errors in Test_default_conceal_char():
function RunTheTest[9]..Test_default_conceal_char line 13: Expected 0 differs from 0
function RunTheTest[9]..Test_default_conceal_char line 26: Expected 0 differs from 0

From test_nested_function.vim:
Executing Test_nested_functions()
Executed 1 test

From test_netbeans.vim:
Executed 0 test

From test_normal.vim:
Executing Test_normal00_optrans()
Executing Test_normal01_keymodel()
Executing Test_normal02_selectmode()
Executing Test_normal02_selectmode2()
Executing Test_normal03_join()
Executing Test_normal04_filter()
Executing Test_normal05_formatexpr()
Executing Test_normal05_formatexpr_newbuf()
Executing Test_normal05_formatexpr_setopt()
Executing Test_normal06_formatprg()
Executing Test_normal07_internalfmt()
Executing Test_normal08_fold()
Executing Test_normal09_operatorfunc()
Executing Test_normal10_expand()
Executing Test_normal11_showcmd()
Executing Test_normal12_nv_error()
Executing Test_normal13_help()
Executing Test_normal14_page()
Executing Test_normal14_page_eol()
Executing Test_normal15_z_scroll_vert()
Executing Test_normal16_z_scroll_hor()
Executing Test_normal17_z_scroll_hor2()
Executing Test_normal18_z_fold()
Executing Test_normal19_z_spell()
Executing Test_normal20_exmode()
Executing Test_normal21_nv_hat()
Executing Test_normal22_zet()
Executing Test_normal23_K()
Executing Test_normal24_rot13()
Executing Test_normal25_tag()
Executing Test_normal26_put()
Executing Test_normal27_bracket()
Executing Test_normal28_parenthesis()
Executing Test_normal29_brace()
Executing Test_normal30_changecase()
Executing Test_normal31_r_cmd()
Executing Test_normal32_g_cmd1()
Executing Test_normal33_g_cmd2()
Executing Test_normal34_g_cmd3()
Executing Test_normal35_g_cmd4()
    Skipped
Executing Test_normal36_g_cmd5()
Executing Test_normal37_g_cmd6()
Executing Test_normal38_nvhome()
Executing Test_normal39_cw()
Executing Test_normal40_ctrl_bsl()
Executing Test_normal41_insert_reg()
Executing Test_normal42_halfpage()
Executing Test_normal43_textobject1()
Executing Test_normal44_textobjects2()
Executing Test_normal45_drop()
Executing Test_normal46_ignore()
Executing Test_normal47_autocmd()
    Skipped
Executing Test_normal47_visual_buf_wipe()
Executing Test_normal48_wincmd()
Executing Test_normal49_counts()
Executing Test_normal50_commandline()
Executing Test_normal51_FileChangedRO()
Executing Test_normal52_rl()
Executing Test_normal53_digraph()
Executing Test_normal54_Ctrl_bsl()
Executed 60 tests
SKIPPED Test_normal35_g_cmd4(): output of g< can't be tested currently
SKIPPED Test_normal47_autocmd(): not possible to test cursorhold autocmd while waiting for input in normal_cmd

From test_packadd.vim:
Executing Test_colorscheme()
Executing Test_colorscheme_completion()
Executing Test_helptags()
Executing Test_packadd()
Executing Test_packadd_completion()
Executing Test_packadd_noload()
Executing Test_packloadall()
Executing Test_runtime()
Executed 8 tests

From test_perl.vim:
Executed 0 test

From test_quickfix.vim:
Executing Test_Autocmd()
Executing Test_adjust_lnum()
Executing Test_browse()
Executing Test_caddbuffer_to_empty()
Executing Test_cage()
Executing Test_cbottom()
Executing Test_cbuffer()
Executing Test_cexpr()
Executing Test_cfile()
Executing Test_cgetexpr_works()
Executing Test_clist()
Executing Test_cwindow()
Executing Test_duplicate_buf()
Executing Test_efm()
Executing Test_efm1()
Executing Test_efm2()
Executing Test_efm_dirstack()
Executing Test_errortitle()
Executing Test_grep()
Executing Test_helpgrep()
Executing Test_history()
Executing Test_invalid_efm()
Executing Test_locationlist()
Executing Test_locationlist_curwin_was_closed()
Executing Test_long_lines()
Executing Test_nomem()
Executing Test_qf_property()
Executing Test_qf_title()
Executing Test_quickfix_set_list_with_act()
Executing Test_quickfix_was_changed_by_autocmd()
Executing Test_setqflist()
Executing Test_setqflist_empty_middle()
Executing Test_setqflist_empty_older()
Executing Test_switchbuf()
Executing Test_two_windows()
Executing Test_vimgreptitle()
Executed 36 tests

From test_ruby.vim:
Executed 0 test

From test_search.vim:
Executing Test_search_cmdline()
Executing Test_search_cmdline2()
Executing Test_use_sub_pat()
Executed 3 tests

From test_signs.vim:
Executing Test_sign()
Executing Test_sign_completion()
Executing Test_sign_delete_buffer()
Executing Test_sign_invalid_commands()
Executing Test_sign_undefine_still_placed()
Executed 5 tests

From test_smartindent.vim:
Executing Test_nosmartindent()
Executed 1 test

From test_startup.vim:
Executing Test_after_comes_later()
Executing Test_compatible_args()
Executing Test_file_args()
Executing Test_help_arg()
Executing Test_read_stdin()
Executing Test_startup_script()
Executing Test_startuptime()
Executed 7 tests

From test_startup_utf8.vim:
Executing Test_read_fifo_utf8()
Executing Test_read_stdin_utf8()
Executed 2 tests

From test_stat.vim:
Executing Test_checktime()
Executing Test_existent_directory()
Executing Test_existent_file()
Executing Test_nonexistent_file()
Executing Test_win32_symlink_dir()
Executed 5 tests

From test_substitute.vim:
Executing Test_multiline_subst()
Executed 1 test

From test_syntax.vim:
Executing Test_syn_iskeyword()
Executing Test_syntax_after_reload()
Executed 2 tests

From test_textobjects.vim:
Executing Test_inner_block_with_cpo_M_left_backslash()
Executing Test_inner_block_with_cpo_M_right_backslash()
Executing Test_inner_block_without_cpo_M()
Executed 3 tests

From test_undo.vim:
Executing Test_U_command()
Executing Test_global_local_undolevels()
Executing Test_insert_expr()
Executing Test_undo_del_chars()
Executing Test_undo_write()
Executing Test_undojoin()
Executing Test_undolist()
Executing Test_undotree()
Executed 8 tests

From test_usercommands.vim:
Executing Test_Ambiguous()
Executing Test_CmdUndefined()
Executing Test_cmdmods()
Executed 3 tests

From test_viminfo.vim:
Executing Test_cmdline_history()
Executing Test_cmdline_history_order()
Executing Test_global_vars()
Executing Test_oldfiles()
Executing Test_read_and_write()
Executing Test_viminfo_bad_syntax()
Executing Test_viminfo_encoding()
Executing Test_viminfo_file_mark_tabclose()
Executing Test_viminfo_file_marks()
Executing Test_viminfo_jumplist()
Executing Test_viminfo_marks()
Executing Test_viminfo_registers()
Executed 12 tests

From test_viml.vim:
Executing Test_arg_abort()
Executing Test_braces_skipped()
Executing Test_curlies()
Executing Test_defining_functions()
Executing Test_echo_and_string()
Executing Test_endwhile_function()
Executing Test_endwhile_script()
Executing Test_error_in_function()
Executing Test_error_in_script()
Executing Test_expr_parsing()
Executing Test_finish()
Executing Test_func_abort()
Executing Test_if_bar_fail()
Executing Test_if_fail()
Executing Test_if_while()
Executing Test_num64()
Executing Test_return()
Executing Test_skip()
Executing Test_type()
Executing Test_while_fail()
Executed 20 tests

From test_visual.vim:
Executing Test_block_shift_multibyte()
Executed 1 test

From test_window_id.vim:
Executing Test_win_getid()
Executed 1 test

From test_writefile.vim:
Executing Test_WriteFile()
Executed 1 test

From test_alot_latin.vim:
Executing Test_eow_with_optional()
Executing Test_equivalence_re1()
Executing Test_equivalence_re2()
Executing Test_nested_backrefs()
Executing Test_recursive_substitute()
Executed 5 tests

From test_alot_utf8.vim:
Executing Test_classes_re1()
Executing Test_classes_re2()
Executing Test_equivalence_re1()
Executing Test_equivalence_re2()
Executing Test_match_using_multibyte_conceal_char()
Executing Test_source_latin()
Executing Test_source_utf8()
Executing Test_strcharpart()
Executing Test_strgetchar()
Executed 9 tests
1 FAILED:
Found errors in Test_match_using_multibyte_conceal_char():
function RunTheTest[9]..Test_match_using_multibyte_conceal_char line 14: Expected 0 differs from 0

From test_alot.vim:
Executing Test_abbreviation()
Executing Test_augroup_deleted()
Executing Test_augroup_warning()
Executing Test_auto_partial_rebind()
Executing Test_autocmd_bufunload_avoiding_SEGV_01()
Executing Test_autocmd_bufunload_avoiding_SEGV_02()
Executing Test_autocmd_bufunload_with_tabnext()
Executing Test_autocmd_bufwinleave_with_tabfirst()
Executing Test_bind_in_python()
Executing Test_break_undo()
Executing Test_bufunload()
Executing Test_cancel_ptjump()
Executing Test_caught_error_in_statusline()
Executing Test_caught_error_in_tabline()
Executing Test_closure_counter()
Executing Test_closure_refcount()
Executing Test_closure_unlet()
Executing Test_color_names()
Executing Test_command_count_0()
Executing Test_command_count_1()
Executing Test_command_count_2()
Executing Test_command_count_3()
Executing Test_command_count_4()
Executing Test_compare_null_dict()
Executing Test_compare_partials()
Executing Test_compl_vim_cmds_after_register_expr()
Executing Test_cursorhold_insert()
Executing Test_cursorhold_insert_ctrl_x()
Executing Test_curswant_with_autocommand()
Executing Test_cycle_partial_job()
Executing Test_cyclic_dict_arg()
Executing Test_cyclic_list_arg()
Executing Test_delete_myself()
Executing Test_dict()
Executing Test_dir_delete()
Executing Test_early_bar()
Executing Test_empty_buffer()
Executing Test_equal()
Executing Test_ex_undo()
Executing Test_execute_list()
Executing Test_execute_string()
Executing Test_existing()
Executing Test_expand()
Executing Test_feedkeys_x_with_empty_string()
Executing Test_file_delete()
Executing Test_file_perm()
Executing Test_filter()
Executing Test_filter_fails()
Executing Test_filter_map_dict_expr_funcref()
Executing Test_filter_map_dict_expr_string()
Executing Test_filter_map_list_expr_funcref()
Executing Test_filter_map_list_expr_string()
Executing Test_fnamemodify()
Executing Test_func_unref()
Executing Test_funcref()
Executing Test_function_in_dict()
Executing Test_function_with_funcref()
Executing Test_geeDEE()
Executing Test_gee_dee()
Executing Test_get_partial_items()
Executing Test_getreg_empty_list()
Executing Test_global_local_lispwords()
Executing Test_help_complete()
Executing Test_help_tagjump()
Executing Test_if()
Executing Test_info()
Executing Test_invalid()
Executing Test_invalid_submatch()
Executing Test_join_with_count()
Executing Test_keyword_jump()
Executing Test_lambda_call_lambda_from_lambda()
Executing Test_lambda_capture_by_reference()
Executing Test_lambda_circular_reference()
Executing Test_lambda_closure_counter()
Executing Test_lambda_combination()
Executing Test_lambda_delfunc()
Executing Test_lambda_do_not_share_local_variable()
Executing Test_lambda_fails()
Executing Test_lambda_feature()
Executing Test_lambda_refer_local_variable_from_other_scope()
Executing Test_lambda_scope()
Executing Test_lambda_share_scope()
Executing Test_lambda_side_effect()
Executing Test_lambda_with_a_var()
Executing Test_lambda_with_filter()
Executing Test_lambda_with_map()
Executing Test_lambda_with_partial()
Executing Test_lambda_with_sort()
Executing Test_lambda_with_timer()
Executing Test_load_menu()
Executing Test_loop_over_null_list()
Executing Test_map_ctrl_c_insert()
Executing Test_map_ctrl_c_visual()
Executing Test_map_cursor()
Executing Test_map_feedkeys()
Executing Test_map_langmap()
Executing Test_map_meta_quotes()
Executing Test_match()
Executing Test_matchaddpos()
Executing Test_matchaddpos_using_negative_priority()
Executing Test_matchstrpos()
Executing Test_max_min_errors()
Executing Test_messages()
Executing Test_missing_attr()
Executing Test_move_cursor()
Executing Test_named_function_closure()
Executing Test_no_type_checking()
Executing Test_noinsert_complete()
Executing Test_non_zero_arg()
Executing Test_not_existing()
Executing Test_not_lamda()
Executing Test_oneshot()
Executing Test_option_value()
Executing Test_options()
Executing Test_partial_args()
Executing Test_partial_dict()
Executing Test_partial_exists()
Executing Test_partial_implicit()
Executing Test_partial_string()
Executing Test_path_keep_commas()
Executing Test_paused()
Executing Test_popup_complete()
Executing Test_popup_complete2()
Executing Test_popup_completion_insertmode()
Executing Test_printf_64bit()
Executing Test_printf_errors()
Executing Test_printf_float()
Executing Test_printf_misc()
Executing Test_printf_spec_b()
Executing Test_printf_spec_s()
Executing Test_ptag_with_notagstack()
Executing Test_read_only()
Executing Test_recursive_delete()
Executing Test_redefine_dict_func()
Executing Test_ref_job_partial_dict()
Executing Test_reltime()
Executing Test_repeat_many()
Executing Test_repeat_three()
Executing Test_retain_partial()
Executing Test_script_function_in_dict()
Executing Test_script_function_in_dict_arg()
Executing Test_searchpos()
Executing Test_set_add()
Executing Test_set_backslash()
Executing Test_set_reg_null_list()
Executing Test_set_tagcase()
Executing Test_setmatches()
Executing Test_signcolumn()
Executing Test_sort_default()
Executing Test_sort_float()
Executing Test_sort_nested()
Executing Test_sort_numbers()
Executing Test_sort_numeric()
Executing Test_sort_strings()
Executing Test_special_char()
Executing Test_statusline_will_be_disabled_with_error()
Executing Test_stop_all_in_callback()
Executing Test_stop_in_callback()
Executing Test_stopall()
Executing Test_strcharpart()
Executing Test_strgetchar()
Executing Test_substitute_expr()
Executing Test_substitute_expr_arg()
Executing Test_symlink_delete()
Executing Test_symlink_dir_delete()
Executing Test_symlink_recursive_delete()
Executing Test_tabline_will_be_disabled_with_error()
Executing Test_tabnext_on_buf_unload1()
Executing Test_tabnext_on_buf_unload2()
Executing Test_tabpage()
Executing Test_tabpage_with_autocmd()
Executing Test_tabpage_with_tab_modifier()
Executing Test_tagcase()
Executing Test_three_windows()
Executing Test_tostring()
Executing Test_true_false_arg()
Executing Test_valid()
Executing Test_version()
Executing Test_vim_did_enter()
Executing Test_whichwrap()
Executing Test_win_tab_autocmd()
Executing Test_window_cmd_cmdwin_with_vsp()
Executing Test_window_cmd_ls0_with_split()
Executing Test_window_cmd_wincmd_gf()
Executing Test_with_directories()
Executing Test_with_partial_callback()
Executing Test_with_tilde()
Executing Test_wrong_arguments()
Executed 188 tests
4 FAILED:
Found errors in Test_matchaddpos_using_negative_priority():
function RunTheTest[9]..Test_matchaddpos_using_negative_priority line 20: 'Match with negative priority is incorrectly highlighted with Search highlight.'
Found errors in Test_noinsert_complete():
function RunTheTest[9]..Test_noinsert_complete line 15: Expected 'soundfold' but got 'soun'
function RunTheTest[9]..Test_noinsert_complete line 16: Expected 'soundfold' but got ''
function RunTheTest[9]..Test_noinsert_complete line 22: Expected 'source' but got ''
Found errors in Test_popup_complete():
function RunTheTest[9]..Test_popup_complete line 6: Expected ['Ju'] but got ['June']
function RunTheTest[9]..Test_popup_complete line 11: Expected ['August'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 41: Expected ['July'] but got ['Jul']
function RunTheTest[9]..Test_popup_complete line 77: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 82: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 87: Expected ['February'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 92: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 97: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 102: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 107: Expected ['October'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 112: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 117: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 122: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 142: Expected ['September'] but got ['January', '']
function RunTheTest[9]..Test_popup_complete line 159: Expected ['December2015', 'December201', ''] but got ['December2015', 'December2015', '']
function RunTheTest[9]..Test_popup_complete line 177: Expected ['March', 'M', 'March'] but got ['March', 'M', 'M', '']
Found errors in Test_popup_completion_insertmode():
function RunTheTest[9]..Test_popup_completion_insertmode line 5: Expected 'February' but got ''
function RunTheTest[9]..Test_popup_completion_insertmode line 10: Expected 'February' but got ''


From test_matchadd_conceal.vim:
Found errors in Test_clearmatches():
function RunTheTest[9]..Test_clearmatches line 29: Expected 0 differs from 0
Found errors in Test_default_conceal_char():
function RunTheTest[9]..Test_default_conceal_char line 13: Expected 0 differs from 0
function RunTheTest[9]..Test_default_conceal_char line 26: Expected 0 differs from 0

From test_alot_utf8.vim:
Found errors in Test_match_using_multibyte_conceal_char():
function RunTheTest[9]..Test_match_using_multibyte_conceal_char line 14: Expected 0 differs from 0

From test_alot.vim:
Found errors in Test_matchaddpos_using_negative_priority():
function RunTheTest[9]..Test_matchaddpos_using_negative_priority line 20: 'Match with negative priority is incorrectly highlighted with Search highlight.'
Found errors in Test_noinsert_complete():
function RunTheTest[9]..Test_noinsert_complete line 15: Expected 'soundfold' but got 'soun'
function RunTheTest[9]..Test_noinsert_complete line 16: Expected 'soundfold' but got ''
function RunTheTest[9]..Test_noinsert_complete line 22: Expected 'source' but got ''
Found errors in Test_popup_complete():
function RunTheTest[9]..Test_popup_complete line 6: Expected ['Ju'] but got ['June']
function RunTheTest[9]..Test_popup_complete line 11: Expected ['August'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 41: Expected ['July'] but got ['Jul']
function RunTheTest[9]..Test_popup_complete line 77: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 82: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 87: Expected ['February'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 92: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 97: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 102: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 107: Expected ['October'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 112: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 117: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 122: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 142: Expected ['September'] but got ['January', '']
function RunTheTest[9]..Test_popup_complete line 159: Expected ['December2015', 'December201', ''] but got ['December2015', 'December2015', '']
function RunTheTest[9]..Test_popup_complete line 177: Expected ['March', 'M', 'March'] but got ['March', 'M', 'M', '']
Found errors in Test_popup_completion_insertmode():
function RunTheTest[9]..Test_popup_completion_insertmode line 5: Expected 'February' but got ''
function RunTheTest[9]..Test_popup_completion_insertmode line 10: Expected 'February' but got ''

Test results:


From test_matchadd_conceal.vim:
Found errors in Test_clearmatches():
function RunTheTest[9]..Test_clearmatches line 29: Expected 0 differs from 0
Found errors in Test_default_conceal_char():
function RunTheTest[9]..Test_default_conceal_char line 13: Expected 0 differs from 0
function RunTheTest[9]..Test_default_conceal_char line 26: Expected 0 differs from 0

From test_alot_utf8.vim:
Found errors in Test_match_using_multibyte_conceal_char():
function RunTheTest[9]..Test_match_using_multibyte_conceal_char line 14: Expected 0 differs from 0

From test_alot.vim:
Found errors in Test_matchaddpos_using_negative_priority():
function RunTheTest[9]..Test_matchaddpos_using_negative_priority line 20: 'Match with negative priority is incorrectly highlighted with Search highlight.'
Found errors in Test_noinsert_complete():
function RunTheTest[9]..Test_noinsert_complete line 15: Expected 'soundfold' but got 'soun'
function RunTheTest[9]..Test_noinsert_complete line 16: Expected 'soundfold' but got ''
function RunTheTest[9]..Test_noinsert_complete line 22: Expected 'source' but got ''
Found errors in Test_popup_complete():
function RunTheTest[9]..Test_popup_complete line 6: Expected ['Ju'] but got ['June']
function RunTheTest[9]..Test_popup_complete line 11: Expected ['August'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 41: Expected ['July'] but got ['Jul']
function RunTheTest[9]..Test_popup_complete line 77: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 82: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 87: Expected ['February'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 92: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 97: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 102: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 107: Expected ['October'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 112: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 117: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 122: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 142: Expected ['September'] but got ['January', '']
function RunTheTest[9]..Test_popup_complete line 159: Expected ['December2015', 'December201', ''] but got ['December2015', 'December2015', '']
function RunTheTest[9]..Test_popup_complete line 177: Expected ['March', 'M', 'March'] but got ['March', 'M', 'M', '']
Found errors in Test_popup_completion_insertmode():
function RunTheTest[9]..Test_popup_completion_insertmode line 5: Expected 'February' but got ''
function RunTheTest[9]..Test_popup_completion_insertmode line 10: Expected 'February' but got ''
TEST FAILURE
Makefile:41: recipe for target 'report' failed
make[2]: *** [report] Error 1
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-basic/testdir'
Makefile:1992: recipe for target 'scripttests' failed
make[1]: *** [scripttests] Error 2
make[1]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-basic'
debian/rules:279: recipe for target 'build-stamp-vim-basic' failed
make: *** [build-stamp-vim-basic] Error 2
make: *** Waiting for unfinished jobs....
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/fold.o fold.c
make[1]: warning: -jN forced in submake: disabling jobserver mode.
make[1]: Entering directory '/<<PKGBUILDDIR>>/src/vim-gtk'
/usr/bin/make -f Makefile vim
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-gtk'
make[2]: 'vim' is up to date.
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-gtk'
if test -n "yes" -a -f po/Makefile; then \
	cd po; /usr/bin/make -f Makefile check VIM=../vim; \
fi
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-gtk/po'
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq af.po
touch af.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ca.po
touch ca.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq cs.po
touch cs.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq de.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/getchar.o getchar.c
touch de.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq en_GB.po
touch en_GB.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq eo.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/hardcopy.o hardcopy.c
touch eo.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq es.po
touch es.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq fi.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/hashtab.o hashtab.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/if_cscope.o if_cscope.c
touch fi.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq fr.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/if_xcmdsrv.o if_xcmdsrv.c
touch fr.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ga.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/list.o list.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/mark.o mark.c
touch ga.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq it.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/memline.o memline.c
touch it.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/menu.o menu.c
touch ja.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ko.po
touch ko.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ko.UTF-8.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/misc1.o misc1.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/misc2.o misc2.c
touch ko.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq nb.po
touch nb.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq nl.po
touch nl.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq no.po
touch no.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/move.o move.c
touch pl.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pt_BR.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/mbyte.o mbyte.c
touch pt_BR.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ru.po
touch ru.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sk.po
touch sk.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sv.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/normal.o normal.c
touch sv.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq uk.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/ops.o ops.c
touch uk.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq vi.po
touch vi.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.UTF-8.po
touch zh_CN.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.po
touch zh_CN.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_TW.UTF-8.po
touch zh_TW.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_TW.po
touch zh_TW.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq cs.cp1250.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -I/usr/include/lua5.2 -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv  -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/arm-linux-gnueabihf/perl/5.24/CORE   -I/usr/include/python3.5m -DPYTHON3_HOME='L"/usr"' -pthread -fPIE -I/usr/include/ruby-2.3.0 -I/usr/include/arm-linux-gnueabihf/ruby-2.3.0 -DRUBY_VERSION=23 -I/usr/include/tcl8.6  -D_REENTRANT=1  -D_THREAD_SAFE=1  -D_LARGEFILE64_SOURCE=1  -o objects/option.o option.c
touch cs.cp1250.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.sjis.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/os_unix.o os_unix.c
touch ja.sjis.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.euc-jp.po
touch ja.euc-jp.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.cp1250.po
touch pl.cp1250.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.UTF-8.po
touch pl.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ru.cp1251.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/pathdef.o auto/pathdef.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv  -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/arm-linux-gnueabihf/perl/5.24/CORE  -o objects/if_perl.o auto/if_perl.c
touch ru.cp1251.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sk.cp1250.po
touch sk.cp1250.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq uk.cp1251.po
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA   -Wdate-time  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       version.c -o objects/version.o
touch uk.cp1251.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.cp936.po
link.sh: $LINK_AS_NEEDED set to 'yes': invoking linker directly.
  gcc   -L. -Wl,-z,relro -Wl,-z,now -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-E  -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed 	-o vim objects/arabic.o objects/buffer.o objects/blowfish.o objects/charset.o objects/crypt.o objects/crypt_zip.o objects/dict.o objects/diff.o objects/digraph.o objects/edit.o objects/eval.o objects/evalfunc.o objects/ex_cmds.o objects/ex_cmds2.o objects/ex_docmd.o objects/ex_eval.o objects/ex_getln.o objects/farsi.o objects/fileio.o objects/fold.o objects/getchar.o objects/hardcopy.o objects/hashtab.o  objects/if_cscope.o objects/if_xcmdsrv.o objects/list.o objects/mark.o objects/memline.o objects/menu.o objects/misc1.o objects/misc2.o objects/move.o objects/mbyte.o objects/normal.o objects/ops.o objects/option.o objects/os_unix.o objects/pathdef.o objects/popupmnu.o objects/quickfix.o objects/regexp.o objects/screen.o objects/search.o objects/sha256.o objects/spell.o objects/spellfile.o objects/syntax.o objects/tag.o objects/term.o objects/ui.o objects/undo.o objects/userfunc.o objects/version.o objects/window.o objects/gui.o objects/gui_athena.o objects/gui_x11.o objects/pty.o objects/gui_beval.o objects/gui_at_sb.o objects/gui_at_fs.o objects/if_lua.o  objects/if_perl.o objects/if_perlsfio.o  objects/if_python3.o objects/if_tcl.o objects/if_ruby.o   objects/netbeans.o objects/channel.o  objects/json.o objects/main.o objects/memfile.o objects/message.o -lXaw -lXmu -lXext -lXt -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE -ldl  -lm -ltinfo -lnsl  -lselinux  -lacl -lattr -lgpm -ldl  -L/usr/lib -llua5.2 -Wl,-E  -fstack-protector-strong -L/usr/local/lib  -L/usr/lib/arm-linux-gnueabihf/perl/5.24/CORE -lperl -ldl -lm -lpthread -lcrypt  -L/usr/lib/python3.5/config-3.5m-arm-linux-gnueabihf -lpython3.5m -lpthread -ldl -lutil -lm -L/usr/lib/arm-linux-gnueabihf -ltcl8.6 -ldl -lz -lpthread -lieee -lm -lruby-2.3 -lpthread -lgmp -ldl -lcrypt -lm     
touch zh_CN.cp936.ck
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-gtk/po'
if test vim != vim -a ! -r vim; then \
	ln -s vim vim; \
fi
cd testdir; /usr/bin/make -f Makefile gui VIMPROG=../vim  SCRIPTSOURCE=../../runtime
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-gtk/testdir'
rm -f test.log messages
rm -rf test1.failed test.out X* viminfo tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok benchmark.out wrongtermsize
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test1.in
[?1h="test1.in" 57 lines, 2069 charactersFirst a simple test to check if the test script works.

If Vim was not compiled with the +eval feature, the small.vim script will be
set to copy the test.ok file to test.out, so that it looks like the test
succeeded.  Otherwise an empty small.vim is written.  small.vim is sourced by
tests that require the +eval feature or other features that are missing in the
small version.

If Vim was not compiled with the +windows feature, the tiny.vim script will be
set like small.vim above.  tiny.vim is sourced by tests that require the
+windows feature or other features that are missing in the tiny version.

If Vim was not compiled with the +multi_byte feature, the mbyte.vim script will
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
:" If columns or lines are too small, create wrongtermsize.
:" (Some tests will fail. When columns and/or lines are small)
:if &lines < 24 || &columns < 80 | sp another | w! wrongtermsize | qa! | endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 35 lines, 1133 characters written:set ff& cpo+=A



/ENDTEST: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
:w! small.vim
:" If +windows feature not supported :sp will fail and tiny.vim will be
:" written to skip the test.
:sp another
:wq! tiny.vim
:qa!
ENDTEST


:so! Xdotest
:" If columns or lines are too small, create wrongtermsize.
:" (Some tests will fail. When columns and/or lines are small)
:if &lines < 24 || &columns < 80 | sp another | w! wrongtermsize | qa! | endif
:"
:" Write a single line to test.out to check if testing works at all.
:%d
~~~~~~~~~~~~~~~~~~~~~
~
--No lines in buffer--this is a test:w! test.out
"test.out" [New File] 1 line, 15 characters written:" Create small.vim and tiny.vim empty, create mbyte.vim to skip the test.

:w! small.vim
"small.vim" [New File] 1 line, 1 character written:w! tiny.vim
"tiny.vim" [New File] 1 line, 1 character writtene! test.ok
w! test.out
qa!:w! mbyte.vim
"mbyte.vim" [New File] 4 lines, 28 characters written:w! mzscheme.vim
"mzscheme.vim" [New File] 4 lines, 28 characters written:w! lua.vim
"lua.vim" [New File] 4 lines, 28 characters written:"
:" If +multi_byte feature supported, make mbyte.vim empty.
:if has("multi_byte") | sp another | w! mbyte.vim | q | endif
"another" [New File]
"mbyte.vim" 0 lines, 0 characters writtene! test.ok:"
:" 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
"another" [New File]
"lua.vim" 0 lines, 0 characters writtene! test.ok:"
:" 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
[?1l>rm -rf X* viminfo
rm -rf test3.failed test.ok test.out X* viminfo
cp test3.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test3.in
[?1h="test3.in" 2303 lines, 22649 characters/* vim: set cin ts=4 sw=4 : */

Test for 'cindent'

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo modeline
:edit" read modeline
/start of AUTO
=/end of AUTO
ENDTEST

/* start of AUTO matically checked vim: set ts=4 : */
{if (test)cmd1;cmd2;
}

{if (test)cmd1;else:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/* vim: set cin ts=4 sw=4 : *//^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" link.sh: Linked fine
make[1]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-athena'
[ yes != "yes" ] || flock debian /usr/bin/make -j1 -C src/vim-athena test
[New File] 5 lines, 125 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo modeline
:edit                " read modeline
"test3.in"2303L, 22649Cif (test)cmd1;cmd2;if (test)cmd1;else/start of AUTO
/end of AUTO
956 lines to indent...
9500
850
750
650
550
450
350
250
150
50 lines to indent... 
957 lines indented /^STARTTEST
}break;default:baz();baz();break;
    }
}

/* end of AUTO */

STARTTEST
:set tw=0 wm=60 columns=80 noai fo=croq
/serious/e
a about life, the universe, and the rest^[
ENDTEST

{

/* this is
 * a real serious important big
 * comment
 */
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 93C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set tw=0 wm=60 columns=80 noai fo=croq
}break;default:baz();baz();break;
    }
}

/* end of AUTO */

STARTTEST
:set tw=0 wm=60 columns=80 noai fo=croq
/serious/e
a about life, the universe, and the rest^[
ENDTEST

{

/* this is
 * a real serious important big
 * comment
 *//serious/e



-- INSERT --
about life, the
 * universe, and the
 * rest important big
* comment
/^STARTTEST





*/
    /* insert " about life, the universe, and the rest" after "serious" */
}

STARTTEST
:set nocin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 6L, 78C written:set ff& cpo+=A

/ENDTEST/+-1




/comments
joabout life^[/happens
jothere^[/below
oline^[/this
Ohello^[
ENDTEST

:so! Xdotest
:set nocin
/comments




{
    /** Testing for comments, without 'cin' set
*/
-- INSERT --
about life
/happens



/*
* what happens here?
*/
-- INSERT --
there
/below



/*the end of the comment, try inserting a line below */
-- INSERT --
line
/this



/* how aboutthis one */
-- INSERT --hello
this one */
/^STARTTEST



}

STARTTEST
:set cin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 18C written:set ff& cpo+=A

/ENDTEST/+-1

/vec2
==
ENDTEST

:so! Xdotest
:set cin
/vec2





{
    var = this + that + vec[0] * vec[0]+ vec[1] * vec[1]+ vec2[2] * vec[2];
}
/^STARTTEST


STARTTEST
:set cin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5L, 51C written:set ff& cpo+=A

/ENDTEST/+-1



:set cino=}4
/testing1
k2==/testing2
k2==
ENDTEST

:so! Xdotest
:set cin
:set cino=}4
/testing1








{asdf asdflkajds f;
    if (tes & ting) {asdf asdf asdf ;asdfa sdf asdf;}
    testing1; 

/testing2






if (tes & ting)
    {asdf asdf asdf ;asdfa sdf asdf;}
    testing2; 
/^STARTTEST



}

STARTTEST
:set cin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 4L, 36C written:set ff& cpo+=A

/ENDTEST/+-1


:set cino=(0,)20
/main
=][
ENDTEST

:so! Xdotest
:set cin
:set cino=(0,)20
/main


main ( int first_par, /*
19 lines to indent...
20indented 
* Comment for
/^STARTTEST
* Comment for* first par*/second_par /** Comment for* second par*/);

}

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();
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 4L, 36C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cin
:set cino=es,n0s
/main
8 lines to indent...
9indented 
/^STARTTEST







else
    {bar();
    }
}

STARTTEST
:set cin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 26C written:set ff& cpo+=A

/ENDTEST/+-1

:set cino=
]]=][
ENDTEST

:so! Xdotest
:set cin
:set cino=


{
11 lines to indent...
12indented 
do
/^STARTTEST
if (){if ()asdf;elseasdf;}
    } while ();
    cmd;/* this should go under the } */
}

STARTTEST
]]=][
ENDTEST

void f()
{
    if ( k() ) {l();} else { /* Start (two words) end */m();
    }
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 1L, 6C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest



8 lines to indent...
9indented 
   /^STARTTEST





n();
}

STARTTEST
:set cino={s,e-s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
]]=][
ENDTEST

:so! Xdotest
:set cino={s,e-s



void f()
{
7 lines to indent...
8indented     {
if ( k() )
/^STARTTEST









{l();} else { /* Start (two words) end */m();}
    n();    /* should be under the if () */
}

STARTTEST
:set cino={s,fs

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 25C written:set ff& cpo+=A

/ENDTEST/+-1
]]=/ foo
ENDTEST

:so! Xdotest
:set cino={s,fs



void bar(void)
{
/ foo
30 lines to indent...
31indented     {/^STARTTEST
void func(void)
    {
    a = 1;{b = 2;}
    c = 3;
    d = 4;
    }
/* foo */

STARTTEST
:set cino=
/while
ohere^[
ENDTEST

a()
{
  do {
    a = a +a;
  } while ( a );/* add text under this line */
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 25C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=
/while

-- INSERT --
here
if ( a )
    i
/^STARTTEST




a;
}

STARTTEST
:set cino= com=

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 109C written:set ff& cpo+=A

/ENDTEST/+-1


/comment
olabel2: b();^Mlabel3 /* post */:^M/* pre */ label4:^Mf(/*com*/);^Mif (/*com*/)^^Mcmd();^[
ENDTEST

:so! Xdotest
:set cino= com=
/comment






a()
{
label1:/* hmm */// comment
-- INSERT --





label2: b();
label3 /* post */:
/* pre */ label4:f(/*com*/);if (/*com*/)cmd();
}
/^STARTTEST


STARTTEST
:set comments& comments^=s:/*,m:**,ex:*/

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 53C written:set ff& cpo+=A

/ENDTEST/+-1

/simple
=5j
ENDTEST

:so! Xdotest
:set comments& comments^=s:/*,m:**,ex:*/
/simple



/*
  * A simple comment
5 lines to indent...
6indented * A simple comment
*/
/^STARTTEST






/*
** A different comment
*/

STARTTEST
:set cino=c0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 70C written:set ff& cpo+=A

/ENDTEST/+-1

:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=c0
:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][ENDTEST

void f()
{
4 lines to indent...
5indented 

/^STARTTEST






/*********A comment.
    *********/
}

STARTTEST
:set cino=c0,C1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 73C written:set ff& cpo+=A

/ENDTEST/+-1

:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=c0,C1
:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][ENDTEST

void f()
{
4 lines to indent...
5indented 

/^STARTTEST






/*********
    A comment.
    *********/
}

STARTTEST
:set cino=

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 17C written:set ff& cpo+=A

/ENDTEST/+-1
]]=][
ENDTEST

:so! Xdotest
:set cino=



void f()
{
5 lines to indent...
6indented 
c = c1 &&
/^STARTTEST







(c2 ||c3) && c4;
}

STARTTEST
:set cino=(s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(s
2kdd]]=][ENDTEST

void f()
{
5 lines to indent...
6indented 
c = c1 &&
/^STARTTEST







(c2 ||c3) && c4;
}

STARTTEST
:set cino=(s,U1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 28C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(s,U1  
2kdd]]=][ENDTEST

void f()
{
5 lines to indent...
6indented 
c = c1 &&
/^STARTTEST







(c2 ||c3) && c4;
}

STARTTEST
:set cino=(0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0
2kdd]]=][ENDTEST

void f()
{
4 lines to indent...
5indented 
if (   c1
/^STARTTEST






&& (   c2|| c3))foo;
}

STARTTEST
:set cino=(0,w1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 28C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0,w1  
2kdd]]=][ENDTEST

void f()
{
4 lines to indent...
5indented 
if (   c1
/^STARTTEST






&& (   c2|| c3))foo;
}

STARTTEST
:set cino=(s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(s
2kdd]]=][ENDTEST

void f()
{
8 lines to indent...
9indented 
c = c1 && (
/^STARTTEST










c2 ||c3) && c4;
    if (c1 && c2)foo;
}

STARTTEST
:set cino=(s,m1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 28C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(s,m1  
2kdd]]=][ENDTEST

void f()
{
8 lines to indent...
9indented 
c = c1 && (
/^STARTTEST










c2 ||c3
    ) && c4;
    if (c1 && c2
    )foo;
}

STARTTEST
:set cino=b1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=b1
2kdd]]=][ENDTEST

void f()
{
9 lines to indent...
10 lines indented 
switch (x)
/^STARTTEST











{case 1:a = b;break;default:a = 0;break;
    }
}

STARTTEST
:set cino=(0,W5

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 26C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0,W5
2kdd]]=][ENDTEST

void f()
{
10 lines to indent...
11indented 
invokeme(
/^STARTTEST












argu,ment);
    invokeme(argu,ment);
    invokeme(argu,ment);
}

STARTTEST
:set cino=/6

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=/6
2kdd]]=][ENDTEST

void f()
{
3 lines to indent...
4indented 
statement;
/^STARTTEST





// comment 1// comment 2
}

STARTTEST
:set cino=

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 34C written:set ff& cpo+=A

/ENDTEST/+-1

2kdd]]/comment 1/+1
==
ENDTEST

:so! Xdotest
:set cino=
==ENDTEST

void f()
{
/comment 1/+1



statement;// comment 1
    // comment 2    // comment 2
}
/^STARTTEST


STARTTEST
:set cino=g0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=g0
2kdd]]=][ENDTEST

class CAbc
{
6 lines to indent...
7indented 
int Test() { return FALSE; }
/^STARTTEST








public: // comment
    void testfall();
protected:
    void testfall();
};

STARTTEST
:set cino=(0,gs,hs

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 29C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0,gs,hs
2kdd]]=][ENDTEST

class Foo : public Bar
{
5 lines to indent...
6indented 
public:
/^STARTTEST







virtual void method1(void) = 0;virtual void method2(int arg1,int arg2,int arg3) = 0;
};

STARTTEST
:set cino=+20

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 24C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=+20
2kdd]]=][ENDTEST


void
foo()
{
4 lines to indent...
5indented 
if (a)
/^STARTTEST






{
    } elseasdf;
}

STARTTEST
:set cino=(0,W2s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 27C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0,W2s
2kdd]]=][ENDTEST
{
34 lines to indent...
35indented 
averylongfunctionnamelongfunctionnameaverylongfunctionname()->asd(
/^STARTTEST
dec)->asdfasdfasdf(asdfadsf,asdfasdf,asdfasdf,),func(asdfadf,asdfasdf),asdasdf);
}

STARTTEST
:set cino=M1
2kdd]]=][
ENDTEST

int main ()
{
    if (cond1 &&cond2)foo;
}
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=M1

4 lines to indent...
5indented 
   /^STARTTEST

STARTTEST
:set cino=(0,ts

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 26C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd2j=][
ENDTEST

:so! Xdotest
:set cino=(0,ts
2kdd2j=][ENDTEST


7 lines to indent...
8indented 
void func(int a
/^STARTTEST









#if defined(FOO), int b, int c
#endif)
{
}

STARTTEST
:set cino=(0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd2j=][
ENDTEST

:so! Xdotest
:set cino=(0
2kdd2j=][ENDTEST


8 lines to indent...
9indented 
void
/^STARTTEST










func(int a
#if defined(FOO), int b, int c
#endif
    )
{
}

STARTTEST
:set cino&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 22C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd2j=7][
ENDTEST

:so! Xdotest
:set cino&
2kdd2j=7][
ENDTEST


69 lines to indent...
50
7indented 
void func(void)
/^STARTTEST
int a,int b)
{
}void
func6(int a)
{
}

STARTTEST
:set cino&
:set cino+=l1
2kdd2j=][
ENDTEST

void func(void)
{
    int tab[] =
    {1, 2, 3,4, 5, 6};
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino&
:set cino+=l1



22 lines to indent...
23indented 
/^STARTTEST
break;case baz: {printf("baz");break;}case quux:printf("But don't break the indentation of this instruction\n");break;
    }
}

STARTTEST
:set cino&
2kdd2j=][
ENDTEST

void func(void)
{
    cout << "a"
    << "b"
    << ") :"
    << "c";
}
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 21C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino&



6 lines to indent...
7indented     << "b"
        << ") :"
        << "c";
/^STARTTEST

STARTTEST
:set com=s1:/*,m:*,ex:*/

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 38C written:set ff& cpo+=A

/ENDTEST/+-1
]]3jofoo();^[
ENDTEST

:so! Xdotest
:set com=s1:/*,m:*,ex:*/



void func(void)
{


/** This is a comment.*/
-- INSERT --
foo();
}
/^STARTTEST


STARTTEST
:set cino&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 21C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd2j=][
ENDTEST

:so! Xdotest
:set cino&
2kdd2j=][ENDTEST


8 lines to indent...
9indented 
void func(void)
/^STARTTEST










{
    for (int i = 0; i < 10; ++i)if (i & 1) {foo(1);} elsefoo(0);
    baz();
}

STARTTEST
:set cino=k2s,(0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 27C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd3j=][
ENDTEST

:so! Xdotest
:set cino=k2s,(0
2kdd3j=][ENDTEST
void func(void)
23 lines to indent...
24indented 
{
/^STARTTEST
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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 27C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,(s




23 lines to indent...
24indented         && condition2)
        action();    && argument2);
/^STARTTEST
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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 30C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,(s,U1




24 lines to indent...
25indented         && condition2)
        action();    && argument2);
/^STARTTEST
&& (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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 30C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,(0,W4




29 lines to indent...
30indented         && condition2)
        action();         && argument2);
/^STARTTEST
&& (   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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 27C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,u2




18 lines to indent...
19indented         && condition2)
        action();        && argument2);
/^STARTTEST
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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 30C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,(0,w1




27 lines to indent...
28indented         && condition2)
        action();         && argument2);
/^STARTTEST
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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 26C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2,(s




14 lines to indent...
15indented 
/^STARTTEST










if (c1 && (c2 ||c3))foo;
    if (c1 &&(c2 || c3))
    {
    }
}

STARTTEST
:set cino=N-s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 47C written:set ff& cpo+=A

/ENDTEST/+-1

/^NAMESPACESTART
=/^NAMESPACEEND
ENDTEST

:so! Xdotest
:set cino=N-s
/^NAMESPACESTART


NAMESPACESTART
/^NAMESPACEEND
61 lines to indent...
50
62indented /^STARTTEST
namespace test test2
{
    1111111111111111111;
}
namespace111111111
{
    111111111111111111;
}
NAMESPACEEND


STARTTEST
:set cino=j1,J1
/^JSSTART
=/^JSEND
ENDTEST

JSSTART
var bar = {
foo: {
that: this,
some: ok,
},
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=j1,J1
/^JSSTART
/^JSEND
12 lines to indent...
13indented     foo: {
        that: this,
        some: ok,
    },/^STARTTEST










"bar":{a : 2,b: "123abc",x: 4,"y": 5
    }
}
JSEND

STARTTEST
:set cino=j1,J1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A

/ENDTEST/+-1

/^JSSTART
=/^JSEND
ENDTEST

:so! Xdotest
:set cino=j1,J1
/^JSSTART


JSSTART
/^JSEND
5 lines to indent...
6indented /^STARTTEST








var foo = [
    1,
    2,
    3
];
JSEND

STARTTEST
:set cino=j1,J1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A

/ENDTEST/+-1

/^JSSTART
=/^JSEND
ENDTEST

:so! Xdotest
:set cino=j1,J1
/^JSSTART


JSSTART
/^JSEND
7 lines to indent...
8indented /^STARTTEST










function bar() {
    var foo = [1,2,3
    ];
}
JSEND

STARTTEST
:set cino=j1,J1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A

/ENDTEST/+-1

/^JSSTART
=/^JSEND
ENDTEST

:so! Xdotest
:set cino=j1,J1
/^JSSTART


JSSTART
/^JSEND
58 lines to indent...
509indented /^STARTTEST
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: [
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=j1,J1
/^JSSTART
/^JSEND
14 lines to indent...
15indented     $(this).data(class_name+'_public',$.extend({},{
        foo: 'bar',
        bar: 2,
        foobar: [/^STARTTEST












1,2,3],callback: function(){return true;}
    }, options||{}));
}
JSEND

STARTTEST
:set cino=j1,J1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A

/ENDTEST/+-1

/^JSSTART
=/^JSEND
ENDTEST

:so! Xdotest
:set cino=j1,J1
/^JSSTART


JSSTART
/^JSEND
16 lines to indent...
17indented /^STARTTEST
2,3],callback: function(){return true;}}, options||{}));
    }
})(jQuery);
JSEND

STARTTEST
:set cino=j1,J1,+2
/^JSSTART
=/^JSEND
ENDTEST

JSSTART
// Results of JavaScript indent
// 1
(function(){
var a = [
'a',
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 38C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=j1,J1,+2
/^JSSTART
/^JSEND
149 lines to indent...
100
50 lines to indent... 
150 lines indented     var a = [
      'a',/^STARTTEST
'e',
  'f',
  'g',
  'h',
  'i'
];

// 10
var a,
    b,
    c,
    d,
    e,
    f,
    g,
    h,
    i;
JSEND

STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d
:1;/start of AUTO/,$wq! test.out
ENDTEST



:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 61C written:set ff& cpo+=A



/ENDTEST/+-1
:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
221 fewer lines5 *9 *c
  'd
  'e',
  'f',
  'g',
  'h',
  'i'];// 10var a
    b
    c
    d
    e,
    f,
    g,
    h,    i;JSEND:1;/start of AUTO/,$wq! test.out
"test.out" [New] 2062L, 19815C written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test3 = test61; then \
#	  if diff test.out test3.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test3.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test3.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test4.failed test.ok test.out X* viminfo
cp test4.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test4.in
[?1h="test4.in" 34 lines, 960 charactersTest for autocommand that changes current buffer on BufEnter event.
Check if modelines are interpreted for the correct buffer.

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo
:au BufEnter Xxx brew
/start of
:.,/end of/w! Xxx   " write test file Xxx
:set ai modeline modelines=3
:sp Xxx" split to Xxx, autocmd will do :brew
G?this is a
othis should be auto-indented^[
:" Append text with autoindent to this file
:au! BufEnter Xxx
:buf Xxx" go to Xxx, no autocmd anymore
G?this is a
othis should be in column 1^[:wq " append text without autoindent to Xxx
G:r Xxx" include Xxx in the current file
:set fo+=r" issue #57 do not move cursor on <c-o> when autoindent is sset
Go# abcdef^[2hi
^Od0^[o# abcdef^[2hi^Od0^[::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for autocommand that changes current buffer on BufEnter event./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 20 lines, 678 characters written:set ff& cpo+=A
/ENDTEST


:?startstart?,$w! test.out
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo
:au BufEnter Xxx brew
/start of


startstart
start of test file Xxx
:.,/end of/w! Xxx   " write test file Xxx
"Xxx" [New] 7L, 124C written:set ai modeline modelines=3
:sp Xxx             " split to Xxx, autocmd will do :brew
"Xxx" 7L, 124CTest for autocommand that changes current buffer on BufEnter event.
Check if modelines are interpreted for the correct buffer.STARTTESTo small.vim:set nocompatible viminfo+=nviminfo
:au BufEnter Xxx brew/start of.,/end of/w!" write test file Xxx
:set ai modeline modelines=3:sp Xxx    " split to Xxx, autocmd will do :brew
test4.in                                                                        :set fo+=rssue #57 do not move cursor on <c-o> when autoindent is ssetGo# abcdef^[2hi
^Od0^[o# abcdef^[2hi^Od0^[:
:?startstart?,$w! test.outqa!ENDTESTstartstart of test file Xxx
test4.in                                                                        test4.in" line 1 of 34 --2%-- col 1:qa!ENDTESTstartstart
start of test file Xxx
vim: set noai :        this is a test
        this is a test
        this is a test        this is a testend of test file Xxx?this is a
-- INSERT --        this should be auto-indented[+][+]
end of test file Xxx:                   " Append text with autoindent to this file
:au! BufEnter Xxx
:buf Xxx            " go to Xxx, no autocmd anymore
"Xxx" 7L, 124Cstart of test file Xxx
vim: set noai :
        this is a test
        this is a test
        this is a test

end of test file Xxx~~~~
Xxx         ?this is a
-- INSERT --this should be in column 1[+]:wq " append text without autoindent to Xxx
"Xxx8L, 151C written:au BufEnter Xxx brew/start of:.,/end of/w! Xxx   " write test file Xxx
:set ai modeline modelines=3
:sp Xxx             " split to Xxx, autocmd will do :brew
G?this is aothis should be auto-indented^[
:                   " Append text with autoindent to this file
:au! BufEnter Xxx
:buf Xxx" go to Xxx, no autocmd anymore
G?this is a
othis should be in column 1^[:wq " append text without autoindent to XxxG:r Xxx   nclude Xxx in the current file:set fo+=r" issue #57 do not move cursor on <c-o> when autoindent is ssetGo# abcdef^[2hi^Od0^[o# abcdef^[2hi^Od0^[:
:?startstart?,$w! test.out
:qa!ENDTESTstarstart of test file Xxx






vim: set noai :this is a testthis is a testthis is a testthis is a testthis should be auto-indented
end of test file Xxx
:r Xxx             " include Xxx in the current file
"Xxx" 8L, 151C
start of test file Xxx
:set fo+=r          " issue #57 do not move cursor on <c-o> when autoindent is 

set
:au! BufEnter Xxx






vim: set noai :this is a testthis is a testthis is a testthis is a test
this should be in column 1
end of test file Xxx

-- INSERT --
# abcdef
-- INSERT --
-- (insert) --
# defINSERT --defod
-- INSERT --
# abcdef
-- INSERT --
-- (insert) --
-- INSERT --def:d
::?startstart?,$w! test.out
"test.out" [New] 20L, 330C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test4 = test61; then \
#	  if diff test.out test4.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test4.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test4.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test5.failed test.ok test.out X* viminfo
cp test5.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test5.in
[?1h="test5.in" 29 lines, 949 charactersTest for autocommand that deletes the current buffer on BufLeave event.
Also test deleting the last buffer, should give a new, empty buffer.

STARTTEST
:so small.vim
:au BufLeave Xxx bwipe
/start of
:.,/end of/w! Xxx" write test file Xxx
:sp Xxx" split to Xxx
:bwipe" delete buffer Xxx, now we're back here
G?this is a
othis is some more text^[
:" Append some text to this file
:?start?,$w! test.out" Write current file contents
:bwipe test.out" delete alternate buffer
:au bufleave test5.in bwipe
:bwipe!" delete current buffer, get an empty one
ithis is another test line^[:w >>test.out
:" append an extra line to the output file
:qa!
ENDTEST

start of test file Xxx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for autocommand that deletes the current buffer on BufLeave event./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 16 lines, 664 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:au BufLeave Xxx bwipe
/start of
:.,/end of/w! Xxx               " write test file Xxx
"Xxx" [New File] 7 lines, 124 characters written:sp Xxx                         " split to Xxx
"Xxx" 7 lines, 124 charactersstart of test file Xxxvim: set noai :this is a test
        this is a test
        this is a test
        this is a test
end of test file Xxx~~~~
Xxx                                                                             ?start?,$w! test.outWrite current file contentsbwipe test.out      delete alternate bufferau bufleave test5.in bwipebwipe!                         " delete current buffer, get an empty one
ithis is another test line^[:w >>test.out:                               " append an extra line to the output file
:qa!ENDTESTstart of test file Xxx
test5.in                                                                        :bwipe                          " delete buffer Xxx, now we're back here
Test for autocommand that deletes the current buffer on BufLeave event.
Also test deleting the last buffer, should give a new, empty buffer.STARTTEST:so small.vim:au BufLeave Xxx bwipe
/start of:.,/end of/w! Xxx" write test file Xxx
:sp Xxx" split to Xxx
:bwipe" delete buffer Xxx, now we're back here
G?this is a
othis is some more text^[                    Append some text to this file
:?start?,$w! test.outWrite current file contents
:bwipe test.out                 " delete alternate buffer
:au bufleave test5.in bwipe:bwipe!                         " delete current buffer, get an empty one
ithis is another test line^[:w >>test.out   " append an extra line to the output file
:qa!ENDTESTstart of test file Xxx"test5.in" line 23 of 29 --79%-- col 1





vim: set noai :this is a testthis is a testthis is a testthis is a test
end of test file Xxx
?this is a

this is some more text
end of test file Xxx
:                               " Append some text to this file
:?start?,$w! test.out           " Write current file contents
"test.out" [New File] 8 lines, 147 characters written:bwipe test.out                 " delete alternate buffer
:au bufleave test5.in bwipe
:bwipe!                         " delete current buffer, get an empty one
Error detected while processing BufLeave Auto commands for "test5.in":
E89: No write since last change for buffer 1 (add ! to override)

Press ENTER or type command to continue~~~~~~~~~~~~~
~~~~~~~~~this is another test line:w >>test.out
"test.out" 1 line, 26 characters appended:                               " append an extra line to the output file
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test5 = test61; then \
#	  if diff test.out test5.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test5.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test5.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test7.failed test.ok test.out X* viminfo
cp test7.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test7.in
[?1h="test7.in" 26 lines, 675 charactersTest for autocommand that changes the buffer list, when doing ":ball".

STARTTEST
:so small.vim
/^start of
A1^[:.,/end of/w! Xxx1   " write test file Xxx1
:sp Xxx1
:close
$r2:.,/end of/w! Xxx2    " write test file Xxx2
:sp Xxx2
:close
$r3:.,/end of/w! Xxx3    " write test file Xxx3
:sp Xxx3
:close
:au BufReadPost Xxx2 bwipe
$r4:ball" open window for all args, close Xxx2
:.,$w! test.out" Write contents of this file
^W^W:w >>test.out" Append contents of second window (Xxx1)
^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!
ENDTEST

start of test file Xxx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for autocommand that changes the buffer list, when doing ":ball"./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 508 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^start of
1:.,/end of/w! Xxx1   " write test file Xxx1
"Xxx1" [New File] 4 lines, 77 characters written:sp Xxx1
"Xxx1" 4 lines, 77 charactersstart of test file Xxx1this is a test
        this is a test
end of test file Xxx~~~~~~~
Xxx1                                                                            closeau BufReadPost Xxx2 bwipe
$r4:ball                 " open window for all args, close Xxx2
:.,$w! test.outWrite contents of this file^W^W:w >>test.outAppend contents of second window (Xxx1)/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx1
test7.in [+]                                                                    :close
Test for autocommand that changes the buffer list, when doing ":ball".STARTTEST:so small.vim/^start of
A1^[:.,/end of/w! Xxx1   " write test file Xxx1
:sp Xxx1
:close
$r2:.,/end of/w! Xxx2    " write test file Xxx2
:sp Xxx2
:close
$r3:.,/end of/w! Xxx3    " write test file Xxx3sp Xxx3
:close:au BufReadPost Xxx2 bwipe$r4:ball       open window for all args, close Xxx2
:.,$w! test.out  Write contents of this filew >>test.out        " Append contents of second window (Xxx1)^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx12:.,/end of/w! Xxx2    " write test file Xxx2
"Xxx2" [New File] 4 lines, 77 characters written:sp Xxx2
"Xxx2" 4 lines, 77 charactersstart of test file Xxx2this is a test
        this is a test
end of test file Xxx~~~~~~~
Xxx2                                                                            closeau BufReadPost Xxx2 bwipe
$r4:ball                 " open window for all args, close Xxx2
:.,$w! test.outWrite contents of this file^W^W:w >>test.outAppend contents of second window (Xxx1)/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx2
test7.in [+]                                                                    :close
Test for autocommand that changes the buffer list, when doing ":ball".STARTTEST:so small.vim/^start of
A1^[:.,/end of/w! Xxx1   " write test file Xxx1
:sp Xxx1
:close
$r2:.,/end of/w! Xxx2    " write test file Xxx2
:sp Xxx2
:close
$r3:.,/end of/w! Xxx3    " write test file Xxx3sp Xxx3
:close:au BufReadPost Xxx2 bwipe$r4:ball       open window for all args, close Xxx2
:.,$w! test.out  Write contents of this filew >>test.out        " Append contents of second window (Xxx1)^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx23:.,/end of/w! Xxx3    " write test file Xxx3
"Xxx3" [New File] 4 lines, 77 characters written:sp Xxx3
"Xxx3" 4 lines, 77 charactersstart of test file Xxx3this is a test
        this is a test
end of test file Xxx~~~~~~~
Xxx3                                                                            closeau BufReadPost Xxx2 bwipe
$r4:ball                 " open window for all args, close Xxx2
:.,$w! test.outWrite contents of this file^W^W:w >>test.outAppend contents of second window (Xxx1)/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx3
test7.in [+]                                                                    :close
Test for autocommand that changes the buffer list, when doing ":ball".STARTTEST:so small.vim/^start of
A1^[:.,/end of/w! Xxx1   " write test file Xxx1
:sp Xxx1
:close
$r2:.,/end of/w! Xxx2    " write test file Xxx2
:sp Xxx2
:close
$r3:.,/end of/w! Xxx3    " write test file Xxx3sp Xxx3
:close:au BufReadPost Xxx2 bwipe$r4:ball       open window for all args, close Xxx2
:.,$w! test.out  Write contents of this filew >>test.out        " Append contents of second window (Xxx1)^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx3:au BufReadPost Xxx2 bwipe
4:ball                 " open window for all args, close Xxx2
"Xxx1"4 lines, 77 characters

"Xxx2" 4 lines, 77 characters

Press ENTER or type command to continue:.,$w! test.out          " Write contents of this file
"test.out" [New File] 4 lines, 77 characters written

Press ENTER or type command to continue:close
:au BufReadPost Xxx2 bwipe
$r4:ball" open window for all args, close Xxx2
:.,$w! test.out" Write contents of this file
^W^W:w >>test.out" Append contents of second window (Xxx1)
^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!
ENDTEST

start of test file Xxx4
test7.in [+]                                                                    start of test file Xxx1this is a testthis is a test
end of test file Xxx
~
~
~
~
~
~
~
Xxx1                                                                            
test7.in [+]                                                                    Xxx1                                                                            :w >>test.out        " Append contents of second window (Xxx1)
"test.out" 4 lines, 77 characters appendedtest7.in [+]                                                                    Xxx1                                                                            :/^start of/,$w >>test.out   " Append contents of last window (this file)
search hit BOTTOM, continuing at TOP"test.out" 4 lines, 77 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test7 = test61; then \
#	  if diff test.out test7.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test7.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test7.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test8.failed test.ok test.out X* viminfo
cp test8.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test8.in
[?1h="test8.in" 46 lines, 1236 charactersTest for BufWritePre autocommand that deletes or unloads the buffer.
Test for BufUnload autocommand that unloads all other buffers.

STARTTEST
:so small.vim
:au BufWritePre Xxx1 bunload
:au BufWritePre Xxx2 bwipe
/^start of
A1^[:.,/end of/w! Xxx1  " write test file Xxx1
$r2:.,/end of/w! Xxx2   " write test file Xxx2
:e! Xxx2" edit Xxx2
:bdel test8.in" delete this file from the buffer list
:e Xxx1" edit Xxx1
:w" write it, will unload it and give an error msg
:w! test.out" Write contents of this file
:e! Xxx2" start editing Xxx2
:bwipe test.out" remove test.out from the buffer list
:w" write it, will delete the buffer and give an error msg:w >>test.out" Append contents of this file
:au! BufWritePre
:func CloseAll()
  let i = 0
  while i <= bufnr('$'):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for BufWritePre autocommand that deletes or unloads the buffer./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 37 lines, 1054 characters written:set ff& cpo+=A
/ENDTEST


















if i != bufnr('%') && bufloaded(i)exe  i . "bunload"
    endif
    let i += 1
  endwhile
endfunc
:func WriteToOut()
  edit! test.out
  $put ='VimLeave done'
  write
endfunc
:set viminfo='100,nviminfo
:au BufUnload * call CloseAll()
:au VimLeave * call WriteToOut()
:e small.vim
:sp mbyte.vim
:q
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:au BufWritePre Xxx1 bunload
:au BufWritePre Xxx2 bwipe
/^start of

start of Xxx1
:.,/end of/w! Xxx1  " write test file Xxx1
"Xxx1" [New File] 3 lines, 31 characters written2:.,/end of/w! Xxx2   " write test file Xxx2
"Xxx2" [New File] 3 lines, 31 characters written:e! Xxx2                " edit Xxx2
"Xxx2" 3 lines, 31 charactersstart of Xxx2
        testend of Xxx~~~~~~~~~~~~~~~~~~
~~:bdel test8.in^I^I" delete this file from the buffer list
:e Xxx1                 " edit Xxx1
"Xxx1" 3 lines, 31 characters1
:w                      " write it, will unload it and give an error msg
"Xxx2"3 lines, 31 characters

E203: Autocommands deleted or unloaded buffer to be written

Press ENTER or type command to continue:w! test.out            " Write contents of this file
"test.out" [New File] 3 lines, 31 characters written

Press ENTER or type command to continue:e! Xxx2                " start editing Xxx2
"Xxx2" 3 lines, 31 charactersstart of Xxx2test
end of Xxx"Xxx2" 3 lines, 31 characters:bwipe test.out         " remove test.out from the buffer list
:w                      " write it, will delete the buffer and give an error ms

g"Xxx1"3 lines, 31 characters
E203: Autocommands deleted or unloaded buffer to be written

Press ENTER or type command to continue:w >>test.out           " Append contents of this file
"test.out" 3 lines, 31 characters appended

Press ENTER or type command to continue:au! BufWritePre
start of Xxx1test
end of Xxx:func CloseAll()

:    let i = 0

:    while i <= bufnr('$')

:        if i != bufnr('%') && bufloaded(i)

:            exe  i . "bunload"

:          endif

:        let i += 1

:      endwhile

:  endfunc
start of Xxx1test
end of Xxx
~
~
~
~
~:func WriteToOut()

:    edit! test.out

:    $put ='VimLeave done'

:    write

:  endfunc
start of Xxx1test
end of Xxx
~:set viminfo='100,nviminfo
:au BufUnload * call CloseAll()
:au VimLeave * call WriteToOut()
:e small.vim
Error detected while processing function CloseAll:

line    4:

E16: Invalid range: 0bunload

"small.vim" 1 line, 1 character

Press ENTER or type command to continue:sp mbyte.vim
"mbyte.vim" 0 lines, 0 characters~
~
~mbyte.vim                                                                       small.vim                                                                       "mbyte.vim" 0 lines, 0 characters:q
Error detected while processing function CloseAll:

line    4:

E16: Invalid range: 0bunload

"test.out" 6 lines, 62 characters

"test.out" 7 lines, 76 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test8 = test61; then \
#	  if diff test.out test8.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test8.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test8.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test9.failed test.ok test.out X* viminfo
cp test9.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test9.in
[?1h="test9.in" 12 lines, 255 charactersTest for Bufleave autocommand that deletes the buffer we are about to edit.

STARTTEST
:so small.vim
:au BufLeave test9.in bwipe yy
:e yy
:/^start of/,$w! test.out      " Write contents of this file
:qa!
ENDTEST

start of test file xx
end of test file xx
~
~
~
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for Bufleave autocommand that deletes the buffer we are about to edit./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 117 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:au BufLeave test9.in bwipe yy
:e yy
E143: Autocommands unexpectedly deleted new buffer yy:/^start of/,$w! test.out      " Write contents of this file
"test.out" [New File] 2 lines, 42 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test9 = test61; then \
#	  if diff test.out test9.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test9.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test9.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test14.failed test.ok test.out X* viminfo
cp test14.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test14.in
[?1h="test14.in" 99 lines, 1606 charactersTests for "vaBiB", end could be wrong.
Also test ":s/pat/sub/" with different ~s in sub.
Also test for ^Vxff and ^Vo123 in Insert mode.
Also test "[m", "]m", "[M" and "]M"
Also test search()

STARTTEST
:so small.vim
/Start cursor here
vaBiBD:?Bug?,/Piece/-2w! test.out
/^- Bug
:s/u/~u~/
:s/i/~u~/
:s/o/~~~/
:.w >>test.out
:if has("ebcdic")
: let tt = "o\<C-V>193\<C-V>xc2\<C-V>o303 \<C-V>90a\<C-V>xfg\<C-V>o578\<Esc>"
:else
: let tt = "o\<C-V>65\<C-V>x42\<C-V>o103 \<C-V>33a\<C-V>xfg\<C-V>o78\<Esc>"
:endif
:exe "normal " . tt
:unlet tt
:.w >>test.out:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for "vaBiB", end could be wrong./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 56 lines, 1141 characters written:set ff& cpo+=A
/ENDTEST:$put =@/
/^substitute
:keeppatterns s/asdf/xyz/
:$put =@/
/^substitute
Y:$put =@0
/bar /e
:$put =@0
-:keeppatterns /xyz
0dn:/^search()/,$w >>test.out
:qa!
ENDTEST

- Bug in "vPPPP" on this text (Webb):{cmd;{cmd;    /* <-- Start cursor here */{}}}
:so! Xdotest
:so small.vim
/Start cursor here
{ 
                        cmd;    /* <-- Start cursor here */ 
                        { 
                        } 
                                cmd; 
                }


6 fewer lines        }Piece of Java{        tt m1 {                t1;e1:?Bug?,/Piece/-2w! test.out
"test.out" [New File] 3 lines, 44 characters written/^- Bug
search hit BOTTOM, continuing at TOP:s/u/~u~/
:s/i/~u~/
uuun "vPPPP" on this text (Webb):
:s/o/~~~/
uuuuuuuuun this text (Webb):
:.w >>test.out
"test.out" 1 line, 48 characters appended:if has("ebcdic")

:  : let tt = "o\<C-V>193\<C-V>xc2\<C-V>o303 \<C-V>90a\<C-V>xfg\<C-V>o578\<Esc>

"
:  :else

:  : let tt = "o\<C-V>65\<C-V>x42\<C-V>o103 \<C-V>33a\<C-V>xfg\<C-V>o78\<Esc>"

:  :endif
:$put =@/
/^substitute
:keeppatterns s/asdf/xyz/
:$put =@/
/^substitute:exe "normal " . tt
ABC !a^Og^G8:unlet tt
:.w >>test.out
"test.out" 1 line, 11 characters appended:set vb
/^Piece
{A:.w >>test.out
"test.out" 1 line, 10 characters appended

tt m2 {{B
:.w >>test.out
"test.out" 1 line, 10 characters appended



t2;} e2tt m3 {{C
:.w >>test.out
"test.out" 1 line, 10 characters appended{DC:.w >>test.out
"test.out" 1 line, 11 characters appended{EA:.w >>test.out
"test.out" 1 line, 11 characters appended{F:.w >>test.out
"test.out" 1 line, 3 characters appended}G e1:.w >>test.out
"test.out" 1 line, 7 characters appended





if (x){t3;}} e3}H e3
:.w >>test.out
"test.out" 1 line, 7 characters appended
}}I
:.w >>test.out
"test.out" 1 line, 3 characters appended}JH e3:.w >>test.out
"test.out" 1 line, 8 characters appended}K e2:.w >>test.out
"test.out" 1 line, 7 characters appended{LF:.w >>test.out
"test.out" 1 line, 4 characters appended:"
/^foobar


foobar
:let startline = line('.')
:call search('foobar', 'c')
:call append(line('$'), line('.') - startline)


:call search('^$', 'c')
:call append(line('$'), line('.') - startline)
:call search('^$', 'bc')
:call append(line('$'), line('.') - startline)
/two



substitute foo asdf

one two
:call search('.', 'c')
:call append(line('$'), getline('.')[col('.') - 1:])
:"
/^substitute
search hit BOTTOM, continuing at TOP:s/foo/bar/
bar
:$put =@/






search()
0
1
1
two
foo
/^substitute
search hit BOTTOM, continuing at TOP:keeppatterns s/asdf/xyz/
xyz:$put =@/

^substitute
/^substitute
search hit BOTTOM, continuing at TOP:$put =@0

substitute bar xyz
/bar /e
:$put =@0

substitute bar xyz

:keeppatterns /xyz

/bar /exyz:/^search()/,$w >>test.out
search hit BOTTOM, continuing at TOP
"test.out" 9 lines, 58 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test14 = test61; then \
#	  if diff test.out test14.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test14.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test14.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test15.failed test.ok test.out X* viminfo
cp test15.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test15.in
[?1h="test15.in" 136 lines, 2246 charactersTests for :right on text with embedded TAB.
Also test formatting a paragraph.
Also test undo after ":%s" and formatting.

STARTTEST
:so small.vim
:set tw=65

:/^\s*test for :left/,/^\s*test for :center/ left
:/^\s*test for :center/,/^\s*test for :right/ center
:/^\s*test for :right/,/^xxx/-1 right
:set fo+=tcroql tw=72
/xxxxxxxx$
0gq6kk
:set nocp viminfo+=nviminfo
:" undo/redo here to make the next undo only work on the following changes
u^R
:map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq
/^aa
ggu
:?test for :left?,$w! test.out
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :right on text with embedded TAB./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 401 characters written:set ff& cpo+=A
/ENDTEST

:so! Xdotest
:so small.vim
:set tw=65

test for :left
:/^\s*test for :left/,/^\s*test for :center/ left
search hit BOTTOM, continuing at TOPtest for :left:/^\s*test for :center/,/^\s*test for :right/ center
:/^\s*test for :right/,/^xxx/-1 right
:set fo+=tcroql tw=72
/xxxxxxxx$
asxa;ofaaxxxoikeasdfaqweraxxxoikeaaxxxoikeyfaaxxxoikeydfaaxxxoikeysdfaaxxxoikeyasdfaaxxxoikeyxasdfaaxxxoikeyasxxdfaaxxxoikeyasxa;ofaaxxxoikeyasdfaqweraxxxoikey

xxxxx xx xxxxxx
xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xx
xxxxxxxxxxxxxxxxxx xxxxx xxxx, xxxx xxxx xxxx xxxx xxx xx xx
xx xxxxxxx. xxxx xxxx.

> xx xx, xxxx xxxx xxx xxxx xxx xxxxx xxx xxx xxxxxxx xxx xxxxx
> xxxxxx xxxxxxx: xxxx xxxxxxx, xx xxxxxx xxxx xxxxxxxxxx

aa aa aa aa
bb bb bb bb
cc cc cc cc

 xx xxxxxx xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xxxx xxxxxxx.
xxxx xxxx.xxxxxxx: xxxx xxxxxxx, xx xxxx xxxxxxx~
:set nocp viminfo+=nviminfo
:" undo/redo here to make the next undo only work on the following changes
1 more line; before #1  0 seconds ago0gq6kk
:set nocp viminfo+=nviminfo
:" undo/redo here to make the next undo only work on the following changes
u^R
:map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq
/^aa
ggu
:?test for :left?,$w! test.out
:qa!
ENDTESTtest for :leftaafaadfaasdfaaasdfaaxasdfaa
asxxdfaatest for :centeraafaafd asdf1 line less; after #1  0 seconds agotest for :lefta      afa    adfa      asdfaaasdfa           axasdfaa                test for :center  aa  fa        afd asdf
:map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq
/^aa
asxxdfaaxxxoikeasxa;ofaaxxxoikeasdfaqweraxxxoikeaaxxxoikeyfaaxxxoikeydfaaxxxoikeysdfaaxxxoikeyasdfaaxxxoikeyxasdfaaxxxoikeyasxxdfaaxxxoikeyasxa;ofaaxxxoikeyasdfaqweraxxxoikey

xxxxx xx xxxxxx xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xx
xxxxxxxxxxxxxxxxxx xxxxx xxxx, xxxx xxxx xxxx xxxx xxx xx xx xx xxxxxxx.
xxxx xxxx.

> xx xx, xxxx xxxx xxx xxxx xxx xxxxx xxx xxx xxxxxxx xxx xxxxx xxxxxx
> xxxxxxx: xxxx xxxxxxx, xx xxxxxx xxxx xxxxxxxxxx

aa aa aa aa
bb bb bb bb
cc cc cc cc


:.,.+2s/^/x/
3 substitutions on 3 linesxaa aa aa aa
xbb bb bb bb
xcc cc cc cc
:set tw=3



3 more lines
aaaaaa3 more lines
3 fewer lines; before #2  0 seconds agoaa aa aa aa
bb bb bb bb
cc cc cc cc~
:?test for :left?,$w! test.out
"test.out"[New] 111L, 2304C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test15 = test61; then \
#	  if diff test.out test15.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test15.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test15.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test19.failed test.ok test.out X* viminfo
cp test19.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test19.in
[?1h="test19.in" 33 lines, 692 charactersTests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set.
Also test that dv_ works correctly

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=^Vx7f t_kb=^Vx08
/some
r:set noexpandtab
/other
r
:" Test replacing with Tabs and then backspacing to undo it
0wR^H^H^H^[
:" Test replacing with Tabs
0wR^[
:" Test that copyindent works with expandtab set
:set expandtab smartindent copyindent ts=8 sw=8 sts=8
o{
x^[:set nosol
/Second line/
fwdv_:?^start?,$w! test.out
:qa!:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 19 lines, 447 characters written:set ff& cpo+=A
/ENDTEST
ENDTEST

:so! Xdotest
:so small.vim
:set smarttab expandtab ts=8 sw=4
:" make sure that backspace works, no matter what termcap is used
:set t_kD=^^? t_kb=^^H
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=^Vx7f t_kb=^Vx08
/some
r:set noexpandtab
/other
r
:" Test replacing with Tabs and then backspacing to undo it
0wR^H^H^H^[
:" Test replacing with Tabs
0wR^[
:" Test that copyindent works with expandtab set
:set expandtab smartindent copyindent ts=8 sw=8 sts=8
o{
x^[:set nosol
/Second line/
fwdv_:?^start?,$w! test.out
:qa!
ENDTEST

/some


start textsome test text    ome test text
:set noexpandtab
/other


test textother test text    ther test text
a cde
:" Test replacing with Tabs and then backspacing to undo it

    
f ghi
:" Test replacing with Tabs

         hi
test text
:" Test that copyindent works with expandtab set
:set expandtab smartindent copyindent ts=8 sw=8 sts=8


{x
:set nosol
/Second line/

Second line beginning with whitespace
  with whitespace
:?^start?,$w! test.out
"test.out" [New File] 10 lines, 121 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test19 = test61; then \
#	  if diff test.out test19.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test19.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test19.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test20.failed test.ok test.out X* viminfo
cp test20.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test20.in
[?1h="test20.in" 28 lines, 398 charactersTests Blockwise Visual when there are TABs before the text.
First test for undo working properly when executing commands from a register.
Also test this in an empty buffer.

STARTTEST
:so tiny.vim
G0"ay$k@au
:new
@auY:quit!
GP
/start here$
"by$^Vjjlld
/456$
^Vjj"bP
:/56$/,$-1w! test.out
:qa!
ENDTEST

123456
234567
345678

test text test tex start here:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests Blockwise Visual when there are TABs before the text./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 11 lines, 107 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so tiny.vim





some texttest text
test text

Ox^[jAy^[kddx
yy
Ox^[jAy^[kdd

2 changes; before #1  0 seconds ago
:new
~~~~~~~~~~
[No Name]                                                                       123456
234567
345678test text test tex start here
                some texttest
test textOx^[jAy^[kdd
test20.in                                                                       x[+]
y
~1 line less; before #1  0 seconds ago   :quit!
:so tiny.vim
G0"ay$k@au
:new
@auY:quit!
GP
/start here$
"by$^Vjjlld
/456$
^Vjj"bP
:/56$/,$-1w! test.out
:qa!
ENDTEST123456
234567
345678test text test tex start heresome
         test text
test textOx^[jAy^[kdd
Ox^[jAy^[kdd
/start here$
search hit BOTTOM, continuing at TOPset tat rt hereextex/456$
search hit BOTTOM, continuing at TOP4
2345
345start here56
234start here67
345start here78:/56$/,$-1w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 10 lines, 106 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test20 = test61; then \
#	  if diff test.out test20.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test20.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test20.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test22.failed test.ok test.out X* viminfo
cp test22.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test22.in
[?1h="test22.in" 13 lines, 197 charactersTests for file with some lines ending in CTRL-M, some not^M
^M
STARTTEST
:set ta tx
:e!
:$-3,$w! test.out
:qa!
ENDTEST

this lines ends in a^M
this one doesn't
this one does^M
and the last one doesn't
~
~
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for file with some lines ending in CTRL-M, some not^M/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 4 lines, 38 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:set ta tx
:e!
"test22.in" 13 lines, 197 characters:$-3,$w! test.out
"test.out" [New File] 4 lines, 79 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test22 = test61; then \
#	  if diff test.out test22.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test22.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test22.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test23.failed test.ok test.out X* viminfo
cp test23.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test23.in
[?1h="test23.in" 15 lines, 282 charactersTests for complicated + argument to :edit command

STARTTEST
:$-1w! Xfile1
:$w! Xfile2
:edit +1|s/|/PIPE/|w Xfile1| e Xfile2|1 | s/\//SLASH/|w
:w! test.out
:e Xfile1
:w >> test.out
:qa!
ENDTEST

The result should be in Xfile1: "fooPIPEbar", in Xfile2: "fooSLASHbar"
foo|bar
foo/bar
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for complicated + argument to :edit command/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 7 lines, 125 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:$-1w! Xfile1
"Xfile1" [New File] 1 line, 8 characters written:$w! Xfile2
"Xfile2" [New File] 1 line, 8 characters written:edit +1|s/|/PIPE/|w Xfile1| e Xfile2|1 | s/\//SLASH/|w
"Xfile1" 1 line, 8 characters

foo|bar

"Xfile1" 1 line, 11 characters written

"Xfile2" 1 line, 8 characters

foo/bar

"Xfile2" 1 line, 12 characters written

Press ENTER or type command to continue:w! test.out
"test.out" [New File] 1 line, 12 characters written

Press ENTER or type command to continue:e Xfile1
"Xfile1" 1 line, 11 charactersfooPIPEbar
~
~
~
~
~
~~~~~
~~~~"Xfile1" 1 line, 11 characters:w >> test.out
"test.out" 1 line, 11 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test23 = test61; then \
#	  if diff test.out test23.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test23.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test23.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test24.failed test.ok test.out X* viminfo
cp test24.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test24.in
[?1h="test24.in" 89 lines, 1301 charactersTests for regexp with backslash and other special characters inside []
Also test backslash for hex/octal numbered character.

STARTTEST
:set nocompatible viminfo+=nviminfo
/[\x]
x/[\t\]]
x/[]y]
x/[\]]
x/[y^]
x/[$y]
x/[\x61]
x/[\x60-\x64]
xj0/[\x785]
x/[\o143]
x/[\o140-\o144]
x/[\o417]
x/\%x42
x/\%o103
x/[\x00]
x
:s/[\x00-\x10]//g:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with backslash and other special characters inside []/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 51 lines, 519 characters written:set ff& cpo+=A
/ENDTEST:s/^\(\h\w*\%(->\|\.\)\=\)\+=/YY/

:s/aaa/xyz/

:s/~/bcd/

:s/~\+/BB/
:"
:?start?,$w! test.out
:qa!
ENDTEST

start
test \text test text
test    text test text
test text ]test text
test ]text test text
test text te^st text
test te$xt test text
test taext test text  x61
test tbext test text  x60-x64
test 5text test text  x78 5
:so! Xdotest
:set nocompatible viminfo+=nviminfo
/[\x]
text test text/[\t\]]
text test tex/[]y]
test text/[\]]
text test text/[y^]
st text/[$y]
xt test text/[\x61]
ext test text  x61/[\x60-\x64]
ext test text  x60-x64
/[\x785]
text test text  x78 5/[\o143]

testc text test text  o143 text test text  o143
/[\o140-\o144]

tesdt text test text  o140-o144t text test text  o140-o14
/[\o417]

test7 text test text  o41 7 text test text  o41 7
/\%x42

test text tBest text  \%x42est text  \%x42
/\%o103

test text teCst text  \%o103st text  \%o103
/[\x00]

test text ^@test text  [\x00]test text  [\x00]
test te^@xt t^Dest t^Pext  [\x00-\x10]
:s/[\x00-\x10]//g
3 substitutions on 1 linext test text  [\x00-\x10]
test \xyztext test text  [\x-z]
:s/[\x-z]\+//
text test text  [\x-z]
test text tev\uyst text  [\u-z]
:s/[\u-z]\{2,}//
st text  [\u-z]
xx aaaaa xx a
:s/\(a\)\+//
 xx 
xx aaaaa xx a
:s/\(a*\)\+//

xx aaaaa xx a
:s/\(a*\)*//

xx aaaaa xx
:s/\(a\)\{2,3}/A/
Aaa xx
xx aaaaa xx
:s/\(a\)\{-2,3}/A/
Aaaa x
xx aaa12aa xx
:s/\(a\)*\(12\)\@>/A/
Aaa xx
xx foobar xbar xx
:s/\(foo\)\@<!bar/A/
A xx
xx an file xx
:s/\(an\_s\+\)\@<=file/A/
A xx
x= 9;
:s/^\(\h\w*\%(->\|\.\)\=\)\+=/XX/
XX

hh= 77;
:s/^\(\h\w*\%(->\|\.\)\=\)\+=/YY/
YY 77;
aaa
:s/aaa/xyz/
xyz
 
xyz
:s/~/bcd/
bcd
 
bcdbcdbcd
:s/~\+/BB/
BB:"
:?start?,$w! test.out
"test.out" [New] 32L, 586C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test24 = test61; then \
#	  if diff test.out test24.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test24.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test24.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test26.failed test.ok test.out X* viminfo
cp test26.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test26.in
[?1h="test26.in" 44 lines, 750 charactersTest for :execute, :while and :if

STARTTEST
:so small.vim
mt:let i = 0
:while i < 12
:  let i = i + 1
:  if has("ebcdic")
:    execute "normal o" . i . "\047"
:  else
:    execute "normal o" . i . "\033"
:  endif
:  if i % 2
:    normal Ax^V^[
:    if i == 9
:      break
:    endif
:    if i == 5
:      continue
:    else
:      let j = 9
:      while j > 0
:if has("ebcdic"):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for :execute, :while and :if/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 39 lines, 696 characters written:set ff& cpo+=A
/ENDTEST:      let j = 9
:      while j > 0
:if has("ebcdic")
:execute "normal" j . "a" . j . "\x27"
:else
:execute "normal" j . "a" . j . "\x1b"
:endif
:let j = j - 1
:      endwhile
:    endif
:  endif
:  if i == 9
:    if has("ebcdic")
:      execute "normal Az\047"
:    else
:      execute "normal Az\033"
:    endif
:  endif
:endwhile
:unlet i j
:'t,$w! test.out
:qa!
ENDTEST


:so! Xdotest
:so small.vim
:let i = 0
:while i < 12

:  :  let i = i + 1

:  :  if has("ebcdic")

:    :    execute "normal o" . i . "\047"

:    :  else

:    :    execute "normal o" . i . "\033"

:    :  endif

:  :  if i % 2

:    :    normal Ax^^[

:    :    if i == 9

:      :      break

:      :    endif

:    :    if i == 5

:      :      continue

:      :    else

:      :      let j = 9

:      :      while j > 0

::        if has("ebcdic")

::          execute "normal" j . "a" . j . "\x27"

::        else

::          execute "normal" j . "a" . j . "\x1b"

::        endif

::        let j = j - 1

::      endwhile

:      :    endif

:    :  endif

:  :  if i == 9

:    :    if has("ebcdic")

:      :      execute "normal Az\047"

:      :    else

:      :      execute "normal Az\033"

:      :    endif

:    :  endif

:  :endwhile
:  endif
:  if i == 9
:    if has("ebcdic")
:      execute "normal Az\047"
:    else
:      execute "normal Az\033"
:    endif
:  endif
:endwhile
:unlet i j
:'t,$w! test.out
:qa!
ENDTEST

1x999999999888888887777777666666555554444333221
2
3x999999999888888887777777666666555554444333221
4
5x
6
7x999999999888888887777777666666555554444333221
8
9x
:unlet i j
:'t,$w! test.out
"test.out" [New File] 10 lines, 159 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test26 = test61; then \
#	  if diff test.out test26.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test26.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test26.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test28.failed test.ok test.out X* viminfo
cp test28.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test28.in
[?1h="test28.in" 23 lines, 364 charactersTest for sourcing a file with CTRL-V's at the end of the line

STARTTEST
:/firstline/+1,/lastline/-1w! Xtestfile
:so Xtestfile
Gmm__1^[^[__2^[__3^[^[__4^[__5^[:'m,$s/^@/0/g
:'m,$w! test.out
:qa!
ENDTEST

firstline
map __1 afirst
map __2 asecond
map __3 athird
map __4 afourth
map __5 afifth
map __1 asd^V
map __2 asd^V^V
map __3 asd^V^V
map __4 asd^V^V^V
map __5 asd^V^V^V
lastline:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for sourcing a file with CTRL-V's at the end of the line/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 114 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:/firstline/+1,/lastline/-1w! Xtestfile
"Xtestfile" [New File] 10 lines, 148 characters written:so Xtestfile

sd
map __2 asd^[secondd  sd^[^[  sd^@map __5 asd^@fifth
:'m,$s/^@/0/g
0map __5 asd0fifth:'m,$w! test.out
"test.out" [New File] 2 lines, 45 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test28 = test61; then \
#	  if diff test.out test28.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test28.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test28.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test29.failed test.ok test.out X* viminfo
cp test29.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test29.in
[?1h="test29.in" 230 lines, 4261 charactersTest for joining lines and marks in them
 in compatible and nocompatible modes
 and with 'joinspaces' set or not
 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+=jj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces
j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptionss+=j
j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible
j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjd/STARTTEST/-2
ENDTEST

firstline
asdfasdf.
asdf:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for joining lines and marks in them/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 11 lines, 478 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo
:set nojoinspaces
:set cpoptions-=j
/firstline/

/^STARTTEST/-1
+-1
37 fewer linesSTARTTEST
/^{/+1more linesasdfasdf.
asdfasdf
asdfasdf. asdf
asdfasdf. asdf
asdfasdf.       asdf
asdfasdf.       asdf
asdfasdf. asdf
asdfasdf. asdf
asdfasdff asdf
asdfasdf asdf
asdfasdf  asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
zx cvn.
zx cv


as dfg?
hjkl iop!
ert
hjkl i. as dfg? hjkl iop! ert
zx cvn.
as dfg?hjkl iop! ert er
zx cvrnnop:set cpoptions+=j

zx cv
hjkl i. as dfg? hjkl iop! ertSTARTTEST ert er
zx cvrnnop:set cpoptions-=j joinspaces



37 more linesasdfasdf.
asdf
asdfasdf.  asdf
asdfasdf.  asdf
asdfasdf.       asdf
asdfasdf.       asdf
asdfasdf. asdf
asdfasdf. asdf
asdfasdff asdf
asdfasdf asdf
asdfasdf  asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
zx cvn.
zx cv

as dfg?
hjkl iop!
hjkl i.  as dfg?  hjkl iop!  ert
zx cvn.
as dfg?  ert  e
zx cvennop


:set cpoptions+=j

zx cv
hjkl iop!
hjkl i.  as dfg? hjkl iop! ertSTARTTEST ert er
zx cvrnnop


:set cpoptions-=j nojoinspaces compatible



37 more linesasdfasdf.
asdf
asdfasdf.  asdf
asdfasdf.  asdf
asdfasdf.       asdf
asdfasdf.       asdf
asdfasdf. asdf
asdfasdf. asdf
asdfasdff asdf
asdfasdf asdf
asdfasdf  asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
zx cvn..  as dfg? hjkl iop! ertt  a
zx cvn.
/STARTTEST/-2
+-2
4 fewer lines/^STARTTEST

STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 12 lines, 147 characters written:set ff& cpo+=A

/ENDTEST











:set comments=s1:/*,mb:*,ex:*/,://
:set nojoinspaces fo=j
:set backspace=eol,start
:.,+3join
j4J
:.,+2join
j3J
:.,+2join
j3J
:.,+2join
jj3J
ENDTEST

:so! Xdotest
/^{/+1


{
:set comments=s1:/*,mb:*,ex:*/,://
:set nojoinspaces fo=j
:set backspace=eol,start
:.,+3join
/* Make sure the previous comment leader is not removed. */

/* Make sure the previous comment leader is not removed. */


:.,+2join
// Should the next comment leader be left alone? Yes.

// Should the next comment leader be left alone? Yes.


:.,+2join
/* 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.


:.,+2join
if (condition) // Remove the next comment leader! OK, I will.

action();
if (condition) // Remove the next comment leader! OK, I will.

action();

/^STARTTEST



}

STARTTEST
:" Test with backspace set to the non-compatible setting

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 17 lines, 347 characters written:set ff& cpo+=A

/ENDTEST:inoremap <c-u> <left><c-u>
Avim3^U^[
:iunmap <c-u>
Avim4^U^U^[
:" Test with backspace set to the compatible setting
:set backspace= visualbell
A vim5^[A^U^U^[
A vim6^[Azwei^Gu^U^[
:inoremap <c-u> <left><c-u>
A vim7^U^U^[
:set compatible novisualbell
ENDTEST
1 this shouldn't be deleted
2 this shouldn't be deleted
3 this shouldn't be deleted
4 this should be deleted
5 this shouldn't be deleted
6 this shouldn't be deleted
7 this shouldn't be deleted
8 this shouldn't be deleted (not touched yet)

STARTTEST
/^{/+1
:so! Xdotest
:" Test with backspace set to the non-compatible setting
/^\d\+ this
:set cp bs=2
d    vim2:set cpo-=<
:inoremap <c-u> <left><c-u>
d3:iunmap <c-u>

:" Test with backspace set to the compatible setting
:set backspace= visualbell
vim5d vim66    zwei:inoremap <c-u> <left><c-u>
vim7
:set compatible novisualbell
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 21 lines, 356 characters written:set ff& cpo+=A

/ENDTESTj3J
:.,+2join
j3J
:.,+2join
jj3J
j:.,+2join
jj3J
j:.,+5join
j6J
oSome code!^M// Make sure backspacing does not remove this comment leader.^[0i^HH^[
ENDTEST

{

/*
 * Make sure the previous comment leader is not removed.
 */

/*
 * Make sure the previous comment leader is not removed.
 */
:so! Xdotest
/^{/+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



/* Make sure the previous comment leader is not removed.  *//* List:
 * - item1
 *   foo bar baz



/* Make sure the previous comment leader is not removed.  */*   foo bar baz
 * - item2
 *   foo bar baz
:.,+8join
/* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz *//* List:- item1  foo bar baz
 * - item2
/* 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?
:.,+2join


Should the next comment leader be left alone?  Yes.


// Yes.
// Should the next comment leader be left alone?  Yes.* Here the comment leader should be left intact. */
// And so should this one.



:.,+2join
/* Here the comment leader should be left intact. */ // And so should this one.* Here the comment leader should be left intact. */
/* Here the comment leader should be left intact. */ // And so should this one.
:.,+2join
if (condition) // Remove the next comment leader!  OK, I will.

action();
if (condition) // Remove the next comment leader!  OK, I will.

action();


:.,+2join
int i = 7 /* foo *// 3 // comment

;
int i = 7 /* foo *// 3 // comment

;


:.,+5join
># Note that the last character of the ending comment leader (left angle bracket@


># Note that the last character of the ending comment leader (left angle brackett) 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 liness. This comment should retain its comment leader.
># Note that the last character of the ending comment leader (left angle bracket@


># Note that the last character of the ending comment leader (left angle brackett) 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 liness. This comment should retain its comment leader.


Some code!
// Make sure backspacing does not remove this comment leader.
// Make sure backspacing does not remove this comment leader.
}

/^STARTTEST


STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 61 characters written:set ff& cpo+=A

/ENDTEST
:?firstline?+1,$w! test.out

:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
74 fewer lines// 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 brackett) 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 liness. This comment should retain its comment leader.># Note that the last character of the ending comment leader (left angle brackett) 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 liness. This comment should retain its comment leader.

Some code!// Make sure backspacing does not remove this comment leader.
}:?firstline?+1,$w! test.out
"test.out" [New File] 97 lines, 3018 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test29 = test61; then \
#	  if diff test.out test29.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test29.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test29.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test31.failed test.ok test.out X* viminfo
cp test31.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test31.in
[?1h="test31.in" 95 lines, 1832 charactersTest for commands that close windows and/or buffers:
:quit
:close
:hide
:only
:sall
:all
:ball
:buf
:edit

STARTTEST
:so small.vim
GA 1^[:$w! Xtest1
$r2:$w! Xtest2
$r3:$w! Xtest3
:n! Xtest1 Xtest2
A 1^[:set hidden
:" test for working :n when hidden set; write "testtext 2"
:n
:w! test.out
:" test for failing :rew when hidden not set; write "testtext 2 2"
:set nohidden:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for commands that close windows and/or buffers:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 80 lines, 1697 characters written:set ff& cpo+=A
/ENDTEST:" test ":q!" and hidden buffer.
:bw! Xtest1 Xtest2 Xtest3 Xtest4
:sp Xtest1
:wincmd w
:bw!
:set modified
:bot sp Xtest2
:set modified
:bot sp Xtest3
:set modified
:wincmd t
:hide
:q!
:w >>test.out
:q!
:w >>test.out
:q!
:call append(line('$'), "Oh, Not finished yet.")
:w >>test.out
:qa!
ENDTEST

testtext


:so! Xdotest
:so small.vim

1:$w! Xtest1
"Xtest1" [New File] 1 line, 11 characters written2:$w! Xtest2
"Xtest2" [New File] 1 line, 11 characters written3:$w! Xtest3
"Xtest3" [New File] 1 line, 11 characters written:n! Xtest1 Xtest2
"Xtest1" 1 line, 11 characterstesttext 1~~~~~~~~~~~~~~~~~~~~
~~1:set hidden
:" test for working :n when hidden set; write "testtext 2"
:n
"Xtest2" 1 line, 11 characters2:w! test.out
"test.out" [New File] 1 line, 11 characters written:" test for failing :rew when hidden not set; write "testtext 2 2"
:set nohidden
2:rew
E37: No write since last change (add ! to override):w >>test.out
"test.out" 1 line, 13 characters appended:" test for working :rew when hidden set; write "testtext 1 1"
:set hidden
:rew
"Xtest1" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)1 1
:w >>test.out
"test.out" 1 line, 13 characters appended:" test for :all keeping a buffer when it's modified; write "testtext 1 1 1"
:set nohidden
1:sp
Xtest1 [+]                                                                      testtext 1 1 1Xtest1 [+]                                                                      :n Xtest2 Xtest3
"Xtest2" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)2 22:all
"Xtest3" 1 line, 11 characterstesttext 1 1 1
~
~
~
~
~
~
Xtest1 [+]                                                                      testtext 2 2
~
~
~
~
~
Xtest2 [+]                                                                      testtext 3
~
~
~
~
~
~
Xtest3                                                                          :1wincmd w
Xtest1 [+]                                                                      Xtest2 [+]                                                                      :w >>test.out
"test.out" 1 line, 15 characters appended:" test abandoning changed buffer, should be unloaded even when 'hidden' set
:" write "testtext 2 2" twice
:set hidden
1 1:q!
testtext 2 2
~
~
~
~
~
~
~
~
~
~
Xtest2 [+]                                                                      testtext 3
~
~
~
~
~
~
~
~
~
Xtest3                                                                          :w >>test.out
"test.out" 1 line, 13 characters appended:unhide
:w >>test.out
"test.out" 1 line, 13 characters appended:" test ":hide" hides anyway when 'hidden' not set; write "testtext 3"
:set nohidden
2:hide
3~~~:w >>test.out
"test.out" 1 line, 11 characters appended:" test ":edit" failing in modified buffer when 'hidden' not set
:" write "testtext 3 3"
3:e Xtest1
E37: No write since last change (add ! to override):w >>test.out
"test.out" 1 line, 13 characters appended:" test ":edit" working in modified buffer when 'hidden' set; write "testtext 1

"testtext 3 3:set hidden
:e Xtest1
"Xtest1" 1 line, 11 characters1:w >>test.out
"test.out" 1 line, 11 characters appended:" test ":close" not hiding when 'hidden' not set in modified buffer;
:" write "testtext 3 3 3"
:sp Xtest3
"Xtest3" [Modified] line 1 of 1 --100%-- col 1 (file 2 of 2)3 3Xtest3 [+]                                                                      testtext 1Xtest1                                                                          :set nohidden
3:close
E37: No write since last change (add ! to override):w >>test.out
"test.out" 1 line, 15 characters appended:" test ":close!" does hide when 'hidden' not set in modified buffer;
:" write "testtext 1"
3 3:close!
1~~~:w >>test.out
"test.out" 1 line, 11 characters appended:set nohidden
:" test ":all!" hides changed buffer; write "testtext 2 2 2"
:sp Xtest4
"Xtest4" [New File]Xtest4                                                                          testtext 1Xtest1                                                                           4[+]:all!
"Xtest2" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)

"Xtest3" [Modified] line 1 of 1 --100%-- col 1 (file 2 of 2)

Press ENTER or type command to continue:1wincmd w
testtext 2 2 2
~Xtest2 [+]                                                                      testtext 3 3 3 3~3 [+]:w >>test.out
"test.out" 1 line, 15 characters appended:"
:" test ":q!" and hidden buffer.
:bw! Xtest1 Xtest2 Xtest3 Xtest4
"test31.in"95 lines, 1832 characters

4 buffers wiped out

Press ENTER or type command to continue:sp Xtest1
"Xtest1" 1 line, 11 characterstesttext 1
~~
Xtest1                                                                          :w >>test.out
:q!
:w >>test.out
:q!
:call append(line('$'), "Oh, Not finished yet.")
:w >>test.out
:qa!
ENDTESTtesttext
test31.in "Xtest1" 1 line, 11 characters:wincmd w
Xtest1                                                                          test31.in                                                                       :bw!
~~~~~~~~~
~~~:set modified
:bot sp Xtest2
"Xtest2" 1 line, 11 charactersXtest1 [+]                                                                      testtext 2Xtest2                                                                          :set modified
[+]:bot sp Xtest3
"Xtest3" 1 line, 11 characterstesttext 1
~
~
~
~
~
~
Xtest1 [+]                                                                      testtext 2
~
~
~
~
~
Xtest2 [+]                                                                      testtext 3
~
~
~
~
~
~
Xtest3                                                                          :set modified
[+]:wincmd t
Xtest1 [+]                                                                      Xtest3 [+]                                                                      :hide
testtext 2
~
~
~
~
~
~
~
~
~
~
Xtest2 [+]                                                                      testtext 3
~
~
~
~
~
~
~
~
~
Xtest3 [+]                                                                      :q!
3~~~:w >>test.out
"test.out" 1 line, 11 characters appended:q!
E37: No write since last change

E162: No write since last change for buffer "Xtest1"

Press ENTER or type command to continue:w >>test.out
"test.out" 1 line, 11 characters appended

Press ENTER or type command to continue:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test31 = test61; then \
#	  if diff test.out test31.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test31.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test31.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test33.failed test.ok test.out X* viminfo
cp test33.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test33.in
[?1h="test33.in" 34 lines, 616 charactersTest for 'lisp'
If the lisp feature is not enabled, this will fail!

STARTTEST
:so small.vim
:set lisp
/^(defun
=G:/^(defun/,$w! test.out
:q!
ENDTEST

(defun html-file (base)
(format nil "~(~A~).html" base))

(defmacro page (name title &rest body)
(let ((ti (gensym)))
`(with-open-file (*standard-output*
(html-file ,name)
:direction :output
:if-exists :supersede)
(let ((,ti ,title))
(as title ,ti)
(with center:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for 'lisp'/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 63 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:set lisp
/^(defun
22 lines to indent...
23indented   (format nil "~(~A~).html" base))


  (let ((ti (gensym)))
       `(with-open-file (*standard-output*
                 (html-file ,name)
                  :direction :output
                         :if-exists :supersede)
                        (let ((,ti ,title))
              (as title ,ti)
            (with center:/^(defun/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 23 lines, 544 characters written:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test33 = test61; then \
#	  if diff test.out test33.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test33.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test33.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test34.failed test.ok test.out X* viminfo
cp test34.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test34.in
[?1h="test34.in" 87 lines, 1833 charactersTest for user functions.
Also test an <expr> mapping calling a function.
Also test that a builtin function cannot be replaced.
Also test for regression when calling arbitrary expression.

STARTTEST
:so small.vim
:function Table(title, ...)
:  let ret = a:title
:  let idx = 1
:  while idx <= a:0
:    exe "let ret = ret . a:" . idx
:    let idx = idx + 1
:  endwhile
:  return ret
:endfunction
:function Compute(n1, n2, divname)
:  if a:n2 == 0
:    return "fail"
:  endif
:  exe "let g:" . a:divname . " = ". a:n1 / a:n2
:  return "ok"
:endfunction:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for user functions./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 78 lines, 1621 characters written:set ff& cpo+=A
/ENDTEST:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?
:    " Second is here just to prove that this line is correct when not skipping
:    " rhs of &&.
:    $put =(0&&(function('tr'))(1, 2, 3))
:    $put =(1&&(function('tr'))(1, 2, 3))
:catch
:    $put ='!!! Unexpected exception:'
:    $put =v:exception
:endtry
:$-9,$w! test.out
:delfunc Table
:delfunc Compute
:delfunc Expr1
:delfunc Expr2
:delfunc ListItem
:delfunc ListReset
:unlet retval counter
:q!
ENDTEST

here


:so! Xdotest
:so small.vim
:function Table(title, ...)

:  :  let ret = a:title

:  :  let idx = 1

:  :  while idx <= a:0

:    :    exe "let ret = ret . a:" . idx

:    :    let idx = idx + 1

:    :  endwhile

:  :  return ret

:  :endfunction
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?
:    " Second is here just to prove that this line is correct when not skipping
:    " rhs of &&.
:    $put =(0&&(function('tr'))(1, 2, 3))
:    $put =(1&&(function('tr'))(1, 2, 3))
:catch

:function Compute(n1, n2, divname)

:  :  if a:n2 == 0

:    :    return "fail"

:    :  endif

:  :  exe "let g:" . a:divname . " = ". a:n1 / a:n2

:  :  return "ok"

:  :endfunction
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?
:    " Second is here just to prove that this line is correct when not skipping
:    " rhs of &&.
:    $put =(0&&(function('tr'))(1, 2, 3))

:func Expr1()

:  :  normal! v

:  :  return "111"

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:func Expr2()

:  :  call search('XX', 'b')

:  :  return "222"

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:func ListItem()

:  :  let g:counter += 1

:  :  return g:counter . '. '

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:func ListReset()

:  :  let g:counter = 0

:  :  return ''

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:func FuncWithRef(a)

:  :  unlet g:FuncRef

:  :  return a:a

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:let g:FuncRef=function("FuncWithRef")
:let counter = 0
:inoremap <expr> ( ListItem()
:inoremap <expr> [ ListReset()
:imap <expr> + Expr1()
:imap <expr> * Expr2()
:let retval = "nop"
/^here
her$=Table("xxx", 4, "asdf")
=Compute(45, 0, "retval")
=retval
=Compute(45, 5, "retval")
=retval
=g:FuncRef(333)

Error detected while processing function Expr1:

line    1:

E523: Not allowed here

Press ENTER or type command to continue:    $put =(0&&(function('tr'))(1, 2, 3))
:    $put =(1&&(function('tr'))(1, 2, 3))
:catch
:    $put ='!!! Unexpected exception:'$put =v:exception
:endtry$-9,$w! test.outdelfunc Table
:delfunc Computedelfunc Expr1delfunc Expr2
:delfunc ListItemListReset
:unlet retval counter
:q!ENDTESTxxx4asdf fail nop ok 9 333
XX111-XX---222---
1. one2. two1. one again
:call append(line('$'), max([1, 2, 3]))
:call extend(g:, {'max': function('min')})
E704: Funcref variable name must start with a capital: max:call append(line('$'), max([1, 2, 3]))
:try

:  :    " Regression: the first line below used to throw ?E110: Missing ')'?

:  :    " Second is here just to prove that this line is correct when not skipp

ing

:  :    " rhs of &&.

:  :    $put =(0&&(function('tr'))(1, 2, 3))

:  :    $put =(1&&(function('tr'))(1, 2, 3))

:  :catch

:  :    $put ='!!! Unexpected exception:'

:  :    $put =v:exception

:  :endtry
:    $put =v:exception
:endtry
:$-9,$w! test.out
:delfunc Table
:delfunc Compute
:delfunc Expr1
:delfunc Expr2
:delfunc ListItem
:delfunc ListReset
:unlet retval counter
:q!ENDTESTxxx4asdf fail nop ok 9 333
XX111-XX
---222---
1. one
2. two1. one again
330
:$-9,$w! test.out
"test.out" [New File] 10 lines, 81 characters written:delfunc Table
:delfunc Compute
:delfunc Expr1
:delfunc Expr2
:delfunc ListItem
:delfunc ListReset
:unlet retval counter
:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test34 = test61; then \
#	  if diff test.out test34.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test34.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test34.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test36.failed test.ok test.out X* viminfo
cp test36.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test36.in
[?1h="test36.in" 108 lines, 2025 charactersTest character classes in regexp using regexpengine 0, 1, 2.

STARTTEST
/^start-here/+1
Y:s/\%#=0\d//g
p:s/\%#=1\d//g
p:s/\%#=2\d//g
p:s/\%#=0[0-9]//g
p:s/\%#=1[0-9]//g
p:s/\%#=2[0-9]//g
p:s/\%#=0\D//g
p:s/\%#=1\D//g
p:s/\%#=2\D//g
p:s/\%#=0[^0-9]//g
p:s/\%#=1[^0-9]//g
p:s/\%#=2[^0-9]//g
p:s/\%#=0\o//g
p:s/\%#=1\o//g
p:s/\%#=2\o//g
p:s/\%#=0[0-7]//g
p:s/\%#=1[0-7]//g
p:s/\%#=2[0-7]//g
p:s/\%#=0\O//g:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test character classes in regexp using regexpengine 0, 1, 2./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 101 lines, 1850 characters written:set ff& cpo+=A
/ENDTESTp:s/\%#=1[^a-z]//g
p:s/\%#=2[^a-z]//g
p:s/\%#=0\u//g
p:s/\%#=1\u//g
p:s/\%#=2\u//g
p:s/\%#=0[A-Z]//g
p:s/\%#=1[A-Z]//g
p:s/\%#=2[A-Z]//g
p:s/\%#=0\U//g
p:s/\%#=1\U//g
p:s/\%#=2\U//g
p:s/\%#=0[^A-Z]//g
p:s/\%#=1[^A-Z]//g
p:s/\%#=2[^A-Z]//g
p:s/\%#=0\%204l^\t...//g
p:s/\%#=1\%205l^\t...//g
p:s/\%#=2\%206l^\t...//g
:/^start-here/+1,$wq! test.out
ENDTEST













:s/\%#=0\D//g
72 substitutions on 1 line0123456789~

:s/\%#=1\D//g
72 substitutions on 1 line0123456789~

:s/\%#=2\D//g
72 substitutions on 1 line0123456789~

:s/\%#=0[^0-9]//g
72 substitutions on 1 line0123456789~

:s/\%#=1[^0-9]//g
72 substitutions on 1 line0123456789~

:s/\%#=2[^0-9]//g
72 substitutions on 1 line0123456789~





~



~



~



~



~


:s/\%#=0\O//g
74 substitutions on 1 line01234567~

~


:s/\%#=2\O//g
74 substitutions on 1 line01234567~

:s/\%#=1[^0-7]//g
74 substitutions on 1 line01234567~

:s/\%#=2[^0-7]//g
74 substitutions on 1 line01234567~





~



~


:s/\%#=0\X//g
60 substitutions on 1 line0123456789ABCDEFabcdef~

~


:s/\%#=2\X//g
60 substitutions on 1 line0123456789ABCDEFabcdef~

~


:s/\%#=1[^0-9A-Fa-f]//g
60 substitutions on 1 line0123456789ABCDEFabcdef~

~



~





:s/\%#=0\W//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1\W//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2\W//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=0[^0-9A-Za-z_]//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1[^0-9A-Za-z_]//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2[^0-9A-Za-z_]//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~







:s/\%#=0\H//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1\H//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2\H//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=0[^A-Za-z_]//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1[^A-Za-z_]//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2[^A-Za-z_]//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~







:s/\%#=0\A//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=1\A//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=2\A//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=0[^A-Za-z]//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=1[^A-Za-z]//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=2[^A-Za-z]//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~













:s/\%#=0\L//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=1\L//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=2\L//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=0[^a-z]//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=1[^a-z]//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=2[^a-z]//g
69 substitutions on 1 lineabcdefghiwxyz~





~



~



~



~



~


:s/\%#=0\U//g
70 substitutions on 1 lineABCDEFGHIXYZ~

~


:s/\%#=2\U//g
70 substitutions on 1 lineABCDEFGHIXYZ~

:s/\%#=1[^A-Z]//g
70 substitutions on 1 lineABCDEFGHIXYZ~

:s/\%#=2[^A-Z]//g
70 substitutions on 1 lineABCDEFGHIXYZ~





~


# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test36 = test61; then \
#	  if diff test.out test36.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test36.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test36.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test37.failed test.ok test.out X* viminfo
cp test37.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test37.in
[?1h="test37.in" 116 lines, 3262 charactersTest for 'scrollbind'. <eralston@computer.org>   Do not add a line below!
STARTTEST
:so small.vim
:set noscrollbind
:set scrollopt=ver,jump
:set scrolloff=2
:set nowrap
:set noequalalways
:set splitbelow
:" TEST using two windows open to one buffer, one extra empty window
:split
:new
^Wt:
:resize 8
/^start of window 1$/
zt:
:set scrollbind
^Wj:
:resize 7
/^start of window 2$/
zt:
:set scrollbind
:" -- start of tests --:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for 'scrollbind'. <eralston@computer.org>   Do not add a line below!/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 72 lines, 1498 characters written:set ff& cpo+=A
/ENDTESTHk^WtH^WjHyy^Wbp^Wtyy^Wbp:
^Wt:set noscb
ggL^Wj:set noscb
ggL:set scb
^Wt:set scb
^WtG^WjG^Wt:syncbind
Hk^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:
^WtH3k^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:
:" ***** done with tests *****
:w! test.out" Write contents of this file
:qa!
ENDTEST


start of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03
. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08
:so! Xdotest
:so small.vim
:set noscrollbind
:set scrollopt=ver,jump
:set scrolloff=2
:set nowrap
:set noequalalways
:set splitbelow
:" TEST using two windows open to one buffer, one extra empty window
:split
^WtH3k^WtHyybp^Wt^Wjyy^Wbp:
:" ***** done with tests *****
:w! test.out    " Write contents of this file
:qa!ENDTESTstart of window 1. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02test37.in                                                                       Hk^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:
^WtH3k^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:
:" ***** done with tests *****
:w! test.out     " Write contents of this file
:qa!ENDTESTstart of window 11122
test37.in                                                                       :new
:w! test.out             " Write contents of this file
:qa!ENDTESTtest37.in                                                                       ~~~~
[No Name]test37.in                                                                       [No Name]                                                                       ::resize 8
:" ***** done with tests *****w! test.out             " Write contents of this file
:qa!ENDTESTstart of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
test37.in                                                                       :" ***** done with tests *****:w! test.out             " Write contents of this fileqa!ENDTESTstart of window 1/^start of window 1$/

. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02


. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03
. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05::set scrollbind
test37.in                                                                       test37.in                                                                       ::resize 7
/^start of window 2$/
end of window 1start of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04::set scrollbind
:" -- start of tests --
:" TEST scrolling down







. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08
. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09
. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10




. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08
. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09test37.in                                                                       [No Name]                                                                       
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05[+]0test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
1test37.in                                                                       [No Name] [+]                                                                   








. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15
end of window 1





. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15test37.in                                                                       [No Name] [+]                                                                   
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
2test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
3

::" TEST scrolling up
test37.in                                                                       [No Name] [+]                                                                   . line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08440505060607070808090900test37.in                                                                       test37.in                                                                       test37.in                                                                       test37.in                                                                       test37.in                                                                       [No Name] [+]                                                                   
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
4test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
5test37.in                                                                       [No Name] [+]                                                                   start of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03start of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
test37.in                                                                       test37.in                                                                       test37.in                                                                       test37.in                                                                       test37.in                                                                       [No Name] [+]                                                                   
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
6test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
7

::" TEST horizontal scrolling
:set scrollopt+=hor
05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
2 line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
3 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11



4 line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
5 line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
6 line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
7 line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
test37.in                                                                       [No Name] [+]                                                                    156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0256789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0356789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0556789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0656789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07 2UTSRQPONMLKJIHGREDCBA9876543210 01UTSRQPONMLKJIHGREDCBA9876543210 02UTSRQPONMLKJIHGREDCBA9876543210 03UTSRQPONMLKJIHGREDCBA9876543210 04UTSRQPONMLKJIHGREDCBA9876543210 05UTSRQPONMLKJIHGREDCBA9876543210 06test37.in                                                                       [No Name] [+]                                                                   56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   UTSRQPONMLKJIHGREDCBA9876543210 02


:test37.in                                                                       [No Name] [+]                                                                   56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09101112131415UTSRQPONMLKJIHGREDCBA9876543210 09101112131415. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09
. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15
end of window 1

. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09
. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15test37.in                                                                       [No Name] [+]                                                                   . line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
test37.in                                                                       [No Name] [+]                                                                   
test37.in                                                                       [No Name] [+]                                                                   . line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11


::set scrollopt-=hor
:" ****** tests using two different buffers *****
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       test37.in                                                                       ::close
start of window 20000000000::set noscrollbind
:/^start of window 2$/,/^end of window 2$/y
18 lines yanked:new
test37.in                                                                       ~~~~~~~
[No Name]test37.in                                                                       [No Name]                                                                       test37.in                                                                       [No Name]                                                                       4 more lines[+]


18 more linesstart of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02:test37.in                                                                       [No Name] [+]                                                                   /^start of window 1$/
search hit BOTTOM, continuing at TOPENDTESTstart of window 1010102020303
. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04::set scrollbind
test37.in                                                                       [No Name] [+]                                                                   :/^start of window 2$/
search hit BOTTOM, continuing at TOP


. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05::set scrollbind
:" -- start of tests --
:" TEST scrolling down








. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08
. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09




. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08
. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09
. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10[No Name] [+]                                                                   [No Name] [+]                                                                   
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
0test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
1test37.in                                                                       [No Name] [+]                                                                   







. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15





. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16test37.in                                                                       [No Name] [+]                                                                   
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
2[No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
3

::" TEST scrolling up
test37.in                                                                       [No Name] [+]                                                                   440505060607070808090900. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
4[No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
5[No Name] [+]                                                                   [No Name] [+]                                                                   start of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03start of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
6test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
7

::" TEST horizontal scrolling
:set scrollopt+=hor
05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
2 line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
3 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 113 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
46 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
56 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
6 line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
7 line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02

test37.in                                                                       [No Name] [+]                                                                    156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0256789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0356789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0556789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06 2UTSRQPONMLKJIHGREDCBA9876543210 01UTSRQPONMLKJIHGREDCBA9876543210 02UTSRQPONMLKJIHGREDCBA9876543210 03UTSRQPONMLKJIHGREDCBA9876543210 04UTSRQPONMLKJIHGREDCBA9876543210 05UTSRQPONMLKJIHGREDCBA9876543210 06UTSRQPONMLKJIHGREDCBA9876543210 07test37.in                                                                       [No Name] [+]                                                                   56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
[No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   UTSRQPONMLKJIHGREDCBA9876543210 02


:[No Name] [+]                                                                   [No Name] [+]                                                                   56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09101112131415

UTSRQPONMLKJIHGREDCBA9876543210 0910111213141516. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09
. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15

. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09
. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[No Name] [+]                                                                   [No Name] [+]                                                                   . line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
test37.in                                                                       [No Name] [+]                                                                   
test37.in                                                                       [No Name] [+]                                                                   . line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11


::set scrollopt-=hor
:" TEST syncbind
test37.in                                                                       [No Name] [+]                                                                   :set noscb
Test for 'scrollbind'. <eralston@computer.org>   Do not add a line below!
STARTTEST:so small.vim:set noscrollbind:set scrollopt=ver,jump:set scrolloff=2:set nowrap


test37.in                                                                       [No Name] [+]                                                                   :set noscb
start of window 201010202:set scb
test37.in                                                                       [No Name] [+]                                                                   :set scb
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
end of window 2end of test37.in (please don't delete this line)

end of window 2
~
~
~
~~~~zt::set scrollbind:" -- start of tests --:" TEST scrolling downL5jHyy^Wbpr0^WtHyy^Wbpr1^WtL6jHyy^Wbpr2^WkHyy^Wbpr3:
:" TEST scrolling up
^WtH4k^WjH^WtHyy^Wbpr4^WkHyy^Wbpr5^Wk3k^WtH^WjHyy^Wbpr6^WtHyy^Wbpr7:
test37.in                                                                       . line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[No Name] [+]                                                                   :syncbind
/^start of window 2$/. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
:set scrollbind


:test37.in                                                                       [No Name] [+]                                                                   :set noscb
Test for 'scrollbind'. <eralston@computer.org>   Do not add a line below!
STARTTEST
:so small.vimset noscrollbindset scrollopt=ver,jump
:set scrolloff=2set nowrap


test37.in                                                                       [No Name] [+]                                                                   :set noscb
start of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02:set scb
test37.in                                                                       [No Name] [+]                                                                   :set scb
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
end of window 2end of test37.in (please don't delete this line)

end of window 2
~
~
~
~~~~zt::set scrollbind:" -- start of tests --:" TEST scrolling downL5jHyy^Wbpr0^WtHyy^Wbpr1^WtL6jHyy^Wbpr2^WkHyy^Wbpr3:
:" TEST scrolling up
^WtH4k^WjH^WtHyy^Wbpr4^WkHyy^Wbpr5^Wk3k^WtH^WjHyy^Wbpr6^WtHyy^Wbpr7:
test37.in                                                                       . line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   :syncbind
/^start of window 2$/. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
:set scrollbind
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16


:test37.in                                                                       [No Name] [+]                                                                   zt:
:set scrollbind
^Wj:
:resize 7. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
^Wj:
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12


::" ***** done with tests *****
:w! test.out             " Write contents of this file
"test.out" [New File] 33 lines, 1329 characters writtentest.out     :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test37 = test61; then \
#	  if diff test.out test37.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test37.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test37.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test38.failed test.ok test.out X* viminfo
cp test38.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test38.in
[?1h="test38.in" 35 lines, 455 charactersTest Virtual replace mode.

STARTTEST
:so small.vim
:" make sure that backspace works, no matter what termcap is used
:set t_kD=^Vx7f t_kb=^Vx08
ggdGa
abcdefghi
jk      lmn
    opq rst
^Duvwxyz
^[gg:set ai
:set bs=2
gR0^D 1
A
BCDEFGHIJKL
MNO
PQR^[G:ka
o0^D
abcdefghi
jk      lmn:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 29 lines, 407 characters written:set ff& cpo+=A
/ENDTEST










opq rst
^Duvwxyz
^['ajgR0^D 1
A
BCDEFGHIJKL
MNO
PQR^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^[:$
iab     cdefghi jkl^[0gRAB......CDEFGHI.J^[o^[:
iabcdefghijklmnopqrst^[0gRAB    IJKLMNO QR^[:wq! test.out
ENDTEST

:so! Xdotest
:so small.vim
:" make sure that backspace works, no matter what termcap is used
:set t_kD=^^? t_kb=^^H
^[gg:set ai
:set bs=2
gR0^D 1
A
BCDEFGHIJKL
MNO
PQR^[G:ka
o0^D
abcdefghi
jk      lmn
    opq rst
^Duvwxyz
^['ajgR0^D 1
A
BCDEFGHIJKL
MNO
PQR^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^[:$
iab     cdefghi jkl^[0gRAB......CDEFGHI.J^[o^[:
iabcdefghijklmnopqrst^[0gRAB    IJKLMNO QR^[:wq! test.out
ENDTEST
Test Virtual replace mode.

STARTTEST
:so small.vim
:" make sure that backspace works, no matter what termcap is used
:set t_kD=^Vx7f t_kb=^Vx08
ggdGa
abcdefghi
jk      lmn
    opq rst
^Duvwxyz~
~~~~~~~~~~~~~
~~~~~~~~
--No lines in buffer--
abcdefghi
jk      lmn
    opq rst
uvwxyz:set ai
:set bs=2
 1
 A BCDEFGHIJ    KL        MNOPQR:ka
abcdefghi
jk      lmn
    opq rst
uvwxyz
 1:$
ab      cdefghi jkl
AB......CDEFGHI.J:abcdefghijklmnopqrst
AB      IJKLMNO QR:wq! test.out
"test.out" [New File] 13 lines, 107 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test38 = test61; then \
#	  if diff test.out test38.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test38.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test38.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test39.failed test.ok test.out X* viminfo
cp test39.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test39.in
[?1h="test39.in" 118 lines, 2435 charactersTest Visual block mode commands
And test "U" in Visual mode, also on German sharp S.

#define BO_ALL      0x0001
#define BO_BS0x0002
#define BO_CRSR     0x0004

STARTTEST
:so small.vim
:so mbyte.vim
:" This only works when 'encoding' is "latin1", don't depend on the environment
:set enc=latin1
/^abcde
:" Test shift-right of a block
jllll^Vjj>wll^Vjlll>
:" Test shift-left of a block
G$hhhh^Vkk<
:" Test block-insert
Gkl^VkkkIxyz^[
:" Test block-replace
Gllll^Vkkklllrq
:" Test block-change:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 75 lines, 2061 characters written:set ff& cpo+=A
/ENDTEST:exe ":norm! 2k\<C-V>$gj\<Esc>"
:let cpos=getpos("'>")
:$put ='col:'.cpos[2].' off:'.cpos[3]
:"
:" block_insert when replacing spaces in front of the block with tabs
:set ts=8 sts=4 sw=4
:4,7y
Gp
:exe ":norm! f0\<C-V>2jI\<tab>\<esc>"
:/^the/,$w >> test.out
:qa!
ENDTESTline1line2line3

aaaaaa
bbbbbb
cccccc
dddddd

xaaa
:so! Xdotest
:so small.vim
:so mbyte.vim
:" This only works when 'encoding' is "latin1", don't depend on the environment
:set enc=latin1
:exe ":norm! 2k\<C-V>$gj\<Esc>"
:let cpos=getpos("'>")
:$put ='col:'.cpos[2].' off:'.cpos[3]
:"
:" block_insert when replacing spaces in front of the block with tabs
:set ts=8 sts=4 sw=4
:4,7y
Gp
:exe ":norm! f0\<C-V>2jI\<tab>\<esc>"
:/^the/,$w >> test.out
:qa!
ENDTESTline1line2line3

aaaaaa
bbbbbb
cccccc
dddddd

xaaa/^abcde


















bbbb
cccc
dddd

yaaa
bbb

A23
4567

B23
4567

C23
4567

abcdefghijklm
:" Test shift-right of a block

abcdefghijklmabcd
e
abcdefghijklm
abcd
e
abcdefghijklm
abcd
3 lines >ed 1 time        efghijklm
abcd        efghijklm
abcd        efghijklm     efghgihji        ghijklm        ghijklm:" Test shift-left of a block

abcdefghijklmi 


3 lines <ed 1 timeef    efghijklmi:" Test block-insert

abbb
ab
ab
abxyzbcdefghijklm
axyzbcd
axyzbcd
axyzbcd
a:" Test block-replace



abcdebbbccfcddgd  hqqqq
axyzqqqq
axyzqqqq
abcdqqqq
axyz:" Test block-change


ji     ghijklef  gklmnomnomno:$-4,$w! test.out
"test.out" [New File] 5 lines, 108 characters written:" Test block-insert using cursor keys for movement
/^aaaa/
search hit BOTTOM, continuing at TOPaaaaaa
bbbbbb
cccccc
ddddddsearch hit BOTTOM, continuing at TOP:exe ":norm! l\<C-V>jjjlllI\<Right>\<Right>  \<Esc>"
  aaa
bbb  bbb
ccc  ccc
ddd  ddd:/^aa/,/^$/w >> test.out
search hit BOTTOM, continuing at TOP
"test.out" 5 lines, 37 characters appended/xaaa$/
:exe ":norm! \<C-V>jjjI<>\<Left>p\<Esc>"
<p>xaaa
<p>bbbb
<p>cccc
<p>dddd:/xaaa$/,/^$/w >> test.out
search hit BOTTOM, continuing at TOP
"test.out" 5 lines, 33 characters appended:" Test for Visual block was created with the last <C-v>$
/^A23$/
:exe ":norm! l\<C-V>j$Aab\<Esc>"
ab
4567ab:.,/^$/w >> test.out
"test.out" 3 lines, 14 characters appended:" Test for Visual block was created with the middle <C-v>$ (1)
/^B23$/
:exe ":norm! l\<C-V>j$hAab\<Esc>"
ab
4567ab:.,/^$/w >> test.out
"test.out" 3 lines, 15 characters appended:" Test for Visual block was created with the middle <C-v>$ (2)
/^C23$/
:exe ":norm! l\<C-V>j$hhAab\<Esc>"
ab
456ab7:.,/^$/w >> test.out
"test.out" 3 lines, 14 characters appended:" Test for Visual block insert when virtualedit=all and utf-8 encoding
:set ve=all enc=utf-8
aaa  aaa
bbb  bbb
ccc  ccc
ddd  ddd

<p>xaaa
<p>bbbb
<p>cccc
<p>dddd

yaaa
<bf><bf><bf>
bbb

A23ab
4567ab

B23 ab
4567ab

C23ab
456ab7


:/\t\tline
search hit BOTTOM, continuing at TOPline1line2line3search hit BOTTOM, continuing at TOP:exe ":norm! 07l\<C-V>jjIx\<Esc>"
xxx:.,/^$/w >> test.out
"test.out" 4 lines, 49 characters appended:" Test for Visual block append when virtualedit=all
:exe ":norm! 012l\<C-v>jjAx\<Esc>"
x   line1x   line2x   line3:set ve= enc=latin1
x     x   line1x     x   line2x     x   line3

aaa  aaa
bbb  bbb
ccc  ccc
ddd  ddd

<p>xaaa
<p>bbbb
<p>cccc
<p>dddd

yaaa
bbb

A23ab
4567ab

B23 ab








C23ab
456ab7

axyzbcdefghijklm
axyzqqqq   mnoghijklm
axyzqqqqef mnoghijklm
axyzqqqqefgmnoklm
abcdqqqqijklm
the 
:" VU must uppercase a whole line


:" same, when it's the last line in the buffer


:" Uppercase two lines

blah didoh dut
doh dut blah di t
BLAH DIDOH DUT
:" Uppercase part of two lines
~
333the youtUTUSSEUU END
333THE YOUTU

:" visual replace using Enter or NL




123456789
123456789
123456789
1234566789


789
12345
789



98765
98765
98765
987
987
98^M65
98^M65
98^M65
98



123456789
123456789
123456789
1234566789


789
12345
789



98765
98765
98765
987
987
98^@65
98^@65
98^@65


:"
:" Test cursor position. When ve=block and Visual block mode and $gj
:set ve=block
:exe ":norm! 2k\<C-V>$gj\<Esc>"
:let cpos=getpos("'>")
:$put ='col:'.cpos[2].' off:'.cpos[3]

col:4 off:0
:"
:" block_insert when replacing spaces in front of the block with tabs
:set ts=8 sts=4 sw=4
:4,7y
4 lines yanked
4 more lines
4 more lines
#define BO_ALL      0x0001
:exe ":norm! f0\<C-V>2jI\<tab>\<esc>"


    0x0001
#define BO_BS0x0002
#define BO_CRSR0x0004


:/^the/,$w >> test.out
search hit BOTTOM, continuing at TOP
"test.out" 31 lines, 322 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test39 = test61; then \
#	  if diff test.out test39.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test39.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test39.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test40.failed test.ok test.out X* viminfo
cp test40.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test40.in
[?1h="test40.in" 63 lines, 1536 charactersTest for "*Cmd" autocommands

STARTTEST
:so small.vim
:/^start/,$w! Xxx" write lines below to Xxx
:au BufReadCmd XtestA 0r Xxx|$del
:e XtestA" will read text of Xxd instead
:au BufWriteCmd XtestA call append(line("$"), "write")
:w" will append a line to the file
:r XtestA" should not read anything
:" now we have:
:" 1     start of Xxx
:" 2test40
:" 3     end of Xxx
:" 4     write
:au FileReadCmd XtestB '[r Xxx
:2r XtestB" will read Xxx below line 2 instead
:" 1     start of Xxx
:" 2test40
:" 3     start of Xxx
:" 4test40
:" 5     end of Xxx
:" 6     end of Xxx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for "*Cmd" autocommands/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 55 lines, 1455 characters written:set ff& cpo+=A
/ENDTEST:$w >>test.out" append "end of Xxx" to test.out
:au BufReadCmd XtestE 0r test.out|$del
:sp XtestE" split window with test.out
5Goasdf^[^W^W:"
:au BufWriteCmd XtestE w! test.out
:wall" will write other window to test.out
:" 1     start of Xxx
:" 2test40
:" 3     start of Xxx
:" 4test401
:" 5     end of Xxx
:" 6     asdf
:" 7     end of Xxx
:" 8     write
:" 9test401
:" 10    end of Xxx
:" 11    end of Xxx
:qa!
ENDTEST

start of Xxxtest40
end of Xxx
:so! Xdotest
:so small.vim
:/^start/,$w! Xxx^I^I" write lines below to Xxx
"Xxx" [New File] 3 lines, 32 characters written:au BufReadCmd XtestA 0r Xxx|$del
:e XtestA^I^I^I" will read text of Xxd instead
"Xxx" 3 lines, 32 charactersstart of Xxx        test40end of Xxx~~~~~~~~~~~~~~~~
~~~~:au BufWriteCmd XtestA call append(line("$"), "write")
:w^I^I^I^I" will append a line to the file
write:r XtestA^I^I^I" should not read anything
E484: Can't open file XtestA:^I^I^I^I" now we have:
:^I^I^I^I" 1^Istart of Xxx
:^I^I^I^I" 2^I^Itest40
:^I^I^I^I" 3^Iend of Xxx
:^I^I^I^I" 4^Iwrite
:au FileReadCmd XtestB '[r Xxx
:2r XtestB^I^I^I" will read Xxx below line 2 instead
"Xxx" 3 lines, 32 charactersstart of Xxxtest40
end of Xxx:^I^I^I^I" 1^Istart of Xxx
:^I^I^I^I" 2^I^Itest40
:^I^I^I^I" 3^Istart of Xxx
:^I^I^I^I" 4^I^Itest40
:^I^I^I^I" 5^Iend of Xxx
:^I^I^I^I" 6^Iend of Xxx
:^I^I^I^I" 7^Iwrite
:au FileWriteCmd XtestC '[,']copy $
test401:4,5w XtestC^I^I^I" will copy lines 4 and 5 to the end
 test401
end of Xxx
:r XtestC^I^I^I" should not read anything
E484: Can't open file XtestC:^I^I^I^I" 1^Istart of Xxx
:^I^I^I^I" 2^I^Itest40
:^I^I^I^I" 3^Istart of Xxx
:^I^I^I^I" 4^I^Itest401
:^I^I^I^I" 5^Iend of Xxx
:^I^I^I^I" 6^Iend of Xxx
:^I^I^I^I" 7^Iwrite
:^I^I^I^I" 8^I^Itest401
:^I^I^I^I" 9^Iend of Xxx
:au FILEAppendCmd XtestD '[,']w! test.out
:w >>XtestD^I^I^I" will write all lines to test.out
"test.out" [New File] 9 lines, 91 characters written:$r XtestD^I^I^I" should not read anything
E484: Can't open file XtestD:$w >>test.out^I^I^I" append "end of Xxx" to test.out
"test.out" 1 line, 11 characters appended:au BufReadCmd XtestE 0r test.out|$del
:sp XtestE^I^I^I" split window with test.out
"test.out" 10 lines, 102 charactersend of Xxx

XtestE                                                                          end of Xxx
write
 test401
end of XxxXtestA                                                                          asdf[+]XtestE [+]                                                                      XtestA                                                                          :"
:au BufWriteCmd XtestE w! test.out
:wall^I^I^I^I" will write other window to test.out
"test.out" 11 lines, 107 characters written   :^I^I^I^I" 1^Istart of Xxx
:^I^I^I^I" 2^I^Itest40
:^I^I^I^I" 3^Istart of Xxx
:^I^I^I^I" 4^I^Itest401
:^I^I^I^I" 5^Iend of Xxx
:^I^I^I^I" 6^Iasdf
:^I^I^I^I" 7^Iend of Xxx
:^I^I^I^I" 8^Iwrite
:^I^I^I^I" 9^I^Itest401
:^I^I^I^I" 10^Iend of Xxx
:^I^I^I^I" 11^Iend of Xxx
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test40 = test61; then \
#	  if diff test.out test40.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test40.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test40.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test41.failed test.ok test.out X* viminfo
cp test41.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test41.in
[?1h="test41.in" 24 lines, 421 charactersTest for writing and reading a file of over 100 Kbyte

1 line: "This is the start"
3001 lines: "This is the leader"
1 line: "This is the middle"
3001 lines: "This is the trailer"
1 line: "This is the end"

STARTTEST
:%d
aThis is the start
This is the leader
This is the middle
This is the trailer
This is the end^[kY3000p2GY3000p
:w! Xtest
:%d
:e! Xtest
:.w! test.out
3003G:.w >>test.out
6005G:.w >>test.out
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for writing and reading a file of over 100 Kbyte/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 13 lines, 196 characters written:set ff& cpo+=A
/ENDTEST

:so! Xdotest
:%d
~~~~~
~~~~~~~~~~~~~~~~
~
--No lines in buffer--This is the start
This is the leader
This is the middle
This is the trailer
This is the end3000 more linestrailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailerleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleader
:w! Xtest
"Xtest" [New File] 6005 lines, 117092 characters written:%d
~~~~~~~~~~~~~~~~~~~~~~
--No lines in buffer--:e! Xtest
"Xtest" 6005 lines, 117092 charactersThis is the start
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader:.w! test.out
"test.out" [New File] 1 line, 18 characters writtenThis is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the middle
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer:.w >>test.out
"test.out" 1 line, 19 characters appendedThis is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the end

:.w >>test.out
"test.out" 1 line, 16 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test41 = test61; then \
#	  if diff test.out test41.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test41.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test41.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test42.failed test.ok test.out X* viminfo
cp test42.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test42.in
[?1h="test42.in" 130 lines, 2368 charactersTest for writing and reading a file starting with a BOM

STARTTEST
:so mbyte.vim
:set encoding=utf-8
:set fileencodings=ucs-bom,latin-1
:set ff=unix ffs=unix" This changes the file for DOS and MAC
:" --- Write the test files
:/^latin-1$/+1w! Xtest0
:/^utf-8$/+1w! Xtest1
:/^utf-8-err$/+1w! Xtest2
:/^ucs-2$/+1w! Xtest3
:/^ucs-2le$/+1w! Xtest4
:" Need to add a NUL byte after the NL byte
:set bin
:e! Xtest4" Ignore change from setting 'ff'
o^V^@^[:set noeol
:w
:set ffs& nobinary" Allow default test42.in format
:e #
:set ff=unix" Format for files to write
:/^ucs-4$/+1w! Xtest5
:/^ucs-4le$/+1w! Xtest6:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for writing and reading a file starting with a BOM/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 111 lines, 2116 characters written:set ff& cpo+=A
/ENDTEST:e! test.out
:$r Xtest0x
:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&" Write the file in default format
:w! test.out
:qa!
ENDTEST

latin-1
utf-8
utf-8
utf-8-err
utf-8~@err
ucs-2
ucs-2le
:so! Xdotest
:so mbyte.vim
:set encoding=utf-8
:e! test.out
:$r Xtest0x
:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&" Write the file in default format
:w! test.out
:qa!
ENDTEST

latin-1
<fe><fe>latin-1
utf-8
<feff>utf-8
utf-8-err
<feff>utf-8<80>err
ucs-2
<fe><ff>^@u^@c^@s^@-^@2^@
ucs-2le
<ff><fe>u^@c^@s^@-^@2^@l^@e^@:set fileencodings=ucs-bom,latin-1
:set ff=unix ffs=unix           " This changes the file for DOS and MAC
:" --- Write the test files
:/^latin-1$/+1w! Xtest0
"Xtest0" [New File] 1 line, 10 characters written:/^utf-8$/+1w! Xtest1
"Xtest1" [New File] 1 line, 9 characters written:/^utf-8-err$/+1w! Xtest2
"Xtest2" [New File] 1 line, 13 characters written:/^ucs-2$/+1w! Xtest3
"Xtest3" [New File] 1 line, 14 characters written:/^ucs-2le$/+1w! Xtest4
"Xtest4" [New File] 1 line, 17 characters written:" Need to add a NUL byte after the NL byte
:set bin
:e! Xtest4                      " Ignore change from setting 'ff'
"Xtest4" 1 line, 17 characters<ff><fe>u^@c^@s^@-^@2^@l^@e^@~~~~~~~~~~~
~~~~~~~~~~~
^@
:set noeol
:w
"Xtest4" [Incomplete last line] 2 lines, 18 characters written:set ffs& nobinary              " Allow default test42.in format
:e #
"test42.in" [converted] 130 lines, 2385 characters:$r Xtest0x:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&" Write the file in default format
:w! test.out
:qa!
ENDTESTlatin-1
þþlatin-1
utf-8
utf-8
utf-8-err
utf-8<80>err
ucs-2
þÿ^@u^@c^@s^@-^@2^@
ucs-2le
ÿþu^@c^@s^@-^@2^@l^@e^@
ucs-4:set ff=unix                    " Format for files to write
:/^ucs-4$/+1w! Xtest5
"Xtest5" [converted][New File] 1 line, 30 characters written:/^ucs-4le$/+1w! Xtest6
"Xtest6" [converted][New File] 1 line, 35 characters written:" Need to add three NUL bytes after the NL byte
:set bin
:e! Xtest6                      " ! for when setting 'ff' is a change
"Xtest6" 1 line, 33 characters<ff><fe>^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@l^@^@^@e^@^@^@~~~~~~~~~~
~~~~~~~~~~~~
~   
^@^@^@:set noeol
:w
"Xtest6" [Incomplete last line] 2 lines, 36 characters written:set nobin
:e #
"test42.in" [converted] 130 lines, 2385 characters:$r Xtest0x:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&" Write the file in default format
:w! test.out
:qa!
ENDTESTlatin-1
þþlatin-1
utf-8
utf-8
utf-8-err
utf-8<80>err
ucs-2
þÿ^@u^@c^@s^@-^@2^@
ucs-2le
ÿþu^@c^@s^@-^@2^@l^@e^@
ucs-4:"
:" --- Check that editing a latin-1 file doesn't see a BOM
:e! Xtest0
"Xtest0" [converted] 1 line, 12 charactersþþlatin-1~~~~~~~~~~
~~~~~~~~~~~~:redir! >test.out
:set fileencoding bomb?
  fileencoding=latin1

nobomb

Press ENTER or type command to continue:redir END
þþlatin-1
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 12 characters appended:set bomb fenc=latin-1
:w! Xtest0x
"Xtest0x" [converted][New File] 1 line, 12 characters written:"
:" --- Check utf-8
:e! Xtest1
"Xtest1" 1 line, 9 charactersutf-8:redir >>test.out
:set fileencoding bomb?
  fileencoding=utf-8

  bomb

Press ENTER or type command to continue:redir END
utf-8
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 6 characters appended:set fenc=utf-8
:w! Xtest1x
"Xtest1x" [New File] 1 line, 9 characters written:"
:" --- Check utf-8 with an error (will fall back to latin-1)
:e! Xtest2
"Xtest2" [converted] 1 line, 17 charactersutf-8<80>err
:redir >>test.out
:set fileencoding bomb?
  fileencoding=latin1

nobomb

Press ENTER or type command to continue:redir END
utf-8<80>err
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 17 characters appended:set fenc=utf-8
:w! Xtest2x
"Xtest2x" [New File] 1 line, 17 characters written:"
:" --- Check ucs-2
:e! Xtest3
"Xtest3" [converted] 1 line, 8 charactersucs-2:redir >>test.out
:set fileencoding bomb?
  fileencoding=utf-16

  bomb

Press ENTER or type command to continue:redir END
ucs-2
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 6 characters appended:set fenc=ucs-2
:w! Xtest3x
"Xtest3x" [converted][New File] 1 line, 8 characters written:"
:" --- Check ucs-2le
:e! Xtest4
"Xtest4" [converted] 1 line, 10 charactersle
:redir >>test.out
:set fileencoding bomb?
  fileencoding=utf-16le

  bomb

Press ENTER or type command to continue:redir END
ucs-2le
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 8 characters appended:set fenc=ucs-2le
:w! Xtest4x
"Xtest4x" [converted][New File] 1 line, 10 characters written:"
:" --- Check ucs-4
:e! Xtest5
"Xtest5" [converted] 1 line, 10 characters4:redir >>test.out
:set fileencoding bomb?
  fileencoding=ucs-4

  bomb

Press ENTER or type command to continue:redir END
ucs-4
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 6 characters appended:set fenc=ucs-4
:w! Xtest5x
"Xtest5x" [converted][New File] 1 line, 10 characters written:"
:" --- Check ucs-4le
:e! Xtest6
"Xtest6" [converted] 1 line, 12 charactersle
:redir >>test.out
:set fileencoding bomb?
  fileencoding=ucs-4le

  bomb

Press ENTER or type command to continue:redir END
ucs-4le
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 8 characters appended:set fenc=ucs-4le
:w! Xtest6x
"Xtest6x" [converted][New File] 1 line, 12 characters written:"
:" --- Check the files written with BOM
:set bin
:e! test.out
"test.out" 35 lines, 275 characters  fileencoding=latin1
nobomb
<fe><fe>latin-1  fileencoding=utf-8
  bomb
utf-8  fileencoding=latin1
nobomb
<feff>utf-8<80>err  fileencoding=utf-16
  bomb
ucs-2  fileencoding=utf-16le:$r Xtest0x
"Xtest0x" 1 line, 10 characters












bomb
ucs-2lefileencoding=ucs-4
  bomb
ucs-4fileencoding=ucs-4le
  bomb
ucs-4le
<fe><fe>latin-1
:$r Xtest1x
"Xtest1x" 1 line, 9 characters
<feff>utf-8
:$r Xtest2x
"Xtest2x" 1 line, 17 characters
utf-8<80>err
:$r Xtest3x
"Xtest3x" 1 line, 14 characters
<fe><ff>^@u^@c^@s^@-^@2^@
:$r Xtest4x
"Xtest4x" [Incomplete last line] 2 lines, 18 characters
<ff><fe>u^@c^@s^@-^@2^@l^@e^@
:$r Xtest5x
"Xtest5x" 1 line, 28 characters

^@
^@^@<fe><ff>^@^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@
:$r Xtest6x
"Xtest6x" [Incomplete last line] 2 lines, 36 characters
<ff><fe>^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@l^@^@^@e^@^@^@
:set nobin ff&               " Write the file in default format
:w! test.out
"test.out" 44 lines, 409 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test42 = test61; then \
#	  if diff test.out test42.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test42.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test42.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test43.failed test.ok test.out X* viminfo
cp test43.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test43.in
[?1h="test43.in" 34 lines, 473 charactersTests for regexp with various magic settings.

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo
/^1
/a*b\{2}c\+/e
x/\Md\*e\{2}f\+/e
x:set nomagic
/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$
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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with various magic settings./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 19 lines, 268 characters written:set ff& cpo+=A
/ENDTEST

:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo
/^1

1 a aa abb abbccc
/a*b\{2}c\+/e
/\Md\*e\{2}f\+/e

2 d dd dee deefff
:set nomagic
/g\*h\{2}i\+/e

3 g gg ghh ghhiii
/\mj*k\{2}l\+/e

4 j jj jkk jkklll
/\vm*n{2}o+/e

5 m mm mnn mnnooo
/\V^aa$

6 x ^aa$ xaa$ x
:set magic
/\v(a)(b)\2\1\1/e

7 (a)(b) abbaa
/\V[ab]\(\[xy]\)\1

8 axx [ab]xxab]x
:$


9 foobar
:set undolevels=100
?bar?
~

1 more line; before #2  0 seconds agobar
9 foo
:"
:?^1?,$w! test.out
"test.out" [New] 11L, 137C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test43 = test61; then \
#	  if diff test.out test43.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test43.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test43.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test44.failed test.ok test.out X* viminfo
cp test44.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test44.in
[?1h="test44.in" 81 lines, 1492 charactersTests for regexp with multi-byte encoding and various magic settings.
Test matchstr() with a count and multi-byte chars.
See test99 for exactly the same test with re=2.

STARTTEST
:so mbyte.vim
:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
:set re=1
/^1
/a*b\{2}c\+/e
x/\Md\*e\{2}f\+/e
x:set nomagic
/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$
x:set magic
/\v(a)(b)\2\1\1/e
x/\V[ab]\(\[xy]\)\1
x:" Now search for multi-byte without composing char
/ม
x:" Now search for multi-byte with composing char
f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with multi-byte encoding and various magic settings./^STARTTEST

:new
:$put =['dog(a', 'cat(']
/(/e+
"ayn:bd!
:$put =''
G"ap
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
:new
:$put =['dog(a', 'cat(']
/(/e+
"ayn:bd!
:$put =''
G"ap
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
:" Test \%u, [\u] and friends
:" c
/\%u20ac

:" d
/[\u4f7f\u5929]\+

:" e
/\%U12345678

:" f
/[\U1234abcd\u1234\uabcd]

:" g
/\%d21879b

:" j Test backwards search from a multi-byte char
/x

:"
:" l Test what 7.3.192 fixed
/^l

2 d dd dee deeff
3 g gg ghh ghhii
4 j jj jkk jkkll
5 m mm mnn mnnoo
[No Name]                                                                       e y f z
g abb
test.out [+]                                                                    :$put =['dog(a', 'cat(']
dog(a
cat([+]/(/e+
/(/e+1
search hit BOTTOM, continuing at TOP:bd!
1 a aa abb abbcc
2 d dd dee deeff
3 g gg ghh ghhii
4 j jj jkk jkkll
5 m mm mnn mnnoo
6 x aa$ x
7 (a)(b) abba
8 axx ab]xx
e y
a
cat(

:w!
"test.out" 25L, 271C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test44 = test61; then \
#	  if diff test.out test44.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test44.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test44.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test45.failed test.ok test.out X* viminfo
cp test45.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test45.in
[?1h="test45.in" 90 lines, 1953 charactersTests for folding. vim: set ft=vim :

STARTTEST
:so small.vim
:" We also need the +syntax feature here.
:if !has("syntax")
   e! test.ok
   w! test.out
   qa!
:endif
:" basic test if a fold can be created, opened, moving to the end and closed
/^1
zf2j:call append("$", "manual " . getline(foldclosed(".")))
zo:call append("$", foldclosed("."))
]z:call append("$", getline("."))
zc:call append("$", getline(foldclosed(".")))
:" test folding with markers.
:set fdm=marker fdl=1 fdc=3
/^5
:call append("$", "marker " . foldlevel("."))
[z:call append("$", foldlevel("."))
jo{{ ^[r{jj:call append("$", foldlevel("."))
kYpj:call append("$", foldlevel(".")):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for folding. vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 73 lines, 1820 characters written:set ff& cpo+=A
/ENDTEST:new
iTest fdm=indent and :move bug END
line2Test fdm=indent STARTline3line4^[
:set fdm=indent
:1m1
2jzc:m0
:%w >> test.out
:qa!
ENDTEST

1 aa
2 bb
3 cc
4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg
8 hh
9 ii
a jj
:so! Xdotest
:so small.vim
:" We also need the +syntax feature here.
:if !has("syntax")

:     e! test.ok

:     w! test.out

:     qa!

:  :endif
:new
iTest fdm=indent and :move bug END
line2Test fdm=indent START:" basic test if a fold can be created, opened, moving to the end and closed
/^1
+--  3 lines: 1 aa--------------------------------------------------------------4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg8 hh9 ii
a jj
b kk
last:call append("$", "manual " . getline(foldclosed(".")))
1 aa2 bb3 cc4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg
8 hh
9 ii
a jj:call append("$", foldclosed("."))


:call append("$", getline("."))
+--  3 lines: 1 aa--------------------------------------------------------------4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg8 hh9 ii
a jj
b kk
last:call append("$", getline(foldclosed(".")))
:" test folding with markers.
:set fdm=marker fdl=1 fdc=3
   :new
   iTest fdm=indent and :move bug END
   line2
           Test fdm=indent START
           line3
           line4^[
   :set fdm=indent
   :1m1
   2jzc:m0
   :%w >> test.out
   :qa!
   ENDTEST
   
   1 aa   2 bb   3 cc-  4 dd {{{
|- 5 ee {{{ }}}
|  6 ff }}}
   7 gg
   8 hh
   9 ii
   a jj/^5
:call append("$", "marker " . foldlevel("."))
:call append("$", foldlevel("."))
{{ |  6 ff }}}-{|
|
|
|


:call append("$", foldlevel("."))
6 ff }}}
 7 gg
 8 hh:call append("$", foldlevel("."))
:" test folding with indent
:set fdm=indent sw=2
-+ +---  3 lines: Test fdm=indent START-----------------------------------------:set fdm=indent:1m12jzc:m0%w >> test.out:qa!ENDTEST1 aa2 bb3 cc4 dd {{{5 ee {{{ }}}
 {{{  6 ff }}}  6 ff }}}
  7 gg 8 hh9 iia jj/^2 b
search hit BOTTOM, continuing at TOP
-  2 bb
|-    3 cc:call append("$", "indent " . foldlevel("."))
:call append("$", foldlevel("."))
:" test syntax folding
:set fdm=syntax fdl=0
          Test fdm=indent START        line3        line4^[:set fdm=indent1m12jzc:m0:%w >> test.out:qa!ENDTEST
   1 aa  2 bb    3 cc4 dd {{{5 ee {{{ }}}{{{6 ff }}}6 ff }}}7 gg8 hh:syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3
+  +--  8 lines: 4 dd ----------------------------------------------------------a jjb kklastmanual 1 aa-13 cc:syn region Fd1 start="ee" end="ff" fold contained
:syn region Fd2 start="gg" end="hh" fold contained
:syn region Fd3 start="commentstart" end="commentend" fold contained







   1 aa
   marker 2
   1
   1
   0
   indent 2
   1:call append("$", "folding " . getline("."))
:call append("$", getline("."))

--4 dd {{{commentstart  ||5 ee {{{ }}}
||{{{||6 ff }}}
||6 ff }}}||7 gg
||8 hh
||9 ii
||a jj||b kk
||last
||manual 1 aa
||-1||3 cc commentend- 
|-

| 
  
  
  
  
  
  :set fdl=1
+ +---  3 lines: 5 ee --------------------------------------------------------- 6 ff }}}+ +---  2 lines: 7 gg----------------------------------------------------------9 ii  a jj
  b kk
 lastmanual 1 aa-13 cc1 aamarker 21:call append("$", getline("."))
:set fdl=0
+  +--  8 lines: 4 dd commentstart  commentend----------------------------------  a jj b kk  last manual 1 aa-13 cc1 aarker 2110indent
-4 dd {{{commentstart  commentend|-5 ee {{{ }}}
||{{{||6 ff }}}
|6 ff }}}|-7 gg
||8 hh
|9 iia jjb kklastmanual 1 aa-13 cc   :1m1
   2jzc:m0
   :%w >> test.out
   :qa!
   ENDTEST
   
   1 aa
     2 bb
       3 cc
-  4 dd {{{commentstart  commentend
|- 5 ee {{{ }}}
|| {{{
|| 6 ff }}}
|  6 ff }}}
|- 7 gg
|| 8 hh
|  9 ii
   a jj
   b kk
   last
   manual 1 aa
   -1
   3 cc:call append("$", getline("."))
:" test expression folding
:fun Flvl()

:    let l = getline(v:lnum)

:    if l =~ "bb$"

:        return 2

:      elseif l =~ "gg$"

:        return "s1"

:      elseif l =~ "ii$"

:        return ">2"

:      elseif l =~ "kk$"

:        return "0"

:      endif

:    return "="

:  endfun
   :1m1
   2jzc:m0
   :%w >> test.out
   :qa!
   ENDTEST
   
   1 aa
     2 bb
       3 cc
-  4 dd {{{commentstart  commentend
|- 5 ee {{{ }}}
|| {{{:set fdm=expr fde=Flvl()
+  +-- 11 lines: 2 bb-----------------------------------------------------------b kk last  manual 1 aa  -1  3 cc 1 aa  marker 2
  1 10indent 21+  +--  4 lines: folding 9 ii---------------------------------------------------~~/bb$
search hit BOTTOM, continuing at TOP--  2 bb||    3 cc
||4 dd {{{commentstart  commentend
||5 ee {{{ }}}
||{{{
||6 ff }}}
||6 ff }}}
||7 gg|8 hh
|+ +---  2 lines: 9 ii----------------------------------------------------------b kklastmanual 1 aa
 -13 cc1 aa:call append("$", "expr " . foldlevel("."))
/hh$
:call append("$", foldlevel("."))
/ii$
-9 ii||a jjb kklastmanual 1 aa-13 cc:call append("$", foldlevel("."))
/kk$
:call append("$", foldlevel("."))
:/^last/+1,$w! test.out
"test.out" [New File] 18 lines, 96 characters written:delfun Flvl
:new
  
  
  
  ~~~~~~~~~~
[No Name]                                                                       5 ee {{{ }}}{{{6 ff }}}|6 ff }}}|7 gg 8 hh
|-9 ii
||a jjb kklast
test45.in [+]                                                                   Test fdm=indent and :move bug ENDline2 Test fdm=indent START line3 line4[+]:set fdm=indent
+  +--  3 lines: Test fdm=indent START------------------------------------------~~:1m1
:m0
3 lines moved+  +--  3 lines: Test fdm=indent START------------------------------------------Test fdm=indent and :move bug END
 line2:%w >> test.out
"test.out" 5 lines, 77 characters appendedtest.out [+] :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test45 = test61; then \
#	  if diff test.out test45.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test45.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test45.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test48.failed test.ok test.out X* viminfo
cp test48.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test48.in
[?1h="test48.in" 83 lines, 1658 charactersThis is a test of 'virtualedit'.

STARTTEST
:so small.vim
:set noswf
:set ve=all
-dgg
:"
:"   Insert "keyword keyw", ESC, C CTRL-N, shows "keyword ykeyword".
:"    Repeating CTRL-N fixes it. (Mary Ellen Foster)
2/w
C^N^[
:"
:"   Using "C" then then <CR> moves the last remaining character to the next
:"    line.  (Mary Ellen Foster)
j^/are
C^Mare belong to vim^[
:"
:"   When past the end of a line that ends in a single character "b" skips
:"    that word.
^$15lbC7^[
:"
:"   Make sure 'i' works:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
This is a test of 'virtualedit'./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 61 lines, 1442 characters written:set ff& cpo+=A
/ENDTEST:set display=
:"
:"   Test for ^Y/^E due to bad w_virtcol value, reported by
:"   Roy <royl@netropolis.net>.
^O^[3li^E^[4li^E^[4li^E   <-- should show the name of a noted text editor^[
^o^[4li^Y^[4li^Y^[4li^Y   <-- and its version number^[-dd
:"
:" Test for yanking and pasting using the small delete register
gg/^foo
dewve"-p
:wq! test.out
ENDTEST
foo, bar
keyword keyw
all your base are belong to us
1 2 3 4 5 6
'i'
'C'
'a'
'A'
'D'
this is a test
this is a test
:so! Xdotest
:so small.vim
:set noswf
:set ve=all
65 fewer lines











this is a test
"r"
"r"
a^Vb^Msd
abcv6efi.him0kl


~
~
~
~
~65 fewer lines
:"
:"   Insert "keyword keyw", ESC, C CTRL-N, shows "keyword ykeyword".
:"    Repeating CTRL-N fixes it. (Mary Ellen Foster)
/w
$Scanning tags.
The only matchword:"
:"   Using "C" then then <CR> moves the last remaining character to the next
:"    line.  (Mary Ellen Foster)

/are
search hit BOTTOM, continuing at TOP$are belong to vim
1 2 3 4 5 6
'i
'C
'a
'A
'D'this is a test

"r"     
a^Vb^Msdabcv6efi.him0kl:"
:"   When past the end of a line that ends in a single character "b" skips
:"    that word.

$7:"
:"   Make sure 'i' works

'i'   <-- should be 3 ' ':"
:"   Make sure 'C' works

'C'   $<-- should be 3 ' ':"
:"   Make sure 'a' works

'a'    <-- should be 4 ' ':"
:"   Make sure 'A' works

'A'   <-- should be 0 ' ':"
:"   Make sure 'D' works

'D'   <-- 'D' should be intact:"
:"   Test for yank bug reported by Mark Waggoner.
:set ve=block

aaaaaablock of 4 lines yanked3 more linesa
a
a
 
:"
:" Test "r" beyond the end of the line
:set ve=all
/^"r"
search hit BOTTOM, continuing at TOP"r"    xx<-- should be 'x':"
:" Test "r" on a tab
:" Note that for this test, 'ts' must be 8 (the default).

"r"  xx  <-- should be '  x  ':"
:"   Test to make sure 'x' can delete control characters
:set display=uhex
<16>b<0d>sd
<16>b<0d>sdb<0d>sd<0d>sdsdd[This line should contain only the text between the brackets.]:set display=
:"
:"   Test for ^Y/^E due to bad w_virtcol value, reported by
:"   Roy <royl@netropolis.net>.

   vv   ii   m   <-- should show the name of a noted text editor
    66   ..   0   <-- and its version number

    :"
:" Test for yanking and pasting using the small delete register
/^foo
search hit BOTTOM, continuing at TOP, bar, bafoo
keyw:wq! test.out
"test.out" [New File] 23 lines, 479 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test48 = test61; then \
#	  if diff test.out test48.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test48.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test48.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test51.failed test.ok test.out X* viminfo
cp test51.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test51.in
[?1h="test51.in" 36 lines, 808 charactersTests for ":highlight". vim: set ft=vim :

STARTTEST
:so small.vim
:" basic test if ":highlight" doesn't crash
:highlight
:hi Search
:" test setting colors.
:" test clearing one color and all doesn't generate error or warning
:hi NewGroup term=bold cterm=italic ctermfg=DarkBlue ctermbg=Grey gui= guifg=#000ff00 guibg=Cyan
:hi Group2 term= cterm=
:hi Group3 term=underline cterm=bold
:redir! >test.out
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group2 NONE
:hi Group2
:hi clear:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for ":highlight". vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 31 lines, 746 characters written:set ff& cpo+=A
/ENDTEST












:hi Group3
:hi Crash term='asdf
:redir END
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
:%s/ctermfg=\d*/ctermfg=2/
:%s/ctermbg=\d*/ctermbg=3/
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
:" fix the fileformat
:set ff&
:wq!
ENDTEST

:so! Xdotest
:so small.vim
:" basic test if ":highlight" doesn't crash
:highlight

SpecialKey     xxx term=bold ctermfg=1 guifg=Blue

EndOfBuffer    xxx links to NonText

NonTextxxx term=bold ctermfg=9 gui=bold guifg=Blue

Directory      xxx term=bold ctermfg=1 guifg=Blue

ErrorMsgxxx term=standout ctermfg=15 ctermbg=4 guifg=White guibg=Red

IncSearch      xxx term=reverse cterm=reverse gui=reverse

Searchxxx term=reverse ctermfg=0 ctermbg=14 guibg=Yellow

MoreMsgxxx term=bold ctermfg=2 gui=bold guifg=SeaGreen

ModeMsgxxx term=bold cterm=bold gui=bold

LineNrxxx term=underline ctermfg=6 guifg=Brown

CursorLineNr   xxx term=bold ctermfg=6 gui=bold guifg=Brown

Questionxxx term=standout ctermfg=2 gui=bold guifg=SeaGreen

StatusLine     xxx term=bold,reverse cterm=bold,reverse gui=bold,reverse

StatusLineNC   xxx term=reverse cterm=reverse gui=reverse

VertSplit      xxx term=reverse cterm=reverse gui=reverse

Titlexxx term=bold ctermfg=5 gui=bold guifg=Magenta

Visualxxx term=reverse cterm=reverse guibg=LightGrey

VisualNOS      xxx term=bold,underline cterm=bold,underline gui=bold,underline

WarningMsg     xxx term=standout ctermfg=4 guifg=Red

WildMenuxxx term=standout ctermfg=0 ctermbg=14 guifg=Black guibg=Yellow

Foldedxxx term=standout ctermfg=1 ctermbg=7 guifg=DarkBlue

guibg=LightGrey

FoldColumn     xxx term=standout ctermfg=1 ctermbg=7 guifg=DarkBlue guibg=Grey

DiffAddxxx term=bold ctermbg=9 guibg=LightBlue

DiffChange     xxx term=bold ctermbg=13 guibg=LightMagenta

DiffDelete     xxx term=bold ctermfg=9 ctermbg=11 gui=bold guifg=Blue

guibg=LightCyan

DiffTextxxx term=reverse cterm=bold ctermbg=12 gui=bold guibg=Red

SignColumn     xxx term=standout ctermfg=1 ctermbg=7 guifg=DarkBlue guibg=Grey

Concealxxx ctermfg=7 ctermbg=8 guifg=LightGrey guibg=DarkGrey

SpellBadxxx term=reverse ctermbg=12 gui=undercurl guisp=Red

SpellCapxxx term=reverse ctermbg=9 gui=undercurl guisp=Blue

SpellRare      xxx term=reverse ctermbg=13 gui=undercurl guisp=Magenta

SpellLocal     xxx term=underline ctermbg=11 gui=undercurl guisp=DarkCyan

Pmenuxxx ctermfg=0 ctermbg=13 guibg=LightMagenta

PmenuSelxxx ctermfg=0 ctermbg=7 guibg=Grey

PmenuSbar      xxx ctermbg=7 guibg=Grey

PmenuThumb     xxx ctermbg=0 guibg=Black

TabLinexxx term=underline cterm=underline ctermfg=0 ctermbg=7

gui=underline guibg=LightGrey

TabLineSel     xxx term=bold cterm=bold gui=bold

TabLineFill    xxx term=reverse cterm=reverse gui=reverse

CursorColumn   xxx term=reverse ctermbg=7 guibg=Grey90

CursorLine     xxx term=underline cterm=underline guibg=Grey90

ColorColumn    xxx term=reverse ctermbg=12 guibg=LightRed

Cursorxxx guifg=bg guibg=fg

lCursorxxx guifg=bg guibg=fg

MatchParen     xxx term=reverse ctermbg=11 guibg=Cyan

Normalxxx cleared

Press ENTER or type command to continue:hi Search

Searchxxx term=reverse ctermfg=0 ctermbg=14 guibg=Yellow

Press ENTER or type command to continue:" test setting colors.
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group2 NONE
:hi Group2
:hi clear
:hi Group3
:hi Crash term='asdf
:redir END
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
:%s/ctermfg=\d*/ctermfg=2/
:%s/ctermbg=\d*/ctermbg=3/
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
:" fix the fileformat
:set ff&
:wq!
ENDTEST

:" test clearing one color and all doesn't generate error or warning
:hi NewGroup term=bold cterm=italic ctermfg=DarkBlue ctermbg=Grey gui= guifg=#0

0ff00 guibg=Cyan
E418: Illegal value: guifg=#00ff00Press ENTER or type command to continue:hi Group2 term= cterm=
E418: Illegal value: cterm=

Press ENTER or type command to continue:hi Group3 term=underline cterm=bold
:hi NewGroup
:hi Group2
:redir! >test.out
:hi NewGroup

NewGroupxxx term=bold cterm=italic ctermfg=1 ctermbg=7

Press ENTER or type command to continue:hi Group2

Group2xxx cleared

Press ENTER or type command to continue:hi Group3

Group3xxx term=underline cterm=bold

Press ENTER or type command to continue:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi NewGroup

NewGroupxxx cleared

Press ENTER or type command to continue:hi Group2

Group2xxx cleared

Press ENTER or type command to continue:hi Group2 NONE
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi Group2

Group2xxx cleared

Press ENTER or type command to continue:hi clear
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group2 NONE
:hi Group2
:hi clear
:hi Group3
:hi Crash term='asdf
:redir END
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
:%s/ctermfg=\d*/ctermfg=2/
:%s/ctermbg=\d*/ctermbg=3/
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
:" fix the fileformat
:set ff&
:wq!
ENDTEST

:hi Group3

Group3xxx cleared

Press ENTER or type command to continue:hi Crash term='asdf
E475: Invalid argument: term='asdf

Press ENTER or type command to continue:redir END
:hi NewGroup
:hi Group2
:hi Group3
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
"test.out" 20 lines, 289 charactersNewGroup       xxx term=bold cterm=italic ctermfg=1 ctermbg=7Group2         xxx clearedGroup3         xxx term=underline cterm=boldNewGroup       xxx clearedGroup2         xxx clearedGroup2         xxx clearedGroup3         xxx clearedE475: Invalid argument: term='asdf~~
~:%s/ctermfg=\d*/ctermfg=2/
2
:%s/ctermbg=\d*/ctermbg=3/
3
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
term='asdf:" fix the fileformat
:set ff&
:wq!
"test.out" 20 lines, 271 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test51 = test61; then \
#	  if diff test.out test51.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test51.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test51.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test53.failed test.ok test.out X* viminfo
cp test53.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test53.in
[?1h="test53.in" 75 lines, 1763 charactersTests for string and html text objects. vim: set ft=vim :

Note that the end-of-line moves the cursor to the next test line.

Also test match() and matchstr()

STARTTEST
:so small.vim
/^start:/
da"
0va'a'rx
02f`da`
0fXdi"
03f'vi'ry
:set quoteescape=+*-
di`
$F"va"oha"i"rz
:"
/^<begin
jfXdit
0fXdit
fXdat
0fXdat:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for string and html text objects. vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 47 lines, 1237 characters written:set ff& cpo+=A
/ENDTEST:put =match('abc', '$', 4, 1) " -1
:put =match('abc', '\zs', 0, 1) " 0
:put =match('abc', '\zs', 0, 2) " 1
:put =match('abc', '\zs', 0, 3) " 2
:put =match('abc', '\zs', 0, 4) " 3
:put =match('abc', '\zs', 0, 5) " -1
:put =match('abc', '\zs', 1, 1) " 1
:put =match('abc', '\zs', 2, 1) " 2
:put =match('abc', '\zs', 3, 1) " 3
:put =match('abc', '\zs', 4, 1) " -1
:/^start:/,/^end:/wq! test.out
ENDTEST

start: "wo\"rd\\" foo
'foo' 'bar' 'piep'
bla bla `quote` blah
out " in "noXno"
"'" 'blah' rep 'buh'
bla `s*`d-`+++`l**` b`la
voo "nah" sdf " asdf" sdf " sdf" sd

<begin>
-<b>asdf<i>Xasdf</i>asdf</b>-
:so! Xdotest
:so small.vim
/^start:/
fo
'foo' 'bar'
xxxxxxxxxxxx

blah
"
' repyyyyy:set quoteescape=+*-
` b`la" sdf"" " asdf" sdf ah" sdf "
voo "zzzzzzzzzzzzzzzzzzzzzzzzzzzz
voo "
:"
/^<begin

</i>asdf</b>-
-<b>asdX<i>a<i />sdf</i>asdf</b>-
</b>-
-<b>asdf<i>Xasdf</i>asdf</b>-
-<b>asdf</b>-
-<b>asdX<i>as<b />df</i>asdf</b>-

--
-<b>
-<b></b>
</begin>
:"
:put =matchstr(\"abcd\", \".\", 0, 2) " b

b
:put =matchstr(\"abcd\", \"..\", 0, 2) " bc

bc
:put =matchstr(\"abcd\", \".\", 2, 0) " c (zero and negative -> first match)

c
:put =matchstr(\"abcd\", \".\", 0, -1) " a

a
:put =match(\"abcd\", \".\", 0, 5) " -1

-1
:put =match(\"abcd\", \".\", 0, -1) " 0

0
:put =match('abc', '.', 0, 1) " 0

0
:put =match('abc', '.', 0, 2) " 1

1
:put =match('abc', '.', 0, 3) " 2

2
:put =match('abc', '.', 0, 4) " -1

-1
:put =match('abc', '.', 1, 1) " 1

1
:put =match('abc', '.', 2, 1) " 2

2
:put =match('abc', '.', 3, 1) " -1

-1
:put =match('abc', '$', 0, 1) " 3

3
:put =match('abc', '$', 0, 2) " -1

-1
:put =match('abc', '$', 1, 1) " 3

3
:put =match('abc', '$', 2, 1) " 3

3
:put =match('abc', '$', 3, 1) " 3

3
:put =match('abc', '$', 4, 1) " -1

-1
:put =match('abc', '\zs', 0, 1) " 0

0
:put =match('abc', '\zs', 0, 2) " 1

1
:put =match('abc', '\zs', 0, 3) " 2

2
:put =match('abc', '\zs', 0, 4) " 3

3
:put =match('abc', '\zs', 0, 5) " -1

-1
:put =match('abc', '\zs', 1, 1) " 1

1
:put =match('abc', '\zs', 2, 1) " 2

2
:put =match('abc', '\zs', 3, 1) " 3

3
:put =match('abc', '\zs', 4, 1) " -1

-1
:/^start:/,/^end:/wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 45 lines, 284 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test53 = test61; then \
#	  if diff test.out test53.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test53.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test53.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test55.failed test.ok test.out X* viminfo
cp test55.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test55.in
[?1h="test55.in" 586 lines, 12256 charactersTests for List and Dictionary types.     vim: set ft=vim :

STARTTEST
:so small.vim
:fun Test(...)
:lang C
:" Creating List directly with different types
:let l = [1, 'as''d', [1, 2, function("strlen")], {'a': 1},]
:$put =string(l)
:$put =string(l[-1])
:$put =string(l[-4])
:try
:  $put =string(l[-5])
:catch
:  $put =v:exception[:14]
:endtry
:" List slices
:$put =string(l[:])
:$put =string(l[1:])
:$put =string(l[:-2])
:$put =string(l[0:8])
:$put =string(l[8:-1])
:":set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for List and Dictionary types.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 580 lines, 12170 characters written:set ff& cpo+=A
/ENDTEST:$put =string(l)
:endfun
:"
:call Test(1, 2, [3, 4], {5: 6})  " This may take a while
:"
:delfunc Test
: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^R=a^M^[:"
:lang C
:redir => a
:try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
:redir END
o^R=a^M^[:"
:"
:/^start:/,$wq! test.out
ENDTEST

start:


:so! Xdotest
:so small.vim
:fun Test(...)

:  :lang C

:  :" Creating List directly with different types

:  :let l = [1, 'as''d', [1, 2, function("strlen")], {'a': 1},]

:  :$put =string(l)

:  :$put =string(l[-1])

:  :$put =string(l[-4])

:  :try

:    :  $put =string(l[-5])

:    :catch

:    :  $put =v:exception[:14]

:    :endtry

:  :" List slices

:  :$put =string(l[:])

:  :$put =string(l[1:])

:  :$put =string(l[:-2])

:  :$put =string(l[0:8])

:  :$put =string(l[8:-1])

:  :"

:  :" List identity

:  :let ll = l

:  :let lx = copy(l)

:  :try

:    :  $put =(l == ll) . (l isnot ll) . (l is ll) . (l == lx) . (l is lx) . (l

isnot lx)

:    :catch

:    :  $put =v:exception

:    :endtry

:  :"

:  :" Creating Dictionary directly with different types

:  :let d = {001: 'asd', 'b': [1, 2, function('strlen')], -1: {'a': 1},}

:  :$put =string(d) . d.1

:  :$put =string(sort(keys(d)))

:  :$put =string (values(d))

:  :for [key, val] in items(d)

:    :  $put =key . ':' . string(val)

:    :  unlet key val

:    :endfor

:  :call extend  (d, {3:33, 1:99})

:  :call extend(d, {'b':'bbb', 'c':'ccc'}, "keep")

:  :try

:    :  call extend(d, {3:333,4:444}, "error")

:    :catch

:    :  $put =v:exception[:15] . v:exception[-1:-1]

:    :endtry

:  :$put =string(d)

:  :call filter(d, 'v:key =~ ''[ac391]''')

:  :$put =string(d)

:  :"

:  :" Dictionary identity

:  :let dd = d

:  :let dx = copy(d)

:  :try

:    :  $put =(d == dd) . (d isnot dd) . (d is dd) . (d == dx) . (d is dx) . (d

isnot dx)

:    :catch

:    :  $put =v:exception

:    :endtry

:  :"

:  :"

:  :" removing items with :unlet

:  :unlet l[2]

:  :$put =string(l)

:  :let l = range(8)

:  :try

:    :unlet l[:3]

:    :unlet l[1:]

:    :catch

:    :$put =v:exception

:    :endtry

:  :$put =string(l)

:  :"

:  :unlet d.c

:  :unlet d[-1]

:  :$put =string(d)

:  :"

:  :" removing items out of range: silently skip items that don't exist

:  let l = [0, 1, 2, 3]

:  :unlet l[2:1]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[2:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[2:3]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[2:4]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[2:5]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-1:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-2:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-3:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-4:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-5:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-6:2]

:  :$put =string(l)

:  :"

:  :" assignment to a list

:  :let l = [0, 1, 2, 3]

:  :let [va, vb] = l[2:3]

:  :$put =va

:  :$put =vb

:  :try

:    :  let [va, vb] = l

:    :catch

:    :  $put =v:exception[:14]

:    :endtry

:  :try

:    :  let [va, vb] = l[1:1]

:    :catch

:    :  $put =v:exception[:14]

:    :endtry

:  :"

:  :" manipulating a big Dictionary (hashtable.c has a border of 1000 entries)

:  :let d = {}

:  :for i in range(1500)

:    : let d[i] = 3000 - i

:    :endfor

:  :$put =d[0] . ' ' . d[100] . ' ' . d[999] . ' ' . d[1400] . ' ' . d[1499]

:  :try

:    :  let n = d[1500]

:    :catch

:    :  $put =substitute(v:exception, '\v(.{14}).*( \d{4}).*', '\1\2', '')

:    :endtry

:  :" lookup each items

:  :for i in range(1500)

:    : if d[i] != 3000 - i

:      :  $put =d[i]

:      : endif

:    :endfor

:  : let i += 1

:  :" delete even items

:  :while i >= 2

:    : let i -= 2

:    : unlet d[i]

:    :endwhile

:  :$put =get(d, 1500 - 100, 'NONE') . ' ' . d[1]

:  :" delete odd items, checking value, one intentionally wrong

:  :let d[33] = 999

:  :let i = 1

:  :while i < 1500

:    : if d[i] != 3000 - i

:      :  $put =i . '=' . d[i]

:      : else

:      :  unlet d[i]

:      : endif

:    : let i += 2

:    :endwhile

:  :$put =string(d)  " must be almost empty now

:  :unlet d

:  :"

:  :" Dictionary function

:  :let dict = {}

:  :func dict.func(a) dict

:    :  $put =a:a . len(self.data)

:    :endfunc

:    :let dict.data = [1,2,3]

:    :call dict.func("len: ")

:    :let x = dict.func("again: ")

:    :let Fn = dict.func

:    :call Fn('xxx')

:    :" 

:    :" Function in script-local List or Dict

:    :let g:dict = {}

:    :function g:dict.func() dict

:      :  $put ='g:dict.func'.self.foo[1].self.foo[0]('asdf')

:      :endfunc

:      :let g:dict.foo = ['-', 2, 3]

:      :call insert(g:dict.foo, function('strlen'))

:      :call g:dict.func()

:      :" 

:      :" Nasty: remove func from Dict that's being called (works)

:      :let d = {1:1}

:      :func d.func(a)

::  return "a:". a:a

::endfunc

::$put =d.func(string(remove(d, 'func')))

::"

::" Nasty: deepcopy() dict that refers to itself (fails when noref used

)
::let d = {1:1, 2:2}

::let l = [4, d, 6]

::let d[3] = l

::let dc = deepcopy(d)

::try

::  let dc = deepcopy(d, 1)

::catch

::  $put =v:exception[:14]

::endtry

::let l2 = [0, l, l, 3]

::let l[1] = l2

::let l3 = deepcopy(l2)

::$put ='same list: ' . (l3[1] is l3[2])

::"

::" Locked variables

::for depth in range(5)

::  $put ='depth is ' . depth

::  for u in range(3)

::    unlet l

::    let l = [0, [1, [2, 3]], {4: 5, 6: {7: 8}}]

::    exe "lockvar " . depth . " l"

::    if u == 1

::      exe "unlockvar l"

::    elseif u == 2

::      exe "unlockvar " . depth . " l"

::    endif

::    let ps = islocked("l").islocked("l[1]").islocked("l[1][1]").i

slocked("l[1][1][0]").'-'.islocked("l[2]").islocked("l[2]['6']").islocked("l[2][

'6'][7]")

::    $put =ps

::    let ps = ''

::    try

::      let l[1][1][0] = 99

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[1][1] = [99]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[1] = [99]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[2]['6'][7] = 99

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[2][6] = {99: 99}

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[2] = {99: 99}

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l = [99]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    $put =ps

::  endfor

::endfor

::"

::" Unletting locked variables

::$put ='Unletting:'

::for depth in range(5)

::  $put ='depth is ' . depth

::  for u in range(3)

::    unlet l

::    let l = [0, [1, [2, 3]], {4: 5, 6: {7: 8}}]

::    exe "lockvar " . depth . " l"

::    if u == 1

::      exe "unlockvar l"

::    elseif u == 2

::      exe "unlockvar " . depth . " l"

::    endif

::    let ps = islocked("l").islocked("l[1]").islocked("l[1][1]").i

slocked("l[1][1][0]").'-'.islocked("l[2]").islocked("l[2]['6']").islocked("l[2][

'6'][7]")

::    $put =ps

::    let ps = ''

::    try

::      unlet l[2]['6'][7]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[2][6]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[2]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[1][1][0]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[1][1]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[1]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    $put =ps

::  endfor

::endfor

::"

::" Locked variables and :unlet or list / dict functions

::$put ='Locks and commands or functions:'

::"

::$put ='No :unlet after lock on dict:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar 1 d

::try

::  unlet d.a

::  $put ='did :unlet'

::catch

::  $put =v:exception[:16]

::endtry

::$put =string(d)

::"

::$put =':unlet after lock on dict item:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar d.a

::try

::  unlet d.a

::  $put ='did :unlet'

::catch

::  $put =v:exception[:16]

::endtry

::$put =string(d)

::"

::$put ='filter() after lock on dict item:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar d.a

::try

::  call filter(d, 'v:key != "a"')

::  $put ='did filter()'

::catch

::  $put =v:exception[:16]

::endtry

::$put =string(d)

::"

::$put ='map() after lock on dict:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar 1 d

::try

::  call map(d, 'v:val + 200')

::  $put ='did map()'

::catch

::  $put =v:exception[:16]

::endtry

::$put =string(d)

::"

::$put ='No extend() after lock on dict item:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar d.a

::try

::  $put =string(extend(d, {'a': 123}))

::  $put ='did extend()'

::catch

::  $put =v:exception[:14]

::endtry

::$put =string(d)

::"

::$put ='No remove() of write-protected scope-level variable:'

::fun! Tfunc(this_is_a_loooooooooong_parameter_name)

::  try

::    $put =string(remove(a:, 'this_is_a_loooooooooong_parameter_na

me'))

::    $put ='did remove()'

::  catch

::    $put =v:exception[:14]

::  endtry

::endfun

::call Tfunc('testval')

::"

::$put ='No extend() of write-protected scope-level variable:'

::fun! Tfunc(this_is_a_loooooooooong_parameter_name)

::  try

::    $put =string(extend(a:, {'this_is_a_loooooooooong_parameter

_name': 1234}))

::    $put ='did extend()'

::  catch

::    $put =v:exception[:14]

::  endtry

::endfun

::call Tfunc('testval')

::"

::$put ='No :unlet of variable in locked scope:'

::let b:testvar = 123

::lockvar 1 b:

::try

::  unlet b:testvar

::  $put ='b:testvar was :unlet: '. (!exists('b:testvar'))

::catch

::  $put =v:exception[:16]

::endtry

::unlockvar 1 b:

::unlet! b:testvar

::"

::$put ='No :let += of locked list variable:'

::let l = ['a', 'b', 3]

::lockvar 1 l

::try

::  let l += ['x']

::  $put ='did :let +='

::catch

::  $put =v:exception[:14]

::endtry

::$put =string(l)

::"

::unlet l

::let l = [1, 2, 3, 4]

::lockvar! l

::$put =string(l)

::unlockvar l[1]

::unlet l[0:1]

::$put =string(l)

::unlet l[1:2]

::$put =string(l)

::unlockvar l[1]

::let l[0:1] = [0, 1]

::$put =string(l)

::let l[1:2] = [0, 1]

::$put =string(l)

::unlet l

::" :lockvar/islocked() triggering script autoloading

::set rtp+=./sautest

::lockvar g:footest#x

::unlockvar g:footest#x

::$put ='locked g:footest#x:'.islocked('g:footest#x')

::$put ='exists g:footest#x:'.exists('g:footest#x')

::$put ='g:footest#x: '.g:footest#x

::"

::" a:000 function argument

::" first the tests that should fail

::try

::  let a:000 = [1, 2]

::catch

::  $put ='caught a:000'

::endtry

::try

::  let a:000[0] = 9

::catch

::  $put ='caught a:000[0]'

::endtry

::try

::  let a:000[2] = [9, 10]

::catch

::  $put ='caught a:000[2]'

::endtry

::try

::  let a:000[3] = {9: 10}

::catch

::  $put ='caught a:000[3]'

::endtry

::" now the tests that should pass

::try

::  let a:000[2][1] = 9

::  call extend(a:000[2], [5, 6])

::  let a:000[3][5] = 8

::  let a:000[3]['a'] = 12

::  $put =string(a:000)

::catch

::  $put ='caught ' . v:exception

::endtry

::"

::" reverse(), sort(), uniq()

::let l = ['-0', 'A11', 2, 2, 'xaaa', 4, 'foo', 'foo6', 'foo', [0, 

1, 2], 'x8', [0, 1, 2], 1.5]

::$put =string(uniq(copy(l)))

::$put =string(reverse(l))

::$put =string(reverse(reverse(l)))

::$put =string(sort(l))

::$put =string(reverse(sort(l)))

::$put =string(sort(reverse(sort(l))))

::$put =string(uniq(sort(l)))

::let l=[7, 9, 'one', 18, 12, 22, 'two', 10.0e-16, -1, 'three', 0xf

f, 0.22, 'four']

::$put =string(sort(copy(l), 'n'))

::let l=[7, 9, 18, 12, 22, 10.0e-16, -1, 0xff, 0, -0, 0.22, 'bar', 

'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', {}, []]

::$put =string(sort(copy(l), 1))

::$put =string(sort(copy(l), 'i'))

::$put =string(sort(copy(l)))

::"

::" splitting a string to a List

::$put =string(split('  aa  bb '))

::$put =string(split('  aa  bb  ', '\W\+', 0))

::$put =string(split('  aa  bb  ', '\W\+', 1))

::$put =string(split('  aa  bb  ', '\W', 1))

::$put =string(split(':aa::bb:', ':', 0))

::$put =string(split(':aa::bb:', ':', 1))

::$put =string(split('aa,,bb, cc,', ',\s*', 1))

::$put =string(split('abc', '\zs'))

::$put =string(split('abc', '\zs', 1))

::"

::" compare recursively linked list and dict

::let l = [1, 2, 3, 4]

::let d = {'1': 1, '2': l, '3': 3}

::let l[1] = d

::$put =(l == l)

::$put =(d == d)

::$put =(l != deepcopy(l))

::$put =(d != deepcopy(d))

::"

::" compare complex recursively linked list and dict

::let l = []

::call add(l, l)

::let dict4 = {"l": l}

::call add(dict4.l, dict4)

::let lcopy = deepcopy(l)

::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)

::"

::" test for range assign

::let l = [0]

::let l[:] = [1, 2]

::$put =string(l)

::endfun
:$put =string(l)
:endfun
:"
:call Test(1, 2, [3, 4], {5: 6})  " This may take a while
:"
:delfunc Test
: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^R=a^M^[:"
:lang C
:redir => a
:try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
:redir END
o^R=a^M^[:"
:"
:/^start:/,$wq! test.out
ENDTEST

start:

:"
:call Test(1, 2, [3, 4], {5: 6})  " This may take a while
Error detected while processing function Test:
line   76:

E684: list index out of range: 1

line   91:

E684: list index out of range: 2

line  271:

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

line  441:

E741: Value is locked: l[0:1]

line  443:

E741: Value is locked: l[1:2]

line  446:

E741: Value is locked: l[0:1] = [0, 1]

line  448:

E741: Value is locked: l[1:2] = [0, 1]

Press ENTER or type command to continue:"
['BAR', 'Bar', 'FOO', 'FOOBAR', 'Foo', 'bar', 'foo', -1, 0, 0, 0.22, 1.0e-15, 122, 18, 22, 255, 7, 9, [], {}]
['aa', 'bb']
['aa', 'bb']
['', 'aa', 'bb', '']
['', '', 'aa', '', 'bb', '', '']
['aa', '', 'bb']
['', 'aa', '', 'bb', '']
['aa', '', 'bb', 'cc', '']
['a', 'b', 'c']
['', 'a', '', 'b', '', 'c', '']
1
1
0
0
1
1
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
{'a': {'b': 'B'}}
Vim(call):E737: a
{'a': {'b': 'B'}}
[1, 2]
~

:delfunc Test
: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
=a
Vim(foldopen):E490::"
:lang C
:redir => a
:try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
Error detected while processing :
E492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*'

)|endtry

Press ENTER or type command to continue:redir END
['BAR', 'Bar', 'FOO', 'FOOBAR', 'Foo', 'bar', 'foo', -1, 0, 0, 0.22, 1.0e-15, 122, 18, 22, 255, 7, 9, [], {}]
['aa', 'bb']
=a





Error detected while processing :
E492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*'))|endtry

:"
:"
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 197 lines, 3821 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test55 = test61; then \
#	  if diff test.out test55.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test55.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test55.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test56.failed test.ok test.out X* viminfo
cp test56.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test56.in
[?1h="test56.in" 21 lines, 457 charactersTest for script-local function.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:set nocp viminfo+=nviminfo
:/^start:/+1,/^end:/-1w! Xtest.vim
:source Xtest.vim
_x
:$-1,$wq! test.out
ENDTEST

start:
fun <SID>DoLast()
  call append(line('$'), "last line")
endfun
fun s:DoNothing()
  call append(line('$'), "nothing line")
endfun
nnoremap <buffer> _x    :call <SID>DoNothing()<bar>call <SID>DoLast()<bar>delfunnc <SID>DoNothing<bar>delfunc <SID>DoLast<cr>
end:
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for script-local function.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 7 lines, 120 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:"
:set nocp viminfo+=nviminfo
:/^start:/+1,/^end:/-1w! Xtest.vim
"Xtest.vim" [New] 7L, 251C written:source Xtest.vim
:call <SNR>4_DoNothing()|call <SNR>4_DoLast()|delfunc <SNR>4_DoNothing|delfunc 

<SNR>4_DoLast
Press ENTER or type command to continueTest for script-local function.     vim: set ft=vim :nothing line:$-1,$wq! test.out
"test.out" [New] 2L, 23C written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test56 = test61; then \
#	  if diff test.out test56.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test56.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test56.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test57.failed test.ok test.out X* viminfo
cp test57.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test57.in
[?1h="test57.in" 545 lines, 4110 charactersTests for :sort command.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:/^t01:/+1,/^t02/-1sort
:/^t02:/+1,/^t03/-1sort n
:/^t03:/+1,/^t04/-1sort x
:/^t04:/+1,/^t05/-1sort u
:/^t05:/+1,/^t06/-1sort!
:/^t06:/+1,/^t07/-1sort! n
:/^t07:/+1,/^t08/-1sort! u
:/^t08:/+1,/^t09/-1sort o
:/^t09:/+1,/^t10/-1sort! x
:/^t10:/+1,/^t11/-1sort/./
:/^t11:/+1,/^t12/-1sort/../
:/^t12:/+1,/^t13/-1sort/../u
:/^t13:/+1,/^t14/-1sort/./n
:/^t14:/+1,/^t15/-1sort/./r
:/^t15:/+1,/^t16/-1sort/../r
:/^t16:/+1,/^t17/-1sort/./rn
:/^t17:/+1,/^t18/-1sort/\d/
:/^t18:/+1,/^t19/-1sort/\d/r:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :sort command.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 33 lines, 920 characters written:set ff& cpo+=A
/ENDTEST:/^t21:/+1,/^t22/-1sort/\d\d/
:/^t22:/+1,/^t23/-1sort/\d\d/n
:/^t23:/+1,/^t24/-1sort/\d\d/x
:/^t24:/+1,/^t25/-1sort/\d\d/r
:/^t25:/+1,/^t26/-1sort/\d\d/rn
:/^t26:/+1,/^t27/-1sort/\d\d/rx
:/^t27:/+1,/^t28/-1sort no
:/^t28:/+1,/^t29/-1sort b
:/^t29:/+1,/^t30/-1sort b
:/^t30:/+1,/^t31/-1sort f
:/^t01:/,$wq! test.out
ENDTEST

t01: alphebetical
abc
ab
a
a321
a123
a122
b321
b123
c123d
:so! Xdotest
:so small.vim
:"
:/^t01:/+1,/^t02/-1sort
 123b2
a123
a
ababc:/^t02:/+1,/^t03/-1sort n









b123
b321
b321
b321b
b322b
c123d
c321d
t02: numeric
abc
:/^t03:/+1,/^t04/-1sort x
a123
b123
c123d
 123b
a321
b321
c321d
b321
b321b
b322b
t03: hexadecimal


a
ab
abc
 123b
a122
a123
a321
b123
b321
b321:/^t04:/+1,/^t05/-1sort u






b321b
b322b
c123d
c321d
t04: alpha, unique
:/^t05:/+1,/^t06/-1sort!
a123
a321
ab
abc
b123
b321
b321b
b322b
c123d
c321d
t05: alpha, reverse
c321d
c123d
b322b
b321b
b321
b321
b123
abc
ab
a321
a123
a122:/^t06:/+1,/^t07/-1sort! n        






a
 123b


t06: numeric, reverse
b322b
:/^t07:/+1,/^t08/-1sort! u
123b
c123d
b123
a123
a122


a
ab
abc
t07: unique, reverse
c321d
c123d
b322b
b321b
b321
b123
abc
ab
a321
a123
a122
a:/^t08:/+1,/^t09/-1sort o         




123b

t08: octal
abc
:/^t09:/+1,/^t10/-1sort! x        
a123
b123
c123d
 123b
a321
b321
c321d
b321
b321b
b322b
t09: reverse, hexadecimal
c321d
c123d
b322b
b321b
b321
b321
b123
a321
a123
a122
 123b
abc:/^t10:/+1,/^t11/-1sort/./        






ab
a


t10: alpha, skip first character
a
:/^t11:/+1,/^t12/-1sort/../       
123b
c123d
a321
b321
b321
b321b
c321d
b322b
ab
abc
t11: alpha, skip first 2 characters
ab
a


a321
b321
b321
b321b
c321d
a122
b322b
a123:/^t12:/+1,/^t13/-1sort/../u






b123
 123b
c123d
abc
t12: alpha, unique, skip first 2 characters
ab
:/^t13:/+1,/^t14/-1sort/./n
b321
b321b
c321d
a122
b322b
a123
b123
 123b
c123d
abc
t13: numeric, skip first character
abc
ab
a


a122
a123
b123
c123d
 123b
a321
b321:/^t14:/+1,/^t15/-1sort/./r






c321d
b321
b321b
b322b
t14: alpha, sort on first character
:/^t15:/+1,/^t16/-1sort/../r
a321
a123
a122
b321
b123
b322b
b321
b321b
c123d
c321d
t15: alpha, sort on first 2 characters
a123b
a123
a122
a321
abc
ab
b123
b321
b322b:/^t16:/+1,/^t17/-1sort/./rn






b321
b321b
c123d
c321d
t16: numeric, sort on first character
abc
:/^t17:/+1,/^t18/-1sort/\d/
b321
b123
c123d
 123b
c321d
b322b
b321
b321b


t17: alpha, skip past first digit
abc
ab
a


a321
b321
b321
b321b
c321d
a122
b322b:/^t18:/+1,/^t19/-1sort/\d/r






a123
b123
 123b
c123d
t18: alpha, sort on first digit
abc
:/^t19:/+1,/^t20/-1sort/\d/n
a122
b123
c123d
 123b
a321
b321
c321d
b322b
b321
b321b
t19: numeric, skip past first digit
abc
ab
a


a321
b321
c321d
b321
b321b
a122
b322b:/^t20:/+1,/^t21/-1sort/\d/rn






a123
b123
c123d
 123b
t20: numeric, sort on first digit
abc
:/^t21:/+1,/^t22/-1sort/\d\d/
a122
b123
c123d
 123b
a321
b321
c321d
b322b
b321
b321b
t21: alpha, skip past first 2 digits
abc
ab
a


a321
b321
b321
b321b
c321d
a122
b322b:/^t22:/+1,/^t23/-1sort/\d\d/n






a123
b123
 123b
c123d
t22: numeric, skip past first 2 digits
abc
:/^t23:/+1,/^t24/-1sort/\d\d/x
b321
c321d
b321
b321b
a122
b322b
a123
b123
c123d
 123b
t23: hexadecimal, skip past first 2 digits
abc
ab
a


a321
b321
b321
a122
a123
b123
b321b:/^t24:/+1,/^t25/-1sort/\d\d/r






c321d
b322b
 123b
c123d
t24: alpha, sort on first 2 digits
abc
:/^t25:/+1,/^t26/-1sort/\d\d/rn
a122
b123
c123d
 123b
a321
b321
c321d
b322b
b321
b321b
t25: numeric, sort on first 2 digits
abc
ab
a


a123
a122
b123
c123d
 123b
a321
b321:/^t26:/+1,/^t27/-1sort/\d\d/rx






c321d
b322b
b321
b321b
t26: hexadecimal, sort on first 2 digits
abc
:/^t27:/+1,/^t28/-1sort no
E474: Invalid argument:/^t28:/+1,/^t29/-1sort b
b321
b123
c123d
 123b
c321d
b322b
b321
b321b


t28: binary


0b000000
0b001000
0b010000
0b100000
0b100010
0b100010
0b100100
0b101000
0b101000
0b101001:/^t29:/+1,/^t30/-1sort b






0b101001
0b101010
0b101100
0b111000
t29: binary with leading characters
:/^t30:/+1,/^t31/-1sort f
a0b001000
0b010000
ab0b100000
0b100010
0b100010
 0b100100
0b101000
0b101000
 0b101001
a0b101001
0b101010
b0b101100
b0b111000
t30: float


-1.1e3
-1.01e3
1.15e-6
0.88
1.234
123.456
t31: done:/^t01:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 501 lines, 3105 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test57 = test61; then \
#	  if diff test.out test57.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test57.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test57.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test60.failed test.ok test.out X* viminfo
cp test60.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test60.in
[?1h="test60.in" 601 lines, 13116 charactersTests for the exists() and has() functions.  vim: set ft=vim ts=8 sw=2 :

STARTTEST
:so small.vim
:function! RunTest(str, result)
    if exists(a:str) == a:resultecho "OK"
    elseecho "FAILED: Checking for " . a:str
    endif
endfunction
:function! TestExists()
    augroup myagroupautocmd! BufEnter*.my     echo "myfile edited"autocmd! FuncUndefined  UndefFun exec "fu UndefFun()\nendfu"
    augroup END
    set rtp+=./sautestlet test_cases = []" valid autocmd group
    let test_cases += [['#myagroup', 1]]
    " valid autocmd group with garbage:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for the exists() and has() functions.  vim: set ft=vim ts=8 sw=2 :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 596 lines, 13023 characters written:set ff& cpo+=A
/ENDTESTendif
    endfunctioncall TestFuncArg("arg1", "arg2")echo ' g:footest#x =' g:footest#x
    echo '   footest#F()' footest#F()
    echo 'UndefFun()' UndefFun()redir END
endfunction
:call TestExists()
:"
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
:while getchar(1) | call getchar() | endwhile
ENDTEST


:so! Xdotest
:so small.vim
:function! RunTest(str, result)

:      if exists(a:str) == a:result

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED: Checking for " . a:str

:        endif

:  endfunction
endif
    endfunctioncall TestFuncArg("arg1", "arg2")echo ' g:footest#x =' g:footest#x
:function! TestExists()

:      augroup myagroup

:  ^Iautocmd! BufEnter       *.my     echo "myfile edited"

:  ^Iautocmd! FuncUndefined  UndefFun exec "fu UndefFun()\nendfu"

:      augroup END

:      set rtp+=./sautest

:  

:      let test_cases = []

:  

:      " valid autocmd group

:      let test_cases += [['#myagroup', 1]]

:      " valid autocmd group with garbage

:      let test_cases += [['#myagroup+b', 0]]

:      " Valid autocmd group and event

:      let test_cases += [['#myagroup#BufEnter', 1]]

:      " Valid autocmd group, event and pattern

:      let test_cases += [['#myagroup#BufEnter#*.my', 1]]

:      " Valid autocmd event

:      let test_cases += [['#BufEnter', 1]]

:      " Valid autocmd event and pattern

:      let test_cases += [['#BufEnter#*.my', 1]]

:      " Non-existing autocmd group or event

:      let test_cases += [['#xyzagroup', 0]]

:      " Non-existing autocmd group and valid autocmd event

:      let test_cases += [['#xyzagroup#BufEnter', 0]]

:      " Valid autocmd group and event with no matching pattern

:      let test_cases += [['#myagroup#CmdwinEnter', 0]]

:      " Valid autocmd group and non-existing autocmd event

:      let test_cases += [['#myagroup#xyzacmd', 0]]

:      " Valid autocmd group and event and non-matching pattern

:      let test_cases += [['#myagroup#BufEnter#xyzpat', 0]]

:      " Valid autocmd event and non-matching pattern

:      let test_cases += [['#BufEnter#xyzpat', 0]]

:      " Empty autocmd group, event and pattern

:      let test_cases += [['###', 0]]

:      " Empty autocmd group and event or empty event and pattern

:      let test_cases += [['##', 0]]

:      " Valid autocmd event

:      let test_cases += [['##FileReadCmd', 1]]

:      " Non-existing autocmd event

:      let test_cases += [['##MySpecialCmd', 0]]

:  

:      " Existing and working option (long form)

:      let test_cases += [['&textwidth', 1]]

:      " Existing and working option (short form)

:      let test_cases += [['&tw', 1]]

:      " Existing and working option with garbage

:      let test_cases += [['&tw-', 0]]

:      " Global option

:      let test_cases += [['&g:errorformat', 1]]

:      " Local option

:      let test_cases += [['&l:errorformat', 1]]

:      " Negative form of existing and working option (long form)

:      let test_cases += [['&nojoinspaces', 0]]

:      " Negative form of existing and working option (short form)

:      let test_cases += [['&nojs', 0]]

:      " Non-existing option

:      let test_cases += [['&myxyzoption', 0]]

:  

:      " Existing and working option (long form)

:      let test_cases += [['+incsearch', 1]]

:      " Existing and working option with garbage

:      let test_cases += [['+incsearch!1', 0]]

:      " Existing and working option (short form)

:      let test_cases += [['+is', 1]]

:      " Existing option that is hidden.

:      let test_cases += [['+autoprint', 0]]

:  

:      " Existing environment variable

:      let $EDITOR_NAME = 'Vim Editor'

:      let test_cases += [['$EDITOR_NAME', 1]]

:      " Non-existing environment variable

:      let test_cases += [['$NON_ENV_VAR', 0]]

:  

:      " Valid internal function

:      let test_cases += [['*bufnr', 1]]

:      " Valid internal function with ()

:      let test_cases += [['*bufnr()', 1]]

:      " Non-existing internal function

:      let test_cases += [['*myxyzfunc', 0]]

:      " Valid internal function with garbage

:      let test_cases += [['*bufnr&6', 0]]

:  

:      " Valid user defined function

:      let test_cases += [['*TestExists', 1]]

:      " Non-existing user defined function

:      let test_cases += [['*MyxyzFunc', 0]]

:  

:      " Function that may be created by FuncUndefined event

:      let test_cases += [['*UndefFun', 0]]

:      " Function that may be created by script autoloading

:      let test_cases += [['*footest#F', 0]]

:  

:      redir! > test.out

:  

:      for [test_case, result] in test_cases

:            echo test_case . ": " . result

:            call RunTest(test_case, result)

:        endfor

:  

:      " Valid internal command (full match)

:      echo ':edit: 2'

:      if exists(':edit') == 2

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid internal command (full match) with garbage

:      echo ':edit/a: 0'

:      if exists(':edit/a') == 0

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid internal command (partial match)

:      echo ':q: 1'

:      if exists(':q') == 1

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing internal command

:      echo ':invalidcmd: 0'

:      if !exists(':invalidcmd')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " User defined command (full match)

:      command! MyCmd :echo 'My command'

:      echo ':MyCmd: 2'

:      if exists(':MyCmd') == 2

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " User defined command (partial match)

:      command! MyOtherCmd :echo 'Another command'

:      echo ':My: 3'

:      if exists(':My') == 3

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Command modifier

:      echo ':rightbelow: 2'

:      if exists(':rightbelow') == 2

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing user defined command (full match)

:      delcommand MyCmd

:  

:      echo ':MyCmd: 0'

:      if !exists(':MyCmd')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing user defined command (partial match)

:      delcommand MyOtherCmd

:  

:      echo ':My: 0'

:      if !exists(':My')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local variable

:      let local_var = 1

:      echo 'local_var: 1'

:      if exists('local_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local variable with garbage

:      let local_var = 1

:      echo 'local_var%n: 0'

:      if !exists('local_var%n')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing local variable

:      unlet local_var

:      echo 'local_var: 0'

:      if !exists('local_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing autoload variable that may be autoloaded

:      echo 'footest#x: 0'

:      if !exists('footest#x')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local list

:      let local_list = ["blue", "orange"]

:      echo 'local_list: 1'

:      if exists('local_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local list item

:      echo 'local_list[1]: 1'

:      if exists('local_list[1]')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local list item with garbage

:      echo 'local_list[1]+5: 0'

:      if !exists('local_list[1]+5')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Invalid local list item

:      echo 'local_list[2]: 0'

:      if !exists('local_list[2]')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing local list

:      unlet local_list

:      echo 'local_list: 0'

:      if !exists('local_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local dictionary

:      let local_dict = {"xcord":100, "ycord":2}

:      echo 'local_dict: 1'

:      if exists('local_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing local dictionary

:      unlet local_dict

:      echo 'local_dict: 0'

:      if !exists('local_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing local curly-brace variable

:      let str = "local"

:      let curly_{str}_var = 1

:      echo 'curly_' . str . '_var: 1'

:      if exists('curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing local curly-brace variable

:      unlet curly_{str}_var

:      echo 'curly_' . str . '_var: 0'

:      if !exists('curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:  

:      " Existing global variable

:      let g:global_var = 1

:      echo 'g:global_var: 1'

:      if exists('g:global_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing global variable with garbage

:      echo 'g:global_var-n: 1'

:      if !exists('g:global_var-n')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing global variable

:      unlet g:global_var

:      echo 'g:global_var: 0'

:      if !exists('g:global_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing global list

:      let g:global_list = ["blue", "orange"]

:      echo 'g:global_list: 1'

:      if exists('g:global_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing global list

:      unlet g:global_list

:      echo 'g:global_list: 0'

:      if !exists('g:global_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing global dictionary

:      let g:global_dict = {"xcord":100, "ycord":2}

:      echo 'g:global_dict: 1'

:      if exists('g:global_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing global dictionary

:      unlet g:global_dict

:      echo 'g:global_dict: 0'

:      if !exists('g:global_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing global curly-brace variable

:      let str = "global"

:      let g:curly_{str}_var = 1

:      echo 'g:curly_' . str . '_var: 1'

:      if exists('g:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing global curly-brace variable

:      unlet g:curly_{str}_var

:      echo 'g:curly_' . str . '_var: 0'

:      if !exists('g:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing window variable

:      echo 'w:window_var: 1'

:      let w:window_var = 1

:      if exists('w:window_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing window variable

:      unlet w:window_var

:      echo 'w:window_var: 0'

:      if !exists('w:window_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing window list

:      let w:window_list = ["blue", "orange"]

:      echo 'w:window_list: 1'

:      if exists('w:window_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing window list

:      unlet w:window_list

:      echo 'w:window_list: 0'

:      if !exists('w:window_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing window dictionary

:      let w:window_dict = {"xcord":100, "ycord":2}

:      echo 'w:window_dict: 1'

:      if exists('w:window_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing window dictionary

:      unlet w:window_dict

:      echo 'w:window_dict: 0'

:      if !exists('w:window_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing window curly-brace variable

:      let str = "window"

:      let w:curly_{str}_var = 1

:      echo 'w:curly_' . str . '_var: 1'

:      if exists('w:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing window curly-brace variable

:      unlet w:curly_{str}_var

:      echo 'w:curly_' . str . '_var: 0'

:      if !exists('w:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing buffer variable

:      echo 'b:buffer_var: 1'

:      let b:buffer_var = 1

:      if exists('b:buffer_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing buffer variable

:      unlet b:buffer_var

:      echo 'b:buffer_var: 0'

:      if !exists('b:buffer_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing buffer list

:      let b:buffer_list = ["blue", "orange"]

:      echo 'b:buffer_list: 1'

:      if exists('b:buffer_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing buffer list

:      unlet b:buffer_list

:      echo 'b:buffer_list: 0'

:      if !exists('b:buffer_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing buffer dictionary

:      let b:buffer_dict = {"xcord":100, "ycord":2}

:      echo 'b:buffer_dict: 1'

:      if exists('b:buffer_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing buffer dictionary

:      unlet b:buffer_dict

:      echo 'b:buffer_dict: 0'

:      if !exists('b:buffer_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing buffer curly-brace variable

:      let str = "buffer"

:      let b:curly_{str}_var = 1

:      echo 'b:curly_' . str . '_var: 1'

:      if exists('b:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing buffer curly-brace variable

:      unlet b:curly_{str}_var

:      echo 'b:curly_' . str . '_var: 0'

:      if !exists('b:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Script-local tests

:      source test60.vim

:  

:      " Existing Vim internal variable

:      echo 'v:version: 1'

:      if exists('v:version')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing Vim internal variable

:      echo 'v:non_exists_var: 0'

:      if !exists('v:non_exists_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Function arguments

:      function TestFuncArg(func_arg, ...)

:            echo 'a:func_arg: 1'

:            if exists('a:func_arg')

:                  echo "OK"

:              else

:                  echo "FAILED"

:              endif

:    

:            echo 'a:non_exists_arg: 0'

:            if !exists('a:non_exists_arg')

:                  echo "OK"

:              else

:                  echo "FAILED"

:              endif

:    

:            echo 'a:1: 1'

:            if exists('a:1')

:                  echo "OK"

:              else

:                  echo "FAILED"

:              endif

:    

:            echo 'a:2: 0'

:            if !exists('a:2')

:                  echo "OK"

:              else

:                  echo "FAILED"

:              endif

:        endfunction

:    

:        call TestFuncArg("arg1", "arg2")

:    

:        echo ' g:footest#x =' g:footest#x

:        echo '   footest#F()' footest#F()

:        echo 'UndefFun()' UndefFun()

:    

:        redir END

:    endfunction
endif
    endfunctioncall TestFuncArg("arg1", "arg2")echo ' g:footest#x =' g:footest#x
    echo '   footest#F()' footest#F()
    echo 'UndefFun()' UndefFun()redir END
endfunction
:call TestExists()
:"
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
:while getchar(1) | call getchar() | endwhile
ENDTEST

:call TestExists()
#myagroup: 1
OK

#myagroup+b: 0

OK

#myagroup#BufEnter: 1

OK

#myagroup#BufEnter#*.my: 1

OK

#BufEnter: 1

OK

#BufEnter#*.my: 1

OK

#xyzagroup: 0

OK

#xyzagroup#BufEnter: 0

OK

#myagroup#CmdwinEnter: 0

OK

#myagroup#xyzacmd: 0

OK

#myagroup#BufEnter#xyzpat: 0

OK

#BufEnter#xyzpat: 0

OK

###: 0

OK

##: 0

OK

##FileReadCmd: 1

OK

##MySpecialCmd: 0

OK

&textwidth: 1

OK

&tw: 1

OK

&tw-: 0

OK

&g:errorformat: 1

OK

&l:errorformat: 1

OK

&nojoinspaces: 0

OK

&nojs: 0

OK

&myxyzoption: 0

OK

+incsearch: 1

OK

+incsearch!1: 0

OK

+is: 1

OK

+autoprint: 0

OK

$EDITOR_NAME: 1

OK

$NON_ENV_VAR: 0

OK

*bufnr: 1

OK

*bufnr(): 1

OK

*myxyzfunc: 0

OK

*bufnr&6: 0

OK

*TestExists: 1

OK

*MyxyzFunc: 0

OK

*UndefFun: 0

OK

*footest#F: 0

OK

:edit: 2

OK

:edit/a: 0

OK

:q: 1

OK

:invalidcmd: 0

OK

:MyCmd: 2

OK

:My: 3

OK

:rightbelow: 2

OK

:MyCmd: 0

OK

:My: 0

OK

local_var: 1

OK

local_var%n: 0

OK

local_var: 0

OK

footest#x: 0

OK

local_list: 1

OK

local_list[1]: 1

OK

local_list[1]+5: 0

OK

local_list[2]: 0

OK

local_list: 0

OK

local_dict: 1

OK

local_dict: 0

OK

curly_local_var: 1

OK

curly_local_var: 0

OK

g:global_var: 1

OK

g:global_var-n: 1

OK

g:global_var: 0

OK

g:global_list: 1

OK

g:global_list: 0

OK

g:global_dict: 1

OK

g:global_dict: 0

OK

g:curly_global_var: 1

OK

g:curly_global_var: 0

OK

w:window_var: 1

OK

w:window_var: 0

OK

w:window_list: 1

OK

w:window_list: 0

OK

w:window_dict: 1

OK

w:window_dict: 0

OK

w:curly_window_var: 1

OK

w:curly_window_var: 0

OK

b:buffer_var: 1

OK

b:buffer_var: 0

OK

b:buffer_list: 1

OK

b:buffer_list: 0

OK

b:buffer_dict: 1

OK

b:buffer_dict: 0

OK

b:curly_buffer_var: 1

OK

b:curly_buffer_var: 0

OK

s:script_var: 1

OK

s:script_var: 0

OK

s:script_list: 1

OK

s:script_list: 0

OK

s:script_dict: 1

OK

s:script_dict: 0

OK

s:curly_script_var: 1

OK

s:curly_script_var: 0

OK

*s:my_script_func: 1

OK

*s:my_script_func: 0

OK

v:version: 1

OK

v:non_exists_var: 0

OK

a:func_arg: 1

OK

a:non_exists_arg: 0

OK

a:1: 1

OK

a:2: 0

OK

 g:footest#x = 1

   footest#F() 0

UndefFun() 0

Press ENTER or type command to continue:"
endif
    endfunctioncall TestFuncArg("arg1", "arg2")echo ' g:footest#x =' g:footest#x
    echo '   footest#F()' footest#F()
    echo 'UndefFun()' UndefFun()redir END
endfunction
:call TestExists()
:"
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
:while getchar(1) | call getchar() | endwhile
ENDTEST

:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
"test.out" [Incomplete last line] 206 lines, 1940 characters#myagroup: 1OK
#myagroup+b: 0OK
#myagroup#BufEnter: 1OK#myagroup#BufEnter#*.my: 1OK
#BufEnter: 1OK#BufEnter#*.my: 1OK
#xyzagroup: 0OK#xyzagroup#BufEnter: 0
OK#myagroup#CmdwinEnter: 0
OK
#myagroup#xyzacmd: 0
OK#myagroup#BufEnter#xyzpat: 0
OK:set ff=unix
:w
"test.out" 206 lines, 1941 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test60 = test61; then \
#	  if diff test.out test60.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test60.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test60.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test64.failed test.ok test.out X* viminfo
cp test64.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test64.in
[?1h="test64.in" 654 lines, 27565 charactersTest for regexp patterns without multi-byte support.
See test95 for multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:":set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for regexp patterns without multi-byte support./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 621 lines, 27090 characters written:set ff& cpo+=A
/ENDTEST:for pat in [' \ze*', ' \zs*']
:  try
:    let l = matchlist('x x', pat)
:    $put ='E888 NOT detected for ' . pat
:  catch
:    $put ='E888 detected for ' . pat
:  endtry
:endfor
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
ENDTEST

Substitute here:
<T="">Ta 5</Title>
<T="">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
:so! Xdotest
:so small.vim
:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
:call add(tl, [2, 'ab', 'aab', 'ab'])
:call add(tl, [2, 'b', 'abcdef', 'b'])
:call add(tl, [2, 'bc*', 'abccccdef', 'bcccc'])
:call add(tl, [2, 'bc\{-}', 'abccccdef', 'b'])
:call add(tl, [2, 'bc\{-}\(d\)', 'abccccdef', 'bccccd', 'd'])
:call add(tl, [2, 'bc*', 'abbdef', 'b'])
:call add(tl, [2, 'c*', 'ccc', 'ccc'])
:call add(tl, [2, 'bc*', 'abdef', 'b'])
:call add(tl, [2, 'c*', 'abdef', ''])
:call add(tl, [2, 'bc\+', 'abccccdef', 'bcccc'])
:call add(tl, [2, 'bc\+', 'abdef']) "no match
:"
:"operator \|
:call add(tl, [2, 'a\|ab', 'cabd', 'a']) "alternation is ordered
:"
:call add(tl, [2, 'c\?', 'ccb', 'c'])
:call add(tl, [2, 'bc\?', 'abd', 'b'])
:call add(tl, [2, 'bc\?', 'abccd', 'bc'])
:"
:call add(tl, [2, '\va{1}', 'ab', 'a'])
:"
:call add(tl, [2, '\va{2}', 'aa', 'aa'])
:call add(tl, [2, '\va{2}', 'caad', 'aa'])
:call add(tl, [2, '\va{2}', 'aba'])
:call add(tl, [2, '\va{2}', 'ab'])
:call add(tl, [2, '\va{2}', 'abaa', 'aa'])
:call add(tl, [2, '\va{2}', 'aaa', 'aa'])
:"
:call add(tl, [2, '\vb{1}', 'abca', 'b'])
:call add(tl, [2, '\vba{2}', 'abaa', 'baa'])
:call add(tl, [2, '\vba{3}', 'aabaac'])
:"
:call add(tl, [2, '\v(ab){1}', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(ab){1}', 'dabc', 'ab', 'ab'])
:call add(tl, [2, '\v(ab){1}', 'acb'])
:"
:call add(tl, [2, '\v(ab){0,2}', 'acb', "", ""])
:call add(tl, [2, '\v(ab){0,2}', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(ab){1,2}', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(ab){1,2}', 'ababc', 'abab', 'ab'])
:call add(tl, [2, '\v(ab){2,4}', 'ababcab', 'abab', 'ab'])
:call add(tl, [2, '\v(ab){2,4}', 'abcababa', 'abab', 'ab'])
:"
:call add(tl, [2, '\v(ab){2}', 'abab', 'abab', 'ab'])
:call add(tl, [2, '\v(ab){2}', 'cdababe', 'abab', 'ab'])
:call add(tl, [2, '\v(ab){2}', 'abac'])
:call add(tl, [2, '\v(ab){2}', 'abacabab', 'abab', 'ab'])
:call add(tl, [2, '\v((ab){2}){2}', 'abababab', 'abababab', 'abab', 'ab'])
:call add(tl, [2, '\v((ab){2}){2}', 'abacabababab', 'abababab', 'abab', 'ab'])
:"
:call add(tl, [2, '\v(a{1}){1}', 'a', 'a', 'a'])
:call add(tl, [2, '\v(a{2}){1}', 'aa', 'aa', 'aa'])
:call add(tl, [2, '\v(a{2}){1}', 'aaac', 'aa', 'aa'])
:call add(tl, [2, '\v(a{2}){1}', 'daaac', 'aa', 'aa'])
:call add(tl, [2, '\v(a{1}){2}', 'daaac', 'aa', 'a'])
:call add(tl, [2, '\v(a{1}){2}', 'aaa', 'aa', 'a'])
:call add(tl, [2, '\v(a{2})+', 'adaac', 'aa', 'aa'])
:call add(tl, [2, '\v(a{2})+', 'aa', 'aa', 'aa'])
:call add(tl, [2, '\v(a{2}){1}', 'aa', 'aa', 'aa'])
:call add(tl, [2, '\v(a{1}){2}', 'aa', 'aa', 'a'])
:call add(tl, [2, '\v(a{1}){1}', 'a', 'a', 'a'])
:call add(tl, [2, '\v(a{2}){2}', 'aaaa', 'aaaa', 'aa'])
:call add(tl, [2, '\v(a{2}){2}', 'aaabaaaa', 'aaaa', 'aa'])
:"
:call add(tl, [2, '\v(a+){2}', 'dadaac', 'aa', 'a'])
:call add(tl, [2, '\v(a{3}){2}', 'aaaaaaa', 'aaaaaa', 'aaa'])
:"
:call add(tl, [2, '\v(a{1,2}){2}', 'daaac', 'aaa', 'a'])
:call add(tl, [2, '\v(a{1,3}){2}', 'daaaac', 'aaaa', 'a'])
:call add(tl, [2, '\v(a{1,3}){2}', 'daaaaac', 'aaaaa', 'aa'])
:call add(tl, [2, '\v(a{1,3}){3}', 'daac'])
:call add(tl, [2, '\v(a{1,2}){2}', 'dac'])
:call add(tl, [2, '\v(a+)+', 'daac', 'aa', 'aa'])
:call add(tl, [2, '\v(a+)+', 'aaa', 'aaa', 'aaa'])
:call add(tl, [2, '\v(a+){1,2}', 'aaa', 'aaa', 'aaa'])
:call add(tl, [2, '\v(a+)(a+)', 'aaa', 'aaa', 'aa', 'a'])
:call add(tl, [2, '\v(a{3})+', 'daaaac', 'aaa', 'aaa'])
:call add(tl, [2, '\v(a|b|c)+', 'aacb', 'aacb', 'b'])
:call add(tl, [2, '\v(a|b|c){2}', 'abcb', 'ab', 'b'])
:call add(tl, [2, '\v(abc){2}', 'abcabd', ])
:call add(tl, [2, '\v(abc){2}', 'abdabcabc','abcabc', 'abc'])
:"
:call add(tl, [2, 'a*', 'cc', ''])
:call add(tl, [2, '\v(a*)+', 'cc', ''])
:call add(tl, [2, '\v((ab)+)+', 'ab', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(((ab)+)+)+', 'ab', 'ab', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(((ab)+)+)+', 'dababc', 'abab', 'abab', 'abab', 'ab'])
:call add(tl, [2, '\v(a{0,2})+', 'cc', ''])
:call add(tl, [2, '\v(a*)+', '', ''])
:call add(tl, [2, '\v((a*)+)+', '', ''])
:call add(tl, [2, '\v((ab)*)+', '', ''])
:call add(tl, [2, '\va{1,3}', 'aab', 'aa'])
:call add(tl, [2, '\va{2,3}', 'abaa', 'aa'])
:"
:call add(tl, [2, '\v((ab)+|c*)+', 'abcccaba', 'abcccab', '', 'ab'])
:call add(tl, [2, '\v(a{2})|(b{3})', 'bbabbbb', 'bbb', '', 'bbb'])
:call add(tl, [2, '\va{2}|b{2}', 'abab'])
:call add(tl, [2, '\v(a)+|(c)+', 'bbacbaacbbb', 'a', 'a'])
:call add(tl, [2, '\vab{2,3}c', 'aabbccccccccccccc', 'abbc'])
:call add(tl, [2, '\vab{2,3}c', 'aabbbccccccccccccc', 'abbbc'])
:call add(tl, [2, '\vab{2,3}cd{2,3}e', 'aabbbcddee', 'abbbcdde'])
:call add(tl, [2, '\va(bc){2}d', 'aabcbfbc' ])
:call add(tl, [2, '\va*a{2}', 'a', ])
:call add(tl, [2, '\va*a{2}', 'aa', 'aa' ])
:call add(tl, [2, '\va*a{2}', 'aaa', 'aaa' ])
:call add(tl, [2, '\va*a{2}', 'bbbabcc', ])
:call add(tl, [2, '\va*b*|a*c*', 'a', 'a'])
:call add(tl, [2, '\va{1}b{1}|a{1}b{1}', ''])
:"
:"submatches
:call add(tl, [2, '\v(a)', 'ab', 'a', 'a'])
:call add(tl, [2, '\v(a)(b)', 'ab', 'ab', 'a', 'b'])
:call add(tl, [2, '\v(ab)(b)(c)', 'abbc', 'abbc', 'ab', 'b', 'c'])
:call add(tl, [2, '\v((a)(b))', 'ab', 'ab', 'ab', 'a', 'b'])
:call add(tl, [2, '\v(a)|(b)', 'ab', 'a', 'a'])
:"
:call add(tl, [2, '\v(a*)+', 'aaaa', 'aaaa', ''])
:call add(tl, [2, 'x', 'abcdef'])
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:""""" Simple tests """""""""""""""""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
:" Search single groups
:call add(tl, [2, 'ab', 'aab', 'ab'])
:call add(tl, [2, 'ab', 'baced'])
:call add(tl, [2, 'ab', '                    ab           ', 'ab'])
:"
:" Search multi-modifiers
:call add(tl, [2, 'x*', 'xcd', 'x'])
:call add(tl, [2, 'x*', 'xxxxxxxxxxxxxxxxsofijiojgf', 'xxxxxxxxxxxxxxxx'])
:" empty match is good
:call add(tl, [2, 'x*', 'abcdoij', ''])
:" no match here
:call add(tl, [2, 'x\+', 'abcdoin'])
:call add(tl, [2, 'x\+', 'abcdeoijdfxxiuhfij', 'xx'])
:call add(tl, [2, 'x\+', 'xxxxx', 'xxxxx'])
:call add(tl, [2, 'x\+', 'abc x siufhiush xxxxxxxxx', 'x'])
:call add(tl, [2, 'x\=', 'x sdfoij', 'x'])
:call add(tl, [2, 'x\=', 'abc sfoij', '']) " empty match is good
:call add(tl, [2, 'x\=', 'xxxxxxxxx c', 'x'])
:call add(tl, [2, 'x\?', 'x sdfoij', 'x'])
:" empty match is good
:call add(tl, [2, 'x\?', 'abc sfoij', ''])
:call add(tl, [2, 'x\?', 'xxxxxxxxxx c', 'x'])
:"
:call add(tl, [2, 'a\{0,0}', 'abcdfdoij', ''])
:" same thing as 'a?'
:call add(tl, [2, 'a\{0,1}', 'asiubid axxxaaa', 'a'])
:" same thing as 'a\{0,1}'
:call add(tl, [2, 'a\{1,0}', 'asiubid axxxaaa', 'a'])
:call add(tl, [2, 'a\{3,6}', 'aa siofuh'])
:call add(tl, [2, 'a\{3,6}', 'aaaaa asfoij afaa', 'aaaaa'])
:call add(tl, [2, 'a\{3,6}', 'aaaaaaaa', 'aaaaaa'])
:call add(tl, [2, 'a\{0}', 'asoiuj', ''])
:call add(tl, [2, 'a\{2}', 'aaaa', 'aa'])
:call add(tl, [2, 'a\{2}', 'iuash fiusahfliusah fiushfilushfi uhsaifuh askfj na

sfvius afg aaaa sfiuhuhiushf', 'aa'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, 'a\{2}', 'abcdefghijklmnopqrestuvwxyz1234567890'])
:" same thing as 'a*'
:call add(tl, [2, 'a\{0,}', 'oij sdigfusnf', ''])
:call add(tl, [2, 'a\{0,}', 'aaaaa aa', 'aaaaa'])
:call add(tl, [2, 'a\{2,}', 'sdfiougjdsafg'])
:call add(tl, [2, 'a\{2,}', 'aaaaasfoij ', 'aaaaa'])
:call add(tl, [2, 'a\{5,}', 'xxaaaaxxx '])
:call add(tl, [2, 'a\{5,}', 'xxaaaaaxxx ', 'aaaaa'])
:call add(tl, [2, 'a\{,0}', 'oidfguih iuhi hiu aaaa', ''])
:call add(tl, [2, 'a\{,5}', 'abcd', 'a'])
:call add(tl, [2, 'a\{,5}', 'aaaaaaaaaa', 'aaaaa'])
:" leading star as normal char when \{} follows
:call add(tl, [2, '^*\{4,}$', '***'])
:call add(tl, [2, '^*\{4,}$', '****', '****'])
:call add(tl, [2, '^*\{4,}$', '*****', '*****'])
:" same thing as 'a*'
:call add(tl, [2, 'a\{}', 'bbbcddiuhfcd', ''])
:call add(tl, [2, 'a\{}', 'aaaaioudfh coisf jda', 'aaaa'])
:"
:call add(tl, [2, 'a\{-0,0}', 'abcdfdoij', ''])
:" anti-greedy version of 'a?'
:call add(tl, [2, 'a\{-0,1}', 'asiubid axxxaaa', ''])
:call add(tl, [2, 'a\{-3,6}', 'aa siofuh'])
:call add(tl, [2, 'a\{-3,6}', 'aaaaa asfoij afaa', 'aaa'])
:call add(tl, [2, 'a\{-3,6}', 'aaaaaaaa', 'aaa'])
:call add(tl, [2, 'a\{-0}', 'asoiuj', ''])
:call add(tl, [2, 'a\{-2}', 'aaaa', 'aa'])
:call add(tl, [2, 'a\{-2}', 'abcdefghijklmnopqrestuvwxyz1234567890'])
:call add(tl, [2, 'a\{-0,}', 'oij sdigfusnf', ''])
:call add(tl, [2, 'a\{-0,}', 'aaaaa aa', ''])
:call add(tl, [2, 'a\{-2,}', 'sdfiougjdsafg'])
:call add(tl, [2, 'a\{-2,}', 'aaaaasfoij ', 'aa'])
:call add(tl, [2, 'a\{-,0}', 'oidfguih iuhi hiu aaaa', ''])
:call add(tl, [2, 'a\{-,5}', 'abcd', ''])
:call add(tl, [2, 'a\{-,5}', 'aaaaaaaaaa', ''])
:" anti-greedy version of 'a*'
:call add(tl, [2, 'a\{-}', 'bbbcddiuhfcd', ''])
:call add(tl, [2, 'a\{-}', 'aaaaioudfh coisf jda', ''])
:"
:" Test groups of characters and submatches
:call add(tl, [2, '\(abc\)*', 'abcabcabc', 'abcabcabc', 'abc'])
:call add(tl, [2, '\(ab\)\+', 'abababaaaaa', 'ababab', 'ab'])
:call add(tl, [2, '\(abaaaaa\)*cd', 'cd', 'cd', ''])
:call add(tl, [2, '\(test1\)\? \(test2\)\?', 'test1 test3', 'test1 ', 'test1', 

''])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(test1\)\= \(test2\) \(test4443\)\=', ' test2 test4443 yupi

iiiiiiiiii', ' test2 test4443', '', 'test2', 'test4443'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(\(sub1\) hello \(sub 2\)\)', 'asterix sub1 hello sub 2 obe

lix', 'sub1 hello sub 2', 'sub1 hello sub 2', 'sub1', 'sub 2'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(\(\(yyxxzz\)\)\)', 'abcdddsfiusfyyzzxxyyxxzz', 'yyxxzz', '

yyxxzz', 'yyxxzz', 'yyxxzz'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\v((ab)+|c+)+', 'abcccaba', 'abcccab', 'ab', 'ab'])
:call add(tl, [2, '\v((ab)|c*)+', 'abcccaba', 'abcccab', '', 'ab'])
:call add(tl, [2, '\v(a(c*)+b)+', 'acbababaaa', 'acbabab', 'ab', ''])
:call add(tl, [2, '\v(a|b*)+', 'aaaa', 'aaaa', ''])
:call add(tl, [2, '\p*', 'aá ^I', 'aá '])
:"
:" Test greedy-ness and lazy-ness
:call add(tl, [2, 'a\{-2,7}','aaaaaaaaaaaaa', 'aa'])
:call add(tl, [2, 'a\{-2,7}x','aaaaaaaaax', 'aaaaaaax'])
:call add(tl, [2, 'a\{2,7}','aaaaaaaaaaaaaaaaaaaa', 'aaaaaaa'])
:call add(tl, [2, 'a\{2,7}x','aaaaaaaaax', 'aaaaaaax'])
:call add(tl, [2, '\vx(.{-,8})yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz','ayxa

','xayzxayz'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\vx(.*)yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz', 'ayxayzx

ayzxa',''])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\v(a{1,2}){-2,3}','aaaaaaa','aaaa','aa'])
:call add(tl, [2, '\v(a{-1,3})+', 'aa', 'aa', 'a'])
:call add(tl, [2, '^\s\{-}\zs\( x\|x$\)', ' x', ' x', ' x'])
:call add(tl, [2, '^\s\{-}\zs\(x\| x$\)', ' x', ' x', ' x'])
:call add(tl, [2, '^\s\{-}\ze\(x\| x$\)', ' x', '', ' x'])
:call add(tl, [2, '^\(\s\{-}\)\(x\| x$\)', ' x', ' x', '', ' x'])
:"
:" Test Character classes
:call add(tl, [2, '\d\+e\d\d','test 10e23 fd','10e23'])
:"
:" Test collections and character range []
:call add(tl, [2, '\v[a]', 'abcd', 'a'])
:call add(tl, [2, 'a[bcd]', 'abcd', 'ab'])
:call add(tl, [2, 'a[b-d]', 'acbd', 'ac'])
:call add(tl, [2, '[a-d][e-f][x-x]d', 'cexdxx', 'cexd'])
:call add(tl, [2, '\v[[:alpha:]]+', 'abcdefghijklmnopqrstuvwxyz6','abcdefghijkl

mnopqrstuvwxyz'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '[[:alpha:]\+]', '6x8','x'])
:call add(tl, [2, '[^abc]\+','abcabcabc'])
:call add(tl, [2, '[^abc]','defghiasijvoinasoiunbvb','d'])
:call add(tl, [2, '[^abc]\+','ddddddda','ddddddd'])
:call add(tl, [2, '[^a-d]\+','aaaAAAZIHFNCddd','AAAZIHFNC'])
:call add(tl, [2, '[a-f]*','iiiiiiii',''])
:call add(tl, [2, '[a-f]*','abcdefgh','abcdef'])
:call add(tl, [2, '[^a-f]\+','abcdefgh','gh'])
:call add(tl, [2, '[a-c]\{-3,6}','abcabc','abc'])
:call add(tl, [2, '[^[:alpha:]]\+','abcccadfoij7787ysf287yrnccdu','7787'])
:call add(tl, [2, '[-a]', '-', '-'])
:call add(tl, [2, '[a-]', '-', '-'])
:call add(tl, [2, '[a-f]*\c','ABCDEFGH','ABCDEF'])
:call add(tl, [2, '[abc][xyz]\c','-af-AF-BY--','BY'])
:" filename regexp
:call add(tl, [2, '[-./[:alnum:]_~]\+', 'log13.file', 'log13.file'])
:" special chars
:call add(tl, [2, '[\]\^\-\\]\+', '\^\\\-\---^', '\^\\\-\---^'])
:" collation elem
:call add(tl, [2, '[[.a.]]\+', 'aa', 'aa'])
:" middle of regexp
:call add(tl, [2, 'abc[0-9]*ddd', 'siuhabc ii'])
:call add(tl, [2, 'abc[0-9]*ddd', 'adf abc44482ddd oijs', 'abc44482ddd'])
:call add(tl, [2, '\_[0-9]\+', 'asfi9888u', '9888'])
:call add(tl, [2, '[0-9\n]\+', 'asfi9888u', '9888'])
:call add(tl, [2, '\_[0-9]\+', "asfi\n9888u", "\n9888"])
:call add(tl, [2, '\_f', "  \na ", "\n"])
:call add(tl, [2, '\_f\+', "  \na ", "\na"])
:call add(tl, [2, '[0-9A-Za-z-_.]\+', " @0_a.A-{ ", "0_a.A-"])
:"
:"""" Test start/end of line, start/end of file
:call add(tl, [2, '^a.', "a_\nb ", "a_"])
:call add(tl, [2, '^a.', "b a \na_"])
:call add(tl, [2, '.a$', " a\n "])
:call add(tl, [2, '.a$', " a b\n_a", "_a"])
:call add(tl, [2, '\%^a.', "a a\na", "a "])
:call add(tl, [2, '\%^a', " a \na "])
:call add(tl, [2, '.a\%$', " a\n "])
:call add(tl, [2, '.a\%$', " a\n_a", "_a"])
:"
:"""" Test recognition of character classes
:call add(tl, [2, '[0-7]\+', 'x0123456789x', '01234567'])
:call add(tl, [2, '[^0-7]\+', '0a;X+% 897', 'a;X+% 89'])
:call add(tl, [2, '[0-9]\+', 'x0123456789x', '0123456789'])
:call add(tl, [2, '[^0-9]\+', '0a;X+% 9', 'a;X+% '])
:call add(tl, [2, '[0-9a-fA-F]\+', 'x0189abcdefg', '0189abcdef'])
:call add(tl, [2, '[^0-9A-Fa-f]\+', '0189g;X+% ab', 'g;X+% '])
:call add(tl, [2, '[a-z_A-Z0-9]\+', ';+aso_SfOij ', 'aso_SfOij'])
:call add(tl, [2, '[^a-z_A-Z0-9]\+', 'aSo_;+% sfOij', ';+% '])
:call add(tl, [2, '[a-z_A-Z]\+', '0abyz_ABYZ;', 'abyz_ABYZ'])
:call add(tl, [2, '[^a-z_A-Z]\+', 'abAB_09;+% yzYZ', '09;+% '])
:call add(tl, [2, '[a-z]\+', '0abcxyz1', 'abcxyz'])
:call add(tl, [2, '[a-z]\+', 'AabxyzZ', 'abxyz'])
:call add(tl, [2, '[^a-z]\+', 'a;X09+% x', ';X09+% '])
:call add(tl, [2, '[^a-z]\+', 'abX0;%yz', 'X0;%'])
:call add(tl, [2, '[a-zA-Z]\+', '0abABxzXZ9', 'abABxzXZ'])
:call add(tl, [2, '[^a-zA-Z]\+', 'ab09_;+ XZ', '09_;+ '])
:call add(tl, [2, '[A-Z]\+', 'aABXYZz', 'ABXYZ'])
:call add(tl, [2, '[^A-Z]\+', 'ABx0;%YZ', 'x0;%'])
:call add(tl, [2, '[a-z]\+\c', '0abxyzABXYZ;', 'abxyzABXYZ'])
:call add(tl, [2, '[A-Z]\+\c', '0abABxzXZ9', 'abABxzXZ'])
:call add(tl, [2, '\c[^a-z]\+', 'ab09_;+ XZ', '09_;+ '])
:call add(tl, [2, '\c[^A-Z]\+', 'ab09_;+ XZ', '09_;+ '])
:call add(tl, [2, '\C[^A-Z]\+', 'ABCOIJDEOIFNSD jsfoij sa', ' jsfoij sa'])
:"
:"""" Tests for \z features
:" match ends at \ze
:call add(tl, [2, 'xx \ze test', 'xx '])
:call add(tl, [2, 'abc\zeend', 'oij abcend', 'abc'])
:call add(tl, [2, 'aa\zebb\|aaxx', ' aabb ', 'aa'])
:call add(tl, [2, 'aa\zebb\|aaxx', ' aaxx ', 'aaxx'])
:call add(tl, [2, 'aabb\|aa\zebb', ' aabb ', 'aabb'])
:call add(tl, [2, 'aa\zebb\|aaebb', ' aabb ', 'aa'])
:" match starts at \zs
:call add(tl, [2, 'abc\zsdd', 'ddabcddxyzt', 'dd'])
:call add(tl, [2, 'aa \zsax', ' ax'])
:call add(tl, [2, 'abc \zsmatch\ze abc', 'abc abc abc match abc abc', 'match'])
:call add(tl, [2, '\v(a \zsif .*){2}', 'a if then a if last', 'if last', 'a if 

last'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\>\zs.', 'aword. ', '.'])
:call add(tl, [2, '\s\+\ze\[/\|\s\zs\s\+', 'is   [a t', '  '])
:"
:"""" Tests for \@= and \& features
:call add(tl, [2, 'abc\@=', 'abc', 'ab'])
:call add(tl, [2, 'abc\@=cd', 'abcd', 'abcd'])
:call add(tl, [2, 'abc\@=', 'ababc', 'ab'])
:" will never match, no matter the input text
:call add(tl, [2, 'abcd\@=e', 'abcd'])
:" will never match
:call add(tl, [2, 'abcd\@=e', 'any text in here ... '])
:call add(tl, [2, '\v(abc)@=..', 'xabcd', 'ab', 'abc'])
:call add(tl, [2, '\(.*John\)\@=.*Bob', 'here is John, and here is B'])
:call add(tl, [2, '\(John.*\)\@=.*Bob', 'John is Bobs friend', 'John is Bob', '

John is Bobs friend'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\<\S\+\())\)\@=', '$((i=i+1))', 'i=i+1', '))'])
:call add(tl, [2, '.*John\&.*Bob', 'here is John, and here is B'])
:call add(tl, [2, '.*John\&.*Bob', 'John is Bobs friend', 'John is Bob'])
:call add(tl, [2, '\v(test1)@=.*yep', 'this is a test1, yep it is', 'test1, yep

', 'test1'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, 'foo\(bar\)\@!', 'foobar'])
:call add(tl, [2, 'foo\(bar\)\@!', 'foo bar', 'foo'])
:call add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if then else'])
:call add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if else ', 'if else ', ' '])
:call add(tl, [2, '\(foo\)\@!bar', 'foobar', 'bar'])
:call add(tl, [2, '\(foo\)\@!...bar', 'foobar'])
:call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' bar foo '])
:call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo bar '])
:call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo xxx ', 'foo'])
:call add(tl, [2, '[ ]\@!\p\%([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:']

):for pat in [' \ze*', ' \zs*']:call add(tl, [2, '[ ]\@!\p\([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:', 

's'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, 'm\k\+_\@=\%(_\@!\k\)\@<=\k\+e', 'mx__xe', 'mx__xe'])
:call add(tl, [2, '\%(\U\@<=S\k*\|S\l\)R', 'SuR', 'SuR'])
:"
:"""" Combining different tests and features
:call add(tl, [2, '[[:alpha:]]\{-2,6}', '787abcdiuhsasiuhb4', 'ab'])
:call add(tl, [2, '', 'abcd', ''])
:call add(tl, [2, '\v(())', 'any possible text', ''])
:call add(tl, [2, '\v%(ab(xyz)c)', '   abxyzc ', 'abxyzc', 'xyz'])
:call add(tl, [2, '\v(test|)empty', 'tesempty', 'empty', ''])
:call add(tl, [2, '\v(a|aa)(a|aa)', 'aaa', 'aa', 'a', 'a'])
:"
:"""" \%u and friends
:call add(tl, [2, '\%d32', 'yes no', ' '])
:call add(tl, [2, '\%o40', 'yes no', ' '])
:call add(tl, [2, '\%x20', 'yes no', ' '])
:call add(tl, [2, '\%u0020', 'yes no', ' '])
:call add(tl, [2, '\%U00000020', 'yes no', ' '])
:call add(tl, [2, '\%d0', "yes\x0ano", "\x0a"])
:"
:""""" \%[abc]
:call add(tl, [2, 'foo\%[bar]', 'fobar'])
:call add(tl, [2, 'foo\%[bar]', 'foobar', 'foobar'])
:call add(tl, [2, 'foo\%[bar]', 'fooxx', 'foo'])
:call add(tl, [2, 'foo\%[bar]', 'foobxx', 'foob'])
:call add(tl, [2, 'foo\%[bar]', 'foobaxx', 'fooba'])
:call add(tl, [2, 'foo\%[bar]', 'foobarxx', 'foobar'])
:call add(tl, [2, 'foo\%[bar]x', 'foobxx', 'foobx'])
:call add(tl, [2, 'foo\%[bar]x', 'foobarxx', 'foobarx'])
:call add(tl, [2, '\%[bar]x', 'barxx', 'barx'])
:call add(tl, [2, '\%[bar]x', 'bxx', 'bx'])
:call add(tl, [2, '\%[bar]x', 'xxx', 'x'])
:call add(tl, [2, 'b\%[[ao]r]', 'bar bor', 'bar'])
:call add(tl, [2, 'b\%[[]]r]', 'b]r bor', 'b]r'])
:call add(tl, [2, '@\%[\w\-]*', '<http://john.net/pandoc/>[@pandoc]', '@pandoc'

]):for pat in [' \ze*', ' \zs*']:"
:"""" Alternatives, must use first longest match
:call add(tl, [2, 'goo\|go', 'google', 'goo'])
:call add(tl, [2, '\<goo\|\<go', 'google', 'goo'])
:call add(tl, [2, '\<goo\|go', 'google', 'goo'])
:"
:"""" Back references
:call add(tl, [2, '\(\i\+\) \1', ' abc abc', 'abc abc', 'abc'])
:call add(tl, [2, '\(\i\+\) \1', 'xgoo goox', 'goo goo', 'goo'])
:call add(tl, [2, '\(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7

\8\9', 'xabcddefghiabcddefghix', 'abcddefghiabcddefghi', 'a', 'b', 'c', 'dd', 'e

', 'f', 'g', 'h', 'i'])
:for pat in [' \ze*', ' \zs*']
:  try:call add(tl, [2, '\(\d*\)a \1b', ' a b ', 'a b', ''])
:call add(tl, [2, '^.\(.\).\_..\1.', "aaa\naaa\nb", "aaa\naaa", 'a'])
:call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.com', 'foo.bat/foo

.com', 'bat'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.bat'])
:call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<=$', 'foo.bat/foo.bat', 'foo.bat/foo

.bat', 'bat', 'bat'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}', '2013-06-27${0}', '$

{0}', '0'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '^\(a*\)\1$', 'aaaaaaaa', 'aaaaaaaa', 'aaaa'])
:call add(tl, [2, '^\(a\{-2,}\)\1\+$', 'aaaaaaaaa', 'aaaaaaaaa', 'aaa'])
:"
:"""" Look-behind with limit
:call add(tl, [2, '<\@<=span.', 'xxspanxx<spanyyy', 'spany'])
:call add(tl, [2, '<\@1<=span.', 'xxspanxx<spanyyy', 'spany'])
:call add(tl, [2, '<\@2<=span.', 'xxspanxx<spanyyy', 'spany'])
:call add(tl, [2, '\(<<\)\@<=span.', 'xxspanxxxx<spanxx<<spanyyy', 'spany', '<<

'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(<<\)\@1<=span.', 'xxspanxxxx<spanxx<<spanyyy'])
:call add(tl, [2, '\(<<\)\@2<=span.', 'xxspanxxxx<spanxx<<spanyyy', 'spany', '<

<'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(foo\)\@<!bar.', 'xx foobar1 xbar2 xx', 'bar2'])
:"
:" look-behind match in front of a zero-width item
:call add(tl, [2, '\v\C%(<Last Changed:\s+)@<=.*$', '" test header'])
:call add(tl, [2, '\v\C%(<Last Changed:\s+)@<=.*$', '" Last Changed: 1970', '19

70'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(foo\)\@<=\>', 'foobar'])
:call add(tl, [2, '\(foo\)\@<=\>', 'barfoo', '', 'foo'])
:call add(tl, [2, '\(foo\)\@<=.*', 'foobar', 'bar', 'foo'])
:"
:" complicated look-behind match
:call add(tl, [2, '\(r\@<=\|\w\@<!\)\/', 'x = /word/;', '/'])
:call add(tl, [2, '^[a-z]\+\ze \&\(asdf\)\@<!', 'foo bar', 'foo'])
:"
:""""" \@>
:call add(tl, [2, '\(a*\)\@>a', 'aaaa'])
:call add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa'])
:call add(tl, [2, '^\(.\{-}b\)\@>.', '  abcbd', '  abc', '  ab'])
:call add(tl, [2, '\(.\{-}\)\(\)\@>$', 'abc', 'abc', 'abc', ''])
:" TODO: BT engine does not restore submatch after failure
:call add(tl, [1, '\(a*\)\@>a\|a\+', 'aaaa', 'aaaa'])
:"
:"""" "\_" prepended negated collection matches EOL
:call add(tl, [2, '\_[^8-9]\+', "asfi\n9888", "asfi\n"])
:call add(tl, [2, '\_[^a]\+', "asfi\n9888", "sfi\n9888"])
:"
:"""" Requiring lots of states.
:call add(tl, [2, '[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}', "

12345678-1234-1234-1234-123456789012 ", "12345678-1234-1234-1234-123456789012",

"1234-"])
:for pat in [' \ze*', ' \zs*']
:  try:"
:"""" Skip adding state twice
:call add(tl, [2, '^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=', "#if FOO", 

"#if", ' FOO'])
:for pat in [' \ze*', ' \zs*']:"
:""" Test \%V atom
:call add(tl, [2, '\%>70vGesamt', 'Jean-Michel Charlier & Victor Hubinon\Gesamt

ausgabe [Salleck]    Buck Danny {Jean-Michel Charlier & Victor Hubinon}\Gesamtau

sgabe', 'Gesamt'])
:for pat in [' \ze*', ' \zs*']
:  try:"
:"""" Run the tests
:"
:for t in tl

:  :  let re = t[0]

:  :  let pat = t[1]

:  :  let text = t[2]

:  :  let matchidx = 3

:  :  for engine in [0, 1, 2]

:    :    if engine == 2 && re == 0 || engine == 1 && re == 1

:      :      continue

:      :    endif

:    :    let &regexpengine = engine

:    :    try

:      :      let l = matchlist(text, pat)

:      :    catch

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", caused an exception: \"' . v:exception . '\"'

:      :    endtry

:    :" check the match itself

:    :    if len(l) == 0 && len(t) > matchidx

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", did not match, expected: \"' . t[matchidx] . '\"'

:      :    elseif len(l) > 0 && len(t) == matchidx

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", match: \"' . l[0] . '\", expected no match'

:      :    elseif len(t) > matchidx && l[0] != t[matchidx]

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te
t . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"'

:      :    else

:      :      $put ='OK ' . engine . ' - ' . pat

:      :    endif

:    :    if len(l) > 0

:      :"   check all the nine submatches

:      :      for i in range(1, 9)

::        if len(t) <= matchidx + i

::          let e = ''

::        else

::          let e = t[matchidx + i]

::        endif

::        if l[i] != e

::          $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: 
"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"'

::        endif

::      endfor

:      :      unlet i

:      :    endif

:    :  endfor

:  :endfor
OK 0 - ^\(.\{-}b\)\@>.
OK 1 - ^\(.\{-}b\)\@>.
OK 2 - ^\(.\{-}b\)\@>.
OK 0 - \(.\{-}\)\(\)\@>$
OK 1 - \(.\{-}\)\(\)\@>$
OK 2 - \(.\{-}\)\(\)\@>$
OK 0 - \(a*\)\@>a\|a\+
OK 2 - \(a*\)\@>a\|a\+
OK 0 - \_[^8-9]\+
OK 1 - \_[^8-9]\+
OK 2 - \_[^8-9]\+
OK 0 - \_[^a]\+
OK 1 - \_[^a]\+
OK 2 - \_[^a]\+
OK 0 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
OK 1 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
OK 2 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
OK 0 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
OK 1 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
OK 2 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
OK 0 - \%>70vGesamt
OK 1 - \%>70vGesamt
OK 2 - \%>70vGesamt

:unlet t tl e l
:"
:"""""" multi-line tests """"""""""""""""""""
:let tl = []
:"
:"""" back references
:call add(tl, [2, '^.\(.\).\_..\1.', ['aaa', 'aaa', 'b'], ['XX', 'b']])
:call add(tl, [2, '\v.*\/(.*)\n.*\/\1$', ['./Dir1/Dir2/zyxwvuts.txt', './Dir1/D

ir2/abcdefgh.bat', '', './Dir1/Dir2/file1.txt', './OtherDir1/OtherDir2/file1.txt

'], ['./Dir1/Dir2/zyxwvuts.txt', './Dir1/Dir2/abcdefgh.bat', '', 'XX']])
OK 0 - ^\(.\{-}b\)\@>.
OK 1 - ^\(.\{-}b\)\@>.
:"
:"""" line breaks
:call add(tl, [2, '\S.*\nx', ['abc', 'def', 'ghi', 'xjk', 'lmn'], ['abc', 'def'

, 'XXjk', 'lmn']])
OK 0 - ^\(.\{-}b\)\@>.
:"
:" Check that \_[0-9] matching EOL does not break a following \>
:call add(tl, [2, '\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)

\.\)\{3\}\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>', ['', 'loca

lnet/192.168.0.1', ''], ['', 'localnet/XX', '']])
OK 0 - ^\(.\{-}b\)\@>.
OK 1 - ^\(.\{-}b\)\@>.
:"
:" Check a pattern with a line break and ^ and $
:call add(tl, [2, 'a\n^b$\n^c', ['a', 'b', 'c'], ['XX']])
:"
:call add(tl, [2, '\(^.\+\n\)\1', [' dog', ' dog', 'asdf'], ['XXasdf']])
:"
:"""" Run the multi-line tests
:"
:$put ='multi-line tests'

multi-line tests
:for t in tl

:  :  let re = t[0]

:  :  let pat = t[1]

:  :  let before = t[2]

:  :  let after = t[3]

:  :  for engine in [0, 1, 2]

:    :    if engine == 2 && re == 0 || engine == 1 && re ==1

:      :      continue

:      :    endif

:    :    let &regexpengine = engine

:    :    new

:    :    call setline(1, before)

:    :    exe '%s/' . pat . '/XX/'

:    :    let result = getline(1, '$')

:    :    q!

:    :    if result != after

:      :      $put ='ERROR: pat: \"' . pat . '\", text: \"' . string(before) . 

'\", expected: \"' . string(after) . '\", got: \"' . string(result) . '\"'

:      :    else

:      :      $put ='OK ' . engine . ' - ' . pat

:      :    endif

:    :  endfor

:  :endfor
OK 2 - \%>70vGesamt
multi-line tests
OK 0 - ^.\(.\).\_..\1.
OK 1 - ^.\(.\).\_..\1.
OK 2 - ^.\(.\).\_..\1.
OK 0 - \v.*\/(.*)\n.*\/\1$
OK 1 - \v.*\/(.*)\n.*\/\1$
OK 2 - \v.*\/(.*)\n.*\/\1$
OK 0 - \S.*\nx
OK 1 - \S.*\nx
OK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

:unlet t tl
:"
:" Check that using a pattern on two lines doesn't get messed up by using
:" matchstr() with \ze in between.
:set re=0
/^Substitute here
search hit BOTTOM, continuing at TOP:    let l = matchlist('x x', pat)
:    $put ='E888 NOT detected for ' . pat
:  catch
:    $put ='E888 detected for ' . pat
:  endtry
:endfor
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
ENDTEST

Substitute here:
<T="">Ta 5</Title>
<T="">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

search hit BOTTOM, continuing at TOP:.+1,.+2s/""/\='"'.matchstr(getline("."), '\d\+\ze<').'"'
5">Ta 5</Title>
<T="7">Ac 7</Title>
/^Substitute here
search hit BOTTOM, continuing at TOP:.+1,.+2yank
OK 2 - \%>70vGesamt
multi-line tests
OK 0 - ^.\(.\).\_..\1.
OK 1 - ^.\(.\).\_..\1.
OK 2 - ^.\(.\).\_..\1.
OK 0 - \v.*\/(.*)\n.*\/\1$
OK 1 - \v.*\/(.*)\n.*\/\1$
OK 2 - \v.*\/(.*)\n.*\/\1$
OK 0 - \S.*\nx
OK 1 - \S.*\nx
OK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1


<T="5">Ta 5</Title>

:"
:"
:" Check a pattern with a look beind crossing a line boundary
/^Behind:
search hit BOTTOM, continuing at TOP:  endtry
:endfor
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
ENDTEST

Substitute here:
<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

Visual:
thexe the thexethe
andaxand andaxand
oooxofor foroxooo
search hit BOTTOM, continuing at TOP/\(<\_[xy]\+\)\@3<=start
:.yank
OK 1 - ^.\(.\).\_..\1.
OK 2 - ^.\(.\).\_..\1.
OK 0 - \v.*\/(.*)\n.*\/\1$
OK 1 - \v.*\/(.*)\n.*\/\1$
OK 2 - \v.*\/(.*)\n.*\/\1$
OK 0 - \S.*\nx
OK 1 - \S.*\nx
OK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>


xxstart3

:"
:"
:" Check matching Visual area
/^Visual:
search hit BOTTOM, continuing at TOP<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

Visual:
thexe the thexethe
andaxand andaxand
oooxofor foroxooo
oooxofor foroxooo

Marks:
asdfSasdfsadfEasdf
asdfSas
dfsadfEasdf

Results of test64:
search hit BOTTOM, continuing at TOP
thexe the the:'<,'>s/\%Ve/E/g
3 substitutions on 1 linexE thE thE

andaxand andaxand 
:'<,'>s/\%Va/A/g
6 substitutions on 1 lineAndAxAnd AndAxAnd
oooxofor forox
oooxofor foro:'<,'>s/\%Vo/O/g
8 substitutions on 2 linesxOfOr fOrOx
oooxOfOr fOrO
:/^Visual/+1,/^Visual/+4yank
search hit BOTTOM, continuing at TOP
4 lines yankedOK 0 - \v.*\/(.*)\n.*\/\1$
OK 1 - \v.*\/(.*)\n.*\/\1$
OK 2 - \v.*\/(.*)\n.*\/\1$
OK 0 - \S.*\nx
OK 1 - \S.*\nx
OK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3


4 more lines
thexE thE thExethe4 more lines:"
:"
:" Check matching marks
/^Marks:
search hit BOTTOM, continuing at TOPasdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

Visual:
thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxooo

Marks:
asdfSasdfsadfEasdf
asdfSas
dfsadfEasdf

Results of test64:
OK 0 - ab
OK 1 - ab
OK 2 - ab
OK 0 - b
OK 1 - b
OK 2 - b
search hit BOTTOM, continuing at TOP
asdf:.-4,.+6s/.\%>'s.*\%<'e../here/
hereasdf
asdf
dfsa
dfsadf:.-4,.+6s/.\%>'s\_.*\%<'e../again/

asdfagainasdfOK 0 - bc*:/^Marks:/+1,/^Marks:/+3yank
search hit BOTTOM, continuing at TOP
3 lines yankedOK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3

thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxooo


3 more lines

asdfhereasdf
asdfagainasdf3 more lines:"
:"
:" Check patterns matching cursor position.
:func! Postest()

:   new

:   call setline(1, ['ffooooo', 'boboooo', 'zoooooo', 'koooooo', 'moooooo', "\t

\t\tfoo", 'abababababababfoo', 'bababababababafoo', '********_', '        xxxxxx

xxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxx xx xxxx

xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxx xxxxxxxxxx

xxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxx xxxxxxxxxxx

x xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx xxxxxxxxx xxxx

xxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxx xxx xxx xx

xxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx xxxxxxxxxxxx x

xxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxxxxx

xxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx'])

:   call setpos('.', [0, 1, 0, 0])

:   s/\%>3c.//g

:   call setpos('.', [0, 2, 4, 0])

:   s/\%#.*$//g

:   call setpos('.', [0, 3, 0, 0])

:   s/\%<3c./_/g

:   %s/\%4l\%>5c./_/g

:   %s/\%6l\%>25v./_/g

:   %s/\%>6l\%3c./!/g

:   %s/\%>7l\%12c./?/g

:   %s/\%>7l\%<9l\%>5v\%<8v./#/g

:   $s/\%(|\u.*\)\@<=[^|\t]\+$//ge

:   1,$yank

:   quit!

:  endfunc
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3

thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxooo

asdfhereasdf
asdfagainasdf255\
OK 0 - a\n^b$\n^cOK 1 - a\n^b$\n^c2
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2<T="5">Ta 5</Title>
<T="7">Ac 7</Title>xxstart3thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooooooxOfOr fOrOxoooasdfhereasdfasdfagainasdf~
-0-
:set re=0
:call Postest()
4 substitutions on 4 lines

10 lines yanked

Press ENTER or type command to continue:put
10 more lines

Press ENTER or type command to continueoooxOfOr fOrOxooo

asdfhereasdf
asdfagainasdf-0-ffobob__ooooo
koooo__moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
-1-
:set re=1
:call Postest()
4 substitutions on 4 lines

10 lines yanked

Press ENTER or type command to continue:put
10 more lines

Press ENTER or type command to continue-1-
ffo
bob
__ooooo
koooo__
moooooo
   f__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxx xxxx xx xxxxxxxx xxx xxxxxxx~~~~~-2-:set re=2
:call Postest()
4 substitutions on 4 lines

10 lines yanked

Press ENTER or type command to continue:put
10 more lines

Press ENTER or type command to continue:"
-2-
ffo
bob~:" start and end of buffer
/\%^
search hit BOTTOM, continuing at TOPTest for regexp patterns without multi-byte support.
See test95 for multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
search hit BOTTOM, continuing at TOP-2-
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
~
~
~
~
~Test:"
OK 2 - \v(a*)+
OK 0 - \v((ab)+)+
OK 1 - \v((ab)+)+
OK 2 - \v((ab)+)+
OK 0 - \v(((ab)+)+)+
OK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(((ab)+)+)+
OK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(a{0,2})+
OK 1 - \v(a{0,2})+
OK 2 - \v(a{0,2})+
OK 0 - \v(a*)+
OK 1 - \v(a*)+
OK 2 - \v(a*)+
OK 0 - \v((a*)+)+
OK 1 - \v((a*)+)+
OK 2 - \v((a*)+)+
OK 0 - \v((ab)*)+
OK 1 - \v((ab)*)+
OK 2 - \v((ab)*)+
OK 0 - \va{1,3}/\%^..
search hit BOTTOM, continuing at TOPTest for regexp patterns without multi-byte support.
See test95 for multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
search hit BOTTOM, continuing at TOP-2-
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
Test
~
~
~
~Testt END:"
OK 0 - \v((ab)+)+
OK 1 - \v((ab)+)+
OK 2 - \v((ab)+)+
OK 0 - \v(((ab)+)+)+
OK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(((ab)+)+)+
OK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(a{0,2})+
OK 1 - \v(a{0,2})+
OK 2 - \v(a{0,2})+
OK 0 - \v(a*)+
OK 1 - \v(a*)+
OK 2 - \v(a*)+
OK 0 - \v((a*)+)+
OK 1 - \v((a*)+)+
OK 2 - \v((a*)+)+
OK 0 - \v((ab)*)+
OK 1 - \v((ab)*)+
OK 2 - \v((ab)*)+
OK 0 - \va{1,3}
OK 1 - \va{1,3}/\%$
-2-
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
Test
Test END
~
~
~:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
:call add(tl, [2, 'ab', 'aab', 'ab'])
:call add(tl, [2, 'b', 'abcdef', 'b'])
:call add(tl, [2, 'bc*', 'abccccdef', 'bcccc'])
:call add(tl, [2, 'bc\{-}', 'abccccdef', 'b'])
:call add(tl, [2, 'bc\{-}\(d\)', 'abccccdef', 'bccccd', 'd'])
:call add(tl, [2, 'bc*', 'abbdef', 'b'])
:call add(tl, [2, 'c*', 'ccc', 'ccc'])
:call add(tl, [2, 'bc*', 'abdef', 'b'])/..\%$
-2-
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
Test
Test END
~
~
~
ENE

:"
:"
:" Check for detecting error
:set regexpengine=2
:for pat in [' \ze*', ' \zs*']

:  :  try

:    :    let l = matchlist('x x', pat)

:    :    $put ='E888 NOT detected for ' . pat

:    :  catch

:    :    $put ='E888 detected for ' . pat

:    :  endtry

:  :endfor
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?ba
**!*****_  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxxxxxxx xxx xxxxxxx xxxxxxxxx  xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxx xxxx xxx xxxx xxx xxx xxxxxx x xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x x xx xxxxxx xxxxxxx  xxxxxxxxxx xxxxxxxxx xxx xxx xxxxxxxx   xxxx xxx xxxxxx xxxxx xxxxx xx   xxxxxxxxxxxx xxxx xxxxxxxxx xxxxx xxxxx xx xxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxTestEND
EN888 detected for  \ze*
E888 detected for  \zs*
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 1107 lines, 22167 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test64 = test61; then \
#	  if diff test.out test64.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test64.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test64.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test65.failed test.ok test.out X* viminfo
cp test65.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test65.in
[?1h="test65.in" 95 lines, 2153 charactersTest for floating point and logical operators.

STARTTEST
:so small.vim
:if !has("float")
:  e! test.ok
:  wq! test.out
:endif
:"
:$put =printf('%f', 123.456)
:$put =printf('%e', 123.456)
:$put =printf('%g', 123.456)
:" check we don't crash on division by zero
:echo 1.0 / 0.0
:$put ='+='
:let v = 1.234
:let v += 6.543
:$put =printf('%g', v)
:let v = 1.234
:let v += 5
:$put =printf('%g', v)
:let a = 5
:let a += 3.333:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for floating point and logical operators./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 89 lines, 2067 characters written:set ff& cpo+=A
/ENDTEST:$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

Results of test65:


:so! Xdotest
:so small.vim
:if !has("float")

:  :  e! test.ok

:  :  wq! test.out

:  :endif
:$put =float2nr(123.456)
:$put =float2nr(-123.456)
:$put ='AND'

:"
:$put =printf('%f', 123.456)

123.456000
:$put =printf('%e', 123.456)

1.234560e+02
:$put =printf('%g', 123.456)

123.456
:" check we don't crash on division by zero
:echo 1.0 / 0.0
inf:$put ='+='

+=
:let v = 1.234
:let v += 6.543
:$put =printf('%g', v)

7.777
:let v = 1.234
:let v += 5
:$put =printf('%g', v)

6.234
:let a = 5
:let a += 3.333
:$put =string(a)

8.333
:$put ='=='

==
:let v = 1.234
:$put =v == 1.234

1
:$put =v == 1.2341

0
:$put ='add-subtract'

add-subtract
:$put =printf('%g', 4 + 1.234)

5.234
:$put =printf('%g', 1.234 - 8)

-6.766
:$put ='mult-div'

mult-div
:$put =printf('%g', 4 * 1.234)

4.936
:$put =printf('%g', 4.0 / 1234)

0.003241
:$put ='dict'

dict
:$put =string({'x': 1.234, 'y': -2.0e20})

{'x': 1.234, 'y': -2.0e20}
:$put ='list'

list
:$put =string([-123.4, 2.0e-20])

[-123.4, 2.0e-20]
:$put ='abs'

abs
:$put =printf('%d', abs(1456))

1456
:$put =printf('%d', abs(-4))

4
:$put =printf('%d', abs([1, 2, 3]))
E745: Using a List as a Number
-1
:$put =printf('%g', abs(14.56))

14.56
:$put =printf('%g', abs(-54.32))

54.32
:$put ='ceil'

ceil
:$put =printf('%g', ceil(1.456))

2.0
:$put =printf('%g', ceil(-5.456))

-5.0
:$put =printf('%g', ceil(-4.000))

-4.0
:$put ='floor'

floor
:$put =printf('%g', floor(1.856))

1.0
:$put =printf('%g', floor(-5.456))

-6.0
:$put =printf('%g', floor(4.0))

4.0
:$put ='log10'

log10
:$put =printf('%g', log10(1000))

3.0
:$put =printf('%g', log10(0.01000))

-2.0
:$put ='pow'

pow
:$put =printf('%g', pow(3, 3.0))

27.0
:$put =printf('%g', pow(2, 16))

65536.0
:$put ='round'

round
:$put =printf('%g', round(0.456))

0.0
:$put =printf('%g', round(4.5))

5.0
:$put =printf('%g', round(-4.50))

-5.0
:$put ='sqrt'

sqrt
:$put =printf('%g', sqrt(100))

10.0
:echo sqrt(-4.01)
nan:$put ='str2float'

str2float
:$put =printf('%g', str2float('1e40'))

1.0e40
:$put ='trunc'

trunc
:$put =printf('%g', trunc(1.456))

1.0
:$put =printf('%g', trunc(-5.456))

-5.0
:$put =printf('%g', trunc(4.000))

4.0
:$put ='float2nr'

float2nr
:$put =float2nr(123.456)

123
:$put =float2nr(-123.456)

-123
:$put ='AND'

AND
:$put =and(127, 127)

127
:$put =and(127, 16)

16
:$put =and(127, 128)

0
:$put ='OR'

OR
:$put =or(16, 7)

23
:$put =or(8, 7)

15
:$put =or(0, 123)

123
:$put ='XOR'

XOR
:$put =xor(127, 127)

0
:$put =xor(127, 16)

111
:$put =xor(127, 128)

255
:$put ='invert'

invert
:$put =and(invert(127), 65535)

65408
:$put =and(invert(16), 65535)

65519
:$put =and(invert(128), 65535)

65407
:$put =invert(1.0)
E805: Using a Float as a Number
0
:/^Results/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 73 lines, 430 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test65 = test61; then \
#	  if diff test.out test65.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test65.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test65.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test66.failed test.ok test.out X* viminfo
cp test66.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test66.in
[?1h="test66.in" 33 lines, 509 charactersTest for visual block shift and tab characters.

STARTTEST
:so small.vim
/^one
fe^V4jR^[ugvr1:'<,'>w! test.out
/^abcdefgh
^V4jI    ^[j<<11|D
7|a^[
7|a^[
7|a^[4k13|^V4j<
:$-5,$w >> test.out
:$-4,$s/\s\+//g
^V4kI    ^[j<<
7|a^[
7|a^[
7|a^[4k13|^V4j3<
:$-4,$w >> test.out
:qa!
ENDTEST

one two three:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 16 lines, 234 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^one
on



e
one two three
one two three
one two three
one two three
4 fewer linesabcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyzmore lines; before #1  0 seconds agoone two three
one two three
one two threeone two threeone two threee
one
one
one
on1
on1
on1
on1
on1:'<,'>w! test.out
"test.out" [New File] 5 lines, 70 characters written/^abcdefgh


abcdefghijklmnopqrstuvwxyz



a
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
a
a
a
a    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyzc         defghijklmnopqrstuvwxyzc            defghijklmnopqrstuvwxyzc         defghijklmnopqrstuvwxyzi  
5 lines <ed 1 timeidefghijklmnopqrstuvwxyzdefghijklmnopqrstuvwxyzdefghijklmnopqrstuvwxyz:$-5,$w >> test.out
"test.out"6 lines, 151 characters appended:$-4,$s/\s\+//g
7 substitutions on 4 linesabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyza
a
a
a
a
a
a
a    abcdefghijklmnopqrstuvwxyz
    abcdefghij
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
abcdefghij
    abc         defghijklmnopqrstuvwxyzc                       defghijklmnopqrstuvwxyzc                 defghijklmnopqrstuvwxyzi  
5 lines <ed 3 timesidefghijklmnopqrstuvwxyz    defghijklmnopqrstuvwxyzdefghijklmnopqrstuvwxyz:$-4,$w >> test.out
"test.out"5 lines, 147 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test66 = test61; then \
#	  if diff test.out test66.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test66.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test66.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test67.failed test.ok test.out X* viminfo
cp test67.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test67.in
[?1h="test67.in" 33 lines, 1109 charactersTest that groups and patterns are tested correctly when calling exists() for
autocommands.

STARTTEST
:so small.vim
:let results=[]
:augroup auexists
:augroup END
:call add(results, "##BufEnter: " . exists("##BufEnter"))
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:au BufEnter * let g:entered=1
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:augroup auexists
:au BufEnter * let g:entered=1
:augroup END
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:au BufEnter *.test let g:entered=1
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:edit testfile.test
:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:au BufEnter <buffer> let g:entered=1:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test that groups and patterns are tested correctly when calling exists() for/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 27 lines, 998 characters written:set ff& cpo+=A
/ENDTEST








:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:edit testfile2.test
:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:e test.out
:call append(0, results)
:$d
:w
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:let results=[]
:augroup auexists
:augroup END
:call add(results, "##BufEnter: " . exists("##BufEnter"))
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:au BufEnter * let g:entered=1
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:augroup auexists
:au BufEnter * let g:entered=1
:augroup END
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:au BufEnter *.test let g:entered=1
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:edit testfile.test
"testfile.test" [New File]~~~~~~~~~~~~~~~~~~~~~
~:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:au BufEnter <buffer> let g:entered=1
:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:edit testfile2.test
"testfile2.test" [New File]:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:e test.out
"test.out" [New File]:call append(0, results)
##BufEnter: 1
#BufEnter: 0
#BufEnter: 1
#auexists#BufEnter: 0
#auexists#BufEnter: 1
#BufEnter#*.test: 0
#BufEnter#*.test: 1
#BufEnter#<buffer>: 0
#BufEnter#<buffer>: 1
#BufEnter#<buffer>: 0:$d
~:w
"test.out" [New File] 10 lines, 190 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test67 = test61; then \
#	  if diff test.out test67.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test67.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test67.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test68.failed test.ok test.out X* viminfo
cp test68.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test68.in
[?1h="test68.in" 131 lines, 1004 charactersTest for text formatting.

Results of test68:

STARTTEST
:so small.vim
/^{/+1
:set noai tw=2 fo=t
gRa b^[
ENDTEST

{


}

STARTTEST
/^{/+1
:set ai tw=2 fo=tw
gqgqjjllab^[
ENDTEST

{:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for text formatting./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 4 lines, 48 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^{/+1
:set noai tw=2 fo=t
a
b
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 38 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
/^{/+1

a  b
:set ai tw=2 fo=tw

b

aa 
b
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 4 lines, 34 characters written:set ff& cpo+=A

/ENDTEST



:set tw=3 fo=t
gqgqo
a ^V^A^[
ENDTEST

:so! Xdotest
/^{/+1


{
a ^A
:set tw=3 fo=t

^A


a
^A

}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 58 characters written:set ff& cpo+=A

/ENDTEST




:set tw=2 fo=tcq1 comments=:#
gqgqjgqgqo
a b
#a b^[
ENDTEST

:so! Xdotest
/^{/+1


{
a b
:set tw=2 fo=tcq1 comments=:#

#a b


a b
#a b
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 46 characters written:set ff& cpo+=A

/ENDTEST


:set tw=5 fo=tcn comments=:#
A b^[jA b^[
ENDTEST

:so! Xdotest
/^{/+1


{
  1 a
:set tw=5 fo=tcn comments=:#

b
# 1 a
#   b
}
/^STARTTEST


STARTTEST
/^{/+3

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 35 characters written:set ff& cpo+=A

/ENDTEST


:set tw=5 fo=t2a si
i  ^[A_^[
ENDTEST

:so! Xdotest
/^{/+3




{

  x a
  b
:set tw=5 fo=t2a si
    b b_
c
/^STARTTEST




}

STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 40 characters written:set ff& cpo+=A

/ENDTEST


:set tw=5 fo=qn comments=:#
gwap
ENDTEST

:so! Xdotest
/^{/+1


{
# 1 a b
:set tw=5 fo=qn comments=:#

#   b
/^STARTTEST



}

STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 40 characters written:set ff& cpo+=A

/ENDTEST


:set tw=5 fo=q2 comments=:#
gwap
ENDTEST

:so! Xdotest
/^{/+1


{
# x
:set tw=5 fo=q2 comments=:#
# x a

#   b
/^STARTTEST



}

STARTTEST
/^{/+2

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 26 characters written:set ff& cpo+=A

/ENDTEST


:set tw& fo=a
I^^^[
ENDTEST

:so! Xdotest
/^{/+2



{
   1aa
   2bb
:set tw& fo=a
1aa ^^2bb }STARTTEST
/^STARTTEST

/mno pqr/
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 69 characters written:set ff& cpo+=A

/ENDTEST


:setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/
A vwx yz^[
ENDTEST

:so! Xdotest
/mno pqr/


/* abc def ghi jkl
 *    mno pqr stu
:setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/

*    vwx yz
*/
/^STARTTEST


STARTTEST
/^#/

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 47 characters written:set ff& cpo+=A

/ENDTEST


:setl tw=12 fo=tqnc comments=:#
A foobar^[
ENDTEST

:so! Xdotest
/^#/

# 1 xxxxx
:setl tw=12 fo=tqnc comments=:#

#   foobar

/^STARTTEST

STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2 lines, 56 characters written:set ff& cpo+=A

/ENDTEST
:1;/^Results/,$wq! test.out

:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
63 fewer lines# 1 a#   b}{
# x a#   b}{ 1aa ^^2bb }/* abc def ghi jkl
 *    mno pqr stu
 *    vwx yz
 */# 1 xxxxx
#   foobar:1;/^Results/,$wq! test.out
"test.out" [New File] 77 lines, 281 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test68 = test61; then \
#	  if diff test.out test68.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test68.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test68.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test69.failed test.ok test.out X* viminfo
cp test69.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test69.in
[?1h="test69.in" 192 lines, 2185 charactersTest for multi-byte text formatting.
Also test, that 'mps' with multibyte chars works.
And test "ra" on multi-byte characters.
Also test byteidx() and byteidxcomp()

STARTTEST
:so mbyte.vim
:set encoding=utf-8
ENDTEST

Results of test69:

STARTTEST
/^{/+1
:set tw=2 fo=t
gqgqjgqgqo
XYZ
abc XYZ^[
ENDTEST

{
XYZ
abc XYZ:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for multi-byte text formatting./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 2 lines, 34 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so mbyte.vim
:set encoding=utf-8
Test for multi-byte text formatting.
Also test, that 'mps' with multibyte chars works.
And test "ra" on multi-byte characters.
Also test byteidx() and byteidxcomp()

STARTTEST
:so mbyte.vim
:set encoding=utf-8
ENDTEST

Results of test69:

STARTTEST
/^{/+1
:set tw=2 fo=t
gqgqjgqgqo
XYZ
abc XYZ^[
ENDTEST

{
XYZ
abc XYZ/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 58 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
/^{/+1
:set tw=2 fo=t


XYZ

XY
Z
abc 
XYZ
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 8 lines, 80 characters written:set ff& cpo+=A

/ENDTEST







:set tw=1 fo=tm
gqgqjgqgqjgqgqjgqgqjgqgqo
X
Xa
X a
XY
X Y^[
ENDTEST

:so! Xdotest
/^{/+1


{
X
:set tw=1 fo=tm

Xa
a
X a

a
XY

Y

X Y

Y



X


X
a


X
a
X

Y
X 
Y

}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 13 lines, 140 characters written:set ff& cpo+=A

/ENDTESTgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
X
Xa
X a
XY
X Y
aX
abX
abcX
abX c
abXY^[
ENDTEST

{
X
Xa
X a
XY
X Y
aX
abX
abcX
abX c
:so! Xdotest
/^{/+1
:set tw=2 fo=tm

a
a
Y

Y 

aX

X

abX

X

abcX

X

abX c


X
c
abXY


X
Y



X


X
a


X
a
X

Y
X 

Y
a

X
ab

X
abc

X
ab


X
c
ab
X
Y

}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 47 characters written:set ff& cpo+=A

/ENDTEST




:set ai tw=2 fo=tm
gqgqjgqgqo
X
Xa^[
ENDTEST

:so! Xdotest
/^{/+1


{
  X
:set ai tw=2 fo=tm
  
Xa
a


X
  
X
  a
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 53 characters written:set ff& cpo+=A

/ENDTEST




:set noai tw=2 fo=tm
gqgqjgqgqo
  X
  Xa^[
ENDTEST

:so! Xdotest
/^{/+1


{
  X
:set noai tw=2 fo=tm
  
Xa
a


X
  
X
a
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 13 lines, 169 characters written:set ff& cpo+=A

/ENDTESTgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
X
Xa
XaY
XY
XYZ
X Y
X YZ
XX
XXa
XXY^[
ENDTEST

{
X
Xa
XaY
XY
XYZ
X Y
X YZ
XX
XXa
:so! Xdotest
/^{/+1
:set tw=2 fo=cqm comments=n:X


XY

XZ



X Z

XX

XXa

XXY



X

Xa
Xa

XY
X
Y
XY

XZ
X 
Y
X Y

X Z
X
X
X
Xa
XXY
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 30 characters written:set ff& cpo+=A

/ENDTEST


:set tw=2 fo=tm
RXa^[
ENDTEST

:so! Xdotest
/^{/+1


{
:set tw=2 fo=tm

X
a
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 34 characters written:set ff& cpo+=A

/ENDTEST


:set mps+=^Vu2018:^Vu2019
d%
ENDTEST

:so! Xdotest
/^{/+1


{
‘two three ’four
:set mps+=^‘:^’
 four
}
/^STARTTEST

STARTTEST
/^ra test

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2 lines, 16 characters written:set ff& cpo+=A

/ENDTEST

jVjra
ENDTEST

:so! Xdotest
/^ra test

ra test
abba
bba 

a
aab 
aaaaaaa 

/^STARTTEST


STARTTEST
:set whichwrap+=h

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 4 lines, 43 characters written:set ff& cpo+=A

/ENDTEST



/^x
dh
:set whichwrap-=h
ENDTEST

:so! Xdotest
:set whichwrap+=h
/^x


áxx

:set whichwrap-=h
/^STARTTEST

STARTTEST
:let a = '.é.' " one char of two bytes

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 9 lines, 548 characters written:set ff& cpo+=A

/ENDTEST












:let b = '.é.' " normal e with composing char
/^byteidx
:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)])
:put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])
/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)])
:let b = '.é.'
:put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])
ENDTEST

:so! Xdotest
:let a = '.é.' " one char of two bytes
:let b = '.eé.' " normal e with composing char
/^byteidx

byteidx
:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), bytei

dx(a, 4)])
:set whichwrap-=h
ENDTESTáxSTARTTEST
:let a = '.é.' " one char of two bytesb = '.é.' " normal e with composing char
/^byteidx:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)]):put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)]):let b = '.é.'put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])ENDTESTbyteidx
[0, 1, 3, 4, -1]
:put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), bytei

dx(b, 4)])
ENDTESTáxSTARTTEST
:let a = '.é.' " one char of two bytesb = '.é.' " normal e with composing char
/^byteidx:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)]):put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)]):let b = '.é.'put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])ENDTESTbyteidx
[0, 1, 3, 4, -1]4, 5
/^byteidxcomp

byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxc

omp(a, 3), byteidxcomp(a, 4)])
áxSTARTTEST
:let a = '.é.' " one char of two bytesb = '.é.' " normal e with composing char
/^byteidx:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)]):put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)]):let b = '.é.'put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])ENDTESTbyteidx
[0, 1, 3, 4, -1]4, 5
byteidxcomp[0, 1, 3, 4, -1]
:let b = '.eé.'
:put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxc

omp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])
STARTTEST
:let a = '.é.' " one char of two bytesb = '.é.' " normal e with composing char
/^byteidx:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)]):put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)]):let b = '.é.'put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])ENDTESTbyteidx
[0, 1, 3, 4, -1]4, 5
byteidxcomp[0, 1, 3, 4, -1]2, 4, 5, -1]
/^STARTTEST


STARTTEST
/^substitute

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2 lines, 75 characters written:set ff& cpo+=A

/ENDTEST

:let y = substitute('123', '\zs', 'a', 'g')    | put =y
ENDTEST

substitute

:so! Xdotest
/^substitute
:let y = substitute('123', '\zs', 'a', 'g')    | put =y


a1a2a3a

/^STARTTEST

STARTTEST

:g/^STARTTEST/.,/^ENDTEST/d
:1;/^Results/,$wq! test.out

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2 lines, 56 characters written:set ff& cpo+=A


/ENDTEST
:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
104 fewer lines{ four}ra test
aaaaaaaáxbyteidx[0, 1, 3, 4, -1]
[0, 1, 4, 5, -1]byteidxcomp
[0, 1, 3, 4, -1]
[0, 1, 2, 4, 5, -1]substitute
a1a2a3a:1;/^Results/,$wq! test.out
"test.out" [New File] 166 lines, 730 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test69 = test61; then \
#	  if diff test.out test69.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test69.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test69.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test70.failed test.ok test.out X* viminfo
cp test70.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test70.in
[?1h="test70.in" 63 lines, 1501 charactersSmoke test for MzScheme interface and mzeval() function

STARTTEST
:so mzscheme.vim
:set nocompatible viminfo+=nviminfo
:function! MzRequire()
:redir => l:mzversion
:mz (version)
:redir END
:if strpart(l:mzversion, 1, 1) < "4"
:" MzScheme versions < 4.x:
:mz (require (prefix vim- vimext))
:else
:" newer versions:
:mz (require (prefix-in vim- 'vimext))
:mz (require r5rs)
:endif
:endfunction
:silent call MzRequire()
:mz (define l '("item0" "dictionary with list OK" "item2"))
:mz (define h (make-hash))
:mz (hash-set! h "list" l)
/^1:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Smoke test for MzScheme interface and mzeval() function/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 55 lines, 1398 characters written:set ff& cpo+=A
/ENDTEST:if l2[2] == l2
:let res = "OK"
:else
:let res = "FAILED: " . l2[2]
:endif
:call setline(search("^3"), "circular test " . res)
:" funcrefs
:mz (define vim:max (vim-eval "function('max')"))
:mz (define m (vim:max '(1 100 8)))
:let m = mzeval('m')
:if m == 100
:let fref_res = "OK"
:else
:let fref_res = "FAILED: " . m
:end
:call append(line('$'), 'funcrefs '. fref_res)
:?^1?,$w! test.out
:qa!
ENDTEST

1 line 1
2 line 2
3 line 3
:so! Xdotest
:so mzscheme.vim
"test.ok" 6 lines, 94 characters

"test.out" [New File] 6 lines, 94 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test70 = test61; then \
#	  if diff test.out test70.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test70.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test70.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test73.failed test.ok test.out X* viminfo
cp test73.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test73.in
[?1h="test73.in" 169 lines, 3647 charactersTests for find completion.

STARTTEST
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xfind directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a stale "Xfind" directory may exist, remove it so that
:" we start from a clean state.
:call delete("Xfind", "rf")
:new
:let cwd=getcwd()
:let test_out = cwd . '/test.out'
:call mkdir('Xfind')
:cd Xfind
:set path=
:find
:exec "w! " . test_out
:close:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for find completion./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 164 lines, 3600 characters written:set ff& cpo+=A
/ENDTEST:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file
:e in/file.txt
:exec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu
:exec "w >>" . test_out
:q
:exec "cd " . cwd
:call delete("Xfind", "rf")
:qa!
ENDTEST


:so! Xdotest
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xfind directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a stale "Xfind" directory may exist, remove it so that
:" we start from a clean state.
:call delete("Xfind", "rf")
:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTESTtest73.in                                                                       :let cwd=getcwd()
:let test_out = cwd . '/test.out'
:call mkdir('Xfind')
:cd Xfind
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfind/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test73.in:set path=
:find ...
E345: Can't find file "" in path:exec "w! " . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out"
<ild/vim-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test.out" [New] 0L, 0C written/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out:close
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTEST/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test73.in                    :set path=.
:find ...
E32: No file name:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 0L, 0C appended:close
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTEST/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test73.in                    :set path=.,,
:find ...
E32: No file name:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 0L, 0C appended:close
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTEST/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test73.in                    :set path=./**
:find ...
E32: No file name:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 0L, 0C appended:close
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTEST/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test73.in                    :" We shouldn't find any file at this point, test.out must be empty.
:call mkdir('in')
:cd in
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfind/in:call mkdir('path')
:exec "cd " . cwd
/<<PKGBUILDDIR>>/src/vim-gtk/testdirtest73.in                                                   :e Xfind/file.txt
"Xfind/file.txt" [New File]Xfind/file.txt-- INSERT --Holy Grail[+]:w
"Xfind/file.txt" [New] 1L, 11C written   :e Xfind/in/file.txt
"Xfind/in/file.txt" [New File]in/file.txt-- INSERT --Jimmy Hoffa[+]:w
"Xfind/in/file.txt" [New] 1L, 12C written   :e Xfind/in/stuff.txt
"Xfind/in/stuff.txt" [New File]stuff.txt-- INSERT --Another Holy Grail[+]:w
"Xfind/in/stuff.txt" [New] 1L, 19C written   :e Xfind/in/path/file.txt
"Xfind/in/path/file.txt" [New File]path/file.txt-- INSERT --E.T.[+]:w
"Xfind/in/path/file.txt" [New] 1L, 5C written   :set path=Xfind/**
:find file..../Xfind/file.txt
"Xfind/file.txt" 1L, 11CHoly Grailfile.txt        :exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 11C appended:find file..../Xfind/file.txt...in/file.txt
"Xfind/in/file.txt" 1L, 12CJimmy Hoffain/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 12C appended:find file..../Xfind/file.txt...in/file.txt...path/file.txt
"Xfind/in/path/file.txt" 1L, 5CE.T.path/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 5C appended:" Rerun the previous three find completions, using fullpath in 'path'
:exec "set path=" . cwd . "/Xfind/**"
:find file..../Xfind/file.txt
"Xfind/file.txt" 1L, 11CHoly Grailfile.txt        :exec "w >>" .  test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 11C appended:find file..../Xfind/file.txt...in/file.txt
"Xfind/in/file.txt" 1L, 12CJimmy Hoffain/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 12C appended:find file..../Xfind/file.txt...in/file.txt...path/file.txt
"Xfind/in/path/file.txt" 1L, 5CE.T.path/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 5C appended:" Same steps again, using relative and fullpath items that point to the same
:" recursive location.
:" This is to test that there are no duplicates in the completion list.
:exec "set path+=Xfind/**"
:find file..../Xfind/file.txt
"Xfind/file.txt" 1L, 11CHoly Grailfile.txt        :exec "w >>" .  test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 11C appended:find file..../Xfind/file.txt...in/file.txt
"Xfind/in/file.txt" 1L, 12CJimmy Hoffain/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 12C appended:find file..../Xfind/file.txt...in/file.txt...path/file.txt
"Xfind/in/path/file.txt" 1L, 5CE.T.path/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 5C appended:find file..../Xfind/file.txt...in/file.txt
"Xfind/in/file.txt" 1L, 12CJimmy Hoffafile.txt     :" Test find completion for directory of current buffer, which at this point
:" is Xfind/in/file.txt.
:set path=.
:find st...uff.txt
"Xfind/in/stuff.txt" 1L, 19CAnother Holy Grailstuff.txt:exec "w >>" .  test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 19C appended:" Test find completion for empty path item ",," which is the current directory
:cd Xfind
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfindin/stuff.txt      /<<PKGBUILDDIR>>/src/vim-gtk/testdir/test73.in:set path=,,
:find f...ile.txt...
"file.txt" 1L, 11CHoly Grailfile.txt    :exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 11C appended:" Test shortening of
:"
:"    foo/x/bar/voyager.txt
:"    foo/y/bar/voyager.txt
:"
:" When current directory is above foo/ they should be shortened to (in order
:" of appearance):
:"
:"    x/bar/voyager.txt
:"    y/bar/voyager.txt
:call mkdir('foo')
:cd foo
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfind/foo/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfind/file.txt:call mkdir('x')
:call mkdir('y')
:cd x
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfind/foo/x:call mkdir('bar')
:cd ..
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfind/foo:cd y
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfind/foo/y:call mkdir('bar')
:cd ..
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfind/foo:cd ..
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfindfile.txt                                                         :" We should now be in the Xfind directory
:e foo/x/bar/voyager.txt
"foo/x/bar/voyager.txt" [New File]oo/x/bar/voyager.txt-- INSERT --Voyager 1[+]:w
"foo/x/bar/voyager.txt" [New] 1L, 10C written   :e foo/y/bar/voyager.txt
"foo/y/bar/voyager.txt" [New File]y-- INSERT --Voyager 2[+]:w
"foo/y/bar/voyager.txt" [New] 1L, 10C written   :exec "set path=" . cwd . "/Xfind/**"
:find voyager...x/bar/voyager.txt
"foo/x/bar/voyager.txt" 1L, 10C1x:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 10C appended:find voyager...x/bar/voyager.txt...y
"foo/y/bar/voyager.txt" 1L, 10C2y:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 10C appended:"
:" When current directory is .../foo/y/bar they should be shortened to (in
:" order of appearance):
:"
:"    ./voyager.txt
:"    x/bar/voyager.txt
:cd foo
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfind/fooy/bar/voyager.txt    :cd y
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfind/foo/ybar/voyager.txt  :cd bar
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfind/foo/y/barvoyager.txt    :find voyager..../voyager.txt
"voyager.txt" 1L, 10C:exec "w >> " . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 10C appended:find voyager..../voyager.txt...x/bar/voyager.txt
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/Xfind/foo/x/bar/voyager.txt"
<m-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/Xfind/foo/x/bar/voyager.txt" 1L, 10C1/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfind/foo/x/bar/voyager.txt:exec "w >> " . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 10C appended:" Check the opposite too:
:cd ..
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfind/foo/y:cd ..
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfind/foox/bar/voyager.txt                                                             :cd x
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfind/foo/xbar/voyager.txt  :cd bar
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfind/foo/x/barvoyager.txt    :find voyager..../voyager.txt
"voyager.txt" 1L, 10C:exec "w >> " . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 10C appended:find voyager..../voyager.txt...y/bar/voyager.txt
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/Xfind/foo/y/bar/voyager.txt"
<m-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/Xfind/foo/y/bar/voyager.txt" 1L, 10C2/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfind/foo/y/bar/voyager.txt:exec "w >> " . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 10C appended:" Check for correct handling of shorten_fname()'s behavior on windows
:exec "cd " . cwd . "/Xfind/in"
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfind/in:find file..../file.txt
"file.txt" 1L, 12CJimmy Hoffafile.txt                                                                      :exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 12C appended:" Test for relative to current buffer 'path' item
:exec "cd " . cwd . "/Xfind/"
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xfindin/file.txt:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
"in/file.txt" 1L, 12C:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file...txt
"in/path/file.txt" 1L, 5CE.T.path/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 5C appended:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file
:e in/file.txt
"in/file.txt" 1L, 12CJimmy Hoffafile.txt     :exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 12C appended:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu...ff.txt
"in/stuff.txt" 1L, 19CAnother Holy Grailstuff.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test.out" 1L, 19C appended:q
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:exec "cd " . cwd
/<<PKGBUILDDIR>>/src/vim-gtk/testdir:call delete("Xfind", "rf")
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test73 = test61; then \
#	  if diff test.out test73.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test73.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test73.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test75.failed test.ok test.out X* viminfo
cp test75.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test75.in
[?1h="test75.in" 41 lines, 1000 charactersTests for maparg().
Also test utf8 map with a 0x80 byte.

STARTTEST
:so small.vim
:so mbyte.vim
:set cpo-=<
:set encoding=utf8
:" Test maparg() with a string result
:map foo<C-V> is<F4>foo
:vnoremap <script> <buffer> <expr> <silent> bar isbar
:call append('$', maparg('foo<C-V>'))
:call append('$', string(maparg('foo<C-V>', '', 0, 1)))
:call append('$', string(maparg('bar', '', 0, 1)))
:map <buffer> <nowait> foo bar
:call append('$', string(maparg('foo', '', 0, 1)))
:"
:map abc x<char-114>x
:call append('$', maparg('abc'))
:map abc y<S-char-114>y
:call append('$', maparg('abc'))
:"
Go^[:":set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for maparg()./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 34 lines, 919 characters written:set ff& cpo+=A
/ENDTEST















:" Outside of the range, minimum
:inoremap <Char-0x1040> a
:execute "normal a\u1040\<Esc>"
:" Inside of the range, minimum
:inoremap <Char-0x103f> b
:execute "normal a\u103f\<Esc>"
:" Inside of the range, maximum
:inoremap <Char-0xf03f> c
:execute "normal a\uf03f\<Esc>"
:" Outside of the range, maximum
:inoremap <Char-0xf040> d
:execute "normal a\uf040\<Esc>"
:"
:/^eof/+1,$w! test.out
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:so mbyte.vim
:set cpo-=<
:set encoding=utf8
:map abc x<char-114>x
:call append('$', maparg('abc'))
:map abc y<S-char-114>y
:call append('$', maparg('abc'))
:"
Go^[:"
:" Outside of the range, minimum
:inoremap <Char-0x1040> a
:execute "normal a\u1040\<Esc>"
:" Inside of the range, minimum
:inoremap <Char-0x103f> b
:execute "normal a\u103f\<Esc>"
:" Inside of the range, maximum
:inoremap <Char-0xf03f> c
:execute "normal a\uf03f\<Esc>"
:" Outside of the range, maximum
:inoremap <Char-0xf040> d
:execute "normal a\uf040\<Esc>"
:"
:/^eof/+1,$w! test.out
:qa!
ENDTEST

:" Test maparg() with a string result
:map foo<C-V> is<F4>foo
:vnoremap <script> <buffer> <expr> <silent> bar isbar
:call append('$', maparg('foo<C-V>'))
:call append('$', string(maparg('foo<C-V>', '', 0, 1)))
:call append('$', string(maparg('bar', '', 0, 1)))
:map <buffer> <nowait> foo bar
:call append('$', string(maparg('foo', '', 0, 1)))
:"
:map abc x<char-114>x
:call append('$', maparg('abc'))
:map abc y<S-char-114>y
:call append('$', maparg('abc'))
:"










eof
is<F4>foo
{'silent': 0, 'noremap': 0, 'lhs': 'foo<C-V>', 'mode': ' ', 'nowait': 0, 'expr':: 0, 'sid': 0, 'rhs': 'is<F4>foo', 'buffer': 0}
{'silent': 1, 'noremap': 1, 'lhs': 'bar', 'mode': 'v', 'nowait': 0, 'expr': 1, ''sid': 0, 'rhs': 'isbar', 'buffer': 1}
{'silent': 0, 'noremap': 0, 'lhs': 'foo', 'mode': ' ', 'nowait': 1, 'expr': 0, ''sid': 0, 'rhs': 'bar', 'buffer': 1}
xrx
yRy

:"
:" Outside of the range, minimum
:inoremap <Char-0x1040> a
:execute "normal a\u1040\<Esc>"
a:" Inside of the range, minimum
:inoremap <Char-0x103f> b
:execute "normal a\u103f\<Esc>"
b:" Inside of the range, maximum
:inoremap <Char-0xf03f> c
:execute "normal a\uf03f\<Esc>"
c:" Outside of the range, maximum
:inoremap <Char-0xf040> d
:execute "normal a\uf040\<Esc>"
d:"
:/^eof/+1,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 7 lines, 384 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test75 = test61; then \
#	  if diff test.out test75.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test75.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test75.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test76.failed test.ok test.out X* viminfo
cp test76.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test76.in
[?1h="test76.in" 46 lines, 899 charactersTests for completefunc/omnifunc. vim: set ft=vim :

STARTTEST
:"Test that nothing happens if the 'completefunc' opens
:"a new window (no completion, no crash)
:so small.vim
:function! DummyCompleteOne(findstart, base)
:  if a:findstart
:    return 0
:  else
:    wincmd n
:    return ['onedef', 'oneDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteOne
/^one
A^X^U^N^[:q!
:function! DummyCompleteTwo(findstart, base)
:  if a:findstart
:    wincmd n
:    return 0
:  else
:    return ['twodef', 'twoDEF']:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for completefunc/omnifunc. vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 37 lines, 810 characters written:set ff& cpo+=A
/ENDTEST

















:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)
:  if a:findstart
:    return 0
:  else
:    return ['threedef', 'threeDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteThree
/^three
A^X^U^N^[:/^+++/,/^three/w! test.out
:qa!
ENDTEST

:so! Xdotest
:"Test that nothing happens if the 'completefunc' opens
:"a new window (no completion, no crash)
:so small.vim
:function! DummyCompleteOne(findstart, base)

:  :  if a:findstart

:    :    return 0

:    :  else

:    :    wincmd n

:    :    return ['onedef', 'oneDEF']

:    :  endif

:  :endfunction
:    wincmd n
:    return 0
:  else
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
:setlocal completefunc=DummyCompleteOne
/^one


+++
one
E839: Completion function changed window

Pattern not found

Press ENTER or type command to continuePress ENTER or type command to continueone
~~~~~~~~~~
[No Name] [+]                                                                   endifendfunction
:setlocal completefunc=DummyCompleteThree
/^threeA^X^U^N^[:/^+++/,/^three/w! test.out
:qa!ENDTEST+++test76.in [+]                                                                   :q!
:  else
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)
:  if a:findstart
:    return 0
:  else  return ['threedef', 'threeDEF']
:  endifendfunction:setlocal completefunc=DummyCompleteThree
/^threeA^X^U^N^[:/^+++/,/^three/w! test.out
:qa!ENDTEST+++:function! DummyCompleteTwo(findstart, base)

:  :  if a:findstart

:    :    wincmd n

:    :    return 0

:    :  else

:    :    return ['twodef', 'twoDEF']

:    :  endif

:  :endfunction
:  else
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:setlocal completefunc=DummyCompleteTwo
/^two

two
E839: Completion function changed window

E764: Option 'completefunc' is not set

Press ENTER or type command to continue~~~~~~~~~~
[No Name]                                                                       endfunction
:setlocal completefunc=DummyCompleteThree
/^threeA^X^U^N^[:/^+++/,/^three/w! test.out
:qa!ENDTEST+++two
test76.in [+]                                                                   :q!
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)
:  if a:findstart
:    return 0
:  else
:    return ['threedef', 'threeDEF']  endifendfunction:setlocal completefunc=DummyCompleteThree
/^threeA^X^U^N^[:/^+++/,/^three/w! test.out
:qa!ENDTEST+++two:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)

:  :  if a:findstart

:    :    return 0

:    :  else

:    :    return ['threedef', 'threeDEF']

:    :  endif

:  :endfunction
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:setlocal completefunc=DummyCompleteThree
/^three

three
match 1 of 22DEF
:/^+++/,/^three/w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 4 lines, 18 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test76 = test61; then \
#	  if diff test.out test76.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test76.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test76.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test77.failed test.ok test.out X* viminfo
cp test77.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test77.in
[?1h="test77.in" 30 lines, 719 charactersInserts 2 million lines with consecutive integers starting from 1
(essentially, the output of GNU's seq 1 2000000), writes them to Xtest
and writes its cksum to test.out.

We need 2 million lines to trigger a call to mf_hash_grow().  If it would mess
up the lines the checksum would differ.

cksum is part of POSIX and so should be available on most Unixes.
If it isn't available then the test will be skipped.

STARTTEST
:so small.vim
:if !executable("cksum")
: e! test.ok
: w! test.out
: qa!
:endif
:set fileformat=unix undolevels=-1
ggdG
:let i = 1
:while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhileggdd
:w! Xtest:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Inserts 2 million lines with consecutive integers starting from 1/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 288 characters written:set ff& cpo+=A
/ENDTEST





:r !cksum Xtest
:s/\s/ /g
:set fileformat&
:.w! test.out
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:if !executable("cksum")

:  : e! test.ok

:  : w! test.out

:  : qa!

:  :endif
cksum is part of POSIX and so should be available on most Unixes.
If it isn't available then the test will be skipped.

STARTTEST
:set fileformat=unix undolevels=-1
Inserts 2 million lines with consecutive integers starting from 1
(essentially, the output of GNU's seq 1 2000000), writes them to Xtest
and writes its cksum to test.out.

We need 2 million lines to trigger a call to mf_hash_grow().  If it would mess
up the lines the checksum would differ.~~
~~~
~~~
~~~~~~~~~~~~~~
--No lines in buffer--:let i = 1
:while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhil

e1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
:w! Xtest
"Xtest" [New File] 2000000 lines, 14888896 characters written:r !cksum Xtest
1
2
3678979763 14888896 Xtest
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22:s/\s/ /g
:set fileformat&
:.w! test.out
"test.out" [New File] 1 line, 26 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test77 = test61; then \
#	  if diff test.out test77.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test77.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test77.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test79.failed test.ok test.out X* viminfo
cp test79.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test79.in
[?1h="test79.in" 255 lines, 3381 charactersTest for *sub-replace-special* and *sub-replace-expression* on :substitute.
Test for submatch() on :substitue.
Test for *:s%* on :substitute.
Test for :s replacing \n with  line break.

STARTTEST
:so small.vim
ENDTEST

Results of test71:

STARTTEST
:set magic
:set cpo&
/^TEST/
j:s/A/&&/
j:s/B/\&/
j:s/C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/
j:s/D/d/
j:s/E/~/
j:s/F/\~/
j:s/G/\ugg/
j:s/H/\Uh\Eh/:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for *sub-replace-special* and *sub-replace-expression* on :substitute./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1 line, 14 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 25 lines, 347 characters written:set ff& cpo+=A
/ENDTESTj:s/L/^V^M/
j:s/M/\r/
j:s/N/\^V^M/
j:s/O/\n/
j:s/P/\b/
j:s/Q/\t/
j:s/R/\\/
j:s/S/\c/
j:s/T/^V^@/
j:s/U/\L\uuUu\l\EU/
j:s/V/\U\lVvV\u\Ev/
ENDTEST

TEST_1:
A
B
C123456789
D
E
F
G
H
I
:so! Xdotest
:set magic
:set cpo&
/^TEST/

:s/A/&&/
A

:s/B/\&/
&
:s/C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/
987654321

:s/D/d/
d
:s/E/~/
d
:s/F/\~/
~
:s/G/\ugg/
g

:s/H/\Uh\Eh/
h

:s/I/\lII/
iI

J
:s/J/\LJ\EJ/
jJ

K
:s/K/\Uk\ek/
k

lLl
:s/L/^^M/

l
mMm

:s/M/\r/

m
nNn

:s/N/\^^M/
^Mn

oOo
:s/O/\n/
^@o

pPp
:s/P/\b/
^Hp

qQq
:s/Q/\t/
       q

rRr
:s/R/\\/
\

sSs
:s/S/\c/
c

tTt
:s/T/^^@/
^@t

U
:s/U/\L\uuUu\l\EU/
uuU

V
:s/V/\U\lVvV\u\Ev/
vVVv
/^STARTTEST


STARTTEST
:set nomagic

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 25 lines, 351 characters written:set ff& cpo+=A

/ENDTESTj:s/L/^V^M/
j:s/M/\r/
j:s/N/\^V^M/
j:s/O/\n/
j:s/P/\b/
j:s/Q/\t/
j:s/R/\\/
j:s/S/\c/
j:s/T/^V^@/
j:s/U/\L\uuUu\l\EU/
j:s/V/\U\lVvV\u\Ev/
ENDTEST

TEST_2:
A
B
C123456789
D
E
F
G
H
I
:so! Xdotest
:set nomagic
:set cpo&
/^TEST/

:s/A/&&/
&&

:s/B/\&/

:s/\mC\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/
987654321

:s/D/d/
d
:s/E/~/
~
:s/F/\~/
~
:s/G/\ugg/
g

:s/H/\Uh\Eh/
h

:s/I/\lII/
iI

J
:s/J/\LJ\EJ/
jJ

K
:s/K/\Uk\ek/
k

lLl
:s/L/^^M/

l
mMm

:s/M/\r/

m
nNn

:s/N/\^^M/
^Mn

oOo
:s/O/\n/
^@o

pPp
:s/P/\b/
^Hp

qQq
:s/Q/\t/
       q

rRr
:s/R/\\/
\

sSs
:s/S/\c/
c

tTt
:s/T/^^@/
^@t

U
:s/U/\L\uuUu\l\EU/
uuU

V
:s/V/\U\lVvV\u\Ev/
vVVv
/^STARTTEST


STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 15 lines, 203 characters written:set ff& cpo+=A

/ENDTESTj:s/B/\='\\'/
j:s/C/\='^V^M'/
j:s/D/\='\^V^M'/
j:s/E/\='\\^V^M'/
j:s/F/\='\r'/
j:s/G/\='^V^@'/
j:s/H/\='\^V^@'/
j:s/I/\='\\^V^@'/
j:s/J/\='\n'/
j:s/K/\="\r"/
j:s/L/\="\n"/
ENDTEST

TEST_3:
aAa
bBb
cCc
dDd
eEe
fFf
gGg
hHh
iIi
:so! Xdotest
:set magic&
:set cpo&
/^TEST/

:s/A/\='\'/
\

:s/B/\='\\'/
\\b

:s/C/\='^^M'/
c
:s/D/\='\^^M'/
\d



:s/E/\='\\^^M'/
\\
efFf
:s/F/\='\r'/
\rf

gGg
:s/G/\='^^@'/

g
hHh

:s/H/\='\^^@'/

\h
iIi

:s/I/\='\\^^@'/

\\
i
jJj

:s/J/\='\n'/
\nj

kKk
:s/K/\="\r"/

k
lLl

:s/L/\="\n"/

l
/^STARTTEST


STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 15 lines, 611 characters written:set ff& cpo+=A

/ENDTESTj:s/B/\=substitute(submatch(0), '.', '\\', '')/
j:s/C/\=substitute(submatch(0), '.', '^V^M', '')/
j:s/D/\=substitute(submatch(0), '.', '\^V^M', '')/
j:s/E/\=substitute(submatch(0), '.', '\\^V^M', '')/
j:s/F/\=substitute(submatch(0), '.', '\r', '')/
j:s/G/\=substitute(submatch(0), '.', '^V^@', '')/
j:s/H/\=substitute(submatch(0), '.', '\^V^@', '')/
j:s/I/\=substitute(submatch(0), '.', '\\^V^@', '')/
j:s/J/\=substitute(submatch(0), '.', '\n', '')/
j:s/K/\=substitute(submatch(0), '.', "\r", '')/
j:s/L/\=substitute(submatch(0), '.', "\n", '')/
ENDTEST

TEST_4:
aAa
bBb
cCc
dDd
eEe
fFf
gGg
hHh
iIi
:so! Xdotest
:set magic&
:set cpo&
/^TEST/

:s/A/\=substitute(submatch(0), '.', '\', '')/
\

:s/B/\=substitute(submatch(0), '.', '\\', '')/
\

:s/C/\=substitute(submatch(0), '.', '^^M', '')/
c
:s/D/\=substitute(submatch(0), '.', '\^^M', '')/
d



:s/E/\=substitute(submatch(0), '.', '\\^^M', '')/
\efFf
:s/F/\=substitute(submatch(0), '.', '\r', '')/

f
gGg

:s/G/\=substitute(submatch(0), '.', '^^@', '')/

g
hHh

:s/H/\=substitute(submatch(0), '.', '\^^@', '')/

h
iIi

:s/I/\=substitute(submatch(0), '.', '\\^^@', '')/

\i
jJj

:s/J/\=substitute(submatch(0), '.', '\n', '')/

j
kKk

:s/K/\=substitute(submatch(0), '.', "\r", '')/

k
lLl

:s/L/\=substitute(submatch(0), '.', "\n", '')/

l
/^STARTTEST


STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 445 characters written:set ff& cpo+=A

/ENDTEST








:set cpo&
/^TEST/
j:s/A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=submatch(0) . submatch(9) .. submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch((3) . submatch(2) . submatch(1)/
j:s/B\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=string([submatch(0, 1), subbmatch(9, 1), submatch(8, 1), submatch(7, 1), submatch(6, 1), submatch(5, 1), subbmatch(4, 1), submatch(3, 1), submatch(2, 1), submatch(1, 1)])/
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
/^TEST/

TEST_5:
A123456789

:s/A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=submatch(0) . submatch(9) .

submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch(

3) . submatch(2) . submatch(1)/
i\
i987654321
B123456789

:s/B\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=string([submatch(0, 1), sub

match(9, 1), submatch(8, 1), submatch(7, 1), submatch(6, 1), submatch(5, 1), sub

match(4, 1), submatch(3, 1), submatch(2, 1), submatch(1, 1)])/
i
j[['B123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]
/^STARTTEST


STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 8 lines, 80 characters written:set ff& cpo+=A

/ENDTEST







/^TEST/
:set cpo+=/
j:s/A/a/
j:s/B/%/
:set cpo-=/
j:s/C/c/
j:s/D/%/
ENDTEST

:so! Xdotest
:set magic&
/^TEST/



TEST_6:
A
B


:set cpo+=/

:s/A/a/
a
:s/B/%/
a:set cpo-=/



C
D


:s/C/c/
c
:s/D/%/
%/^STARTTEST

STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 11 lines, 303 characters written:set ff& cpo+=A

/ENDTEST










:set cpo&
/^TEST_7/
j:s/A./\=submatch(0)/
j:s/B./\=submatch(0)/
j:s/C./\=strtrans(string(submatch(0, 1)))/
j:s/D.\nD/\=strtrans(string(submatch(0, 1)))/
j:s/E\_.\{-}E/\=strtrans(string(submatch(0, 1)))/
/^Q$
:s/Q[^\n]Q/\=submatch(0)."foobar"/
:" Avoid :s error breaks dotest map on Windows.
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
/^TEST_7/

TEST_7:
A^MA

:s/A./\=submatch(0)/

A
B^@B

:s/B./\=submatch(0)/

B
C^@C

:s/C./\=strtrans(string(submatch(0, 1)))/
['C^@']C

D^@
:s/D.\nD/\=strtrans(string(submatch(0, 1)))/
['D^@', 'D']

E^@
:s/E\_.\{-}E/\=strtrans(string(submatch(0, 1)))/
['E^@', '^@', '^@', '^@', '^@E']
/^Q$

Q
:s/Q[^\n]Q/\=submatch(0)."foobar"/
E486: Pattern not found: Q[^\n]Q:" Avoid :s error breaks dotest map on Windows.
/^STARTTEST



Q

STARTTEST
:function! TitleString()

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 8 lines, 177 characters written:set ff& cpo+=A

/ENDTEST







let check = 'foo' =~ 'bar'
  return ""
endfunction
:set titlestring=%{TitleString()}
:/^test_one/s/.*/\="foo\nbar"/
:/^test_two/s/.*/\="foo\nbar"/c
y
ENDTEST

:so! Xdotest
:function! TitleString()

:    let check = 'foo' =~ 'bar'

:    return ""

:  endfunction
TEST_7:
A
:set titlestring=%{TitleString()}
:/^test_one/s/.*/\="foo\nbar"/


foo
bar
:/^test_two/s/.*/\="foo\nbar"/c

test_tworeplace with \="foo\nbar" (y/n/a/q/l/^E/^Y)?
foobar


/^STARTTEST

STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 72 characters written:set ff& cpo+=A

/ENDTEST
:1;/^Results/,$wq! test.out

:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
136 fewer linesaa
c
%TEST_7:AABB['C^@']C['D^@', 'D']
['E^@', '^@', '^@', '^@', '^@E']
Q
Qfoo
bar
foobar:1;/^Results/,$wq! test.out
"test.out" [New File] 134 lines, 574 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test79 = test61; then \
#	  if diff test.out test79.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test79.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test79.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test80.failed test.ok test.out X* viminfo
cp test80.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test80.in
[?1h="test80.in" 201 lines, 6298 charactersTest for *sub-replace-special* and *sub-replace-expression* on substitute().
Test for submatch() on substitute().
Test for *:s%* on :substitute.

STARTTEST
:so small.vim
ENDTEST

TEST_1:

STARTTEST
:set magic
:set cpo&
:$put =\"\n\nTEST_1:\"
:$put =substitute('A', 'A', '&&', '')
:$put =substitute('B', 'B', '\&', '')
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\0\9\8\7\6\5\4\3\2\1', '')
:$put =substitute('D', 'D', 'd', '')
:$put =substitute('E', 'E', '~', '')
:$put =substitute('F', 'F', '\~', '')
:$put =substitute('G', 'G', '\ugg', '')
:$put =substitute('H', 'H', '\Uh\Eh', ''):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for *sub-replace-special* and *sub-replace-expression* on substitute()./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1 line, 14 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 29 lines, 1142 characters written:set ff& cpo+=A
/ENDTEST:$put =substitute('pPp', 'P', '\b', '')
:$put =substitute('qQq', 'Q', '\t', '')
:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('xXx', 'X', \"\r\", '')
:$put =substitute('Y', 'Y', '\L\uyYy\l\EY', '')
:$put =substitute('Z', 'Z', '\U\lZzZ\u\Ez', '')
/^TEST_2
ENDTEST

TEST_2:

STARTTEST
:set nomagic
:set cpo&
:$put =\"\n\nTEST_2:\"
:$put =substitute('A', 'A', '&&', '')
:$put =substitute('B', 'B', '\&', '')
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\0\9\8\7\6\5\4\3\2\1', '')
:so! Xdotest
:set magic
:set cpo&
:$put =\"\n\nTEST_1:\"
3 more lines:set cpo&
:$put =\"\n\nTEST_10:\"
:let y = substitute('123', '\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\zs.', 'a', 'g')| $put =y
:let y = substitute('123', '.\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\ze', 'a', 'g')| $put =y
:let y = substitute('123', '\ze.', 'a', 'g')| $put =y
:let y = substitute('123', '.\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\|\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y
/^TEST_11
ENDTEST

TEST_11:

STARTTEST
:/^Results/,$wq! test.out
ENDTEST

Results of test72:


TEST_1:
3 more lines:$put =substitute('A', 'A', '&&', '')

AA
:$put =substitute('B', 'B', '\&', '')

&
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)

', '\0\9\8\7\6\5\4\3\2\1', '')
:let y = substitute('123', '\zs.', 'a', 'g')| $put =y.\zs\ze', 'a', 'g') .', 'a', 'g').\ze1\|\ze', 'a', 'g')zs\|[23]', 'a', 'g')
/^TEST_11ENDTESTTEST_11:STARTTEST
:/^Results/,$wq! test.out
ENDTESTResults of test72:TEST_1:
AA&C123456789987654321
:$put =substitute('D', 'D', 'd', '')

d
:$put =substitute('E', 'E', '~', '')

~
:$put =substitute('F', 'F', '\~', '')

~
:$put =substitute('G', 'G', '\ugg', '')

Gg
:$put =substitute('H', 'H', '\Uh\Eh', '')

Hh
:$put =substitute('I', 'I', '\lII', '')

iI
:$put =substitute('J', 'J', '\LJ\EJ', '')

jJ
:$put =substitute('K', 'K', '\Uk\ek', '')

Kk
:$put =substitute('lLl', 'L', '^^M', '')

l^Ml
:$put =substitute('mMm', 'M', '\r', '')

m^Mm
:$put =substitute('nNn', 'N', '\^^M', '')

n^Mn
:$put =substitute('oOo', 'O', '\n', '')


o
o
:$put =substitute('pPp', 'P', '\b', '')

p^Hp
:$put =substitute('qQq', 'Q', '\t', '')

qq
:$put =substitute('rRr', 'R', '\\', '')

r\r
:$put =substitute('sSs', 'S', '\c', '')

scs
:$put =substitute('uUu', 'U', \"\n\", '')


u
u
:$put =substitute('vVv', 'V', \"\b\", '')

v^Hv
:$put =substitute('wWw', 'W', \"\\\", '')

w\w
:$put =substitute('xXx', 'X', \"\r\", '')

x^Mx
:$put =substitute('Y', 'Y', '\L\uyYy\l\EY', '')

YyyY
:$put =substitute('Z', 'Z', '\U\lZzZ\u\Ez', '')

zZZz
/^TEST_2
search hit BOTTOM, continuing at TOP:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('xXx', 'X', \"\r\", '')
:$put =substitute('Y', 'Y', '\L\uyYy\l\EY', '')
:$put =substitute('Z', 'Z', '\U\lZzZ\u\Ez', '')
/^TEST_2
ENDTEST

TEST_2:

STARTTEST
:set nomagic
:set cpo&
:$put =\"\n\nTEST_2:\"
:$put =substitute('A', 'A', '&&', '')
:$put =substitute('B', 'B', '\&', '')
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\0\9\8\7\6\5\4\3\2\1', '')
:$put =substitute('D', 'D', 'd', '')
:$put =substitute('E', 'E', '~', '')
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 29 lines, 1144 characters written:set ff& cpo+=A
/ENDTEST:$put =substitute('pPp', 'P', '\b', '')
:$put =substitute('qQq', 'Q', '\t', '')
:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('tTt', 'T', \"\r\", '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('X', 'X', '\L\uxXx\l\EX', '')
:$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')
/^TEST_3
ENDTEST

TEST_3:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_3:\"
:let y = substitute('aAa', 'A', '\="\\"', '')| $put =y
:let y = substitute('bBb', 'B', '\="\\\\"', '')| $put =y
:let y = substitute('cCc', 'C', '\="^V^M"', '')| $put =y
:let y = substitute('dDd', 'D', '\="\\^V^M"', '')| $put =y
:so! Xdotest
:set nomagic
:set cpo&
:$put =\"\n\nTEST_2:\"
3 more linesHh
iI
jJ
Kk
l^Ml
m^Mm
n^Mn
o
o
p^Hp
qq
r\r
scs
u
u
v^Hv
w\w
x^Mx
YyyY
zZZz


TEST_2:
3 more lines:$put =substitute('A', 'A', '&&', '')

AA
:$put =substitute('B', 'B', '\&', '')

&
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)

', '\0\9\8\7\6\5\4\3\2\1', '')
Kk
l^Ml
mm
nn
op^Hp
q       q
r\rscs
uv^Hv
w\wx^Mx
YyyY
zZZzTEST_2:
AA&C123456789987654321
:$put =substitute('D', 'D', 'd', '')

d
:$put =substitute('E', 'E', '~', '')

~
:$put =substitute('F', 'F', '\~', '')

~
:$put =substitute('G', 'G', '\ugg', '')

Gg
:$put =substitute('H', 'H', '\Uh\Eh', '')

Hh
:$put =substitute('I', 'I', '\lII', '')

iI
:$put =substitute('J', 'J', '\LJ\EJ', '')

jJ
:$put =substitute('K', 'K', '\Uk\ek', '')

Kk
:$put =substitute('lLl', 'L', '^^M', '')

l^Ml
:$put =substitute('mMm', 'M', '\r', '')

m^Mm
:$put =substitute('nNn', 'N', '\^^M', '')

n^Mn
:$put =substitute('oOo', 'O', '\n', '')


o
o
:$put =substitute('pPp', 'P', '\b', '')

p^Hp
:$put =substitute('qQq', 'Q', '\t', '')

qq
:$put =substitute('rRr', 'R', '\\', '')

r\r
:$put =substitute('sSs', 'S', '\c', '')

scs
:$put =substitute('tTt', 'T', \"\r\", '')

t^Mt
:$put =substitute('uUu', 'U', \"\n\", '')


u
u
:$put =substitute('vVv', 'V', \"\b\", '')

v^Hv
:$put =substitute('wWw', 'W', \"\\\", '')

w\w
:$put =substitute('X', 'X', '\L\uxXx\l\EX', '')

XxxX
:$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')

yYYy
/^TEST_3
search hit BOTTOM, continuing at TOP:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('tTt', 'T', \"\r\", '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('X', 'X', '\L\uxXx\l\EX', '')
:$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')
/^TEST_3
ENDTEST

TEST_3:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_3:\"
:let y = substitute('aAa', 'A', '\="\\"', '')| $put =y
:let y = substitute('bBb', 'B', '\="\\\\"', '')| $put =y
:let y = substitute('cCc', 'C', '\="^V^M"', '')| $put =y
:let y = substitute('dDd', 'D', '\="\\^V^M"', '')| $put =y
:let y = substitute('eEe', 'E', '\="\\\\^V^M"', '')     | $put =y
:let y = substitute('fFf', 'F', '\="\\r"', '')| $put =y
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 13 lines, 642 characters written:set ff& cpo+=A
/ENDTEST




:let y = substitute('jJj', 'J', '\="\\n"', '')| $put =y
:let y = substitute('kKk', 'K', '\="\r"', '')| $put =y
:let y = substitute('lLl', 'L', '\="\n"', '')| $put =y
/^TEST_4
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_3:\"
3 more linesHh
iI
jJ
Kk
l^Ml
m^Mm
n^Mn
o
o
p^Hp
qq
r\r
scs
t^Mt
u
u
v^Hv
w\w
XxxX
yYYy


TEST_3:
3 more lines:let y = substitute('aAa', 'A', '\="\\"', '')           | $put =y

a\a
:let y = substitute('bBb', 'B', '\="\\\\"', '')         | $put =y

b\\b
:let y = substitute('cCc', 'C', '\="^^M"', '')         | $put =y

c^Mc
:let y = substitute('dDd', 'D', '\="\\^^M"', '')       | $put =y

d\^Md
:let y = substitute('eEe', 'E', '\="\\\\^^M"', '')     | $put =y

e\\^Me
:let y = substitute('fFf', 'F', '\="\\r"', '')          | $put =y

f\rf
:let y = substitute('jJj', 'J', '\="\\n"', '')          | $put =y

j\nj
:let y = substitute('kKk', 'K', '\="\r"', '')           | $put =y

k^Mk
:let y = substitute('lLl', 'L', '\="\n"', '')           | $put =y


l
l
/^TEST_4
search hit BOTTOM, continuing at TOP:let y = substitute('bBb', 'B', '\="\\\\"', '')| $put =y
:let y = substitute('cCc', 'C', '\="^V^M"', '')| $put =y
:let y = substitute('dDd', 'D', '\="\\^V^M"', '')| $put =y
:let y = substitute('eEe', 'E', '\="\\\\^V^M"', '')     | $put =y
:let y = substitute('fFf', 'F', '\="\\r"', '')| $put =y
:let y = substitute('jJj', 'J', '\="\\n"', '')| $put =y
:let y = substitute('kKk', 'K', '\="\r"', '')| $put =y
:let y = substitute('lLl', 'L', '\="\n"', '')| $put =y
/^TEST_4
ENDTEST

TEST_4:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_4:\"
:let y = substitute('aAa', 'A', '\=substitute(submatch(0), ".", "\\", "")', '')        | $put =y
:let y = substitute('bBb', 'B', '\=substitute(submatch(0), ".", "\\\\", "")', ''')     | $put =y
:let y = substitute('cCc', 'C', '\=substitute(submatch(0), ".", "^V^M", "")', ''')     | $put =y
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 13 lines, 912 characters written:set ff& cpo+=A
/ENDTEST













:let y = substitute('dDd', 'D', '\=substitute(submatch(0), ".", "\\^V^M", "")',  '')   | $put =y
:let y = substitute('eEe', 'E', '\=substitute(submatch(0), ".", "\\\\^V^M", "")'', '') | $put =y
:let y = substitute('fFf', 'F', '\=substitute(submatch(0), ".", "\\r", "")', ''))      | $put =y
:let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', ''))      | $put =y
:let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')        | $put =y
:let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')        | $put =y
/^TEST_5
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_4:\"
3 more linest^Mt
u
u
v^Hv
w\w
XxxX
yYYy


TEST_3:
a\a
b\\b
c^Mc
d\^Md
e\\^Me
f\rf
j\nj
k^Mk
l
l


TEST_4:
3 more lines:let y = substitute('aAa', 'A', '\=substitute(submatch(0), ".", "\\", "")', '')

      | $put =y
u

v^Hv
w\wXxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\a
:let y = substitute('bBb', 'B', '\=substitute(submatch(0), ".", "\\\\", "")', '

')     | $put =y
u
v^Hv
w\wXxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
:let y = substitute('cCc', 'C', '\=substitute(submatch(0), ".", "^^M", "")', '')

    | $put =y
v^Hv
w\wXxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
:let y = substitute('dDd', 'D', '\=substitute(submatch(0), ".", "\\^^M", "")', '

')   | $put =y
w\w
XxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
:let y = substitute('eEe', 'E', '\=substitute(submatch(0), ".", "\\\\^^M", "")',

'') | $put =y
XxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
:let y = substitute('fFf', 'F', '\=substitute(submatch(0), ".", "\\r", "")', ''

)      | $put =y
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
f^Mf
:let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', ''

)      | $put =y
TEST_3:
a\a
b\\bc^Mc
d\^Md
e\\^Me
f\rfj\njk^Mk
llTEST_4:
a\a
b\bc^Mc
d^Md
e\^Me
ff
jj
:let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')

      | $put =y
TEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
f^Mfjk^Mk
:let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')

      | $put =y
b\\b
c^Mc
d\^Md
e\\^Me
f\rfj\njk^Mk
llTEST_4:
a\a
b\bc^Mc
d^Md
e\^Me
ff
jjk^Mk
l
l
/^TEST_5
search hit BOTTOM, continuing at TOP:let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', ''))      | $put =y
:let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')        | $put =y
:let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')        | $put =y
/^TEST_5
ENDTEST

TEST_5:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_5:\"
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submaatch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)', '')
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\=string([submatch(0, 1), submatch(9, 1), submatch(8, 1), submatch(7, 1), subbmatch(6, 1), submatch(5, 1), submatch(4, 1), submatch(3, 1), submatch(2, 1), subbmatch(1, 1)])', '')
/^TEST_6
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 6 lines, 543 characters written:set ff& cpo+=A
/ENDTEST

ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_5:\"
3 more linese\\^Me
f\rf
j\nj
k^Mk
l
l


TEST_4:
a\a
b\b
c^Mc
d^Md
e\^Me
f^Mf
j
j
k^Mk
l
l


TEST_5:
3 more lines:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)

', '\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . subm

atch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)', '')
f\rf
j\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
f^Mfjk^Mk
lTEST_5:
A123456789987654321
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)

', '\=string([submatch(0, 1), submatch(9, 1), submatch(8, 1), submatch(7, 1), su

bmatch(6, 1), submatch(5, 1), submatch(4, 1), submatch(3, 1), submatch(2, 1), su

bmatch(1, 1)])', '')
j\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
f^Mfjk^Mk
lTEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]
/^TEST_6
search hit BOTTOM, continuing at TOP:$put =\"\n\nTEST_5:\"
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submaatch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)', '')
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\=string([submatch(0, 1), submatch(9, 1), submatch(8, 1), submatch(7, 1), subbmatch(6, 1), submatch(5, 1), submatch(4, 1), submatch(3, 1), submatch(2, 1), subbmatch(1, 1)])', '')
/^TEST_6
ENDTEST

TEST_6:

STARTTEST
:set magic&
:$put =\"\n\nTEST_6:\"
:set cpo+=/
:$put =substitute('A', 'A', 'a', '')
:$put =substitute('B', 'B', '%', '')
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')
:$put =substitute('D', 'D', '%', '')
/^TEST_7
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 9 lines, 216 characters written:set ff& cpo+=A
/ENDTEST
ENDTEST


TEST_7:


:so! Xdotest
:set magic&
:$put =\"\n\nTEST_6:\"
3 more linesl


TEST_4:
a\a
b\b
c^Mc
d^Md
e\^Me
f^Mf
j
j
k^Mk
l
l


TEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]


TEST_6:
3 more lines:set cpo+=/
:$put =substitute('A', 'A', 'a', '')

a
:$put =substitute('B', 'B', '%', '')

%
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')

c
:$put =substitute('D', 'D', '%', '')

%
/^TEST_7
search hit BOTTOM, continuing at TOP:set magic&
:$put =\"\n\nTEST_6:\"
:set cpo+=/
:$put =substitute('A', 'A', 'a', '')
:$put =substitute('B', 'B', '%', '')
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')
:$put =substitute('D', 'D', '%', '')
/^TEST_7
ENDTEST

TEST_7:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
:$put =substitute('A^V^MA', 'A.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=string(submatch(0, 1))', '')
:$put =substitute('-bb', '\zeb', 'a', 'g')
:$put =substitute('-bb', '\ze', 'c', 'g')
/^TEST_8
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 9 lines, 313 characters written:set ff& cpo+=A
/ENDTEST
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
3 more linesd^Md
e\^Me
f^Mf
j
j
k^Mk
l
l


TEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]


TEST_6:
a
%
c
%


TEST_7:
3 more lines:$put =substitute('A^^MA', 'A.', '\=submatch(0)', '')

A^MA
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')


B
B
:$put =substitute(\"B\nB\", 'B.', '\=string(submatch(0, 1))', '')


['B
']B
:$put =substitute('-bb', '\zeb', 'a', 'g')

-abab
:$put =substitute('-bb', '\ze', 'c', 'g')

c-cbcbc
/^TEST_8
search hit BOTTOM, continuing at TOP:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
:$put =substitute('A^V^MA', 'A.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=string(submatch(0, 1))', '')
:$put =substitute('-bb', '\zeb', 'a', 'g')
:$put =substitute('-bb', '\ze', 'c', 'g')
/^TEST_8
ENDTEST

TEST_8:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_8:\"
:$put =',,X'
:s/\(^\|,\)\ze\(,\|X\)/\1N/g
:$put =',,Y'
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
a:$put =',,Z'
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 10 lines, 186 characters written:set ff& cpo+=A
/ENDTEST

yy/^TEST_9:
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_8:\"
3 more linesTEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]


TEST_6:
a
%
c
%


TEST_7:
A^MA
B
B
['B
']B
-abab
c-cbcbc


TEST_8:
3 more lines:$put =',,X'

,,X
:s/\(^\|,\)\ze\(,\|X\)/\1N/g
N,,NX
:$put =',,Y'

,,Y
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
,
replace with \1N (y/n/a/q/l/^E/^Y)?N,,NY

:$put =',,Z'

,,Z
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
,
replace with \1N (y/n/a/q/l/^E/^Y)?N,,Z
replace with \1N (y/n/a/q/l/^E/^Y)?,NZ

/^TEST_9:
search hit BOTTOM, continuing at TOP:set cpo&
:$put =\"\n\nTEST_8:\"
:$put =',,X'
:s/\(^\|,\)\ze\(,\|X\)/\1N/g
:$put =',,Y'
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
a:$put =',,Z'
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
yy/^TEST_9:
ENDTEST

TEST_9:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_9:\"
:$put ='xxx'
:s/x/X/gc
yyq/^TEST_10:
ENDTEST

TEST_10:
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 6 lines, 82 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_9:\"
3 more linesa
%
c
%


TEST_7:
A^MA
B
B
['B
']B
-abab
c-cbcbc


TEST_8:
N,,NX
N,,NY
N,,NZ


TEST_9:
3 more lines:$put ='xxx'

xxx
:s/x/X/gc
x
replace with X (y/n/a/q/l/^E/^Y)?Xx
replace with X (y/n/a/q/l/^E/^Y)?Xx
replace with X (y/n/a/q/l/^E/^Y)?x
/^TEST_10:
search hit BOTTOM, continuing at TOPTEST_9:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_9:\"
:$put ='xxx'
:s/x/X/gc
yyq/^TEST_10:
ENDTEST

TEST_10:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_10:\"
:let y = substitute('123', '\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\zs.', 'a', 'g')| $put =y
:let y = substitute('123', '.\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\ze', 'a', 'g')| $put =y
:let y = substitute('123', '\ze.', 'a', 'g')| $put =y
:let y = substitute('123', '.\ze', 'a', 'g')| $put =y
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 12 lines, 584 characters written:set ff& cpo+=A
/ENDTEST



:let y = substitute('123', '1\|\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y
/^TEST_11
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_10:\"
3 more linesTEST_7:
A^MA
B
B
['B
']B
-abab
c-cbcbc


TEST_8:
N,,NX
N,,NY
N,,NZ


TEST_9:
XXx


TEST_10:
3 more lines:let y = substitute('123', '\zs', 'a', 'g')             | $put =y

a1a2a3a
:let y = substitute('123', '\zs.', 'a', 'g')            | $put =y

aaa
:let y = substitute('123', '.\zs', 'a', 'g')            | $put =y

1a2a3a
:let y = substitute('123', '\ze', 'a', 'g')             | $put =y

a1a2a3a
:let y = substitute('123', '\ze.', 'a', 'g')            | $put =y

a1a2a3
:let y = substitute('123', '.\ze', 'a', 'g')            | $put =y

aaa
:let y = substitute('123', '1\|\ze', 'a', 'g')          | $put =y

aa2a3a
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y

1aaa
/^TEST_11
search hit BOTTOM, continuing at TOP:let y = substitute('123', '\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\zs.', 'a', 'g')| $put =y
:let y = substitute('123', '.\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\ze', 'a', 'g')| $put =y
:let y = substitute('123', '\ze.', 'a', 'g')| $put =y
:let y = substitute('123', '.\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\|\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y
/^TEST_11
ENDTEST

TEST_11:

STARTTEST
:/^Results/,$wq! test.out
ENDTEST

Results of test72:


TEST_1:
AA
&
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 1 line, 26 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:/^Results/,$wq! test.out
"test.out" [New File] 131 lines, 617 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test80 = test61; then \
#	  if diff test.out test80.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test80.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test80.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test82.failed test.ok test.out X* viminfo
cp test82.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test82.in
[?1h="test82.in" 103 lines, 3166 charactersTests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)
Also test "g~ap".

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, aa:b, a:expected))
:  else
:    let b:passed += 1
:  endif
:endfunction
:
:function! Chk(a, b, result):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 97 lines, 3055 characters written:set ff& cpo+=A
/ENDTEST: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%.22X', n)) | endfor
:for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ\xc2\x%.2XuVw', n)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ\xc2\x%.2XuVw', n)) | endfor
:call append(0, printf('%d checks passed', b:passed))
:"
:" test that g~ap changes one paragraph only.
:new
iabcd

defg^[gg0g~ap:let lns = getline(1,3)
:q!
:call append(line('$'), lns)
:"
:wq! test.out
ENDTEST

~
~



:so! Xdotest
:so small.vim
:if !has("multi_byte")

:  : e! test.ok

:  : w! test.out

:  : qa!

:  :endif
: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%.22X', n)) | endfor


:set enc=utf8
: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%.22X', n)) | endfor
:for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ\xc2\x%.2XuVw', n)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ\xc2\x%.2XuVw', n)) | endfor
:call append(0, printf('%d checks passed', b:passed))
:"
:" test that g~ap changes one paragraph only.
:new
iabcd

defg^[gg0g~ap:let lns = getline(1,3)
:q!
:call append(line('$'), lns)
:"
:wq! test.out
ENDTEST

~
~Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)
Also test "g~ap".

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, aa:b, a:expected))
:  else
:    let b:passed += 1
:  endif
:endfunction
:
:function! Chk(a, b, result)~
~~~~~~~~~~
~~~~~~~~~
~~
--No lines in buffer--:::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\x

aakk\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 cha

racter
: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('Xy

Z\xc2\x%.2XuVw', n)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('Xy

Z\xc2\x%.2XuVw', n)) | endfor
:call append(0, printf('%d checks passed', b:passed))
3732 checks passed:"
:" test that g~ap changes one paragraph only.
:new
~[No Name]                                                                       3732 checks passedtest82.in [+]                                                                   abcddefg[+]ABCD
:let lns = getline(1,3)
:q!
3732 checks passed~~~
~~:call append(line('$'), lns)
ABCDdefg:"
:wq! test.out
"test.out" [New File] 5 lines, 31 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test82 = test61; then \
#	  if diff test.out test82.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test82.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test82.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test84.failed test.ok test.out X* viminfo
cp test84.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test84.in
[?1h="test84.in" 35 lines, 786 charactersTests 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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for curswant not changing when setting an option/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 25 lines, 637 characters written:set ff& cpo+=A
/ENDTEST





:put =map(copy(result), 'join(v:val, '' '')')
:1 delete _
:write test.out
:
:qall!
ENDTEST

:so! Xdotest
:so small.vim
:/^start target options$/+1,/^end target options$/-1 yank
3 lines yanked: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
:  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
~~~~~
~~~~~
[No Name]                                                                       endfornew
:put =map(copy(result), 'join(v:val, '' '')')
:1 delete _write test.outqall!
ENDTESTtest84.in                                                                       :put =['1234567890', '12345']
1234567890
12345[+]:1 delete _

~:let result = []
:for option_name in target_option_names

:  :  call add(result, TestCurswant(option_name))

:  :endfor
1234567890
12345::new
~
~
~
~
~
~
[No Name]                                                                       1234567890
12345
~
~
~
~
~
[No Name] [+]                                                                   :1 delete _
:write test.out
:
:qall!
ENDTEST

test84.in                                                                       :put =map(copy(result), 'join(v:val, '' '')')
3 more linestabstop 7 4
timeoutlen 7 7
ttimeoutlen 7 7[+]:1 delete _

~:write test.out
"test.out" [New File] 3 lines, 43 characters writtentest.out     ::qall!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test84 = test61; then \
#	  if diff test.out test84.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test84.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test84.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test88.failed test.ok test.out X* viminfo
cp test88.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test88.in
[?1h="test88.in" 99 lines, 1449 charactersvim: set ft=vim

Tests for correct display (cursor column position) with +conceal and
tabulators.

STARTTEST
:so small.vim
:if !has('conceal')
   e! test.ok
   wq! test.out
:endif
:" Conceal settings.
:set conceallevel=2
:set concealcursor=nc
:syntax match test /|/ conceal
:" Save current cursor position. Only works in <expr> mode, can't be used
:" with :normal because it moves the cursor to the command line. Thanks to ZyX
:" <zyx.vim@gmail.com> for the idea to use an <expr> mapping.
:let positions = []
:nnoremap <expr> GG ":let positions += ['".screenrow().":".screencol()."']\n"
:" Start test.
/^start:
:normal ztj:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
vim: set ft=vim/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 82 lines, 1216 characters written:set ff& cpo+=A
/ENDTEST:normal W
GGk
:normal W
GGk
:normal W
GGk
:normal $
GGk
:" Display result.
:call append('$', 'end:')
:call append('$', positions)
:/^end/,$wq! test.out
ENDTEST

start:
.concealed.     text
|concealed|     text.concealed.     text|concealed|     text

.a.     .b.     .c.     .d.
|a|     |b|     |c|     |d|
:so! Xdotest
:so small.vim
:if !has('conceal')

:     e! test.ok

:     wq! test.out

:  :endif
:normal W
GGk
:normal W:" Conceal settings.
:set conceallevel=2
:set concealcursor=nc
:syntax match test /|/ conceal
concealed  concealed  


a       b       c       d:" Save current cursor position. Only works in <expr> mode, can't be used
:" with :normal because it moves the cursor to the command line. Thanks to ZyX
:" <zyx.vim@gmail.com> for the idea to use an <expr> mapping.
:let positions = []
:nnoremap <expr> GG ":let positions += ['".screenrow().":".screencol()."']\n"
:" Start test.
/^start:
:normal ztj














~
~
~
~
~
~
~
~
~
~
~
~
~
~:let positions += ['2:1']
:" We should end up in the same column when running these commands on the two
:" lines.
:normal ft
:let positions += ['2:17']
:normal $
:let positions += ['2:20']
:normal 0j
:let positions += ['3:1']
:normal ft
:let positions += ['3:17']
:normal $
:let positions += ['3:20']
:normal 0j0j
:let positions += ['5:8']
:" Same for next test block.
:normal ft
:let positions += ['5:25']
:normal $
:let positions += ['5:28']
:normal 0j
:let positions += ['6:8']
:normal ft
:let positions += ['6:25']
:normal $
:let positions += ['6:28']
:normal 0j0j
:let positions += ['8:1']
:" And check W with multiple tabs and conceals in a line.
:normal W
:let positions += ['8:9']
:normal W
:let positions += ['8:17']
:normal W
:let positions += ['8:25']
:normal $
:let positions += ['8:27']
:normal 0j
:let positions += ['9:1']
:normal W
:let positions += ['9:9']
:normal W
:let positions += ['9:17']
:normal W
:let positions += ['9:25']
:normal $
:let positions += ['9:26']
:set lbr
:normal $
:let positions += ['9:26']
:set list listchars=tab:>-
>------

>------->----
>------->------>----.b.>----.c.>----
a>------b>------c>------:normal 0
:let positions += ['9:1']
:normal W
:let positions += ['9:9']
:normal W
:let positions += ['9:17']
:normal W
:let positions += ['9:25']
:normal $
:let positions += ['9:26']
:" Display result.
:call append('$', 'end:')
end::call append('$', positions)
2:1
2:17
2:20
3:1
3:17
3:20
5:8
5:25
5:28
6:8
6:25
6:28
8:1:/^end/,$wq! test.out
"test.out" [New File] 29 lines, 135 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test88 = test61; then \
#	  if diff test.out test88.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test88.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test88.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test90.failed test.ok test.out X* viminfo
cp test90.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test90.in
[?1h="test90.in" 53 lines, 1204 charactersTests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :

STARTTEST
:so small.vim
:if !has('cryptv') || !exists('*sha256')
   e! test.ok
   wq! test.out
:endif
:"
:let testcase='test for empty string: '
:if sha256("") ==# 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b78522b855'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:let testcase='test for 1 char: '
:if sha256("a") ==# 'ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afeee48bb'
: let res='ok'
:else:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 47 lines, 1114 characters written:set ff& cpo+=A
/ENDTEST:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc39ed110ca776'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:let testcase='test for contains non-ascii char: '
:if sha256("\xde\xad\xbe\xef") ==# '5f78c33274e43fa9de5659265c1d917e25c03722dcb00b8d27db8d5feaa813953'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:/^start:/,$wq! test.out
ENDTEST

start:


:so! Xdotest
:so small.vim
:if !has('cryptv') || !exists('*sha256')

:     e! test.ok

:     wq! test.out

:  :endif
:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc3

:"
:let testcase='test for empty string: '
:if sha256("") ==# 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b785

2b855'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc39ed110ca776'

:$put =testcase.res

test for empty string: ok
:"
:let testcase='test for 1 char: '
:if sha256("a") ==# 'ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785af

ee48bb'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc39ed110ca776'
: let res='ok'
:$put =testcase.res

test for 1 char: ok
:"
:let testcase='test for 3 chars: '
:if sha256("abc") ==# 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61

f20015ad'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc39ed110ca776'
: let res='ok'
:else
:$put =testcase.res


test for 3 chars: ok
~

:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8c

c39ed110ca776'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
: let res='ok'
:else
: let res='ng'
:endif

:$put =testcase.res
test for contains meta char: ok
:"
:let testcase='test for contains non-ascii char: '
:if sha256("\xde\xad\xbe\xef") ==# '5f78c33274e43fa9de5659265c1d917e25c03722dcb

0b8d27db8d5feaa813953'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res

test for contains non-ascii char: ok
:"
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 6 lines, 143 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test90 = test61; then \
#	  if diff test.out test90.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test90.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test90.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test91.failed test.ok test.out X* viminfo
cp test91.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test91.in
[?1h="test91.in" 116 lines, 3240 charactersTests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar().
vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Use strings to test for memory leaks.
:" First, check that in an empty window, gettabvar() returns the correct value
:let t:testvar='abcd'
:$put =string(gettabvar(1,'testvar'))
:$put =string(gettabvar(1,'testvar'))
:" Test for getbufvar()
:let b:var_num = '1234'
:let def_num = '5678'
:$put =string(getbufvar(1, 'var_num'))
:$put =string(getbufvar(1, 'var_num', def_num))
:$put =string(getbufvar(1, ''))
:$put =string(getbufvar(1, '', def_num))
:unlet b:var_num
:$put =string(getbufvar(1, 'var_num', def_num))
:$put =string(getbufvar(1, ''))
:$put =string(getbufvar(1, '', def_num)):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar()./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 109 lines, 3127 characters written:set ff& cpo+=A
/ENDTEST:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:tabnext
:3wincmd w
:unlet w:var_dict
:tabrewind
:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:$put =string(gettabwinvar(2, 9, ''))
:$put =string(gettabwinvar(2, 9, '', def_dict))
:$put =string(gettabwinvar(9, 3, ''))
:$put =string(gettabwinvar(9, 3, '', def_dict))
:unlet def_dict
:$put =string(gettabwinvar(2, 3, '&nux'))
:$put =string(gettabwinvar(2, 3, '&nux', 1))
:tabonly
:"
:/^start/,$wq! test.out
ENDTEST

start:


:so! Xdotest
:so small.vim
:so mbyte.vim
:"
:" Use strings to test for memory leaks.
:" First, check that in an empty window, gettabvar() returns the correct value
:let t:testvar='abcd'
:$put =string(gettabvar(1,'testvar'))

'abcd'
:$put =string(gettabvar(1,'testvar'))

'abcd'
:" Test for getbufvar()
:let b:var_num = '1234'
:let def_num = '5678'
:$put =string(getbufvar(1, 'var_num'))

'1234'
:$put =string(getbufvar(1, 'var_num', def_num))

'1234'
:$put =string(getbufvar(1, ''))

{'var_num': '1234'}
:$put =string(getbufvar(1, '', def_num))

{'var_num': '1234'}
:unlet b:var_num
:$put =string(getbufvar(1, 'var_num', def_num))

'5678'
:$put =string(getbufvar(1, ''))

{}
:$put =string(getbufvar(1, '', def_num))

{}
:$put =string(getbufvar(9, ''))

''
:$put =string(getbufvar(9, '', def_num))

'5678'
:unlet def_num
:$put =string(getbufvar(1, '&autoindent'))

0
:$put =string(getbufvar(1, '&autoindent', 1))

0
:"
:" Open new window with forced option values
:set fileformats=unix,dos
:new ++ff=dos ++bin ++enc=iso-8859-2
~~~~~~~
~~~
[No Name]                                                                       {'var_num': '1234'}

'5678'{}''
'5678'
0test91.in [+]                                                                   :let otherff = getbufvar(bufnr('%'), '&fileformat')
:let otherbin = getbufvar(bufnr('%'), '&bin')
:let otherfenc = getbufvar(bufnr('%'), '&fenc')
:close
:$put =string(gettabwinvar(9, 3, '', def_dict))
:unlet def_dict
:$put =string(gettabwinvar(2, 3, '&nux'))
:$put =string(gettabwinvar(2, 3, '&nux', 1))
:tabonly
:"
:/^start/,$wq! test.out
ENDTESTstart:
'abcd'
'abcd''1234'{'var_num': '1234'}
'5678'

{}
'''5678'

0:$put =otherff

dos
:$put =string(otherbin)

1
:$put =otherfenc

iso-8859-2
:unlet otherff otherbin otherfenc
:" test for getwinvar()
:let w:var_str = "Dance"
:let def_str = "Chance"
:$put =string(getwinvar(1, 'var_str'))

'Dance'
:$put =string(getwinvar(1, 'var_str', def_str))

'Dance'
:$put =string(getwinvar(1, ''))

{'var_str': 'Dance'}
:$put =string(getwinvar(1, '', def_str))

{'var_str': 'Dance'}
:unlet w:var_str
:$put =string(getwinvar(1, 'var_str', def_str))

'Chance'
:$put =string(getwinvar(1, ''))

{}
:$put =string(getwinvar(1, '', def_str))

{}
:$put =string(getwinvar(9, ''))

''
:$put =string(getwinvar(9, '', def_str))

'Chance'
:$put =string(getwinvar(1, '&nu'))

0
:$put =string(getwinvar(1, '&nu',  1))

0
:unlet def_str
:"
:" test for gettabvar()
:tabnew
 + test91.in | [No Name] _______________________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:tabnew
 + test91.in | [No Name] | [No Name] ___________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:let t:var_list = [1, 2, 3]
:let t:other = 777
:let def_list = [4, 5, 6, 7]
:tabrewind
 + test91.in | [No Name] | [No Name] ___________________________________________X{'var_num': '1234'}
'5678'
{}
{}
''
'5678'
0
0
dos
1
iso-8859-2
'Dance'
'Dance'
{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
:$put =string(gettabvar(3, 'var_list'))

[1, 2, 3]
:$put =string(gettabvar(3, 'var_list', def_list))

[1, 2, 3]
:$put =string(gettabvar(3, ''))

{'var_list': [1, 2, 3], 'other': 777}
:$put =string(gettabvar(3, '', def_list))

{'var_list': [1, 2, 3], 'other': 777}
:tablast
 + test91.in | [No Name] | [No Name] ___________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:unlet t:var_list
:tabrewind
 + test91.in | [No Name] | [No Name] ___________________________________________X''
'5678'
0
0
dos
1
iso-8859-2
'Dance'
'Dance'
{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
[1, 2, 3]
[1, 2, 3]
{'var_list': [1, 2, 3], 'other': 777}
{'var_list': [1, 2, 3], 'other': 777}

:$put =string(gettabvar(3, 'var_list', def_list))

[4, 5, 6, 7]
:$put =string(gettabvar(9, ''))

''
:$put =string(gettabvar(9, '', def_list))

[4, 5, 6, 7]
:$put =string(gettabvar(3, '&nu'))

''
:$put =string(gettabvar(3, '&nu', def_list))

[4, 5, 6, 7]
:unlet def_list
:tabonly
dos:"
:" test for gettabwinvar()
:tabnew
 + test91.in | [No Name] _______________________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:tabnew
 + test91.in | [No Name] | [No Name] ___________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:tabprev
 + test91.in | [No Name] | [No Name] ___________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:split
2 [No Name] | [No Name] _X[No Name]                                                                       [No Name]                                                                       :split
 + test91.in | 3 [No Name] | [No Name] _________________________________________X~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :wincmd w
[No Name]                                                                       [No Name]                                                                       _X:vert split
4_X||||||                                       
~                                       
~                                       
~                                       
~                                       ~~~~~[No Name]                              :wincmd w
[No Name]                                [No Name]                              _X:let w:var_dict = {'dict': 'tabwin'}
:let def_dict = {'dict2': 'newval'}
:wincmd b
[No Name]                              [No Name]                                                                       _X:tabrewind
 + test91.in | 4 [No Name] | [No Name] _________________________________________X1
iso-8859-2
'Dance'
'Dance'
{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
[1, 2, 3]
[1, 2, 3]
{'var_list': [1, 2, 3], 'other': 777}
{'var_list': [1, 2, 3], 'other': 777}
[4, 5, 6, 7]
''
[4, 5, 6, 7]
''
[4, 5, 6, 7]

:$put =string(gettabwinvar(2, 3, 'var_dict'))

{'dict': 'tabwin'}
:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))

{'dict': 'tabwin'}
:$put =string(gettabwinvar(2, 3, ''))

{'var_dict': {'dict': 'tabwin'}}
:$put =string(gettabwinvar(2, 3, '', def_dict))

{'var_dict': {'dict': 'tabwin'}}
:tabnext
 + test91.in | 4 [No Name] | [No Name] _________________________________________X~
~
~
~
~
~
[No Name]                                                                       ||||||~                                       
~                                       
~                                       
~                                       
~                                       
[No Name]                                ~~~~~[No Name]                              ~
~
~
~
~
[No Name]                                                                       :3wincmd w
[No Name]                              [No Name]                                                                       _X:unlet w:var_dict
:tabrewind
 + test91.in | 4 [No Name] | [No Name] _________________________________________X{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
[1, 2, 3]
[1, 2, 3]
{'var_list': [1, 2, 3], 'other': 777}
{'var_list': [1, 2, 3], 'other': 777}
[4, 5, 6, 7]
''
[4, 5, 6, 7]
''
[4, 5, 6, 7]
{'dict': 'tabwin'}
{'dict': 'tabwin'}
{'var_dict': {'dict': 'tabwin'}}
{'var_dict': {'dict': 'tabwin'}}

:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))

{'dict2': 'newval'}
:$put =string(gettabwinvar(2, 3, ''))

{}
:$put =string(gettabwinvar(2, 3, '', def_dict))

{}
:$put =string(gettabwinvar(2, 9, ''))

''
:$put =string(gettabwinvar(2, 9, '', def_dict))

{'dict2': 'newval'}
:$put =string(gettabwinvar(9, 3, ''))

''
:$put =string(gettabwinvar(9, 3, '', def_dict))

{'dict2': 'newval'}
:unlet def_dict
:$put =string(gettabwinvar(2, 3, '&nux'))

''
:$put =string(gettabwinvar(2, 3, '&nux', 1))

1
:tabonly
0:"
:/^start/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 50 lines, 530 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test91 = test61; then \
#	  if diff test.out test91.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test91.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test91.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test92.failed test.ok test.out X* viminfo
cp test92.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test92.in
[?1h="test92.in" 48 lines, 852 charactersvim: set ft=vim fenc=utf-8:

Tests if :mksession saves cursor columns correctly in presence of tab and
multibyte characters when fileencoding=utf-8.

STARTTEST
:so mbyte.vim
:if !has('mksession')
:  e! test.ok
:  wq! test.out
:endif
:set sessionoptions=buffers splitbelow fileencoding=utf-8
/^start:
:vsplit
j16|:split
j16|:split
j16|:split
j8|:split
j8|:split
j16|:split
j16|:split
j16|:wincmd l
/^start::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
vim: set ft=vim fenc=utf-8:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 31 lines, 467 characters written:set ff& cpo+=A
/ENDTESTj016|3zl:split
j016|3zl:split
j08|3zl:split
j08|3zl:split
j016|3zl:split
j016|3zl:split
j016|3zl:split
:mksession! test.out
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!
ENDTEST

start:
no multibyte chAracterone leaDing tab
    four leadinG spaces
twoconsecutive tabs
two     tabs    in one line
:so! Xdotest
:so mbyte.vim
:if !has('mksession')

:  :  e! test.ok

:  :  wq! test.out

:  :endif
j016|3zl:split
j016|3zl:split
j08|3zl:split:set sessionoptions=buffers splitbelow fileencoding=utf-8
/^start:
:vsplit
|
j08|3zl:split ||
j016|3zl:split|||
:mksession! test.out|
:new test.out       |
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d  |
:w! test.out                            |
:qa!        |
ENDTEST|
       |
start:|
no multibyte chAracter|
        one leaDing tab|
    four leadinG spaces|
two             consecutive tabs|tabs    in one line     |
:split
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out 
:qa!         
ENDTEST       
              
start:        
no multibyte chAracter
        one leaDing tab
    four leadinG spaces               
two             consecutive tabs
test92.in [+]                           
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!                  
ENDTEST                
                       
start:                
no multibyte chAracter     
        one leaDing tab    
    four leadinG spaces               
two             consecutive tabs        :split
:qa!|
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
:w! test.out|
:qa!|
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
ENDTEST                                 
                                        
start:                                  
no multibyte chAracter                  
        one leaDing tab                 
                                        
    four leadinG spaces

:split
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|

:split
ENDTEST||
start:|
no multibyte chAracter|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
two     tabs    in one line|

:split
|
start:|
no multibyte chAracter|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |
test92.in [+]                            !TESTrt:multibyte chAracterone leaDing tabfour leadinG spacestest92.in [+]                          TESTrt:multibyte chAracterone leaDing tabfour leadinG spacestest92.in [+]                          test.out!TESTrt:multibyte chAracterone leaDing tabtest92.in [+]                          !                                      TEST                                                                          rt:                                    multibyte chAracter                         one leaDing tab                                                          four leadinG spaces:qa!ENDTESTstart:no multibyte chAracter   one leaDing tab   four leadinG spaces!TESrt:multibyte chAracterone leaDing tabfour leadinG spaces

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |
test92.in [+]                            TESTrt:multibyte chAracterone leaDing tabtest92.in [+]                          TESTrt:multibyte chAracterone leaDing tabtest92.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacestest92.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacesconsecutive tabstest92.in [+]                          start:no multibyte chAracter   one leaDing tab   four leadinG spacestwo   consecutive tabsrt:multibyte chAracterone leaDing tabfour leadinG spaces   consecutive tabs

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |
test92.in [+]                            TESTrt:multibyte chAractertest92.in [+]                          rt:multibyte chAracterone leaDing tabtest92.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacestest92.in [+]                          one leaDing tabfour leadinG spacesconsecutive tabstest92.in [+]                          one leaDing tabfour leadinG spacesconsecutive tabstabs    in one linetest92.in [+]                             one leaDing tab   four leadinG spacestwo   consecutive tabstwo     tabs    in one lineone leaDing tabfour leadinG spaces   consecutive tabs     tabs    in one line

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:mksession! test.out
:new test.out
"test.out" 282 lines, 5831 charactersstart:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
256 fewer lines  normal! 016|[+]:w! test.out
"test.out" 26 lines, 611 characters written   :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test92 = test61; then \
#	  if diff test.out test92.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test92.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test92.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test93.failed test.ok test.out X* viminfo
cp test93.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test93.in
[?1h="test93.in" 48 lines, 843 charactersvim: set ft=vim fenc=latin1:

Tests if :mksession saves cursor columns correctly in presence of tab and
multibyte characters when fileencoding=latin1.

STARTTEST
:so mbyte.vim
:if !has('mksession')
:  e! test.ok
:  wq! test.out
:endif
:set sessionoptions=buffers splitbelow fileencoding=latin1
/^start:
:vsplit
j16|:split
j16|:split
j16|:split
j8|:split
j8|:split
j16|:split
j16|:split
j16|:wincmd l
/^start::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
vim: set ft=vim fenc=latin1:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 31 lines, 468 characters written:set ff& cpo+=A
/ENDTESTj016|3zl:split
j016|3zl:split
j08|3zl:split
j08|3zl:split
j016|3zl:split
j016|3zl:split
j016|3zl:split
:mksession! test.out
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!
ENDTEST

start:
no multibyte chAracterone leaDing tab
    four leadinG spaces
twoconsecutive tabs
two     tabs    in one line
:so! Xdotest
:so mbyte.vim
:if !has('mksession')

:  :  e! test.ok

:  :  wq! test.out

:  :endif
j016|3zl:split
j016|3zl:split
j08|3zl:split:set sessionoptions=buffers splitbelow fileencoding=latin1
/^start:
:vsplit
|
j08|3zl:split ||
j016|3zl:split|||
:mksession! test.out|
:new test.out       |
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d  |
:w! test.out                            |
:qa!        |
ENDTEST|
       |
start:|
no multibyte chAracter|
        one leaDing tab|
    four leadinG spaces|
two             consecutive tabs|tabs    in one line     |
:split
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out 
:qa!         
ENDTEST       
              
start:        
no multibyte chAracter
        one leaDing tab
    four leadinG spaces               
two             consecutive tabs
test93.in [+]                           
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!                  
ENDTEST                
                       
start:                
no multibyte chAracter     
        one leaDing tab 
    four leadinG spaces       
two             consecutive tab:split
:qa!|
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
:w! test.out|
:qa!|
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
ENDTEST                                 
                                        
start:                                  
no multibyte chAracter                  
        one leaDing tab                 
                                        
    four leadinG spaces

:split
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|

:split
ENDTEST||
start:|
no multibyte chAracter|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
two     tabs    in one line|

:split
|
start:|
no multibyte chAracter|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |
test93.in [+]                            !TESTrt:multibyte chAracterone leaDing tabfour leadinG spacestest93.in [+]                          TESTrt:multibyte chAracterone leaDing tabfour leadinG spacestest93.in [+]                          test.out!TESTrt:multibyte chAracterone leaDing tabtest93.in [+]                          !                                      TEST                                                                          rt:                                    multibyte chAracter                         one leaDing tab                                                          four leadinG spaces:qa!ENDTESTstart:no multibyte chAracter   one leaDing tab   four leadinG spaces!TESrt:multibyte chAracterone leaDing tabfour leadinG spaces

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |
test93.in [+]                            TESTrt:multibyte chAracterone leaDing tabtest93.in [+]                          TESTrt:multibyte chAracterone leaDing tabtest93.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacestest93.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacesconsecutive tabstest93.in [+]                          start:no multibyte chAracter   one leaDing tab   four leadinG spacestwo   consecutive tabsrt:multibyte chAracterone leaDing tabfour leadinG spaces   consecutive tabs

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |
test93.in [+]                            TESTrt:multibyte chAractertest93.in [+]                          rt:multibyte chAracterone leaDing tabtest93.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacestest93.in [+]                          one leaDing tabfour leadinG spacesconsecutive tabstest93.in [+]                          one leaDing tabfour leadinG spacesconsecutive tabstabs    in one linetest93.in [+]                             one leaDing tab   four leadinG spacestwo   consecutive tabstwo     tabs    in one lineone leaDing tabfour leadinG spaces   consecutive tabs     tabs    in one line

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:mksession! test.out
:new test.out
"test.out" 282 lines, 5831 charactersstart:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
256 fewer lines  normal! 016|[+]:w! test.out
"test.out" 26 lines, 611 characters written   :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test93 = test61; then \
#	  if diff test.out test93.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test93.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test93.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test94.failed test.ok test.out X* viminfo
cp test94.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test94.in
[?1h="test94.in" 256 lines, 4824 charactersTest for Visual mode and operators

Tests for the two kinds of operations: Those executed with Visual mode
followed by an operator and those executed via Operator-pending mode. Also
part of the test are mappings, counts, and repetition with the . command.

Test cases:
- Visual modes (v V CTRL-V) followed by an operator; count; repeating
- Visual mode maps; count; repeating
  - Simple
  - With an Ex command (custom text object)
- Operator-pending mode maps
  - Simple
  - With Ex command moving the cursor
  - With Ex command and Visual selection (custom text object)
- Patch 7.3.879: Properly abort Ex command in Operator-pending mode

STARTTEST
:so small.vim
:set enc=utf-8 nocp viminfo+=nviminfo
:
:" User functions
:function MoveToCap():set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for Visual mode and operators/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 211 lines, 3837 characters written:set ff& cpo+=A
/ENDTESTkv3lyjv3lpgvcxxx^[
:$put ='---'
:
:$put =''
:$put ='gv in exclusive select mode without operation'
:$put ='zzz '
:set selection=exclusive
0v3l^[gvcxxx^[
:$put ='---'
:/^start:/+2,$w! test.out
:q!
ENDTEST

start:

apple banana cherry

line 1 line 1
line 2 line 2
line 3 line 3
line 4 line 4
line 5 line 5
line 6 line 6
:so! Xdotest
:so small.vim
:set enc=utf-8 nocp viminfo+=nviminfo
kv3lyjv3lpgvcxxx^[
:$put ='---'
:
:$put =''
:$put ='gv in exclusive select mode without operation'
:$put ='zzz '
:set selection=exclusive
0v3l^[gvcxxx^[
:$put ='---'
:/^start:/+2,$w! test.out
:q!
ENDTEST

start:

apple banana cherry

line 1 line 1
line 2 line 2
line 3 line 3
line 4 line 4
line 5 line 5
line 6 line 6::" User functions
:function MoveToCap()

:  :  call search('\u', 'W')

:  :endfunction
kv3lyjv3lpgvcxxx^[
:$put ='---':function SelectInCaps()

:  :  let [line1, col1] = searchpos('\u', 'bcnW')

:  :  let [line2, col2] = searchpos('.\u', 'nW')

:  :  call setpos("'<", [0, line1, col1, 0])

:  :  call setpos("'>", [0, line2, col2, 0])

:  :  normal! gv

:  :endfunction
kv3lyjv3lpgvcxxx^[
:$put ='---'
:
:$put =''
:$put ='gv in exclusive select mode without operation'
:$put ='zzz '::" Visual modes followed by operator
/^apple
a-- VISUAL --ple banana cherry banana cherry banan-- VISUAL --
a  cherryy:/^line 1
line 1 line 1 -- VISUAL LINE --INSERT --newline-- INSERT --newline
line 3 line 3 
line 4 line 4 


-- VISUAL LINE --line 5 line 5line 6 line 6xxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxx:/^xxxx



-- VISUAL BLOCK --x
x
xINSERT --  
   


-- INSERT --  
     
xxxx
    xxxx
xxxxxxxx
xxxxxxxxxxxxx
-- VISUAL BLOCK --
-- INSERT ------
    ----
xxxx----
xxxx------- INSERT ------------------:::" Visual mode maps (movement and text object)
:vnoremap W /\u/s-1<CR>
:vnoremap iW :<C-U>call SelectInCaps()<CR>
/^Kiwi


KiwiRaspberryDateWatermelonPeach
-- VISUAL --/\u/s-1
Kiw
-- INSERT --NoRaspberryDateWatermelonPeacho
-- INSERT --NoberryDateWatermelonPeachoberryDateWat
-- VISUAL --rmelonPeachach
:/^Jambu

JambuRambutanBananaTangerineMangoJa
-- VISUAL --:'<,'>call SelectInCaps()
Jamb
-- INSERT ---RambutanBananaTangerineMango-
-- INSERT ---tanBananaTangerineMango-tanBanana
-- VISUAL --
--angerineMangoago
:::" Operator-pending mode maps (movement and text object)
:onoremap W /\u/<CR>
:onoremap <Leader>W :<C-U>call MoveToCap()<CR>
:onoremap iW :<C-U>call SelectInCaps()<CR>
/^Pineapple


PineappleQuinceLoganberryOrangeGrapefruitKiwiZ
/\u/
-QuinceLoganberryOrangeGrapefruitKiwiZ-
/\u/
-- INSERT ---LoganberryOrangeGrapefruitKiwiZ-
/\u/
-- INSERT ---GrapefruitKiwiZ-
/\u/
-- INSERT ---Z
:/^Juniper

JuniperDurianZ
:call MoveToCap()
Whavcre
:call MoveToCap()
Qhevna:/^Lemon

LemonNectarineZ
:call SelectInCaps()
LemonLemonNectarineZ
Lemon:call SelectInCaps()
NewNectarineZwNecta
:call SelectInCaps()
wZ
:::" Patch 7.3.879: Properly abort Operator-pending mode for "dv:<Esc>" etc.
/^zzzz


zzzz
:::set noma | let v:errmsg = ''
:E21: Cannot make changes, 'modifiable' is off:set ma | put = v:errmsg =~# '^E21' ? 'ok' : 'failed'

ok
:
:
:set noma | let v:errmsg = ''
:
:set ma | put = v:errmsg =~# '^E21' ? 'failed' : 'ok'

ok
::$put =''


:$put ='characterwise visual mode: replace last line'

characterwise visual mode: replace last line
:$put ='a'

a
:let @" = 'x'
:let v:errmsg = ''

-- VISUAL --ax
:$put ='---'

---
:$put ='v:errmsg='.v:errmsg

v:errmsg=
::$put =''


:$put ='characterwise visual mode: delete middle line'

characterwise visual mode: delete middle line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c


-- VISUAL --ab
c
~


:$put ='---'
---
::$put =''


:$put ='characterwise visual mode: delete middle two line'

characterwise visual mode: delete middle two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c


-- VISUAL --a 
bc~
~


:$put ='---'
---
::$put =''
:$put ='characterwise visual mode: delete last line'

characterwise visual mode: delete last line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c
-- VISUAL --c
:$put ='---'

---
::$put =''


:$put ='characterwise visual mode: delete last two line'

characterwise visual mode: delete last two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c

-- VISUAL --b 
c~

:$put ='---'
---
::" Select mode maps
:snoremap <lt>End> <End>
:snoremap <lt>Down> <Down>
:snoremap <lt>Del> <Del>
::$put =''


:$put ='characterwise select mode: delete middle line'

characterwise select mode: delete middle line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c


-- SELECT --ab
c
~


:$put ='---'
---
::$put =''


:$put ='characterwise select mode: delete middle two line'

characterwise select mode: delete middle two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c


-- SELECT --a 
bc~
~


:$put ='---'
---
::$put =''
:$put ='characterwise select mode: delete last line'

characterwise select mode: delete last line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c
-- SELECT --c
:$put ='---'

---
::$put =''


:$put ='characterwise select mode: delete last two line'

characterwise select mode: delete last two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c

-- SELECT --b 
c~

:$put ='---'
---
::$put =''


:$put ='linewise select mode: delete middle line'

linewise select mode: delete middle line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

ca 


-- SELECT LINE --bc
~


:$put ='---'
---
::$put =''


:$put ='linewise select mode: delete middle two line'

linewise select mode: delete middle two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

ca 


-- SELECT LINE --a
b 
c~
~


:$put ='---'
---
::$put =''
:$put ='linewise select mode: delete last line'

linewise select mode: delete last line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

cc 
-- SELECT LINE --~

:$put ='---'
---
::$put =''


:$put ='linewise select mode: delete last two line'

linewise select mode: delete last two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

cb 

-- SELECT LINE --b
c 
~~


:$put ='---'
---
::$put =''
:$put ='v_p: replace last character with line register at middle line'

v_p: replace last character with line register at middle line
:$put ='aaa'

aaa
:$put ='bbb'

bbb
:$put ='ccc'

ccc
:-2yank
bb

-- VISUAL --aaa

:$put ='---'


ccc
---
::$put =''


:$put ='v_p: replace last character with line register at middle line selecting

newline'
linewise select mode: delete middle two line
c---linewise select mode: delete last line
ab
---linewise select mode: delete last two line
a---v_p: replace last character with line register at middle line
aaabbaaaccc
---v_p: replace last character with line register at middle line selecting newline
:$put ='aaa'

aaa
:$put ='bbb'

bbb
:$put ='ccc'

ccc
:-2yank
bb

-- VISUAL --baaa
ccc

:$put ='---'

---
::$put =''


:$put ='v_p: replace last character with line register at last line'

v_p: replace last character with line register at last line
:$put ='aaa'

aaa
:$put ='bbb'

bbb
:$put ='ccc'

ccc
:-2yank
cc
-- VISUAL --
aaa

:$put ='---'

---
::$put =''


:$put ='v_p: replace last character with line register at last line selecting n

ewline'
aaa
bbaaaccc
---v_p: replace last character with line register at middle line selecting newline
aaabbaaa
ccc
---v_p: replace last character with line register at last line
aaabbb
ccaaa---v_p: replace last character with line register at last line selecting newline
:$put ='aaa'

aaa
:$put ='bbb'

bbb
:$put ='ccc'

ccc
:-2yank
cc
-- VISUAL --c
aaa

:$put ='---'

---
::$put =''


:$put ='gv in exclusive select mode after operation'

gv in exclusive select mode after operation
:$put ='zzz '

zzz
:$put ='äà '

äÃ
:set selection=exclusive


-- VISUAL --zzz
zzz

-- VISUAL --äÃ
zzz
-- VISUAL --zzzINSERTxxx
:$put ='---'

---
::$put =''


:$put ='gv in exclusive select mode without operation'

gv in exclusive select mode without operation
:$put ='zzz '

zzz
:set selection=exclusive

-- VISUAL --zzz
zzz
-- VISUAL --zzzINSERTxxx
:$put ='---'

---
:/^start:/+2,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New] 123L, 1328C written:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test94 = test61; then \
#	  if diff test.out test94.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test94.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test94.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test95.failed test.ok test.out X* viminfo
cp test95.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test95.in
[?1h="test95.in" 141 lines, 5827 charactersTest for regexp patterns with multi-byte support, using utf-8.
See test64 for the non-multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:so mbyte.vim
:set nocp encoding=utf-8 viminfo+=nviminfo nomore
:" tl is a List of Lists with:
:"    2: test auto/old/new  0: test auto/old  1: test auto/new
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:
:"""" Multi-byte character tests. These will fail unless vim is compiled
:"""" with Multibyte (FEAT_MBYTE) or BIG/HUGE features.:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for regexp patterns with multi-byte support, using utf-8./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 131 lines, 5590 characters written:set ff& cpo+=A
/ENDTEST:endif
:      endfor
:      unlet i
:    endif
:  endfor
:endfor
:unlet t tl e l
:
:" check that 'ambiwidth' does not change the meaning of \p
:set regexpengine=1 ambiwidth=single
:$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=1 ambiwidth=double
:$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=single
:$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=double
:$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')
:
:/\%#=1^Results/,$wq! test.out
ENDTEST

Results of test95:
~



:so! Xdotest
:so small.vim
:so mbyte.vim
:set nocp encoding=utf-8 viminfo+=nviminfo nomore
:endif
:      endfor
:      unlet i
:    endif
:  endfor
:endfor
:unlet t tl e l
:
:" check that 'ambiwidth' does not change the meaning of \p
:set regexpengine=1 ambiwidth=single
:$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=1 ambiwidth=double
:$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=single
:$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=double
:$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')
:
:/\%#=1^Results/,$wq! test.out
ENDTEST

Results of test95:
~


:" tl is a List of Lists with:
:"    2: test auto/old/new  0: test auto/old  1: test auto/new
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
::"""" Multi-byte character tests. These will fail unless vim is compiled
:"""" with Multibyte (FEAT_MBYTE) or BIG/HUGE features.
:call add(tl, [2, '[[:alpha:][=a=]]\+', '879 aiaãâaiuvna ', 'aiaãâaiuvna'])
:call add(tl, [2, '[[=a=]]\+', 'ddaãâbcd', 'aãâ'])^I^I^I^I^I^I^I^I" equivalence

classes
:endif


:call add(tl, [2, '[^ม ]\+', 'มม oijasoifjos ifjoisj f osij j มมมมม abcd', 'oij

asoifjos'])
:endif


:call add(tl, [2, ' [^ ]\+', 'start มabcdม ', ' มabcdม'])
:call add(tl, [2, '[ม[:alpha:][=a=]]\+', '879 aiaãมâมaiuvna ', 'aiaãมâมaiuvna']

):endif


::" this is not a normal "i" but 0xec
:call add(tl, [2, '\p\+', 'ìa', 'ìa'])
:call add(tl, [2, '\p*', 'aあ', 'aあ'])
::"""" Test recognition of some character classes
:call add(tl, [2, '\i\+', '&*¨xx ', 'xx'])
:call add(tl, [2, '\f\+', '&*<9f>fname ', 'fname'])
::"""" Test composing character matching
:call add(tl, [2, '.ม', 'xมม่x yมy', 'yม'])
:call add(tl, [2, '.มม่', 'xมม่x yมy', 'xมม่'])
:call add(tl, [2, "\u05b9", " x\u05b9 ", "x\u05b9"])
:call add(tl, [2, ".\u05b9", " x\u05b9 ", "x\u05b9"])
:call add(tl, [2, "\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, ".\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, "\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, ".\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, "\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])
:call add(tl, [2, ".\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])
:call add(tl, [2, "\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])
:call add(tl, [2, ".\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])
:call add(tl, [1, "\u05b9\u05bb", " y\u05b9 x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, ".\u05b9\u05bb", " y\u05bb x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, "a", "ca\u0300t"])
:call add(tl, [2, "ca", "ca\u0300t"])
:call add(tl, [2, "a\u0300", "ca\u0300t", "a\u0300"])
:call add(tl, [2, 'a\%C', "ca\u0300t", "a\u0300"])
:call add(tl, [2, 'ca\%C', "ca\u0300t", "ca\u0300"])
:call add(tl, [2, 'ca\%Ct', "ca\u0300t", "ca\u0300t"])
:::"""" Test \Z
:call add(tl, [2, 'ú\Z', 'x'])
:call add(tl, [2, 'יהוה\Z', 'יהוה', 'יהוה'])
:call add(tl, [2, 'ייְהווָה\Z', 'יהוה', 'יהוה'])
:call add(tl, [2, 'יהוה\Z', 'ייְהווָה', 'ייְהווָה'])
:call add(tl, [2, 'ייְהווָה\Z', 'ייְהווָה', 'ייְהווָה'])
:call add(tl, [2, 'ייְ\Z', 'ווְייַ', 'ייַ'])
:call add(tl, [2, "ק\u200d\u05b9x\\Z", "xק\u200d\u05b9xy", "ק\u200d\u05b9x"])
:call add(tl, [2, "ק\u200d\u05b9x\\Z", "xק\u200dxy", "ק\u200dx"])
:call add(tl, [2, "ק\u200dx\\Z", "xק\u200d\u05b9xy", "ק\u200d\u05b9x"])
:call add(tl, [2, "ק\u200dx\\Z", "xק\u200dxy", "ק\u200dx"])
:call add(tl, [2, "\u05b9\\Z", "xyz"])
:call add(tl, [2, "\\Z\u05b9", "xyz"])
:call add(tl, [2, "\u05b9\\Z", "xy\u05b9z", "y\u05b9"])
:call add(tl, [2, "\\Z\u05b9", "xy\u05b9z", "y\u05b9"])
:call add(tl, [1, "\u05b9\\+\\Z", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])
:call add(tl, [1, "\\Z\u05b9\\+", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])
::"""" Combining different tests and features
:call add(tl, [2, '[^[=a=]]\+', 'ddaãâbcd', 'dd'])
::"""" Run the tests
::"
:for t in tl

:  :  let re = t[0]

:  :  let pat = t[1]

:  :  let text = t[2]

:  :  let matchidx = 3

:  :  for engine in [0, 1, 2]

:    :    if engine == 2 && re == 0 || engine == 1 && re == 1

:      :      continue

:      :    endif

:    :    let &regexpengine = engine

:    :    try

:      :      let l = matchlist(text, pat)

:      :    catch

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", caused an exception: \"' . v:exception . '\"'

:      :    endtry

:    :" check the match itself

:    :    if len(l) == 0 && len(t) > matchidx

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", did not match, expected: \"' . t[matchidx] . '\"'

:      :    elseif len(l) > 0 && len(t) == matchidx

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", match: \"' . l[0] . '\", expected no match'

:      :    elseif len(t) > matchidx && l[0] != t[matchidx]

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te
t . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"'

:      :    else

:      :      $put ='OK ' . engine . ' - ' . pat

:      :    endif

:    :    if len(l) > 0

:      :"   check all the nine submatches

:      :      for i in range(1, 9)

::        if len(t) <= matchidx + i

::          let e = ''

::        else

::          let e = t[matchidx + i]

::        endif

::        if l[i] != e

::          $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: 
"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"'

::        endif

::      endfor

:      :      unlet i

:      :    endif

:    :  endfor

:  :endfor
OK 2 - ק<200d>x\Z
OK 0 - ק<200d>x\Z
OK 1 - ק<200d>x\Z
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+

:unlet t tl e l
::" check that 'ambiwidth' does not change the meaning of \p
:set regexpengine=1 ambiwidth=single
OK 2 - ק<200d>x\Z
OK 0 - ק<200d>x\Z
OK 1 - ק<200d>x\Z
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+

:$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')

eng 1 ambi single: 0
:set regexpengine=1 ambiwidth=double
OK 0 - ק<200d>x\Z
OK 1 - ק<200d>x\Z
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+
eng 1 ambi single: 0

:$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')

eng 1 ambi double: 0
:set regexpengine=2 ambiwidth=single
OK 1 - ק<200d>x\Z
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+
eng 1 ambi single: 0
eng 1 ambi double: 0

:$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')

eng 2 ambi single: 0
:set regexpengine=2 ambiwidth=double
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+
eng 1 ambi single: 0
eng 1 ambi double: 0
eng 2 ambi single: 0

:$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')

eng 2 ambi double: 0
::/\%#=1^Results/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New] 140L, 2022C written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test95 = test61; then \
#	  if diff test.out test95.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test95.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test95.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test98.failed test.ok test.out X* viminfo
cp test98.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test98.in
[?1h="test98.in" 43 lines, 908 charactersTest for 'scrollbind' causing an unexpected scroll of one of the windows.
STARTTEST
:so small.vim
:" We don't want the status line to cause problems:
:set laststatus=0
:let g:totalLines = &lines * 20
:let middle = g:totalLines / 2
:wincmd n
:wincmd o
:for i in range(1, g:totalLines)
:    call setline(i, 'LINE ' . i)
:endfor
:exe string(middle)
:normal zt
:normal M
:aboveleft vert new
:for i in range(1, g:totalLines)
:    call setline(i, 'line ' . i)
:endfor
:exe string(middle)
:normal zt
:normal M
:" Execute the following two command at once to reproduce the problem.:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for 'scrollbind' causing an unexpected scroll of one of the windows./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 35 lines, 791 characters written:set ff& cpo+=A
/ENDTEST















:setl scb | wincmd p
:setl scb
:wincmd w
:let topLineLeft = line('w0')
:wincmd p
:let topLineRight = line('w0')
:setl noscrollbind
:wincmd p
:setl noscrollbind
:q!
:%del _
:call setline(1, 'Difference between the top lines (left - right): ' . string(toopLineLeft - topLineRight))
:w! test.out
:brewind
ENDTEST

:so! Xdotest
:so small.vim
:" We don't want the status line to cause problems:
:set laststatus=0
:let g:totalLines = &lines * 20
:let middle = g:totalLines / 2
:wincmd n
~~~~~~~~~~
[No Name]                                                                       :wincmd o
~~~~~~~~~~~
~:for i in range(1, g:totalLines)

:  :    call setline(i, 'LINE ' . i)

:  :endfor
LINE 1
LINE 2
LINE 3
LINE 4
LINE 5
LINE 6
LINE 7
LINE 8
LINE 9
LINE 10
LINE 11
LINE 12
LINE 13
LINE 14
LINE 15
LINE 16
LINE 17
LINE 18
LINE 19
LINE 20
LINE 21
LINE 22
LINE 23:exe string(middle)
LINE 229
LINE 230
LINE 231
LINE 232
LINE 233
LINE 234
LINE 235
LINE 236
LINE 237
LINE 238
LINE 239
LINE 240
LINE 241
LINE 242
LINE 243
LINE 244
LINE 245
LINE 246
LINE 247
LINE 248
LINE 249
LINE 250
LINE 251:normal zt











LINE 252
LINE 253
LINE 254
LINE 255
LINE 256
LINE 257
LINE 258
LINE 259
LINE 260
LINE 261
LINE 262:normal M
:aboveleft vert new
        |||||||||||||||||||||||~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       LINE 240LINE 241LINE 242LINE 243LINE 244LINE 245LINE 246LINE 247LINE 248LINE 249LINE 250LINE 251LINE 252LINE 253LINE 254LINE 255LINE 256LINE 257LINE 258LINE 259LINE 260LINE 261LINE 262:for i in range(1, g:totalLines)

:  :    call setline(i, 'line ' . i)

:  :endfor
line 1|
line 2|
line 3                                  
line 4                                  
line 5                                  
line 6                                  
line 7                                  
line 8                                  
line 9                                  
line 10                                 
line 11                                 
line 12                                 
line 13                                 
line 14                                 
line 15                                 
line 16                                 
line 17                                 
line 18                                 
line 19                                 
line 20                                 
line 21                                 
line 22                                 
line 23                                 LINE 240LINE 241:exe string(middle)
2293023123223323423523623723823924024124224324424524624748495051:normal zt
line 240                                
line 241                                
line 242                                
line 243                                
line 244                                
line 245                                
line 246                                
line 247                                
line 248                                
line 249                                
line 250                                
line 251                                
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        line 252
line 253
line 254
line 255
line 256
line 257
line 258
line 259
line 260
line 261
line 262:normal M
:" Execute the following two command at once to reproduce the problem.
:setl scb | wincmd p
:setl scb
:wincmd w
:let topLineLeft = line('w0')
:wincmd p
:let topLineRight = line('w0')
:setl noscrollbind
:wincmd p
:setl noscrollbind
:q!
LINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINE:%del _
~~~~~~~~~~~~~~~~~~~~~~
--No lines in buffer--:call setline(1, 'Difference between the top lines (left - right): ' . string(t

opLineLeft - topLineRight))
Difference between the top lines (left - right): 0:w! test.out
"test.out" [New File] 1 line, 51 characters written:brewind
"test98.in" 43 lines, 908 characters:normal M:" Execute the following two command at once to reproduce the problem.
:setl scb | wincmd p
:setl scb
:wincmd w
:let topLineLeft = line('w0')
:wincmd p
:let topLineRight = line('w0')
:setl noscrollbind
:wincmd p
:setl noscrollbind
:q!
:%del _
:call setline(1, 'Difference between the top lines (left - right): ' . string(toopLineLeft - topLineRight))
:w! test.out
:brewind
ENDTESTSTARTTEST
:qa!
ENDTEST/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 1 line, 5 characters written:set ff& cpo+=A



/ENDTEST
:so! Xdotest
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test98 = test61; then \
#	  if diff test.out test98.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test98.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test98.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test99.failed test.ok test.out X* viminfo
cp test99.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test99.in
[?1h="test99.in" 69 lines, 1400 charactersTests for regexp with multi-byte encoding and various magic settings.
Test matchstr() with a count and multi-byte chars.
See test44 for exactly the same test with re=1.

STARTTEST
:so mbyte.vim
:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
:set re=2
/^1
/a*b\{2}c\+/e
x/\Md\*e\{2}f\+/e
x:set nomagic
/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$
x:set magic
/\v(a)(b)\2\1\1/e
x/\V[ab]\(\[xy]\)\1
x:" Now search for multi-byte without composing char
/ม
x:" Now search for multi-byte with composing char
f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with multi-byte encoding and various magic settings./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 43 lines, 931 characters written:set ff& cpo+=A
/ENDTEST:" l Test what 7.3.192 fixed
/^l
:s/ \?/ /g
:?^1?,$w! test.out
:e! test.out
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
:so! Xdotest
:so mbyte.vim
:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
:" l Test what 7.3.192 fixed
/^l
:s/ \?/ /g
:?^1?,$w! test.out
:e! test.out
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
:" Test \%u, [\u] and friends
/\%u20ac

/[\u4f7f\u5929]\+

/\%U12345678

/[\U1234abcd\u1234\uabcd]

/\%d21879b

:" Test backwards search from a multi-byte char
/x

:"
:" l Test what 7.3.192 fixed
/^l

2 d dd dee deeff
3 g gg ghh ghhii
4 j jj jkk jkkll
5 m mm mnn mnnoo
#@/bin/sh -c "if test -f test.out -a test99 = test61; then \
#	  if diff test.out test99.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test99.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test99.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test103.failed test.ok test.out X* viminfo
cp test103.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test103.in
[?1h="test103.in" 37 lines, 823 charactersTest for visual mode not being reset causing E315 error.
STARTTEST
:so small.vim
:enew
:let g:msg="Everything's fine."
:function! TriggerTheProblem()
:" At this point there is no visual selection because :call reset it.
:" Let's restore the selection:
:normal gv
:'<,'>del _
:try
:exe "normal \<Esc>"
:catch /^Vim\%((\a\+)\)\=:E315/
:echom 'Snap! E315 error!'
:let g:msg='Snap! E315 error!'
:endtry
:endfunction
:enew
:setl buftype=nofile
:call append(line('$'), 'Delete this line.')
:"
:"
:" NOTE: this has to be done by a call to a function because executing :del the:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for visual mode not being reset causing E315 error./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 29 lines, 723 characters written:set ff& cpo+=A
/ENDTEST









:"ex-way will require the colon operator which resets the visual mode thuus
:"preventing the problem:
:"
GV:call TriggerTheProblem()
:%del _
:call append(line('$'), g:msg)
:w! test.out
:brewind
ENDTEST

:so! Xdotest
:so small.vim
:enew
~~~~~~~~~~~~
~~~~~~~~~
~:let g:msg="Everything's fine."
:function! TriggerTheProblem()

:  :^I" At this point there is no visual selection because :call reset it.

:  :^I" Let's restore the selection:

:  :^Inormal gv

:  :^I'<,'>del _

:  :^Itry

:    :^I^Iexe "normal \<Esc>"

:    :^Icatch /^Vim\%((\a\+)\)\=:E315/

:    :^I^Iechom 'Snap! E315 error!'

:    :^I^Ilet g:msg='Snap! E315 error!'

:    :^Iendtry

:  :endfunction
~
~
~
~
~
~
~
~
~
~:enew
:setl buftype=nofile
:call append(line('$'), 'Delete this line.')
Delete this line.:"
:"
:" NOTE: this has to be done by a call to a function because executing :del the
:"       ex-way will require the colon operator which resets the visual mode th

us:"       preventing the problem:
:"

Delete this line. 
:'<,'>call TriggerTheProblem()
~:%del _
--No lines in buffer--:call append(line('$'), g:msg)
Everything's fine.:w! test.out
"test.out" [New File] 2 lines, 20 characters written:brewind
"test103.in" 37 lines, 823 characters:endtry
:endfunction:enew
:setl buftype=nofile
:call append(line('$'), 'Delete this line.')
:"
:"
:" NOTE: this has to be done by a call to a function because executing :del the
:"ex-way will require the colon operator which resets the visual mode thuus
:"preventing the problem:
:"
GV:call TriggerTheProblem()
:%del _
:call append(line('$'), g:msg)
:w! test.out
:brewind
ENDTESTSTARTTEST
:qa!
ENDTEST/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 1 line, 5 characters written:set ff& cpo+=A



/ENDTEST
:so! Xdotest
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test103 = test61; then \
#	  if diff test.out test103.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test103.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test103.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test104.failed test.ok test.out X* viminfo
cp test104.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test104.in
[?1h="test104.in" 30 lines, 698 charactersTests for :let.  vim: set ft=vim ts=8 :

STARTTEST
:so small.vim
:set runtimepath+=./sautest
:" Test to not autoload when assigning.  It causes internal error.
:try
:  let Test104#numvar = function('tr')
:  $put ='OK: ' . string(Test104#numvar)
:catch
:  $put ='FAIL: ' . v:exception
:endtry
:let a = 1
:let b = 2
:for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0  == 1 ? "a" : "b"}']
:  try
:    redir => messages
:    execute 'let' letargs
:    redir END
:    $put ='OK:'
:    $put =split(substitute(messages, '\n', '\0  ', 'g'), '\n')
:  catch:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :let.  vim: set ft=vim ts=8 :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 24 lines, 618 characters written:set ff& cpo+=A
/ENDTEST





:    $put ='FAIL: ' . v:exception
:    redir END
:  endtry
:endfor
:/^Results/,$wq! test.out
ENDTEST

:so! Xdotest
:so small.vim
:set runtimepath+=./sautest
:" Test to not autoload when assigning.  It causes internal error.
:try

:  :  let Test104#numvar = function('tr')

:  :  $put ='OK: ' . string(Test104#numvar)

:  :catch

:  :  $put ='FAIL: ' . v:exception

:  :endtry
:catch
:  $put ='FAIL: ' . v:exception
:endtry
:let a = 1
:let b = 2
:for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0  == 1 ? "a" : "b"}']
:  try:    redir => messages
:    execute 'let' letargsEND$put ='OK:'$put =split(substitute(messages, '\n', '\0  ', 'g'), '\n')
:  catch'FAIL: ' . v:exception  redir END
:  endtryendfor/^Results/,$wq! test.out
ENDTESTResults of test104:
OK: function('tr')
:let a = 1
:let b = 2
:for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0

== 1 ? "a" : "b"}']
:  :  try

:    :    redir => messages

:    :    execute 'let' letargs

a#1

b#2

:    :    redir END

:    :    $put ='OK:'

:    :    $put =split(substitute(messages, '\n', '\0  ', 'g'), '\n')

:    :  catch

:    :    $put ='FAIL: ' . v:exception

:    :    redir END

:    :  endtry

:  :endfor

b#2

b#2

a#1

a#1

b#2

Press ENTER or type command to continue:/^Results/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 13 lines, 244 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test104 = test61; then \
#	  if diff test.out test104.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test104.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test104.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test107.failed test.ok test.out X* viminfo
cp test107.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test107.in
[?1h="test107.in" 38 lines, 717 charactersTests for adjusting window and contents     vim: set ft=vim :

STARTTEST
:so small.vim
:new
:call setline(1, range(1,256))
:let r=[]
:func! GetScreenStr(row)
:   let str = ""
:   for c in range(1,3)
:let str .= nr2char(screenchar(a:row, c))
:   endfor
:   return str
:endfunc
:
:exe ":norm! \<C-W>t\<C-W>=1Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p
:call add(r, [line("w0"), s3])
:
:exe ":norm! \<C-W>t\<C-W>=50Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for adjusting window and contents     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 32 lines, 628 characters written:set ff& cpo+=A
/ENDTEST












:call add(r, [line("w0"), s3])
:
:exe ":norm! \<C-W>t\<C-W>=59Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
::wincmd p
:call add(r, [line("w0"), s3])
:
:bwipeout!
:$put=r
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
ENDTEST

:so! Xdotest
:so small.vim
:new
~~~~
~~~~~
~
[No Name]                                                                       :wincmd pcall add(r, [line("w0"), s3])bwipeout!
:$put=rcall garbagecollect(1)
:"/^start:/,$wq! test.out
ENDTESTtest107.in                                                                      :call setline(1, range(1,256))
1
2
3
4
5
6
7
8
9
10
11[+]:let r=[]
:func! GetScreenStr(row)

:  :   let str = ""

:  :   for c in range(1,3)

:    :       let str .= nr2char(screenchar(a:row, c))

:    :   endfor

:  :   return str

:  :endfunc
1
2
3
4
5
6::exe ":norm! \<C-W>t\<C-W>=1Gzt\<C-W>w\<C-W>+"
[No Name] [+]                                                                   :let s3=GetScreenStr(1)test107.in                                                                      :let s3=GetScreenStr(1)
:wincmd p
[No Name] [+]                                                                   test107.in                                                                      :call add(r, [line("w0"), s3])
::exe ":norm! \<C-W>t\<C-W>=50Gzt\<C-W>w\<C-W>+"
50
51
52
53
54
55
56
57
58
59
[No Name] [+]                                                                   :let s3=GetScreenStr(1)
::wincmd p
:call add(r, [line("w0"), s3])
:
:bwipeout!
:$put=r
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
ENDTEST

test107.in                                                                      

:let s3=GetScreenStr(1)
:wincmd p
[No Name] [+]                                                                   test107.in                                                                      :call add(r, [line("w0"), s3])
::exe ":norm! \<C-W>t\<C-W>=59Gzt\<C-W>w\<C-W>+"
59
60
61
62
63
64
65
66
67
68
[No Name] [+]                                                                   :let s3=GetScreenStr(1)
::wincmd p
:call add(r, [line("w0"), s3])
:
:bwipeout!
:$put=r
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
ENDTEST

test107.in                                                                      

:let s3=GetScreenStr(1)
::wincmd p
[No Name] [+]                                                                   test107.in                                                                      :call add(r, [line("w0"), s3])
::bwipeout!
::exe ":norm! \<C-W>t\<C-W>=1Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p
:call add(r, [line("w0"), s3])
::exe ":norm! \<C-W>t\<C-W>=50Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p
:call add(r, [line("w0"), s3])
:exe ":norm! \<C-W>t\<C-W>=59Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
::wincmd pcall add(r, [line("w0"), s3])bwipeout!
:$put=rcall garbagecollect(1)
:":/^start:/,$wq! test.out
ENDTEST:$put=r
3 more lines



start:
[1, '1  ']
[50, '50 ']
[59, '59 ']3 more lines:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 4 lines, 42 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test107 = test61; then \
#	  if diff test.out test107.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test107.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test107.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test108.failed test.ok test.out X* viminfo
cp test108.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test108.in
[?1h="test108.in" 88 lines, 1329 charactersTests for backtrace debug commands.     vim: set ft=vim :

STARTTEST
:so small.vim
:lang mess C
:function! Foo()
:   let var1 = 1
:   let var2 = Bar(var1) + 9
:   return var2
:endfunction
:
:function! Bar(var)
:    let var1 = 2 + a:var
:    let var2 = Bazz(var1) + 4
:    return var2
:endfunction
:
:function! Bazz(var)
:    let var1 = 3 + a:var
:    let var3 = "another var"
:    return var1
:endfunction
:new:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for backtrace debug commands.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 83 lines, 1251 characters written:set ff& cpo+=A
/ENDTESTup
b
echo "fil is not frame or finish, it is file"
fil
echo "\n- relative backtrace movement\n"
fr -1
frame
fra +1
fram
echo "\n- go beyond limits does not crash\n"
fr 100
fra
frame -40
fram
echo "\n- final result 19:"
cont
:0debuggreedy
:redir END
:$put =out
:w! test.out
:qa!
ENDTEST


:so! Xdotest
:so small.vim
:lang mess C
:function! Foo()

:  :   let var1 = 1

:  :   let var2 = Bar(var1) + 9

:  :   return var2

:  :endfunction
up
b
echo "fil is not frame or finish, it is file"
fil
::function! Bar(var)

:  :    let var1 = 2 + a:var

:  :    let var2 = Bazz(var1) + 4

:  :    return var2

:  :endfunction
up
b
echo "fil is not frame or finish, it is file"
fil
::function! Bazz(var)

:  :    let var1 = 3 + a:var

:  :    let var3 = "another var"

:  :    return var1

:  :endfunction
up
b
echo "fil is not frame or finish, it is file"
fil
:new
~~~~~~~~~~
[No Name]                                                                       echo "\n- final result 19:"
cont:0debuggreedy
:redir END$put =out
:w! test.out
:qa!ENDTESTtest108.in                                                                      :debuggreedy
:redir => out
:debug echo Foo()
Entering Debug mode.  Type "cont" to continue.

cmd: echo Foo()

>step

function Foo

line 1: let var1 = 1

>step

function Foo

line 2: let var2 = Bar(var1) + 9

>step

function Foo[2]..Bar

line 1: let var1 = 2 + a:var

>step

function Foo[2]..Bar

line 2: let var2 = Bazz(var1) + 4

>step

function Foo[2]..Bar[2]..Bazz

line 1: let var1 = 3 + a:var

>step

function Foo[2]..Bar[2]..Bazz

line 2: let var3 = "another var"

>echo "- show backtrace:\n"

- show backtrace:

>backtrace

  2 function Foo[2]

  1 Bar[2]

->0 Bazz

line 2: let var3 = "another var"

>echo "\nshow variables on different levels:\n"


show variables on different levels:

>echo var1

6
>up

>back

  2 function Foo[2]

->1 Bar[2]

  0 Bazz

line 2: let var3 = "another var"

>echo var1

3
>u

>bt

->2 function Foo[2]

  1 Bar[2]

  0 Bazz

line 2: let var3 = "another var"

>echo var1

1
>echo "\n- undefined vars:\n"


- undefined vars:

>step

function Foo[2]..Bar[2]..Bazz

line 3: return var1

>frame 2

>echo "undefined var3 on former level:"

undefined var3 on former level:

>echo var3

Error detected while processing function Foo[2]..Bar[2]..Bazz:

line    3:

E121: Undefined variable: var3

E15: Invalid expression: var3

>fr 0

>echo "here var3 is defined with \"another var\":"

here var3 is defined with "another var":

>echo var3

another var

>step

function Foo[2]..Bar[2]..Bazz

line 3: End of function

>step

function Foo[2]..Bar

line 3: return var2

>step

function Foo[2]..Bar

line 3: End of function

>up

>echo "\nundefined var2 on former level"


undefined var2 on former level

>echo var2

Error detected while processing function Foo[2]..Bar:

line    3:

E121: Undefined variable: var2

E15: Invalid expression: var2

>down

>echo "here var2 is defined with 10:"

here var2 is defined with 10:

>echo var2

10

>echo "\n- backtrace movements:\n"


- backtrace movements:

>b

  1 function Foo[2]

->0 Bar

line 3: End of function

>echo "\nnext command cannot go down, we are on bottom\n"


next command cannot go down, we are on bottom

>down

frame is zero

>up

>echo "\nnext command cannot go up, we are on top\n"


next command cannot go up, we are on top

>up

frame at highest level: 1

>b

->1 function Foo[2]

  0 Bar

line 3: End of function

>echo "fil is not frame or finish, it is file"

fil is not frame or finish, it is file

>fil

"[No Name]" --No lines in buffer--

>echo "\n- relative backtrace movement\n"


- relative backtrace movement

>fr -1

>frame

  1 function Foo[2]

->0 Bar

line 3: End of function

>fra +1

>fram

->1 function Foo[2]

  0 Bar

line 3: End of function

>echo "\n- go beyond limits does not crash\n"


- go beyond limits does not crash

>fr 100

frame at highest level: 1

>fra

->1 function Foo[2]

  0 Bar

line 3: End of function

>frame -40

frame is zero

>fram

  1 function Foo[2]

->0 Bar

line 3: End of function

>echo "\n- final result 19:"


- final result 19:

>cont

19

Press ENTER or type command to continue:0debuggreedy
~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       fram
echo "\n- final result 19:"
cont
:0debuggreedy
:redir END
:$put =out
:w! test.out
:qa!
ENDTEST

test108.in                                                                      :redir END
:$put =out
83 more lines->1 function Foo[2]
  0 Bar
line 3: End of function
frame is zero
  1 function Foo[2]
->0 Bar
line 3: End of function- final result 19:
19[+]:w! test.out
"test.out" [New File] 84 lines, 1390 characters writtentest.out     :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test108 = test61; then \
#	  if diff test.out test108.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test108.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test108.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_autocmd_option.failed test.ok test.out X* viminfo
cp test_autocmd_option.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autocmd_option.in
[?1h="test_autocmd_option.in" 77 lines, 2954 charactersTest for option autocommand

STARTTEST
:so small.vim
:if !has("eval") || !has("autocmd") || !exists("+autochdir") | e! test.ok | w! ttest.out | qa! | endif
:fu! AutoCommand(match)
:let c=g:testcase
:let item=remove(g:options, 0)
:let c.=printf("Expected: Name: <%s>, Oldval: <%s>, NewVal: <%s>, Scope:  <%s>\n", item[0], item[1], item[2], item[3])
:let c.=printf("Autocmd Option: <%s>,", a:match)
:let c.=printf(" OldVal: <%s>,", v:option_old)
:let c.=printf(" NewVal: <%s>,", v:option_new)
:let c.=printf(" Scope: <%s>\n", v:option_type)
:call setreg('r', printf("%s\n%s", getreg('r'), c))
:endfu
:au OptionSet * :call AutoCommand(expand("<amatch>"))
:let g:testcase="1: Setting number option\n"
:let g:options=[['number', 0, 1, 'global']]
:set nu
:let g:testcase="2: Setting local number option\n"
:let g:options=[['number', 1, 0, 'local']]:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for option autocommand/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 72 lines, 2896 characters written:set ff& cpo+=A
/ENDTEST:let g:testcase="13: Setting option backspace through setbufvar()\n"
:let g:options=[['backup', '', '1', 'local']]
: "try twice, first time, shouldn't trigger because option name is invalid, secoond time, it should trigger
:call setbufvar(1, '&l:bk', 1)
: "should trigger, use correct option name
:call setbufvar(1, '&backup', 1)
:let g:testcase="14: Setting number option using setwinvar\n"
:let g:options=[['number', 0, 1, 'local']]
:call setwinvar(0, '&number', 1)
:" Write register now, because next test shouldn't output anything.
:$put r
:let @r=''
:let g:testcase="\n15: Setting key option, shouldn't trigger\n"
:let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
:setlocal key=blah
:setlocal key=
:$put =g:testcase
:$put r
:/^dummy text/,$w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
:if !has("eval") || !has("autocmd") || !exists("+autochdir") | e! test.ok | w! 

test.out | qa! | endif
:let g:testcase="13: Setting option backspace through setbufvar()\n"
:fu! AutoCommand(match)

:  :^Ilet c=g:testcase

:  :       let item=remove(g:options, 0)

:  :       let c.=printf("Expected: Name: <%s>, Oldval: <%s>, NewVal: <%s>, Sco

pe: <%s>\n", item[0], item[1], item[2], item[3])

:  :       let c.=printf("Autocmd Option: <%s>,", a:match)

:  :       let c.=printf(" OldVal: <%s>,", v:option_old)

:  :       let c.=printf(" NewVal: <%s>,", v:option_new)

:  :       let c.=printf(" Scope: <%s>\n", v:option_type)

:  :       call setreg('r', printf("%s\n%s", getreg('r'), c))

:  :endfu
:let g:testcase="13: Setting option backspace through setbufvar()\n"
:let g:options=[['backup', '', '1', 'local']]
: "try twice, first time, shouldn't trigger because option name is invalid, secoond time, it should trigger
:call setbufvar(1, '&l:bk', 1)
: "should trigger, use correct option name
:call setbufvar(1, '&backup', 1)
:let g:testcase="14: Setting number option using setwinvar\n"
:let g:options=[['number', 0, 1, 'local']]
:call setwinvar(0, '&number', 1)
:au OptionSet * :call AutoCommand(expand("<amatch>"))
:let g:testcase="1: Setting number option\n"
:let g:options=[['number', 0, 1, 'global']]
:set nu
     56 :let g:testcase="13: Setting option backspace through setbufvar()\n"
     57 :let g:options=[['backup', '', '1', 'local']]
     58 : "try twice, first time, shouldn't trigger because option name is invallid, second time, it should trigger
     59 :call setbufvar(1, '&l:bk', 1)
     60 : "should trigger, use correct option name
     61 :call setbufvar(1, '&backup', 1)
     62 :let g:testcase="14: Setting number option using setwinvar\n"
     63 :let g:options=[['number', 0, 1, 'local']]
     64 :call setwinvar(0, '&number', 1)
     65 :" Write register now, because next test shouldn't output anything.
     66 :$put r
     67 :let @r=''
     68 :let g:testcase="\n15: Setting key option, shouldn't trigger\n"
     69 :let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
     70 :setlocal key=blah
     71 :setlocal key=
     72 :$put =g:testcase
     73 :$put r
     74 :/^dummy text/,$w! test.out
     75 :qa!
     76 ENDTEST
     77 dummy text:let g:testcase="2: Setting local number option\n"
:let g:options=[['number', 1, 0, 'local']]
:setlocal nonu
:let g:testcase="13: Setting option backspace through setbufvar()\n":let g:options=[['backup', '', '1', 'local']]: "try twice, first time, shouldn't trigger because option name is invalid, secoond time, it should trigger:call setbufvar(1, '&l:bk', 1): "should trigger, use correct option name:call setbufvar(1, '&backup', 1):let g:testcase="14: Setting number option using setwinvar\n":let g:options=[['number', 0, 1, 'local']]:call setwinvar(0, '&number', 1):" Write register now, because next test shouldn't output anything.:$put r:let @r='':let g:testcase="\n15: Setting key option, shouldn't trigger\n":let g:options=[['key', 'invalid', 'invalid1', 'invalid']]:setlocal key=blah:setlocal key=:$put =g:testcase:$put r:/^dummy text/,$w! test.out:qa!ENDTESTdummy text:let g:testcase="3: Setting global number option\n"
:let g:options=[['number', 1, 0, 'global']]
:setglobal nonu
:let g:testcase="4: Setting local autoindent option\n"
:let g:options=[['autoindent', 0, 1, 'local']]
:setlocal ai
:let g:testcase="5: Setting global autoindent option\n"
:let g:options=[['autoindent', 0, 1, 'global']]
:setglobal ai
:let g:testcase="6: Setting global autoindent option\n"
:let g:options=[['autoindent', 1, 0, 'global']]
:set ai!
: Should not print anything, use :noa
E492: Not an editor command: Should not print anything, use :noa:noa :set nonu
:let g:testcase="7: Setting several global list and number option\n"
:let g:options=[['list', 0, 1, 'global'], ['number', 0, 1, 'global']]
:set list nu
     56 :let g:testcase="13: Setting option backspace through setbufvar()\n"$
     57 :let g:options=[['backup', '', '1', 'local']]$
     58 : "try twice, first time, shouldn't trigger because option name is invallid, second time, it should trigger$
     59 :call setbufvar(1, '&l:bk', 1)$
     60 : "should trigger, use correct option name$
     61 :call setbufvar(1, '&backup', 1)$
     62 :let g:testcase="14: Setting number option using setwinvar\n"$
     63 :let g:options=[['number', 0, 1, 'local']]$
     64 :call setwinvar(0, '&number', 1)$
     65 :" Write register now, because next test shouldn't output anything.$
     66 :$put r$
     67 :let @r=''$
     68 :let g:testcase="\n15: Setting key option, shouldn't trigger\n"$
     69 :let g:options=[['key', 'invalid', 'invalid1', 'invalid']]$
     70 :setlocal key=blah$
     71 :setlocal key=$
     72 :$put =g:testcase$
     73 :$put r$
     74 :/^dummy text/,$w! test.out$
     75 :qa!$
     76 ENDTEST$
     77 dummy text$:noa set nolist nonu
:let g:testcase="13: Setting option backspace through setbufvar()\n":let g:options=[['backup', '', '1', 'local']]: "try twice, first time, shouldn't trigger because option name is invalid, secoond time, it should trigger:call setbufvar(1, '&l:bk', 1): "should trigger, use correct option name:call setbufvar(1, '&backup', 1):let g:testcase="14: Setting number option using setwinvar\n":let g:options=[['number', 0, 1, 'local']]:call setwinvar(0, '&number', 1):" Write register now, because next test shouldn't output anything.:$put r:let @r='':let g:testcase="\n15: Setting key option, shouldn't trigger\n":let g:options=[['key', 'invalid', 'invalid1', 'invalid']]:setlocal key=blah:setlocal key=:$put =g:testcase:$put r:/^dummy text/,$w! test.out:qa!ENDTESTdummy text:let g:testcase="8: Setting global acd\n"
:let g:options=[['autochdir', 0, 1, 'global']]
:setlocal acd
:let g:testcase="9: Setting global autoread\n"
:let g:options=[['autoread', 0, 1, 'global']]
:set ar
:let g:testcase="10: Setting local autoread\n"
:let g:options=[['autoread', 0, 1, 'local']]
:setlocal ar
:let g:testcase="11: Setting global autoread\n"
:let g:options=[['autoread', 1, 0, 'global']]
:setglobal invar
:let g:testcase="12: Setting option backspace through :let\n"
:let g:options=[['backspace', '', 'eol,indent,start', 'global']]
:let &bs="eol,indent,start"
:let g:testcase="13: Setting option backspace through setbufvar()\n"
:let g:options=[['backup', '', '1', 'local']]
: "try twice, first time, shouldn't trigger because option name is invalid, sec

ond time, it should trigger
:let g:testcase="13: Setting option backspace through setbufvar()\n"
:call setbufvar(1, '&l:bk', 1)
E355: Unknown option: l:bk: "should trigger, use correct option name
:call setbufvar(1, '&backup', 1)
:let g:testcase="14: Setting number option using setwinvar\n"
:let g:options=[['number', 0, 1, 'local']]
:call setwinvar(0, '&number', 1)
     56 :let g:testcase="13: Setting option backspace through setbufvar()\n"
     57 :let g:options=[['backup', '', '1', 'local']]
     58 : "try twice, first time, shouldn't trigger because option name is invallid, second time, it should trigger
     59 :call setbufvar(1, '&l:bk', 1)
     60 : "should trigger, use correct option name
     61 :call setbufvar(1, '&backup', 1)
     62 :let g:testcase="14: Setting number option using setwinvar\n"
     63 :let g:options=[['number', 0, 1, 'local']]
     64 :call setwinvar(0, '&number', 1)
     65 :" Write register now, because next test shouldn't output anything.
     66 :$put r
     67 :let @r=''
     68 :let g:testcase="\n15: Setting key option, shouldn't trigger\n"
     69 :let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
     70 :setlocal key=blah
     71 :setlocal key=
     72 :$put =g:testcase
     73 :$put r
     74 :/^dummy text/,$w! test.out
     75 :qa!
     76 ENDTEST
     77 dummy text:" Write register now, because next test shouldn't output anything.
:$put r
60 more lines117Autocmd Option: <autoread>, OldVal: <0>, NewVal: <1>, Scope: <global>11811910: Setting local autoread    120 Expected: Name: <autoread>, Oldval: <0>, NewVal: <1>, Scope: <local>121Autocmd Option: <autoread>, OldVal: <1>, NewVal: <1>, Scope: <local>12212311: Setting global autoread124Expected: Name: <autoread>, Oldval: <1>, NewVal: <0>, Scope: <global>125Autocmd Option: <autoread>, OldVal: <1>, NewVal: <0>, Scope: <global>12612712: Setting option backspace through :let128Expected: Name: <backspace>, Oldval: <>, NewVal: <eol,indent,start>, Scoope: <global>129Autocmd Option: <backspace>, OldVal: <>, NewVal: <eol,indent,start>, Scoope: <global>131313: Setting option backspace through setbufvar()13Expected: Name: <backup>, Oldval: <>, NewVal: <1>, Scope: <local>13Autocmd Option: <backup>, OldVal: <0>, NewVal: <1>, Scope: <local>131314: Setting number option using setwinvar13xpected: Name: <number>, Oldval: <0>, NewVal: <1>, Scope: <local>13Autocmd Option: <number>, OldVal: <0>, NewVal: <1>, Scope: <local>:let @r=''
:let g:testcase="\n15: Setting key option, shouldn't trigger\n"
:let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
:setlocal key=blah
:setlocal key=
:$put =g:testcase


    138 
    139 15: Setting key option, shouldn't trigger
:$put r

    140 
:/^dummy text/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 64 lines, 2700 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_autocmd_option = test61; then \
#	  if diff test.out test_autocmd_option.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_autocmd_option.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autocmd_option.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_autoformat_join.failed test.ok test.out X* viminfo
cp test_autoformat_join.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autoformat_join.in
[?1h="test_autoformat_join.in" 23 lines, 524 charactersTests for setting the '[,'] marks when joining lines.

STARTTEST
:so small.vim
:/^\t\t/
0gqj:
:let a=string(getpos("'[")).'/'.string(getpos("']"))
:/^This line/;'}-join
:let b=string(getpos("'[")).'/'.string(getpos("']"))
:$put ='First test: Start/End '.string(a)
:$put ='Second test: Start/End '.string(b)
:/^\t\t/,$wq! test.out
ENDTESTO sodales, ludite, vos qui
attamen consulite per voster honur. Tua pulchra facies me fay planszer milies

This line.
Should be joined with the next line
and with this line

Results::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for setting the '[,'] marks when joining lines./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 9 lines, 265 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:/^\t\t/
attamen consulite per voster honur.
Tua pulchra facies me fay planszer milies::let a=string(getpos("'[")).'/'.string(getpos("']"))
:/^This line/;'}-join


This line.  Should be joined with the next line and with this line


~
~:let b=string(getpos("'[")).'/'.string(getpos("']"))
:$put ='First test: Start/End '.string(a)
First test: Start/End '[0, 16, 1, 0]/[0, 17, 1, 0]'
:$put ='Second test: Start/End '.string(b)
Second test: Start/End '[0, 19, 11, 0]/[0, 19, 67, 0]'
:/^\t\t/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 8 lines, 292 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_autoformat_join = test61; then \
#	  if diff test.out test_autoformat_join.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_autoformat_join.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autoformat_join.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_breakindent.failed test.ok test.out X* viminfo
cp test_breakindent.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_breakindent.in
[?1h="test_breakindent.in" 122 lines, 3678 charactersTest for breakindent

STARTTEST
:so small.vim
:if !exists("+breakindent") | e! test.ok | w! test.out | qa! | endif
:10new|:vsp|:vert resize 20
:put =\"\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP\"
:set ts=4 sw=4 sts=4 breakindent
:fu! ScreenChar(line, width)
:let c=''
:for i in range(1,a:width)
:let c.=nr2char(screenchar(a:line, i))
:endfor
:let c.="\n"
:for i in range(1,a:width)
:let c.=nr2char(screenchar(a:line+1, i))
:endfor
:let c.="\n"
:for i in range(1,a:width)
:let c.=nr2char(screenchar(a:line+2, i))
:endfor
:return c
:endfu:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for breakindent/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 117 lines, 3627 characters written:set ff& cpo+=A
/ENDTEST:$put =line2
:"
:let g:test="Test 14: breakindent + visual blockwise delete #1"
:set all& breakindent viminfo+=nviminfo
:30vnew
:normal! 3a1234567890
:normal! a    abcde
:exec "normal! 0\<C-V>tex"
:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
:"
:let g:test="Test 15: breakindent + visual blockwise delete #2"
:%d
:normal! 4a1234567890
:exec "normal! >>\<C-V>3f0x"
:let line1=ScreenChar(line('.'),20)
:call DoRecordScreen()
:quit!
:"
:%w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
:if !exists("+breakindent") | e! test.ok | w! test.out | qa! | endif
:10new|:vsp|:vert resize 20
            ||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            ~~~~~~~~~[No Name]                                                  %dnormal! 4a1234567890
:exec "normal! >>\<C-V>3f0x"
:let line1=ScreenChar(line('.'),20)
:call DoRecordScreen()quit!"%w! test.out
:qaENDTEST
dummy text
test_breakindent.in                                                             :put =\"\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP\"
        abcdefghijkl
mnopqrstuvwxyzABCDEF
GHIJKLMNOP          [+] abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP[+]:set ts=4 sw=4 sts=4 breakindent
abcdefghijklmnop
qrstuvwxyzABCDEFGHIJ
KLMNOP    abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP:fu! ScreenChar(line, width)

:  :^Ilet c=''

:  :^Ifor i in range(1,a:width)

:    :^I^Ilet c.=nr2char(screenchar(a:line, i))

:    :^Iendfor

:  :       let c.="\n"

:  :^Ifor i in range(1,a:width)

:    :^I^Ilet c.=nr2char(screenchar(a:line+1, i))

:    :^Iendfor

:  :       let c.="\n"

:  :^Ifor i in range(1,a:width)

:    :^I^Ilet c.=nr2char(screenchar(a:line+2, i))

:    :^Iendfor

:  :^Ireturn c

:  :endfu
|
    abcdefghijklmnop|
qrstuvwxyzABCDEFGHIJ|
KLMNOP|||||||~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP~~~~~~~~[No Name] [+]                                              :%d
:normal! 4a1234567890
:exec "normal! >>\<C-V>3f0x":fu DoRecordScreen()

:  :^Iwincmd l

:  :^I$put =printf(\"\n%s\", g:test)

:  :^I$put =g:line1

:  :^Iwincmd p

:  :endfu
|
    abcdefghijklmnop|
qrstuvwxyzABCDEFGHIJ|
KLMNOP||
~                   abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP~~~:set briopt=min:0
    qrstuvwxyzABCDEF
    GHIJKLMNOP:let g:test="Test 1: Simple breakindent"
:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                    
Test 1: Simple break
indent              
    abcd            
    qrst            
    GHIJ            Test 1: Simple breakindent    abcd    qrst    GHIJ:let g:test="Test 2: Simple breakindent + sbr=>>"
:set sbr=>>
>>qrstuvwxyzABCD
    >>EFGHIJKLMNOP


>>indent:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                           Test 1: Simple breakindent                                     abcd                                                       qrst                                                       GHIJ                                                   ~                                                          ~                                                          ~                                                                                                                                                                                Test 2: Simple breakindent + sbr=>>    abcd>>qr>>EF3 more lines:let g:test ="Test 3: Simple breakindent + briopt:sbr"
:set briopt=sbr,min:0 sbr=++
++  qrstuvwxyzABCDEF
++  GHIJKLMNOP    


++:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                           Test 2: Simple breakindent + sbr=>>                            abcd                                                       >>qr                                                       >>EF                                                                                                                                                                                                                                                                                                                                                          Test 3: Simple breakindent + briopt:sbrabcd++  qrst++  GHIJ3 more lines:let g:test ="Test 4: Simple breakindent + min width: 18"
:set sbr= briopt=min:18
  qrstuvwxyzABCDEFGH
  IJKLMNOP    


indent  :let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                           Test 3: Simple breakindent + briopt:sbr                        abcd                                                   ++  qrst                                                   ++  GHIJ                                                                                                                                                                                                                                                                                                                                                          Test 4: Simple breakindent + min width: 18abcdqrstuvIJKLMN3 more lines:let g:test =" Test 5: Simple breakindent + shift by 2"
:set briopt=shift:2,min:0
    qrstuvwxyzABCD
      EFGHIJKLMNOP


  indent:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                           Test 4: Simple breakindent + min width: 18                     abcd                                                     qrstuv                                                     IJKLMN                                                                                                                                                                                                                                                                                                                                                          Test 5: Simple breakindent + shift by 2abcdqrEF3 more lines:let g:test=" Test 6: Simple breakindent + shift by -1"
:set briopt=shift:-1,min:0
qrstuvwxyzABCDEFG
   HIJKLMNOP      


indent  :let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                            Test 5: Simple breakindent + shift by 2                       abcd                                                         qr                                                         EF                                                                                                                                                                                                                                                                                                                                                          Test 6: Simple breakindent + shift by -1abcdqrstuHIJKL3 more lines:let g:test=" Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr"
:set briopt=shift:1,sbr,min:0 nu sbr=? nuw=4
  1 
  2     abcdefghijkl
?        mnopqrstuvw
?        xyzABCDEFGH
?IJKLMNOP
  3                 
  4 Test 1: Simple b
?    reakindent
  5     abcd
  6     qrst:let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
3 more lines                                                            Test 6: Simple breakindent + shift by -1                      abcd                                                      qrstu                                                      HIJKL                                                                                                                                                                                                                                                                                                                                                          Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr2     ab?m?x3 more lines:let g:test=" Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr"
:set briopt=shift:1,sbr,min:0 nu sbr=# list
$^Iabcdefghijklmn
#      opqrstuvwxyzA
#      BCDEFGHIJKLMN
#      OP$       $

#$$$:let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
3 more lines                                                            Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr   2     ab                                                 ?        m                                                 ?        x                                                                                                                                                                                                                                                                                                                                                        Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr2 ^Iabcd#      opq#      BCD3 more lines:let g:test=" Test 9: breakindent + shift by +1 + 'nu' + sbr=# list"
:set briopt-=sbr
       #opqrstuvwxyz
       #ABCDEFGHIJKL
       #MNOP$


     #reakindent$:let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
3 more lines                                                            Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr  2 ^Iabcd                                                 #      opq                                                 #      BCD                                                                                                                                                                                                                                                                                                                                                        Test 9: breakindent + shift by +1 + 'nu' + sbr=# list2 ^Iabcd#op#AB3 more lines:let g:test=" Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n"
:set cpo+=n sbr=~ nu nuw=4 nolist briopt=sbr,min:0
     abcdefghijkl
~       mnopqrstuvwx
~       yzABCDEFGHIJ
~       KLMNOP 

~   reakindent     :let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
3 more lines                                                            Test 9: breakindent + shift by +1 + 'nu' + sbr=# list       2 ^Iabcd                                                        #op                                                        #AB                                                                                                                                                                                                                                                                                                                                                        Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n2     ab~mn~yz3 more lines:wincmd p
[No Name] [+]        [No Name] [+]                                              :let g:test="\n Test 11: strdisplaywidth when breakindent is on"
:set cpo-=n sbr=>> nu nuw=4 nolist briopt= ts=4
    >>
    >>
    >>


    >>reakindent 44  Test 9: breakindent + shift by +1 + 'nu' + sbr=# list 45   2 ^Iabcd 46        #op 47        #AB 48  49  Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+    >>=n 50   2     ab 51 ~       mn 52 ~       yz:let text=getline(2) "skip leading tab when calculating text width
:let width = strlen(text[1:])+indent(2)*4+strlen(&sbr)*3 " text wraps 3 times
:$put =g:test
 46        #op                                              47        #AB                                              48                                                         49  Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+    >>=n                                                    50   2     ab                                              51 ~       mn                                              52 ~       yz                                                                                                                                                                    53  54  Test 11: strdisplaywidth when breakindent is on:$put =printf(\"strdisplaywidth: %d == calculated: %d\", strdisplaywidth(text),

width)
  1 | 47 #AB89Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+  >>=n50  2     ab1~       mn2yz34Test 11: strdisplaywidth when breakindent is on5strdisplaywidth: 46 == calculated: 64:let g:str="\t\t\t\t\t{"
:let g:test=" Test 12: breakindent + long indent"
:wincmd p
[No Name] [+]        [No Name] [+]                                              :set all& breakindent linebreak briopt=min:10 nu numberwidth=3 ts=4
 1 |
 2 |abcdefghijklm|nopqrstuvwxyz|ABCDEFGHIJKLM|NOP|
 3 |
 4 Test 1: Simple   |
   breakindent      |
 5     abcd|
[No Name]             47 #AB 48  49  Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n 50   2     ab 51 ~mn 52 ~yz 53  54  Test 11: strdisplaywidth when breakindent is on 55 strdisplaywidth: 46 == calculated: 64[No Name]                                                  :%d
:normal! 4a1234567890
:exec "normal! >>\<C-V>3f0x"
:let line1=ScreenChar(line('.'),20)
:call DoRecordScreen()
:quit!
:"
:%w! test.out
:qa!
ENDTEST
dummy text
test_breakindent.in                                                             :$put =g:str
54Test 11:
    strdisplaywidth
    when            
    breakindent is  
    on              
55 strdisplaywidth:
   46 ==
   calculated: 64
56            
             {[+][+]56                  
             {      
                    
                    
                    
                    
                    
                    
                    
                    ~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   :let line1=ScreenChar(1,10)
:wincmd p
[No Name] [+]        [No Name] [+]                                              :call DoRecordScreen()
3 more lines57                  
58  Test 12:        
    breakindent +   
    long indent     
59 56               
60                  
61 ~                

[No Name] [+]         52 ~       yz                                              53                                                         54  Test 11: strdisplaywidth when breakindent is on        55 strdisplaywidth: 46 == calculated: 64                                                                                                                                                                                                                                                                                                                                                                                     56 { 57  58  Test 12: breakindent + long indent 59 56 60  61 ~[No Name] [+]                                              3 more lines:"
:" Test, that the string "    a\tb\tc\td\te" is correctly
:" displayed in a 20 column wide window (see bug report
:" https://groups.google.com/d/msg/vim_dev/ZOdg2mc9c9Y/TT8EhFjEy0IJ
:only
   {57 8Test 12: breakindent + long indent956       60           61 ~         ~~~~~~~~~~~~~~~~:vert 20new
 1||||||||||||||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            56 {57 58  Test 12: breakindent + long indent59 5660 61 ~~~~~~~~~~~~~~~~~[No Name] [+]                                              :set all& nocp breakindent briopt=min:10
||||||||||||||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            56 {57 58  Test 12: breakindent + long indent59 5660 61 ~~~~~~~~~~~~~~~~~[No Name] [+]                                              :call setline(1, ["    a\tb\tc\td\te", "    z   y       x       w       v"])
a   bc
        d   e       
    z   y       x   
        w       v   [+]:/^\s*a
search hit BOTTOM, continuing at TOPa   :let line1 = @0
:?^\s*z
search hit TOP, continuing at BOTTOMz   :let line2 = @0
:quit!
56              {57 58  Test 12: breakindent + long indent59 56    60           61 ~         ~:$put ='Test 13: breakindent with wrapping Tab'
62 Test 13: breakindent with wrapping Tab:$put =line1
63 d:$put =line2
64 w:"
:let g:test="Test 14: breakindent + visual blockwise delete #1"
:set all& breakindent viminfo+=nviminfo
{

 Test 12: breakindent + long indent
56

~
Test 13: breakindent with wrapping Tab
d
w
~
~
~
~
~
~
~
~
~
~
~
~
~
~:30vnew
||||||||||||||||||||||~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
[No Name]                       { Test 12: breakindent + long indent56~Test 13: breakindent with wrapping Tabdw~~~~~~~~~~~~~[No Name]                                        :normal! 3a1234567890
123456789012345678901234567890[+]:normal! a    abcde
    abcde                     :exec "normal! 0\<C-V>tex"
e                             
~                             :let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more linesTest 14: breakindent + visual blockwise delete #1e~~[+]:"
:let g:test="Test 15: breakindent + visual blockwise delete #2"
:%d
 --No lines in buffer--:normal! 4a1234567890
123456789012345678901234567890
1234567890                    :exec "normal! >>\<C-V>3f0x"
        1234567890            
~                             :let line1=ScreenChar(line('.'),20)
:call DoRecordScreen()
3 more linesTest 15: breakindent + visual blockwise delete #2 1234567890~~:quit!
strdisplaywidth: 46 == calculated: 64                               { Test 12: breakindent + long indent
56                  ~         Test 13: breakindent with wrapping Tab
dwTest 14: breakindent + visual blockwise delete #1
e       ~       ~       Test 15: breakindent + visual blockwise delete #2
        1234567890  ~                   ~                   ~:"
:%w! test.out
"test.out" [New] 74L, 1210C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_breakindent = test61; then \
#	  if diff test.out test_breakindent.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_breakindent.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_breakindent.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_changelist.failed test.ok test.out X* viminfo
cp test_changelist.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_changelist.in
[?1h="test_changelist.in" 22 lines, 288 charactersTest changelist position after splitting window
Set 'undolevels' to make changelist for sourced file

STARTTEST
:so small.vim
Gkylp:set ul=100
Gylp:set ul=100
gg
:vsplit
:try
:  normal g;
:  normal ggVGcpass^[
:catch
:  normal ggVGcfail^[
:finally
:  %w! test.out
:endtry
:qa!
ENDTEST

1
2
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test changelist position after splitting window/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 14 lines, 163 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim


11:set ul=100

22:set ul=100

:vsplit
|
 window                                 |
Set 'undolevels' to make changelist for |
sourced file|
             |
STARTTEST       |
:so small.vim  |
Gkylp:set ul=100|
Gylp:set ul=100|
gg  |
:vsplit     |
:try                 |
:  normal g;|pass|
:catch  |
:  normal ggVGcfail^[|
:finally|
:  %w! test.out|
:endtry|
:qa!|
ENDTEST|
  |
test_changelist.in [+]                   Test changelist position after splitting windowSet 'undolevels' to make changelist forsourced fileSTARTTEST:so small.vimGkylp:set ul=100Gylp:set ul=100gg:vsplit:try:  normal g;:  normal ggVGcpass^[:catch:  normal ggVGcfail^[:finally:  %w! test.out:endtry:qa!ENDTESTtest_changelist.in [+]                 :try

:  :  normal g;

:  :  normal ggVGcpass
21 fewer lines
:  

:  :catch

:  :  normal ggVGcfail

:  

:  :finally

:  :  %w! test.out

"test.out" [New File] 1 line, 5 characters written

:  :endtry
pass||||||||||~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                          pass~~~~~~~~~~~~~~~~~~~~~   :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_changelist = test61; then \
#	  if diff test.out test_changelist.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_changelist.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_changelist.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_close_count.failed test.ok test.out X* viminfo
cp test_close_count.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_close_count.in
[?1h="test_close_count.in" 153 lines, 2665 charactersTests for :[count]close! and :[count]hide     vim: set ft=vim :

STARTTEST
:so small.vim
:let tests = []
:for i in range(5)
:new
:endfor
:4wincmd w
:close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:$close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
:2close!:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :[count]close! and :[count]hide     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 41 lines, 749 characters written:set ff& cpo+=A
/ENDTEST:call add(tests, buffers)
:2wincmd w
:+1close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(0, map(copy(tests), 'join(v:val, " ")'))
:w
:only!
:b1
ENDTEST

STARTTEST
:let tests = []
:for i in range(5)
:new
:endfor
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:4wincmd w
:.hide
:so! Xdotest
:so small.vim
:let tests = []
:for i in range(5)

:  :new

:  :endfor
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ENDTEST

test_close_count.in                                                             :4wincmd w
[No Name]                                                                       [No Name]                                                                       :close!
~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :b1
ENDTEST

test_close_count.in                                                             :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       test_close_count.in                                                             :call add(tests, buffers)
:1close!
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :only!
:b1
ENDTEST

STARTTEST
test_close_count.in                                                             


:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:$close!
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :2close!
~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :new
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :new
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :2wincmd w
[No Name]                                                                       [No Name]                                                                       :-1close!
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:2wincmd w
[No Name]                                                                       [No Name]                                                                       :+1close!
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
"test.out" [New File]test.out :call append(0, map(copy(tests), 'join(v:val, " ")'))
6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5[+]:w
"test.out" [New File] 7 lines, 39 characters written   :only!
6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5~~~~~~~
~~:b1
"test_close_count.in" 153 lines, 2665 characters:2wincmd w
:+1close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(0, map(copy(tests), 'join(v:val, " ")'))
:w
:only!
:b1
ENDTESTSTARTTEST
:let tests = []
:for i in range(5)
:new
:endfor
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:4wincmd w
:.hide
:let buffers = []/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 44 lines, 815 characters written:set ff& cpo+=A
/ENDTEST:2wincmd w
:+hide
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
Go^[
:w
:only!
:b1
ENDTEST

STARTTEST
:let tests = []
:set hidden
:for i in range(5)
:new
:endfor
:1wincmd w
:$ hide
:let buffers = []
:windo call add(buffers, bufnr('%'))
:so! Xdotest
:let tests = []
:for i in range(5)

:  :new

:  :endfor
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ENDTEST

test_close_count.in                                                             :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       test_close_count.in                                                             :call add(tests, buffers)
:4wincmd w
[No Name]                                                                       test_close_count.in                                                             :.hide
~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :b1
ENDTEST

test_close_count.in                                                             :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       test_close_count.in                                                             :call add(tests, buffers)
:1hide
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :only!
:b1
ENDTEST

STARTTEST
test_close_count.in                                                             


:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:$hide
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :2hide
~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :new
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :new
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :3wincmd w
[No Name]                                                                       [No Name]                                                                       :-hide
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:2wincmd w
[No Name]                                                                       [No Name]                                                                       :+hide
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
"test.out" 7 lines, 39 characters6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5test.out :call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
13 12 11 10 9 1
13 12 11 9 1
12 11 9 1
12 11 9[+]


12 9
15 12 9
15 12


:w
"test.out" 15 lines, 106 characters written   :only!
6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 513 12 11 10 9 1
13 12 11 9 1
12 11 9 1
12 11 912 915 12 9
15 12~~~~~~
~~:b1
:+hide:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
Go^[
:w:only!:b1ENDTESTSTARTTEST
:let tests = []
:set hidden
:for i in range(5)
:new
:endfor
:1wincmd w
:$ hide
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
"test_close_count.in" line 93 of 153 --60%-- col 1/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 25 lines, 448 characters written:set ff& cpo+=A
/ENDTEST:1wincmd w
:.+close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
Go^[
:w
:only!
:b1
ENDTEST

STARTTEST
:let tests = []
:set hidden
:for i in range(5)
:new
:endfor
:4wincmd w
^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:so! Xdotest
:let tests = []
:set hidden
:for i in range(5)

:  :new

:  :endfor
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ENDTEST

test_close_count.in                                                             :1wincmd w
:$ hide
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:$-1 close!
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :.+close!
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:e! test.out
"test.out" 15 lines, 106 characters6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5
test.out :call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
[+]15 12 915 120 19 18 17 16
20 19 18 16
20 18 16



:w
"test.out" 19 lines, 143 characters written   :only!
6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5

13 12 11 10 9 1
13 12 11 9 1
12 11 9 1
12 11 9
12 9
15 12 9
15 12

20 19 18 17 16
20 19 18 16
20 18 16

~
~
~
~:b1
:.+close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
Go^[
:w:only!:b1ENDTESTSTARTTEST
:let tests = []
:set hidden
:for i in range(5)
:new:endfor:4wincmd w
^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
"test_close_count.in" line 121 of 153 --79%-- col 1/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 28 lines, 511 characters written:set ff& cpo+=A
/ENDTEST


















1^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
9^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
2^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:only!
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
:w
:qa!
ENDTEST

:so! Xdotest
:let tests = []
:set hidden
:for i in range(5)

:  :new

:  :endfor
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ENDTEST

test_close_count.in                                                             :4wincmd w
[No Name]                                                                       [No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :qa!
ENDTEST

test_close_count.in                                                             :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       test_close_count.in                                                             :call add(tests, buffers)
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
:w
:qa!
ENDTEST

test_close_count.in                                                             


:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       ~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:only!
~
~~:e! test.out
"test.out" line 19 of 19 --100%-- col 16 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 513 12 11 10 9 1
13 12 11 9 1
12 11 9 1
12 11 9
12 9
15 12 9
15 1220 19 18 17 16
20 19 18 16
20 18 16:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
25 24 23 21 1
24 23 21 1
24 23 21
24 21:w
"test.out" 23 lines, 183 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_close_count = test61; then \
#	  if diff test.out test_close_count.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_close_count.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_close_count.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_comparators.failed test.ok test.out X* viminfo
cp test_comparators.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_comparators.in
[?1h="test_comparators.in" 21 lines, 283 characters" Test for expression comparators.   vim: set ft=vim :


STARTTEST
:so small.vim
:try
:  let oldisident=&isident
:  set isident+=#
:  if 1 is#1
:    $put ='ok'
:  else
:    $put ='ng'
:  endif
:finally
:  let &isident=oldisident
:endtry
:"
:/^marker/+1,$wq! test.out
ENDTEST

marker
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
" Test for expression comparators.   vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 14 lines, 200 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:try

:  :  let oldisident=&isident

:  :  set isident+=#

:  :  if 1 is#1

:    :    $put ='ok'

:    :  else

:    :    $put ='ng'

:    :  endif

:  :finally

:  :  let &isident=oldisident

:  :endtry
" Test for expression comparators.   vim: set ft=vim :


STARTTEST
:so small.vim
:try
:  let oldisident=&isident
:  set isident+=#
:  if 1 is#1
:    $put ='ok'ok

:"
:/^marker/+1,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 1 line, 3 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_comparators = test61; then \
#	  if diff test.out test_comparators.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_comparators.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_comparators.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_erasebackword.failed test.ok test.out X* viminfo
cp test_erasebackword.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_erasebackword.in
[?1h="test_erasebackword.in" 19 lines, 427 charactersTest for erasing backword

STARTTEST
:so small.vim
:so mbyte.vim
:set encoding=utf-8
G
:/^test/,$w! test.out
:qa!
ENDTEST

test starts here:

~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for erasing backword/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 12 lines, 362 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:so mbyte.vim
:set encoding=utf-8
Test for erasing backword

STARTTEST
:so small.vim
:so mbyte.vim
:set encoding=utf-8
G
o wwwこんにちわ世界ワールドvim ^W^[
o wwwこんにちわ世界ワールドvim ^W^W^[
o wwwこんにちわ世界ワールドvim ^W^W^W^[
o wwwこんにちわ世界ワールドvim ^W^W^W^W^[
o wwwこんにちわ世界ワールドvim ^W^W^W^W^W^[
o wwwこんにちわ世界ワールドvim ^W^W^W^W^W^W^[
:/^test/,$w! test.out
:qa!
ENDTEST

test starts here:

~
~
~
~


 wwwこんにちわ世界ワールド
 wwwこんにちわ世界ワール
 wwwこんにちわ世界ワール
 wwwこんにちわ世界ワール
wwwこんにちわ世界ワール
wwwこんにちわ世界ワール
:/^test/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 8 lines, 111 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_erasebackword = test61; then \
#	  if diff test.out test_erasebackword.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_erasebackword.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_erasebackword.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_eval.failed test.ok test.out X* viminfo
cp test_eval.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_eval.in
[?1h="test_eval.in" 247 lines, 6201 charactersTest for various eval features.   vim: set ft=vim :

Note: system clipboard is saved, changed and restored.

clipboard contents
something else

STARTTEST
:so small.vim
:set encoding=latin1
:set noswapfile
:lang C
:fun AppendRegContents(reg)
  call AppendRegParts(a:reg, getregtype(a:reg), getreg(a:reg), string(getreg(a:rreg, 0, 1)), getreg(a:reg, 1), string(getreg(a:reg, 1, 1)))
:endfun
:fun AppendRegParts(reg, type, cont, strcont, cont1, strcont1)
  call append('$', printf('%s: type %s; value: %s (%s), expr: %s (%s)', a:reg, aa:type, a:cont, a:strcont, a:cont1, a:strcont1))
endfun
:command -nargs=? AR :call AppendRegContents(<q-args>)
:fun SetReg(...)
    call call('setreg', a:000):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for various eval features.   vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 233 lines, 6010 characters written:set ff& cpo+=A
/ENDTEST:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]
:unlet nn
:let b:nn = 4
:$put =str[b:nn:]
:$put =str[:b:nn]
:$put =str[b:nn:b:nn]
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start:
:so! Xdotest
:so small.vim
:set encoding=latin1
:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]
:unlet nn
:let b:nn = 4
:$put =str[b:nn:]
:$put =str[:b:nn]
:$put =str[b:nn:b:nn]
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start::set noswapfile
:lang C
:fun AppendRegContents(reg)

:    call AppendRegParts(a:reg, getregtype(a:reg), getreg(a:reg), string(getreg

(a:reg, 0, 1)), getreg(a:reg, 1), string(getreg(a:reg, 1, 1)))

:  :endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n:fun AppendRegParts(reg, type, cont, strcont, cont1, strcont1)

:    call append('$', printf('%s: type %s; value: %s (%s), expr: %s (%s)', a:re

g, a:type, a:cont, a:strcont, a:cont1, a:strcont1))

:  endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n:command -nargs=? AR :call AppendRegContents(<q-args>)
:fun SetReg(...)

:      call call('setreg', a:000)

:      call append('$', printf('{{{2 setreg(%s)', string(a:000)[1:-2]))

:      call AppendRegContents(a:1)

:      if a:1 isnot# '='

:            execute "silent normal! Go==\n==\e\"".a:1."P"

:        endif

:  endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]:fun ErrExe(str)

:      call append('$', 'Executing '.a:str)

:      try

:            execute a:str

:        catch

:            $put =v:exception

:        endtry

:  endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]:fun Test()

:  $put ='{{{1 let tests'

:  let @" = 'abc'

:  AR "

:  let @" = "abc\n"

:  AR "

:  let @" = "abc\<C-m>"

:  AR "

:  let @= = '"abc"'

:  AR =

:  

:  $put ='{{{1 Basic setreg tests'

:  call SetReg('a', 'abcA', 'c')

:  call SetReg('b', 'abcB', 'v')

:  call SetReg('c', 'abcC', 'l')

:  call SetReg('d', 'abcD', 'V')

:  call SetReg('e', 'abcE', 'b')

:  call SetReg('f', 'abcF', "\<C-v>")

:  call SetReg('g', 'abcG', 'b10')

:  call SetReg('h', 'abcH', "\<C-v>10")

:  call SetReg('I', 'abcI')

:  

:  $put ='{{{1 Appending single lines with setreg()'

:  call SetReg('A', 'abcAc', 'c')

:  call SetReg('A', 'abcAl', 'l')

:  call SetReg('A', 'abcAc2','c')

:  call SetReg('b', 'abcBc', 'ca')

:  call SetReg('b', 'abcBb', 'ba')

:  call SetReg('b', 'abcBc2','ca')

:  call SetReg('b', 'abcBb2','b50a')

:  

:  call SetReg('C', 'abcCl', 'l')

:  call SetReg('C', 'abcCc', 'c')

:  call SetReg('D', 'abcDb', 'b')

:  

:  call SetReg('E', 'abcEb', 'b')

:  call SetReg('E', 'abcEl', 'l')

:  call SetReg('F', 'abcFc', 'c')

:  

:  $put ='{{{1 Appending NL with setreg()'

:  call setreg('a', 'abcA2', 'c')

:  call setreg('b', 'abcB2', 'v')

:  call setreg('c', 'abcC2', 'l')

:  call setreg('d', 'abcD2', 'V')

:  call setreg('e', 'abcE2', 'b')

:  call setreg('f', 'abcF2', "\<C-v>")

:  call setreg('g', 'abcG2', 'b10')

:  call setreg('h', 'abcH2', "\<C-v>10")

:  call setreg('I', 'abcI2')

:  

:  call SetReg('A', "\n")

:  call SetReg('B', "\n", 'c')

:  call SetReg('C', "\n")

:  call SetReg('D', "\n", 'l')

:  call SetReg('E', "\n")

:  call SetReg('F', "\n", 'b')

:  

:  $put ='{{{1 Setting lists with setreg()'

:  call SetReg('a', ['abcA3'], 'c')

:  call SetReg('b', ['abcB3'], 'l')

:  call SetReg('c', ['abcC3'], 'b')

:  call SetReg('d', ['abcD3'])

:  call SetReg('e', [1, 2, 'abc', 3])

:  call SetReg('f', [1, 2, 3])

:  

:  $put ='{{{1 Appending lists with setreg()'

:  call SetReg('A', ['abcA3c'], 'c')

:  call SetReg('b', ['abcB3l'], 'la')

:  call SetReg('C', ['abcC3b'], 'lb')

:  call SetReg('D', ['abcD32'])

:  

:  call SetReg('A', ['abcA32'])

:  call SetReg('B', ['abcB3c'], 'c')

:  call SetReg('C', ['abcC3l'], 'l')

:  call SetReg('D', ['abcD3b'], 'b')

:  

:  $put ='{{{1 Appending lists with NL with setreg()'

:  call SetReg('A', ["\n", 'abcA3l2'], 'l')

:  call SetReg('B', ["\n", 'abcB3c2'], 'c')

:  call SetReg('C', ["\n", 'abcC3b2'], 'b')

:  call SetReg('D', ["\n", 'abcD3b50'],'b50')

:  

:  $put ='{{{1 Setting lists with NLs with setreg()'

:  call SetReg('a', ['abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4

-4-2"])

:  call SetReg('b', ['abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\na

bcB4c-4-2"], 'c')

:  call SetReg('c', ['abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\na

bcC4l-4-2"], 'l')

:  call SetReg('d', ['abcD4b-0', "\n", "abcD4b-2\n", "\nabcD4b-3", "abcD4b-4\na

bcD4b-4-2"], 'b')

:  call SetReg('e', ['abcE4b10-0', "\n", "abcE4b10-2\n", "\nabcE4b10-3", "abcE4

b10-4\nabcE4b10-4-2"], 'b10')

:  

:  $put ='{{{1 Search and expressions'

:  call SetReg('/', ['abc/'])

:  call SetReg('/', ["abc/\n"])

:  call SetReg('=', ['"abc/"'])

:  call SetReg('=', ["\"abc/\n\""])

:  $put ='{{{1 System clipboard'

:  if has('clipboard')

:    " Save and restore system clipboard.

:    " If no connection to X-Server is possible, test should succeed.

:    let _clipreg = ['*', getreg('*'), getregtype('*')]

:    let _clipopt = &cb

:    let &cb='unnamed'

:    5y

:    AR *

:    tabdo :windo :echo "hi"

:    6y

:    AR *

:    let &cb=_clipopt

:    call call('setreg', _clipreg)

:    else

:      call AppendRegParts('*', 'V', "clipboard contents\n", "['clipboard conte

nts']", "clipboard contents\n", "['clipboard contents']")

:      call AppendRegParts('*', 'V', "something else\n", "['something else']", 

"something else\n", "['something else']")

:    endif

:  $put ='{{{1 Errors'

:  call ErrExe('call setreg()')

:  call ErrExe('call setreg(1)')

:  call ErrExe('call setreg(1, 2, 3, 4)')

:  call ErrExe('call setreg([], 2)')

:  call ErrExe('call setreg(1, {})')

:  call ErrExe('call setreg(1, 2, [])')

:  call ErrExe('call setreg("/", ["1", "2"])')

:  call ErrExe('call setreg("=", ["1", "2"])')

:  call ErrExe('call setreg(1, ["", "", [], ""])')

:  endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]
:unlet nn
:let b:nn = 4
:$put =str[b:nn:]
:$put =str[:b:nn]
:$put =str[b:nn:b:nn]
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start::"
:call Test()
hi*: type V; value: something else^@ (['something else']), expr: something else^@  (['something else'])
{{{1 Errors
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)
Vim(call):E118: Too many arguments for function: setreg
Executing call setreg([], 2)
Vim(call):E730: using List as a String
Executing call setreg(1, {})
Vim(call):E731: using Dictionary as a String
Executing call setreg(1, 2, [])
Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore lines
Executing call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a String
:"
:delfunction SetReg
:delfunction AppendRegContents
:delfunction ErrExe
:delfunction Test
:delcommand AR
:call garbagecollect(1)
:"
:" function name not starting with capital
:try

:  :func! g:test()

:  :echo "test"

:  :endfunc

:  :catch

:  :$put =v:exception

:  :endtry
{{{1 Errors
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)8: Too many arguments for function: setreg[], 2)730: using List as a String1, {}1Dictionary as a String2, [])0List as a String"/", ["1", "2"])883: search pattern and expression register may not contain two or moore linesExecuting call setreg("=", ["1", "2"])Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg(1, ["", "", [], ""])Vim(call):E730: using List as a String
Vim(function):E128: Function name must start with a capital or "s:": g:test()~

:"
:" function name includes a colon
:try

:  :func! b:test()

:  :echo "test"

:  :endfunc

:  :catch

:  :$put =v:exception

:  :endtry
{{{1 Errors
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)Vim(function):E128: Function name must start with a capital or "s:": b:test()
:"
:" function name folowed by #
:try

:  :func! test2() "#

:  :echo "test2"

:  :endfunc

:  :catch

:  :$put =v:exception

:  :endtry
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)
Vim(call):E118: Too many arguments for function: setreg
Executing call setreg([], 2)Vim(call):E730: using List as a String
Executing call setreg(1, {})Vim(call):E731: using Dictionary as a String
Executing call setreg(1, 2, [])Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a Stringfunction):E128: Function name must start with a capital or "s:": g:test()btest2() "#
:"
:" function name starting with/without "g:", buffer-local funcref.
:function! g:Foo(n)

:  :  $put ='called Foo(' . a:n . ')'

:  :endfunction
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
:let b:my_func = function('Foo')
:call b:my_func(1)

called Foo(1)
:echo g:Foo(2)
0
called Foo(2)
:echo Foo(3)
0
called Foo(3)
:"
:" script-local function used in Funcref must exist.
:so test_eval_func.vim




s:Testje exists: 0
func s:Testje exists: 1
Bar exists: 1
func Bar exists: 1
:"
:" Using $ instead of '$' must give an error
:try

:  : call append($, 'foobar')

:  :catch

:  :$put =v:exception

:  :endtry
Executing call setreg(1, {})
Vim(call):E731: using Dictionary as a String
Executing call setreg(1, 2, [])
Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a Stringfunction):E128: Function name must start with a capital or "s:": g:test()btest2() "#
called Foo(123
s:Testje exists: 0
func s:Testje exists: 1
Bar exists: 1func Bar exists: 1
Vim(call):E116: Invalid arguments for function append
:"
:$put ='{{{1 getcurpos/setpos'

{{{1 getcurpos/setpos
/^012345678
search hit BOTTOM, continuing at TOP:let b:nn = 4
:$put =str[b:nn:]
:$put =str[:b:nn]
:$put =str[b:nn:b:nn]
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start:
{{{1 let tests
": type v; value: abc (['abc']), expr: abc (['abc'])
": type V; value: abc^@ (['abc']), expr: abc^@ (['abc'])
": type V; value: abc^M^@ (['abc^M']), expr: abc^M^@ (['abc^M'])
=: type v; value: abc (['abc']), expr: "abc" (['"abc"'])
{{{1 Basic setreg tests
{{{2 setreg('a', 'abcA', 'c')
a: type v; value: abcA (['abcA']), expr: abcA (['abcA'])
search hit BOTTOM, continuing at TOP012345:let sp = getcurpos()

:call setpos('.', sp)
:$put
Executing call setreg(1, 2, [])
Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore lines
Executing call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore lines
Executing call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a String
Vim(function):E128: Function name must start with a capital or "s:": g:test()
Vim(function):E128: Function name must start with a capital or "s:": b:test()
Vim(function):E128: Function name must start with a capital or "s:": test2() "#
called Foo(1)
called Foo(2)
called Foo(3)
s:Testje exists: 0
func s:Testje exists: 1
Bar exists: 1
func Bar exists: 1
Vim(call):E116: Invalid arguments for function append
{{{1 getcurpos/setpos
6
:"
:" substring and variable name
:let str = 'abcdef'
:let n = 3
:$put =str[n:]

def
:$put =str[:n]

abcd
:$put =str[n:n]

d
:unlet n
:let nn = 3
:$put =str[nn:]


def
~

:$put =str[:nn]
abcd
:$put =str[nn:nn]

d
:unlet nn
:let b:nn = 4
:$put =str[b:nn:]


ef
~

:$put =str[:b:nn]
abcde
:$put =str[b:nn:b:nn]

e
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 362 lines, 11279 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_eval = test61; then \
#	  if diff test.out test_eval.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_eval.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_eval.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_fixeol.failed test.ok test.out X* viminfo
cp test_fixeol.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_fixeol.in
[?1h="test_fixeol.in" 40 lines, 780 charactersTests for 'fixeol'vim: set ft=vim :

STARTTEST
:" use Unix fileformat for consistency
:set ff=unix
:enew!
awith eol^[:w! XXEol
:enew!
:set noeol nofixeol
awithout eol^[:w! XXNoEol
:set eol fixeol
:bwipe XXEol XXNoEol
:"
:" try editing files with 'fixeol' disabled
:e! XXEol
ostays eol^[:set nofixeol
:w! XXTestEol
:e! XXNoEol
ostays without^[:set nofixeol
:w! XXTestNoEol
:bwipe XXEol XXNoEol XXTestEol XXTestNoEol
:set fixeol:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for 'fixeol'vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 35 lines, 698 characters written:set ff& cpo+=A
/ENDTEST















:"
:" Append "END" to each file so that we can see what the last written char was.
ggdGaEND^[:w >>XXEol
:w >>XXNoEol
:w >>XXTestEol
:w >>XXTestNoEol
:"
:" Concatenate the results
:e! test.out
a0^[:$r XXEol
:$r XXNoEol
Go1^[:$r XXTestEol
:$r XXTestNoEol
:w
:qa!
ENDTEST

~with eol:w! XXEol
"XXEol" [New File] 1 line, 9 characters written:enew!
:set noeol nofixeol
without eol:w! XXNoEol
"XXNoEol" [New File][Incomplete last line] 1 line, 11 characters written:set eol fixeol
:bwipe XXEol XXNoEol
"test_fixeol.in" 40 lines, 780 characters

2 buffers wiped out

Press ENTER or type command to continue:"
:w! XXTestEol
:e! XXNoEol
ostays without^[:set nofixeol
:w! XXTestNoEol
:bwipe XXEol XXNoEol XXTestEol XXTestNoEol
:set fixeol
:"
:" Append "END" to each file so that we can see what the last written char was.
ggdGaEND^[:w >>XXEol
:w >>XXNoEol
:w >>XXTestEol
:w >>XXTestNoEol
:"
:" Concatenate the results
:e! test.out
a0^[:$r XXEol
:$r XXNoEol
Go1^[:$r XXTestEol
:$r XXTestNoEol
:w
:qa!
ENDTEST
:" try editing files with 'fixeol' disabled
:e! XXEol
"XXEol" 1 line, 9 characterswith eol~~~~~~~~~~~~~~~~~~~~~
~
stays eol:set nofixeol
:w! XXTestEol
"XXTestEol" [New File] 2 lines, 19 characters written:e! XXNoEol
"XXNoEol" [Incomplete last line] 1 line, 11 charactersout eol~
stays without:set nofixeol
:w! XXTestNoEol
"XXTestNoEol" [New File][Incomplete last line] 2 lines, 25 characters written:bwipe XXEol XXNoEol XXTestEol XXTestNoEol
"test_fixeol.in" 40 lines, 780 characters

4 buffers wiped out

Press ENTER or type command to continue:set fixeol
:w! XXTestEol
:e! XXNoEol
ostays without^[:set nofixeol
:w! XXTestNoEol
:bwipe XXEol XXNoEol XXTestEol XXTestNoEol
:set fixeol
:"
:" Append "END" to each file so that we can see what the last written char was.
ggdGaEND^[:w >>XXEol
:w >>XXNoEol
:w >>XXTestEol
:w >>XXTestNoEol
:"
:" Concatenate the results
:e! test.out
a0^[:$r XXEol
:$r XXNoEol
Go1^[:$r XXTestEol
:$r XXTestNoEol
:w
:qa!
ENDTEST
:"
:" Append "END" to each file so that we can see what the last written char was.
Tests for 'fixeol'vim: set ft=vim :

STARTTEST
:" use Unix fileformat for consistency
:set ff=unix
:enew!
awith eol^[:w! XXEol
:enew!
:set noeol nofixeol
awithout eol^[:w! XXNoEol
:set eol fixeol
:bwipe XXEol XXNoEol
:"
:" try editing files with 'fixeol' disabled
:e! XXEol
ostays eol^[:set nofixeol~~~~~~~~~~~~~~~~~~~~~~
--No lines in buffer--END:w >>XXEol
"XXEol" 1 line, 4 characters appended:w >>XXNoEol
"XXNoEol" 1 line, 4 characters appended:w >>XXTestEol
"XXTestEol" 1 line, 4 characters appended:w >>XXTestNoEol
"XXTestNoEol" 1 line, 4 characters appended:"
:" Concatenate the results
:e! test.out
"test.out" [New File]0:$r XXEol
"XXEol" 2 lines, 13 characterswith eol
END:$r XXNoEol
"XXNoEol" 1 line, 15 characterswithout eolEND

1:$r XXTestEol
"XXTestEol" 3 lines, 23 characterswith eol
stays eol
END:$r XXTestNoEol
"XXTestNoEol" 2 lines, 29 characterswithout eol
stays withoutEND:w
"test.out" [New File] 10 lines, 84 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_fixeol = test61; then \
#	  if diff test.out test_fixeol.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_fixeol.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_fixeol.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_getcwd.failed test.ok test.out X* viminfo
cp test_getcwd.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_getcwd.in
[?1h="test_getcwd.in" 96 lines, 2374 charactersTests for getcwd(), haslocaldir(), and :lcdvim: set ft=vim :

STARTTEST
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xtopdir directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a swapfile in Xtopdir prevents it from being cleaned up.
:set noswapfile
:"
:function! GetCwdInfo(win, tab)
: let tab_changed = 0
: let mod = ":t"
: if a:tab > 0 && a:tab != tabpagenr()
:   let tab_changed = 1
:   exec "tabnext " . a:tab
: endif
: let bufname = fnamemodify(bufname(winbufnr(a:win)), mod)
: if tab_changed:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for getcwd(), haslocaldir(), and :lcdvim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 90 lines, 2273 characters written:set ff& cpo+=A
/ENDTEST:wincmd W
:lcd Xdir2
:call add(r, GetCwdInfo(0, 0))
:wincmd W
:lcd Xdir3
:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("x"), 0))
:call add(r, GetCwdInfo(bufwinnr("y"), 0))
:call add(r, GetCwdInfo(bufwinnr("z"), 0))
:let tp_nr = tabpagenr()
:tabrewind
:call add(r, GetCwdInfo(3, tp_nr))
:call add(r, GetCwdInfo(2, tp_nr))
:call add(r, GetCwdInfo(1, tp_nr))
:"
:call writefile(r, test_out, "a")
:q
:exec "cd " . cwd
:call delete("Xtopdir", "rf")
:qa!
ENDTEST



:so! Xdotest
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xtopdir directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a swapfile in Xtopdir prevents it from being cleaned up.
:set noswapfile
:"
:function! GetCwdInfo(win, tab)

:  : let tab_changed = 0

:  : let mod = ":t"

:  : if a:tab > 0 && a:tab != tabpagenr()

:    :   let tab_changed = 1

:    :   exec "tabnext " . a:tab

:    : endif

:  : let bufname = fnamemodify(bufname(winbufnr(a:win)), mod)

:  : if tab_changed

:    :   tabprevious

:    : endif

:  : if a:win == 0 && a:tab == 0

:    :   let dirname = fnamemodify(getcwd(), mod)

:    :   let lflag = haslocaldir()

:    : elseif a:tab == 0

:    :   let dirname = fnamemodify(getcwd(a:win), mod)

:    :   let lflag = haslocaldir(a:win)

:    : else

:    :   let dirname = fnamemodify(getcwd(a:win, a:tab), mod)

:    :   let lflag = haslocaldir(a:win, a:tab)

:    : endif

:  : return bufname . ' ' . dirname . ' ' . lflag

:  :endfunction
:wincmd W
:lcd Xdir2
:call add(r, GetCwdInfo(0, 0))
:wincmd W
:lcd Xdir3
:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("x"), 0))
:call add(r, GetCwdInfo(bufwinnr("y"), 0))
:call add(r, GetCwdInfo(bufwinnr("z"), 0))
:let tp_nr = tabpagenr()
:tabrewind
:call add(r, GetCwdInfo(3, tp_nr))
:call add(r, GetCwdInfo(2, tp_nr))
:call add(r, GetCwdInfo(1, tp_nr))
:"
:call writefile(r, test_out, "a")
:q
:exec "cd " . cwd
:call delete("Xtopdir", "rf")
:qa!
ENDTEST


:" On windows a stale "Xtopdir" directory may exist, remove it so that
:" we start from a clean state.
:call delete("Xtopdir", "rf")
:let r=[]
:new
~~~~~~~~~~
[No Name]                                                                       test_getcwd.in                                                                  :let cwd=getcwd()
:let test_out = cwd . '/test.out'
:call mkdir('Xtopdir')
:cd Xtopdir
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtopdir/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test_getcwd.in:call mkdir('Xdir1')
:call mkdir('Xdir2')
:call mkdir('Xdir3')
:new a
"a" [New File]~
~
~
~
~
~
a                                                                               ~
~
~
~
~
~
[No Name]                                                                       :q
:exec "cd " . cwd
:call delete("Xtopdir", "rf")
:qa!
ENDTEST

/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test_getcwd.in               :new b
"b" [New File]~
~
~
~
b                                                                               ~
~
~
~
a                                                                               ~
~
~
~
[No Name]                                                                       :call delete("Xtopdir", "rf")
:qa!
ENDTEST

/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test_getcwd.in               :new c
"c" [New File]~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       :qa!
ENDTEST

/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test_getcwd.in               :3wincmd w
c                                                                               a                                                                               :lcd Xdir1
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtopdir/Xdir1/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtopdir/c/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtopdir/b/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtopdir/a:call add(r, GetCwdInfo(0, 0))
:wincmd W
c                                                           b                                                                               a                                                                               :call add(r, GetCwdInfo(0, 0))
:wincmd W
c                                                                               b                                                                               :lcd Xdir3
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtopdir/Xdir3/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtopdir/c/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtopdir/b/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtopdir/a:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("a"), 0))
:call add(r, GetCwdInfo(bufwinnr("b"), 0))
:call add(r, GetCwdInfo(bufwinnr("c"), 0))
:wincmd W
c                                                                               b                                                           a                                                           /<<PKGBUILDDIR>>/src/vim-gtk/testdir/test_getcwd.in               :call add(r, GetCwdInfo(bufwinnr("a"), tabpagenr()))
:call add(r, GetCwdInfo(bufwinnr("b"), tabpagenr()))
:call add(r, GetCwdInfo(bufwinnr("c"), tabpagenr()))
:"
:tabnew x
"x" [New File] 5 /b/v/v/s/v/t/test_getcwd.in | x _____________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:new y
"y" [New File]2 y _Xy                                                                               x                                                                               :new z
"z" [New File] 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
~
~
~
z                                                                               ~
~
~
~
~
y                                                                               ~
~
~
~
~
x                                                                               :3wincmd w
z                                                                               x                                                                               x_X:call add(r, GetCwdInfo(0, 0))
:wincmd W
y                                                                               x                                                                               y_X:lcd Xdir2
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtopdir/Xdir2/b/v/v/s/v/t/X/y _X/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtopdir/z/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtopdir/y/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtopdir/x:call add(r, GetCwdInfo(0, 0))
:wincmd W
z ________________Xz                                                                               y                                                                               x                                                           :lcd Xdir3
/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtopdir/Xdir3/b/v/v/s/v/t/X/z _X/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtopdir/z/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtopdir/y/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtopdir/x:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("x"), 0))
:call add(r, GetCwdInfo(bufwinnr("y"), 0))
:call add(r, GetCwdInfo(bufwinnr("z"), 0))
:let tp_nr = tabpagenr()
:tabrewind
 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       ENDTEST

/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test_getcwd.in               

:call add(r, GetCwdInfo(3, tp_nr))
 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       ENDTEST

/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test_getcwd.in               

:call add(r, GetCwdInfo(2, tp_nr))
 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       ENDTEST

/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test_getcwd.in               

:call add(r, GetCwdInfo(1, tp_nr))
 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       ENDTEST

/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test_getcwd.in               

:"
:call writefile(r, test_out, "a")
:q
 4 [No Name] | 3 z _____________________________________________________________X~
~
~
c                                                                               ~
~
~
~
b                                                                               ~
~
~
a                                                                               ~
~
~
~
[No Name]                                                                       :exec "cd " . cwd
/<<PKGBUILDDIR>>/src/vim-gtk/testdirX/z _XXtopdir/cXtopdir/bXtopdir/a
:call delete("Xtopdir", "rf")
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_getcwd = test61; then \
#	  if diff test.out test_getcwd.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_getcwd.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_getcwd.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_insertcount.failed test.ok test.out X* viminfo
cp test_insertcount.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_insertcount.in
[?1h="test_insertcount.in" 14 lines, 204 charactersTests for repeating insert and replace.

STARTTEST
:so small.vim
:/Second
4gro
:/^First/,$wq! test.out
:" get here when failed and in Insert mode
^[:.wq! test.out
ENDTEST

First line
Second line
Last line
~
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for repeating insert and replace./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 6 lines, 111 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:/Second
ooooecond line
ooo
Las:/^First/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 3 lines, 36 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_insertcount = test61; then \
#	  if diff test.out test_insertcount.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_insertcount.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_insertcount.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_listchars.failed test.ok test.out X* viminfo
cp test_listchars.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listchars.in
[?1h="test_listchars.in" 54 lines, 705 charactersTests for 'listchars' display with 'list' and :list

STARTTEST
:so small.vim
:set ff=unix
:let g:lines = []
:function GetScreenCharsForLine(lnum)
:  return join(map(range(1, virtcol('$')), 'nr2char(screenchar(a:lnum, v:val))')), '')
:endfunction
:nnoremap <expr> GG ":call add(g:lines, GetScreenCharsForLine(".screenrow()."))\\<CR>"
:set listchars+=tab:>-,space:.,trail:<
:set list
:
/^start:/
:normal! jzt
GG
GG
GG
GG
GGH:
:set listchars-=trail:<:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for 'listchars' display with 'list' and :list/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 25 lines, 431 characters written:set ff& cpo+=A
/ENDTEST








GG
GG
GG
GG
GG:
:put =g:lines
:'[,']w! test.out
ENDTEST

:so! Xdotest
:so small.vim
:set ff=unix
:let g:lines = []
:function GetScreenCharsForLine(lnum)

:  :  return join(map(range(1, virtcol('$')), 'nr2char(screenchar(a:lnum, v:val

))'), '')

:  :endfunction
:endfunction
:nnoremap <expr> GG ":call add(g:lines, GetScreenCharsForLine(".screenrow()."))\\<CR>"
:nnoremap <expr> GG ":call add(g:lines, GetScreenCharsForLine(".screenrow()."))

\<CR>"
:endfunction
:set listchars+=tab:>-,space:.,trail:<
:set list
$.<expr>.GG.":call..\\<CR>"$
:set.$
:set.list$
:$$.jzt$
GG$
GG$
GG$
GG$
GGH:$
:set.$
GG$
GG$
GG$
GG$
GG:$
:put.$.$$
$:/^start:/

start:$
:normal! jzt
>-------aa>-----$
..bb>---<<$
...cccc><$
dd........ee<<>-$
<$
$
$
STARTTEST$
:set.listchars+=trail:<$
:set.nolist$
:$
/^start:/$
:redir!.>>.test.out$
:+1,$list$
:redir.END$
:q!$
ENDTEST$
$
start:$
..fff>--<<$
>-------gg>-----$
.....h>-$
iii<<<<><<$:call add(g:lines, GetScreenCharsForLine(1))

:call add(g:lines, GetScreenCharsForLine(2))

:call add(g:lines, GetScreenCharsForLine(3))

:call add(g:lines, GetScreenCharsForLine(4))

:call add(g:lines, GetScreenCharsForLine(5))
::set listchars-=trail:<
.....
.......>..:call add(g:lines, GetScreenCharsForLine(1))
:call add(g:lines, GetScreenCharsForLine(2))
:call add(g:lines, GetScreenCharsForLine(3))
:call add(g:lines, GetScreenCharsForLine(4))

:call add(g:lines, GetScreenCharsForLine(5))
::put =g:lines
10 more >-------aa>-----$$
..bb>---<<$$
...cccc><$$
dd........ee<<>-$$
<$$
>-------aa>-----$$
..bb>---..$$
...cccc>.$$
dd........ee..>-$$
.$$10 more lines:'[,']w! test.out
"test.out" [New File] 10 lines, 124 characters written/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 8 lines, 93 characters written:set ff& cpo+=A
/ENDTEST



:+1,$list$
:redir.END$
:q!$
ENDTEST$
$
:so! Xdotest
:set listchars+=trail:<
:set nolist
   >>  :/^start:/

start:
:redir! >> test.out
:+1,$list
..fff>--<<$

>-------gg>-----$

.....h>-$

iii<<<<><<$

Press ENTER or type command to continue:redir END
>-------aa>-----$
..bb>---..$
...cccc>.$
dd........ee..>-$
.$STARTTEST:set listchars+=trail:<
:set nolist
:
/^start:/
:redir! >> test.out+1,$listredir END
:q!ENDTESTstart:  fff
        ggh
iii   
:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_listchars = test61; then \
#	  if diff test.out test_listchars.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_listchars.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listchars.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_listlbr.failed test.ok test.out X* viminfo
cp test_listlbr.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr.in
[?1h="test_listlbr.in" 119 lines, 2868 charactersTest for linebreak and list option (non-utf8)

STARTTEST
:so small.vim
:if !exists("+linebreak") || !has("conceal") | e! test.ok | w! test.out | qa! |  endif
:10new|:vsp|:vert resize 20
:put =\"\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \"
:norm! zt
:set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
:fu! ScreenChar(width)
:let c=''
:for j in range(1,4)
:for i in range(1,a:width)
:let c.=nr2char(screenchar(j, i))
:endfor
:let c.="\n"
:endfor
:return c
:endfu
:fu! DoRecordScreen()
:wincmd l
:$put =printf(\"\n%s\", g:test):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for linebreak and list option (non-utf8)/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 114 lines, 2792 characters written:set ff& cpo+=A
/ENDTESTabcd{ef
ghijklm
no}pqrs^[2k0f{^V^Vc%^[
:"
:let g:test ="Test 11: using block replace mode after wrapping"
:$put =g:test
:set linebreak wrap
Go^[150aa^[yypk147|^Vjr0
:"
:let g:test ="Test 12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$":set list listchars=space:_,trail:-,tab:>-,eol:$
:$put =g:test
:let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
:if !exists("+linebreak") || !has("conceal") | e! test.ok | w! test.out | qa! |

endif
abcd{ef
:10new|:vsp|:vert resize 20
       ||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            ~~~~~~~~~[No Name]                                                  let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =linenorm! zt
:redraw!let line=ScreenChar(winwidth(0))
:call DoRecordScreen()%w! test.outqaENDTEST
dummy text
test_listlbr.in                                                                 :put =\"\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \"
        abcdef hijkl
mn  pqrstuvwxyz_1060
ABCDEFGHIJKLMNOP    [+] abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP[+]:norm! zt
        abcdef hijkl
mn  pqrstuvwxyz_1060
ABCDEFGHIJKLMNOP    
~                   
~                   
~                   
~                   
~                   
~                   
                    
~                   :set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
abcdef          
+hijklmn            
+pqrstuvwxyz_1060ABC
+DEFGHIJKLMNOP      abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP :fu! ScreenChar(width)

:  :^Ilet c=''

:  :^Ifor j in range(1,4)

:    :^I    for i in range(1,a:width)

:      :^I    ^Ilet c.=nr2char(screenchar(j, i))

:      :^I    endfor

:    :           let c.="\n"

:    :^Iendfor

:  :^Ireturn c

:  :endfu
abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      ||||||~                   
~                   
~                   
~                   
~                   abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP~~~~~~~:fu! DoRecordScreen()

:  :^Iwincmd l

:  :^I$put =printf(\"\n%s\", g:test)

:  :^I$put =g:line

:  :^Iwincmd p

:  :endfu
abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      ||
~                   abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP~~~:"
:let g:test="Test 1: set linebreak"
:redraw!
abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      |||||||~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP~~~~~~~~[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines                    
Test 1: set         
+linebreak          
    abcdef          
+hijklmn            
+pqrstuvwxyz_1060ABCTest 1: set linebreak    abcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP:"
:let g:test="Test 2: set linebreak + set list"
:set linebreak list listchars=
^Iabcdef hijklmn^I  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP      
              
Test 1: set
+linebreak 
    abcdef
+hijklmn  
+pqrstuvwxyz_1060ABC
+DEFGHIJKLMNOP      :redraw!
^Iabcdef hijklmn^I  |
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      ||
Test 1: set|
+linebreak|
    abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      |
[No Name] [+]        abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOPTest 1: set linebreakabcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP~~[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines    abcdef                                                 +hijklmn                                                   +pqrstuvwxyz_1060ABC                                       +DEFGHIJKLMNOP                                             ~                                                          ~                                                                                                                                                                                                                                                                                                      Test 2: set linebreak + set list^Iabcdef hijklmn^I+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP4 more lines:"
:let g:test ="Test 3: set linebreak nolist"
:set nolist linebreak
    abcdef          hijklmn            pqrstuvwxyz_1060ABC
+DEFGHIJKLMNOP
           
Test 1: set
+linebreak
    abcdef
+hijklmn            
+pqrstuvwxyz_1060ABC:redraw!
abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      ||
Test 1: set|
+linebreak|
    abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
[No Name] [+]        abcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOPTest 2: set linebreak + set list^Iabcdef hijklmn^I+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines^Iabcdef hijklmn^I                                         +pqrstuvwxyz_1060ABC                                       +DEFGHIJKLMNOP                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Test 3: set linebreak nolistabcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP4 more lines:"
:let g:test ="Test 4: set linebreak with tab and 1 line as long as screen: shou

ld break!"
abcdef|^Iabcdef hijklmn^I:set nolist linebreak ts=8
    abcdef:let line="1\t".repeat('a', winwidth(0)-2)
:$put =line
      
        
Test 3: set         linebreak nolist
    abcdef
+hijklmn   
+pqrstuvwxyz_1060ABC
+DEFGHIJKLMNOP
1       
+aaaaaaaaaaaaaaaaaa :$
:norm! zt
1                   
+aaaaaaaaaaaaaaaaaa 
                    
                    
                    
                    
                    
                    
                    
                    ~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   :redraw!
1|
+aaaaaaaaaaaaaaaaaa |||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        ^Iabcdef hijklmn^I+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOPTest 3: set linebreak nolistabcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines                    
Test 4: set         
+linebreak with tab 
+and 1 line as long 
+as screen: should  
+break!             
1                   
+aaaaaaaaaaaaaaaaaa +pqrstuvwxyz_1060ABC                                       +DEFGHIJKLMNOP                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     1aaaaaaaaaaaaaaaaaaTest 4: set linebreak with tab and 1 line as long as screen+: should break!1+aaaaaaaaaaaaaaaaaa~~4 more lines:let line="_S_\t bla"
:$put =line
Test 4: set         
+linebreak with tab 
+and 1 line as long 
+as screen: should  
+break!             
1                   
+aaaaaaaaaaaaaaaaaa 
                    
                    
                    ~
~
_S_      bla:$
:norm! zt
_S_      bla        
                    
                    
                    
                    
                    
                    
                    
                    
                    ~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   :"
:let g:test ="Test 5: set linebreak with conceal and set list and tab displayed

by different char (line may not be truncated)"
_S_      bla|+pqrstuvwxyz_1060ABC:set cpo&vim list linebreak conceallevel=2 concealcursor=nv listchars=tab:ab
abbbb:syn match ConcealVar contained /_/ conceal
:syn match All /.*/ contains=ConcealVar
Sabb:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines                    
Test 5: set         
+linebreak with     
+conceal and set    
+list and tab       
+displayed by       
+different char     
+(line may not be   
+truncated)         ~                                                          ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  _S_      blaTest 5: set linebreak with conceal and set list and tab dis+played by different char (line may not be truncated)Sabbbbbb bla~~~4 more lines:set cpo&vim linebreak
:"
:let g:test ="Test 6: set linebreak with visual block mode"
:let line="REMOVE: this not"
:$put =g:test
abbbbbb
~
~          
~              
Test 6: set     nebreak withvisual block mode
~                   
~                   
~                   :$put =line
REMOVE: this not    :let line="REMOVE: aaaaaaaaaaaaa"
:$put =line
REMOVE:             
+aaaaaaaaaaaaa      :1/^REMOVE:
REMOVE: 
REMOVE:this not        
aaaaaaaaaaaaa
~                   :$put
~                   
~                   
~                   
Test 6: set         
+linebreak with     
+visual block mode  
this not            
aaaaaaaaaaaaa       
~                   
                    REMOVE:             
REMOVE::set cpo&vim linebreak
:"
:let g:test ="Test 7: set linebreak with visual block mode and v_b_A"
:$put =g:test
this not            
aaaaaaaaaaaaa       
REMOVE:             
REMOVE:             
                    
                    
                    
                    
                    
                    Test 7: set
+linebreak with
+visual block mode
+and vbA
~                   
~                   long line:           foobar
+foobar foobar      @                   
@                           
             
       
       
           
               
                  
        
                    
                    +foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar             
                    TARGET at
+end:exe "norm! $3B\<C-v>eAx\<Esc>"
x at:set cpo&vim linebreak sbr=
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar TARGETx at 
end played by different char (line may not be truncated):"
:let g:test ="Test 8: set linebreak with visual char mode and changing block"
:$put =g:test
Test 8: set  
linebreak with
visual char mode
and changing block
~                   
~                   
~                   
~                   
~                   
~                   1111-1111-1111-11-  
1111-1111-1111      11122222222:"
:let g:test ="Test 9: using redo after block visual mode"
:$put =g:test
Test 9: using redo  
after block visual  
mode                1111-2222-1111-11-  
1111-2222-1111      
Test 9: using redo  
after block visual  
mode                
~                   
                    
                    
                    
                                        
aaa
aaa
a
~                   a
a3 lines changedA
A
AA
AaA:"
:let g:test ="Test 10: using normal commands after block-visual"
:$put =g:test
Test 9: using redo  
after block visual  
mode                
                    
AaA                 
AaA                 
A                   
~                   
                    
                    Test 10: using      
normal commands
after block-visual:set linebreak
AaA                 
AaA                 
A                   
Test 10: using      
normal commands     
after block-visual  
                    
                    
                    
                    abcd{ef
ghijklm
no}pqrspqrs
~                   
~                   :"
:let g:test ="Test 11: using block replace mode after wrapping"
:$put =g:test
AaA                 
A                   
Test 10: using      
normal commands     
after block-visual  
                    
abcdpqrs            
~                   
~                   
                    Test 11: using      
block replace mode  
after wrapping:set linebreak wrap
A                   
Test 10: using      
normal commands     
after block-visual  
                    
abcdpqrs            
Test 11: using      
block replace mode  
after wrapping      
                    aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaa        
~                   
~                   aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa@                   
@                   @                   
@                   
                    
                    
                    
                    
                    
                    
                    
                    aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaa
~                   
~                   0
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa@                   
@                   @                   
@                   
                    
                    
                    
                    
                    
                    
                    
                    aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaa0aaa
~                   
~                   :"
:let g:test ="Test 12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$

"aaaaaaaaaaaaaaaaaaaa|~:set list listchars=space:_,trail:-,tab:>-,eol:$
$:$put =g:test
Test_12:_set_       
linebreak_list_     
listchars=space:,   
tab:>-,tail:-,eol:$$
~                   
~                   
~                   
~                   :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
a_                  
aaaaaaaaaaaaaaaaaaaa
aa>-----a-$         :$
:norm! zt
a_                  
aaaaaaaaaaaaaaaaaaaa
aa>-----a-$         
~                   
~                   
~                   
                    
                    
                    
                    ~                   
~                   
~                   
~                   :redraw!
a_|
aaaaaaaaaaaaaaaaaaaa|
aa>-----a-$||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        ~~_S_      blaTest 5: set linebreak with conceal and set list and tab displayed by different char (line may not be truncated)Sabbbbbb bla~~~[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines$                   
Test_12:_set_       
linebreak_list_     
listchars=space:,   
tab:>-,tail:-,eol:$$
a------------------ 
$                   Test 12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$a aaaaaaaaaaaaaaaaaaaaaaa12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$a_          aaaaaaaaaaaaaaaaaaaaaa>-----a-$:%w! test.out
"test.out" [New File] 62 lines, 2030 characters writtentest.out     test.out     :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_listlbr = test61; then \
#	  if diff test.out test_listlbr.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_listlbr.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_search_mbyte.failed test.ok test.out X* viminfo
cp test_search_mbyte.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_search_mbyte.in
[?1h="test_search_mbyte.in" 15 lines, 226 charactersTest for search('multi-byte char', 'bce')

STARTTEST
:source small.vim
:source mbyte.vim
:set encoding=utf-8
:/^Test bce:/+1
:$put =search('A', 'bce', line('.'))
:1;/^Results:/,$wq! test.out
ENDTEST

Results:

Test bce:
A
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for search('multi-byte char', 'bce')/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 6 lines, 140 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:source small.vim
:source mbyte.vim
:set encoding=utf-8
Test for search('multi-byte char', 'bce')

STARTTEST
:source small.vim
:source mbyte.vim
:set encoding=utf-8
:/^Test bce:/+1
:$put =search('A', 'bce', line('.'))
:1;/^Results:/,$wq! test.out
ENDTEST

Results:

Test bce:
A
~
~
~
~
~
~
~
~:/^Test bce:/+1
:$put =search('A', 'bce', line('.'))
15
:1;/^Results:/,$wq! test.out
"test.out" [New File] 5 lines, 27 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_search_mbyte = test61; then \
#	  if diff test.out test_search_mbyte.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_search_mbyte.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_search_mbyte.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_utf8.failed test.ok test.out X* viminfo
cp test_utf8.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_utf8.in
[?1h="test_utf8.in" 46 lines, 1245 charactersTests for Unicode manipulationsvim: set ft=vim :

STARTTEST
:so small.vim
:set encoding=utf-8
:"
:" Visual block Insert adjusts for multi-byte char
:new
:exe ":norm! gg0l\<C-V>jjIx\<Esc>"
:let r = getline(1, '$')
:"
:bwipeout!
:$put=r
:"
:" Test for built-in function strchars()
:$put=strchars(str)
:$put=strchars(str, 0)
:$put=strchars(str, 1)
:endfor
:"
:" Test for customlist completion:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for Unicode manipulationsvim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 40 lines, 1151 characters written:set ff& cpo+=A
/ENDTEST:"
:" Test for customlist completion
:function! CustomComplete1(lead, line, pos)
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
:call feedkeys(":Test1 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete2(lead, line, pos)
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
:call feedkeys(":Test2 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete3(lead, line, pos)
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:call garbagecollect(1)
:/^start:/,$wq! test.out
ENDTEST


:so! Xdotest
:so small.vim
:set encoding=utf-8
:" Test for customlist completion
:function! CustomComplete1(lead, line, pos)
:return ['あ', 'い']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
:call feedkeys(":Test1 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete2(lead, line, pos)
:return ['あたし', 'あたま', 'あたりめ']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
:call feedkeys(":Test2 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete3(lead, line, pos)
:return ['Nこ', 'Nん', 'Nぶ']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:call garbagecollect(1)
:/^start:/,$wq! test.out
ENDTEST

:"
:" Visual block Insert adjusts for multi-byte char
:new
~~~~~~~~~~
[No Name]                                                                       function! CustomComplete3(lead, line, pos)
:       return ['Nこ', 'Nん', 'Nぶ']endfunctioncommand -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')"call garbagecollect(1)
:/^start:/,$wq! test.out
ENDTEST test_utf8.in                                                                    :call setline(1, ["aaa", "あああ", "bbb"])
aaa
あああ
bbb[+]:exe ":norm! gg0l\<C-V>jjIx\<Esc>"
xaa
xあああ
bxbb:let r = getline(1, '$')
:"
:bwipeout!
:" Test for customlist completion
:function! CustomComplete1(lead, line, pos)
:       return ['あ', 'い']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
:call feedkeys(":Test1 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete2(lead, line, pos)
:return ['あたし', 'あたま', 'あたりめ']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
:call feedkeys(":Test2 \<C-L>'\<C-B>$put='\<CR>", 'it')"function! CustomComplete3(lead, line, pos)
:       return ['Nこ', 'Nん', 'Nぶ']
:endfunctionommand -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"call garbagecollect(1):/^start:/,$wq! test.out
ENDTEST
 :$put=r
3 more lines



start:
axaa
xあああ
bxbb3 more lines:"
:" Test for built-in function strchars()
:for str in ["a", "あいa", "A\u20dd", "A\u20dd\u20dd", "\u20dd"]

:  :^I$put=strchars(str)

:  :^I$put=strchars(str, 0)

:  :^I$put=strchars(str, 1)

:  :endfor
:call garbagecollect(1)
:/^start:/,$wq! test.out
ENDTEST

start:axaaxあああbxbb11133322133
1111
:"
:" Test for customlist completion
:function! CustomComplete1(lead, line, pos)

:  :^Ireturn ['あ', 'い']

:  :endfunction
:call garbagecollect(1)
:/^start:/,$wq! test.out
:command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
:call feedkeys(":Test1 \<C-L>'\<C-B>$put='\<CR>", 'it')
:Test1 ...'
:$Test1 '
:$pTest1 '
:$puTest1 '
:$putTest1 '
:$put=Test1 ''Test1 '

Test1
:"
:function! CustomComplete2(lead, line, pos)

:  :^Ireturn ['あたし', 'あたま', 'あたりめ']

:  :endfunction
:/^start:/,$wq! test.out
ENDTEST
:command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
:call feedkeys(":Test2 \<C-L>'\<C-B>$put='\<CR>", 'it')
:Test2 ...あた'
:$Test2 あた'
:$pTest2 あた'
:$puTest2 あた'
:$putTest2 あた'
:$put=Test2 あた''Test2 あた'

Test2 あた
:"
:function! CustomComplete3(lead, line, pos)

:  :^Ireturn ['Nこ', 'Nん', 'Nぶ']

:  :endfunction
ENDTEST
:command -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')
:Test3 ...N'
:$Test3 N'
:$pTest3 N'
:$puTest3 N'
:$putTest3 N'
:$put=Test3 N''Test3 N'

Test3 N
:"
:call garbagecollect(1)
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 22 lines, 86 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_utf8 = test61; then \
#	  if diff test.out test_utf8.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_utf8.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_utf8.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_wordcount.failed test.ok test.out X* viminfo
cp test_wordcount.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_wordcount.in
[?1h="test_wordcount.in" 126 lines, 2815 charactersTest for wordcount() function

STARTTEST
:so small.vim
:so mbyte.vim
:set enc=utf8
:set selection=inclusive fileformat=unix fileformats=unix
:new
:fu DoRecordWin(...)
:wincmd k
:if exists("a:1")
:call cursor(a:1)
:endif
:let result=[]
:call add(result, g:test)
:call add(result, getline(1, '$'))
:call add(result, wordcount())
:wincmd j
:return result
:endfu
:fu PutInWindow(args)
:wincmd k
:%d _:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for wordcount() function/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 121 lines, 2753 characters written:set ff& cpo+=A
/ENDTEST:0
v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])
:let log[2]=g:visual_stat
:call Log()
:"
:let g:test="Test 11: visual mode, single line"
:wincmd k
:set ls=2 stl=%{STL()}
:" start visual mode quickly and select complete buffer
:2
0v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])
:let log[2]=g:visual_stat
:call Log()
:"
:/^RESULT test/,$w! test.out
:qa!
ENDTEST
RESULT test:

:so! Xdotest
:so small.vim
:so mbyte.vim
:set enc=utf8
:0
v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])
:let log[2]=g:visual_stat
:call Log()
:"
:let g:test="Test 11: visual mode, single line"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
:wincmd k
:set ls=2 stl=%{STL()}
:" start visual mode quickly and select complete buffer
:2
0v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])
:let log[2]=g:visual_stat
:call Log()
:"
:/^RESULT test/,$w! test.out
:qa!
ENDTEST
RESULT test:

:set selection=inclusive fileformat=unix fileformats=unix
:new
~~~~~~~~~~
[No Name]                                                                       0v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])[2]=g:visual_statcall Log()"/^RESULT test/,$w! test.out
:qa!ENDTEST
RESULT test:
test_wordcount.in                                                               :fu DoRecordWin(...)

:  :^Iwincmd k

:  :       if exists("a:1")

:    :           call cursor(a:1)

:    :       endif

:  :       let result=[]

:  :       call add(result, g:test)

:  :       call add(result, getline(1, '$'))

:  :       call add(result, wordcount())

:  :^Iwincmd j

:  :       return result

:  :endfu
~
~
~
~
~
~
~
~
~
~:fu PutInWindow(args)

:  :       wincmd k

:  :       %d _

:  :       call append(1, a:args)

:  :^Iwincmd j

:  :endfu
~
~
~
~:fu Log()

:  :   $put ='----'

:  :   $put =remove(g:log,0)

:  :   $put =string(g:log)

:  :endfu
~
~
~:fu! STL()

:  :    if mode() =~? 'V'

:    :       let g:visual_stat=wordcount()

:    :    endif

:  :    return string(wordcount())

:  :endfu
~
~
~
~:let g:test="Test 1: empty window"
:let log=DoRecordWin()
[No Name]                                                                       test_wordcount.in                                                               :call Log()




----
Test 1: empty window
[[''], {'chars': 0, 'cursor_chars': 0, 'words': 0, 'cursor_words': 0, 'bytes': 00, 'cursor_bytes': 0}][+]


:"
:let g:test="Test 2: some words, cursor at start"
:call PutInWindow('one two three')
one two three[+]:let log=DoRecordWin([1,1,0])
:call Log()




----
Test 2: some words, cursor at start
[['', 'one two three'], {'chars': 15, 'cursor_chars': 1, 'words': 3, 'cursor_worrds': 0, 'bytes': 15, 'cursor_bytes': 1}]


:"
:let g:test="Test 3: some words, cursor at end"
:call PutInWindow('one two three')
--No lines in buffer--:let log=DoRecordWin([2,99,0])
:call Log()




----
Test 3: some words, cursor at end
[['', 'one two three'], {'chars': 15, 'cursor_chars': 14, 'words': 3, 'cursor_woords': 3, 'bytes': 15, 'cursor_bytes': 14}]


:"
:let g:test="Test 4: some words, cursor at end, ve=all"
:set ve=all
:call PutInWindow('one two three')
--No lines in buffer--:let log=DoRecordWin([2,99,0])
:call Log()




----
Test 4: some words, cursor at end, ve=all
[['', 'one two three'], {'chars': 15, 'cursor_chars': 15, 'words': 3, 'cursor_woords': 3, 'bytes': 15, 'cursor_bytes': 15}]


:set ve=
:"
:let g:test="Test 5: several lines with words"
:call PutInWindow(['one two three', 'one two three', 'one two three'])
one two three
one two three--No lines in buffer--:let log=DoRecordWin([4,99,0])
:call Log()




----
Test 5: several lines with words
[['', 'one two three', 'one two three', 'one two three'], {'chars': 43, 'cursor__chars': 42, 'words': 9, 'cursor_words': 9, 'bytes': 43, 'cursor_bytes': 42}]


:"
:let g:test="Test 6: one line with BOM set"
:call PutInWindow('one two three')
~~--No lines in buffer--:wincmd k
[No Name] [+]                                                                   test_wordcount.in [+]                                                           :set bomb
:w! Xtest
"Xtest" [New File] 2 lines, 18 characters writtenXtest        :wincmd j
Xtest                                                                           test_wordcount.in [+]                                                           :let log=DoRecordWin([2,99,0])
:call Log()




----
Test 6: one line with BOM set
[['', 'one two three'], {'chars': 15, 'cursor_chars': 14, 'words': 3, 'cursor_woords': 3, 'bytes': 18, 'cursor_bytes': 14}]


:wincmd k
Xtest                                                                           test_wordcount.in [+]                                                           :set nobomb
[+]:w!
"Xtest" 2 lines, 15 characters written   :wincmd j
Xtest                                                                           test_wordcount.in [+]                                                           :"
:let g:test="Test 7: one line with multibyte words"
:call PutInWindow(['Äne M¤ne Müh'])
Äne M¤ne Müh[+]--No lines in buffer--:let log=DoRecordWin([2,99,0])
:call Log()




----
Test 7: one line with multibyte words
[['', 'Äne M¤ne Müh'], {'chars': 14, 'cursor_chars': 13, 'words': 3, 'cursor_worrds': 3, 'bytes': 17, 'cursor_bytes': 16}]


:"
:let g:test="Test 8: several lines with multibyte words"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
und raus bist dü!--No lines in buffer--:let log=DoRecordWin([3,99,0])
:call Log()




----
Test 8: several lines with multibyte words
[['', 'Äne M¤ne Müh', 'und raus bist dü!'], {'chars': 32, 'cursor_chars': 31, 'wwords': 7, 'cursor_words': 7, 'bytes': 36, 'cursor_bytes': 35}]


:"
:let g:test="Test 9: visual mode, complete buffer"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
--No lines in buffer--:wincmd k
Xtest [+]                                                                       test_wordcount.in [+]                                                           :set ls=2 stl=%{STL()}
<ursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor_bytes': 1}<: 3985, 'words': 579, 'cursor_words': 560, 'bytes': 4153, 'cursor_bytes': 4007}:" start visual mode quickly and select complete buffer
:0
ords': 7, 'bytes': 36, 'visual_chars': 1, 'visual_words': 0, 'visual 
Äne M¤ne Müh 
und raus bist dü! ds': 7, 'bytes': 36, 'visual_chars': 32, 'visual_words': 7, 'visual_bytes': 36Äne M¤ne Mühnd raus bist dü!3 lines yankedursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor_bytes': 1213:set stl= ls=1
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log=DoRecordWin([3,99,0])
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log[2]=g:visual_stat
:call Log()




----
Test 9: visual mode, complete buffer
[['', 'Äne M¤ne Müh', 'und raus bist dü!'], {'chars': 32, 'words': 7, 'bytes': 336, 'visual_chars': 32, 'visual_words': 7, 'visual_bytes': 36}]


:"
:let g:test="Test 10: visual mode (empty)"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
--No lines in buffer--:wincmd k
Xtest [+]                                                                       test_wordcount.in [+]                                                           :set ls=2 stl=%{STL()}
<ursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor_bytes': 1}<: 4170, 'words': 606, 'cursor_words': 587, 'bytes': 4342, 'cursor_bytes': 4196}:" start visual mode quickly and select complete buffer
:0
ords': 7, 'bytes': 36, 'visual_chars': 1, 'visual_words': 0, 'visualursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor213:set stl= ls=1
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log=DoRecordWin([3,99,0])
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log[2]=g:visual_stat
:call Log()




----
Test 10: visual mode (empty)
[['', 'Äne M¤ne Müh', 'und raus bist dü!'], {'chars': 32, 'words': 7, 'bytes': 336, 'visual_chars': 1, 'visual_words': 0, 'visual_bytes': 1}]


:"
:let g:test="Test 11: visual mode, single line"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
--No lines in buffer--:wincmd k
Xtest [+]                                                                       test_wordcount.in [+]                                                           :set ls=2 stl=%{STL()}
<ursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor_bytes': 1}<: 4347, 'words': 632, 'cursor_words': 613, 'bytes': 4521, 'cursor_bytes': 4377}:" start visual mode quickly and select complete buffer
:2
213ords': 7, 'bytes': 36, 'visual_chars': 1, 'visual_words': 1, 'visual2Äne M¤ne Mühds': 7, 'bytes': 36, 'visual_chars': 13, 'visual_words': 3, 'visual_bytes': 16
Äne M¤ne Mühursor_chars': 2, 'words': 7, 'cursor_words': 1, 'bytes': 36, 'cursor_bytes': 3sor_chars': 15, 'words': 7, 'cursor_words': 4, 'bytes': 36, 'cursor_bytes': 18:set stl= ls=1
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log=DoRecordWin([3,99,0])
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log[2]=g:visual_stat
:call Log()




----
Test 11: visual mode, single line
[['', 'Äne M¤ne Müh', 'und raus bist dü!'], {'chars': 32, 'words': 7, 'bytes': 336, 'visual_chars': 13, 'visual_words': 3, 'visual_bytes': 16}]


:"
:/^RESULT test/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 34 lines, 1905 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_wordcount = test61; then \
#	  if diff test.out test_wordcount.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_wordcount.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_wordcount.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test11.failed test.ok test.out X* viminfo
cp test11.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test11.in
[?1h="test11.in" 84 lines, 3366 charactersTests for autocommands:
- FileWritePrewriting a compressed file
- FileReadPostreading a compressed file
- BufNewFilereading a file template
- BufReadPredecompressing the file to be read
- FilterReadPresubstituting characters in the temp file
- FilterReadPostsubstituting characters after filtering
- FileReadPreset options for decompression
- FileReadPostdecompress the file

Note: This test is skipped if "gzip" is not available.
$GZIP is made empty, "-v" would cause trouble.
Use a FileChangedShell autocommand to avoid a prompt for "Xtestfile.gz" being
modified outside of Vim (noticed on Solaris).

STARTTEST
:so small.vim
:" drop out when there is no gzip program
:if !executable("gzip")
: e! test.ok
: w! test.out
: qa!
:endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for autocommands:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 48 lines, 2298 characters written:set ff& cpo+=A
/ENDTEST:au! FileReadPre    *.gz   exe 'silent !gzip -d ' . shellescape(expand("<afile>""))
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/
:$r Xtestfile.gz" Read compressed file
:w" write it, after filtering
:au!" remove all autocommands
:e" Edit test.out again
:set nobin ff&   " use the default fileformat for writing
:w
:qa!
ENDTEST

startstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 4  Abcdefghijklmnopqrstuvwxyz
line 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 6  Abcdefghijklmnopqrstuvwxyz
line 7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 8  Abcdefghijklmnopqrstuvwxyz
line 9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
:so! Xdotest
:so small.vim
:" drop out when there is no gzip program
:if !executable("gzip")

:  : e! test.ok

:  : w! test.out

:  : qa!

:  :endif
:au! FileReadPre    *.gz   exe 'silent !gzip -d ' . shellescape(expand("<afile>""))
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/:let $GZIP = ""
:au FileChangedShell * echo "caught FileChangedShell"
:set bin
:au FileWritePre    *.gz   '[,']!gzip
:au FileWritePost   *.gz   undo
:/^start of testfile/,/^end of testfile/w! Xtestfile.gz
11 lines filtered
"Xtestfile.gz" [New File][Incomplete last line] 1 line, 111 characters written

10 more lines; before #1  0 seconds ago

Press ENTER or type command to continue:au FileReadPost    *.gz   '[,']!gzip -d
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/
:$r Xtestfile.gz" Read compressed file
:w                           " write it, after filtering
:au!             " remove all autocommandse" Edit test.out againset nobin ff&   " use the default fileformat for writing
:wqa!ENDTESTstartstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx45678910
end of testfile
:$r Xtestfile.gz                " Read and decompress the testfile
"Xtestfile.gz" [Incomplete last line] 1 line, 111 characters







start of test.c
/*
 * Here is a new .c file
 */
end of test.c
start of testfile
:?startstart?,$w! test.out      " Write contents of this file
"test.out" [New File] 29 lines, 788 characters written:au BufNewFile      *.c    read Xtest.c
:/^start of test.c/+1,/^end of test.c/-1w! Xtest.c
search hit BOTTOM, continuing at TOP"Xtest.c" [New File] 3 lines, 32 characters written:e! foo.c                       " Will load Xtest.c
"foo.c" [New File]
"Xtest.c" 3 lines, 32 characters

Press ENTER or type command to continue:au FileAppendPre   *.out  '[,']s/new/NEW/
/*
 * Here is a new .c file
 */~~~~~~~~~~~~
~~~~~~~:au FileAppendPost  *.out  !cat Xtest.c >>test.out
:w>>test.out                    " Append it to the output file
"test.out" 4 lines, 33 characters appended

:!cat Xtest.c >>test.out


Press ENTER or type command to continue:au! FileAppendPre
/*
 * Here is a NEW .c file
 */
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:" setup autocommands to decompress before reading and re-compress afterwards
:au BufReadPre      *.gz   exe '!gzip -d ' . shellescape(expand("<afile>"))
:au BufReadPre      *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au BufReadPost     *.gz   call rename(expand("<afile>"), expand("<afile>:r"))
:au BufReadPost     *.gz   exe '!gzip ' . shellescape(expand("<afile>:r"))
:e! Xtestfile.gz                " Edit compressed file
:!gzip -d 'Xtestfile.gz'

"Xtestfile.gz""Xtestfile.gz" 11 lines, 357 characters:!gzip 'Xtestfile'

caught FileChangedShell

Press ENTER or type command to continue:w>>test.out                    " Append it to the output file
"test.out" 11 lines, 357 characters appended

:!cat Xtest.c >>test.out


Press ENTER or type command to continue:set shelltemp                  " need temp files here
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 4  Abcdefghijklmnopqrstuvwxyz
line 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 6  Abcdefghijklmnopqrstuvwxyz
line 7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 8  Abcdefghijklmnopqrstuvwxyz
line 9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 10 Abcdefghijklmnopqrstuvwxyz
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~:au FilterReadPre   *.out  call rename(expand("<afile>"), expand("<afile>") . "

.t")
start of testfile:au FilterReadPre   *.out  exe 'silent !sed s/e/E/ ' . shellescape(expand("<afi

le>")) . ".t >" . shellescape(expand("<afile>"))
start of testfile:au FilterReadPre   *.out  exe 'silent !rm ' . shellescape(expand("<afile>")) .

'.t'
start of testfile:au FilterReadPost  *.out  '[,']s/x/X/g
:e! test.out                    " Edit the output file
"test.out" 50 lines, 1242 charactersstarstart of testfile2  Abcdefghijklmnopqrstuvwxyz3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4  Abcdefghijklmnopqrstuvwxyz5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx6  Abcdefghijklmnopqrstuvwxyz7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8  Abcdefghijklmnopqrstuvwxyz9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 10 Abcdefghijklmnopqrstuvwxyz
end of testfilestart of test.c
/*
 * Here is a new .c file
 */
end of test.c
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 4  Abcdefghijklmnopqrstuvwxyz
line 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:23,$!cat
218 substitutions on 15 lines

28 lines filtered

Press ENTER or type command to continue:23,$s/\r$//                 " remove CR for when sed adds them
E486: Pattern not found: \r$
Press ENTER or type command to continue:au! FileReadPre    *.gz   exe 'silent !gzip -d ' . shellescape(expand("<afile>

"))
startstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE 5  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/
:$r Xtestfile.gz             " Read compressed file
"Xtestfile.gz" 11 lines, 357 characters

11 substitutions on 11 lines

Press ENTER or type command to continue:w                           " write it, after filtering
"test.out"61 lines, 1599 characters written

Press ENTER or type command to continue:au!             " remove all autocommands
E216: No such group or event: " remove all autocommands

Press ENTER or type command to continue:e               " Edit test.out again
"test.out"61 lines, 1599 charactersstartstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"test.out" 61 lines, 1599 characters:set nobin ff&   " use the default fileformat for writing
:w
"test.out" 61 lines, 1599 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test11 = test61; then \
#	  if diff test.out test11.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test11.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test11.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test52.failed test.ok test.out X* viminfo
cp test52.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test52.in
[?1h="test52.in" 65 lines, 1645 charactersTests for reading and writing files with conversion for Win32.

STARTTEST
:so mbyte.vim
:" make this a dummy test for non-Win32 systems
:if !has("win32") | e! test.ok | wq! test.out | endif
:"
:" write tests:
:" combine three values for 'encoding' with three values for 'fileencoding'
:" also write files for read tests
/^1
:set encoding=utf-8
:.w! ++enc=utf-8 test.out
:.w ++enc=cp1251 >>test.out
:.w ++enc=cp866 >>test.out
:.w! ++enc=utf-8 Xutf8
/^2
:set encoding=cp1251
:.w ++enc=utf-8 >>test.out
:.w ++enc=cp1251 >>test.out
:.w ++enc=cp866 >>test.out
:.w! ++enc=cp1251 Xcp1251
/^3:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for reading and writing files with conversion for Win32./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 57 lines, 1333 characters written:set ff& cpo+=A
/ENDTEST:e Xcp1251
:.w ++enc=cp1251 >>test.out
:set fencs=utf-8,cp866
:e Xcp866
:.w ++enc=cp1251 >>test.out
:"
:" read three 'fileencoding's with cp866 'encoding'
:set encoding=cp866 fencs=utf-8,cp1251
:e Xutf8
:.w ++enc=cp866 >>test.out
:e Xcp1251
:.w ++enc=cp866 >>test.out
:set fencs=utf-8,cp866
:e Xcp866
:.w ++enc=cp866 >>test.out
:"
:qa!
ENDTEST

:so! Xdotest
:so mbyte.vim
:" make this a dummy test for non-Win32 systems
:if !has("win32") | e! test.ok | wq! test.out | endif
"test.ok" 18 lines, 1374 characters

"test.out" [New File] 18 lines, 1374 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test52 = test61; then \
#	  if diff test.out test52.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test52.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test52.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test85.failed test.ok test.out X* viminfo
cp test85.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test85.in
[?1h="test85.in" 85 lines, 1868 charactersTest 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):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for Lua interface and luaeval() function/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 77 lines, 1775 characters written:set ff& cpo+=A
/ENDTEST:lua d = vim.eval("d")
:lua d[0] = 123
:lua d[1] = "abc"
:lua d[2] = vim.eval("[1, 2, 3]")
:lua d[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
:lua d[4] = d[0]
:lua d[5] = d[1]
:lua d[6] = d[2]
:lua d[7] = d[3]
:lua d[3] = nil
:lua d[2] = nil
:lua d[1] = nil
:lua d[0] = nil
:lua d = nil
:$put =string(d)

:?^1?,$w! test.out
:qa!
ENDTEST

1 line 1
2 line 2
3 line 3
:so! Xdotest
: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"
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
:lua d = vim.eval("d")
:lua d[0] = 123
:lua d[1] = "abc"
:lua d[2] = vim.eval("[1, 2, 3]")


:call append(search("^1"), "scalar test " . scalar_res)
scalar test OK
2 line 2:" dictionary containing a list
:let tmp = luaeval("h").list[1]
:/^2/put =tmp

dictionary with list OK
:" 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
:lua d[0] = 123
:lua d[1] = "abc"
:lua d[2] = vim.eval("[1, 2, 3]")
:lua d[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
:call setline(search("^3"), "circular test " . res)

circular test OK
:let l = []
:lua l = vim.eval("l")
:lua l:add(123)
:lua l:add("abc")
:lua l:add(vim.eval("[1, 2, 3]"))
:lua l:add(vim.eval("{'a':1, 'b':2, 'c':3}"))
:lua l:insert(123)
:lua l:insert("abc")
:lua l:insert(vim.eval("[1, 2, 3]"))
:lua l:insert(vim.eval("{'a':1, 'b':2, 'c':3}"))
:lua l[0] = l[0]
:lua l[1] = l[1]
:lua l[2] = l[2]
:lua l[3] = l[3]
:lua l[0] = 123
:lua l[1] = "abc"
:lua l[2] = vim.eval("[1, 2, 3]")
:lua l[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
:lua l[3] = nil
:lua l[2] = nil
:lua l[1] = nil
:lua l[0] = nil
:lua l = nil
:$put =string(l)

[123.0, 'abc', [1, 2, 3], {'a': 1, 'b': 2, 'c': 3}]
:let d = {}
:lua d = vim.eval("d")
:lua d[0] = 123
:lua d[1] = "abc"
:lua d[2] = vim.eval("[1, 2, 3]")
:lua d[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
:lua d[4] = d[0]
:lua d[5] = d[1]
:lua d[6] = d[2]
:lua d[7] = d[3]
:lua d[3] = nil
:lua d[2] = nil
:lua d[1] = nil
:lua d[0] = nil
:lua d = nil
:$put =string(d)

{'4': 123.0, '5': 'abc', '6': [1, 2, 3], '7': {'a': 1, 'b': 2, 'c': 3}}
:?^1?,$w! test.out
"test.out" [New] 7L, 206C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test85 = test61; then \
#	  if diff test.out test85.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test85.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test85.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test86.failed test.ok test.out X* viminfo
cp test86.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test86.in
[?1h="test86.in" 1711 lines, 48481 charactersTests for various python features.     vim: set ft=vim :

NOTE: This will cause errors when run under valgrind.
This would require recompiling Python with:
  ./configure --without-pymalloc
See http://svn.python.org/view/python/trunk/Misc/README.valgrind?view=markup

STARTTEST
:so small.vim
:set encoding=latin1
:set noswapfile
:if !has('python') | e! test.ok | wq! test.out | endif
:lang C
:fun Test()
:py import vim
:py cb = vim.current.buffer
: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]):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for various python features.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1700 lines, 48188 characters written:set ff& cpo+=A
/ENDTEST:   endif
:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:" vim: et ts=4 isk-=\:
:while getchar(0) isnot 0|endwhile
ENDTEST

start:


:so! Xdotest
:so small.vim
:set encoding=latin1
:   endif
:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:" vim: et ts=4 isk-=\:
:while getchar(0) isnot 0|endwhile
ENDTEST

start:

:set noswapfile
:if !has('python') | e! test.ok | wq! test.out | endif
"test.ok" 1445 lines, 67439 characters

"test.out" [New File] 1445 lines, 67439 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test86 = test61; then \
#	  if diff test.out test86.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test86.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test86.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test87.failed test.ok test.out X* viminfo
cp test87.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test87.in
[?1h="test87.in" 1707 lines, 49069 charactersTests for various python features.     vim: set ft=vim :

STARTTEST
:so small.vim
:set noswapfile
:if !has('python3') | e! test.ok | wq! test.out | endif
:lang C
:fun Test()
:py3 import vim
:py3 cb = vim.current.buffer
: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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for various python features.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1701 lines, 48985 characters written:set ff& cpo+=A
/ENDTEST:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:/^start:/,$w! test.out
:" vim: et ts=4 isk-=\:
:while getchar(0) isnot 0|endwhile
ENDTEST

start:


:so! Xdotest
:so small.vim
:set noswapfile
:if !has('python3') | e! test.ok | wq! test.out | endif
:lang C
:fun Test()

:  :py3 import vim

:  :py3 cb = vim.current.buffer

:  :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 = {}

:  :fun d.f()

:    :  return 1

:    :endfun

:    py3 << EOF

:    d=vim.bindeval('d')

:    d['1']='asd'

:    d.update()  # Must not do anything, including throwing errors

:    d.update(b=[1, 2, f])

:    d.update((('-1', {'a': 1}),))

:    d.update({'0': -1})

:    dk = d.keys()

:    dv = d.values()

:    di = d.items()

:    dk.sort(key=repr)

:    dv.sort(key=repr)

:    di.sort(key=repr)

:    EOF

:    :$put =py3eval('d[''f''](self={})')

:    :$put =py3eval('repr(dk)')

:    :$put =substitute(py3eval('repr(dv)'),'0x\x\+','','g')

:    :$put =substitute(py3eval('repr(di)'),'0x\x\+','','g')

:    :for [key, Val] in sort(items(d))

:      :  $put =string(key) . ' : ' . string(Val)

:      :  unlet key Val

:      :endfor

:    :py3 del dk

:    :py3 del di

:    :py3 del dv

:    :"

:    :" 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']

:    :py3 del d['f']

:    :$put =string(py3eval('d.get(''b'', 1)'))

:    :$put =string(py3eval('d.pop(''b'')'))

:    :$put =string(py3eval('d.get(''b'', 1)'))

:    :$put =string(py3eval('d.pop(''1'', 2)'))

:    :$put =string(py3eval('d.pop(''1'', 2)'))

:    :$put =py3eval('repr(d.has_key(''0''))')

:    :$put =py3eval('repr(d.has_key(''1''))')

:    :$put =py3eval('repr(''0'' in d)')

:    :$put =py3eval('repr(''1'' in d)')

:    :$put =py3eval('repr(list(iter(d)))')

:    :$put =string(d)

:    :$put =py3eval('repr(d.popitem())')

:    :$put =py3eval('repr(d.get(''0''))')

:    :$put =py3eval('repr(list(iter(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)

:    :let l = [0, 1, 2, 3]

:    :py3 l=vim.bindeval('l')

:    :py3 del l[::2]

:    :$put =string(l)

:    :let l = [0, 1, 2, 3]

:    :py3 l=vim.bindeval('l')

:    :py3 del l[3:0:-2]

:    :$put =string(l)

:    :let l = [0, 1, 2, 3]

:    :py3 l=vim.bindeval('l')

:    :py3 del l[2:4:-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)

:    :let l = range(8)

:    :py3 l=vim.bindeval('l')

:    :py3 l[2:6:2] = [10, 20]

:    :$put =string(l)

:    :let l = range(8)

:    :py3 l=vim.bindeval('l')

:    :py3 l[6:2:-2] = [10, 20]

:    :$put =string(l)

:    :let l = range(8)

:    :py3 l=vim.bindeval('l')

:    :py3 l[6:2] = ()

:    :$put =string(l)

:    :let l = range(8)

:    :py3 l=vim.bindeval('l')

:    :py3 l[6:2:1] = ()

:    :$put =string(l)

:    :let l = range(8)

:    :py3 l=vim.bindeval('l')

:    :py3 l[2:2:1] = ()

:    :$put =string(l)

:    :"

:    :" Locked variables

:    :let l = [0, 1, 2, 3]

:    :py3 l=vim.bindeval('l')

:    :lockvar! l

:    py3 << EOF

:    def emsg(ei):

:        return ei[0].__name__ + ':' + repr(ei[1].args)

:    

:    try:

:        l[2]='i'

:    except vim.error:

:        cb.append('l[2] threw vim.error: ' + emsg(sys.exc_info()))

:    EOF

:    :$put =string(l)

:    :unlockvar! l

:    :"

:    :" Function calls

:    py3 << EOF

:    import sys

:    import re

:    

:    py33_type_error_pattern = re.compile('^__call__\(\) takes (\d+) positional

argument but (\d+) were given$')

:    

:    def ee(expr, g=globals(), l=locals()):

:        cb = vim.current.buffer

:        try:

:            try:

:                exec(expr, g, l)

:            except Exception as e:

:                if sys.version_info >= (3, 3) and e.__class__ is AttributeErro

r and str(e).find('has no attribute')>=0 and not str(e).startswith("'vim."):

:                    cb.append(expr + ':' + repr((e.__class__, AttributeError(s

tr(e)[str(e).rfind(" '") + 2:-1]))))

:                elif sys.version_info >= (3, 3) and e.__class__ is ImportError

and str(e).find('No module named \'') >= 0:

:                    cb.append(expr + ':' + repr((e.__class__, ImportError(str(

e).replace("'", '')))))

:                elif sys.version_info >= (3, 3) and e.__class__ is TypeError:

:                    m = py33_type_error_pattern.search(str(e))

:                    if m:

:                        msg = '__call__() takes exactly {0} positional argumen

t ({1} given)'.format(m.group(1), m.group(2))

:                        cb.append(expr + ':' + repr((e.__class__, TypeError(ms

g))))

:                    else:

:                        cb.append(expr + ':' + repr((e.__class__, e)))

:                elif sys.version_info >= (3, 5) and e.__class__ is ValueError 

and str(e) == 'embedded null byte':

:                    cb.append(expr + ':' + repr((TypeError, TypeError('expecte

d bytes with no null'))))

:                else:

:                    msg = repr((e.__class__, e))

:                    # Some Python versions say can't, others cannot.

:                    if msg.find('can\'t') > -1:

:                        msg = msg.replace('can\'t', 'cannot')

:                    # Some Python versions use single quote, some double quote

:                    if msg.find('"cannot ') > -1:

:                        msg = msg.replace('"cannot ', '\'cannot ')

:                    if msg.find(' attributes"') > -1:

:                        msg = msg.replace(' attributes"', ' attributes\'')

:                    cb.append(expr + ':' + msg)

:            else:

:                cb.append(expr + ':NOT FAILED')

:        except Exception as e:

:            cb.append(expr + '::' + repr((e.__class__, e)))

:    EOF

:    :fun New(...)

:      :   return ['NewStart']+a:000+['NewEnd']

:      :endfun

:      :fun DictNew(...) dict

::   return ['DictNewStart']+a:000+['DictNewEnd', self]

::endfun

::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)

::py3 ee('l[1](1, 2, 3)')

::py3 f=l[0]

::delfunction New

::py3 ee('f(1, 2, 3)')

::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

::let messages=[]

::delfunction DictNew

:py3 <<EOF

:import sys

:d=vim.bindeval('{}')

:m=vim.bindeval('messages')

:def em(expr, g=globals(), l=locals()):

:    try:

:        exec(expr, g, l)

:    except Exception as e:

:        if sys.version_info >= (3, 5) and e.__class__ is ValueError an

d str(e) == 'embedded null byte':

:            m.extend([TypeError.__name__])

:        else:

:            m.extend([e.__class__.__name__])

:

:em('d["abc1"]')

:em('d["abc1"]="\\0"')

:em('d["abc1"]=vim')

:em('d[""]=1')

:em('d["a\\0b"]=1')

:em('d[b"a\\0b"]=1')

:

:em('d.pop("abc1")')

:em('d.popitem()')

:del em

:del m

:EOF

::$put =messages

::unlet messages

::" locked and scope attributes

::let d={} | let dl={} | lockvar dl

::for s in split("d dl v: g:")

::    let name=tr(s, ':', 's')

::    execute 'py3 '.name.'=vim.bindeval("'.s.'")'

::    let toput=s.' : '.join(map(['locked', 'scope'], 'v:val.":".py3e

val(name.".".v:val)'), ';')

::    $put =toput

::endfor

::silent! let d.abc2=1

::silent! let dl.abc3=1

::py3 d.locked=True

::py3 dl.locked=False

::silent! let d.def=1

::silent! let dl.def=1

::put ='d:'.string(d)

::put ='dl:'.string(dl)

::unlet d dl

::

::let l=[] | let ll=[] | lockvar ll

::for s in split("l ll")

::    let name=tr(s, ':', 's')

::    execute 'py3 '.name.'=vim.bindeval("'.s.'")'

::    let toput=s.' : locked:'.py3eval(name.'.locked')

::    $put =toput

::endfor

::silent! call extend(l, [0])

::silent! call extend(ll, [0])

::py3 l.locked=True

::py3 ll.locked=False

::silent! call extend(l, [1])

::silent! call extend(ll, [1])

::put ='l:'.string(l)

::put ='ll:'.string(ll)

::unlet l ll

::"

::" py3eval()

::let l=py3eval('[0, 1, 2]')

::$put =string(l)

::let d=py3eval('{"a": "b", "c": 1, "d": ["e"]}')

::$put =sort(items(d))

::let v:errmsg = ''

::$put ='py3eval(\"None\") = ' . py3eval('None') . v:errmsg

::if has('float')

::   let f=py3eval('0.0')

::   $put =string(f)

::else

::   $put ='0.0'

::endif

::" Invalid values:

::for e in ['"\0"', '{"\0": 1}', 'undefined_name', 'vim']

::   try

::      let v=py3eval(e)

::   catch

::      let toput=e.":\t".v:exception[:13]

::      $put =toput

::   endtry

::endfor

::"

::" threading

::let l = [0]

::py3 l=vim.bindeval('l')

:py3 <<EOF

:import threading

:import time

:

:class T(threading.Thread):

:    def __init__(self):

:        threading.Thread.__init__(self)

:        self.t = 0

:        self.running = True

:

:    def run(self):

:        while self.running:

:            self.t += 1

:            time.sleep(0.1)

:

:t = T()

:del T

:t.start()

:EOF

::sleep 1

::py3 t.running = False

::py3 t.join()

::" Check if the background thread is working.  Count should be 10, but

on a

::" busy system (AppVeyor) it can be much lower.

::py3 l[0] = t.t > 4

::py3 del time

::py3 del threading

::py3 del t

::$put =string(l)

::"

::" settrace

::let l = []

::py3 l=vim.bindeval('l')

:py3 <<EOF

:import sys

:

:def traceit(frame, event, arg):

:    global l

:    if event == "line":

:        l += [frame.f_lineno]

:    return traceit

:

:def trace_main():

:    for i in range(5):

:        pass

:EOF

::py3 sys.settrace(traceit)

::py3 trace_main()

::py3 sys.settrace(None)

::py3 del traceit

::py3 del trace_main

::$put =string(l)

::"

::" Slice

::py3 ll = vim.bindeval('[0, 1, 2, 3, 4, 5]')

::py3 l = ll[:4]

::$put =string(py3eval('l'))

::py3 l = ll[2:]

::$put =string(py3eval('l'))

::py3 l = ll[:-4]

::$put =string(py3eval('l'))

::py3 l = ll[-2:]

::$put =string(py3eval('l'))

::py3 l = ll[2:4]

::$put =string(py3eval('l'))

::py3 l = ll[4:2]

::$put =string(py3eval('l'))

::py3 l = ll[-4:-2]

::$put =string(py3eval('l'))

::py3 l = ll[-2:-4]

::$put =string(py3eval('l'))

::py3 l = ll[:]

::$put =string(py3eval('l'))

::py3 l = ll[0:6]

::$put =string(py3eval('l'))

::py3 l = ll[-10:10]

::$put =string(py3eval('l'))

::py3 l = ll[4:2:-1]

::$put =string(py3eval('l'))

::py3 l = ll[::2]

::$put =string(py3eval('l'))

::py3 l = ll[4:2:1]

::$put =string(py3eval('l'))

::py3 del l

::"

::" Vars

::let g:foo = 'bac'

::let w:abc3 = 'def'

::let b:baz = 'bar'

::let t:bar = 'jkl'

::try

::  throw "Abc"

::catch

::  put =py3eval('vim.vvars[''exception'']')

::endtry

::put =py3eval('vim.vars[''foo'']')

::put =py3eval('vim.current.window.vars[''abc3'']')

::put =py3eval('vim.current.buffer.vars[''baz'']')

::put =py3eval('vim.current.tabpage.vars[''bar'']')

::"

::" Options

::" paste:          boolean, global

::" previewheight   number,  global

::" operatorfunc:   string,  global

::" number:         boolean, window-local

::" numberwidth:    number,  window-local

::" colorcolumn:    string,  window-local

::" statusline:     string,  window-local/global

::" autoindent:     boolean, buffer-local

::" shiftwidth:     number,  buffer-local

::" omnifunc:       string,  buffer-local

::" preserveindent: boolean, buffer-local/global

::" path:           string,  buffer-local/global

::let g:bufs=[bufnr('%')]

::new

::let g:bufs+=[bufnr('%')]

::vnew

::let g:bufs+=[bufnr('%')]

::wincmd j

::vnew

::let g:bufs+=[bufnr('%')]

::wincmd l

::fun RecVars(opt)

::  let gval =string(eval('&g:'.a:opt))

::  let wvals=join(map(range(1, 4),  'v:val.":".string(getwinvar(v:va

l, "&".a:opt))'))

::  let bvals=join(map(copy(g:bufs), 'v:val.":".string(getbufvar(v:va

l, "&".a:opt))'))

::  put ='  G: '.gval

::  put ='  W: '.wvals

::  put ='  B: '.wvals

::endfun

:py3 << EOF

:def e(s, g=globals(), l=locals()):

:    try:

:        exec(s, g, l)

:    except Exception as e:

:        vim.command('return ' + repr(e.__class__.__name__))

:

:def ev(s, g=globals(), l=locals()):

:    try:

:        return eval(s, g, l)

:    except Exception as e:

:        vim.command('let exc=' + repr(e.__class__.__name__))

:        return 0

:EOF

::fun E(s)

::   python3 e(vim.eval('a:s'))

::endfun

::fun Ev(s)

::   let r=py3eval('ev(vim.eval("a:s"))')

::   if exists('exc')

::       throw exc

::   endif

::   return r

::endfun

::py3 gopts1=vim.options

::py3 wopts1=vim.windows[2].options

::py3 wopts2=vim.windows[0].options

::py3 wopts3=vim.windows[1].options

::py3 bopts1=vim.buffers[vim.bindeval("g:bufs")[2]].options

::py3 bopts2=vim.buffers[vim.bindeval("g:bufs")[1]].options

::py3 bopts3=vim.buffers[vim.bindeval("g:bufs")[0]].options

::$put ='wopts iters equal: '.py3eval('list(wopts1) == list(wopts

2)')

::$put ='bopts iters equal: '.py3eval('list(bopts1) == list(bopts

2)')

::py3 gset=set(iter(gopts1))

::py3 wset=set(iter(wopts1))

::py3 bset=set(iter(bopts1))

::set path=.,..,,

::let lst=[]

::let lst+=[['paste',          1,     0,     1,     2,      1,   

1,      0    ]]

::let lst+=[['previewheight',  5,     1,     6,     'a',    0,   

1,      0    ]]

::let lst+=[['operatorfunc',   'A',   'B',   'C',   2,      0,   

1,      0    ]]

::let lst+=[['number',         0,     1,     1,     0,      1,   

0,      1    ]]

::let lst+=[['numberwidth',    2,     3,     5,     -100,   0,   

0,      1    ]]

::let lst+=[['colorcolumn',    '+1',  '+2',  '+3',  'abc4',  0,  

 0,      1    ]]

::let lst+=[['statusline',     '1',   '2',   '4',   0,      0,   

1,      1    ]]

::let lst+=[['autoindent',     0,     1,     1,     2,      1,   

0,      2    ]]

::let lst+=[['shiftwidth',     0,     2,     1,     3,      0,   

0,      2    ]]

::let lst+=[['omnifunc',       'A',   'B',   'C',   1,      0,   

0,      2    ]]

::let lst+=[['preserveindent', 0,     1,     1,     2,      1,   

1,      2    ]]

::let lst+=[['path',           '.,,', ',,',  '.',   0,      0,   

1,      2    ]]

::for       [oname,            oval1, oval2, oval3, invval, bool,

global, local] in lst

::   py3 oname=vim.eval('oname')

::   py3 oval1=vim.bindeval('oval1')

::   py3 oval2=vim.bindeval('oval2')

::   py3 oval3=vim.bindeval('oval3')

::   if invval is 0 || invval is 1

::       py3 invval=bool(vim.bindeval('invval'))

::   else

::       py3 invval=vim.bindeval('invval')

::   endif

::   if bool

::       py3 oval1=bool(oval1)

::       py3 oval2=bool(oval2)

::       py3 oval3=bool(oval3)

::   endif

::   put ='>>> '.oname

::   $put ='  g/w/b:'.py3eval('oname in gset').'/'.py3eval('ona

me in wset').'/'.py3eval('oname in bset')

::   $put ='  g/w/b (in):'.py3eval('oname in gopts1').'/'.py3ev

al('oname in wopts1').'/'.py3eval('oname in bopts1')

::   for v in ['gopts1', 'wopts1', 'bopts1']

::       try

::           put ='  p/'.v.': '.Ev('repr('.v.'['''.oname.''

'])')

::       catch

::           put ='  p/'.v.'! '.v:exception

::       endtry

::       let r=E(v.'['''.oname.''']=invval')

::       if r isnot 0

::           put ='  inv: '.string(invval).'! '.r

::       endif

::       for vv in (v is# 'gopts1' ? [v] : [v, v[:-2].'2', v[

:-2].'3'])

::           let val=substitute(vv, '^.opts', 'oval', '')

::           let r=E(vv.'['''.oname.''']='.val)

::           if r isnot 0

::               put ='  '.vv.'! '.r

::           endif

::       endfor

::   endfor

::   call RecVars(oname)

::   for v in ['wopts3', 'bopts3']

::       let r=E('del '.v.'["'.oname.'"]')

::       if r isnot 0

::           put ='  del '.v.'! '.r

::       endif

::   endfor

::   call RecVars(oname)

::endfor

::delfunction RecVars

::delfunction E

::delfunction Ev

::py3 del ev

::py3 del e

::only

::for buf in g:bufs[1:]

::   execute 'bwipeout!' buf

::endfor

::py3 del gopts1

::py3 del wopts1

::py3 del wopts2

::py3 del wopts3

::py3 del bopts1

::py3 del bopts2

::py3 del bopts3

::py3 del oval1

::py3 del oval2

::py3 del oval3

::py3 del oname

::py3 del invval

::"

::" Test buffer object

::vnew

::put ='First line'

::put ='Second line'

::put ='Third line'

::1 delete _

::py3 b=vim.current.buffer

::wincmd w

::mark a

::augroup BUFS

::   autocmd BufFilePost * python3 cb.append(vim.eval('expand("<a

buf>")') + ':BufFilePost:' + vim.eval('bufnr("%")'))

::   autocmd BufFilePre * python3 cb.append(vim.eval('expand("<ab

uf>")') + ':BufFilePre:' + vim.eval('bufnr("%")'))

::augroup END

:py3 << EOF

:# Tests BufferAppend and BufferItem

:cb.append(b[0])

:# Tests BufferSlice and BufferAssSlice

:cb.append('abc5') # Will be overwritten

:cb[-1:] = b[:-2]

:# Test BufferLength and BufferAssSlice

:cb.append('def') # Will not be overwritten

:cb[len(cb):] = b[:]

:# Test BufferAssItem and BufferMark

:cb.append('ghi') # Will be overwritten

:cb[-1] = repr((len(cb) - cb.mark('a')[0], cb.mark('a')[1]))

:# Test BufferRepr

:cb.append(repr(cb) + repr(b))

:# Modify foreign buffer

:b.append('foo')

:b[0]='bar'

:b[0:0]=['baz']

:vim.command('call append("$", getbufline(%i, 1, "$"))' % b.numbe

r)
:# Test assigning to name property

:import os

:old_name = cb.name

:cb.name = 'foo'

:cb.append(cb.name[-11:].replace(os.path.sep, '/'))

:b.name = 'bar'

:cb.append(b.name[-11:].replace(os.path.sep, '/'))

:cb.name = old_name

:cb.append(cb.name[-17:].replace(os.path.sep, '/'))

:del old_name

:# Test CheckBuffer

:for _b in vim.buffers:

:    if _b is not cb:

:        vim.command('bwipeout! ' + str(_b.number))

:del _b

:cb.append('valid: b:%s, cb:%s' % (repr(b.valid), repr(cb.valid))

)
:for expr in ('b[1]','b[:] = ["A", "B"]','b[:]','b.append("abc6")

'):

:    try:

:        exec(expr)

:    except vim.error:

:        pass

:    else:

:        # Usually a SEGV here

:        # Should not happen in any case

:        cb.append('No exception for ' + expr)

:vim.command('cd .')

:del b

:EOF

::"

::" Test vim.buffers object

::set hidden

::edit a

::buffer #

::edit b

::buffer #

::edit c

::buffer #

:py3 << EOF

:# Check GCing iterator that was not fully exhausted

:i = iter(vim.buffers)

:cb.append('i:' + str(next(i)))

:# and also check creating more than one iterator at a time

:i2 = iter(vim.buffers)

:cb.append('i2:' + str(next(i2)))

:cb.append('i:' + str(next(i)))

:# The following should trigger GC and not cause any problems

:del i

:del i2

:i3 = iter(vim.buffers)

:cb.append('i3:' + str(next(i3)))

:del i3

:

:prevnum = 0

:for b in vim.buffers:

:    # Check buffer order

:    if prevnum >= b.number:

:        cb.append('!!! Buffer numbers not in strictly ascending 

order')

:    # Check indexing: vim.buffers[number].number == number

:    cb.append(str(b.number) + ':' + repr(vim.buffers[b.number]) 

+ '=' + repr(b))

:    prevnum = b.number

:del prevnum

:

:cb.append(str(len(vim.buffers)))

:

:bnums = list(map(lambda b: b.number, vim.buffers))[1:]

:

:# Test wiping out buffer with existing iterator

:i4 = iter(vim.buffers)

:cb.append('i4:' + str(next(i4)))

:vim.command('bwipeout! ' + str(bnums.pop(0)))

:try:

:    next(i4)

:except vim.error:

:    pass

:else:

:    cb.append('!!!! No vim.error')

:i4 = iter(vim.buffers)

:vim.command('bwipeout! ' + str(bnums.pop(-1)))

:vim.command('bwipeout! ' + str(bnums.pop(-1)))

:cb.append('i4:' + str(next(i4)))

:try:

:    next(i4)

:except StopIteration:

:    cb.append('StopIteration')

:del i4

:del bnums

:EOF

::"

::" Test vim.{tabpage,window}list and vim.{tabpage,window} object

s
::tabnew 0

::tabnew 1

::vnew a.1

::tabnew 2

::vnew a.2

::vnew b.2

::vnew c.2

:py3 << EOF

:cb.append('Number of tabs: ' + str(len(vim.tabpages)))

:cb.append('Current tab pages:')

:

:def W(w):

:    if '(unknown)' in repr(w):

:        return '<window object (unknown)>'

:    else:

:        return repr(w)

:

:def Cursor(w, start=len(cb)):

:    if w.buffer is cb:

:        return repr((start - w.cursor[0], w.cursor[1]))

:    else:

:        return repr(w.cursor)

:

:for t in vim.tabpages:

:    cb.append('  ' + repr(t) + '(' + str(t.number) + ')' + ': ' 

+ str(len(t.windows)) + ' windows, current is ' + W(t.window))

:    cb.append('  Windows:')

:    for w in t.windows:

:        cb.append('    ' + W(w) + '(' + str(w.number) + ')' + ':

displays buffer ' + repr(w.buffer) + '; cursor is at ' + Cursor(w))

:        # Other values depend on the size of the terminal, so th

ey are checked partly:

:        for attr in ('height', 'row', 'width', 'col'):

:            try:

:                aval = getattr(w, attr)

:                if type(aval) is not int:

:                    raise TypeError

:                if aval < 0:

:                    raise ValueError

:            except Exception as e:

:                cb.append('!!!!!! Error while getting attribute 

' + attr + ': ' + e.__class__.__name__)

:        del aval

:        del attr

:        w.cursor = (len(w.buffer), 0)

:del W

:del Cursor

:cb.append('Number of windows in current tab page: ' + str(len(vi

m.windows)))

:if list(vim.windows) != list(vim.current.tabpage.windows):

:    cb.append('!!!!!! Windows differ')

:EOF

::"

::" Test vim.current

:py3 << EOF

:def H(o):

:    return repr(o)

:cb.append('Current tab page: ' + repr(vim.current.tabpage))

:cb.append('Current window: ' + repr(vim.current.window) + ': ' +

H(vim.current.window) + ' is ' + H(vim.current.tabpage.window))

:cb.append('Current buffer: ' + repr(vim.current.buffer) + ': ' +

H(vim.current.buffer) + ' is ' + H(vim.current.window.buffer)+ ' is ' + H(vim.c

urrent.tabpage.window.buffer))

:del H

:# Assigning: fails

:try:

:    vim.current.window = vim.tabpages[0].window

:except ValueError:

:    cb.append('ValueError at assigning foreign tab window')

:

:for attr in ('window', 'tabpage', 'buffer'):

:    try:

:        setattr(vim.current, attr, None)

:    except TypeError:

:        cb.append('Type error at assigning None to vim.current.'

+ attr)

:del attr

:

:# Assigning: success

:vim.current.tabpage = vim.tabpages[-2]

:vim.current.buffer = cb

:vim.current.window = vim.windows[0]

:vim.current.window.cursor = (len(vim.current.buffer), 0)

:cb.append('Current tab page: ' + repr(vim.current.tabpage))

:cb.append('Current window: ' + repr(vim.current.window))

:cb.append('Current buffer: ' + repr(vim.current.buffer))

:cb.append('Current line: ' + repr(vim.current.line))

:ws = list(vim.windows)

:ts = list(vim.tabpages)

:for b in vim.buffers:

:    if b is not cb:

:        vim.command('bwipeout! ' + str(b.number))

:del b

:cb.append('w.valid: ' + repr([w.valid for w in ws]))

:cb.append('t.valid: ' + repr([t.valid for t in ts]))

:del w

:del t

:del ts

:del ws

:EOF

::tabonly!

::only!

::"

::" Test types

:py3 << EOF

:for expr, attr in (

:    ('vim.vars',                         'Dictionary'),

:    ('vim.options',                      'Options'),

:    ('vim.bindeval("{}")',               'Dictionary'),

:    ('vim.bindeval("[]")',               'List'),

:    ('vim.bindeval("function(\'tr\')")', 'Function'),

:    ('vim.current.buffer',               'Buffer'),

:    ('vim.current.range',                'Range'),

:    ('vim.current.window',               'Window'),

:    ('vim.current.tabpage',              'TabPage'),

:):

:    cb.append(expr + ':' + attr + ':' + repr(type(eval(expr)) is

getattr(vim, attr)))

:del expr

:del attr

:EOF

::"

::" Test __dir__() method

:py3 << EOF

:for name, o in (

:        ('current',    vim.current),

:        ('buffer',     vim.current.buffer),

:        ('window',     vim.current.window),

:        ('tabpage',    vim.current.tabpage),

:        ('range',      vim.current.range),

:        ('dictionary', vim.bindeval('{}')),

:        ('list',       vim.bindeval('[]')),

:        ('function',   vim.bindeval('function("tr")')),

:        ('output',     sys.stdout),

:    ):

:    cb.append(name + ':' + ','.join(dir(o)))

:del name

:del o

:EOF

::"

::" Test vim.*.__new__

::$put =string(py3eval('vim.Dictionary({})'))

::$put =string(py3eval('vim.Dictionary(a=1)'))

::$put =string(py3eval('vim.Dictionary(((''a'', 1),))'))

::$put =string(py3eval('vim.List()'))

::$put =string(py3eval('vim.List(iter(''abc7''))'))

::$put =string(py3eval('vim.Function(''tr'')'))

::$put =string(py3eval('vim.Function(''tr'', args=[123, 3, 4])'))

::$put =string(py3eval('vim.Function(''tr'', args=[])'))

::$put =string(py3eval('vim.Function(''tr'', self={})'))

::$put =string(py3eval('vim.Function(''tr'', args=[123, 3, 4], se

lf={})'))

::$put ='auto_rebind'

::$put =string(py3eval('vim.Function(''tr'', auto_rebind=False)')

)
::$put =string(py3eval('vim.Function(''tr'', args=[123, 3, 4], au

to_rebind=False)'))

::$put =string(py3eval('vim.Function(''tr'', args=[], auto_rebind

=False)'))

::$put =string(py3eval('vim.Function(''tr'', self={}, auto_rebind

=False)'))

::$put =string(py3eval('vim.Function(''tr'', args=[123, 3, 4], se

lf={}, auto_rebind=False)'))

::"

::" Test vim.Function

::function Args(...)

::   return a:000

::endfunction

::function SelfArgs(...) dict

::   return [a:000, self]

::endfunction

::" The following four lines should not crash

::let Pt = function('tr', [[]], {'l': []})

::py3 Pt = vim.bindeval('Pt')

::unlet Pt

::py3 del Pt

:py3 << EOF

:def ecall(out_prefix, func, *args, **kwargs):

:    line = out_prefix + ': '

:    try:

:        ret = func(*args, **kwargs)

:    except Exception:

:        line += '!exception: ' + emsg(sys.exc_info())

:    else:

:        line += '!result: ' + str(vim.Function('string')(ret

), 'utf-8')

:    cb.append(line)

:a = vim.Function('Args')

:pa1 = vim.Function('Args', args=['abcArgsPA1'])

:pa2 = vim.Function('Args', args=[])

:pa3 = vim.Function('Args', args=['abcArgsPA3'], self={'abcSe

lfPA3': 'abcSelfPA3Val'})

:pa4 = vim.Function('Args', self={'abcSelfPA4': 'abcSelfPA4Va

l'})

:cb.append('a: ' + repr(a))

:cb.append('pa1: ' + repr(pa1))

:cb.append('pa2: ' + repr(pa2))

:cb.append('pa3: ' + repr(pa3))

:cb.append('pa4: ' + repr(pa4))

:sa = vim.Function('SelfArgs')

:psa1 = vim.Function('SelfArgs', args=['abcArgsPSA1'])

:psa2 = vim.Function('SelfArgs', args=[])

:psa3 = vim.Function('SelfArgs', args=['abcArgsPSA3'], self={

'abcSelfPSA3': 'abcSelfPSA3Val'})

:psa4 = vim.Function('SelfArgs', self={'abcSelfPSA4': 'abcSel

fPSA4Val'})

:psa5 = vim.Function('SelfArgs', self={'abcSelfPSA5': 'abcSel

fPSA5Val'}, auto_rebind=0)

:psa6 = vim.Function('SelfArgs', args=['abcArgsPSA6'], self={

'abcSelfPSA6': 'abcSelfPSA6Val'}, auto_rebind=())

:psa7 = vim.Function('SelfArgs', args=['abcArgsPSA7'], auto_r

ebind=[])

:psa8 = vim.Function('SelfArgs', auto_rebind=False)

:psa9 = vim.Function('SelfArgs', self={'abcSelfPSA9': 'abcSel

fPSA9Val'}, auto_rebind=True)

:psaA = vim.Function('SelfArgs', args=['abcArgsPSAA'], self={

'abcSelfPSAA': 'abcSelfPSAAVal'}, auto_rebind=1)

:psaB = vim.Function('SelfArgs', args=['abcArgsPSAB'], auto_r

ebind={'abcARPSAB': 'abcARPSABVal'})

:psaC = vim.Function('SelfArgs', auto_rebind=['abcARPSAC'])

:cb.append('sa: ' + repr(sa))

:cb.append('psa1: ' + repr(psa1))

:cb.append('psa2: ' + repr(psa2))

:cb.append('psa3: ' + repr(psa3))

:cb.append('psa4: ' + repr(psa4))

:cb.append('psa5: ' + repr(psa5))

:cb.append('psa6: ' + repr(psa6))

:cb.append('psa7: ' + repr(psa7))

:cb.append('psa8: ' + repr(psa8))

:cb.append('psa9: ' + repr(psa9))

:cb.append('psaA: ' + repr(psaA))

:cb.append('psaB: ' + repr(psaB))

:cb.append('psaC: ' + repr(psaC))

:

:psar = vim.Function('SelfArgs', args=[{'abcArgsPSAr': 'abcAr

gsPSArVal'}], self={'abcSelfPSAr': 'abcSelfPSArVal'})

:psar.args[0]['abcArgsPSAr2'] = [psar.self, psar.args[0]]

:psar.self['rec'] = psar

:psar.self['self'] = psar.self

:psar.self['args'] = psar.args

:

:try:

:    cb.append('psar: ' + repr(psar))

:except Exception:

:    cb.append('!!!!!!!! Caught exception: ' + emsg(sys.exc_i

nfo()))

:EOF

::$put ='s(a): '.string(py3eval('a'))

::$put ='s(pa1): '.string(py3eval('pa1'))

::$put ='s(pa2): '.string(py3eval('pa2'))

::$put ='s(pa3): '.string(py3eval('pa3'))

::$put ='s(pa4): '.string(py3eval('pa4'))

::$put ='s(sa): '.string(py3eval('sa'))

::$put ='s(psa1): '.string(py3eval('psa1'))

::$put ='s(psa2): '.string(py3eval('psa2'))

::$put ='s(psa3): '.string(py3eval('psa3'))

::$put ='s(psa4): '.string(py3eval('psa4'))

::$put ='s(psa5): '.string(py3eval('psa5'))

::$put ='s(psa6): '.string(py3eval('psa6'))

::$put ='s(psa7): '.string(py3eval('psa7'))

::$put ='s(psa8): '.string(py3eval('psa8'))

::$put ='s(psa9): '.string(py3eval('psa9'))

::$put ='s(psaA): '.string(py3eval('psaA'))

::$put ='s(psaB): '.string(py3eval('psaB'))

::$put ='s(psaC): '.string(py3eval('psaC'))

::

::for v in ['sa', 'psa1', 'psa2', 'psa3', 'psa4', 'psa5', 'ps

a6', 'psa7', 'psa8', 'psa9', 'psaA', 'psaB', 'psaC']

::   let d = {'f': py3eval(v)}

::   $put ='d.'.v.'(): '.string(d.f())

::endfor

::

::py3 ecall('a()', a, )

::py3 ecall('pa1()', pa1, )

::py3 ecall('pa2()', pa2, )

::py3 ecall('pa3()', pa3, )

::py3 ecall('pa4()', pa4, )

::py3 ecall('sa()', sa, )

::py3 ecall('psa1()', psa1, )

::py3 ecall('psa2()', psa2, )

::py3 ecall('psa3()', psa3, )

::py3 ecall('psa4()', psa4, )

::

::py3 ecall('a(42, 43)', a, 42, 43)

::py3 ecall('pa1(42, 43)', pa1, 42, 43)

::py3 ecall('pa2(42, 43)', pa2, 42, 43)

::py3 ecall('pa3(42, 43)', pa3, 42, 43)

::py3 ecall('pa4(42, 43)', pa4, 42, 43)

::py3 ecall('sa(42, 43)', sa, 42, 43)

::py3 ecall('psa1(42, 43)', psa1, 42, 43)

::py3 ecall('psa2(42, 43)', psa2, 42, 43)

::py3 ecall('psa3(42, 43)', psa3, 42, 43)

::py3 ecall('psa4(42, 43)', psa4, 42, 43)

::

::py3 ecall('a(42, self={"20": 1})', a, 42, self={'20': 1})

::py3 ecall('pa1(42, self={"20": 1})', pa1, 42, self={'20': 1

})
::py3 ecall('pa2(42, self={"20": 1})', pa2, 42, self={'20': 1

})
::py3 ecall('pa3(42, self={"20": 1})', pa3, 42, self={'20': 1

})
::py3 ecall('pa4(42, self={"20": 1})', pa4, 42, self={'20': 1

})
::py3 ecall('sa(42, self={"20": 1})', sa, 42, self={'20': 1})

::py3 ecall('psa1(42, self={"20": 1})', psa1, 42, self={'20':

1})

::py3 ecall('psa2(42, self={"20": 1})', psa2, 42, self={'20':

1})

::py3 ecall('psa3(42, self={"20": 1})', psa3, 42, self={'20':

1})

::py3 ecall('psa4(42, self={"20": 1})', psa4, 42, self={'20':

1})

::

::py3 ecall('a(self={"20": 1})', a, self={'20': 1})

::py3 ecall('pa1(self={"20": 1})', pa1, self={'20': 1})

::py3 ecall('pa2(self={"20": 1})', pa2, self={'20': 1})

::py3 ecall('pa3(self={"20": 1})', pa3, self={'20': 1})

::py3 ecall('pa4(self={"20": 1})', pa4, self={'20': 1})

::py3 ecall('sa(self={"20": 1})', sa, self={'20': 1})

::py3 ecall('psa1(self={"20": 1})', psa1, self={'20': 1})

::py3 ecall('psa2(self={"20": 1})', psa2, self={'20': 1})

::py3 ecall('psa3(self={"20": 1})', psa3, self={'20': 1})

::py3 ecall('psa4(self={"20": 1})', psa4, self={'20': 1})

:py3 << EOF

:def s(v):

:    if v is None:

:        return repr(v)

:    else:

:        return str(vim.Function('string')(v), 'utf-8')

:

:cb.append('a.args: ' + s(a.args))

:cb.append('pa1.args: ' + s(pa1.args))

:cb.append('pa2.args: ' + s(pa2.args))

:cb.append('pa3.args: ' + s(pa3.args))

:cb.append('pa4.args: ' + s(pa4.args))

:cb.append('sa.args: ' + s(sa.args))

:cb.append('psa1.args: ' + s(psa1.args))

:cb.append('psa2.args: ' + s(psa2.args))

:cb.append('psa3.args: ' + s(psa3.args))

:cb.append('psa4.args: ' + s(psa4.args))

:

:cb.append('a.self: ' + s(a.self))

:cb.append('pa1.self: ' + s(pa1.self))

:cb.append('pa2.self: ' + s(pa2.self))

:cb.append('pa3.self: ' + s(pa3.self))

:cb.append('pa4.self: ' + s(pa4.self))

:cb.append('sa.self: ' + s(sa.self))

:cb.append('psa1.self: ' + s(psa1.self))

:cb.append('psa2.self: ' + s(psa2.self))

:cb.append('psa3.self: ' + s(psa3.self))

:cb.append('psa4.self: ' + s(psa4.self))

:

:cb.append('a.name: ' + s(a.name))

:cb.append('pa1.name: ' + s(pa1.name))

:cb.append('pa2.name: ' + s(pa2.name))

:cb.append('pa3.name: ' + s(pa3.name))

:cb.append('pa4.name: ' + s(pa4.name))

:cb.append('sa.name: ' + s(sa.name))

:cb.append('psa1.name: ' + s(psa1.name))

:cb.append('psa2.name: ' + s(psa2.name))

:cb.append('psa3.name: ' + s(psa3.name))

:cb.append('psa4.name: ' + s(psa4.name))

:

:cb.append('a.auto_rebind: ' + s(a.auto_rebind))

:cb.append('pa1.auto_rebind: ' + s(pa1.auto_rebind))

:cb.append('pa2.auto_rebind: ' + s(pa2.auto_rebind))

:cb.append('pa3.auto_rebind: ' + s(pa3.auto_rebind))

:cb.append('pa4.auto_rebind: ' + s(pa4.auto_rebind))

:cb.append('sa.auto_rebind: ' + s(sa.auto_rebind))

:cb.append('psa1.auto_rebind: ' + s(psa1.auto_rebind))

:cb.append('psa2.auto_rebind: ' + s(psa2.auto_rebind))

:cb.append('psa3.auto_rebind: ' + s(psa3.auto_rebind))

:cb.append('psa4.auto_rebind: ' + s(psa4.auto_rebind))

:cb.append('psa5.auto_rebind: ' + s(psa5.auto_rebind))

:cb.append('psa6.auto_rebind: ' + s(psa6.auto_rebind))

:cb.append('psa7.auto_rebind: ' + s(psa7.auto_rebind))

:cb.append('psa8.auto_rebind: ' + s(psa8.auto_rebind))

:cb.append('psa9.auto_rebind: ' + s(psa9.auto_rebind))

:cb.append('psaA.auto_rebind: ' + s(psaA.auto_rebind))

:cb.append('psaB.auto_rebind: ' + s(psaB.auto_rebind))

:cb.append('psaC.auto_rebind: ' + s(psaC.auto_rebind))

:

:del s

:

:del a

:del pa1

:del pa2

:del pa3

:del pa4

:del sa

:del psa1

:del psa2

:del psa3

:del psa4

:del psa5

:del psa6

:del psa7

:del psa8

:del psa9

:del psaA

:del psaB

:del psaC

:del psar

:

:del ecall

:EOF

::"

::" Test stdout/stderr

::redir => messages

::py3 sys.stdout.write('abc8') ; sys.stdout.write('def')

::py3 sys.stderr.write('abc9') ; sys.stderr.write('def')

::py3 sys.stdout.writelines(iter('abcA'))

::py3 sys.stderr.writelines(iter('abcB'))

::redir END

::$put =string(substitute(messages, '\d\+', '', 'g'))

::" Test subclassing

::fun Put(...)

::   $put =string(a:000)

::   return a:000

::endfun

:py3 << EOF

:class DupDict(vim.Dictionary):

:    def __setitem__(self, key, value):

:        super(DupDict, self).__setitem__(key, value)

:        super(DupDict, self).__setitem__('dup_' + key, val

ue)

:dd = DupDict()

:dd['a'] = 'b'

:

:class DupList(vim.List):

:    def __getitem__(self, idx):

:        return [super(DupList, self).__getitem__(idx)] * 2

:

:dl = DupList()

:dl2 = DupList(iter('abcC'))

:dl.extend(dl2[0])

:

:class DupFun(vim.Function):

:    def __call__(self, arg):

:        return super(DupFun, self).__call__(arg, arg)

:

:df = DupFun('Put')

:EOF

::$put =string(sort(keys(py3eval('dd'))))

::$put =string(py3eval('dl'))

::$put =string(py3eval('dl2'))

::$put =string(py3eval('df(2)'))

::$put =string(py3eval('dl') is# py3eval('dl'))

::$put =string(py3eval('dd') is# py3eval('dd'))

::$put =string(py3eval('df'))

::delfunction Put

:py3 << EOF

:del DupDict

:del DupList

:del DupFun

:del dd

:del dl

:del dl2

:del df

:EOF

::"

::" Test chdir

:py3 << EOF

:import os

:fnamemodify = vim.Function('fnamemodify')

:cb.append(str(fnamemodify('.', ':p:h:t')))

:cb.append(vim.eval('@%'))

:os.chdir('..')

:path = fnamemodify('.', ':p:h:t')

:if path != b'src':

:  # Running tests from a shadow directory, so move up anot

her level

:  # This will result in @% looking like shadow/testdir/tes

t87.in, hence the

:  # slicing to remove the leading path and path separator

:  os.chdir('..')

:  cb.append(str(fnamemodify('.', ':p:h:t')))

:  cb.append(vim.eval('@%')[len(path)+1:].replace(os.path.s

ep, '/'))

:  os.chdir(path)

:else:

:  cb.append(str(fnamemodify('.', ':p:h:t')))

:  cb.append(vim.eval('@%').replace(os.path.sep, '/'))

:del path

:os.chdir('testdir')

:cb.append(str(fnamemodify('.', ':p:h:t')))

:cb.append(vim.eval('@%'))

:del fnamemodify

:EOF

::"

::" Test errors

::fun F() dict

::endfun

::fun D()

::endfun

:py3 << EOF

:d = vim.Dictionary()

:ned = vim.Dictionary(foo='bar', baz='abcD')

:dl = vim.Dictionary(a=1)

:dl.locked = True

:l = vim.List()

:ll = vim.List('abcE')

:ll.locked = True

:nel = vim.List('abcO')

:f = vim.Function('string')

:fd = vim.Function('F')

:fdel = vim.Function('D')

:vim.command('delfunction D')

:

:def subexpr_test(expr, name, subexprs):

:    cb.append('>>> Testing %s using %s' % (name, expr)

)
:    for subexpr in subexprs:

:        ee(expr % subexpr)

:    cb.append('<<< Finished')

:

:def stringtochars_test(expr):

:    return subexpr_test(expr, 'StringToChars', (

:        '1',       # Fail type checks

:        'b"\\0"',  # Fail PyString_AsStringAndSize(obj

ect, , NULL) check

:        '"\\0"',   # Fail PyString_AsStringAndSize(byt

es, , NULL) check

:    ))

:

:class Mapping(object):

:    def __init__(self, d):

:        self.d = d

:

:    def __getitem__(self, key):

:        return self.d[key]

:

:    def keys(self):

:        return self.d.keys()

:

:    def items(self):

:        return self.d.items()

:

:def convertfrompyobject_test(expr, recurse=True):

:    # pydict_to_tv

:    stringtochars_test(expr % '{%s : 1}')

:    if recurse:

:        convertfrompyobject_test(expr % '{"abcF" : %s}

', False)

:    # pymap_to_tv

:    stringtochars_test(expr % 'Mapping({%s : 1})')

:    if recurse:

:        convertfrompyobject_test(expr % 'Mapping({"abc

G" : %s})', False)

:    # pyseq_to_tv

:    iter_test(expr)

:    return subexpr_test(expr, 'ConvertFromPyObject', (

:        'None',                 # Not conversible

:        '{b"": 1}',             # Empty key not allowe

d
:        '{"": 1}',              # Same, but with unico

de object

:        'FailingMapping()',     #

:        'FailingMappingKey()',  #

:        'FailingNumber()',      #

:    ))

:

:def convertfrompymapping_test(expr):

:    convertfrompyobject_test(expr)

:    return subexpr_test(expr, 'ConvertFromPyMapping', 

(
:        '[]',

:    ))

:

:def iter_test(expr):

:    return subexpr_test(expr, '*Iter*', (

:        'FailingIter()',

:        'FailingIterNext()',

:    ))

:

:def number_test(expr, natural=False, unsigned=False):

:    if natural:

:        unsigned = True

:    return subexpr_test(expr, 'NumberToLong', (

:        '[]',

:        'None',

:    ) + (('-1',) if unsigned else ())

:    + (('0',) if natural else ()))

:

:class FailingTrue(object):

:    def __bool__(self):

:        raise NotImplementedError('bool')

:

:class FailingIter(object):

:    def __iter__(self):

:        raise NotImplementedError('iter')

:

:class FailingIterNext(object):

:    def __iter__(self):

:        return self

:

:    def __next__(self):

:        raise NotImplementedError('next')

:

:class FailingIterNextN(object):

:    def __init__(self, n):

:        self.n = n

:

:    def __iter__(self):

:        return self

:

:    def __next__(self):

:        if self.n:

:            self.n -= 1

:            return 1

:        else:

:            raise NotImplementedError('next N')

:

:class FailingMappingKey(object):

:    def __getitem__(self, item):

:        raise NotImplementedError('getitem:mappingkey'

)
:

:    def keys(self):

:        return list("abcH")

:

:class FailingMapping(object):

:    def __getitem__(self):

:        raise NotImplementedError('getitem:mapping')

:

:    def keys(self):

:        raise NotImplementedError('keys')

:

:class FailingList(list):

:    def __getitem__(self, idx):

:        if i == 2:

:            raise NotImplementedError('getitem:list')

:        else:

:            return super(FailingList, self).__getitem_

_(idx)

:

:class NoArgsCall(object):

:    def __call__(self):

:        pass

:

:class FailingCall(object):

:    def __call__(self, path):

:        raise NotImplementedError('call')

:

:class FailingNumber(object):

:    def __int__(self):

:        raise NotImplementedError('int')

:

:cb.append("> Output")

:cb.append(">> OutputSetattr")

:ee('del sys.stdout.softspace')

:number_test('sys.stdout.softspace = %s', unsigned=True

)
:number_test('sys.stderr.softspace = %s', unsigned=True

)
:ee('assert sys.stdout.isatty()==False')

:ee('assert sys.stdout.seekable()==False')

:ee('sys.stdout.close()')

:ee('sys.stdout.flush()')

:ee('assert sys.stderr.isatty()==False')

:ee('assert sys.stderr.seekable()==False')

:ee('sys.stderr.close()')

:ee('sys.stderr.flush()')

:ee('sys.stdout.attr = None')

:cb.append(">> OutputWrite")

:ee('assert sys.stdout.writable()==True')

:ee('assert sys.stdout.readable()==False')

:ee('assert sys.stderr.writable()==True')

:ee('assert sys.stderr.readable()==False')

:ee('assert sys.stdout.closed()==False')

:ee('assert sys.stderr.closed()==False')

:ee('assert sys.stdout.errors=="strict"')

:ee('assert sys.stderr.errors=="strict"')

:ee('assert sys.stdout.encoding==sys.stderr.encoding')

:ee('sys.stdout.write(None)')

:cb.append(">> OutputWriteLines")

:ee('sys.stdout.writelines(None)')

:ee('sys.stdout.writelines([1])')

:iter_test('sys.stdout.writelines(%s)')

:cb.append("> VimCommand")

:stringtochars_test('vim.command(%s)')

:ee('vim.command("", 2)')

:#! Not checked: vim->python exceptions translating: ch

ecked later

:cb.append("> VimToPython")

:#! Not checked: everything: needs errors in internal p

ython functions

:cb.append("> VimEval")

:stringtochars_test('vim.eval(%s)')

:ee('vim.eval("", FailingTrue())')

:#! Not checked: everything: needs errors in internal p

ython functions

:cb.append("> VimEvalPy")

:stringtochars_test('vim.bindeval(%s)')

:ee('vim.eval("", 2)')

:#! Not checked: vim->python exceptions translating: ch

ecked later

:cb.append("> VimStrwidth")

:stringtochars_test('vim.strwidth(%s)')

:cb.append("> VimForeachRTP")

:ee('vim.foreach_rtp(None)')

:ee('vim.foreach_rtp(NoArgsCall())')

:ee('vim.foreach_rtp(FailingCall())')

:ee('vim.foreach_rtp(int, 2)')

:cb.append('> import')

:old_rtp = vim.options['rtp']

:vim.options['rtp'] = os.getcwd().replace('\\', '\\\\')

.replace(',', '\\,')

:ee('import xxx_no_such_module_xxx')

:ee('import failing_import')

:ee('import failing')

:vim.options['rtp'] = old_rtp

:del old_rtp

:cb.append("> Options")

:cb.append(">> OptionsItem")

:ee('vim.options["abcQ"]')

:ee('vim.options[""]')

:stringtochars_test('vim.options[%s]')

:cb.append(">> OptionsContains")

:stringtochars_test('%s in vim.options')

:cb.append("> Dictionary")

:cb.append(">> DictionaryConstructor")

:ee('vim.Dictionary("abcI")')

:##! Not checked: py_dict_alloc failure

:cb.append(">> DictionarySetattr")

:ee('del d.locked')

:ee('d.locked = FailingTrue()')

:ee('vim.vvars.locked = False')

:ee('d.scope = True')

:ee('d.xxx = True')

:cb.append(">> _DictionaryItem")

:ee('d.get("a", 2, 3)')

:stringtochars_test('d.get(%s)')

:ee('d.pop("a")')

:ee('dl.pop("a")')

:cb.append(">> DictionaryContains")

:ee('"" in d')

:ee('0 in d')

:cb.append(">> DictionaryIterNext")

:ee('for i in ned: ned["a"] = 1')

:del i

:cb.append(">> DictionaryAssItem")

:ee('dl["b"] = 1')

:stringtochars_test('d[%s] = 1')

:convertfrompyobject_test('d["a"] = %s')

:cb.append(">> DictionaryUpdate")

:cb.append(">>> kwargs")

:cb.append(">>> iter")

:ee('d.update(FailingMapping())')

:ee('d.update([FailingIterNext()])')

:ee('d.update([FailingIterNextN(1)])')

:iter_test('d.update(%s)')

:convertfrompyobject_test('d.update(%s)')

:stringtochars_test('d.update(((%s, 0),))')

:convertfrompyobject_test('d.update((("a", %s),))')

:cb.append(">> DictionaryPopItem")

:ee('d.popitem(1, 2)')

:cb.append(">> DictionaryHasKey")

:ee('d.has_key()')

:cb.append("> List")

:cb.append(">> ListConstructor")

:ee('vim.List(1, 2)')

:ee('vim.List(a=1)')

:iter_test('vim.List(%s)')

:convertfrompyobject_test('vim.List([%s])')

:cb.append(">> ListItem")

:ee('l[1000]')

:cb.append(">> ListAssItem")

:ee('ll[1] = 2')

:ee('l[1000] = 3')

:cb.append(">> ListAssSlice")

:ee('ll[1:100] = "abcJ"')

:iter_test('l[:] = %s')

:ee('nel[1:10:2]  = "abcK"')

:cb.append(repr(tuple(nel)))

:ee('nel[1:10:2]  = "a"')

:cb.append(repr(tuple(nel)))

:ee('nel[1:1:-1]  = "a"')

:cb.append(repr(tuple(nel)))

:ee('nel[:] = FailingIterNextN(2)')

:cb.append(repr(tuple(nel)))

:convertfrompyobject_test('l[:] = [%s]')

:cb.append(">> ListConcatInPlace")

:iter_test('l.extend(%s)')

:convertfrompyobject_test('l.extend([%s])')

:cb.append(">> ListSetattr")

:ee('del l.locked')

:ee('l.locked = FailingTrue()')

:ee('l.xxx = True')

:cb.append("> Function")

:cb.append(">> FunctionConstructor")

:cb.append(">>> FunctionConstructor")

:ee('vim.Function("123")')

:ee('vim.Function("xxx_non_existent_function_xxx")')

:ee('vim.Function("xxx#non#existent#function#xxx")')

:ee('vim.Function("xxx_non_existent_function_xxx2", arg

s=[])')

:ee('vim.Function("xxx_non_existent_function_xxx3", sel

f={})')

:ee('vim.Function("xxx_non_existent_function_xxx4", arg

s=[], self={})')

:cb.append(">>> FunctionNew")

:ee('vim.Function("tr", self="abcFuncSelf")')

:ee('vim.Function("tr", args=427423)')

:ee('vim.Function("tr", self="abcFuncSelf2", args="abcF

uncArgs2")')

:ee('vim.Function(self="abcFuncSelf2", args="abcFuncArg

s2")')

:ee('vim.Function("tr", "", self="abcFuncSelf2", args="

abcFuncArgs2")')

:ee('vim.Function("tr", "")')

:cb.append(">> FunctionCall")

:convertfrompyobject_test('f(%s)')

:convertfrompymapping_test('fd(self=%s)')

:cb.append("> TabPage")

:cb.append(">> TabPageAttr")

:ee('vim.current.tabpage.xxx')

:cb.append("> TabList")

:cb.append(">> TabListItem")

:ee('vim.tabpages[1000]')

:cb.append("> Window")

:cb.append(">> WindowAttr")

:ee('vim.current.window.xxx')

:cb.append(">> WindowSetattr")

:ee('vim.current.window.buffer = 0')

:ee('vim.current.window.cursor = (100000000, 100000000)

')
:ee('vim.current.window.cursor = True')

:number_test('vim.current.window.height = %s', unsigned

=True)

:number_test('vim.current.window.width = %s', unsigned=

True)

:ee('vim.current.window.xxxxxx = True')

:cb.append("> WinList")

:cb.append(">> WinListItem")

:ee('vim.windows[1000]')

:cb.append("> Buffer")

:cb.append(">> StringToLine (indirect)")

:ee('vim.current.buffer[0] = "\\na"')

:ee('vim.current.buffer[0] = b"\\na"')

:cb.append(">> SetBufferLine (indirect)")

:ee('vim.current.buffer[0] = True')

:cb.append(">> SetBufferLineList (indirect)")

:ee('vim.current.buffer[:] = True')

:ee('vim.current.buffer[:] = ["\\na", "bc"]')

:cb.append(">> InsertBufferLines (indirect)")

:ee('vim.current.buffer.append(None)')

:ee('vim.current.buffer.append(["\\na", "bc"])')

:ee('vim.current.buffer.append("\\nbc")')

:cb.append(">> RBItem")

:ee('vim.current.buffer[100000000]')

:cb.append(">> RBAsItem")

:ee('vim.current.buffer[100000000] = ""')

:cb.append(">> BufferAttr")

:ee('vim.current.buffer.xxx')

:cb.append(">> BufferSetattr")

:ee('vim.current.buffer.name = True')

:ee('vim.current.buffer.xxx = True')

:cb.append(">> BufferMark")

:ee('vim.current.buffer.mark(0)')

:ee('vim.current.buffer.mark("abcM")')

:ee('vim.current.buffer.mark("!")')

:cb.append(">> BufferRange")

:ee('vim.current.buffer.range(1, 2, 3)')

:cb.append("> BufMap")

:cb.append(">> BufMapItem")

:ee('vim.buffers[100000000]')

:number_test('vim.buffers[%s]', natural=True)

:cb.append("> Current")

:cb.append(">> CurrentGetattr")

:ee('vim.current.xxx')

:cb.append(">> CurrentSetattr")

:ee('vim.current.line = True')

:ee('vim.current.buffer = True')

:ee('vim.current.window = True')

:ee('vim.current.tabpage = True')

:ee('vim.current.xxx = True')

:del d

:del ned

:del dl

:del l

:del ll

:del nel

:del f

:del fd

:del fdel

:del subexpr_test

:del stringtochars_test

:del Mapping

:del convertfrompyobject_test

:del convertfrompymapping_test

:del iter_test

:del number_test

:del FailingTrue

:del FailingIter

:del FailingIterNext

:del FailingIterNextN

:del FailingMapping

:del FailingMappingKey

:del FailingList

:del NoArgsCall

:del FailingCall

:del FailingNumber

:EOF

::delfunction F

::"

::" Test import

:py3 << EOF

:sys.path.insert(0, os.path.join(os.getcwd(), 'python_b

efore'))

:sys.path.append(os.path.join(os.getcwd(), 'python_afte

r'))

:vim.options['rtp'] = os.getcwd().replace(',', '\\,').r

eplace('\\', '\\\\')

:l = []

:def callback(path):

:    l.append(os.path.relpath(path))

:vim.foreach_rtp(callback)

:cb.append(repr(l))

:del l

:def callback(path):

:    return os.path.relpath(path)

:cb.append(repr(vim.foreach_rtp(callback)))

:del callback

:from module import dir as d

:from modulex import ddir

:cb.append(d + ',' + ddir)

:import before

:cb.append(before.dir)

:import after

:cb.append(after.dir)

:import topmodule as tm

:import topmodule.submodule as tms

:import topmodule.submodule.subsubmodule.subsubsubmodul

e as tmsss

:cb.append(tm.__file__.replace(os.path.sep, '/')[-len('

modulex/topmodule/__init__.py'):])

:cb.append(tms.__file__.replace(os.path.sep, '/')[-len(

'modulex/topmodule/submodule/__init__.py'):])

:cb.append(tmsss.__file__.replace(os.path.sep, '/')[-le

n('modulex/topmodule/submodule/subsubmodule/subsubsubmodule.py'):])

:del before

:del after

:del d

:del ddir

:del tm

:del tms

:del tmsss

:EOF

::"

::" Test exceptions

::fun Exe(e)

::   execute a:e

::endfun

:py3 << EOF

:Exe = vim.bindeval('function("Exe")')

:ee('vim.command("throw \'abcN\'")')

:ee('Exe("throw \'def\'")')

:ee('vim.eval("Exe(\'throw \'\'ghi\'\'\')")')

:ee('vim.eval("Exe(\'echoerr \'\'jkl\'\'\')")')

:ee('vim.eval("Exe(\'xxx_non_existent_command_xxx\')"

)')

:ee('vim.eval("xxx_unknown_function_xxx()")')

:ee('vim.bindeval("Exe(\'xxx_non_existent_command_xxx

\')")')

:del Exe

:EOF

::delfunction Exe

::"

::" Regression: interrupting vim.command propagates t

o next vim.command

:py3 << EOF

:def test_keyboard_interrupt():

:    try:

:        vim.command('while 1 | endwhile')

:    except KeyboardInterrupt:

:        cb.append('Caught KeyboardInterrupt')

:    except Exception:

:        cb.append('!!!!!!!! Caught exception: ' + em

sg(sys.exc_info()))

:    else:

:        cb.append('!!!!!!!! No exception')

:    try:

:        vim.command('$ put =\'Running :put\'')

:    except KeyboardInterrupt:

:        cb.append('!!!!!!!! Caught KeyboardInterrupt

')
:    except Exception:

:        cb.append('!!!!!!!! Caught exception: ' + em

sg(sys.exc_info()))

:    else:

:        cb.append('No exception')

:EOF

::debuggreedy

::call inputsave()

::call feedkeys("s\ns\ns\ns\nq\n")

::redir => output

::debug silent! py3 test_keyboard_interrupt()

::redir END

::0 debuggreedy

::call inputrestore()

::silent $put =output

::unlet output

::py3 del test_keyboard_interrupt

::"

::" Cleanup

:py3 << EOF

:del cb

:del ee

:del emsg

:del sys

:del os

:del vim

:EOF

::endfun
:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:/^start:/,$w! test.out
:" vim: et ts=4 isk-=\:
:while getchar(0) isnot 0|endwhile
ENDTEST

start:

:"
:fun RunTest()

:  :let checkrefs = !empty($PYTHONDUMPREFS)

:  :let start = getline(1, '$')

:  :for i in range(checkrefs ? 10 : 1)

:    :   if i != 0

:      :       %d _

:      :       call setline(1, start)

:      :   endif

:    :   call Test()

:    :   if i == 0

:      :       let result = getline(1, '$')

:      :   endif

:    :endfor

:  :if checkrefs

:    :   %d _

:    :   call setline(1, result)

:    :endif

:  :endfun
:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out

:"
:call RunTest()
8 more lin
3 more lines

"a" [New File]

"b" [New File]

"c" [New File]

"0" [New File]

"1" [New File]

"a.1" [New File]

"2" [New File]

"a.2" [New File]

"b.2" [New File]

"c.2" [New File]

Already only one window

abc8def

Error detected while processing function RunTest[8]..Test:

line 1106:

abc9def

abcA

line 1108:

abcB

8 more lines

Entering Debug mode.  Type "cont" to continue.

function RunTest[8]..Test

line 1650: py3 test_keyboard_interrupt()

>s

function RunTest[8]..Test

line 1650: while 1 | endwhile

>s

function RunTest[8]..Test

line 1650: endwhile

>s

function RunTest[8]..Test

line 1650: while 1 | endwhile

>s

function RunTest[8]..Test

line 1650: endwhile

>q
['.']
'.'
3,xx
before
after
pythonx/topmodule/__init__.py
pythonx/topmodule/submodule/__init__.py
pythonx/topmodule/submodule/subsubmodule/subsubsubmodule.py
vim.command("throw 'abcN'"):(<class 'vim.error'>, error('abcN',))
Exe("throw 'def'"):(<class 'vim.error'>, error('def',))
vim.eval("Exe('throw ''ghi''')"):(<class 'vim.error'>, error('ghi',))
vim.eval("Exe('echoerr ''jkl''')"):(<class 'vim.error'>, error('Vim(echoerr):jkll',))
vim.eval("Exe('xxx_non_existent_command_xxx')"):(<class 'vim.error'>, error('Vimm:E492: Not an editor command: xxx_non_existent_command_xxx',))
vim.eval("xxx_unknown_function_xxx()"):(<class 'vim.error'>, error('Vim:E117: Unnknown function: xxx_unknown_function_xxx',))
vim.bindeval("Exe('xxx_non_existent_command_xxx')"):(<class 'vim.error'>, error(('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',))
Caught KeyboardInterrupt
Running :put
No exception

"test87.in" [Modified][Not edited] line 3151 of 3151 --100%-- col 1:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 1445 lines, 77744 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test87 = test61; then \
#	  if diff test.out test87.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test87.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test87.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test12.failed test.ok test.out X* viminfo
cp test12.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test12.in
[?1h="test12.in" 52 lines, 1199 charactersTests for 'directory' option.
- ".", in same dir as file
- "./dir", in directory relative to file
- "dir", in directory relative to current dir

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo
:set dir=.,~
:/start of testfile/,/end of testfile/w! Xtest1
:" do an ls of the current dir to find the swap file (should not be there)
:if has("unix")
:  !ls .X*.swp >test.out
:else
:  r !ls X*.swp >test.out
:endif
:!echo first line >>test.out
:e Xtest1
:if has("unix")
:" Do an ls of the current dir to find the swap file, remove the leading dot
:" to make the result the same for all systems.
:  r!ls .X*.swp
:  s/\.*X/X/:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for 'directory' option./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 40 lines, 965 characters written:set ff& cpo+=A
/ENDTEST:!mkdir Xtest2
:set dir=./Xtest2,.,~
:e Xtest1
:!ls X*.swp >>test.out
:!echo under under >>test.out
:!ls Xtest2 >>test.out
:!echo under Xtest1.swp >>test.out
:!mkdir Xtest.je
:/start of testfile/,/end of testfile/w! Xtest2/Xtest3
:set dir=Xtest.je,~
:e Xtest2/Xtest3
:swap
:!ls Xtest2 >>test.out
:!echo under Xtest3 >>test.out
:!ls Xtest.je >>test.out
:!echo under Xtest3.swp >>test.out
:qa!
ENDTEST

start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo
:set dir=.,~
:/start of testfile/,/end of testfile/w! Xtest1
"Xtest1" [New] 4L, 70C written:" do an ls of the current dir to find the swap file (should not be there)
:if has("unix")

:  :  !ls .X*.swp >test.out

:!ls .X*.swp >test.out[?1l>
ls: cannot access '.X*.swp': No such file or directory

shell returned 2

[?1h=:  :else

:  :  r !ls X*.swp >test.out

:  :endif
:!mkdir Xtest2
:set dir=./Xtest2,.,~
:e Xtest1
:!ls X*.swp >>test.out
:!echo under under >>test.out
:!ls Xtest2 >>test.out
:!echo under Xtest1.swp >>test.out
:!mkdir Xtest.je
:/start of testfile/,/end of testfile/w! Xtest2/Xtest3
:set dir=Xtest.je,~
:e Xtest2/Xtest3
:swap
:!ls Xtest2 >>test.out
:!echo under Xtest3 >>test.out
:!ls Xtest.je >>test.out
:!echo under Xtest3.swp >>test.out
:qa!
ENDTEST

start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile:!echo first line >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:e Xtest1
"Xtest1" 4L, 70Cstart of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"Xtest1" 4L, 70C:if has("unix")

:  :" Do an ls of the current dir to find the swap file, remove the leading dot

:  :" to make the result the same for all systems.

:  :  r!ls .X*.swp

:  :  s/\.*X/X/

:  :  .w >>test.out
"test.out" 1L, 11C appended

:  :  undo

1 line less; before #1  0 seconds ago

:  :else

:  :  !ls X*.swp >>test.out

:  :endif
start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:!echo under Xtest1.swp >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir Xtest2
[?1l>
[?1h=
Press ENTER or type command to continue:set dir=./Xtest2,.,~
start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:e Xtest1
"Xtest1" 4L, 70C:!ls X*.swp >>test.out
[?1l>
ls: cannot access 'X*.swp': No such file or directory

shell returned 2

[?1h=
Press ENTER or type command to continue:!echo under under >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!ls Xtest2 >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!echo under Xtest1.swp >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir Xtest.je
[?1l>
[?1h=
Press ENTER or type command to continue:/start of testfile/,/end of testfile/w! Xtest2/Xtest3
search hit BOTTOM, continuing at TOP"Xtest2/Xtest3" [New] 4L, 70C written

Press ENTER or type command to continue:set dir=Xtest.je,~
start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:e Xtest2/Xtest3
"Xtest2/Xtest3" 4L, 70C:swap
Xtest.je/Xtest3.swp:!ls Xtest2 >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!echo under Xtest3 >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!ls Xtest.je >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!echo under Xtest3.swp >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test12 = test61; then \
#	  if diff test.out test12.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test12.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test12.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test25.failed test.ok test.out X* viminfo
cp test25.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test25.in
[?1h="test25.in" 31 lines, 840 charactersTest for jumping to a tag with 'hidden' set, with symbolic link in path of tag.
This only works for Unix, because of the symbolic link.

STARTTEST
:so small.vim
:set hidden
:" Create a link from test25.dir to the current directory.
:!rm -f test25.dir
:!ln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line
:r !pwd
d$/test
hP:.w! tags.test
:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.test
G^] x:.w! test.out
:!rm -f test25.dir tags.test
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for jumping to a tag with 'hidden' set, with symbolic link in path of tag./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 540 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:set hidden
:" Create a link from test25.dir to the current directory.
:!rm -f test25.dir
[?1l>
[?1h=
Press ENTER or type command to continue:!ln -s . test25.dir
[?1l>
[?1h=
Press ENTER or type command to continue:" Create tags.text, with the current directory name inserted.
Test for jumping to a tag with 'hidden' set, with symbolic link in path of tag.
This only works for Unix, because of the symbolic link.

STARTTEST
:so small.vim
:set hidden
:" Create a link from test25.dir to the current directory.
:!rm -f test25.dir
:!ln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line
:r !pwd
d$/test
hP:.w! tags.test
:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.test
G^] x:.w! test.out
:!rm -f test25.dir tags.test
:qa!
ENDTEST

/tags line
his only works for Unix, because of the symbolic link.STARTTEST
:so small.vim
:set hidden" Create a link from test25.dir to the current directory.
:!rm -f test25.dirln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line:r !pwdd$/test
hP:.w! tags.test
:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.testG^] x:.w! test.out:!rm -f test25.dir tags.test
:qa!ENDTESTtags line:
:r !pwd
STARTTEST
:so small.vim
:set hidden
:" Create a link from test25.dir to the current directory.
:!rm -f test25.dir
:!ln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line
:r !pwd
d$/test
hP:.w! tags.test
:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.test
G^] x:.w! test.out
:!rm -f test25.dir tags.test
:qa!
ENDTEST

tags line:
/<<PKGBUILDDIR>>/src/vim-gtk/testdir

/test

SECTION_OFF     /test25.dir/test25.in   /^#define  SECTION_OFF  3$//<<PKGBUILDDIR>>/src/vim-gtk/testdir/test25.dir/te@
SECTION_OFF     /<<PKGBUILDDIR>>/src/vim-gtk/testdir/test25.dir/teest25.in /^#define  SECTION_OFF  3$/

:.w! tags.test
"tags.test" [New File] 1 line, 112 characters written:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.test






/*tx.c*/
#define  SECTION_OFF  3
#define  NUM_SECTIONS 3

SECTION_OFF#efine  SECTION_OFF  3:.w! test.out
"test.out" [New File] 1 line, 23 characters written:!rm -f test25.dir tags.test
[?1l>
[No write since last change]

[?1h=
Press ENTER or type command to continue:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test25 = test61; then \
#	  if diff test.out test25.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test25.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test25.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test49.failed test.ok test.out X* viminfo
cp test49.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test49.in
[?1h="test49.in" 32 lines, 705 charactersThis is a test of the script language.

If after adding a new test, the test output doesn't appear properly in
test49.failed, try to add one or more "G"s at the line ending in "test.out"

STARTTEST
:so small.vim
:se nocp nomore viminfo+=nviminfo
:lang mess C
:so test49.vim
:" Go back to this file and append the results from register r.
:buf test49.in
G"rp:/^Results/,$w! test.out
:"
:" make valgrind happy
:redir => funclist
:silent func
:redir END
:for line in split(funclist, "\n")
:  let name = matchstr(line, 'function \zs[A-Z]\w*\ze(')
:  if name != ''
:    exe "delfunc " . name
:  endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
This is a test of the script language./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 23 lines, 475 characters written:set ff& cpo+=A
/ENDTEST






:endfor
:for v in keys(g:)
:  silent! exe "unlet " . v
:endfor
:unlet v
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:se nocp nomore viminfo+=nviminfo
:lang mess C
:so test49.vim
Error detected while processing function F:

line    5:

E583: multiple :else:     else^I^I

Error detected while processing function G:

line    5:

E584: :elseif after :else:     elseif 1^I^I" aborts function

Error detected while processing function H:

line    7:

E583: multiple :else:     else^I^I

Error detected while processing function I:

line    7:

E584: :elseif after :else:     elseif 1^I^I" aborts function

*** Test  16: OK (8722)

Error detected while processing function F:

line   18:

E171: Missing :endif:     endwhile^I

E171: Missing :endif:     endwhile^I

line   34:

E171: Missing :endif:     endwhile^I

E171: Missing :endif:     endwhile^I

E171: Missing :endif:     endwhile^I

line   47:

E580: :endif without :if: ^Iendif^I

E580: :endif without :if: ^Iendif^I

E580: :endif without :if: ^Iendif^I

Error detected while processing /<<PKGBUILDDIR>>/src/vim-gtk/test

dir/test49.vim:

line  784:

E171: Missing :endif: endwhile 

*** Test  17: OK (285127993)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"/tmp/vabKeII/0" [New] 53L, 1582C written14L, 358C appended26L, 824C appended34L, 986C appended

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/1[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/1" 16L, 304C appended17L, 326C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/2[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/2"' -c 'breakad

dfile 8 /tmp/vabKeII/1' -S /tmp/vabKeII/1[?1l>

shell returned 1

[?1h="/tmp/vabKeII/2" 3L, 6C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/3[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/3" 6L, 127C appended7L, 149C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/4[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/4"' -c 'breakad

dfile 4 /tmp/vabKeII/3' -S /tmp/vabKeII/3[?1l>

shell returned 1

[?1h="/tmp/vabKeII/4" 1L, 5C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/5[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/5" 21L, 486C appended22L, 508C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/6[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/6"' -c 'breakad

dfunc 7 F' -S /tmp/vabKeII/5[?1l>

shell returned 1

[?1h="/tmp/vabKeII/6" 3L, 18C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/7[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/7" 13L, 364C appended14L, 386C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/8[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/8"' -c 'breakad

dfunc 3 G' -S /tmp/vabKeII/7[?1l>

shell returned 1

[?1h="/tmp/vabKeII/8" 1L, 9C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  18: OK (67224583)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/9[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/9" 12L, 201C appended13L, 223C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/10[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/10"' -S /tmp/vabKe

II/9[?1l>

shell returned 1

[?1h="/tmp/vabKeII/10" 2L, 4C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/11[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/11" 12L, 205C appended13L, 227C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/12[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/12"' -S /tmp/vabKe

II/11[?1l>

shell returned 1

[?1h="/tmp/vabKeII/12" 2L, 7C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/13[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/13" 6L, 122C appended7L, 144C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/14[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/14"' -S /tmp/vabKe

II/13[?1l>

shell returned 1

[?1h="/tmp/vabKeII/14" 1L, 5C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/15[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/15" 8L, 176C appended9L, 198C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/16[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/16"' -S /tmp/vabKe

II/15[?1l>

shell returned 1

[?1h="/tmp/vabKeII/16" 1L, 6C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/17[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/17" 10L, 215C appended11L, 237C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/18[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/18"' -S /tmp/vabKe

II/17[?1l>

shell returned 1

[?1h="/tmp/vabKeII/18" 1L, 8C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/19[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/19" 7L, 149C appended8L, 171C8L, 170C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/20[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/20"' -S /tmp/vabKe

II/19[?1l>

shell returned 1

[?1h="/tmp/vabKeII/20" 1L, 9C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  19: OK (69275973)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/21[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/21" 9L, 135C appended10L, 157C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/22[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/22"' -S /tmp/vabKe

II/21[?1l>

shell returned 1

[?1h="/tmp/vabKeII/22" 2L, 4C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/23[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/23" 10L, 155C appended11L, 177C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/24[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/24"' -S /tmp/vabKe

II/23[?1l>

shell returned 1

[?1h="/tmp/vabKeII/24" 3L, 8C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/25[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/25" 12L, 204C appended13L, 226C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/26[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/26"' -S /tmp/vabKe

II/25[?1l>

shell returned 1

[?1h="/tmp/vabKeII/26" 4L, 18C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/27[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/27" 12L, 214C appended13L, 236C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/28[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/28"' -S /tmp/vabKe

II/27[?1l>

shell returned 1

[?1h="/tmp/vabKeII/28" 4L, 22C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/29[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/29" 12L, 211C appended13L, 233C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/30[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/30"' -S /tmp/vabKe

II/29[?1l>

shell returned 1

[?1h="/tmp/vabKeII/30" 3L, 22C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/31[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/31" 14L, 263C appended15L, 285C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/32[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/32"' -S /tmp/vabKe

II/31[?1l>

shell returned 1

[?1h="/tmp/vabKeII/32" 4L, 34C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/33[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/33" 14L, 277C appended15L, 299C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/34[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/34"' -S /tmp/vabKe

II/33[?1l>

shell returned 1

[?1h="/tmp/vabKeII/34" 4L, 40C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  20: OK (1874575085)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/35[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/35" 58L, 1022C appended59L, 1044C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/36[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/36"' -S /tmp/vabKe

II/35[?1l>
[?1h="/tmp/vabKeII/36" 9L, 56C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  21: OK (147932225)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/37[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/37" 23L, 418C appended24L, 440C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/38[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/38"' -S /tmp/vabKe

II/37[?1l>

shell returned 1

[?1h="/tmp/vabKeII/38" 1L, 2C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/39[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/39" 23L, 437C appended24L, 459C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/40[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/40"' -c 'breaka

dd func 2 Interrupt' -S /tmp/vabKeII/39[?1l>

shell returned 1

[?1h="/tmp/vabKeII/40" 1L, 3C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/41[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/41" 21L, 386C appended22L, 408C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/42[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/42"' -S /tmp/vabKe

II/41[?1l>

shell returned 1

[?1h="/tmp/vabKeII/42" 1L, 5C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  22: OK (4161)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/43[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/43" 25L, 432C appended26L, 454C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/44[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/44"' -S /tmp/vabKe

II/43[?1l>

shell returned 1

[?1h="/tmp/vabKeII/44" 3L, 8C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  23: OK (49)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/45[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/45" 16L, 392C appended17L, 414C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/46[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/46"' -S /tmp/vabKe

II/45[?1l>
[?1h="/tmp/vabKeII/46" 3L, 7C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  24: OK (41)

*** Test  25: OK (260177811)

*** Test  26: OK (1681500476)

*** Test  27: OK (1996459)

   function F()

1      try

2Xpath 1" X: 1

3try

4Xpath 2" X: 2

5return

6Xpath 4" X: 0

7finally

8Xpath 8" X: 8

9endtry

10Xpath 16" X: 0

11     finally

12Xpath 32" X: 32

13     endtry

14     Xpath 64" X: 0

   endfunction"/tmp/vabKeII/47"[noeol] 17L, 552C
14 substitutions on 14 lines
Pattern not found: ^\s*$
"/tmp/vabKeII/47" 14L, 502C written
"test49.in" 32L, 705C
   function G()
1      try
2Xpath 128" X: 128
3return
4Xpath 256" X: 0
5      finally
6Xpath 512" X: 512
7call F()
8Xpath 1024" X: 1024
9      endtry
10     Xpath 2048" X: 0
   endfunction"/tmp/vabKeII/48"[noeol] 13L, 406C
10 substitutions on 10 lines
Pattern not found: ^\s*$
"/tmp/vabKeII/48" 10L, 378C written
"test49.in" 32L, 705C
   function H()
1      try
2Xpath 4096" X: 4096
3call G()
4Xpath 8192" X: 8192
5      finally
6Xpath 16384" X: 16384
7return
8Xpath 32768" X: 0
9      endtry

10     Xpath 65536" X: 0

   endfunction"/tmp/vabKeII/49"[noeol] 13L, 409C
10 substitutions on 10 lines
Pattern not found: ^\s*$
"/tmp/vabKeII/49" 10L, 381C written
"test49.in" 32L, 705C
*** Test  28: OK (1996459)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/50[?1l>[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/50" 39L, 721C appended40L, 743C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/51[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/51"' -S /tmp/vabKe

II/50[?1l>

shell returned 1

[?1h="/tmp/vabKeII/51" 6L, 21C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/52[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/52" 23L, 509C appended24L, 531C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/53[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/53"' -S /tmp/vabKe

II/52[?1l>

shell returned 1

[?1h="/tmp/vabKeII/53" 4L, 34C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  29: OK (170428555)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/54[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/54" 60L, 1101C appended61L, 1123C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/55[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nv

iminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/55"' -

c'breakadd func 3 F' -c 'breakadd file 19 /tmp/vabKeII/54' -c 'breakadd file 31

/tmp/vabKeII/54' -S /tmp/vabKeII/54[?1l>

shell returned 1

[?1h="/tmp/vabKeII/55" 16L, 89C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  30: OK (190905173)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/56[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/56" 60L, 1122C appended61L, 1144C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/57[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/57"' -S /tmp/vabKe

II/56[?1l>

shell returned 1

[?1h="/tmp/vabKeII/57" 16L, 89C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  31: OK (190905173)

*** Test  32: OK (354833067)

*** Test  33: OK (1216907538)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/58[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/58" 63L, 1288C appended64L, 1310C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/59[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi

minfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKe

II/59"' -c 'breakadd func 16 C' -S /tmp/vabKeII/58[?1l>

shell returned 1

[?1h="/tmp/vabKeII/59" 17L, 127C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  34: OK (2146584868)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/60[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/60" 63L, 1285C appended64L, 1307C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/61[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi

minfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKe

II/61"' -c 'breakadd func 16 B' -S /tmp/vabKeII/60[?1l>

shell returned 1

[?1h="/tmp/vabKeII/61" 17L, 127C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  35: OK (2146584868)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/62[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/62" 66L, 1430C appended67L, 1452C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/63[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vimin

fo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/

63"' -c 'breakadd func 16 R' -S /tmp/vabKeII/62[?1l>

shell returned 1

[?1h="/tmp/vabKeII/63" 9L, 81C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  36: OK (1071644672)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/64[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/64" 73L, 1488C appended74L, 1510C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/65[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/65"' -c 'breakadd

func 16 F' -S /tmp/vabKeII/64[?1l>

shell returned 1

[?1h="/tmp/vabKeII/65" 9L, 81C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  37: OK (1071644672)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/66[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/66" 82L, 1519C appended83L, 1541C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/67[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi

minfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKe

II/67"' -c 'breakadd func 16 E' -S /tmp/vabKeII/66[?1l>

shell returned 1

[?1h="/tmp/vabKeII/67" 8L, 63C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  38: OK (357908480)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/68[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/68" 83L, 1538C appended84L, 1560C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/69[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -

c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVi

mResult = "/tmp/vabKeII/69"' -c 'breakadd func 16 I' -c 'breakadd func 22 I' -S

/tmp/vabKeII/68[?1l>

shell returned 1

[?1h="/tmp/vabKeII/69" 8L, 63C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  39: OK (357908480)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/70[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/70" 82L, 1519C appended83L, 1541C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/71[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi

minfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKe

II/71"' -c 'breakadd func 16 T' -S /tmp/vabKeII/70[?1l>

shell returned 1

[?1h="/tmp/vabKeII/71" 8L, 63C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  40: OK (357908480)

*** Test  41: OK (3076095)

*** Test  42: OK (1505155949)

*** Test  43: OK (1157763329)

*** Test  44: OK (1031761407)

*** Test  45: OK (1157763329)

*** Test  46: OK (739407)

*** Test  47: OK (371213935)

*** Test  48: OK (756255461)

*** Test  49: OK (179000669)

   function C()

1      try

2Xpath 1" X: 1

3throw "arrgh"

4Xpath 2" X: 0

5      catch /arrgh/

6Xpath 4" X: 4

7      endtry

8      Xpath 8" X: 8

   endfunction"/tmp/vabKeII/72"[noeol] 11L, 334C
8 substitutions on 8 lines
Pattern not found: ^\s*$
"/tmp/vabKeII/72" 8L, 295C written
"test49.in" 32L, 705C
   function T1()
1      XloopNEXT
2      try
3Xloop 1" X: 16 + 16*16
4throw "arrgh"
5Xloop 2" X: 0
6      finally

7Xloop 4" X: 64 + 64*16

8      endtry

9      Xloop 8" X: 0

   endfunction"/tmp/vabKeII/73"[noeol] 12L, 364C
9 substitutions on 9 lines
Pattern not found: ^\s*$
"/tmp/vabKeII/73" 9L, 323C written
"test49.in" 32L, 705C
   function T2()
1      try
2Xpath 4096" X: 4096
3call T1()
4Xpath 8192" X: 0
5      finally
6Xpath 16384" X: 16384
7      endtry

8      Xpath 32768" X: 0

   endfunction"/tmp/vabKeII/74"[noeol] 11L, 332C
8 substitutions on 8 lines
Pattern not found: ^\s*$
"/tmp/vabKeII/74" 8L, 305C written
"test49.in" 32L, 705C
*** Test  50: OK (363550045)
*** Test  51: OK (40744667)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/76[?1l>[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/76" 2L, 41C appended3L, 63C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/77[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/77"' -S /tmp/vabKeII/76[?1l>

shell returned 1

[?1h="/tmp/vabKeII/77" 1L, 2C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/75" 8L, 182C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/78[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/78" 7L, 115C appended8L, 137C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/79[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/79"' -S /tmp/vabKeII/78[?1l>

shell returned 1

[?1h="/tmp/vabKeII/79" 1L, 2C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/75" 8L, 181C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/80[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/80" 12L, 180C appended13L, 202C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/81[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/81"' -S /tmp/vabKeII/80[?1l>

shell returned 1

[?1h="/tmp/vabKeII/81" 2L, 8C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/75" 10L, 209C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/82[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/82" 8L, 139C appended9L, 161C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/83[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/83"' -S /tmp/vabKeII/82[?1l>

shell returned 1

[?1h="/tmp/vabKeII/83" 2L, 11C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/75" 10L, 217C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/84[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/84" 5L, 87C appended6L, 109C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/85[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir!

>/tmp/vabKeII/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin =

1' -c 'let ExtraVimResult = "/tmp/vabKeII/85"' -c 'breakadd file 4 /tmp/vabKeII

/84' -S /tmp/vabKeII/84[?1l>

shell returned 1

[?1h="/tmp/vabKeII/85" 1L, 7C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/75" [noeol] 9L, 202C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/86[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/86" 7L, 189C appended8L, 211C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/87[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/87"' -S /tmp/vabKeII/86[?1l>

shell returned 1

[?1h="/tmp/vabKeII/87" 1L, 8C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/75" 9L, 252C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/88[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/88" 7L, 199C appended8L, 221C8L, 220C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/89[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/89"' -S /tmp/vabKeII/88[?1l>

shell returned 1

[?1h="/tmp/vabKeII/89" 1L, 10C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/75" 9L, 214C
"test49.in" 32L, 705C

*** Test  52: OK (1247112011)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/91[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/91" 1L, 10C appended2L, 32C2L, 31C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/92[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/92"' -S /tmp/vabKeII/91[?1l>

shell returned 1

[?1h="/tmp/vabKeII/92" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/90" 6L, 154C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/93[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/93" 3L, 39C appended4L, 61C

3 substitutions on 3 lines
"/tmp/vabKeII/93" 4L, 58C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/94[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/94"' -S /tmp/vabKeII/93[?1l>

shell returned 1

[?1h="/tmp/vabKeII/94" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/90" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/95[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/95" 4L, 45C appended5L, 67C

4 substitutions on 4 lines
"/tmp/vabKeII/95" 5L, 63C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/96[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/96"' -S /tmp/vabKeII/95[?1l>

shell returned 1

[?1h="/tmp/vabKeII/96" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/90" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/97[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/97" 3L, 33C appended4L, 55C

3 substitutions on 3 lines
"/tmp/vabKeII/97" 4L, 52C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/98[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/98"' -S /tmp/vabKeII/97[?1l>

shell returned 1

[?1h="/tmp/vabKeII/98" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/90" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/99[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/99" 5L, 65C appended6L, 87C

5 substitutions on 5 lines
"/tmp/vabKeII/99" 6L, 82C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/100[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/100"' -S /tmp/vabKeII/99[?1l>

shell returned 1

[?1h="/tmp/vabKeII/100" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/90" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/101[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/101" 1L, 9C appended2L, 31C2L, 30C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/102[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/102"' -S /tmp/vabKeII/101[?1l>

shell returned 1

[?1h="/tmp/vabKeII/102" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/90" 6L, 153C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/103[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/103" 3L, 38C appended4L, 60C

3 substitutions on 3 lines
"/tmp/vabKeII/103"4L, 57C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/104[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/104"' -S /tmp/vabKeII/103[?1l>

shell returned 1

[?1h="/tmp/vabKeII/104" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/105[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/105" 4L, 44C appended5L, 66C

4 substitutions on 4 lines
"/tmp/vabKeII/105"5L, 62C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/106[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/106"' -S /tmp/vabKeII/105[?1l>

shell returned 1

[?1h="/tmp/vabKeII/106" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/107[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/107" 3L, 32C appended4L, 54C

3 substitutions on 3 lines
"/tmp/vabKeII/107"4L, 51C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/108[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/108"' -S /tmp/vabKeII/107[?1l>

shell returned 1

[?1h="/tmp/vabKeII/108" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/109[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/109" 5L, 64C appended6L, 86C

5 substitutions on 5 lines
"/tmp/vabKeII/109"6L, 81C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/110[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/110"' -S /tmp/vabKeII/109[?1l>

shell returned 1

[?1h="/tmp/vabKeII/110" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/111[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/111" 1L, 11C appended2L, 33C2L, 32C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/112[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/112"' -S /tmp/vabKeII/111[?1l>

shell returned 1

[?1h="/tmp/vabKeII/112" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/113[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/113" 3L, 40C appended4L, 62C

3 substitutions on 3 lines
"/tmp/vabKeII/113"4L, 59C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/114[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/114"' -S /tmp/vabKeII/113[?1l>

shell returned 1

[?1h="/tmp/vabKeII/114" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/90" 6L, 161C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/115[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/115" 4L, 46C appended5L, 68C

4 substitutions on 4 lines
"/tmp/vabKeII/115"5L, 64C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/116[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/116"' -S /tmp/vabKeII/115[?1l>

shell returned 1

[?1h="/tmp/vabKeII/116" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/90" 6L, 161C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/117[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/117" 3L, 34C appended4L, 56C

3 substitutions on 3 lines
"/tmp/vabKeII/117"4L, 53C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/118[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/118"' -S /tmp/vabKeII/117[?1l>

shell returned 1

[?1h="/tmp/vabKeII/118" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/90" 6L, 161C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/119[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/119" 5L, 66C appended6L, 88C

5 substitutions on 5 lines
"/tmp/vabKeII/119"6L, 83C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/120[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/120"' -S /tmp/vabKeII/119[?1l>

shell returned 1

[?1h="/tmp/vabKeII/120" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/90" 6L, 161C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/121[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/121" 4L, 37C appended5L, 59C

4 substitutions on 4 lines
"/tmp/vabKeII/121"5L, 55C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/122[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/122"' -S /tmp/vabKeII/121[?1l>

shell returned 1

[?1h="/tmp/vabKeII/122" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/90" 6L, 150C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/123[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/123" 4L, 41C appended5L, 63C

4 substitutions on 4 lines
"/tmp/vabKeII/123"5L, 59C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/124[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vabKeII/124"' -S /tmp/vabKeII/123[?1l>

shell returned 1

[?1h="/tmp/vabKeII/124" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/90" 6L, 159C
"test49.in" 32L, 705C

*** Test  53: OK (131071)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/126[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/126" 1L, 13C appended2L, 35C2L, 34C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/127[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/127"' -S /tmp/vabKeII/126[?1l>

shell returned 1

[?1h="/tmp/vabKeII/127" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/125" 6L, 164C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/128[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/128" 3L, 36C appended4L, 58C

3 substitutions on 3 lines
"/tmp/vabKeII/128"4L, 55C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/129[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/129"' -S /tmp/vabKeII/128[?1l>

shell returned 1

[?1h="/tmp/vabKeII/129" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/125" 6L, 168C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/130[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/130" 3L, 38C appended4L, 60C

3 substitutions on 3 lines
"/tmp/vabKeII/130"4L, 57C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/131[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/131"' -S /tmp/vabKeII/130[?1l>

shell returned 1

[?1h="/tmp/vabKeII/131" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/125" 6L, 154C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/132[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/132" 4L, 48C appended5L, 70C

4 substitutions on 4 lines
"/tmp/vabKeII/132"5L, 66C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/133[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/133"' -S /tmp/vabKeII/132[?1l>

shell returned 1

[?1h="/tmp/vabKeII/133" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/125" 6L, 168C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/134[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/134" 4L, 53C appended5L, 75C

4 substitutions on 4 lines
"/tmp/vabKeII/134"5L, 71C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/135[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/135"' -S /tmp/vabKeII/134[?1l>

shell returned 1

[?1h="/tmp/vabKeII/135" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/125" 6L, 155C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/136[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/136" 5L, 62C appended6L, 84C

5 substitutions on 5 lines
"/tmp/vabKeII/136"6L, 79C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/137[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/137"' -S /tmp/vabKeII/136[?1l>

shell returned 1

[?1h="/tmp/vabKeII/137" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/125" 6L, 155C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/138[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/138" 5L, 64C appended6L, 86C

5 substitutions on 5 lines
"/tmp/vabKeII/138"6L, 81C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/139[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/139"' -S /tmp/vabKeII/138[?1l>

shell returned 1

[?1h="/tmp/vabKeII/139" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/125" 6L, 154C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/140[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/140" 3L, 36C appended4L, 58C

3 substitutions on 3 lines
"/tmp/vabKeII/140"4L, 55C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/141[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/141"' -S /tmp/vabKeII/140[?1l>

shell returned 1

[?1h="/tmp/vabKeII/141" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/125" 6L, 168C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/142[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/142" 5L, 67C appended6L, 89C

5 substitutions on 5 lines
"/tmp/vabKeII/142"6L, 84C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/143[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/143"' -S /tmp/vabKeII/142[?1l>

shell returned 1

[?1h="/tmp/vabKeII/143" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/125" 6L, 167C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/144[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/144" 5L, 68C appended6L, 90C

5 substitutions on 5 lines
"/tmp/vabKeII/144"6L, 85C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/145[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/145"' -S /tmp/vabKeII/144[?1l>

shell returned 1

[?1h="/tmp/vabKeII/145" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/125" 6L, 168C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/146[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/146" 7L, 95C appended8L, 117C

7 substitutions on 7 lines
"/tmp/vabKeII/146"8L, 110C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/147[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/147"' -S /tmp/vabKeII/146[?1l>

shell returned 1

[?1h="/tmp/vabKeII/147" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/125" 6L, 167C
"test49.in" 32L, 705C

*** Test  54: OK (2047)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/149[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/149" 1L, 13C appended2L, 35C2L, 34C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/150[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/150"' -S /tmp/vabKeII/149[?1l>

shell returned 1

[?1h="/tmp/vabKeII/150" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/148" 6L, 172C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/151[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/151" 3L, 36C appended4L, 58C

3 substitutions on 3 lines
"/tmp/vabKeII/151"4L, 55C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/152[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/152"' -S /tmp/vabKeII/151[?1l>

shell returned 1

[?1h="/tmp/vabKeII/152" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/148" 6L, 176C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/153[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/153" 4L, 48C appended5L, 70C

4 substitutions on 4 lines
"/tmp/vabKeII/153"5L, 66C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/154[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/154"' -S /tmp/vabKeII/153[?1l>

shell returned 1

[?1h="/tmp/vabKeII/154" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/148" 6L, 176C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/155[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/155" 3L, 36C appended4L, 58C

3 substitutions on 3 lines
"/tmp/vabKeII/155"4L, 55C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/156[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/156"' -S /tmp/vabKeII/155[?1l>

shell returned 1

[?1h="/tmp/vabKeII/156" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/148" 6L, 176C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/157[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/157" 5L, 68C appended6L, 90C

5 substitutions on 5 lines
"/tmp/vabKeII/157"6L, 85C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/158[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/158"' -S /tmp/vabKeII/157[?1l>

shell returned 1

[?1h="/tmp/vabKeII/158" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/148" 6L, 176C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/159[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/159" 1L, 10C appended2L, 32C2L, 31C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/160[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/160"' -S /tmp/vabKeII/159[?1l>

shell returned 1

[?1h="/tmp/vabKeII/160" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/148" 6L, 166C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/161[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/161" 3L, 33C appended4L, 55C

3 substitutions on 3 lines
"/tmp/vabKeII/161"4L, 52C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/162[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/162"' -S /tmp/vabKeII/161[?1l>

shell returned 1

[?1h="/tmp/vabKeII/162" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/148" 6L, 170C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/163[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/163" 4L, 45C appended5L, 67C

4 substitutions on 4 lines
"/tmp/vabKeII/163"5L, 63C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/164[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/164"' -S /tmp/vabKeII/163[?1l>

shell returned 1

[?1h="/tmp/vabKeII/164" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/148" 6L, 170C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/165[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/165" 3L, 33C appended4L, 55C

3 substitutions on 3 lines
"/tmp/vabKeII/165"4L, 52C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/166[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/166"' -S /tmp/vabKeII/165[?1l>

shell returned 1

[?1h="/tmp/vabKeII/166" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/148" 6L, 170C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/167[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/167" 5L, 65C appended6L, 87C

5 substitutions on 5 lines
"/tmp/vabKeII/167"6L, 82C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/168[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/168"' -S /tmp/vabKeII/167[?1l>

shell returned 1

[?1h="/tmp/vabKeII/168" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/148" 6L, 170C
"test49.in" 32L, 705C

*** Test  55: OK (1023)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/170[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/170" 1L, 11C appended2L, 33C2L, 32C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/171[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/171"' -S /tmp/vabKeII/170[?1l>

shell returned 1

[?1h="/tmp/vabKeII/171" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/169" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/172[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/172" 3L, 34C appended4L, 56C

3 substitutions on 3 lines
"/tmp/vabKeII/172"4L, 53C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/173[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/173"' -S /tmp/vabKeII/172[?1l>

shell returned 1

[?1h="/tmp/vabKeII/173" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/169" 6L, 162C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/174[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/174" 3L, 40C appended4L, 62C

3 substitutions on 3 lines
"/tmp/vabKeII/174"4L, 59C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/175[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/175"' -S /tmp/vabKeII/174[?1l>

shell returned 1

[?1h="/tmp/vabKeII/175" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/169" 6L, 162C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/176[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/176" 3L, 32C appended4L, 54C

3 substitutions on 3 lines
"/tmp/vabKeII/176"4L, 51C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/177[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/177"' -S /tmp/vabKeII/176[?1l>

shell returned 1

[?1h="/tmp/vabKeII/177" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/169" 6L, 152C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/178[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/178" 3L, 35C appended4L, 57C

3 substitutions on 3 lines
"/tmp/vabKeII/178"4L, 54C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/179[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/179"' -S /tmp/vabKeII/178[?1l>

shell returned 1

[?1h="/tmp/vabKeII/179" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/169" 6L, 155C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/180[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/180" 4L, 44C appended5L, 66C

4 substitutions on 4 lines
"/tmp/vabKeII/180"5L, 62C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/181[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/181"' -S /tmp/vabKeII/180[?1l>

shell returned 1

[?1h="/tmp/vabKeII/181" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/169" 6L, 152C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/182[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/182" 4L, 47C appended5L, 69C

4 substitutions on 4 lines
"/tmp/vabKeII/182"5L, 65C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/183[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/183"' -S /tmp/vabKeII/182[?1l>

shell returned 1

[?1h="/tmp/vabKeII/183" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/169" 6L, 155C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/184[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/184" 5L, 64C appended6L, 86C

5 substitutions on 5 lines
"/tmp/vabKeII/184"6L, 81C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/185[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/185"' -S /tmp/vabKeII/184[?1l>

shell returned 1

[?1h="/tmp/vabKeII/185" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/169" 6L, 152C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/186[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/186" 5L, 67C appended6L, 89C

5 substitutions on 5 lines
"/tmp/vabKeII/186"6L, 84C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/187[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vabKeII/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vabKeII/187"' -S /tmp/vabKeII/186[?1l>

shell returned 1

[?1h="/tmp/vabKeII/187" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vabKeII/169" 6L, 155C
"test49.in" 32L, 705C

*** Test  56: OK (511)

   function FuncException()

1      let g:exception = v:exception

   endfunction"/tmp/vabKeII/188" [noeol] 4L, 80C
Pattern not found: ^\s*$
"/tmp/vabKeII/188"1L, 36C written
"test49.in" 32L, 705C
   function FuncThrowpoint()

1      let g:throwpoint = v:throwpoint

   endfunction"/tmp/vabKeII/189" [noeol] 4L, 83C
Pattern not found: ^\s*$
"/tmp/vabKeII/189"1L, 38C written
"test49.in" 32L, 705C
   function T(arg, line)

1      if a:line == 2

2throw a:arg" in line 2

3      elseif a:line == 4

4throw a:arg" in line 4

5      elseif a:line == 6

6throw a:arg" in line 6

7      elseif a:line == 8

8throw a:arg" in line 8

9      endif

   endfunction"/tmp/vabKeII/190"[noeol] 12L, 341C
9 substitutions on 9 lines
8 substitutions on 8 lines
Pattern not found: ^\s*$
"/tmp/vabKeII/190"9L, 292C written
"test49.in" 32L, 705C
   function G(arg, line)
1      call T(a:arg, a:line)
   endfunction"/tmp/vabKeII/191"[noeol] 4L, 69C
Pattern not found: ^\s*$
"/tmp/vabKeII/191"1L, 30C written
"test49.in" 32L, 705C
   function F(arg, line)
1      call G(a:arg, a:line)
   endfunction"/tmp/vabKeII/192"[noeol] 4L, 69C
Pattern not found: ^\s*$
"/tmp/vabKeII/192"1L, 30C written
"test49.in" 32L, 705C
*** Test  57: OK (2147450880)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/193[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/193" 87L, 1700C appended88L, 1722C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/194[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/194"' -c 'break

add func 4 T' -S /tmp/vabKeII/193[?1l>

shell returned 1

[?1h="/tmp/vabKeII/194" 8L, 36C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  58: OK (624945)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/195[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/195" 293L, 5789C appended294L, 5811C

3 substitutions on 3 lines
"/tmp/vabKeII/195"294L, 5808C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/196[?1l>
[?1h=:!echo 'q^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo

'-c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/196"' -c 'br

eakadd file 115 /tmp/vabKeII/195' -c 'breakadd file 225 /tmp/vabKeII/195' -S /tm

p/vabKeII/195[?1l>

shell returned 1

[?1h="/tmp/vabKeII/196" 28L, 162C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  59: OK (2038431743)
"/n/o/n/w/r/i/t/a/b/l/e/_/f/i/l/e"
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/197[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/197" 33L, 765C appended34L, 787C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/198[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/198"' -c 'break

add file 7 /tmp/vabKeII/197' -S /tmp/vabKeII/197[?1l>

shell returned 1

[?1h="/tmp/vabKeII/198" 3L, 27C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  60: OK (311511339)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/199[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/199" 115L, 2272C appended116L, 2294C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/200[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vimin

fo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/

200"' -c 'breakadd file 8 /tmp/vabKeII/199' -c 'breakadd file 36 /tmp/vabKeII/19

9' -c 'breakadd file 40 /tmp/vabKeII/199' -c 'breakadd file 69 /tmp/vabKeII/199'

-c 'breakadd file 95 /tmp/vabKeII/199' -c 'breakadd file 97 /tmp/vabKeII/199' -

S/tmp/vabKeII/199[?1l>

shell returned 1

[?1h="/tmp/vabKeII/200" 14L, 81C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  61: OK (374889517)

   function F()

1      while 1

2      " Missing :endwhile

   endfunction"/tmp/vabKeII/201"[noeol] 5L, 73C
Pattern not found: ^\s*$
"/tmp/vabKeII/201"2L, 40C written
"test49.in" 32L, 705C
*** Test  62: OK (286331153)
"/i/m/p/o/s/s/i/b/l/e" line 5500:

"/i/m/p/o/s/s/i/b/l/e" E212: Can't open file for writing

*** Test  63: OK (236978127)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/202[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/202" 149L, 2828C appended150L, 2850C

6 substitutions on 6 lines
"/tmp/vabKeII/202"150L, 2844C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/203[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/203"' -c 'break

add file 63 /tmp/vabKeII/202' -S /tmp/vabKeII/202[?1l>

shell returned 1

[?1h="/tmp/vabKeII/203" 16L, 97C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  64: OK (1499645335)

*** Test  65: OK (70187)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/204[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/204" 78L, 1520C appended79L, 1542C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/205[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/205"' -c 'break

add func 8 F' -S /tmp/vabKeII/204[?1l>

shell returned 1

[?1h="/tmp/vabKeII/205" 6L, 22C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  66: OK (5464)

*** Test  67: OK (212514423)

*** Test  68: OK (212514423)

*** Test  69: OK (8995471)

*** Test  70: OK (69544277)

*** Test  71: OK (34886997)

*** Test  72: OK (1789569365)

   function F0()

   endfunction

   function F1()

   endfunction

*** Test  73: OK (9032615)
"/tmp/vabKeII/206" [New File]
"test49.in" 32L, 705C
"/tmp/vabKeII/207" [New File]
"test49.in" 32L, 705C

*** Test  74: OK (224907669)

*** Test  75: OK (2000403408)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/208[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/208" 253L, 6369C appended254L, 6391C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/209[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|

set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp

/vabKeII/209"' -c 'breakadd func 2 INT' -S /tmp/vabKeII/208[?1l>

shell returned 1

[?1h="/tmp/vabKeII/209" 28L, 167C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  76: OK (1610087935)

Error detected while processing function ERR:

line    2:

E492: Not an editor command:     asdf

E492: Not an editor command:     asdf

E492: Not an editor command:     asdf

*** Test  77: OK (1388671)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/210[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/210" 161L, 4543C appended162L, 4565C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/211[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/211"' -S /tmp/vabK

eII/210[?1l>

shell returned 1

[?1h="/tmp/vabKeII/211" 1L, 10C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  78: OK (134217728)

Error detected while processing function NEXT:

line    1:

E121: Undefined variable: novar

E15: Invalid expression: novar | Xloop 1

E121: Undefined variable: novar

E488: Trailing characters

E108: No such variable: "novar"

E488: Trailing characters

E121: Undefined variable: novar

E15: Invalid expression: novar

E475: Invalid argument: {novar} | Xloop 1

E121: Undefined variable: novar

E15: Invalid expression:  novar

E475: Invalid argument: { novar} | Xloop 1

*** Test  79: OK (70288929)

Error detected while processing /<<PKGBUILDDIR>>/src/vim-gtk/test

dir/test49.vim:

line 7985:

E584: :elseif after :else: elseif 1 ||| 2

line 7995:

E584: :elseif after :else: elseif 1 ||| 2

line 8003:

E582: :elseif without :if: elseif 1 ||| 2

line 8011:

E582: :elseif without :if:     elseif 1 ||| 2

*** Test  80: OK (17895765)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/212[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/212" 15L, 272C appended16L, 294C16L, 293C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/213[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/213"' -S /tmp/vabK

eII/212[?1l>

shell returned 1

[?1h="/tmp/vabKeII/213" 2L, 4C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/214[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/214" 12L, 227C appended13L, 249C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/215[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/215"' -c 'break

add file 8 /tmp/vabKeII/214' -S /tmp/vabKeII/214[?1l>

shell returned 1

[?1h="/tmp/vabKeII/215" 2L, 8C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  81: OK (387)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/216[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/216" 20L, 417C appended21L, 439C21L, 438C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/217[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/217"' -S /tmp/vabK

eII/216[?1l>

shell returned 1

[?1h="/tmp/vabKeII/217" 1L, 2C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/218[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/218" 24L, 480C appended25L, 502C25L, 501C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/219[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/219"' -S /tmp/vabK

eII/218[?1l>

shell returned 1

[?1h="/tmp/vabKeII/219" 1L, 4C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/220[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/220" 17L, 390C appended18L, 412C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/221[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/221"' -c 'break

add file 7 /tmp/vabKeII/220' -S /tmp/vabKeII/220[?1l>

shell returned 1

[?1h="/tmp/vabKeII/221" 1L, 6C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/222[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/222" 21L, 444C appended22L, 466C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/223[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/223"' -c 'break

add func 6 I' -S /tmp/vabKeII/222[?1l>

shell returned 1

[?1h="/tmp/vabKeII/223" 1L, 8C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  82: OK (8454401)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/224[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/224" 17L, 307C appended18L, 329C18L, 328C written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/225[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/225"' -S /tmp/vabK

eII/224[?1l>

shell returned 1

[?1h="/tmp/vabKeII/225" 3L, 7C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/226[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/226" 14L, 266C appended15L, 288C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/227[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/227"' -c 'break

add file 8 /tmp/vabKeII/226' -S /tmp/vabKeII/226[?1l>

shell returned 1

[?1h="/tmp/vabKeII/227" 3L, 13C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  83: OK (2835)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/228[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/228" 154L, 3580C appended155L, 3602C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/229[?1l>
[?1h=:!echo 'q^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo

'-c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/229"' -c 'br

eakadd func 1 INT' -S /tmp/vabKeII/228[?1l>

shell returned 1

[?1h="/tmp/vabKeII/229" 18L, 118C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  84: OK (934782101)

TMP
"/tmp/vabKeII/230" [noeol] 2L, 6C/  
"test49.in" 32L, 705C
"/n/o/n/e/x/i/s/t/e/n/t"

"/tmp/vabKeII/232" 1L, 1C
"test49.in" 32L, 705C

:!echo XYZ >/tmp/vabKeII/233[?1l>
[?1h="/tmp/vabKeII/234" [New File]
"test49.in" 32L, 705C

*** Test  85: OK (198689)

line 8769:

E123: Undefined function: F

Make_all.mak
"Make_all.mak" line 1 of 202 --0%-- col 1

line 8772:

E926: Current location list was changed

line 8773:

E193: :endfunction not inside a function

Error detected while processing function ExecAsScript[2]..MakeScript:

line    3:

E123: Undefined function: F
"/tmp/vabKeII/235" [noeol] 4L, 109C

search hit BOTTOM, continuing at TOP
line   10:
E486: Pattern not found: .*F(.*)

search hit BOTTOM, continuing at TOP
line   11:
E486: Pattern not found: ^\d*\s*endfunction\>

4 substitutions on 4 lines
"/tmp/vabKeII/235"3L, 109C written
"Make_all.mak" 202L, 3684C

Error detected while processing /tmp/vabKeII/235:

line    1:

E492: Not an editor command: Error detected while processing function ExecAsScr

ipt[2]..MakeScript:

line    2:

E492: Not an editor command: line    3:

line    3:

E492: Not an editor command: E123: Undefined function: F

Error detected while processing /<<PKGBUILDDIR>>/src/vim-gtk/test

dir/test49.vim:

line 8779:

E130: Unknown function: F

*** Test  86: OK (0)

5
*** Test  87: OK (0)
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vabKeII/0' >/tmp/vabKeII/236[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vabKeII/236" 151L, 3929C appended152L, 3951C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vabKeII/237[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nvimi

nfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vabKeII/237"' -c

'breakadd func 5 ThrowOnInterrupt' -S /tmp/vabKeII/236[?1l>

shell returned 1

[?1h="/tmp/vabKeII/237" 16L, 281C
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/test49.vim"
<-XFPoUg/vim-8.0.0022/src/vim-gtk/testdir/test49.vim" [readonly] 9009L, 206880C
"Make_all.mak" 202L, 3684C

*** Test  88: OK (50443995)

Press ENTER or type command to continue:" Go back to this file and append the results from register r.
#
# Common Makefile, defines the list of tests to run.
#

NO_PLUGIN = -U NONE --noplugin --not-a-term

# The first script creates small.vim.
SCRIPTS_FIRST = \test1.out

# Tests that run on all systems.
SCRIPTS_ALL = \test3.out \test4.out \test5.out \test7.out \test8.out \test9.out \test14.out \test15.out \test19.out \test20.out \test22.out \:buf test49.in
"test49.in" 32L, 705C:so test49.vim
:" Go back to this file and append the results from register r.
:buf test49.in
G"rp:/^Results/,$w! test.out
:":" make valgrind happy
:redir => funclis:silent func:redir END:for line in split(funclist, "\n")
:  let name = matchstr(line, 'function \zs[A-Z]\w*\ze(')
:  if name != ''
:    exe "delfunc " . name
:  endif:endfor:for v in keys(g:):  silent! exe "unlet " . v
:endfor:unlet v:qa!ENDTESTResults of test49.vim:

83 more lines
*** Test  16: OK (8722)83 more lines:/^Results/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New] 84L, 2484C written:"
:" make valgrind happy
:redir => funclist
:silent func
:redir END
:for line in split(funclist, "\n")

:  :  let name = matchstr(line, 'function \zs[A-Z]\w*\ze(')

:  :  if name != ''

:    :    exe "delfunc " . name

:    :  endif

:  :endfor
:" Go back to this file and append the results from register r.
:buf test49.in
G"rp:/^Results/,$w! test.out
:"
:" make valgrind happy
:for v in keys(g:)

:  :  silent! exe "unlet " . v

:  :endfor
:" Go back to this file and append the results from register r.
:buf test49.in
:unlet v
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test49 = test61; then \
#	  if diff test.out test49.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test49.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test49.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test97.failed test.ok test.out X* viminfo
cp test97.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test97.in
[?1h="test97.in" 23 lines, 483 charactersTest whether glob()/globpath() return correct results with certain escaped
characters.

STARTTEST
:so small.vim
:" make sure glob() doesn't use the shell
:set shell=doesnotexist
:" consistent sorting of file names
:set nofileignorecase
:e test.out
:$put =glob('Xxx\{')
:$put =glob('Xxx\$')
:w! Xxx{
:w! Xxx\$
:$put =glob('Xxx\{')
:$put =glob('Xxx\$')
:"
:$put =string(globpath('sautest/autoload', '*.vim'))
:$put =string(globpath('sautest/autoload', '*.vim', 0, 1))
:w
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test whether glob()/globpath() return correct results with certain escaped/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 376 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:" make sure glob() doesn't use the shell
:set shell=doesnotexist
:" consistent sorting of file names
:set nofileignorecase
:e test.out
"test.out" [New File]~
~~~~~~~~~~~~~~~~~~~~
~:$put =glob('Xxx\{')
:$put =glob('Xxx\$')
:w! Xxx{

Cannot execute shell doesnotexist


E79: Cannot expand wildcards

"Xxx{" [New File] 3 lines, 3 characters written

Press ENTER or type command to continue:w! Xxx\$
"Xxx$" [New File] 3 lines, 3 characters written

Press ENTER or type command to continue:$put =glob('Xxx\{')
Xxx{
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:$put =glob('Xxx\$')
Xxx$
:"
:$put =string(globpath('sautest/autoload', '*.vim'))
'sautest/autoload/Test104.vim
sautest/autoload/footest.vim'
:$put =string(globpath('sautest/autoload', '*.vim', 0, 1))
['sautest/autoload/Test104.vim', 'sautest/autoload/footest.vim']
:w
"test.out" [New File] 8 lines, 138 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test97 = test61; then \
#	  if diff test.out test97.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test97.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test97.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_listlbr_utf8.failed test.ok test.out X* viminfo
cp test_listlbr_utf8.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr_utf8.in
[?1h="test_listlbr_utf8.in" 134 lines, 4027 charactersTest for linebreak and list option in utf-8 mode

STARTTEST
:so small.vim
:if !exists("+linebreak") || !has("conceal") || !has("signs") | e! test.ok | w!  test.out | qa! | endif
:so mbyte.vim
:set encoding=utf8
:if &enc !=? 'utf-8'|:e! test.ok|:w! test.out|qa!|endif
:10new|:vsp|:vert resize 20
:put =\"\tabcdef hijklmn\tpqrstuvwxyz\u00a01060ABCDEFGHIJKLMNOP \"
:norm! zt
:set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
:fu! ScreenChar(width, lines)
:let c=''
:for j in range(1,a:lines)
:for i in range(1,a:width)
:let c.=nr2char(screenchar(j, i))
:endfor
:let c.="\n"
:endfor
:return c
:endfu:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for linebreak and list option in utf-8 mode/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 129 lines, 3948 characters written:set ff& cpo+=A
/ENDTEST:set list nolinebreak cc=3
:sign define foo text=^Vuff0b
:sign place 1 name=foo line=50 buffer=2
:norm! 2kztj
:let line1=line('.')
0GGlGGlGGlGGl
:let line2=line('.')
:let attr2=attr
:let attr=[]
0GGlGGlGGlGGl
:redraw!
:let line=ScreenChar(winwidth(0),3)
:call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
:if !exists("+linebreak") || !has("conceal") || !has("signs") | e! test.ok | w!

test.out | qa! | endif
:set list nolinebreak cc=3
:so mbyte.vim
:set encoding=utf8
:set list nolinebreak cc=3
:sign define foo text=^Vuff0b
:sign place 1 name=foo line=50 buffer=2
:norm! 2kztj
:let line1=line('.')
0GGlGGlGGlGGl
:let line2=line('.')
:let attr2=attr
:let attr=[]
0GGlGGlGGlGGl
:redraw!
:let line=ScreenChar(winwidth(0),3)
:call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text

:if &enc !=? 'utf-8'|:e! test.ok|:w! test.out|qa!|endif
:10new|:vsp|:vert resize 20
                    ||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            ~~~~~~~~~[No Name]                                                  call DoRecordScreen()" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")else   call append('$', "Screen attributes are the same!")
:endif%w! test.out
:qaENDTEST
dummy text
test_listlbr_utf8.in                                                            :put =\"\tabcdef hijklmn\tpqrstuvwxyz\u00a01060ABCDEFGHIJKLMNOP \"
        abcdef hijkl
mn  pqrstuvwxyz 1060
ABCDEFGHIJKLMNOP    [+] abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP[+]:norm! zt
        abcdef hijkl
mn  pqrstuvwxyz 1060
ABCDEFGHIJKLMNOP    
~                   
~                   
~                   
~                   
~                   
~                   
                    
~                   :set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
abcdef          
+hijklmn            
+pqrstuvwxyz 1060ABC
+DEFGHIJKLMNOP      abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP :fu! ScreenChar(width, lines)

:  :^Ilet c=''

:  :^Ifor j in range(1,a:lines)

:    :^I    for i in range(1,a:width)

:      :^I    ^Ilet c.=nr2char(screenchar(j, i))

:      :^I    endfor

:    :           let c.="\n"

:    :^Iendfor

:  :^Ireturn c

:  :endfu
abcdef|
+hijklmn|
+pqrstuvwxyz 1060ABC|
+DEFGHIJKLMNOP      ||||||~                   
~                   
~                   
~                   
~                   abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP~~~~~~~:fu! DoRecordScreen()

:  :^Iwincmd l

:  :^I$put =printf(\"\n%s\", g:test)

:  :^I$put =g:line

:  :^Iwincmd p

:  :endfu
abcdef|
+hijklmn|
+pqrstuvwxyz 1060ABC|
+DEFGHIJKLMNOP      ||
~                   abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP~~~:"
:let g:test ="Test 1: set linebreak + set list + fancy listchars"
:exe "set linebreak list listchars=nbsp:\u2423,tab:\u2595\u2014,trail:\u02d1,eo

l:\ub6"
▕———abcdef|▕———␣ˑ¶:redraw!
▕———abcdef|
+hijklmn▕———|
+pqrstuvwxyz␣1060ABC|
+DEFGHIJKLMNOPˑ¶|||||||~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP~~~~~~~~[No Name] [+]                                              :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),4)
:call DoRecordScreen()
4 more lines¶                   
Test 1: set         
+linebreak + set    
+list + fancy       
+listchars¶         
▕———abcdefˑˑˑˑˑˑˑˑˑˑ
@                   Test 1: set linebreak + set list + fancy listchars▕———abcdef+hijklmn▕———+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶:"
:let g:test ="Test 2: set nolinebreak list"
:set list nolinebreak
hijklmn▕—pqrstuvwxyz␣1060ABCDEFGHIJKLMNOPˑ¶    
¶               
Test 1: set linebrea
+k + set list + fancy listchars¶   
▕———abcdefˑˑˑˑˑˑˑˑˑˑ
+¶         
+hijklmn▕———ˑˑˑˑˑˑˑˑ
@                   :redraw!
▕———abcdef hijklmn▕—|
+pqrstuvwxyz␣1060ABC|
+DEFGHIJKLMNOPˑ¶|
¶|
Test 1: set linebrea|
+k + set list + fanc|
+y listchars¶|
▕———abcdefˑˑˑˑˑˑˑˑˑˑ|
+¶|
+hijklmn▕———ˑˑˑˑˑˑˑˑ|
@                   
[No Name] [+]        abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOPTest 1: set linebreak + set list + fancy listchars▕———abcdef+hijklmn▕———+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶~~[No Name] [+]                                              :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            +hijklmn▕———ˑˑˑˑˑˑˑˑ
@                   :let line=ScreenChar(winwidth(0),4)
:call DoRecordScreen()
4 more lines▕———abcdef                                                 +hijklmn▕———                                               +pqrstuvwxyz␣1060ABC                                       +DEFGHIJKLMNOPˑ¶                                           ~                                                          ~                                                                                                                                                                                                                                                                                                      Test 2: set nolinebreak list▕———abcdef hijklmn▕—+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶4 more lines:"
:let g:test ="Test 3: set linebreak nolist"
:$put =\"\t*mask = nil;\"
▕———▕—¶                  
+pqrstuvwxyz␣1060ABC
+¶+DEFGHIJKLMNOPˑ¶ˑˑˑˑ
+¶                 
¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ
+¶                  
▕———*mask = nil;¶~:$
:norm! zt
▕———*mask = nil;¶   
~                   
                    
                    
                    
                    
                    
                    
                    
                    ~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   :set nolist linebreak
     
    :redraw!
*mask = nil;    ||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        ▕———abcdef+hijklmn▕———+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶Test 2: set nolinebreak list▕———abcdef hijklmn▕—+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶[No Name] [+]                                              :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),4)
:call DoRecordScreen()
4 more lines                    
Test 3: set         
+linebreak nolist   
    *mask = nil;    
~                   
~                   
~                   +pqrstuvwxyz␣1060ABC                                       +DEFGHIJKLMNOPˑ¶                                           ¶                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       *mask = nil;Test 3: set linebreak nolist*mask = nil;~~~4 more lines:"
:let g:test ="Test 4: set linebreak list listchars and concealing"
:let c_defines=['#define ABCDE^I^I1','#define ABCDEF^I^I1','#define ABCDEFG^I^I

1','#define ABCDEFGH^I1', '#define MSG_MODE_FILE^I^I^I1','#define MSG_MODE_CONSO

LE^I^I2','#define MSG_MODE_FILE_AND_CONSOLE^I3','#define MSG_MODE_FILE_THEN_CONS

OLE^I4']
*mask = nil;    ||
Test 3: set|+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶:call append('$', c_defines)
#define             
+ABCDE      1       :vert resize 40
                    |                    |linebreak nolist|
    *mask = nil;                        |
~                    |                    |                    |
#define ABCDE1 |ABCDEF      1 |
#define ABCDEFG     1 |                    +pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶*mask = nil;Test 3: set linebreak nolist*mask = nil;~~~[No Name] [+]:$-7
:norm! zt
#define ABCDE       1                   
#define ABCDEF      1                   
#define ABCDEFG     1                   
                                        
                                        
                                        
                                        
                                        
                                        
                                        #define ABCDEFGH    1
#define MSG_MODE_FILE1
#define MSG_MODE_CONSOLE2
#define MSG_MODE_FILE_AND_CONSOLE   3
#define MSG_MODE_FILE_THEN_CONSOLE  4
~                                       
~                                       :set list linebreak listchars=tab:>- cole=1
>-->--->->--->>--->--->-->--->--->--->--->-->-:syn match Conceal conceal cchar=>'AB\|MSG_MODE'
>CDEF>->CDEFG>->CDEFGH>->_FILE>------->_CONSOLE>------->_FILE_AND_CONSOLE>------->_FILE_THEN_CONSOLE>-------:redraw!
#define ABCDE>-->---1|
#define >CDEF>-->---1|
#define >CDEFG>->---1|
#define >CDEFGH>----1|
#define >_FILE>--------->--->---1|
#define >_CONSOLE>---------->---2|
#define >_FILE_AND_CONSOLE>---------3   |
#define >_FILE_THEN_CONSOLE>--------4   |||~                                       
~                                       
[No Name] [+]                            +pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶*mask = nil;Test 3: set linebreak nolist*mask = nil;~~~[No Name] [+]                          :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),7)
:call DoRecordScreen()
>CDE>-7 more lines                                        
Test 4: set linebreak list listchars    
@                                       #define >CDEFG>->---1+ #define >CDEFGH>----1+#define >_FILE>--------->--->---1+ #define >_CONSOLE>---------->---2+#define >_FILE_AND_CONSOLE>---------3+ABCDE>
:"
:let g:test ="Test 5: set linebreak list listchars and concealing part2"
:let c_defines=['bbeeeeee^I^I;^Isome text']
:call append('$', c_defines)
:$
@                                       
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        Test 4: set linebreak list listchars    
+and concealing
#define >CDE>-->---1
#define >CDEF>-->---1
#define >CDEFG>->---1
#define >CDEFGH>----1
#define >_FILE>--------->--->---1
#define >_CONSOLE>---------->---2
#define >_FILE_AND_CONSOLE>---------3
bbeeeeee>--->---;>--some text:norm! zt
bbeeeeee>--->---;>--some text           
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        ~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       :set nowrap ts=2 list linebreak listchars=tab:>- cole=2 concealcursor=n
>;>some text      :syn clear
:syn match meaning    /;\s*\zs.*/
:syn match hasword    /^\x\{8}/    contains=word
:syn match word       /\<\x\{8}\>/ contains=beginword,endword contained
:syn match beginword  /\<\x\x/     contained conceal
eeeeee>--:syn match endword    /\x\{6}\>/   contained
:hi meaning   guibg=blue
:hi beginword guibg=green
:hi endword   guibg=red
:redraw!
eeeeee>--->-;>some text||||||||||~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
[No Name] [+]                            #define >CDEFG>->---1+#define >CDEFGH>----1+#define >_FILE>--------->--->---1+#define >_CONSOLE>---------->---2+#define >_FILE_AND_CONSOLE>---------3+[No Name] [+]                          :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),1)
:call DoRecordScreen()
                                        
Test 5: set linebreak list listchars and
eeeeee>--->-;>some text                 #define >_CONSOLE>---------->---2      +                                      #define >_FILE_AND_CONSOLE>---------3  +                                                                                                                                                                                                                                                                                bbeeeeee    ; some textTest 5: set linebreak list listchars an+d concealing part2eeeeee>--->-;>some text+:"
:let g:test ="Test 6: Screenattributes for comment"
:$put =g:test
Test 6: Screenattributes for comment    :call append('$', ' /*^I^I and some more */')
 /*>>- and some more */                 :exe "set ft=c ts=7 linebreak list listchars=nbsp:\u2423,tab:\u2595\u2014,trail

:\u02d1,eol:\ub6"
eeeeee▕———————▕——————;▕—————some text¶|
¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ¶▕———▕—————— and some more */¶#define >_CONSOLE>---------->---2         ;      some text:syntax on
bbeeeeee▕56for
 /* and some more */#define >_CONSOLE>---------->---2       #define >_FILE_AND_CONSOLE>---------3   5:hi SpecialKey term=underline ctermfg=red guifg=red
▕—————▕——————▕—————ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ▕———▕——————:let attr=[]
:nnoremap <expr> GG ":let attr += ['".screenattr(screenrow(),screencol())."']\n

"bbeeeeee▕—————▕——————;▕—————some text¶|#define >_CONSOLE>---------->---2      :$
:norm! zt0
 /*▕———▕—————— and some more */¶        
~                                       
~                                       
~                                       
~                                       
                                        
                                        
                                        
                                        
                                        ~                                       
~                                       
~                                       
~                                       
~                                       :let attr += ['0']
:let attr += ['2']
:let attr += ['2']
:let attr += ['8']
:let attr += ['8']
:let attr += ['2']
:let attr += ['2']
:let attr += ['2']
:let attr += ['2']
:let attr += ['2']
:call append('$', ['ScreenAttributes for test6:'])
ScreenAttributes for test6:¶            :if attr[0] != attr[1] && attr[1] != attr[3] && attr[3] != attr[5]

:  :   call append('$', "Attribut 0 and 1 and 3 and 5 are different!")

:  :else

:  :   call append('$', "Not all attributes are different")

:  :endif
/*▕———▕—————— and some more */¶|
ScreenAttributes for test6:¶|
Attribut 0 and 1 and 3 and 5 are differe||
~                                       #define >_CONSOLE>---------->---2      + #define >_FILE_AND_CONSOLE>---------3  + :set cpo&vim linebreak selection=exclusive
:"
:let g:test ="Test 8: set linebreak with visual block mode and v_b_A and select

ion=exclusive and multibyte char"
/*▕———▕—————— and some more */¶|#define >_CONSOLE>---------->---2      :$put =g:test
Test 8: set linebreak with visual block long line:ˑ¶                            ¶                               
¶                           
¶                                       
¶                                      
oobar foobar foobar foobar foobarˑ¶
foobar foobar TARGET¶              Ã' at end¶:exe "norm! $3B\<C-v>eAx\<Esc>"
x' at end¶:"
:let g:test ="Test 9: a multibyte sign and colorcolumn"
:let attr=[]
:let attr2=[]
:$put =''
 /*▕———▕—————— and some more */¶ScreenAttributes for test6:¶Attribut 0 and 1 and 3 and 5 are differe
Test 8: set linebreak with visual block
long line: foobar foobar foobar foobar f
¶                                       :$put ='a b c'
a b c¶                                  :$put ='a b c'
a b c¶                                  :set list nolinebreak cc=3
*
Scr
Att
Tesn 
a b
a b:sign define foo text=^+
:sign place 1 name=foo line=50 buffer=2
   /*▕—▕—— and some more */¶  ScreenAttributes for test6:¶  Attribut 0 and 1 and 3 and 5 are diff
  Test 8: set linebreak with visual bloc
  long line: foobar foobar foobar foobar
  ¶ 
+a b c¶  a b c¶  
  ~~  #define >_CONSOLE>-->---2  +     #define >_FILE_AND_CONSOLE>--3  +     bbeeeeee  ;      some text    Test 5: set linebreak list listchars   +and concealing part2  eeeeee>--->-;>some text  +:norm! 2kztj
  ¶                                     
+a b c¶                                
  a b c¶                                
  ~                                     
  ~                                     
                                        
                                        
                                        
                                        
                                          
  
  
  
  ~                                     ~                                     ~                                     ~                                     ~                                     :let line1=line('.')
:let attr += ['0']
:let attr += ['0']
:let attr += ['1']
:let attr += ['0']
:let line2=line('.')
:let attr2=attr
:let attr=[]
:let attr += ['0']
:let attr += ['0']
:let attr += ['1']
:let attr += ['0']
:redraw!
  ¶ |
+a b c¶|
  a b c¶||||||||  
  
  
  
  
  
  ~                                     ~                                     ~                                     ~                                     ~                                     ~                                     ~                                     
[No Name] [+]                              #define >_CONSOLE>---------->---2      +     #define >_FILE_AND_CONSOLE>---------3  +     bbeeeeee;      some text    Test 5: set linebreak list listchars  +and concealing part2  eeeeee>--->-;>some text  +[No Name] [+]                          :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),3)
:call DoRecordScreen()
3 more lines¶                                     Test 9: a multibyte sign and colorcolu  ¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ+a b c¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ  a b c¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑa b cTest 9: a multibyte sign and colorcolumn  ¶                     ++a b c¶                                 a b c¶               :" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]

:  :   call append('$', "Screen attributes are different!")

:  :else

:  :   call append('$', "Screen attributes are the same!")

:  :endif
  ¶ |
+a b c¶|
  a b c¶|
  ¶ |Screen attributes are the same!¶        a b c    Test 9: a multibyte sign and colorcol  +umn:%w! test.out
"test.out" [New File] 57 lines, 1882 characters writtentest.out     test.out     :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_listlbr_utf8 = test61; then \
#	  if diff test.out test_listlbr_utf8.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_listlbr_utf8.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr_utf8.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test54.failed test.ok test.out X* viminfo
cp test54.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test54.in
[?1h="test54.in" 22 lines, 658 charactersSome tests for buffer-local autocommands

STARTTEST
:so small.vim
:e xx
:if has("vms")
: !del test.out.*
: au BufLeave <buffer> :!write sys$output "buffer-local autommand in %" > test.oout
:else
: !rm -f test.out
: au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
:endif
:e somefile" here, autocommand for xx shall write test.out
:" but autocommand shall not apply to buffer named <buffer>:bwipe xx" here, autocommand shall be auto-deleted
:e xx" nothing shall be written
:e somefile" nothing shall be written
:qa!
ENDTEST

start of test file xx
end of test file xx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Some tests for buffer-local autocommands/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 15 lines, 555 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:e xx
"xx" [New File]~~~~~~~~~~~~~~~~~~~
~~~:if has("vms")

:  : !del test.out.*

:  : au BufLeave <buffer> :!write sys$output "buffer-local autommand in %" > te

st.out

:  :else

:  : !rm -f test.out

:!rm -f test.out[?1l>
[?1h=:  : au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out

:  :endif
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:e somefile           " here, autocommand for xx shall write test.out 
:!echo buffer-local autommand in xx>> test.out

"somefile" [New File]

Press ENTER or type command to continue:                     " but autocommand shall not apply to buffer named <buffer

>~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:bwipe xx             " here, autocommand shall be auto-deleted
:e xx                 " nothing shall be written
"xx" [New File]:e somefile           " nothing shall be written
"somefile" [New File]:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test54 = test61; then \
#	  if diff test.out test54.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test54.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test54.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test17.failed test.ok test.out X* viminfo
cp test17.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test17.in
[?1h="test17.in" 135 lines, 2431 charactersTests for:
- "gf" on ${VAR},
- ":checkpath!" with various 'include' settings.

STARTTEST
:so small.vim
:if has("ebcdic")
: set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,}
:else
: set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,}
:endif
:"
:if has("unix")
:let $CDIR = "."
/CDIR
:else
:if has("amiga")
:let $TDIR = "/testdir"
:else
:let $TDIR = "."
:endif
/TDIR
:endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 27 lines, 564 characters written:set ff& cpo+=A
/ENDTEST









:" Dummy writing for making that sure gf doesn't fail even if the current
:" file is modified. It can be occurred when executing the following command
:" directly on Windows without fixing the 'fileformat':
:"  > nmake -f Make_dos.mak test17.out
:w! test.out
gf
:set ff=unix
:w! test.out
:brewind
ENDTEST

:so! Xdotest
:so small.vim
:if has("ebcdic")

:  : set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,}

:  :else

:  : set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,}

:  :endif
:"
:if has("unix")
:let $CDIR = "."
/CDIR
:"
:if has("unix")

:  :let $CDIR = "."

:  /CDIR

:  :else

:  :if has("amiga")

:    :let $TDIR = "/testdir"

:    :else

:    :let $TDIR = "."

:    :endif

:  /TDIR

:  :endif
:if has("unix")
:let $CDIR = "."
/CDIR
:else
:if has("amiga")
:let $TDIR = "/testdir"
:else
:let $TDIR = "."
:endif
/TDIR
:endif
:" Dummy writing for making that sure gf doesn't fail even if the current
:" file is modified. It can be occurred when executing the following command
:" directly on Windows without fixing the 'fileformat': > nmake -f Make_dos.mak test17.outw! test.outgf:set ff=unix
:w! test.out
:brewindENDTEST${CDIR}/test17a.in
:" Dummy writing for making that sure gf doesn't fail even if the current
:" file is modified. It can be occurred when executing the following command
:" directly on Windows without fixing the 'fileformat':
:"  > nmake -f Make_dos.mak test17.out
:w! test.out
"test.out" [New File] 135 lines, 2431 characters written
"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/./test17a.in" 3 lines, 88 c

haracters

Press ENTER or type command to continueThis file is just to test "gf" in test 17.
The contents is not important.
Just testing!~~~~~~~~~~~~~~~~~~
~~:set ff=unix
:w! test.out
"test.out" 3 lines, 88 characters written:brewind
"test17.in" 135 lines, 2431 characters:" Dummy writing for making that sure gf doesn't fail even if the current
:" file is modified. It can be occurred when executing the following command
:" directly on Windows without fixing the 'fileformat':
:"  > nmake -f Make_dos.mak test17.out
:w! test.out
gf
:set ff=unix
:w! test.out
:brewind
ENDTEST ${CDIR}/test17a.in
 $TDIR/test17a.inSTARTTEST
:" check for 'include' without \zs or \ze
:lang C
:call delete("./Xbase.a")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:e! Xdir1/dir2/foo.a
i#include   "bar.a"^[:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 23 lines, 396 characters written:set ff& cpo+=A
/ENDTEST: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
:call delete("./Xbase.b")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*/\zs[^/]\+\ze'
:function! DotsToSlashes()
:  return substitute(v:fname, '\.', '/', 'g') . '.b'
:endfunction
:so! Xdotest
:" check for 'include' without \zs or \ze
:lang C
:call delete("./Xbase.a")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir "Xdir1/dir2"
[?1l>
[?1h=
Press ENTER or type command to continue:e! Xdir1/dir2/foo.a
"Xdir1/dir2/foo.a" [New File]~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~#include   "bar.a"::w
"Xdir1/dir2/foo.a" [New File] 1 line, 19 characters written:e Xdir1/dir2/bar.a
"Xdir1/dir2/bar.a" [New File]#include      "baz.a"::w
"Xdir1/dir2/bar.a" [New File] 1 line, 22 characters written:e Xdir1/dir2/baz.a
"Xdir1/dir2/baz.a" [New File]#include"foo.a"::w
"Xdir1/dir2/baz.a" [New File] 1 line, 28 characters written:e Xbase.a
"Xbase.a" [New File]:set path=Xdir1/dir2
#include    <foo.a>::w
"Xbase.a" [New File] 1 line, 20 characters written:redir! >>test.out
:checkpath!
--- 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)

Press ENTER or type command to continue:redir END
#include    <foo.a>
~
~
~
~
~
~
~:brewind
"test17.in" 135 lines, 2431 charactersi#include            "foo.a"^[:
:w
:e Xbase.a
:set path=Xdir1/dir2
i#include    <foo.a>^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
ENDTESTSTARTTEST
:" check for 'include' with \zs and \ze
:call delete("./Xbase.b")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*/\zs[^/]\+\ze'
:function! DotsToSlashes()
:  return substitute(v:fname, '\.', '/', 'g') . '.b'
:endfunction
:let &includeexpr='DotsToSlashes()'/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 27 lines, 532 characters written:set ff& cpo+=A
/ENDTEST: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
:call delete("./Xbase.c")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
:function! StripNewlineChar()
:  if v:fname =~ '\n$'
:    return v:fname[:-2]
:so! Xdotest
:" check for 'include' with \zs and \ze
:call delete("./Xbase.b")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir "Xdir1/dir2"
[?1l>
[?1h=
Press ENTER or type command to continue:let &include='^\s*%inc\s*/\zs[^/]\+\ze'
: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
:call delete("./Xbase.c")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
:function! StripNewlineChar()
:  if v:fname =~ '\n$'
:    return v:fname[:-2]:function! DotsToSlashes()

:  :  return substitute(v:fname, '\.', '/', 'g') . '.b'

:  :endfunction
:e Xdir1/dir2/baz.b
i%inc/foo/^[::let &includeexpr='DotsToSlashes()'
:e! Xdir1/dir2/foo.b
"Xdir1/dir2/foo.b" [New File]~~~~~~~~~~~
~~~~~~~~~~~%inc   /bar/::w
"Xdir1/dir2/foo.b" [New File] 1 line, 13 characters written:e Xdir1/dir2/bar.b
"Xdir1/dir2/bar.b" [New File]%inc      /baz/::w
"Xdir1/dir2/bar.b" [New File] 1 line, 16 characters written:e Xdir1/dir2/baz.b
"Xdir1/dir2/baz.b" [New File]%inc/foo/::w
"Xdir1/dir2/baz.b" [New File] 1 line, 22 characters written:e Xbase.b
"Xbase.b" [New File]:set path=Xdir1/dir2
%inc    /foo/::w
"Xbase.b" [New File] 1 line, 14 characters written:redir! >>test.out
:checkpath!
--- 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)

Press ENTER or type command to continue:redir END
%inc    /foo/
~
~
~
~
~
~
~:brewind
"test17.in" 135 lines, 2431 charactersi%inc            /foo/^[:
:w
:e Xbase.b
:set path=Xdir1/dir2
i%inc    /foo/^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
ENDTESTSTARTTEST
:" check for 'include' with \zs and no \ze
:call delete("./Xbase.c")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
:function! StripNewlineChar()
:  if v:fname =~ '\n$'
:    return v:fname[:-2]
:  endif/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 39 lines, 745 characters written:set ff& cpo+=A
/ENDTEST:w
:e Xdir1/dir2/baz.c
i%incfoo.c^[:
:w
:e Xdir1/dir2/FALSE.c
i%incfoo.c^[:
:w
:e Xbase.c
:set path=Xdir1/dir2
i%inc    FALSE.c foo.c^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
:" change "\" to "/" for Windows and fix 'fileformat'
:e test.out
:%s#\\#/#g
:set ff&
:w
:q
ENDTEST


:so! Xdotest
:" check for 'include' with \zs and no \ze
:call delete("./Xbase.c")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir "Xdir1/dir2"
[?1l>
[?1h=
Press ENTER or type command to continue:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
:w
:e Xdir1/dir2/baz.c
i%incfoo.c^[:
:w
:e Xdir1/dir2/FALSE.c
i%incfoo.c^[:
:w
:e Xbase.c
:set path=Xdir1/dir2
i%inc    FALSE.c foo.c^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
:" change "\" to "/" for Windows and fix 'fileformat'
:e test.out
:%s#\\#/#g
:set ff&
:w
:q
ENDTEST

:function! StripNewlineChar()

:  :  if v:fname =~ '\n$'

:    :    return v:fname[:-2]

:    :  endif

:  :  return v:fname

:  :endfunction
:w
:e Xdir1/dir2/baz.c
i%incfoo.c^[:
:w
:e Xdir1/dir2/FALSE.c
:let &includeexpr='StripNewlineChar()'
:e! Xdir1/dir2/foo.c
"Xdir1/dir2/foo.c" [New File]~~~~~~~~~~~~~~~~~~~~~
~%inc   bar.c::w
"Xdir1/dir2/foo.c" [New File] 1 line, 13 characters written:e Xdir1/dir2/bar.c
"Xdir1/dir2/bar.c" [New File]%inc      baz.c::w
"Xdir1/dir2/bar.c" [New File] 1 line, 16 characters written:e Xdir1/dir2/baz.c
"Xdir1/dir2/baz.c" [New File]%incfoo.c::w
"Xdir1/dir2/baz.c" [New File] 1 line, 22 characters written:e Xdir1/dir2/FALSE.c
"Xdir1/dir2/FALSE.c" [New File]%incfoo.c::w
"Xdir1/dir2/FALSE.c" [New File] 1 line, 22 characters written:e Xbase.c
"Xbase.c" [New File]:set path=Xdir1/dir2
%inc    FALSE.c foo.c::w
"Xbase.c" [New File] 1 line, 22 characters written:redir! >>test.out
:checkpath!
--- 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)

Press ENTER or type command to continue:redir END
%inc    FALSE.c foo.c
~
~
~
~
~
~
~:brewind
"test17.in" 135 lines, 2431 characters:w:e Xdir1/dir2/baz.c
i%incfoo.c^[:
:w
:e Xdir1/dir2/FALSE.c
i%incfoo.c^[:
:w
:e Xbase.c
:set path=Xdir1/dir2
i%inc    FALSE.c foo.c^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
:" change "\" to "/" for Windows and fix 'fileformat'
:e test.out
:%s#\\#/#g
:set ff&
:w
:q
ENDTEST:" change "\" to "/" for Windows and fix 'fileformat'
:e test.out
"test.out" 33 lines, 655 charactersThis 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):%s#\\#/#g
E486: Pattern not found: \\:set ff&
:w
"test.out" 33 lines, 655 characters written:q
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test17 = test61; then \
#	  if diff test.out test17.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test17.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test17.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test30.failed test.ok test.out X* viminfo
cp test30.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test30.in
[?1h="test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' option

Note: This test will fail if "cat" is not available.

STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for a lot of variations of the 'fileformats' option/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 221 lines, 3592 characters written:set ff& cpo+=A
/ENDTEST:$r XXtt64
Go7^[:$r XXtt71
:$r XXtt72
Go8^[:$r XXtt81
:$r XXtt82
Go9^[:$r XXtt91
:$r XXtt92
:$r XXtt93
Go10^[:$r XXUnix
:set nobinary ff&
:w
:qa!
ENDTEST

unix
unix
eof

dos^M
dos^M
eof

mac^Mmac^M
:so! Xdotest
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
"XXUnix" [New File] 2 lines, 10 characters written:/^dos/;/eof/-1w! XXDos
"XXDos" [New File] 2 lines, 10 characters written:set bin noeol
:$w! XXMac
"XXMac" [New File][Incomplete last line] 1 line, 8 characters written
noeol
:$w! XXEol
"XXEol" [New File][Incomplete last line] 1 line, 5 characters written:set nobin eol
:enew!
~~~~~~~~~~~
~~~~
~~~~
~~~:bwipe XXUnix XXDos XXMac
3 buffers wiped out:" create mixed format files
:if has("vms")

:  : !copy XXUnix,XXDos XXUxDs.

:  : !copy XXUnix,XXMac XXUxMac.

:  : !copy XXDos,XXMac  XXDosMac.

:  : !copy XXMac,XXEol  XXMacEol.

:  : !copy XXUnix,XXDos,XXMac XXUxDsMc.

:  :elseif has("win32")

:  : !copy /b XXUnix+XXDos XXUxDs

:  : !copy /b XXUnix+XXMac XXUxMac

:  : !copy /b XXDos+XXMac XXDosMac

:  : !copy /b XXMac+XXEol XXMacEol

:  : !copy /b XXUnix+XXDos+XXMac XXUxDsMc

:  :else

:  : !cat XXUnix XXDos >XXUxDs

:!cat XXUnix XXDos >XXUxDs[?1l>
[?1h=:  : !cat XXUnix XXMac >XXUxMac

:!cat XXUnix XXMac >XXUxMac[?1l>
[?1h=:  : !cat XXDos XXMac >XXDosMac

:!cat XXDos XXMac >XXDosMac[?1l>
[?1h=:  : !cat XXMac XXEol >XXMacEol

:!cat XXMac XXEol >XXMacEol[?1l>
[?1h=:  : !cat XXUnix XXDos XXMac >XXUxDsMc

:!cat XXUnix XXDos XXMac >XXUxDsMc[?1l>
[?1h=:  :endif
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:"
:" try reading and writing with 'fileformats' empty
:set fileformat=unix
:e! XXUnix
"XXUnix" 2 lines, 10 charactersunix
unix:w! test.out
"test.out" [New File] 2 lines, 10 characters written:e! XXDos
"XXDos" 2 lines, 10 charactersdos^M
dos^M:w! XXtt01
"XXtt01" [New File] 2 lines, 10 characters written:e! XXMac
"XXMac" [Incomplete last line] 1 line, 8 charactersmacmac^M~:w! XXtt02
"XXtt02" [New File] 1 line, 9 characters written:bwipe XXUnix XXDos XXMac
"test30.in" 237 lines, 3762 characters

3 buffers wiped out

Press ENTER or type command to continue:set fileformat=dos
:$r XXtt64
Go7^[:$r XXtt71
:$r XXtt72
Go8^[:$r XXtt81
:$r XXtt82
Go9^[:$r XXtt91
:$r XXtt92
:$r XXtt93
Go10^[:$r XXUnix
:set nobinary ff&
:w
:qa!
ENDTESTunix
unix
eofdos^M
dos^M
eofmac^Mmac^M
:e! XXUnix
"XXUnix" [CR missing][dos format] 2 lines, 10 charactersunixunix~~~~~~~~~~~
~~~~
~~~~
~~:w! XXtt11
"XXtt11" [New File][dos format] 2 lines, 12 characters written:e! XXDos
"XXDos" [dos format] 2 lines, 10 charactersdosdos:w! XXtt12
"XXtt12" [New File][dos format] 2 lines, 10 characters written:e! XXMac
"XXMac" [Incomplete last line][dos format] 1 line, 8 charactersmac^Mmac^M~:w! XXtt13
"XXtt13" [New File][dos format] 1 line, 10 characters written:bwipe XXUnix XXDos XXMac
"test30.in" [CR missing][dos format] 237 lines, 3762 characters

3 buffers wiped out

Press ENTER or type command to continue:set fileformat=mac
:$r XXtt64
Go7^[:$r XXtt71
:$r XXtt72
Go8^[:$r XXtt81
:$r XXtt82
Go9^[:$r XXtt91
:$r XXtt92
:$r XXtt93
Go10^[:$r XXUnix
:set nobinary ff&
:w
:qa!
ENDTESTunix
unix
eofdos
dos
eofmac^Jmac
:e! XXUnix
"XXUnix" [Incomplete last line][mac format] 1 line, 10 charactersunix^Junix^J~~~~~~~~~~~~
~~~~
~~~~
~~:w! XXtt21
"XXtt21" [New File][mac format] 1 line, 11 characters written:e! XXDos
"XXDos" [Incomplete last line][mac format] 3 lines, 10 charactersdos^Jdos
^J:w! XXtt22
"XXtt22" [New File][mac format] 3 lines, 11 characters written:e! XXMac
"XXMac" [mac format] 2 lines, 8 charactersmac
mac~:w! XXtt23
"XXtt23" [New File][mac format] 2 lines, 8 characters written:bwipe XXUnix XXDos XXMac
"test30.in" [Incomplete last line][mac format] 5 lines, 3762 characters

3 buffers wiped out

Press ENTER or type command to continue:"
^Jdos
^Jeof^J^Jmac
mac
^J:" try reading and writing with 'fileformats' set to one format
:set fileformats=unix
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunixdos^M
dos^M
mac^Mmac^M:w! XXtt31
"XXtt31" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=dos
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line][CR missing][dos format] 5 lines, 28 character

s
Press ENTER or type command to continue:w! XXtt32
"XXtt32" [New File][dos format] 5 lines, 32 characters written

Press ENTER or type command to continue:bwipe XXUxDsMc
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' option

Note: This test will fail if "cat" is not available."test30.in" [CR missing][dos format] 237 lines, 3762 characters:set fileformats=mac
:e! XXUxDsMc
"XXUxDsMc" [mac format] 4 lines, 28 charactersunix^Junix^Jdos^Jdos
^Jmacmac~~~~~~~~~~~~~~~~~~~:w! XXtt33
"XXtt33" [New File][mac format] 4 lines, 28 characters written:bwipe XXUxDsMc
"test30.in" [Incomplete last line][mac format] 5 lines, 3762 characters^Jdoseof^J^Jmac
mac^J:"
:" try reading and writing with 'fileformats' set to two formats
:set fileformats=unix,dos
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunixdos^M
dos^M
mac^Mmac^M:w! XXtt41
"XXtt41" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXUxMac
"XXUxMac" [Incomplete last line] 3 lines, 18 charactersunixunix
mac^Mmac^M~~~~~~~~~~~~~~~~~~~~:w! XXtt42
"XXtt42" [New File] 3 lines, 19 characters written:bwipe XXUxMac
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXDosMac
"XXDosMac" [Incomplete last line][dos format] 3 lines, 18 charactersdodos
mac^Mmac^M~~~~~~~~~~~~~~~~~~~~:w! XXtt43
"XXtt43" [New File][dos format] 3 lines, 20 characters written:bwipe XXDosMac
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=unix,mac
:e! XXUxDs
"XXUxDs" 4 lines, 20 charactersunixunix
dos^Mdos^M~~~~~~~~~~~~~~~~~~~:w! XXtt51
"XXtt51" [New File] 4 lines, 20 characters written:bwipe XXUxDs
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt52
"XXtt52" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXDosMac
"XXDosMac" [mac format] 4 lines, 18 charactersdo^Jdos
^Jmacmac~~~~~~~~~~~~~~~~~~~:w! XXtt53
"XXtt53" [New File][mac format] 4 lines, 18 characters written:bwipe XXDosMac
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXEol
"XXEol" [Incomplete last line] 1 line, 5 charactersnoeol~~
~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
unix,mac:unix:w! XXtt54
"XXtt54" [New File] 2 lines, 20 characters written:bwipe XXEol
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=dos,mac
:e! XXUxDs
"XXUxDs" [CR missing][dos format] 4 lines, 20 charactersunixunix
dosdos~~~~~~~~~~~~~~~~~~~:w! XXtt61
"XXtt61" [New File][dos format] 4 lines, 22 characters written:bwipe XXUxDs
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXUxMac
"XXUxMac" [Incomplete last line][CR missing][dos format] 3 lines, 18 charactersunixunix
mac^Mmac^M~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
dos,mac:dos:w! XXtt62
"XXtt62" [New File][dos format] 4 lines, 35 characters written:bwipe XXUxMac
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line][CR missing][dos format] 5 lines, 28 character

s
Press ENTER or type command to continue:w! XXtt63
"XXtt63" [New File][dos format] 5 lines, 32 characters written

Press ENTER or type command to continue:bwipe XXUxDsMc
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' option

Note: This test will fail if "cat" is not available."test30.in" [CR missing][dos format] 237 lines, 3762 characters:e! XXMacEol
"XXMacEol" [Incomplete last line][mac format] 3 lines, 13 charactersmacmac
noeol~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
dos,mac:mac:w! XXtt64
"XXtt64" [New File][mac format] 4 lines, 26 characters written:bwipe XXMacEol
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:"
:" try reading and writing with 'fileformats' set to three formats
:set fileformats=unix,dos,mac
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt71
"XXtt71" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXEol
"XXEol" [Incomplete last line] 1 line, 5 charactersnoeol~~
~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
unix,dos,mac:unix:w! XXtt72
"XXtt72" [New File] 2 lines, 24 characters written:bwipe XXEol
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=mac,dos,unix
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt81
"XXtt81" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXEol
"XXEol" [Incomplete last line][mac format] 1 line, 5 charactersnoeol~~
~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
mac,dos,unix:mac:w! XXtt82
"XXtt82" [New File][mac format] 2 lines, 23 characters written:bwipe XXEol
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:" try with 'binary' set
:set fileformats=mac,unix,dos
:set binary
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt91
"XXtt91" [New File][Incomplete last line] 5 lines, 28 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=mac
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt92
"XXtt92" [New File][Incomplete last line] 5 lines, 28 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=dos
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt93
"XXtt93" [New File][Incomplete last line] 5 lines, 28 characters written:"
:" Append "END" to each file so that we can see what the last written char was.
:set fileformat=unix nobin
~~~~--No lines in buffer--END:w >>XXtt01
"XXtt01" 1 line, 4 characters appended:w >>XXtt02
"XXtt02" 1 line, 4 characters appended:w >>XXtt11
"XXtt11" 1 line, 4 characters appended:w >>XXtt12
"XXtt12" 1 line, 4 characters appended:w >>XXtt13
"XXtt13" 1 line, 4 characters appended:w >>XXtt21
"XXtt21" 1 line, 4 characters appended:w >>XXtt22
"XXtt22" 1 line, 4 characters appended:w >>XXtt23
"XXtt23" 1 line, 4 characters appended:w >>XXtt31
"XXtt31" 1 line, 4 characters appended:w >>XXtt32
"XXtt32" 1 line, 4 characters appended:w >>XXtt33
"XXtt33" 1 line, 4 characters appended:w >>XXtt41
"XXtt41" 1 line, 4 characters appended:w >>XXtt42
"XXtt42" 1 line, 4 characters appended:w >>XXtt43
"XXtt43" 1 line, 4 characters appended:w >>XXtt51
"XXtt51" 1 line, 4 characters appended:w >>XXtt52
"XXtt52" 1 line, 4 characters appended:w >>XXtt53
"XXtt53" 1 line, 4 characters appended:w >>XXtt54
"XXtt54" 1 line, 4 characters appended:w >>XXtt61
"XXtt61" 1 line, 4 characters appended:w >>XXtt62
"XXtt62" 1 line, 4 characters appended:w >>XXtt63
"XXtt63" 1 line, 4 characters appended:w >>XXtt64
"XXtt64" 1 line, 4 characters appended:w >>XXtt71
"XXtt71" 1 line, 4 characters appended:w >>XXtt72
"XXtt72" 1 line, 4 characters appended:w >>XXtt81
"XXtt81" 1 line, 4 characters appended:w >>XXtt82
"XXtt82" 1 line, 4 characters appended:w >>XXtt91
"XXtt91" 1 line, 4 characters appended:w >>XXtt92
"XXtt92" 1 line, 4 characters appended:w >>XXtt93
"XXtt93" 1 line, 4 characters appended:"
:" Concatenate the results.
:" Make fileformat of test.out the native fileformat.
:" Add a newline at the end.
:set binary
:e! test.out
"test.out" 2 lines, 10 charactersunix
unix:$r XXtt01
"XXtt01" 3 lines, 14 charactersdos^M
dos^M
END:$r XXtt02
"XXtt02" 2 lines, 13 charactersmac^Mmac^M
END

1:$r XXtt11
"XXtt11" 3 lines, 16 charactersunix^M
unix^M
END:$r XXtt12
"XXtt12" 3 lines, 14 charactersdos^M
dos^M
END:$r XXtt13
"XXtt13" 2 lines, 14 charactersmac^Mmac^M^M
END

2:$r XXtt21
"XXtt21" 3 lines, 15 charactersunix
unix
^MEND:$r XXtt22
"XXtt22" 3 lines, 15 charactersdos^M
dos^M
^MEND:$r XXtt23
"XXtt23" 1 line, 12 characters
mac^Mmac^MEND
3
:$r XXtt31
"XXtt31" 6 lines, 33 characters
unix
:$r XXtt32
"XXtt32" 6 lines, 36 characters





unix
dos^M
dos^M
mac^Mmac^M
END
unix^M
:$r XXtt33
"XXtt33" 5 lines, 32 characters





unix^M
dos^M
dos^M
mac^Mmac^M^M
END
unix



unix
dos^M
dos^M
mac^Mmac^MEND

4
:$r XXtt41
"XXtt41" 6 lines, 33 characters
unix
:$r XXtt42
"XXtt42" 4 lines, 23 characters





unix
dos^M
dos^M
mac^Mmac^M
END
unix
:$r XXtt43
"XXtt43" 4 lines, 24 characters



unix
mac^Mmac^M
END
dos^M


dos^M
mac^Mmac^M^M
END

5
:$r XXtt51
"XXtt51" 5 lines, 24 characters
unix
:$r XXtt52
"XXtt52" 6 lines, 33 characters




unix
dos^M
dos^M
END
unix
:$r XXtt53
"XXtt53" 3 lines, 22 characters





unix
dos^M
dos^M
mac^Mmac^M
END
dos^M
:$r XXtt54
"XXtt54" 3 lines, 24 characters


dos^M
mac^Mmac^MEND
unix,mac:unix

noeol
END

6
:$r XXtt61
"XXtt61" 5 lines, 26 characters
unix^M
:$r XXtt62
"XXtt62" 5 lines, 39 characters




unix^M
dos^M
dos^M
END
dos,mac:dos^M
:$r XXtt63
"XXtt63" 6 lines, 36 characters




unix^M
unix^M
mac^Mmac^M^M
END
unix^M
:$r XXtt64
"XXtt64" 1 line, 30 characters





unix^M
dos^M
dos^M
mac^Mmac^M^M
END
dos,mac:mac^Mmac^Mmac^Mnoeol^MEND
7
:$r XXtt71
"XXtt71" 6 lines, 33 characters
unix
:$r XXtt72
"XXtt72" 3 lines, 28 characters





unix
dos^M
dos^M
mac^Mmac^M
END
unix,dos,mac:unix

noeol
END

8
:$r XXtt81
"XXtt81" 6 lines, 33 characters
unix
:$r XXtt82
"XXtt82" 1 line, 27 characters





unix
dos^M
dos^M
mac^Mmac^M
END
mac,dos,unix:mac^Mnoeol^MEND
9
:$r XXtt91
"XXtt91" 5 lines, 32 characters
unix
:$r XXtt92
"XXtt92" 5 lines, 32 characters




unix
dos^M
dos^M
mac^Mmac^MEND
unix
:$r XXtt93
"XXtt93" 5 lines, 32 characters




unix
dos^M
dos^M
mac^Mmac^MEND
unix



unix
dos^M
dos^M
mac^Mmac^MEND

10
:$r XXUnix
"XXUnix" 2 lines, 10 characters
unix
:set nobinary ff&
:w
"test.out" 130 lines, 786 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test30 = test61; then \
#	  if diff test.out test30.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test30.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test30.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test32.failed test.ok test.out X* viminfo
cp test32.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test32.in
[?1h="test32.in" 60 lines, 1391 charactersTest for insert expansion

:se cpt=.,w
* add-expands (word from next line) from other window
* add-expands (current buffer first)
* Local expansion, ends in an empty line (unless it becomes a global expansion)
* starts Local and switches to global add-expansion
:se cpt=.,w,i
* i-add-expands and switches to local
* add-expands lines (it would end in an empty line if it didn't ignored it self):se cpt=kXtestfile
* checks k-expansion, and file expansion (use Xtest11 instead of test11,
* because TEST11.OUT may match first on DOS)
:se cpt=w
* checks make_cyclic in other window
:se cpt=u nohid
* checks unloaded buffer expansion
* checks adding mode abortion
:se cpt=t,d
* tag expansion, define add-expansion interrupted
* t-expansion

STARTTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for insert expansion/^STARTTEST

:so small.vim
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 27 lines, 533 characters written:set ff& cpo+=A

/ENDTESTO^N^[IX^[A^X^F^N^[
:" use CTRL-X CTRL-F to complete Xtest11.one, remove it and then use
:" CTRL-X CTRL-F again to verify this doesn't cause trouble.
OX^X^F^H^H^H^H^H^H^H^H^X^F^[ddk
:se cpt=w
OST^N^P^P^P^P^[
:se cpt=u nohid
^WoOEN^N
unl^N^X^X^P^[
:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
O^X^]^X^D^X^D^X^X^D^X^D^X^D^X^D
a^N^[
:wq! test.out
ENDTEST

start of testfile
run1
run2
end of testfile

test11  36Gepeto/Tag/
asd     test11file      36G
Makefileto      run
:so! Xdotest
:so small.vim
:se nocp viminfo+=nviminfo cpt=.,w ff=unix | $-2,$w!Xtestfile | set ff&
"Xtestfile" [New] 3L, 57C written:se cot=
~~~~~~~~~~
[No Name]                                                                       unl^N^X^X^P^[
:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
O^X^]^X^D^X^D^X^X^D^X^D^X^D^X^D
a^N^[:wq! test.out
ENDTESTstart of testfile
run1run2test32.in                                                                       -- INSERT --
-- Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) match 1 of 4match in file test32.in-- Keyword completion (^N^P) match 2 of 4-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Adding Keyword completion (^N^P) Word from other line#include "Xtestfile"
run1 run2[+]-- Adding Keyword completion (^N^P) Word from other line-- INSERT --3
-- INSERT --
-- Keyword completion (^N^P) -- Searching...
Scanning: test32.in-- Keyword completion (^N^P) match 1 of 115-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.in-- Adding Keyword completion (^N^P) Word from other line-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword Local completion (^N^P) -- Searching...match 1 of 4 match 2 of 4 match 3 of 4 match 4 of 4 Back at original-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword Local completion (^N^P) -- Searching...match 1 of 4 match 2 of 4-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning: test32.in-- Keyword completion (^N^P) The only match-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.in-- Adding Keyword completion (^N^P) match 1 of 2match in file test32.in-- Adding Keyword completion (^N^P) Word from other linerun3 run3

run1 run2-- Adding Keyword completion (^N^P) Word from other line-- INSERT --
:se cpt=.,w,i
-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning: test32.in included file: Xtestfile
match in file test32.in-- Keyword completion (^N^P) The only match-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.in included file: Xtestfile
match in file test32.in-- Adding Keyword completion (^N^P) The only match-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.in included file: Xtestfile
match in file test32.in-- Adding Keyword completion (^N^P) The only match-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword Local completion (^N^P) -- Searching...match 1 of 3-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- Whole line completion (^L^N^P) -- Searching...
Scanning: test32.in-- Whole line completion (^L^N^P) match 1 of 57INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) match 1 of 57Adding Whole line completion (^L^N^P) -- Searching...
Scanning: test32.in-- Adding Whole line completion (^L^N^P) The only match Back at original The only matchMakefileto      run3
Makefileto      run3
Makefileto      run3-- INSERT --:se cpt=kXtestfile
:w Xtest11.one
"Xtest11.one" [New] 9L, 104C writtenXtest11.one  :w Xtest11.two
"Xtest11.two" [New] 9L, 104C written-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning dictionary: Xtestfilematch in file Xtestfile-- Keyword completion (^N^P) match 1 of 9test11[+]I -- Keyword completion (^N^P) match 1 of 9-- INSERT ---- INSERT --Xtest11
-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- File name completion (^F^N^P) -- Searching...match 1 of 2 match 2 of 2.two-- INSERT --:" use CTRL-X CTRL-F to complete Xtest11.one, remove it and then use
:" CTRL-X CTRL-F again to verify this doesn't cause trouble.
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- File name completion (^F^N^P) -- Searching...match 1 of 4INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- File name completion (^F^N^P) -- Searching...match 1 of 443
Make_all.mak
run1 run2d -- INSERT --
run1 run2~
:se cpt=w
-- INSERT --
-- Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) The only match Back at originalmatch in file test32.in-- Keyword completion (^N^P) The only match Back at originalmatch in file test32.in-- Keyword completion (^N^P) The only match
STARTTEST
run1 run2-- Keyword completion (^N^P) The only match-- INSERT --:se cpt=u nohid
~~~~~~~
~~~~~-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) The only match-- INSERT --
-- Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) match 1 of 3-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) The only matchENDTEST
unless-- Keyword completion (^N^P) The only match-- INSERT --:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- Tag completion (^]^N^P) -- Searching...match 1 of 3INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) match 1 of 3Definition completion (^D^N^P) -- Searching...Scanning included file: Xtestfilematch in file Xtestfile-- Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- Adding Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Adding Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- Adding Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Adding Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- Adding Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Adding Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- Adding Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Adding Definition completion (^D^N^P) Word from other lineINSERT ---- Keyword completion (^N^P) -- Searching...
Scanning tags.included file: Xtestfile
-- Keyword completion (^N^P) The only matchtest11file      36Gepeto/Tag/ asd
asd-- Keyword completion (^N^P) The only match-- INSERT --
ru:wq! test.out
"test.out" [New] 15L, 175C written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test32 = test61; then \
#	  if diff test.out test32.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test32.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test32.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test58.failed test.ok test.out X* viminfo
cp test58.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test58.in
[?1h="test58.in" 656 lines, 11024 charactersTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for spell checking.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 111 lines, 2591 characters written:set ff& cpo+=A
/ENDTEST:"
:" NOSLITSUGS
:call TestOne('8', '8')
:" Numbers
:call TestOne('9', '9')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1


:so! Xdotest
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:"
:" NOSLITSUGS
:call TestOne('8', '8')
:" Numbers
:call TestOne('9', '9')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1


:"Don't want to depend on the locale from the environment
:set enc=latin1e!"Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spelliasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=$put =''
  $put ='test '. a:aff . '-' . a:dic  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest  " use that spell file:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
vim

STARTTESTlatin1maxmem
iasdaff/.dic
:func TestOne(aff, dicspellfilea:affa:dicspldic and .aff
  exea:aff . 'affstarta:aff . 'affend/-1w! Xtest.aff
  exea:dic . 'dicstarta:dic . 'dicend/-1w! Xtest.dic
  mkspell! Xtest XtestasdTests for spell checking.     vim: set ft=vim :Change "asdTests" to:

 1 "Acid tests"

 2 "Attests"

 3 "Ass Tests"

 4 "As Tests"

 5 "Sad Tests"

 6 "Ads Tests"

 7 "As tests"

 8 "As detests"

 9 "Add Tests"

10 "Aid Tests"

11 "Ash Tests"

12 "Ad Tests"

13 "And Tests"

14 "Ask Tests"

15 "Asp Tests"

16 "USD Tests"

17 "Astutest"

18 "Autotests"

19 "Sadists"

20 "Asst Tests"

21 "Assad Tests"

22 "SSD Tests"

Type number and <Enter> or click with mouse (empty cancels): :"
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)

:    set spellfile=

:    $put =''

:    $put ='test '. a:aff . '-' . a:dic

:    " Generate a .spl file from a .dic and .aff file.

:    exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'

:    exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'

:    mkspell! Xtest Xtest

:    " use that spell file

:    set spl=Xtest.latin1.spl spell

:    " list all valid words

:    spelldump

:    %yank

:    quit

:    $put

:    $put ='-------'

:    " find all bad words and suggestions for them

:    exe '1;/^' . a:aff . 'good:'

:    normal 0f:]s

:    let prevbad = ''

:    while 1

:        let [bad, a] = spellbadword()

:        if bad == '' || bad == prevbad || bad == 'badend'

:            break

:          endif

:        let prevbad = bad

:        let lst = spellsuggest(bad, 3)

:        normal mm

:        $put =bad

:        $put =string(lst)

:        normal `m]s

:      endwhile

:  endfunc
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:"
:call TestOne('1', '1')
"Xtest.aff" [New File] 46 lines, 754 characters written

"Xtest.dic" [New File] 11 lines, 71 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 29 of 127 nodes; 98 (77%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 490 bytes

Reading back spell file...

Performing soundfolding...

Total number of words: 16

Number of words after soundfolding: 16

Compressing word tree...

Compressed 39 of 104 nodes; 65 (62%) remaining

Writing suggestion file Xtest.latin1.sug ...

Estimated runtime memory use: 357 bytes

17 lines yanked

17 more lines

Press ENTER or type command to continue:$put =soundfold('goobledygoook')
the end
uk
wrong
-------
bad
['put', 'uk', 'OK']
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']th['put', 'uk', 'test']gebletegek
kepereneven
:$put =soundfold('oeverloos gezwets edale')

everles gesvets etele
:"
:"
:" and now with SAL instead of SOFO items; test automatic reloading
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^affstart_sal/+1,/^affend_sal/-1w! Xtest.aff
"Xtest.aff" 151 lines, 3412 characters written:mkspell! Xtest Xtest
Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 29 of 127 nodes; 98 (77%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 490 bytes

Performing soundfolding...

Total number of words: 16

Number of words after soundfolding: 15

Compressing word tree...

Compressed 33 of 75 nodes; 42 (56%) remaining

Writing suggestion file Xtest.latin1.sug ...

Estimated runtime memory use: 241 bytes

Press ENTER or type command to continue:$put =soundfold('goobledygoook')
-------
bad
['put', 'uk', 'OK']
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end['put', 'uk', 'test']
the['put', 'uk', 'test']gebletegekkepereneveneverles gesvet etelekbltykk
kprnfn
:$put =soundfold('oeverloos gezwets edale')

*fls kswts tl
:"
:" also use an addition file
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^addstart/+1,/^addend/-1w! Xtest.latin1.add
"Xtest.latin1.add" [New File] 3 lines, 38 characters written:mkspell! Xtest.latin1.add.spl Xtest.latin1.add
Reading word file Xtest.latin1.add ...
Compressing word tree...

Compressed 0 of 29 nodes; 29 (100%) remaining

Writing spell file Xtest.latin1.add.spl ...

Done!

Estimated runtime memory use: 145 bytes

Press ENTER or type command to continue:set spellfile=Xtest.latin1.add
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment/^test2:
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent

:set spl=Xtest_us.latin1.spl
/^test2:
search hit BOTTOM, continuing at TOP2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend
search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint

:set spl=Xtest_gb.latin1.spl
elequint
/^test2:
search hit BOTTOM, continuing at TOP2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend
search hit BOTTOM, continuing at TOP:let [str, a] = spellbadword()
:$put =str
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent

:set spl=Xtest_nz.latin1.spl
elequint
elekwint
elekwint
/^test2:
search hit BOTTOM, continuing at TOP2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend
search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent

:set spl=Xtest_ca.latin1.spl
elequint
elekwint
elekwint

elequint
/^test2:
search hit BOTTOM, continuing at TOP2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend
search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
elekwint

:unlet str a
:"
:" Postponed prefixes
:call TestOne('2', '1')
"Xtest.aff" 44 lines, 447 characters written

"Xtest.dic" 11 lines, 71 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 10 of 98 nodes; 88 (89%) remaining

Compressed 0 of 13 nodes; 13 (100%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 505 bytes

17 lines yanked

17 more lines

2affend

2good: puts
badendaddstar
/regions=usgbnz
elequ/2/3
addendtest2:test elekwint test elekwent asdf:" Compound words
:call TestOne('3', '3')
"Xtest.aff" 5 lines, 60 characters written

"Xtest.dic" 5 lines, 29 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 6 of 29 nodes; 23 (79%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 115 bytes

3 lines yanked

3 more lines

Press ENTER or type command to continue:call TestOne('4', '4')
"Xtest.aff" 45 lines, 559 characters written

"Xtest.dic" 8 lines, 59 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - word
Compressing word tree...
Compressed 2 of 91 nodes; 89 (97%) remaining

Compressed 0 of 15 nodes; 15 (100%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 520 bytes

12 lines yanked

12 more lines

Press ENTER or type command to continue:call TestOne('5', '5')
"Xtest.aff" 25 lines, 237 characters written

"Xtest.dic" 6 lines, 57 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 19 of 105 nodes; 86 (81%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 440 bytes

10 lines yanked

10 more lines

Press ENTER or type command to continue:call TestOne('6', '6')
"Xtest.aff" 23 lines, 211 characters written

"Xtest.dic" 6 lines, 53 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - mee
Compressing word tree...
Compressed 19 of 87 nodes; 68 (78%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 350 bytes

9 lines yanked

9 more lines

Press ENTER or type command to continue:call TestOne('7', '7')
"Xtest.aff" 22 lines, 223 characters written

"Xtest.dic" 6 lines, 67 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - mee
Compressing word tree...
Compressed 19 of 89 nodes; 70 (78%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 360 bytes

9 lines yanked

9 more lines

Press ENTER or type command to continue:"
1234
mee/391,111,9999
bar/17,61003,123
lead/2
tail/123
middle/77,1
7dicend

bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar
badend

Test NOSLITSUGS

8affstart
SET ISO8859-1

NOSPLITSUGS
8affend

8dicstart:" NOSLITSUGS
:call TestOne('8', '8')
"Xtest.aff" 3 lines, 27 characters written

"Xtest.dic" 4 lines, 20 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 8 of 26 nodes; 18 (69%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 90 bytes

4 lines yanked

4 more lines

Press ENTER or type command to continue:" Numbers
NOSPLITSUGS
8affend

8dicstart
1234
foo
bar
faabar
8dicend

8good: foo bar faabar
bad: foobar barfooTest Numbers9affstart9affend9dicstart
1234
foo:call TestOne('9', '9')
Error detected while processing function TestOne:

line    5:

E493: Backwards range given: 1;/^9affstart/+1,/^9affend/-1w! Xtest.aff

"Xtest.dic" 3 lines, 13 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 2 of 15 nodes; 13 (86%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 65 bytes

3 lines yanked

3 more lines

Press ENTER or type command to continue:"
Test Numbers

9affstart
9affend

9dicstart
1234
foo
bar
9dicend

9good: 0b1011 0777 1234 0x01ff
badend


test output:

test 1-1# ile: Xtest.latin1.spl
Comment
input:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
Test Numbers

9affstart
9affend

9dicstart
1234
foo
bar
9dicend

9good: 0b1011 0777 1234 0x01ff
badend


test output:

test 1-1
# file: Xtest.latin1.spl
Comment
deol
input:"
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^test output:/,$wq! test.out
"test.out" [New File] 289 lines, 3844 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test58 = test61; then \
#	  if diff test.out test58.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test58.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test58.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test59.failed test.ok test.out X* viminfo
cp test59.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test59.in
[?1h="test59.in" 626 lines, 10897 charactersTests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 106 lines, 2520 characters written:set ff& cpo+=A
/ENDTEST:call TestOne('3', '3')
:call TestOne('4', '4')
:call TestOne('5', '5')
:call TestOne('6', '6')
:call TestOne('7', '7')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1


:so! Xdotest
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:call TestOne('3', '3')
:call TestOne('4', '4')
:call TestOne('5', '5')
:call TestOne('6', '6')
:call TestOne('7', '7')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1


:" text is in latin1, the test text is utf-8.enc=latin1e!
:set enc=utf-8:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=$put =''
  $put ='test '. a:aff . '-' . a:dic  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest  " use that spell file:set enc=utf-8
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)

:    set spellfile=

:    $put =''

:    $put ='test '. a:aff . '-' . a:dic

:    " Generate a .spl file from a .dic and .aff file.

:    exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'

:    exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'

:    mkspell! Xtest Xtest

:    " use that spell file

:    set spl=Xtest.utf-8.spl spell

:    " list all valid words

:    spelldump

:    %yank

:    quit

:    $put

:    $put ='-------'

:    " find all bad words and suggestions for them

:    exe '1;/^' . a:aff . 'good:'

:    normal 0f:]s

:    let prevbad = ''

:    while 1

:        let [bad, a] = spellbadword()

:        if bad == '' || bad == prevbad || bad == 'badend'

:            break

:          endif

:        let prevbad = bad

:        let lst = spellsuggest(bad, 3)

:        normal mm

:        $put =bad

:        $put =string(lst)

:        normal `m]s

:      endwhile

:  endfunc
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:"
:call TestOne('1', '1')
"Xtest.aff" [New File] 48 lines, 768 characters written

"Xtest.dic" [New File] 11 lines, 71 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 29 of 131 nodes; 102 (77%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 510 bytes

Reading back spell file...

Performing soundfolding...

Total number of words: 16

Number of words after soundfolding: 16

Compressing word tree...

Compressed 39 of 104 nodes; 65 (62%) remaining

Writing suggestion file Xtest.utf-8.sug ...

Estimated runtime memory use: 357 bytes

17 lines yanked

17 more lines

Press ENTER or type command to continue:$put =soundfold('goobledygoook')
the end
uk
wrong
-------
bad
['put', 'uk', 'OK']
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']the['put', 'uk', 'test']gebletegek
:$put =soundfold('kóopërÿnôven')

kepereneven
:$put =soundfold('oeverloos gezwets edale')

everles gesvets etele
:"
:"
:" and now with SAL instead of SOFO items; test automatic reloading
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^affstart_sal/+1,/^affend_sal/-1w! Xtest.aff
"Xtest.aff" 153 lines, 3426 characters written:mkspell! Xtest Xtest
Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 29 of 131 nodes; 102 (77%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 510 bytes

Performing soundfolding...

Total number of words: 16

Number of words after soundfolding: 15

Compressing word tree...

Compressed 33 of 75 nodes; 42 (56%) remaining

Writing suggestion file Xtest.utf-8.sug ...

Estimated runtime memory use: 241 bytes

Press ENTER or type command to continue:$put =soundfold('goobledygoook')
-------
bad
['put', 'uk', 'OK']
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end['put', 'uk', 'test']
the['put', 'uk', 'test']gebletegekkepereneveneverles gesvet etelekbltykk
:$put =soundfold('kóopërÿnôven')

kprnfn
:$put =soundfold('oeverloos gezwets edale')

*fls kswts tl
:"
:" also use an addition file
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^addstart/+1,/^addend/-1w! Xtest.utf-8.add
"Xtest.utf-8.add" [New File] 3 lines, 38 characters written:mkspell! Xtest.utf-8.add.spl Xtest.utf-8.add
Reading word file Xtest.utf-8.add ...
Compressing word tree...

Compressed 0 of 29 nodes; 29 (100%) remaining

Writing spell file Xtest.utf-8.add.spl ...

Done!

Estimated runtime memory use: 145 bytes

Press ENTER or type command to continue:set spellfile=Xtest.utf-8.add
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"/^test2:
tomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!:let [str, a] = spellbadword()
:$put =str
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent

:set spl=Xtest_us.utf-8.spl
/^test2:
search hit BOTTOM, continuing at TOPtomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
startwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

COMPOUNDRULE ssmm*ee:let [str, a] = spellbadword()
:$put =str
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint

:set spl=Xtest_gb.utf-8.spl
elequint
/^test2:
search hit BOTTOM, continuing at TOPtomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

search hit BOTTOM, continuing at TOP:let [str, a] = spellbadword()
:$put =str
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
startwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

COMPOUNDRULE ssmm*ee:let [str, a] = spellbadword()
:$put =str
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent

:set spl=Xtest_nz.utf-8.spl
elequint
elekwint
elekwint
/^test2:
search hit BOTTOM, continuing at TOPtomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
startwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

COMPOUNDRULE ssmm*ee:let [str, a] = spellbadword()
:$put =str
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent

:set spl=Xtest_ca.utf-8.spl
elequint
elekwint
elekwint

elequint
/^test2:
search hit BOTTOM, continuing at TOPtomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
startwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

COMPOUNDRULE ssmm*ee:let [str, a] = spellbadword()
:$put =str
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
elekwint

:unlet str a
:"
:" Postponed prefixes
:call TestOne('2', '1')
"Xtest.aff" 46 lines, 461 characters written

"Xtest.dic" 11 lines, 71 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 10 of 102 nodes; 92 (90%) remaining

Compressed 0 of 13 nodes; 13 (100%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 525 bytes

17 lines yanked

17 more lines

Press ENTER or type command to continue:"
addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

1good: wrong OK puts. Test the end
bad:  inputs comment ok Ok. test déôl end the
badend

2good: puts
bad: inputs comment ok Ok end the. test déôl
badendTest rules for compounding.3affstart
SET ISO8859-1COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:" Compound words
:call TestOne('3', '3')
"Xtest.aff" 5 lines, 60 characters written

"Xtest.dic" 5 lines, 29 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 6 of 31 nodes; 25 (80%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 125 bytes

3 lines yanked

3 more lines

Press ENTER or type command to continue:call TestOne('4', '4')
"Xtest.aff" 45 lines, 559 characters written

"Xtest.dic" 8 lines, 59 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - word
Compressing word tree...
Compressed 2 of 91 nodes; 89 (97%) remaining

Compressed 0 of 15 nodes; 15 (100%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 520 bytes

12 lines yanked

12 more lines

Press ENTER or type command to continue:call TestOne('5', '5')
"Xtest.aff" 25 lines, 237 characters written

"Xtest.dic" 6 lines, 57 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 19 of 107 nodes; 88 (82%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 440 bytes

10 lines yanked

10 more lines

Press ENTER or type command to continue:call TestOne('6', '6')
"Xtest.aff" 23 lines, 211 characters written

"Xtest.dic" 6 lines, 53 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - mee
Compressing word tree...
Compressed 19 of 89 nodes; 70 (78%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 350 bytes

9 lines yanked

9 more lines

Press ENTER or type command to continue:call TestOne('7', '7')
"Xtest.aff" 26 lines, 338 characters written

"Xtest.dic" 6 lines, 67 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - mee
Compressing word tree...
Compressed 19 of 91 nodes; 72 (79%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 360 bytes

9 lines yanked

9 more lines

Press ENTER or type command to continue:"
1234
mee/391,111,9999
bar/17,61003,123
lead/2
tail/123
middle/77,1
7dicend

7good: meea1 meeaébar prebar barmeat prebarmeat  leadprebarlead tail leadtail  leadmiddletail
bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar
badend

test output:

test 1-1
# file: Xtest.utf-8.spl
Comment
deol
déôr
input
OK:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
1234
mee/391,111,9999
bar/17,61003,123
lead/2
tail/123
middle/77,1
7dicend

7good: meea1 meeaé bar prebar barmeat prebarmeat  leadprebarlead tail leadtail  leadmiddletail
bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar
badend

test output:

test 1-1
# file: Xtest.utf-8.spl
Comment
deol
déôr
input
OK:"
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^test output:/,$wq! test.out
"test.out" [New File] 270 lines, 3685 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test59 = test61; then \
#	  if diff test.out test59.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test59.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test59.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test72.failed test.ok test.out X* viminfo
cp test72.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test72.in
[?1h="test72.in" 146 lines, 2110 charactersTests for undo file.
Since this script is sourced we need to explicitly break changes up in
undo-able pieces.  Do that by setting 'undolevels'.

STARTTEST
:so small.vim
:"
:" Test 'undofile': first a simple one-line change.
:set nocompatible viminfo+=nviminfo visualbell
:set ul=100 undofile nomore
:e! Xtestfile
ggdGithis is one line^[:set ul=100
:s/one/ONE/
:set ul=100
:w
:bwipe!
:e Xtestfile
u:.w! test.out
:"
:" Test 'undofile', change in original file fails check
:set noundofile
:e! Xtestfile
:s/line/Line/:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for undo file./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 135 lines, 1913 characters written:set ff& cpo+=A
/ENDTEST:bwipe!
:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST

1111 -----
2222 -----

123456789
:so! Xdotest
:so small.vim
:"
:" Test 'undofile': first a simple one-line change.
:set nocompatible viminfo+=nviminfo visualbell
:set ul=100 undofile nomore
:e! Xtestfile
"Xtestfile" [New File]~~~~~~~~~~~~~~~~~
~~~
~~-- INSERT --this is one line:set ul=100
:s/one/ONE/
ONE
:set ul=100
:w
"Xtestfile" [New] 1L, 17C written:bwipe!
"test72.in" 146L, 2110C:bwipe!:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 1L, 17Cthis is ONE line~~~~~~~~~~~~~~~~~
~~~
~~1 change; before #2  0 seconds agoone
:.w! test.out
"test.out" [New] 1L, 17C written:"
:" Test 'undofile', change in original file fails check
:set noundofile
:e! Xtestfile
"Xtestfile" 1L, 17CONE
:s/line/Line/
L
:w
"Xtestfile" 1L, 17C written:set undofile
:bwipe!
"test72.in" 146L, 2110C:bwipe!:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 1L, 17Cthis is ONE Line~~~~~~~~~~~~~~~~~
~~~
~~:" TODO: this beeps
Already at oldest change:.w >>test.out
"test.out" 1L, 17C appended:"
:" Test 'undofile', add 10 lines, delete 6 lines, undo 3
:set undofile
--No lines in buffer---- INSERT --one
two
three
four
five
six
seven
eight
nine
ten:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100
:w
"Xtestfile" 4L, 17C written:bwipe!
"test72.in" 146L, 2110C:bwipe!
:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 4L, 17Conetwonineten~~~~~~~~~~~~~~
~~~
~~1 more line; before #7  0 seconds agoeight1 more line; before #6  0 seconds agoseven1 more line; before #5  0 seconds agosix:w >>test.out
"test.out" 7L, 33C appended:"
:" Test that reading the undofiles when setting undofile works
:set noundofile ul=0
-- INSERT --six
us1 line less; before #8  0 seconds ago
~:e! Xtestfile
"Xtestfile" 4L, 17Cnine
ten~~~:set undofile ul=100
1 more line; before #7  0 seconds agoeight1 more line; before #6  0 seconds agoseven1 more line; before #5  0 seconds agosix1 more line; before #4  0 seconds agofive1 more line; before #3  0 seconds agofour1 more line; before #2  0 seconds agothree:w >>test.out
"test.out" 10L, 49C appended:" And now with encryption, cryptmethod=zip
:e! Xtestfile
"Xtestfile" 4L, 17Cninten~~~~~~:set undofile cm=zip
~~~--No lines in buffer---- INSERT --monday
tuesday
wednesday
thursday
friday:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100
:X
Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

Enter same key again: ******

monday
friday
~:w!
"Xtestfile" [crypted] 2L, 14C written:bwipe!
"test72.in" 146L, 2110C:bwipe!
:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 
Need encryption key for "Xtestfile"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtestfile" [crypted] 2L, 14Cmonday
friday
~~~~~~~~~~~~~~~~
~~~
~~"Xtestfile" [crypted] 2L, 14C:set key=
1 more line; before #11  0 seconds agothursday1 more line; before #10  0 seconds agowednesday:w >>test.out
"test.out" 4L, 33C appended:"
:"
:" With encryption, cryptmethod=blowfish
:e! Xtestfile
"Xtestfile" Need encryption key for "Xtestfile"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: *******

~
~~"Xtestfile" [noeol][crypted] 1L, 14C:set undofile cm=blowfish ff&
--No lines in buffer---- INSERT --jan
feb
mar
apr
jun:set ul=100

-- INSERT --foo mar:set ul=100

~:set ul=100
-- INSERT --bar apr:set ul=100
:X
Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

Enter same key again: ******

jan
feb
bar apr:w!
"Xtestfile" [blowfish] 4L, 20C written:bwipe!
"test72.in" 146L, 2110C:bwipe!
:e Xtestfile
foo2ba
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 
Need encryption key for "Xtestfile"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtestfile" [blowfish] 4L, 20Cjan
feb
bar apr
jun~~~~~~~~~~~~~~
~~~
~~"Xtestfile" [blowfish] 4L, 20C:set key=
/bar
:.w >>test.out
"test.out" 1L, 8C appended1 change; before #15  1 seconds agoap:.w >>test.out
"test.out" 1L, 4C appended1 more line; before #14  2 seconds agofoo mar:.w >>test.out
"test.out" 1L, 8C appended1 change; before #13  2 seconds agomar:.w >>test.out
"test.out" 1L, 4C appended:"
:" With encryption, cryptmethod=blowfish2
:e! Xtestfile
"Xtestfile" Need encryption key for "Xtestfile"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: *******

~
~~~"Xtestfile" [noeol][blowfish] 1L, 20C:set undofile cm=blowfish2 ff&
--No lines in buffer---- INSERT --jan
feb
mar
apr
jun:set ul=100

-- INSERT --foo mar:set ul=100

~:set ul=100
-- INSERT --bar apr:set ul=100
:X
Enter encryption key: *******

Enter same key again: *******

jan
feb:w!
"Xtestfile" [blowfish2] 4L, 20C written:bwipe!
"test72.in" 146L, 2110C:bwipe!
:e Xtestfile
foo2ba
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 
Need encryption key for "Xtestfile"

Enter encryption key: *******

"Xtestfile" [blowfish2] 4L, 20Cjan
feb
bar ap
jun~~~~~~~~~~~~~~
~~~
~~"Xtestfile" [blowfish2] 4L, 20C:set key=
/bar
:.w >>test.out
"test.out" 1L, 8C appended1 change; before #19  1 seconds agoap:.w >>test.out
"test.out" 1L, 4C appended1 more line; before #18  1 seconds agofoo mar:.w >>test.out
"test.out" 1L, 8C appended1 change; before #17  1 seconds agomar:.w >>test.out
"test.out" 1L, 4C appended:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")

:  : call rename("_un_Xtestfile", "Xtestundo")

:  :else

:  : call rename(".Xtestfile.un~", "Xtestundo")

:  :endif
jan
feb
mar
apr:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test72 = test61; then \
#	  if diff test.out test72.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test72.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test72.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test78.failed test.ok test.out X* viminfo
cp test78.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test78.in
[?1h="test78.in" 46 lines, 1464 charactersInserts 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 viminfo+=nviminfo
:e! Xtest
ggdG
:let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01223456789abcdefghijklmnoparstuvwxyz0123456789"
: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', ''):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Inserts 10000 lines with text to fill the swap file with two levels of pointer/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 37 lines, 1208 characters written:set ff& cpo+=A
/ENDTEST: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 linnecount = linedollar | endif
:let i = 1
:while i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call appendd(line('$'), i . ' differs') | exe 'wincmd w' | endif | let i += 1 | endwhile
:q!
:call append(line('$'), 'recovery end')
:w! test.out
:qa!
ENDTEST


:so! Xdotest
:so small.vim
:set nocp fileformat=unix undolevels=-1 viminfo+=nviminfo
:e! Xtest
"Xtest" [New File]~~~~~~~~~~~~~~~~~~~~~
~:let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01

23456789abcdefghijklmnoparstuvwxyz0123456789"
:let i = 1
:let linecount = 10000
:while i <= linecount | call append(i - 1, i . text) | let i += 1 | endwhile
9990    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9991    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9992    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9993    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9994    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9995    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9996    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9997    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9998    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9999    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
10000   abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789:preserve
File preserved:" get the name of the swap file
:redir => swapname
:swapname
.Xtest.swp:redir END
:let swapname = substitute(swapname, '[[:blank:][:cntrl:]]*\(.\{-}\)[[:blank:][

:cntrl:]]*$', '\1', '')
9990    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899a
:" make a copy of the swap file in Xswap
:set bin
:exe 'sp ' . swapname
".Xtest.swp"[noeol] 611L, 1224704Cb0VIM 8.0^@^@^@^@^P^@^@^@^@^@^@^@^@^@^@5w^@^@buildd^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@bm-wb-03^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@/<<PKGBUILDDIR>>/src/vim-gtk/testdiir/Xtest^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^.Xtest.swp                                                                      799a
999899a
999999a
1000099a~
Xtest [+]                                                                       :w! Xswap
"Xswap" [New][noeol] 611L, 1224704C written:echo swapname
.Xtest.sw:set nobin
:new
~
~
~
~
~
~
[No Name]                                                                       b0VIM 8.0^@^@^@^@^P^@^@^@^@^@^@^@^@^@^@5w^@^@buildd^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@bm-wb-03^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@/<<PKGBUILDDIR>>/src/vim-gtk/testdiir/Xtest^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^.Xtest.swp                                                                      9999    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
10000   abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789

~
Xtest [+]                                                                       :only!
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:bwipe! Xtest
:call rename('Xswap', swapname)
:recover Xtest
Using swap file ".Xtest.swp"

Original file "/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtest"

"/<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xtest" [New File]Recovery completed. You should check if everything is OK.

(You might want to write out this file under another name

and run diff with the original file to check for changes)

You may want to delete the .swp file now.



Press ENTER or type command to continue:call delete(swapname)
1abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
2abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
3abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
4abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
5abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
6abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
7abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
8abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
10      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
11      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
12      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@:new
~~~~~~~~~~
[No Name]                                                                       199a
299a
399a
4 99a
5 99a
Xtest [+]                                                                       :call append(0, 'recovery start')
recovery start[+]:wincmd w
[No Name] [+]                                                                   Xtest [+]                                                                       :let linedollar = line('$')
:if linedollar < linecount | exe 'wincmd w' | call append(line('$'), "expected 

" . linecount . " lines but found only " . linedollar) | exe 'wincmd w' | let li

necount = linedollar | endif
recovery start:let i = 1
:while i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call appen

d(line('$'), i . ' differs') | exe 'wincmd w' | endif | let i += 1 | endwhile
recovery start:q!
~~~~~~~~~~~~:call append(line('$'), 'recovery end')
recovery end:w! test.out
"test.out" [New] 3L, 29C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test78 = test61; then \
#	  if diff test.out test78.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test78.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test78.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test83.failed test.ok test.out X* viminfo
cp test83.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test83.in
[?1h="test83.in" 76 lines, 1273 charactersTests for tag search with !_TAG_FILE_ENCODING.

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
:/^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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for tag search with !_TAG_FILE_ENCODING./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 58 lines, 1021 characters written:set ff& cpo+=A
/ENDTEST: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
:so! Xdotest
:so mbyte.vim
:set enc=utf8
: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:if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"

:  : e! test.ok

:  : w! test.out

:  : qa!

:  :endif
:tag abc50
:if v:errmsg =~ 'E426:' || getline('.') != 'ABC'
: close
: put ='case3: failed'::/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt
"Xtags1.txt" [New File] 2 lines, 35 characters written:/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt
"Xtags2.txt" [New File] 2 lines, 25 characters written:/^text for tags3$/,/^text for tags3$/+1w! Xtags3.txt
"Xtags3.txt" [New File] 2 lines, 25 characters written:/^tags1$/+1,/^tags1-end$/-1w! Xtags1
"Xtags1" [New File] 2 lines, 81 characters written:Tests for tag search with !_TAG_FILE_ENCODING.

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
:/^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~~~~~~~~~
~~~~~
~~
~~
~~~~
--No lines in buffer--:::call setline('.', 'Results of test83')
Results of test83
::" case1:
:new
[No Name]                                                                       Results of test83test83.in [+]                                                                   :set tags=Xtags1
:let v:errmsg = ''
:tag abcdefghijklmnopqrs
"Xtags1.txt" 2 lines, 35 characterstext for tags1
abcdefghijklmnopqrsXtags1.txt:if v:errmsg =~ 'E426:' || getline('.') != 'abcdefghijklmnopqrs'

:  : close

:  : put ='case1: failed'

:  :else

:  : close

:  : put ='case1: ok'

:  :endif
Results of test83
case1: ok
~
~
~
~~~~::" case2:
:new
~[No Name]                                                                       Results of test83
case1: oktest83.in [+]                                                                   :set tags=test83-tags2
:let v:errmsg = ''
:tag /.BC
"Xtags2.txt" 2 lines, 25 characterstext for tags2
ABCXtags2.txt:if v:errmsg =~ 'E426:' || getline('.') != 'ABC'

:  : close

:  : put ='case2: failed'

:  :else

:  : close

:  : put ='case2: ok'

:  :endif
Results of test83
case1: ok
case2: ok
~
~
~~~~~::" case3:
:new
~~[No Name]                                                                       case1: ok
case2: oktest83.in [+]                                                                   :set tags=test83-tags3
:let v:errmsg = ''
:tag abc50
"Xtags3.txt" 2 lines, 25 characterstext for tags3
ABCXtags3.txt:if v:errmsg =~ 'E426:' || getline('.') != 'ABC'

:  : close

:  : put ='case3: failed'

:  :else

:  : close

:  : put ='case3: ok'

:  :endif
Results of test83
case1: ok
case2: ok
case3: ok
~
~~~~~:close
E37: No write since last change (add ! to override)::wq! test.out
"test.out" [New File] 4 lines, 48 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test83 = test61; then \
#	  if diff test.out test83.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test83.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test83.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test89.failed test.ok test.out X* viminfo
cp test89.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test89.in
[?1h="test89.in" 71 lines, 1514 characters- Some tests for setting 'number' and 'relativenumber'
  This is not all that useful now that the options are no longer reset when
  setting the other.
- Some tests for findfile() function

STARTTEST
:so small.vim
:set hidden nocp nu rnu viminfo+=nviminfo
:redir @a | set nu? rnu? | redir END
:e! xx
:redir @b | set nu? rnu? | redir END
:e! #
:$put ='results:'
:$put a
:$put b
:"
:set nonu nornu
:setglobal nu
:setlocal rnu
:redir @c | setglobal nu? | redir END
:set nonu nornu
:setglobal rnu
:setlocal nu:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
- Some tests for setting 'number' and 'relativenumber'/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 63 lines, 1305 characters written:set ff& cpo+=A
/ENDTEST:$put =':set MUST reset the other global value'
:$put g
:$put h
:"
:let cwd=getcwd()
:cd ..
:" Tests may be run from a shadow directory, so an extra cd needs to be done to
:" get above src/
:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
:$put =''
:$put ='Testing findfile'
:$put =''
:set ssl
:$put =findfile('test19.in','src/test*')
:exe "cd" cwd
:cd ..
:$put =findfile('test19.in','test*')
:$put =findfile('test19.in','testdir')
:exe "cd" cwd
:/^results/,$w! test.out
:q!
ENDTEST


:so! Xdotest
:so small.vim
:set hidden nocp nu rnu viminfo+=nviminfo
 21 :$put g 20 :$put h
 19 :" 18 :let cwd=getcwd()
 17 :cd .. 16 :" Tests may be run from a shadow directory, so an extra cd needs to be donee     to 15 :" get above src/
 14 :if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
 13 :$put =''
 12 :$put ='Testing findfile'
 11 :$put =''
 10 :set ssl
  9 :$put =findfile('test19.in','src/test*')
  8 :exe "cd" cwd
  7 :cd ..
  6 :$put =findfile('test19.in','test*')
  5 :$put =findfile('test19.in','testdir')
  4 :exe "cd" cwd
  3 :/^results/,$w! test.out
  2 :q!
  1 ENDTEST
71  :redir @a | set nu? rnu? | redir END
  number

  relativenumber

Press ENTER or type command to continue:e! xx
"xx" [New File]1   
~~~~~~~~~~~~~~~~~~~~~~:redir @b | set nu? rnu? | redir END
  number

  relativenumber

Press ENTER or type command to continue:e! #
"test89.in" line 71 of 71 --100%-- col 1 21 :$put g
 20 :$put h
 19 :"
 18 :let cwd=getcwd()
 17 :cd ..
 16 :" Tests may be run from a shadow directory, so an extra cd needs to be donee     to
 15 :" get above src/
 14 :if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
 13 :$put =''
 12 :$put ='Testing findfile'
 11 :$put =''
 10 :set ssl
  9 :$put =findfile('test19.in','src/test*')
  8 :exe "cd" cwd
  7 :cd ..
  6 :$put =findfile('test19.in','test*')
  5 :$put =findfile('test19.in','testdir')
  4 :exe "cd" cwd
  3 :/^results/,$w! test.out
  2 :q!
  1 ENDTEST
71  "test89.in" line 71 of 71 --100%-- col 1:$put ='results:'

1
 20
 19
 18
 17ee 
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
72  results:
:$put a
3 more lines


21
 20ee 
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3 
  2 
  1   number
75    relativenumber3 more lines:$put b
3 more lines


22
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3 
  2 
  1   number
78    relativenumber3 more lines:"
:set nonu nornu
:" get above src/:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif:$put ='':$put ='Testing findfile':$put ='':set ssl:$put =findfile('test19.in','src/test*'):exe "cd" cwd:cd ..:$put =findfile('test19.in','test*'):$put =findfile('test19.in','testdir'):exe "cd" cwd:/^results/,$w! test.ou:q!ENDTESTresults:  number  relativenumber  number  relativenumber:setglobal nu
:setlocal rnu
 22 :" get above src/
 21 :if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
 20 :$put =''
 19 :$put ='Testing findfile'
 18 :$put =''
 17 :set ssl
 16 :$put =findfile('test19.in','src/test*')
 15 :exe "cd" cwd
 14 :cd ..
 13 :$put =findfile('test19.in','test*')
 12 :$put =findfile('test19.in','testdir')
 11 :exe "cd" cwd
 10 :/^results/,$w! test.out
  9 :q!
  8 ENDTEST
  7 
  6 results:
  5 
  4   number
  3   relativenumber
  2 
  1   number
  0   relativenumber:redir @c | setglobal nu? | redir END
  number:set nonu nornu
:" get above src/:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif:$put ='':$put ='Testing findfile':$put ='':set ssl:$put =findfile('test19.in','src/test*'):exe "cd" cwd:cd ..:$put =findfile('test19.in','test*'):$put =findfile('test19.in','testdir'):exe "cd" cwd:/^results/,$w! test.ou:q!ENDTESTresults:  number  relativenumber  number  relativenumber:setglobal rnu
:setlocal nu
 56 :" get above src/
 57 :if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
 58 :$put =''
 59 :$put ='Testing findfile'
 60 :$put =''
 61 :set ssl
 62 :$put =findfile('test19.in','src/test*')
 63 :exe "cd" cwd
 64 :cd ..
 65 :$put =findfile('test19.in','test*')
 66 :$put =findfile('test19.in','testdir')
 67 :exe "cd" cwd
 68 :/^results/,$w! test.out
 69 :q!
 70 ENDTEST
 71 
 72 results:
 73 
 74   number
 75   relativenumber
 76 
 77   number
 78   relativenumber:redir @d | setglobal rnu? | redir END
  relativenumber:$put =':setlocal must NOT reset the other global value'

 79 :setlocal must NOT reset the other global value
:$put c


 80 
 81   number
:$put d


 82 
 83   relativenumber
:"
:set nonu nornu
:set ssl:$put =findfile('test19.in','src/test*'):exe "cd" cwd:cd ..:$put =findfile('test19.in','test*'):$put =findfile('test19.in','testdir'):exe "cd" cwd:/^results/,$w! test.ou:q!ENDTESTresults:  number  relativenumber  number  relativenumber:setlocal must NOT reset the other global value  number  relativenumber:setglobal nu
:setglobal rnu
:redir @e | setglobal nu? | redir END
  number:set nonu nornu
:setglobal rnu
:setglobal nu
:redir @f | setglobal rnu? | redir END
  relativenumber:$put =':setglobal MUST reset the other global value'

:setglobal MUST reset the other global value
:$put e


number
:$put f


relativenumber
:"
:set nonu nornu
:set nu
 66 :$put =findfile('test19.in','testdir')
 67 :exe "cd" cwd
 68 :/^results/,$w! test.out
 69 :q!
 70 ENDTEST
 71 
 72 results:
 73 
 74   number
 75   relativenumber
 76 
 77   number
 78   relativenumber
 79 :setlocal must NOT reset the other global value
 80 
 81   number
 82 
 83   relativenumber
 84 :setglobal MUST reset the other global value
 85 
 86   number
 87 
 88   relativenumber:set rnu
22
 21
 20
 1
 18
 17
 16
 15
 1
 13
 12
 11
 10
  
  8
  7
  6
  5
  
  3
  2
  1
88    :redir @g | setglobal nu? | redir END
  number:set nonu nornu
:$put =findfile('test19.in','testdir'):exe "cd" cwd:/^results/,$w! test.ou:q!ENDTESTresults:  number  relativenumber  number  relativenumber:setlocal must NOT reset the other global value  number  relativenumber:setglobal MUST reset the other global value  number  relativenumber:set rnu
 22 :$put =findfile('test19.in','testdir')
 21 :exe "cd" cwd
 20 :/^results/,$w! test.out
 19 :q!
 18 ENDTEST
 17 
 16 results:
 15 
 14   number
 13   relativenumber
 12 
 11   number
 10   relativenumber
  9 :setlocal must NOT reset the other global value
  8 
  7   number
  6 
  5   relativenumber
  4 :setglobal MUST reset the other global value
  3 
  2   number
  1 
  0   relativenumber:set nu
88    :redir @h | setglobal rnu? | redir END
  relativenumber:$put =':set MUST reset the other global value'

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
89  :set MUST reset the other global value
:$put g


2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2 
  1 
91    number
:$put h


2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2 
  1 
93    relativenumber
:"
:let cwd=getcwd()
:cd ..
/<<PKGBUILDDIR>>/src/vim-gtk:" Tests may be run from a shadow directory, so an extra cd needs to be done to
:" get above src/
:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
/<<PKGBUILDDIR>>:$put =''

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
94  
:$put ='Testing findfile'

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
95  Testing findfile
:$put =''

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
96  
:set ssl
:$put =findfile('test19.in','src/test*')

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
97  src/testdir/test19.in
:exe "cd" cwd
/<<PKGBUILDDIR>>/src/vim-gtk/testdir:cd ..
/<<PKGBUILDDIR>>/src/vim-gtk:$put =findfile('test19.in','test*')

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
98  testdir/test19.in
:$put =findfile('test19.in','testdir')

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
99  testdir/test19.in
:exe "cd" cwd
/<<PKGBUILDDIR>>/src/vim-gtk/testdir:/^results/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New] 28L, 356C written:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test89 = test61; then \
#	  if diff test.out test89.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test89.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test89.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_arglist.vim
[?1h="test_arglist.vim" 318 lines, 6653 characters

Executing Test_argadd()
"a" [New File]bababababd

Executing Test_argc()
"a" [New File]
Executing Test_argdelete()
"a" [New File]a" [New File]
"bb

Executing Test_argedit()
"a" [New File]ba

"c" [New File]
"x

"y" [New File]

Executing Test_argidx()
"a" [New File]cabc

Executing Test_arglist_autocmd()
"Xxx1" 1L, 15C
"Xxx21L, 15C1L, 15C
"Xxx1" line 1 of 1 --100%-- col 1 ((3) of 2)
"Xxx21 of 2)
3 buffers wiped out

Executing Test_arglistid()
"a" [New File]
Executing Test_argpos()
"a" [New File]d

"c" [New File]
"ba

"d" [New File]
"a

Executing Test_argument()
"d" [New File]cbafile] --No lines in buffer-- (1 of 4)
"c3

a b [c] d
"c" [New File]

"x" [New File]
"z

Executing Test_argv()
"a" [New file] --No lines in buffer--

Executing Test_zero_argadd()
"b" [New file] --No lines in buffer-- (2 of 4)
"aFbedited" [New File]
"a" [New File]test_arglist.res" [New File][New] 0L, 0C written

Executed 11 tests
"messages" [New File][New] 15L, 326C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_assert.vim
[?1h="test_assert.vim" 125 lines, 2880 characters

Executing Test_assert_equal()

Executing Test_assert_exception()

Executing Test_assert_fail_fails()

Executing Test_assert_false()

Executing Test_assert_inrange()

Executing Test_assert_notequal()

Executing Test_assert_true()

Executing Test_compare_fail()

Executing Test_match()

Executing Test_notmatch()

Executing Test_user_is_happy()


oooo$$$$$$$$$$$$oooo

oo$$$$$$$$$$$$$$$$$$$$$$$$o

oo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$oo$   $$ o$

     o $ ooo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o$$ $$ $$o$

  oo $ $ "$      o$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$o$$$o$$o$

  "$$$$$$o$     o$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$o    $$$$$$$$

    $$$$$$$    $$$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$

    $$$$$$$$$$$$$$$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$$$$$$  """$$$

     "$$$""""$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$

      $$$   o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$o

     o$$"   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o

     $$$    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" "$$$$$$ooooo$$$$o

    o$$$oooo$$$$$  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$   o$$$$$$$$$$$$$$$$$

    $$$$$$$$"$$$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     $$$$""""""""

   """"$$$$    "$$$$$$$$$$$$$$$$$$$$$$$$$$$$"      o$$$

"$$$o     """$$$$$$$$$$$$$$$$$$"$$"$$$

$$$o"$$""$$$$$$""""o$$$

$$$$oo$$$"

"$$$$o      o$$$$$$o"$$$$oo$$$$

"$$$$$oo     ""$$$$o$$$$$o   o$$$$""

""$$$$$oooo  "$$$o$$$$$$$$$"""

""$$$$$$$oo $$$$$$$$$$

""""$$$$$$$$$$$

$$$$$$$$$$$$

$$$$$$$$$$"

"$$$""""

Executing Test_wrong_error_type()
"test_assert.res" [New File][New] 0L, 0C written

Executed 12 tests
"messages" 15L, 326C30L, 734C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_autochdir.vim
[?1h="test_autochdir.vim" 17 lines, 332 characters

Executing Test_set_filename()
"samples/Xtest" [New] 0L, 0C written
"test_autochdir.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"30L, 734C34L, 806C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_backspace_opt.vim
[?1h="test_backspace_opt.vim" 59 lines, 1673 characters

Executing Test_backspace_option()
"test_backspace_opt.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"34L, 806C38L, 886C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_bufwintabinfo.vim
[?1h="test_bufwintabinfo.vim" 116 lines, 3459 characters

Executing Test_get_buf_options()

Executing Test_get_win_options()

Executing Test_getbufwintabinfo()
"Xtestfile1" [New File]212

Already only one window
"test_bufwintabinfo.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"38L, 886C44L, 1033C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_cdo.vim
[?1h="test_cdo.vim" 205 lines, 5116 characters

Executing Test_cdo()
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile1" 3L, 18C33L, 18C

(1 of 1): Line3
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2

(7 of 8): Line2
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile2" 3L, 18C

(5 of 8): Line2

(5 of 8): Line2

(1 of 1): Line2

Executing Test_ldo()
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile1" 3L, 18C33L, 18C

(1 of 1): Line3
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2

(7 of 8): Line2
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile2" 3L, 18C

(5 of 8): Line2

(5 of 8): Line2

(1 of 1): Line2
"test_cdo.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"44L, 1033C49L, 1112C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_channel.vim
[?1h="test_channel.vim" 1528 lines, 43719 characters
"test_channel.res" [New File][New] 0L, 0C written

Executed 0 test
"messages"49L, 1112C52L, 1152C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_charsearch.vim
[?1h="test_charsearch.vim" 62 lines, 1475 characters

Executing Test_charsearch()

Executing Test_search_cmds()
"test_charsearch.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"52L, 1152C57L, 1253C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_cmdline.vim
[?1h="test_cmdline.vim" 191 lines, 5876 characters

Executing Test_complete_list():e test

test1.intest84.ok

test1.oktest84.out

test1.outtest85.in

test103.intest85.ok

test103.oktest85.out

test103.outtest86.in

test104.intest86.ok

test104.oktest86.out

test104.outtest87.in

test107.intest87.ok

test107.oktest87.out

test107.outtest88.in

test108.intest88.ok

test108.oktest88.out

test108.outtest89.in

test11.intest89.ok

test11.oktest89.out

test11.outtest9.in

test12.intest9.ok

test12.oktest9.out

test12.outtest90.in

test14.intest90.ok

test14.oktest90.out

test14.outtest91.in

test15.intest91.ok

test15.oktest91.out

test15.outtest92.in

test17.intest92.ok

test17.oktest92.out

test17.outtest93.in

test17a.intest93.ok

test19.intest93.out

test19.oktest94.in

test19.outtest94.ok

test20.intest94.out

test20.oktest95.in

test20.outtest95.ok

test22.intest95.out

test22.oktest97.in

test22.outtest97.ok

test23.intest97.out

test23.oktest98.in

test23.outtest98.ok

test24.intest98.out

test24.oktest99.in

test24.outtest99.ok

test25.intest99.out

test25.oktest_alot.vim

test25.outtest_alot_latin.vim

test26.intest_alot_utf8.vim

test26.oktest_arglist.res

test26.outtest_arglist.vim

test28.intest_assert.res

test28.oktest_assert.vim

test28.outtest_assign.vim

test29.intest_autochdir.res

test29.oktest_autochdir.vim

test29.outtest_autocmd.vim

test3.intest_autocmd_option.in

test3.oktest_autocmd_option.ok

test3.outtest_autocmd_option.out

test30.intest_autoformat_join.in

test30.oktest_autoformat_join.ok

test30.outtest_autoformat_join.out

test31.intest_backspace_opt.res

test31.oktest_backspace_opt.vim

test31.outtest_breakindent.in

test32.intest_breakindent.ok

test32.oktest_breakindent.out

test32.outtest_bufwintabinfo.res

test33.intest_bufwintabinfo.vim

test33.oktest_cdo.res

test33.outtest_cdo.vim

test34.intest_changelist.in

test34.oktest_changelist.ok

test34.outtest_changelist.out

test36.intest_channel.py

test36.oktest_channel.res

test36.outtest_channel.vim

test37.intest_channel_pipe.py

test37.oktest_charsearch.res

test37.outtest_charsearch.vim

test38.intest_close_count.in

test38.oktest_close_count.ok

test38.outtest_close_count.out

test39.intest_cmdline.vim

test39.oktest_command_count.vim

test39.outtest_comparators.in

test4.intest_comparators.ok

test4.oktest_comparators.out

test4.outtest_crypt.vim

test40.intest_cscope.vim

test40.oktest_cursor_func.vim

test40.outtest_delete.vim

test41.intest_diffmode.vim

test41.oktest_digraph.vim

test41.outtest_erasebackword.in

test42.intest_erasebackword.ok

test42.oktest_erasebackword.out

test42.outtest_eval.in

test43.intest_eval.ok

test43.oktest_eval.out

test43.outtest_eval_func.vim

test44.intest_ex_undo.vim

test44.oktest_execute_func.vim

test44.outtest_expand.vim

test45.intest_expand_dllpath.vim

test45.oktest_expr.vim

test45.outtest_expr_utf8.vim

test48.intest_farsi.vim

test48.oktest_feedkeys.vim

test48.outtest_file_perm.vim

test49.intest_filter_cmd.vim

test49.oktest_filter_map.vim

test49.outtest_fixeol.in

test49.vimtest_fixeol.ok

test5.intest_fixeol.out

test5.oktest_fnameescape.vim

test5.outtest_fnamemodify.vim

test50.intest_getcwd.in

test50.oktest_getcwd.ok

test51.intest_getcwd.out

test51.oktest_gf.vim

test51.outtest_glob2regpat.vim

test52.intest_gn.vim

test52.oktest_goto.vim

test52.outtest_gui.vim

test53.intest_hardcopy.vim

test53.oktest_help_tagjump.vim

test53.outtest_history.vim

test54.intest_hlsearch.vim

test54.oktest_increment.vim

test54.outtest_increment_dbcs.vim

test55.intest_insertcount.in

test55.oktest_insertcount.ok

test55.outtest_insertcount.out

test56.intest_job_fails.vim

test56.oktest_join.vim

test56.outtest_json.vim

test57.intest_jumps.vim

test57.oktest_lambda.vim

test57.outtest_langmap.vim

test58.intest_largefile.vim

test58.oktest_lispwords.vim

test58.outtest_listchars.in

test59.intest_listchars.ok

test59.oktest_listchars.out

test59.outtest_listlbr.in

test60.intest_listlbr.ok

test60.oktest_listlbr.out

test60.outtest_listlbr_utf8.in

test60.vimtest_listlbr_utf8.ok

test64.intest_listlbr_utf8.out

test64.oktest_man.vim

test64.outtest_mapping.vim

test65.intest_marks.vim

test65.oktest_match.vim

test65.outtest_matchadd_conceal.vim

test66.intest_matchadd_conceal_utf8.vim

test66.oktest_menu.vim

test66.outtest_messages.vim

test67.intest_nested_function.vim

test67.oktest_netbeans.py

test67.outtest_netbeans.vim

test68.intest_normal.vim

test68.oktest_options.vim

test68.outtest_packadd.vim

test69.intest_partial.vim

test69.oktest_perl.vim

test69.outtest_popup.vim

test7.intest_quickfix.vim

test7.oktest_regexp_latin.vim

test7.outtest_regexp_utf8.vim

test70.intest_reltime.vim

test70.oktest_ruby.vim

test70.outtest_search.vim

test72.intest_search_mbyte.in

test72.oktest_search_mbyte.ok

test72.outtest_search_mbyte.out

test73.intest_searchpos.vim

test73.oktest_set.vim

test73.outtest_signs.vim

test75.intest_smartindent.vim

test75.oktest_sort.vim

test75.outtest_source_utf8.vim

test76.intest_startup.vim

test76.oktest_startup_utf8.vim

test76.outtest_stat.vim

test77.intest_statusline.vim

test77.oktest_substitute.vim

test77.outtest_syn_attr.vim

test77a.intest_syntax.vim

test77a.oktest_tabline.vim

test78.intest_tabpage.vim

test78.oktest_tagcase.vim

test78.outtest_tagjump.vim

test79.intest_textobjects.vim

test79.oktest_timers.vim

test79.outtest_true_false.vim

test8.intest_undo.vim

test8.oktest_unlet.vim

test8.outtest_usercommands.vim

test80.intest_utf8.in

test80.oktest_utf8.ok

test80.outtest_utf8.out

test82.intest_viminfo.vim

test82.oktest_viml.vim

test82.outtest_visual.vim

test83-tags2test_window_cmd.vim

test83-tags3test_window_id.vim

test83.intest_wordcount.in

test83.oktest_wordcount.ok

test83.outtest_wordcount.out

test84.intest_writefile.vim

:e test
"test" [New File]

Executing Test_complete_tab():e Xtest...file
"Xtestfile" 1L, 9C

Executing Test_complete_wildmenu():e Xtest...file1...

Xtestfile1  Xtestfile2  
Xtestfile1                                                        :e Xtest...Xtestfile1
Xtestfile1file1...Xtestfile1Xtestfile22:e Xtestfile2"Xtestfile2" 1L, 10C
Executing Test_expand_star_star():find **/fileXname...a/b/fileXname
"a/b/fileXname" 1L, 9C
"Xtestfile2" [New File]

Executing Test_getcompletion():cscope find 

a  c  d  e  f  g  i  s  t

:cscope find :sign list 

Testing

:sign list "test_cmdline.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"57L, 1253C65L, 1455C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_crypt.vim
[?1h="test_crypt.vim" 83 lines, 2590 characters

Executing Test_crypt_blowfish()
"Xtest.txt" [New File]:X

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

Enter same key again: ******

"Xtest.txt" [New][blowfish] 3L, 98C written
:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [blowfish] 3L, 98C

Executing Test_crypt_blowfish2()
"Xtest.txt" [New File]:X
Enter encryption key: ******
Enter same key again: ******

"Xtest.txt" [New][blowfish2] 3L, 98C written
:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Enter encryption key: ******

"Xtest.txt" [blowfish2] 3L, 98C

Executing Test_crypt_zip()
"Xtest.txt" [New File]:X

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

Enter same key again: ******

"Xtest.txt" [New][crypted] 3L, 98C written
:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [crypted] 3L, 98C

Executing Test_head_only_2()
"Xtest.txt" [New File][New] 1L, 16C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [readonly] 1L, 16C

Executing Test_head_only_3()
"Xtest.txt" [New File][New] 1L, 16C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Enter encryption key: ******

"Xtest.txt" [readonly] 1L, 16C

Executing Test_uncrypt_blowfish()
"Xtest.txt" [New File][converted][New][noeol] 1L, 80C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [blowfish] 2L, 27C

Executing Test_uncrypt_blowfish2()
"Xtest.txt" [New File][converted][New][noeol] 1L, 103C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Enter encryption key: *******

"Xtest.txt" [blowfish2] 2L, 44C

Executing Test_uncrypt_zip()
"Xtest.txt" [New File][converted][New][noeol] 1L, 45C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [converted][crypted] 2L, 26C"test_crypt.res" [New File][converted][New] 0L, 0C written
Executed 8 tests
"messages"65L, 1455C76L, 1742C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_cscope.vim
[?1h="test_cscope.vim" 279 lines, 10568 characters
"test_cscope.res" [New File][New] 0L, 0C written

Executed 0 test
"messages"76L, 1742C79L, 1781C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_diffmode.vim
[?1h="test_diffmode.vim" 220 lines, 4746 characters

Executing Test_diff_fold_sync()

Executing Test_diffget_diffput()

Executing Test_diffoff()  -------------------------------------|
  -------------------------------------|
  Two|
  Three|||||||||||||||||||  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    
[No Name] [+]                             One                                                                             Two  Three                                    ~~~~~~~~~~~~~~~~~~[No Name] [+]                           Two                                    
Three                                  
~                                      
~                                      
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  OneTwoThree~~~~~~~~~~~~~~~~~~

Executing Test_filler_lines()

7 more lines

10 more lines

Executing Test_vert_split()
"Xtest" [New] 5L, 25C written"Xtest2" [New] 6L, 29C written

"Nop" [Modified][Not edited] line 4 of 6 --66%-- col 3"Xtest" 5L, 25C2" 6L, 29C
"test_diffmode.vim" 220L, 4746Cres" [New File][New] 0L, 0C written

Executed 5 tests
"messages"79L, 1781C87L, 1971C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_digraph.vim
[?1h="test_digraph.vim" 461 lines, 14928 characters

Executing Test_digraph_cmndline()
Executing T

Executing Test_digraphs()
Executing Test_digraphs_option()
Executing Test_digraphs_output()

Executing Test_loadkeymap()"test_digraph.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"87L, 1971C95L, 2166C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_farsi.vim
[?1h="test_farsi.vim" 84 lines, 2881 characters

Executed 2 tests
"messages"[converted] 95L, 2166C[converted] 100L, 2262C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_fnameescape.vim
[?1h="test_fnameescape.vim" 21 lines, 467 characters

Executing Test_fnameescape()
"Xspa ce"[New] 21L, 467C written
"Xemark![New] 21L, 467C written
"test_fnameescape.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"100L, 2262C104L, 2335C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_gf.vim
[?1h="test_gf.vim" 33 lines, 1138 characters

Executing Test_gf_url()
"test_gf.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"104L, 2335C108L, 2394C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_gn.vim
[?1h="test_gn.vim" 93 lines, 2821 characters

Executing Test_gn_command()/[u]niquepattern/s
/a:0\@!\zs\d\+
"test_gn.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"108L, 2394C112L, 2457C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_gui.vim
[?1h="test_gui.vim" 36 lines, 838 characters
"test_gui.res" [New File][New] 0L, 0C written

Executed 0 test
"messages"112L, 2457C115L, 2493C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_hardcopy.vim
[?1h="test_hardcopy.vim" 62 lines, 2001 characters

Executing Test_printheader_parsing()

Executing Test_printmbfont_parsing()

Executing Test_printoptions_parsing()

Executing Test_with_syntax()Printing page 1 (0%)Printed: test_hardcopy.vim
"test_hardcopy.res" [New File][New] 0L, 0C written

Executed 4 tests
"messages"115L, 2493C122L, 2676C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_history.vim
[?1h="test_history.vim" 65 lines, 1978 characters

Executing Test_History()

"test_history.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"122L, 2676C126L, 2741C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_hlsearch.vim
[?1h="test_hlsearch.vim" 34 lines, 1013 characters

Executing Test_hlsearch()/aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
~
[No Name] [+]                                                                   " Test for v:hlsearch

function! Test_hlsearch()
  new
  call setline(1, repeat(['aaa'], 10))
  set hlsearch nolazyredraw
  let r=[]
  " redraw is needed to make hlsearch highlight the matches
  exe "normal! /aaa\<CR>" | redraw
  let r1 = screenattr(1, 1)
test_hlsearch.vim                                                               aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaa


/aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaa//aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaa//aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaa


"test_hlsearch.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"126L, 2741C130L, 2808C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_increment.vim
[?1h="test_increment.vim" 760 lines, 19011 characters

Executing Test_normal_increment_01()
"dummy" [New File]
Executing Test_normal_increment_02()
"dummy" [New File]
Executing Test_normal_increment_03()
"dummy" [New File]
Executing Test_visual_increment_01()
"dummy" [New File]
Executing Test_visual_increment_02()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_03()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_04()
"dummy" [New File]
Executing Test_visual_increment_05()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_06()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_07()
"dummy" [New File]5 lines changed
Executing Test_visual_increment_08()
"dummy" [New File]
Executing Test_visual_increment_09()
"dummy" [New File]
Executing Test_visual_increment_10()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_11()
"dummy" [New File]3 lines changed
Executing Test_visual_increment_12()
"dummy" [New File]3 lines changed
Executing Test_visual_increment_13()
"dummy" [New File]3 lines changed
Executing Test_visual_increment_14()
"dummy" [New File]
Executing Test_visual_increment_15()
"dummy" [New File]
Executing Test_visual_increment_16()
"dummy" [New File]3 lines changed
Executing Test_visual_increment_17()
"dummy" [New File]
Executing Test_visual_increment_18()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_19()
"dummy" [New File]
Executing Test_visual_increment_20()
"dummy" [New File]
Executing Test_visual_increment_21()
"dummy" [New File]
Executing Test_visual_increment_22()
"dummy" [New File]
Executing Test_visual_increment_23()
"dummy" [New File]
Executing Test_visual_increment_24()
"dummy" [New File]
Executing Test_visual_increment_25()
"dummy" [New File]
Executing Test_visual_increment_26()
"dummy" [New File]
Executing Test_visual_increment_27()
"dummy" [New File]
Executing Test_visual_increment_28()
"dummy" [New File]
Executing Test_visual_increment_29()
"dummy" [New File]
Executing Test_visual_increment_30()
"dummy" [New File]
Executing Test_visual_increment_31()
"dummy" [New File]
Executing Test_visual_increment_32()
"dummy" [New File]_31" [New File]

Executing Test_visual_increment_33()
"dummy" [New File]
Executing Test_visual_increment_34()
"dummy" [New File]
Executing Test_visual_increment_35()
"dummy" [New File]
Executing Test_visual_increment_36()
"dummy" [New File]
Executing Test_visual_increment_37()
"dummy" [New File]
Executing Test_visual_increment_38()
"dummy" [New File]"test_increment.res" [New File][New] 0L, 0C written

Executed 41 tests
"messages" 130L, 2808C174L, 4369C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_increment_dbcs.vim
[?1h="test_increment_dbcs.vim" 30 lines, 604 characters

Executing Test_increment_dbcs_1()
"test_increment_dbcs.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"[converted] 174L, 4369C[converted] 178L, 4450C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_job_fails.vim
[?1h="test_job_fails.vim" 19 lines, 598 characters

Executing Test_job_start_fails()
"test_job_fails.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"178L, 4450C182L, 4525C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_json.vim
[?1h="test_json.vim" 281 lines, 10366 characters

Executing Test_js_decode()

Executing Test_js_encode()

Executing Test_json_decode()

Executing Test_json_encode()

"test_json.res" [New File][New] 0L, 0C written

Executed 4 tests
"messages"182L, 4525C189L, 4675C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_langmap.vim
[?1h="test_langmap.vim" 28 lines, 628 characters

Executing Test_langmap()
"test_langmap.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"189L, 4675C193L, 4740C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_man.vim
[?1h="test_man.vim" 60 lines, 1358 characters

Executing Test_g_ft_man_open_mode()


Cannot find a 'vim'.

Executing Test_nomodifiable()


Cannot find a 'vim'.
"test_man.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"193L, 4740C198L, 4843C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_marks.vim
[?1h="test_marks.vim" 26 lines, 775 characters

Executing Test_Incr_Marks()

Executing Test_Restore_DelMark()1 more line; before #2  0 seconds ago
1 line less; after #2  0 seconds agomore line; before #2  0 seconds ago
"test_marks.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"198L, 4843C203L, 4943C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_matchadd_conceal.vim
[?1h="test_matchadd_conceal.vim" 266 lines, 8378 characters[?1l>Executing Test_clearmatches()# This is a Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       #ZThisZisZaZTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_default_conceal_char()# This is a Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       #+This+is+a+Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_matchadd_and_conceallevel_3()#ThisisaTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       #Thisisa Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_matchadd_repeat_conceal_with_syntax_off()TARGET_TARGETTARGET" Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term
endif

function! s:(lnum)t_ttsimple_matchadd()# This is a Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_simple_matchadd_and_conceal()#XThisXisXaXTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_syn_and_match_conceal()#ZThisZisZaZTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       #*This*is*a*Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_using_matchaddpos()#Pis a Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       "test.log" [New File][New] 8L, 363C written

Executed 8 tests

2 FAILED:
"messages" 203L, 4943C220L, 5654C written

VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_nested_function.vim
[?1h="test_nested_function.vim" 32 lines, 622 characters

Executing Test_nested_functions()
"test_nested_function.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"220L, 5654C224L, 5736C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_netbeans.vim
[?1h="test_netbeans.vim" 79 lines, 2100 characters
"test_netbeans.res" [New File][New] 0L, 0C written

Executed 0 test
"messages"224L, 5736C227L, 5777C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_normal.vim
[?1h="test_normal.vim" 2209 lines, 57349 characters

Executing Test_normal00_optrans()
Executing Test_normal01_keymodel()
4 lines yankedExecuting Test_normal02_selectmode()10 fewer lines
Executing Test_normal02_selectmode2():set im
:set noim

Executing Test_normal03_join()

Executing Test_normal04_filter():.!sed -e 's/^/|    /'
[?1l>one
[?1h=:.!sed -e 's/^/|    /'
:.!
:!echo one
[?1l>
[No write since last change]

one
[?1h=:.!!

Executing Test_normal05_formatexpr()

Executing Test_normal05_formatexpr_newbuf()
"another" [New File]
Executing Test_normal05_formatexpr_setopt()

Executing Test_normal06_formatprg():.,$!./Xsed_format.sh
7 lines filtered
Executing Test_normal07_internalfmt()
7 fewer lin
Executing Test_normal08_fold()

Executing Test_normal09_operatorfunc()

11 substitutions on 11 lines

Executing Test_normal10_expand()

Executing Test_normal11_showcmd()
Executing Test_normal12_nv_error()

Executing Test_normal13_help()
"help.txt" [readonly] 225L, 8437C

Executing Test_normal14_page()

Executing Test_normal14_page_eol()
Executing Test_normal15_z_scroll_vert()

Executing Test_normal16_z_scroll_hor()

Executing Test_normal17_z_scroll_hor2()

Executing Test_normal18_z_fold()

Executing Test_normal19_z_spell()
Word 'goood' added to ./Xspellfile.add
search hit BOTTOM, continuing at TOPWord 'goood' added to ./Xspellfile.add2 goood' added to ./Xspellfile.add/tmp/vQNhvkj/9removed from /tmp/vQNhvkj/9goood' added to /tmp/vQNhvkj/9removed from /tmp/vQNhvkj/9added to ./Xspellfile.addremoved from ./Xspellfile.add2 goood' added to ./Xspellfile.addremoved from ./Xspellfile.addgoood' added to ./Xspellfile2.add
Executing Test_normal20_exmode()

Executing Test_normal21_nv_hat()
"Xfoobar" [New File]ile2" [New File]
Executing Test_normal22_zet()

Executing Test_normal23_K()
"version8.txt" [readonly] 14510L, 546213Cline 1 of 14510 --0%-- col 1
:! man --pager=cat 'man'[?1l>
[No write since last change]

stdin not open for reading!

shell returned 2

[?1h=
Executing Test_normal24_rot13()

Executing Test_normal25_tag()
"help.txt" [readonly] 225L, 8437C
"change.txt" [readonly] 1829L, 74755C
"help.txt" [readonly] 225L, 8437C
"change.txt" [readonly] 1829L, 74755C
"help.txt" [readonly] 225L, 8437C
"insert.txt" [readonly] 2003L, 82815Cline 49 of 2003 --2%-- col 7-49

Executing Test_normal26_put()

Executing Test_normal27_bracket()

21 substitutions on 21 lines

Executing Test_normal28_parenthesis()

Executing Test_normal29_brace()
17 fewer lines4 fewer lines3
Executing Test_normal30_changecase()

Executing Test_normal31_r_cmd()
Executing Test_normal32_g_cmd1()
/x_foo?abc
Executing Test_normal33_g_cmd2()/[1-8]
search hit BOTTOM, continuing at TOP
9 substitutions on 9 linesblock of 3 lines yanked5
Executing Test_normal34_g_cmd3()

Executing Test_normal35_g_cmd4()

Executing Test_normal36_g_cmd5()

Executing Test_normal37_g_cmd6()
"1.txt" [New File]23

Executing Test_normal38_nvhome()

Executing Test_normal39_cw()
Executing Test_normal40_ctrl_bsl()
Executing Test_normal41_insert_reg()=a
=a
=a

Executing Test_normal42_halfpage()

Executing Test_normal43_textobject1()

Executing Test_normal44_textobjects2()

Executing Test_normal45_drop()

Executing Test_normal46_ignore()

Executing Test_normal47_autocmd()

Executing Test_normal47_visual_buf_wipe()

Executing Test_normal48_wincmd()

Executing Test_normal49_counts()

Executing Test_normal50_commandline()q:  :xxx
~
~
~
~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       :set im
:set noim
:.!sed -e 's/^/|    /'
:.!
:!echo one
:.!!
:
[Command Line]                                                                  :^M   

Executing Test_normal51_FileChangedRO()
"Xreadonly.log" 1L, 4C
Error detected while processing ...[9]..Test_normal51_FileChangedRO:
line    8:W10: Warning: Changing a readonly file
Executing Test_normal52_rl()3_digraph()

Executing Test_normal54_Ctrl_bsl()
"test_normal.res" [New File][New] 0L, 0C written

Executed 60 tests
"messages" 227L, 5777C294L, 8101C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_packadd.vim
[?1h="test_packadd.vim" 238 lines, 8288 characters

Executing Test_colorscheme()

Executing Test_colorscheme_completion():colorscheme ...one')
:ccolorscheme one')
:cacolorscheme one')
:calcolorscheme one')
:callcolorscheme one')
:call colorscheme one')acolorscheme one')dcolorscheme one')dcolorscheme one')(colorscheme one')lcolorscheme one')icolorscheme one'),colorscheme one') colorscheme one')'colorscheme one')
:colorscheme ...one...three')
:ccolorscheme three')
:cacolorscheme three')
:calcolorscheme three')
:callcolorscheme three')
:call colorscheme three')acolorscheme three')dcolorscheme three')dcolorscheme three')(colorscheme three')lcolorscheme three')icolorscheme three'),colorscheme three') colorscheme three')'colorscheme three')
:colorscheme ...one...three...wo')
:ccolorscheme two')
:cacolorscheme two')
:calcolorscheme two')
:callcolorscheme two')
:call colorscheme two')acolorscheme two')dcolorscheme two')dcolorscheme two')(colorscheme two')lcolorscheme two')icolorscheme two'),colorscheme two') colorscheme two')'colorscheme two')
:colorscheme ...one...three...wo...')
:ccolorscheme ')
:cacolorscheme ')
:calcolorscheme ')
:callcolorscheme ')
:call colorscheme ')acolorscheme ')dcolorscheme ')dcolorscheme ')(colorscheme ')lcolorscheme ')icolorscheme '),colorscheme ') colorscheme ')'colorscheme ')

Executing Test_helptags()

Executing Test_packadd()
"./Xdir/pack/mine/opt/mytest/plugin/test.vim" [New File][New] 1L, 24C writtenalso/loaded.vim" [New File][New] 1L, 29C writtenftdetect/test.vim" [New File[New] 1L, 26C written

Executing Test_packadd_completion():packadd ...pluginA')
:cpackadd pluginA')
:capackadd pluginA')
:calpackadd pluginA')
:callpackadd pluginA')
:call packadd pluginA')apackadd pluginA')dpackadd pluginA')dpackadd pluginA')(packadd pluginA')lpackadd pluginA')ipackadd pluginA'),packadd pluginA') packadd pluginA')'packadd pluginA')
:packadd ...pluginA...B')
:cpackadd pluginB')
:capackadd pluginB')
:calpackadd pluginB')
:callpackadd pluginB')
:call packadd pluginB')apackadd pluginB')dpackadd pluginB')dpackadd pluginB')(packadd pluginB')lpackadd pluginB')ipackadd pluginB'),packadd pluginB') packadd pluginB')'packadd pluginB')
:packadd ...pluginA...B...C')
:cpackadd pluginC')
:capackadd pluginC')
:calpackadd pluginC')
:callpackadd pluginC')
:call packadd pluginC')apackadd pluginC')dpackadd pluginC')dpackadd pluginC')(packadd pluginC')lpackadd pluginC')ipackadd pluginC'),packadd pluginC') packadd pluginC')'packadd pluginC')
:packadd ...pluginA...B...C...')
:cpackadd ')
:capackadd ')
:calpackadd ')
:callpackadd ')
:call packadd ')apackadd ')dpackadd ')dpackadd ')(packadd ')lpackadd ')ipackadd '),packadd ') packadd ')'packadd ')

Executing Test_packadd_noload()
"./Xdir/pack/mine/opt/mytest/plugin/test.vim" [New File][New] 1L, 24C written

Executing Test_packloadall()

Executing Test_runtime()
"test_packadd.res" [New File][New] 0L, 0C written

Executed 8 tests
"messages"294L, 8101C305L, 8384C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_perl.vim
[?1h="test_perl.vim" 123 lines, 3037 characters

Executing Test_SvREFCNT()
"t" [New File]
Executing Test_VIM_package()

Executing Test_change_buffer()/^1

Executing Test_evaluate_list()/^2
search hit BOTTOM, continuing at TOP

Executing Test_perldo()
"__TEST__" [New File]test_perl.vim"123L, 3037C

Executing Test_perleval()

Executing Test_stdio()

&VIM::Msg

STDOUT

STDERR
"test_perl.res" [New File][New] 0L, 0C written

Executed 7 tests
"messages"305L, 8384C315L, 8612C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_quickfix.vim
[?1h="test_quickfix.vim" 1594 lines, 44709 characters

Executing Test_Autocmd()
"F1" [New File]
(1 of 1): Line 10
"F2" [New File]
(1 of 2): Line 10

Executing Test_adjust_lnum()

Already only one window
"Xqftestfilec" 20L, 131C

9 fewer lines

Already only one window
"Xqftestfilel" 20L, 131C

9 fewer lines

Executing Test_browse()
"Xqftestfile1" 20L, 131C

(1 of 4): Line5

"Xqftestfile2" 20L, 131C

(3 of 4): Line10
"Xqftestfile1" 20L, 131C

(2 of 4): Line6
"Xqftestfile2" 20L, 131C

(4 of 4): Line11

"Xqftestfile1" 20L, 131C

(1 of 4): Line5

(1 of 4): Line5

"Xqftestfile2" 20L, 131C

(3 of 4): Line10
"Xqftestfile1" 20L, 131C

(2 of 4): Line6
"Xqftestfile2" 20L, 131C

(4 of 4): Line11

"Xqftestfile1" 20L, 131C

(1 of 4): Line5

Executing Test_caddbuffer_to_empty()
"autocmd.txt" [readonly] 1486L, 61530C

(1 of 475): |QuickFixCmdPre|^Ibefore a quickfix command is run

(2 of 1486):

Executing Test_cage()

error list 9 of 10; 1 errors      :cgetexpr ['Xtestfile2:2:2:Line2']

error list 10 of 10; 1 errors     :cgetexpr ['Xtestfile3:3:1:Line3']

error list 8 of 10; 1 errors      :cgetexpr ['Xtestfile1:1:3:Line1']

error list 10 of 10; 1 errors     :cgetexpr ['Xtestfile3:3:1:Line3']

error list 6 of 7; 1 errors:lgetexpr ['Xtestfile2:2:2:Line2']

error list 7 of 7; 1 errors:lgetexpr ['Xtestfile3:3:1:Line3']

error list 5 of 7; 1 errors:lgetexpr ['Xtestfile1:1:3:Line1']

error list 7 of 7; 1 errors:lgetexpr ['Xtestfile3:3:1:Line3']

Executing Test_cbottom()

Executing Test_cbuffer()
"Xtestfile7" [New File]
(1 of 2): Line 700
"Xtestfile7" [New File]

(1 of 2): Line 700

Executing Test_cexpr()

Executing Test_cfile()
"Xtestfile1" [New File]

(1 of 2): Line 700

"Xtestfile1" [New File]

(1 of 2): Line 700

Executing Test_cgetexpr_works()

Executing Test_clist()

 2 Xtestfile1:1 col 3: Line1

 4 Xtestfile2:2 col 2: Line2

 6 Xtestfile3:3 col 1: Line3

 1: non-error 1

 2 Xtestfile1:1 col 3: Line1

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 5: non-error 3

 6 Xtestfile3:3 col 1: Line3

 4 Xtestfile2:2 col 2: Line2

 6 Xtestfile3:3 col 1: Line3

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 2 Xtestfile1:1 col 3: Line1

 2 Xtestfile1:1 col 3: Line1

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 2 Xtestfile1:1 col 3: Line1

 4 Xtestfile2:2 col 2: Line2

 6 Xtestfile3:3 col 1: Line3

 1: non-error 1

 2 Xtestfile1:1 col 3: Line1

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 5: non-error 3

 6 Xtestfile3:3 col 1: Line3

 4 Xtestfile2:2 col 2: Line2

 6 Xtestfile3:3 col 1: Line3

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 2 Xtestfile1:1 col 3: Line1

 2 Xtestfile1:1 col 3: Line1

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

Executing Test_cwindow()~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       Xtestfile1|1 col 3| Line1                                                       Xtestfile2|2 col 2| Line2
Xtestfile3|3 col 1| Line3
~
~
~
~
~
~
~
[Quickfix List]                                                                 ~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       Xtestfile1|1 col 3| Line1                                                       Xtestfile2|2 col 2| Line2
Xtestfile3|3 col 1| Line3
~
~
~
~
~
~
~
[Location List]                                                                 Executing Test_duplicate_buf()
"DoesNotExist" [New File]2" [New File]

Xgrepthis
"Xgrepthis" line 1 of 2 --50%-- col 1

(1 of 2): this one

Xgrepthis
(1 of 2): this one

Executing Test_efm()

Executing Test_efm1()
"Xtestfile" 21L, 903C

(1 of 20): 1506-045 (S) Undeclared identifier fd_set.

(20 of 20): What is the title of the quickfix window?

Executing Test_efm2()
"Xtestfile" [New File]

Executing Test_efm_dirstack()

Executing Test_errortitle()

Executing Test_grep()

Already only one window[?1l>test_quickfix.vim:1379:  " Grep_Test_Text: Match 1
test_quickfix.vim:1380:  " Grep_Test_Text: Match 2
test_quickfix.vim:1385:  silent Xgrep Grep_Test_Text: test_quickfix.vim
[?1h=[?1l>test_quickfix.vim:1381:  " GrepAdd_Test_Text: Match 1
test_quickfix.vim:1382:  " GrepAdd_Test_Text: Match 2
test_quickfix.vim:1392:  silent Xgrepadd GrepAdd_Test_Text: test_quickfix.vim
[?1h=Already only one window[?1l>test_quickfix.vim:1379:  " Grep_Test_Text: Match 1
test_quickfix.vim:1380:  " Grep_Test_Text: Match 2
test_quickfix.vim:1385:  silent Xgrep Grep_Test_Text: test_quickfix.vim
[?1h=[?1l>test_quickfix.vim:1381:  " GrepAdd_Test_Text: Match 1
test_quickfix.vim:1382:  " GrepAdd_Test_Text: Match 2
test_quickfix.vim:1392:  silent Xgrepadd GrepAdd_Test_Text: test_quickfix.vim
[?1h=Executing Test_helpgrep()
"autocmd.txt" [readonly] 1486L, 61530C

(1 of 475): |QuickFixCmdPre|^Ibefore a quickfix command is run
"autocmd.txt" [readonly] line 1 of 1486 --0%-- col 1
(1 of 475): |QuickFixCmdPre|^Ibefore a quickfix command is run

Executing Test_history()

error list 1 of 10; 21 errors     :cf Xerrorfile1

error list 1 of 2; 21 errors      :cf Xerrorfile1

error list 1 of 2; 13 errors      :lexpr ""

error list 1 of 2; 13 errors      :lexpr ""

Executing Test_invalid_efm()

Executing Test_locationlist()

No matching autocommands

(1 of 7): file foo.txt
No matching autocommands

No matching autocommands

No matching autocommands

No matching autocommands

No matching autocommands

No matching autocommands

(1 of 7): file foo.txt
No matching autocommands

No matching autocommands

(1 of 7): file foo.txt
No matching autocommands

W19: Deleting augroup that is still in use
Executing Test_locationlist_curwin_was_closed()

W19: Deleting augroup that is still in use
Executing Test_long_lines()"samples/quickfix.txt" 4L, 22089C

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"samples/quickfix.txt" 4L, 22089C

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"samples/quickfix.txt" 4L, 22089C

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Executing Test_nomem()
"/<<PKGBUILDDIR>>/src/vim-gtk/alloc.h" 21L, 485C

Error detected while processing function RunTheTest[9]..Test_nomem:

line    2:

E342: Out of memory!  (allocating 4096 bytes)
"/<<PKGBUILDDIR>>/src/vim-gtk/alloc.h" 21L, 485C

line    5:

E342: Out of memory!  (allocating 4096 bytes)
"/<<PKGBUILDDIR>>/src/vim-gtk/alloc.h" 21L, 485C

line    8:

E342: Out of memory!  (allocating 1025 bytes)
"/<<PKGBUILDDIR>>/src/vim-gtk/alloc.h" 21L, 485C

line   11:

E342: Out of memory!  (allocating 1025 bytes)
"/<<PKGBUILDDIR>>/src/vim-gtk/alloc.h" 21L, 485C

line   14:

E342: Out of memory!  (allocating 1025 bytes)

Executing Test_qf_property()

Executing Test_qf_title()

Executing Test_quickfix_set_list_with_act()

Executing Test_quickfix_was_changed_by_autocmd()

error list 9 of 10; 1 errors      :setqflist()

W19: Deleting augroup that is still in use
error list 9 of 10; 1 errors      :setloclist()

error list 9 of 10; 1 errors      :setloclist()

W19: Deleting augroup that is still in use
Executing Test_setqflist()"Xtestfile" [New File]
(2 of 2):

(3 of 3):

(2 of 2):

(3 of 3):

Executing Test_setqflist_empty_middle()

test_quickfix.vim
"test_quickfix.vim" 1594L, 44709C

(1 of 43): function Test_clist()

test_quickfix.vim
(1 of 13): " With an empty list, command should return error

test_quickfix.vim
(1 of 2): " number of matches is unknown

error list 9 of 10; 13 errors     :vimgrep empty test_quickfix.vim

error list 8 of 10; 43 errors     :vimgrep Test_ test_quickfix.vim

error list 9 of 10; 0 errors      :setqflist()

error list 10 of 10; 2 errors     :vimgrep matches test_quickfix.vim

test_quickfix.vim
(1 of 43): function Test_clist()

test_quickfix.vim
(1 of 13): " With an empty list, command should return error

test_quickfix.vim
(1 of 2): " number of matches is unknown

error list 9 of 10; 13 errors     :lvimgrep empty test_quickfix.vim

error list 8 of 10; 43 errors     :lvimgrep Test_ test_quickfix.vim

error list 9 of 10; 0 errors      :setloclist()

error list 10 of 10; 2 errors     :lvimgrep matches test_quickfix.vim

Executing Test_setqflist_empty_older()

test_quickfix.vim
(1 of 24): \ 'Does anyone know what is the problem and how to correction it?',

test_quickfix.vim
(1 of 21): " Go back two lists

test_quickfix.vim
(1 of 7): " Add three quickfix/location lists

error list 8 of 10; 24 errors     :vimgrep one test_quickfix.vim

error list 9 of 10; 21 errors     :vimgrep two test_quickfix.vim

error list 10 of 10; 7 errors     :vimgrep three test_quickfix.vim

test_quickfix.vim
(1 of 24): \ 'Does anyone know what is the problem and how to correction it?',

test_quickfix.vim
(1 of 21): " Go back two lists

test_quickfix.vim
(1 of 7): " Add three quickfix/location lists

error list 8 of 10; 24 errors     :lvimgrep one test_quickfix.vim

error list 9 of 10; 21 errors     :lvimgrep two test_quickfix.vim

error list 10 of 10; 7 errors     :lvimgrep three test_quickfix.vim

Executing Test_switchbuf()
"Xqftestfile1" 20L, 131C220L, 131C1" line 1 of 20 --5%-- col 1

(1 of 6): Line5

(2 of 6): Line6
"Xqftestfile2" line 1 of 20 --5%-- col 1

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16

(1 of 6): Line5

(2 of 6): Line6

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16
"Xqftestfile1" 20L, 131C220L, 131C

(1 of 6): Line5

(2 of 6): Line6

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16
"Xqftestfile1" 20L, 131C

(1 of 6): Line5

(2 of 6): Line6
"Xqftestfile2" 20L, 131C

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16
"Xqftestfile1" 20L, 131C

(1 of 6): Line5

(2 of 6): Line6
"Xqftestfile2" 20L, 131C

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16

Already only one window
"Xqftestfile1" 20L, 131C220L, 131C320L, 131C

Executing Test_two_windows()
"one" [New File]two

Executing Test_vimgreptitle()

file
"file" [New File]

Cannot open file "file"
"test_quickfix.res" [New File][New] 0L, 0C written

Executed 36 tests
"messages" 315L, 8612C354L, 9693C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_ruby.vim
[?1h="test_ruby.vim" 34 lines, 820 characters

Executing Test_ruby_change_buffer()/^1

Executing Test_ruby_evaluate_dict()

{"a"=>"foo", "b"=>123}

Executing Test_ruby_evaluate_list()/^2
search hit BOTTOM, continuing at TOP
"test_ruby.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"354L, 9693C360L, 9839C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_search.vim
[?1h="test_search.vim" 281 lines, 8457 characters

Executing Test_search_cmdline()/foobar
/the
search hit BOTTOM, continuing at TOP/thes
/foobar
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
?the
?the
?the
?the
?the
?the
?the
?the
?the
?the
search hit TOP, continuing at BOTTOM/thes
/thes
/thes
/thes
/thei
/theis
/theiss
/themthe\>
Executing Test_search_cmdline2()/the
/the
/the
/the
/the
/the
/the
/foo
6 their
  7 the
  8 them
  9 these
 10 foobar
[No Name] [+]                                                                   " Test for the search command

func Test_search_cmdline()
  if !exists('+incsearch')
    return
  endif
  " need to disable char_avail,
  " so that expansion of commandline works
  call test_disable_char_avail(1)
  new
  call setline(1, ['  1', '  2 these', '  3 the', '  4 their', '  5 there', '  66 their', '  7 the', '  8 them', '  9 these', ' 10 foobar'])
  " Test 1
  " CTRL-N / CTRL-P skips through the previous search history
  set noincsearch
  :1
test_search.vim                                                                 Executing Test_use_sub_pat()
"test_search.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"360L, 9839C366L, 9973C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_signs.vim
[?1h="test_signs.vim" 199 lines, 6383 characters

Executing Test_sign()
"foo" [New File]a  b  c xd                                                                                 ~
[No Name] [+]                                                                   " Test for signs

if !has('signs')
  finish
endif
test_signs.vim                                                                  ~
~
~
~
foo                                                                               a
  b
x c
  d
[No Name] [+]                                                                     a  bx c  d  ~"foo" [New file] --No lines in buffer--
"barF
Executing Test_sign_completion():sign ...define jump list place undefine unplace
:"sign define jump list place undefine unplace
:"
:sign define Sign ...icon= linehl= text= texthl=
:"sign define Sign icon= linehl= text= texthl=
:"
:sign define Sign linehl=Spell...Bad SpellCap SpellLocal SpellRare
:"sign define Sign linehl=SpellBad SpellCap SpellLocal SpellRare
:"
:sign define Sign icon=Xsig...nOne XsignTwo
:"sign define Sign icon=XsignOne XsignTwo
:"
:sign undefine ...Sign1 Sign2
:"sign undefine Sign1 Sign2
:"
:sign place 1 ...buffer= file= line= name=
:"sign place 1 buffer= file= line= name=
:"
:sign place 1 name=...Sign1 Sign2
:"sign place 1 name=Sign1 Sign2
:"
:sign unplace 1 ...buffer= file=
:"sign unplace 1 buffer= file=
:"
:sign list ...Sign1 Sign2
:"sign list Sign1 Sign2
:"
:sign jump 1 ...buffer= file=
:"sign jump 1 buffer= file=
:"

Executing Test_sign_delete_buffer()

Executing Test_sign_invalid_commands()

Executing Test_sign_undefine_still_placed()
"foobar" [New File]test_signs.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"366L, 9973C374L, 10186C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_smartindent.vim
[?1h="test_smartindent.vim" 14 lines, 376 characters

Executing Test_nosmartindent()/some
search hit BOTTOM, continuing at TOP"test_smartindent.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"374L, 10186C378L, 10261C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_startup.vim
[?1h="test_startup.vim" 185 lines, 4581 characters

Executing Test_after_comes_later()[?1l>[?1h=1: /<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xbefore.vim

  2: /<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xhere/plugin/here.vim

  3: /<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xhere/pack/foo/start/fo

obar/plugin/foo.vim

  4: /<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xafter/plugin/later.vim

  5: /<<PKGBUILDDIR>>/src/vim-gtk/testdir/Xafter.vim
[?1l>
[?1h=
Executing Test_compatible_args()[?1l>[?1h=Error detected while processing /<<PKGBUILDDIR>>/src/vim-gtk/test

dir/Xafter.vim:

line    2:

E528: Must specify a ' value: viminfo+=nviminfo
[?1l>
[?1h=[?1l>[?1h=[?1l>[?1h=
Executing Test_file_args()[?1l>[?1h=[?1l>[?1h=[?1l>[?1h="one" [New File]
[?1l>
[?1h=[?1l>[?1h="one" [New File]
[?1l>
3 files to edit
[?1h=[?1l>[?1h="one" [New File]
[?1l>
2 files to edit
[?1h=[?1l>[?1h="one" [New File]
[?1l>
4 files to edit
[?1h=
Executing Test_help_arg()[?1l>[?1h=
Executing Test_read_stdin()[?1l>[?1h="-stdin-" 1 line, 10 characters"Xtestout" [New File] 1 line, 10 characters written
[?1l>
Vim: Reading from stdin...
[?1h=
Executing Test_startup_script()

Executing Test_startuptime()[?1l>[?1h="one" [New File]
[?1l>
[?1h="test_startup.res" [New File][New] 0L, 0C written

Executed 7 tests
"messages"378L, 10261C388L, 10512C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_startup_utf8.vim
[?1h="test_startup_utf8.vim" 64 lines, 1366 characters

Executing Test_read_fifo_utf8()[?1l>[?1h="/dev/fd/63" [readonly] 2 lines, 24 characters

"Xtestout" [New File] 2 lines, 24 characters written
[?1l>
[?1h=
Executing Test_read_stdin_utf8()[?1l>[?1h="-stdin-" 2 lines, 24 characters"Xtestout" [New File] 2 lines, 24 characters written
[?1l>
Vim: Reading from stdin...
[?1h="test_startup_utf8.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"388L, 10512C393L, 10623C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_stat.vim
[?1h="test_stat.vim" 64 lines, 1598 characters

Executing Test_checktime()
"Xtest.tmp" 1L, 13C1L, 25C

Executing Test_existent_directory()

Executing Test_existent_file()

Executing Test_nonexistent_file()

Executing Test_win32_symlink_dir()
"test_stat.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"393L, 10623C401L, 10824C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_substitute.vim
[?1h="test_substitute.vim" 41 lines, 1151 characters

Executing Test_multiline_subst()

search hit BOTTOM, continuing at TOP
3 substitutions on 3 lines
3 substitutions on 2 lines
"test_substitute.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"401L, 10824C405L, 10900C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_syntax.vim
[?1h="test_syntax.vim" 82 lines, 1624 characters

Executing Test_syn_iskeyword()CREATE TABLE FOOBAR(
    DLTD_BY VARCHAR2(100)
);

~
~
~
~
~
~
~
[No Name] [+]                                                                   " Test for syntax and syntax iskeyword option

if !has("syntax")
  finish
endif

func GetSyntaxItem(pat)
  let c = ''
  let a = ['a', getreg('a'), getregtype('a')]
  0
test_syntax.vim                                                                 
syntax iskeyword not set

syntax iskeyword @,48-57,_,192-255CREATE TABLE FOOBAR(
    DLTD_BY VARCHAR2(100)
);

~
~
~
~
~
~
~
[No Name] [+]                                                                   " Test for syntax and syntax iskeyword option

if !has("syntax")
  finish
endif

func GetSyntaxItem(pat)
  let c = ''
  let a = ['a', getreg('a'), getregtype('a')]
  0
test_syntax.vim                                                                 
syntax iskeyword not set

Executing Test_syntax_after_reload()
"Xsomefile" [New File][New] 2L, 12C written
"other" [New File]Xsomefile" 2L, 12C
"test_syntax.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"405L, 10900C410L, 11008C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_textobjects.vim
[?1h="test_textobjects.vim" 43 lines, 946 characters

Executing Test_inner_block_with_cpo_M_left_backslash()

Executing Test_inner_block_with_cpo_M_right_backslash()

Executing Test_inner_block_without_cpo_M()
"test_textobjects.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"410L, 11008C416L, 11207C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_undo.vim
[?1h="test_undo.vim" 237 lines, 6322 characters

Executing Test_U_command()Executing Test_global_local_undolevels()
"one" [New File]
6 fewer lines; before #8  0 seconds ago
"two" [New File]
3 fewer lines; before #11  0 seconds ago
"three" [New File]
Executing Test_insert_expr()=setline('.','1234')
1 line less; before #4  0 seconds ago3=setline('.','1234')
1 line less; before #7  0 seconds ago=string(123)
1 line less; before #9  0 seconds ago

Executing Test_undo_del_chars()
1 change; before #3  0 seconds ago21

1 change; before #6  1 seconds ago5
4s; after #3
1; before #21

3 changes; after #6  1 seconds ago3 changes; before #7  0 seconds ago

3 changes; before #1  3 seconds ago

3 changes; after #6  3 seconds ago

3 changes; after #9  0 seconds ago

Executing Test_undo_write()
"Xtest" [New File]"Xtest" [New] 1L, 12C written"Xtest" 3L, 20C written1 line less; before #4  0 seconds ago

2 fewer lines; before #2  0 seconds ago

1 line less; before #1  0 seconds ago

1 more line; after #1  0 seconds ago

2 more lines; after #3  0 seconds ago

1 more line; after #4  0 seconds ago

Executing Test_undojoin()1 line less; before #2  0 seconds ago2 fewer lines; before #3  0 seconds ago

Executing Test_undolist()1 change; before #2  0 seconds agoExecuting Test_undotree()
1 change; before #2  0 seconds ago
"Xtest" [New] 1L, 4C written
"test_undo.res" [New File][New] 0L, 0C written

Executed 8 tests
"messages"416L, 11207C427L, 11480C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_usercommands.vim
[?1h="test_usercommands.vim" 104 lines, 2527 characters

Executing Test_Ambiguous()

Executing Test_CmdUndefined()

Executing Test_cmdmods()
"test_usercommands.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"427L, 11480C433L, 11608C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_viminfo.vim
[?1h="test_viminfo.vim" 495 lines, 13092 characters

Executing Test_cmdline_history()

Executing Test_cmdline_history_order()

Executing Test_global_vars()

Executing Test_oldfiles()

Executing Test_read_and_write()

Executing Test_viminfo_bad_syntax()

Executing Test_viminfo_encoding()
"Xviminfo" [converted] 74L, 3322C

Executing Test_viminfo_file_mark_tabclose()
"Xtestfileintab" [New File]viminfo" 84L, 3497C

Executing Test_viminfo_file_marks()
"ten" [New File]again" [New File]
"thirty" [New File]
"twen
"again" [New File]fourty" [New File]
"Xviminfo" 91L, 3295C

Executing Test_viminfo_jumplist()
"testbuf" [New File]/20
/30
/last pos
/15
/last pos
?30
/15
/last pos
?30
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here

Executing Test_viminfo_marks()
"bufa" [New File]b

Executing Test_viminfo_registers()
"test_viminfo.res" [New File][New] 0L, 0C written

Executed 12 tests
"messages" 433L, 11608C448L, 12059C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_viml.vim
[?1h="test_viml.vim" 1245 lines, 29827 characters

Error detected while processing /<<PKGBUILDDIR>>/src/vim-gtk/test

dir/test_viml.vim:

line  432:

E492: Not an editor command: ^Iasdf

line  444:

E492: Not an editor command: ^Iasdf

line  452:

E492: Not an editor command: asdf

line  455:

E492: Not an editor command: asdf | Xpath 'p'

Error detected while processing function T8_F:

line    5:

E492: Not an editor command: ^I    asdf

line    7:

E492: Not an editor command: ^I    asdf | Xpath 'd'

line   19:

E492: Not an editor command: ^I    asdf

line   21:

E492: Not an editor command: ^I    asdf | Xpath 'l'

line   29:

E121: Undefined variable: novar

E15: Invalid expression: novar^I^I" returns (default return value 0)

Error detected while processing function T8_G:

line    5:

E492: Not an editor command: ^I    asdf^I^I" returns -1

Error detected while processing function T8_H:

line    5:

E492: Not an editor command: ^I    asdf^I^I" returns -1

Error detected while processing function F[2]..G[2]..H[2]..I:

line    2:

E492: Not an editor command:     asdf^I^I" error

Error detected while processing /<<PKGBUILDDIR>>/src/vim-gtk/test

dir/test_viml.vim:

line  663:

E15: Invalid expression: | strlen("\"") | Xpath 'j'

E15: Invalid expression: 1 ||| strlen("\"") | Xpath 'j'

line  673:

E15: Invalid expression: | strlen("\"") | Xpath 'n'

E15: Invalid expression: 1 ||| strlen("\"") | Xpath 'n'

line  682:

E15: Invalid expression: | strlen("\"") | Xpath 'r'

E15: Invalid expression: 1 ||| strlen("\"") | Xpath 'r'

line  717:

E492: Not an editor command:     asdf^I^I" error

1
line  787:

E492: Not an editor command:     asdf^I^I" error

line  794:

E492: Not an editor command:     asdf^I^I" error

line  817:

E121: Undefined variable: asdf

E15: Invalid expression: asdf

line  828:

E121: Undefined variable: asdf

E15: Invalid expression: asdf | Xpath 'f' | endwhile | Xpath 'g'

Error detected while processing function F:

line    8:

E121: Undefined variable: g:boolvar

E15: Invalid expression: g:boolvar^I" possibly undefined

E121: Undefined variable: g:boolvar

E15: Invalid expression: g:boolvar | Xpath 'd' | else | Xpath 'e' | endif

Executing Test_arg_abort()

Executing Test_braces_skipped()

Executing Test_curlies()

Executing Test_defining_functions()

Executing Test_echo_and_string()

foo bar

'foo bar'

-1.2

-1.2

string

function('string')

{'a': {...}}

{'a': {...}}

[[...]]

[[...]]

[{}, {}, {}]

[{}, {}, {}]

{'a': {}, 'b': {}}

{'a': {}, 'b': {}}

[[], [], []]

[[], [], []]

{'a': [], 'b': []}

{'a': [], 'b': []}

[{'one': 'yes', 'two': 'yes', 'three': 'yes'}, {...}, {...}]

[{'one': 'yes', 'two': 'yes', 'three': 'yes'}, {'one': 'yes', 'two': 'yes', 'th

ree': 'yes'}, {'one': 'yes', 'two': 'yes', 'three': 'yes'}]

{'a': {'one': 'yes', 'two': 'yes', 'three': 'yes'}, 'b': {...}}

{'a': {'one': 'yes', 'two': 'yes', 'three': 'yes'}, 'b': {'one': 'yes', 'two':

'yes', 'three': 'yes'}}

[[1, 2, 3], [...], [...]]

[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

{'a': [1, 2, 3], 'b': [...]}

{'a': [1, 2, 3], 'b': [1, 2, 3]}

Executing Test_endwhile_function()

Executing Test_endwhile_script()

   function T1_F()

1      Xpath 'a'

2      let first = 1

3      while 1

4Xpath 'b'

5if first

6Xpath 'c'

7let first = 0

8break

9else

10Xpath 'd'

11return

12endif

13     endwhile

   endfunction"/tmp/v6H2yJe/0" [noeol] 16L, 299C
13 substitutions on 13 lines
Pattern not found: ^\s*$
"/tmp/v6H2yJe/0" 13L, 248C written
"test_viml.vim" 1245L, 29827C
   function T1_G()
1      Xpath 'h'
2      let first = 1
3      while 1
4Xpath 'i'
5if first
6Xpath 'j'
7let first = 0
8break
9else
10Xpath 'k'
11return

12endif

13if 1    " unmatched :if

14     endwhile

   endfunction"/tmp/v6H2yJe/1" [noeol] 17L, 334C
14 substitutions on 14 lines
Pattern not found: ^\s*$
"/tmp/v6H2yJe/1" 14L, 281C written
"test_viml.vim" 1245L, 29827C
Executing Test_error_in_function()
Executing Test_error_in_script()
Executing Test_expr_parsing()
Executing Test_finish()
   function T4_F()
1      if 1
2Xpath 'a'
3let loops = 3
4while loops > 0"    3:  2:     1:
5Xpath 'b' . loops
6if (loops == 2)
7Xpath 'c' . loops
8return

9Xpath 'd' . loops

10endif

11Xpath 'e' . loops

12let loops = loops - 1

13endwhile

14Xpath 'f'

15     else

16Xpath 'g'

17     endif

   endfunction"/tmp/v6H2yJe/2" [noeol] 20L, 504C
17 substitutions on 17 lines
Pattern not found: ^\s*$
"/tmp/v6H2yJe/2" 17L, 445C written
"test_viml.vim" 1245L, 29827C
Executing Test_func_abort()
Executing Test_if_bar_fail()
Executing Test_if_fail()
Executing Test_if_while()
Executing Test_num64()
Executing Test_return()
Executing Test_skip()
Executing Test_type()
Executing Test_while_fail()
"test_viml.res" [New File][New] 0L, 0C written
Executed 20 tests
"messages" 448L, 12059C471L, 12668C written[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_visual.vim
[?1h="test_visual.vim" 17 lines, 339 characters

Executing Test_block_shift_multibyte()
"test_visual.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"471L, 12668C475L, 12746C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_window_id.vim
[?1h="test_window_id.vim" 94 lines, 2575 characters

Executing Test_win_getid()
"one" [New File]twohree" [New File]
"four" [New File]ive
"test_window_id.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"475L, 12746C479L, 12815C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_writefile.vim
[?1h="test_writefile.vim" 16 lines, 490 characters

Executing Test_WriteFile()
"test_writefile.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"479L, 12815C483L, 12884C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_alot_latin.vim
[?1h="test_alot_latin.vim" 7 lines, 280 characters

Executing Test_eow_with_optional()

Executing Test_equivalence_re1()

Executing Test_equivalence_re2()

Executing Test_nested_backrefs()

Executing Test_recursive_substitute()
"test_alot_latin.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"[converted] 483L, 12884C[converted] 491L, 13100C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_alot_utf8.vim
[?1h="test_alot_utf8.vim" 11 lines, 440 characters[?1l>Executing Test_classes_re1()

Executing Test_classes_re2()

Executing Test_equivalence_re1()

Executing Test_equivalence_re2()

Executing Test_match_using_multibyte_conceal_char()#ˑThisˑisˑaˑTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " A series of tests that can run in one Vim invocation.
" This makes testing go faster, since Vim doesn't need to restart.

" These tests use utf8 'encoding'.  Setting 'encoding' is already done in
" runtest.vim.  Checking for the multi_byte feature is in the individual
" files, so that they can be run by themselves.

source test_expr_utf8.vim
source test_matchadd_conceal_utf8.vim
source test_regexp_utf8.vim
test_alot_utf8.vim                                                              Executing Test_source_latin()
"Xscript"[New] 2L, 44C written
Executing Test_source_utf8()"Xscript"[New] 2L, 42C written:%s/àx/--à1234--/g
:%s/Àx/--À1234--/g

Executing Test_strcharpart()

Executing Test_strgetchar()
"test.log" 8L, 363C12L, 547C written

Executed 9 tests

1 FAILED:
"messages" 491L, 13100C506L, 13603C written

VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_alot.vim
[?1h="test_alot.vim" 46 lines, 1183 characters

Executing Test_abbreviation()Executing Test_augroup_deleted()

W19: Deleting augroup that is still in use
Executing Test_augroup_warning()
W19: Deleting augroup that is still in useentering

Executing Test_auto_partial_rebind()

Executing Test_autocmd_bufunload_avoiding_SEGV_01()
"aa.txt" [New File]
"bb.txt" [New File]

Executing Test_autocmd_bufunload_avoiding_SEGV_02()
"a.txt" [New File]
"test_alot.vim" 46L, 1183C

Executing Test_autocmd_bufunload_with_tabnext()

Executing Test_autocmd_bufwinleave_with_tabfirst()
"a.txt" [New File]
Executing Test_bind_in_python()

Executing Test_break_undo()Executing Test_bufunload()

Executing Test_cancel_ptjump()

Already only one window:ptjump word
  # pri kind tagfile

  1 Fwordfile1

cmd1

  2 Fwordfile2

cmd2

Type number and <Enter> (empty cancels): 
"help.txt" [readonly] 225L, 8437C

Executing Test_caught_error_in_statusline()source test_messages.vim
source test_partial.vim
source test_popup.vim
source test_reltime.vim
source test_searchpos.vim
source test_set.vim
source test_sort.vim
source test_statusline.vim
source test_syn_attr.vim
source test_tabline.vim
source test_tabpage.vim
source test_tagcase.vim
source test_tagjump.vim
source test_timers.vim
source test_true_false.vim
source test_unlet.vim
source test_window_cmd.vim
source test_options.vim
new line here
Test3: text with a (parenthesis here
new line here

                                                                                Executing Test_caught_error_in_tabline()                                                                                source test_partial.vim
source test_popup.vim
source test_reltime.vim
source test_searchpos.vim
source test_set.vim
source test_sort.vim
source test_statusline.vim
source test_syn_attr.vim
source test_tabline.vim
source test_tabpage.vim
source test_tagcase.vim
source test_tagjump.vim
source test_timers.vim
source test_true_false.vim
source test_unlet.vim
source test_window_cmd.vim
source test_options.vim
new line here
Test3: text with a (parenthesis here
new line here

test_alot.vim                                                                   Executing Test_closure_counter()

Executing Test_closure_refcount()

Executing Test_closure_unlet()

Executing Test_color_names()

Executing Test_command_count_0()
"DoesNotExistEver" [New File]
Executing Test_command_count_1()

"a" [New File]

loading buffers

"b" [New File]

loading buffers

"c" [New File]

loading buffers

"d" [New File]

loading buffers

"e" [New File]

loading buffers
"c" [New File]beb

Executing Test_command_count_2()

"d" [New File]
"a

Already only one window
"x" [New File]
Already only one window

Executing Test_command_count_3()
"aaa" [New File]bbb
"ccc
"test_alot.vim" 46L, 1183C

2 buffers deleted

Executing Test_command_count_4()
"cc" [New File]
"dd" [New File]

"ee" [New File]
"aa

"bb" [New File]

"cc" [New File]

"dd" [New File]

"ee" [New File]
"cc

"ee" [New File]

"ff" [New File]

Executing Test_compare_null_dict()

Executing Test_compare_partials()

Executing Test_compl_vim_cmds_after_register_expr()=s:test_func()
Executing Test_cursorhold_insert()Executing Test_cursorhold_insert_ctrl_x()Executing Test_curswant_with_autocommand()
Executing Test_cycle_partial_job()

Executing Test_cyclic_dict_arg()

Executing Test_cyclic_list_arg()

Executing Test_delete_myself()

Executing Test_dict()

Executing Test_dir_delete()

Executing Test_early_bar()

Executing Test_empty_buffer()

Executing Test_equal()

Executing Test_ex_undo()
"ex-undo" [New File]
1 line less; before #3  0 seconds ago

1 line less; after #1  0 seconds ago

2 fewer lines; before #1  0 seconds ago

Executing Test_execute_list()

Executing Test_execute_string()

this

theend

something

Executing Test_existing()

Executing Test_expand()

Executing Test_feedkeys_x_with_empty_string()Executing Test_file_delete()
"Xfile" [New File][New] 2L, 4C written

Executing Test_file_perm()

Executing Test_filter()
"Xdoesnotmatch" [New File]
"Xwillmatch" [New File]ff" [New File]
Executing Test_filter_fails()

Executing Test_filter_map_dict_expr_funcref()

Executing Test_filter_map_dict_expr_string()

Executing Test_filter_map_list_expr_funcref()

Executing Test_filter_map_list_expr_string()

Executing Test_fnamemodify()
"test_alot.vim" 46L, 1183C

Executing Test_func_unref()

Executing Test_funcref()

0
Executing Test_function_in_dict()

Executing Test_function_with_funcref()

Executing Test_geeDEE()

Executing Test_gee_dee()

Executing Test_get_partial_items()

Executing Test_getreg_empty_list()

Executing Test_global_local_lispwords()

Executing Test_help_complete():h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...har...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...har...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col@en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col@en...ab'
:lh test-col@ab'
:leh test-col@ab'
:leth test-col@ab'
:let h test-col@ab'
:let sh test-col@ab'th test-col@ab'rh test-col@ab'=h test-col@ab''h test-col@ab'
:h test...-col@en...ab...har@en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col@en...ab...har@en...ab'
:lh test-char@ab'
:leh test-char@ab'
:leth test-char@ab'
:let h test-char@ab'
:let sh test-char@ab'th test-char@ab'rh test-char@ab'=h test-char@ab''h test-char@ab'
:h test...-col@en...ab...har@en...ab...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...@en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col...@en...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...@en...har...@en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col...@en...har...@en...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col@en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col@en...ab'
:lh test-col@ab'
:leh test-col@ab'
:leth test-col@ab'
:let h test-col@ab'
:let sh test-col@ab'th test-col@ab'rh test-col@ab'=h test-col@ab''h test-col@ab'
:h test...-col@en...ab...ja'
:lh test-col@ja'
:leh test-col@ja'
:leth test-col@ja'
:let h test-col@ja'
:let sh test-col@ja'th test-col@ja'rh test-col@ja'=h test-col@ja''h test-col@ja'
:h test...-col@en...ab...ja...har@en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col@en...ab...ja...har@en...ab'
:lh test-char@ab'
:leh test-char@ab'
:leth test-char@ab'
:let h test-char@ab'
:let sh test-char@ab'th test-char@ab'rh test-char@ab'=h test-char@ab''h test-char@ab'
:h test...-col@en...ab...ja...har@en...ab...ja'
:lh test-char@ja'
:leh test-char@ja'
:leth test-char@ja'
:let h test-char@ja'
:let sh test-char@ja'th test-char@ja'rh test-char@ja'=h test-char@ja''h test-char@ja'
:h test...-col@en...ab...ja...har@en...ab...ja...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...@en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col...@en...ja'
:lh test-col@ja'
:leh test-col@ja'
:leth test-col@ja'
:let h test-col@ja'
:let sh test-col@ja'th test-col@ja'rh test-col@ja'=h test-col@ja''h test-col@ja'
:h test...-col...@en...ja...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...@en...ja...har...@en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col...@en...ja...har...@en...ja'
:lh test-char@ja'
:leh test-char@ja'
:leth test-char@ja'
:let h test-char@ja'
:let sh test-char@ja'th test-char@ja'rh test-char@ja'=h test-char@ja''h test-char@ja'
:h test...-col...@en...ja...har...@en...ja...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...@ja'
:lh test-col@ja'
:leh test-col@ja'
:leth test-col@ja'
:let h test-col@ja'
:let sh test-col@ja'th test-col@ja'rh test-col@ja'=h test-col@ja''h test-col@ja'
:h test...-col...@ja...en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col...@ja...en...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...@ja...en...har...@ja'
:lh test-char@ja'
:leh test-char@ja'
:leth test-char@ja'
:let h test-char@ja'
:let sh test-char@ja'th test-char@ja'rh test-char@ja'=h test-char@ja''h test-char@ja'
:h test...-col...@ja...en...har...@ja...en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col...@ja...en...har...@ja...en...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'

Executing Test_help_tagjump()
"help.txt" [readonly] 225L, 8437C
"options.txt" [readonly] 8732L, 369923Cline 7646 of 8732 --87%-- col 7-49 ((5) of 6)
"eval.txt" [readonly][converted] 10590L, 407237C line 2405 of 10590 --22%-- col 1 ((5) of 6)
"options.txt" [readonly] line 1320 of 8732 --15%-- col 4-25 ((5) of 6)
"cmdline[readonly] 1144L, 46758C

Executing Test_if()

Executing Test_info()

Executing Test_invalid()

Executing Test_invalid_submatch()

Executing Test_join_with_count()

Executing Test_keyword_jump()
"Xtestfile" 9L, 141C

Executing Test_lambda_call_lambda_from_lambda()

Executing Test_lambda_capture_by_reference()

Executing Test_lambda_circular_reference()

Executing Test_lambda_closure_counter()

Executing Test_lambda_combination()

Executing Test_lambda_delfunc()

Executing Test_lambda_do_not_share_local_variable()

Executing Test_lambda_fails()

Executing Test_lambda_feature()

Executing Test_lambda_refer_local_variable_from_other_scope()

Executing Test_lambda_scope()

Executing Test_lambda_share_scope()

Executing Test_lambda_side_effect()

Executing Test_lambda_with_a_var()

Executing Test_lambda_with_filter()

Executing Test_lambda_with_map()

Executing Test_lambda_with_partial()

Executing Test_lambda_with_sort()

Executing Test_lambda_with_timer()

1
2
3
4
5
6
7
Executing Test_load_menu()

Executing Test_loop_over_null_list()

Executing Test_map_ctrl_c_insert()Executing Test_map_ctrl_c_visual():'<,'>$put ='vmap works'

Executing Test_map_cursor()1 line less; before #8  0 seconds ago

Executing Test_map_feedkeys():call feedkeys(".", "in")
:call feedkeys(".", "in")
Executing Test_map_langmap():call append(line('$'), '+')

Executing Test_map_meta_quotes()Executing Test_match()

abcdefghijklmnopq
TEST2: CTRL-C |<ctrl-c>A|
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   abcdΣabcdef
TEST2: CTRL-C |<ctrl-c>A|
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   Executing Test_matchaddpos()12345
NP
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   12345 
NP 
vmap works 
 
Test1: text with a (here some more text) 
Test1: text with a (here some more text) 
 
 
Test2: text wit a (here some more text [und undo]) 
fooc d 
fooc d 
+ 
+ 
bbbb 
bbbb 
cccc 
bbbb 
+ 
-foo- 
~
~
~
[No Name] [+]                                                                   012345 
NP 
vmap works 
 
Test1: text with a (here some more text) 
Test1: text with a (here some more text) 
 
 
Test2: text wit a (here some more text [und undo]) 
fooc d 
fooc d 
+ 
+ 
bbbb 
bbbb 
cccc 
bbbb 
+ 
-foo- 
~
~
~
[No Name] [+]                                                                   Executing Test_matchaddpos_using_negative_priority()x
NP
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   x
NP
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   x
-1 match priority
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   Executing Test_matchstrpos()

Executing Test_max_min_errors()

Executing Test_messages()

hello0x
-1 match priority
vmap works   hello1234567898

hello9xhello9
Executing Test_missing_attr()

Executing Test_move_cursor()

Executing Test_named_function_closure()

Executing Test_no_type_checking()

Executing Test_noinsert_complete()=s:complTest1()
=s:complTest2()
Executing Test_non_zero_arg()

Executing Test_not_existing()

Executing Test_not_lamda()

Executing Test_oneshot()

Executing Test_option_value()

Executing Test_options()
"option-window" [New File]

Executing Test_partial_args()

Executing Test_partial_dict()

Executing Test_partial_exists()

Executing Test_partial_implicit()

Executing Test_partial_string()

Executing Test_path_keep_commas()

Executing Test_paused()

Executing Test_popup_complete()=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
Scanning: [No Name]test_alot.vima.txtDoesNotExistEverabcdxaabbcceeffex-undoXfiletestfile tags.=ListMonths()
=ListMonths()
 =ListMonths()

+=ListMonths()

+      =ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()

  =ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
  =ListMonths()
o-=ListMonths()
=ListMonths()
=ListMonths()
Executing Test_popup_complete2()=ListMonths()
Executing Test_popup_completion_insertmode()=ListMonths()
=ListMonths()
=ListMonths()
       
=ListMonths()
=ListMonths()
Executing Test_printf_64bit()

Executing Test_printf_errors()

0
0
1
0
0
Executing Test_printf_float()

0.000000

Executing Test_printf_misc()

Executing Test_printf_spec_b()

Executing Test_printf_spec_s()

Executing Test_ptag_with_notagstack()

Executing Test_read_only()

Executing Test_recursive_delete()
"Xdir1/Xfile" [New File][New] 2L, 4C writtensubdir/Xfile" [New] 2L, 4C written

Executing Test_redefine_dict_func()

Executing Test_ref_job_partial_dict()

Executing Test_reltime()

Executing Test_repeat_many()

Executing Test_repeat_three()

Executing Test_retain_partial()

Executing Test_script_function_in_dict()

Executing Test_script_function_in_dict_arg()

Executing Test_searchpos()
"one" [New File]
Executing Test_set_add()

Executing Test_set_backslash()

Executing Test_set_reg_null_list()

Executing Test_set_tagcase()

Executing Test_setmatches()

Executing Test_signcolumn()

Executing Test_sort_default()

Executing Test_sort_float()

Executing Test_sort_nested()

Executing Test_sort_numbers()

Executing Test_sort_numeric()

Executing Test_sort_strings()

Executing Test_special_char()

Executing Test_statusline_will_be_disabled_with_error()x
-1 match priority
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
                                                                                Executing Test_stop_all_in_callback()

Executing Test_stop_in_callback()

Executing Test_stopall()

Executing Test_strcharpart()

Executing Test_strgetchar()

Executing Test_substitute_expr()

Executing Test_substitute_expr_arg()

Executing Test_symlink_delete()
"Xfile" [New File][New] 2L, 4C written[?1l>[?1h=
Executing Test_symlink_dir_delete()[?1l>[?1h=
Executing Test_symlink_recursive_delete()
"Xdir3/Xfile" [New File][New] 2L, 4C writtensubdir/Xfile" [New] 2L, 4C written
"Xdir4/Xfile" [New] 2L, 4C written[?1l>[?1h=
Executing Test_tabline_will_be_disabled_with_error()                                                                                x
-1 match priority
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
[No Name]                                                                       Executing Test_tabnext_on_buf_unload1()

Executing Test_tabnext_on_buf_unload2()

"x" [Not edited] --No lines in buffer-- ((5) of 6)
"y" [New File]
Executing Test_tabpage()
"Xtestfile" [New File]
2 fewer lines; before #1  0 seconds ago
"test1" [New File]newfile" [New File]
"test1" [New File]file] --No lines in buffer--

Executing Test_tabpage_with_autocmd()

Executing Test_tabpage_with_tab_modifier()
"help.txt" [readonly] line 1 of 225 --0%-- col 1

"ff" [New File]

Executing Test_tagcase()
"Xtext" [New File]
Executing Test_three_windows()
"Xtestje1" [New File][New] 1L, 8C written2" [New File][New] 1L, 8C written3" [New File][New] 1L, 8C written11L, 8C

"Xtestje3" 1L, 8C21L, 8C11L, 8C

"Xanother" [New File]
"Xtestje11L, 8C
"Xanother" [New File]

Already only one window
"help.txt" [readonly] 225L, 8437C

Executing Test_tostring()

Executing Test_true_false_arg()[?1l>[?1h=[?1l>[?1h=[?1l>[?1h=[?1l>[?1h=
"colored" [New File]

Executing Test_valid()

Executing Test_version()

Executing Test_vim_did_enter()

Executing Test_whichwrap()

Executing Test_win_tab_autocmd()

"somefile" [New File]

Executing Test_window_cmd_cmdwin_with_vsp()

Executing Test_window_cmd_ls0_with_split()

Executing Test_window_cmd_wincmd_gf()
"test_gf.txt" 0L, 0C
W19: Deleting augroup that is still in use
Executing Test_with_directories()"Xdir1/file" [New File]
"Xdir1/file" [New] 2L, 4C written

"Xdir3/Xdir4/file" [New] 2L, 4C written2L, 4C
"Xdir?/*/nofile" [New DIRECTORY]
"foo" [New File]Executing Test_with_partial_callback()tilde()rong_arguments()
"test.log" 12L, 547C

"test.log" 40L, 2933C written
Executed 188 tests4 FAILED:"messages" 506L, 13603C

"messages" 724L, 22313C written
[?1l>


From test_arglist.vim:
Executing Test_argadd()
Executing Test_argc()
Executing Test_argdelete()
Executing Test_argedit()
Executing Test_argidx()
Executing Test_arglist_autocmd()
Executing Test_arglistid()
Executing Test_argpos()
Executing Test_argument()
Executing Test_argv()
Executing Test_zero_argadd()
Executed 11 tests

From test_assert.vim:
Executing Test_assert_equal()
Executing Test_assert_exception()
Executing Test_assert_fail_fails()
Executing Test_assert_false()
Executing Test_assert_inrange()
Executing Test_assert_notequal()
Executing Test_assert_true()
Executing Test_compare_fail()
Executing Test_match()
Executing Test_notmatch()
Executing Test_user_is_happy()
Executing Test_wrong_error_type()
Executed 12 tests

From test_autochdir.vim:
Executing Test_set_filename()
Executed 1 test

From test_backspace_opt.vim:
Executing Test_backspace_option()
Executed 1 test

From test_bufwintabinfo.vim:
Executing Test_get_buf_options()
Executing Test_get_win_options()
Executing Test_getbufwintabinfo()
Executed 3 tests

From test_cdo.vim:
Executing Test_cdo()
Executing Test_ldo()
Executed 2 tests

From test_channel.vim:
Executed 0 test

From test_charsearch.vim:
Executing Test_charsearch()
Executing Test_search_cmds()
Executed 2 tests

From test_cmdline.vim:
Executing Test_complete_list()
Executing Test_complete_tab()
Executing Test_complete_wildmenu()
Executing Test_expand_star_star()
Executing Test_getcompletion()
Executed 5 tests

From test_crypt.vim:
Executing Test_crypt_blowfish()
Executing Test_crypt_blowfish2()
Executing Test_crypt_zip()
Executing Test_head_only_2()
Executing Test_head_only_3()
Executing Test_uncrypt_blowfish()
Executing Test_uncrypt_blowfish2()
Executing Test_uncrypt_zip()
Executed 8 tests

From test_cscope.vim:
Executed 0 test

From test_diffmode.vim:
Executing Test_diff_fold_sync()
Executing Test_diffget_diffput()
Executing Test_diffoff()
Executing Test_filler_lines()
Executing Test_vert_split()
Executed 5 tests

From test_digraph.vim:
Executing Test_digraph_cmndline()
Executing Test_digraphs()
Executing Test_digraphs_option()
Executing Test_digraphs_output()
Executing Test_loadkeymap()
Executed 5 tests

From test_farsi.vim:
Executing Test_farsi_map()
Executing Test_farsi_toggle()
Executed 2 tests

From test_fnameescape.vim:
Executing Test_fnameescape()
Executed 1 test

From test_gf.vim:
Executing Test_gf_url()
Executed 1 test

From test_gn.vim:
Executing Test_gn_command()
Executed 1 test

From test_gui.vim:
Executed 0 test

From test_hardcopy.vim:
Executing Test_printheader_parsing()
Executing Test_printmbfont_parsing()
Executing Test_printoptions_parsing()
Executing Test_with_syntax()
Executed 4 tests

From test_history.vim:
Executing Test_History()
Executed 1 test

From test_hlsearch.vim:
Executing Test_hlsearch()
Executed 1 test

From test_increment.vim:
Executing Test_normal_increment_01()
Executing Test_normal_increment_02()
Executing Test_normal_increment_03()
Executing Test_visual_increment_01()
Executing Test_visual_increment_02()
Executing Test_visual_increment_03()
Executing Test_visual_increment_04()
Executing Test_visual_increment_05()
Executing Test_visual_increment_06()
Executing Test_visual_increment_07()
Executing Test_visual_increment_08()
Executing Test_visual_increment_09()
Executing Test_visual_increment_10()
Executing Test_visual_increment_11()
Executing Test_visual_increment_12()
Executing Test_visual_increment_13()
Executing Test_visual_increment_14()
Executing Test_visual_increment_15()
Executing Test_visual_increment_16()
Executing Test_visual_increment_17()
Executing Test_visual_increment_18()
Executing Test_visual_increment_19()
Executing Test_visual_increment_20()
Executing Test_visual_increment_21()
Executing Test_visual_increment_22()
Executing Test_visual_increment_23()
Executing Test_visual_increment_24()
Executing Test_visual_increment_25()
Executing Test_visual_increment_26()
Executing Test_visual_increment_27()
Executing Test_visual_increment_28()
Executing Test_visual_increment_29()
Executing Test_visual_increment_30()
Executing Test_visual_increment_31()
Executing Test_visual_increment_32()
Executing Test_visual_increment_33()
Executing Test_visual_increment_34()
Executing Test_visual_increment_35()
Executing Test_visual_increment_36()
Executing Test_visual_increment_37()
Executing Test_visual_increment_38()
Executed 41 tests

From test_increment_dbcs.vim:
Executing Test_increment_dbcs_1()
Executed 1 test

From test_job_fails.vim:
Executing Test_job_start_fails()
Executed 1 test

From test_json.vim:
Executing Test_js_decode()
Executing Test_js_encode()
Executing Test_json_decode()
Executing Test_json_encode()
Executed 4 tests

From test_langmap.vim:
Executing Test_langmap()
Executed 1 test

From test_man.vim:
Executing Test_g_ft_man_open_mode()
Executing Test_nomodifiable()
Executed 2 tests

From test_marks.vim:
Executing Test_Incr_Marks()
Executing Test_Restore_DelMark()
Executed 2 tests

From test_matchadd_conceal.vim:
Executing Test_clearmatches()
Executing Test_default_conceal_char()
Executing Test_matchadd_and_conceallevel_3()
Executing Test_matchadd_repeat_conceal_with_syntax_off()
Executing Test_simple_matchadd()
Executing Test_simple_matchadd_and_conceal()
Executing Test_syn_and_match_conceal()
Executing Test_using_matchaddpos()
Executed 8 tests
2 FAILED:
Found errors in Test_clearmatches():
function RunTheTest[9]..Test_clearmatches line 29: Expected 0 differs from 0
Found errors in Test_default_conceal_char():
function RunTheTest[9]..Test_default_conceal_char line 13: Expected 0 differs from 0
function RunTheTest[9]..Test_default_conceal_char line 26: Expected 0 differs from 0

From test_nested_function.vim:
Executing Test_nested_functions()
Executed 1 test

From test_netbeans.vim:
Executed 0 test

From test_normal.vim:
Executing Test_normal00_optrans()
Executing Test_normal01_keymodel()
Executing Test_normal02_selectmode()
Executing Test_normal02_selectmode2()
Executing Test_normal03_join()
Executing Test_normal04_filter()
Executing Test_normal05_formatexpr()
Executing Test_normal05_formatexpr_newbuf()
Executing Test_normal05_formatexpr_setopt()
Executing Test_normal06_formatprg()
Executing Test_normal07_internalfmt()
Executing Test_normal08_fold()
Executing Test_normal09_operatorfunc()
Executing Test_normal10_expand()
Executing Test_normal11_showcmd()
Executing Test_normal12_nv_error()
Executing Test_normal13_help()
Executing Test_normal14_page()
Executing Test_normal14_page_eol()
Executing Test_normal15_z_scroll_vert()
Executing Test_normal16_z_scroll_hor()
Executing Test_normal17_z_scroll_hor2()
Executing Test_normal18_z_fold()
Executing Test_normal19_z_spell()
Executing Test_normal20_exmode()
Executing Test_normal21_nv_hat()
Executing Test_normal22_zet()
Executing Test_normal23_K()
Executing Test_normal24_rot13()
Executing Test_normal25_tag()
Executing Test_normal26_put()
Executing Test_normal27_bracket()
Executing Test_normal28_parenthesis()
Executing Test_normal29_brace()
Executing Test_normal30_changecase()
Executing Test_normal31_r_cmd()
Executing Test_normal32_g_cmd1()
Executing Test_normal33_g_cmd2()
Executing Test_normal34_g_cmd3()
Executing Test_normal35_g_cmd4()
    Skipped
Executing Test_normal36_g_cmd5()
Executing Test_normal37_g_cmd6()
Executing Test_normal38_nvhome()
Executing Test_normal39_cw()
Executing Test_normal40_ctrl_bsl()
Executing Test_normal41_insert_reg()
Executing Test_normal42_halfpage()
Executing Test_normal43_textobject1()
Executing Test_normal44_textobjects2()
Executing Test_normal45_drop()
Executing Test_normal46_ignore()
Executing Test_normal47_autocmd()
    Skipped
Executing Test_normal47_visual_buf_wipe()
Executing Test_normal48_wincmd()
Executing Test_normal49_counts()
Executing Test_normal50_commandline()
Executing Test_normal51_FileChangedRO()
Executing Test_normal52_rl()
Executing Test_normal53_digraph()
Executing Test_normal54_Ctrl_bsl()
Executed 60 tests
SKIPPED Test_normal35_g_cmd4(): output of g< can't be tested currently
SKIPPED Test_normal47_autocmd(): not possible to test cursorhold autocmd while waiting for input in normal_cmd

From test_packadd.vim:
Executing Test_colorscheme()
Executing Test_colorscheme_completion()
Executing Test_helptags()
Executing Test_packadd()
Executing Test_packadd_completion()
Executing Test_packadd_noload()
Executing Test_packloadall()
Executing Test_runtime()
Executed 8 tests

From test_perl.vim:
Executing Test_SvREFCNT()
Executing Test_VIM_package()
Executing Test_change_buffer()
Executing Test_evaluate_list()
Executing Test_perldo()
Executing Test_perleval()
Executing Test_stdio()
Executed 7 tests

From test_quickfix.vim:
Executing Test_Autocmd()
Executing Test_adjust_lnum()
Executing Test_browse()
Executing Test_caddbuffer_to_empty()
Executing Test_cage()
Executing Test_cbottom()
Executing Test_cbuffer()
Executing Test_cexpr()
Executing Test_cfile()
Executing Test_cgetexpr_works()
Executing Test_clist()
Executing Test_cwindow()
Executing Test_duplicate_buf()
Executing Test_efm()
Executing Test_efm1()
Executing Test_efm2()
Executing Test_efm_dirstack()
Executing Test_errortitle()
Executing Test_grep()
Executing Test_helpgrep()
Executing Test_history()
Executing Test_invalid_efm()
Executing Test_locationlist()
Executing Test_locationlist_curwin_was_closed()
Executing Test_long_lines()
Executing Test_nomem()
Executing Test_qf_property()
Executing Test_qf_title()
Executing Test_quickfix_set_list_with_act()
Executing Test_quickfix_was_changed_by_autocmd()
Executing Test_setqflist()
Executing Test_setqflist_empty_middle()
Executing Test_setqflist_empty_older()
Executing Test_switchbuf()
Executing Test_two_windows()
Executing Test_vimgreptitle()
Executed 36 tests

From test_ruby.vim:
Executing Test_ruby_change_buffer()
Executing Test_ruby_evaluate_dict()
Executing Test_ruby_evaluate_list()
Executed 3 tests

From test_search.vim:
Executing Test_search_cmdline()
Executing Test_search_cmdline2()
Executing Test_use_sub_pat()
Executed 3 tests

From test_signs.vim:
Executing Test_sign()
Executing Test_sign_completion()
Executing Test_sign_delete_buffer()
Executing Test_sign_invalid_commands()
Executing Test_sign_undefine_still_placed()
Executed 5 tests

From test_smartindent.vim:
Executing Test_nosmartindent()
Executed 1 test

From test_startup.vim:
Executing Test_after_comes_later()
Executing Test_compatible_args()
Executing Test_file_args()
Executing Test_help_arg()
Executing Test_read_stdin()
Executing Test_startup_script()
Executing Test_startuptime()
Executed 7 tests

From test_startup_utf8.vim:
Executing Test_read_fifo_utf8()
Executing Test_read_stdin_utf8()
Executed 2 tests

From test_stat.vim:
Executing Test_checktime()
Executing Test_existent_directory()
Executing Test_existent_file()
Executing Test_nonexistent_file()
Executing Test_win32_symlink_dir()
Executed 5 tests

From test_substitute.vim:
Executing Test_multiline_subst()
Executed 1 test

From test_syntax.vim:
Executing Test_syn_iskeyword()
Executing Test_syntax_after_reload()
Executed 2 tests

From test_textobjects.vim:
Executing Test_inner_block_with_cpo_M_left_backslash()
Executing Test_inner_block_with_cpo_M_right_backslash()
Executing Test_inner_block_without_cpo_M()
Executed 3 tests

From test_undo.vim:
Executing Test_U_command()
Executing Test_global_local_undolevels()
Executing Test_insert_expr()
Executing Test_undo_del_chars()
Executing Test_undo_write()
Executing Test_undojoin()
Executing Test_undolist()
Executing Test_undotree()
Executed 8 tests

From test_usercommands.vim:
Executing Test_Ambiguous()
Executing Test_CmdUndefined()
Executing Test_cmdmods()
Executed 3 tests

From test_viminfo.vim:
Executing Test_cmdline_history()
Executing Test_cmdline_history_order()
Executing Test_global_vars()
Executing Test_oldfiles()
Executing Test_read_and_write()
Executing Test_viminfo_bad_syntax()
Executing Test_viminfo_encoding()
Executing Test_viminfo_file_mark_tabclose()
Executing Test_viminfo_file_marks()
Executing Test_viminfo_jumplist()
Executing Test_viminfo_marks()
Executing Test_viminfo_registers()
Executed 12 tests

From test_viml.vim:
Executing Test_arg_abort()
Executing Test_braces_skipped()
Executing Test_curlies()
Executing Test_defining_functions()
Executing Test_echo_and_string()
Executing Test_endwhile_function()
Executing Test_endwhile_script()
Executing Test_error_in_function()
Executing Test_error_in_script()
Executing Test_expr_parsing()
Executing Test_finish()
Executing Test_func_abort()
Executing Test_if_bar_fail()
Executing Test_if_fail()
Executing Test_if_while()
Executing Test_num64()
Executing Test_return()
Executing Test_skip()
Executing Test_type()
Executing Test_while_fail()
Executed 20 tests

From test_visual.vim:
Executing Test_block_shift_multibyte()
Executed 1 test

From test_window_id.vim:
Executing Test_win_getid()
Executed 1 test

From test_writefile.vim:
Executing Test_WriteFile()
Executed 1 test

From test_alot_latin.vim:
Executing Test_eow_with_optional()
Executing Test_equivalence_re1()
Executing Test_equivalence_re2()
Executing Test_nested_backrefs()
Executing Test_recursive_substitute()
Executed 5 tests

From test_alot_utf8.vim:
Executing Test_classes_re1()
Executing Test_classes_re2()
Executing Test_equivalence_re1()
Executing Test_equivalence_re2()
Executing Test_match_using_multibyte_conceal_char()
Executing Test_source_latin()
Executing Test_source_utf8()
Executing Test_strcharpart()
Executing Test_strgetchar()
Executed 9 tests
1 FAILED:
Found errors in Test_match_using_multibyte_conceal_char():
function RunTheTest[9]..Test_match_using_multibyte_conceal_char line 14: Expected 0 differs from 0

From test_alot.vim:
Executing Test_abbreviation()
Executing Test_augroup_deleted()
Executing Test_augroup_warning()
Executing Test_auto_partial_rebind()
Executing Test_autocmd_bufunload_avoiding_SEGV_01()
Executing Test_autocmd_bufunload_avoiding_SEGV_02()
Executing Test_autocmd_bufunload_with_tabnext()
Executing Test_autocmd_bufwinleave_with_tabfirst()
Executing Test_bind_in_python()
Executing Test_break_undo()
Executing Test_bufunload()
Executing Test_cancel_ptjump()
Executing Test_caught_error_in_statusline()
Executing Test_caught_error_in_tabline()
Executing Test_closure_counter()
Executing Test_closure_refcount()
Executing Test_closure_unlet()
Executing Test_color_names()
Executing Test_command_count_0()
Executing Test_command_count_1()
Executing Test_command_count_2()
Executing Test_command_count_3()
Executing Test_command_count_4()
Executing Test_compare_null_dict()
Executing Test_compare_partials()
Executing Test_compl_vim_cmds_after_register_expr()
Executing Test_cursorhold_insert()
Executing Test_cursorhold_insert_ctrl_x()
Executing Test_curswant_with_autocommand()
Executing Test_cycle_partial_job()
Executing Test_cyclic_dict_arg()
Executing Test_cyclic_list_arg()
Executing Test_delete_myself()
Executing Test_dict()
Executing Test_dir_delete()
Executing Test_early_bar()
Executing Test_empty_buffer()
Executing Test_equal()
Executing Test_ex_undo()
Executing Test_execute_list()
Executing Test_execute_string()
Executing Test_existing()
Executing Test_expand()
Executing Test_feedkeys_x_with_empty_string()
Executing Test_file_delete()
Executing Test_file_perm()
Executing Test_filter()
Executing Test_filter_fails()
Executing Test_filter_map_dict_expr_funcref()
Executing Test_filter_map_dict_expr_string()
Executing Test_filter_map_list_expr_funcref()
Executing Test_filter_map_list_expr_string()
Executing Test_fnamemodify()
Executing Test_func_unref()
Executing Test_funcref()
Executing Test_function_in_dict()
Executing Test_function_with_funcref()
Executing Test_geeDEE()
Executing Test_gee_dee()
Executing Test_get_partial_items()
Executing Test_getreg_empty_list()
Executing Test_global_local_lispwords()
Executing Test_help_complete()
Executing Test_help_tagjump()
Executing Test_if()
Executing Test_info()
Executing Test_invalid()
Executing Test_invalid_submatch()
Executing Test_join_with_count()
Executing Test_keyword_jump()
Executing Test_lambda_call_lambda_from_lambda()
Executing Test_lambda_capture_by_reference()
Executing Test_lambda_circular_reference()
Executing Test_lambda_closure_counter()
Executing Test_lambda_combination()
Executing Test_lambda_delfunc()
Executing Test_lambda_do_not_share_local_variable()
Executing Test_lambda_fails()
Executing Test_lambda_feature()
Executing Test_lambda_refer_local_variable_from_other_scope()
Executing Test_lambda_scope()
Executing Test_lambda_share_scope()
Executing Test_lambda_side_effect()
Executing Test_lambda_with_a_var()
Executing Test_lambda_with_filter()
Executing Test_lambda_with_map()
Executing Test_lambda_with_partial()
Executing Test_lambda_with_sort()
Executing Test_lambda_with_timer()
Executing Test_load_menu()
Executing Test_loop_over_null_list()
Executing Test_map_ctrl_c_insert()
Executing Test_map_ctrl_c_visual()
Executing Test_map_cursor()
Executing Test_map_feedkeys()
Executing Test_map_langmap()
Executing Test_map_meta_quotes()
Executing Test_match()
Executing Test_matchaddpos()
Executing Test_matchaddpos_using_negative_priority()
Executing Test_matchstrpos()
Executing Test_max_min_errors()
Executing Test_messages()
Executing Test_missing_attr()
Executing Test_move_cursor()
Executing Test_named_function_closure()
Executing Test_no_type_checking()
Executing Test_noinsert_complete()
Executing Test_non_zero_arg()
Executing Test_not_existing()
Executing Test_not_lamda()
Executing Test_oneshot()
Executing Test_option_value()
Executing Test_options()
Executing Test_partial_args()
Executing Test_partial_dict()
Executing Test_partial_exists()
Executing Test_partial_implicit()
Executing Test_partial_string()
Executing Test_path_keep_commas()
Executing Test_paused()
Executing Test_popup_complete()
Executing Test_popup_complete2()
Executing Test_popup_completion_insertmode()
Executing Test_printf_64bit()
Executing Test_printf_errors()
Executing Test_printf_float()
Executing Test_printf_misc()
Executing Test_printf_spec_b()
Executing Test_printf_spec_s()
Executing Test_ptag_with_notagstack()
Executing Test_read_only()
Executing Test_recursive_delete()
Executing Test_redefine_dict_func()
Executing Test_ref_job_partial_dict()
Executing Test_reltime()
Executing Test_repeat_many()
Executing Test_repeat_three()
Executing Test_retain_partial()
Executing Test_script_function_in_dict()
Executing Test_script_function_in_dict_arg()
Executing Test_searchpos()
Executing Test_set_add()
Executing Test_set_backslash()
Executing Test_set_reg_null_list()
Executing Test_set_tagcase()
Executing Test_setmatches()
Executing Test_signcolumn()
Executing Test_sort_default()
Executing Test_sort_float()
Executing Test_sort_nested()
Executing Test_sort_numbers()
Executing Test_sort_numeric()
Executing Test_sort_strings()
Executing Test_special_char()
Executing Test_statusline_will_be_disabled_with_error()
Executing Test_stop_all_in_callback()
Executing Test_stop_in_callback()
Executing Test_stopall()
Executing Test_strcharpart()
Executing Test_strgetchar()
Executing Test_substitute_expr()
Executing Test_substitute_expr_arg()
Executing Test_symlink_delete()
Executing Test_symlink_dir_delete()
Executing Test_symlink_recursive_delete()
Executing Test_tabline_will_be_disabled_with_error()
Executing Test_tabnext_on_buf_unload1()
Executing Test_tabnext_on_buf_unload2()
Executing Test_tabpage()
Executing Test_tabpage_with_autocmd()
Executing Test_tabpage_with_tab_modifier()
Executing Test_tagcase()
Executing Test_three_windows()
Executing Test_tostring()
Executing Test_true_false_arg()
Executing Test_valid()
Executing Test_version()
Executing Test_vim_did_enter()
Executing Test_whichwrap()
Executing Test_win_tab_autocmd()
Executing Test_window_cmd_cmdwin_with_vsp()
Executing Test_window_cmd_ls0_with_split()
Executing Test_window_cmd_wincmd_gf()
Executing Test_with_directories()
Executing Test_with_partial_callback()
Executing Test_with_tilde()
Executing Test_wrong_arguments()
Executed 188 tests
4 FAILED:
Found errors in Test_matchaddpos_using_negative_priority():
function RunTheTest[9]..Test_matchaddpos_using_negative_priority line 20: 'Match with negative priority is incorrectly highlighted with Search highlight.'
Found errors in Test_noinsert_complete():
function RunTheTest[9]..Test_noinsert_complete line 15: Expected 'soundfold' but got 'soun'
function RunTheTest[9]..Test_noinsert_complete line 16: Expected 'soundfold' but got ''
function RunTheTest[9]..Test_noinsert_complete line 22: Expected 'source' but got ''
Found errors in Test_popup_complete():
function RunTheTest[9]..Test_popup_complete line 6: Expected ['Ju'] but got ['June']
function RunTheTest[9]..Test_popup_complete line 11: Expected ['August'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 41: Expected ['July'] but got ['Jul']
function RunTheTest[9]..Test_popup_complete line 77: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 82: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 87: Expected ['February'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 92: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 97: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 102: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 107: Expected ['October'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 112: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 117: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 122: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 142: Expected ['September'] but got ['January', '']
function RunTheTest[9]..Test_popup_complete line 159: Expected ['December2015', 'December201', ''] but got ['December2015', 'December2015', '']
function RunTheTest[9]..Test_popup_complete line 177: Expected ['March', 'M', 'March'] but got ['March', 'M', 'M', '']
Found errors in Test_popup_completion_insertmode():
function RunTheTest[9]..Test_popup_completion_insertmode line 5: Expected 'February' but got ''
function RunTheTest[9]..Test_popup_completion_insertmode line 10: Expected 'February' but got ''


From test_matchadd_conceal.vim:
Found errors in Test_clearmatches():
function RunTheTest[9]..Test_clearmatches line 29: Expected 0 differs from 0
Found errors in Test_default_conceal_char():
function RunTheTest[9]..Test_default_conceal_char line 13: Expected 0 differs from 0
function RunTheTest[9]..Test_default_conceal_char line 26: Expected 0 differs from 0

From test_alot_utf8.vim:
Found errors in Test_match_using_multibyte_conceal_char():
function RunTheTest[9]..Test_match_using_multibyte_conceal_char line 14: Expected 0 differs from 0

From test_alot.vim:
Found errors in Test_matchaddpos_using_negative_priority():
function RunTheTest[9]..Test_matchaddpos_using_negative_priority line 20: 'Match with negative priority is incorrectly highlighted with Search highlight.'
Found errors in Test_noinsert_complete():
function RunTheTest[9]..Test_noinsert_complete line 15: Expected 'soundfold' but got 'soun'
function RunTheTest[9]..Test_noinsert_complete line 16: Expected 'soundfold' but got ''
function RunTheTest[9]..Test_noinsert_complete line 22: Expected 'source' but got ''
Found errors in Test_popup_complete():
function RunTheTest[9]..Test_popup_complete line 6: Expected ['Ju'] but got ['June']
function RunTheTest[9]..Test_popup_complete line 11: Expected ['August'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 41: Expected ['July'] but got ['Jul']
function RunTheTest[9]..Test_popup_complete line 77: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 82: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 87: Expected ['February'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 92: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 97: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 102: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 107: Expected ['October'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 112: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 117: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 122: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 142: Expected ['September'] but got ['January', '']
function RunTheTest[9]..Test_popup_complete line 159: Expected ['December2015', 'December201', ''] but got ['December2015', 'December2015', '']
function RunTheTest[9]..Test_popup_complete line 177: Expected ['March', 'M', 'March'] but got ['March', 'M', 'M', '']
Found errors in Test_popup_completion_insertmode():
function RunTheTest[9]..Test_popup_completion_insertmode line 5: Expected 'February' but got ''
function RunTheTest[9]..Test_popup_completion_insertmode line 10: Expected 'February' but got ''

Test results:


From test_matchadd_conceal.vim:
Found errors in Test_clearmatches():
function RunTheTest[9]..Test_clearmatches line 29: Expected 0 differs from 0
Found errors in Test_default_conceal_char():
function RunTheTest[9]..Test_default_conceal_char line 13: Expected 0 differs from 0
function RunTheTest[9]..Test_default_conceal_char line 26: Expected 0 differs from 0

From test_alot_utf8.vim:
Found errors in Test_match_using_multibyte_conceal_char():
function RunTheTest[9]..Test_match_using_multibyte_conceal_char line 14: Expected 0 differs from 0

From test_alot.vim:
Found errors in Test_matchaddpos_using_negative_priority():
function RunTheTest[9]..Test_matchaddpos_using_negative_priority line 20: 'Match with negative priority is incorrectly highlighted with Search highlight.'
Found errors in Test_noinsert_complete():
function RunTheTest[9]..Test_noinsert_complete line 15: Expected 'soundfold' but got 'soun'
function RunTheTest[9]..Test_noinsert_complete line 16: Expected 'soundfold' but got ''
function RunTheTest[9]..Test_noinsert_complete line 22: Expected 'source' but got ''
Found errors in Test_popup_complete():
function RunTheTest[9]..Test_popup_complete line 6: Expected ['Ju'] but got ['June']
function RunTheTest[9]..Test_popup_complete line 11: Expected ['August'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 41: Expected ['July'] but got ['Jul']
function RunTheTest[9]..Test_popup_complete line 77: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 82: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 87: Expected ['February'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 92: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 97: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 102: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 107: Expected ['October'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 112: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 117: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 122: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 142: Expected ['September'] but got ['January', '']
function RunTheTest[9]..Test_popup_complete line 159: Expected ['December2015', 'December201', ''] but got ['December2015', 'December2015', '']
function RunTheTest[9]..Test_popup_complete line 177: Expected ['March', 'M', 'March'] but got ['March', 'M', 'M', '']
Found errors in Test_popup_completion_insertmode():
function RunTheTest[9]..Test_popup_completion_insertmode line 5: Expected 'February' but got ''
function RunTheTest[9]..Test_popup_completion_insertmode line 10: Expected 'February' but got ''
TEST FAILURE
Makefile:41: recipe for target 'report' failed
make[2]: *** [report] Error 1
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-gtk/testdir'
Makefile:1992: recipe for target 'scripttests' failed
make[1]: *** [scripttests] Error 2
make[1]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-gtk'
debian/rules:279: recipe for target 'build-stamp-vim-gtk' failed
make: *** [build-stamp-vim-gtk] Error 2
make[1]: warning: -jN forced in submake: disabling jobserver mode.
make[1]: Entering directory '/<<PKGBUILDDIR>>/src/vim-gtk3'
/usr/bin/make -f Makefile vim
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-gtk3'
make[2]: 'vim' is up to date.
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-gtk3'
if test -n "yes" -a -f po/Makefile; then \
	cd po; /usr/bin/make -f Makefile check VIM=../vim; \
fi
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-gtk3/po'
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq af.po
touch af.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ca.po
touch ca.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq cs.po
touch cs.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq de.po
touch de.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq en_GB.po
touch en_GB.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq eo.po
touch eo.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq es.po
touch es.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq fi.po
touch fi.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq fr.po
touch fr.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ga.po
touch ga.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq it.po
touch it.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.po
touch ja.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ko.po
touch ko.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ko.UTF-8.po
touch ko.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq nb.po
touch nb.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq nl.po
touch nl.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq no.po
touch no.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.po
touch pl.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pt_BR.po
touch pt_BR.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ru.po
touch ru.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sk.po
touch sk.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sv.po
touch sv.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq uk.po
touch uk.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq vi.po
touch vi.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.UTF-8.po
touch zh_CN.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.po
touch zh_CN.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_TW.UTF-8.po
touch zh_TW.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_TW.po
touch zh_TW.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq cs.cp1250.po
touch cs.cp1250.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.sjis.po
touch ja.sjis.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.euc-jp.po
touch ja.euc-jp.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.cp1250.po
touch pl.cp1250.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.UTF-8.po
touch pl.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ru.cp1251.po
touch ru.cp1251.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sk.cp1250.po
touch sk.cp1250.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq uk.cp1251.po
touch uk.cp1251.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.cp936.po
touch zh_CN.cp936.ck
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-gtk3/po'
if test vim != vim -a ! -r vim; then \
	ln -s vim vim; \
fi
cd testdir; /usr/bin/make -f Makefile gui VIMPROG=../vim  SCRIPTSOURCE=../../runtime
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-gtk3/testdir'
rm -f test.log messages
rm -rf test1.failed test.out X* viminfo tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok benchmark.out wrongtermsize
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test1.in
[?1h="test1.in" 57 lines, 2069 charactersFirst a simple test to check if the test script works.

If Vim was not compiled with the +eval feature, the small.vim script will be
set to copy the test.ok file to test.out, so that it looks like the test
succeeded.  Otherwise an empty small.vim is written.  small.vim is sourced by
tests that require the +eval feature or other features that are missing in the
small version.

If Vim was not compiled with the +windows feature, the tiny.vim script will be
set like small.vim above.  tiny.vim is sourced by tests that require the
+windows feature or other features that are missing in the tiny version.

If Vim was not compiled with the +multi_byte feature, the mbyte.vim script will
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
:" If columns or lines are too small, create wrongtermsize.
:" (Some tests will fail. When columns and/or lines are small)
:if &lines < 24 || &columns < 80 | sp another | w! wrongtermsize | qa! | endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 35 lines, 1133 characters written:set ff& cpo+=A



/ENDTEST: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
:w! small.vim
:" If +windows feature not supported :sp will fail and tiny.vim will be
:" written to skip the test.
:sp another
:wq! tiny.vim
:qa!
ENDTEST


:so! Xdotest
:" If columns or lines are too small, create wrongtermsize.
:" (Some tests will fail. When columns and/or lines are small)
:if &lines < 24 || &columns < 80 | sp another | w! wrongtermsize | qa! | endif
:"
:" Write a single line to test.out to check if testing works at all.
:%d
~~~~~~~~~~~~~~~~~~~~~
~
--No lines in buffer--this is a test:w! test.out
"test.out" [New File] 1 line, 15 characters written:" Create small.vim and tiny.vim empty, create mbyte.vim to skip the test.

:w! small.vim
"small.vim" [New File] 1 line, 1 character written:w! tiny.vim
"tiny.vim" [New File] 1 line, 1 character writtene! test.ok
w! test.out
qa!:w! mbyte.vim
"mbyte.vim" [New File] 4 lines, 28 characters written:w! mzscheme.vim
"mzscheme.vim" [New File] 4 lines, 28 characters written:w! lua.vim
"lua.vim" [New File] 4 lines, 28 characters written:"
:" If +multi_byte feature supported, make mbyte.vim empty.
:if has("multi_byte") | sp another | w! mbyte.vim | q | endif
"another" [New File]
"mbyte.vim" 0 lines, 0 characters writtene! test.ok:"
:" 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
"another" [New File]
"lua.vim" 0 lines, 0 characters writtene! test.ok:"
:" 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
[?1l>rm -rf X* viminfo
rm -rf test3.failed test.ok test.out X* viminfo
cp test3.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test3.in
[?1h="test3.in" 2303 lines, 22649 characters/* vim: set cin ts=4 sw=4 : */

Test for 'cindent'

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo modeline
:edit" read modeline
/start of AUTO
=/end of AUTO
ENDTEST

/* start of AUTO matically checked vim: set ts=4 : */
{if (test)cmd1;cmd2;
}

{if (test)cmd1;else:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/* vim: set cin ts=4 sw=4 : *//^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 125 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo modeline
:edit                " read modeline
"test3.in"2303L, 22649Cif (test)cmd1;cmd2;if (test)cmd1;else/start of AUTO
/end of AUTO
956 lines to indent...
9500
850
750
650
550
450
350
250
150
50 lines to indent... 
957 lines indented /^STARTTEST
}break;default:baz();baz();break;
    }
}

/* end of AUTO */

STARTTEST
:set tw=0 wm=60 columns=80 noai fo=croq
/serious/e
a about life, the universe, and the rest^[
ENDTEST

{

/* this is
 * a real serious important big
 * comment
 */
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 93C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set tw=0 wm=60 columns=80 noai fo=croq
}break;default:baz();baz();break;
    }
}

/* end of AUTO */

STARTTEST
:set tw=0 wm=60 columns=80 noai fo=croq
/serious/e
a about life, the universe, and the rest^[
ENDTEST

{

/* this is
 * a real serious important big
 * comment
 *//serious/e



-- INSERT --
about life, the
 * universe, and the
 * rest important big
* comment
/^STARTTEST





*/
    /* insert " about life, the universe, and the rest" after "serious" */
}

STARTTEST
:set nocin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 6L, 78C written:set ff& cpo+=A

/ENDTEST/+-1




/comments
joabout life^[/happens
jothere^[/below
oline^[/this
Ohello^[
ENDTEST

:so! Xdotest
:set nocin
/comments




{
    /** Testing for comments, without 'cin' set
*/
-- INSERT --
about life
/happens



/*
* what happens here?
*/
-- INSERT --
there
/below



/*the end of the comment, try inserting a line below */
-- INSERT --
line
/this



/* how aboutthis one */
-- INSERT --hello
this one */
/^STARTTEST



}

STARTTEST
:set cin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 18C written:set ff& cpo+=A

/ENDTEST/+-1

/vec2
==
ENDTEST

:so! Xdotest
:set cin
/vec2





{
    var = this + that + vec[0] * vec[0]+ vec[1] * vec[1]+ vec2[2] * vec[2];
}
/^STARTTEST


STARTTEST
:set cin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5L, 51C written:set ff& cpo+=A

/ENDTEST/+-1



:set cino=}4
/testing1
k2==/testing2
k2==
ENDTEST

:so! Xdotest
:set cin
:set cino=}4
/testing1








{asdf asdflkajds f;
    if (tes & ting) {asdf asdf asdf ;asdfa sdf asdf;}
    testing1; 

/testing2






if (tes & ting)
    {asdf asdf asdf ;asdfa sdf asdf;}
    testing2; 
/^STARTTEST



}

STARTTEST
:set cin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 4L, 36C written:set ff& cpo+=A

/ENDTEST/+-1


:set cino=(0,)20
/main
=][
ENDTEST

:so! Xdotest
:set cin
:set cino=(0,)20
/main


main ( int first_par, /*
19 lines to indent...
20indented 
* Comment for
/^STARTTEST
* Comment for* first par*/second_par /** Comment for* second par*/);

}

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();
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 4L, 36C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cin
:set cino=es,n0s
/main
8 lines to indent...
9indented 
/^STARTTEST







else
    {bar();
    }
}

STARTTEST
:set cin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 26C written:set ff& cpo+=A

/ENDTEST/+-1

:set cino=
]]=][
ENDTEST

:so! Xdotest
:set cin
:set cino=


{
11 lines to indent...
12indented 
do
/^STARTTEST
if (){if ()asdf;elseasdf;}
    } while ();
    cmd;/* this should go under the } */
}

STARTTEST
]]=][
ENDTEST

void f()
{
    if ( k() ) {l();} else { /* Start (two words) end */m();
    }
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 1L, 6C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest



8 lines to indent...
9indented 
   /^STARTTEST





n();
}

STARTTEST
:set cino={s,e-s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
]]=][
ENDTEST

:so! Xdotest
:set cino={s,e-s



void f()
{
7 lines to indent...
8indented     {
if ( k() )
/^STARTTEST









{l();} else { /* Start (two words) end */m();}
    n();    /* should be under the if () */
}

STARTTEST
:set cino={s,fs

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 25C written:set ff& cpo+=A

/ENDTEST/+-1
]]=/ foo
ENDTEST

:so! Xdotest
:set cino={s,fs



void bar(void)
{
/ foo
30 lines to indent...
31indented     {/^STARTTEST
void func(void)
    {
    a = 1;{b = 2;}
    c = 3;
    d = 4;
    }
/* foo */

STARTTEST
:set cino=
/while
ohere^[
ENDTEST

a()
{
  do {
    a = a +a;
  } while ( a );/* add text under this line */
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 25C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=
/while

-- INSERT --
here
if ( a )
    i
/^STARTTEST




a;
}

STARTTEST
:set cino= com=

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 109C written:set ff& cpo+=A

/ENDTEST/+-1


/comment
olabel2: b();^Mlabel3 /* post */:^M/* pre */ label4:^Mf(/*com*/);^Mif (/*com*/)^^Mcmd();^[
ENDTEST

:so! Xdotest
:set cino= com=
/comment






a()
{
label1:/* hmm */// comment
-- INSERT --





label2: b();
label3 /* post */:
/* pre */ label4:f(/*com*/);if (/*com*/)cmd();
}
/^STARTTEST


STARTTEST
:set comments& comments^=s:/*,m:**,ex:*/

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 53C written:set ff& cpo+=A

/ENDTEST/+-1

/simple
=5j
ENDTEST

:so! Xdotest
:set comments& comments^=s:/*,m:**,ex:*/
/simple



/*
  * A simple comment
5 lines to indent...
6indented * A simple comment
*/
/^STARTTEST






/*
** A different comment
*/

STARTTEST
:set cino=c0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 70C written:set ff& cpo+=A

/ENDTEST/+-1

:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=c0
:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][ENDTEST

void f()
{
4 lines to indent...
5indented 

/^STARTTEST






/*********A comment.
    *********/
}

STARTTEST
:set cino=c0,C1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 73C written:set ff& cpo+=A

/ENDTEST/+-1

:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=c0,C1
:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][ENDTEST

void f()
{
4 lines to indent...
5indented 

/^STARTTEST






/*********
    A comment.
    *********/
}

STARTTEST
:set cino=

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 17C written:set ff& cpo+=A

/ENDTEST/+-1
]]=][
ENDTEST

:so! Xdotest
:set cino=



void f()
{
5 lines to indent...
6indented 
c = c1 &&
/^STARTTEST







(c2 ||c3) && c4;
}

STARTTEST
:set cino=(s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(s
2kdd]]=][ENDTEST

void f()
{
5 lines to indent...
6indented 
c = c1 &&
/^STARTTEST







(c2 ||c3) && c4;
}

STARTTEST
:set cino=(s,U1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 28C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(s,U1  
2kdd]]=][ENDTEST

void f()
{
5 lines to indent...
6indented 
c = c1 &&
/^STARTTEST







(c2 ||c3) && c4;
}

STARTTEST
:set cino=(0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0
2kdd]]=][ENDTEST

void f()
{
4 lines to indent...
5indented 
if (   c1
/^STARTTEST






&& (   c2|| c3))foo;
}

STARTTEST
:set cino=(0,w1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 28C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0,w1  
2kdd]]=][ENDTEST

void f()
{
4 lines to indent...
5indented 
if (   c1
/^STARTTEST






&& (   c2|| c3))foo;
}

STARTTEST
:set cino=(s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(s
2kdd]]=][ENDTEST

void f()
{
8 lines to indent...
9indented 
c = c1 && (
/^STARTTEST










c2 ||c3) && c4;
    if (c1 && c2)foo;
}

STARTTEST
:set cino=(s,m1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 28C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(s,m1  
2kdd]]=][ENDTEST

void f()
{
8 lines to indent...
9indented 
c = c1 && (
/^STARTTEST










c2 ||c3
    ) && c4;
    if (c1 && c2
    )foo;
}

STARTTEST
:set cino=b1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=b1
2kdd]]=][ENDTEST

void f()
{
9 lines to indent...
10 lines indented 
switch (x)
/^STARTTEST











{case 1:a = b;break;default:a = 0;break;
    }
}

STARTTEST
:set cino=(0,W5

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 26C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0,W5
2kdd]]=][ENDTEST

void f()
{
10 lines to indent...
11indented 
invokeme(
/^STARTTEST












argu,ment);
    invokeme(argu,ment);
    invokeme(argu,ment);
}

STARTTEST
:set cino=/6

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=/6
2kdd]]=][ENDTEST

void f()
{
3 lines to indent...
4indented 
statement;
/^STARTTEST





// comment 1// comment 2
}

STARTTEST
:set cino=

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 34C written:set ff& cpo+=A

/ENDTEST/+-1

2kdd]]/comment 1/+1
==
ENDTEST

:so! Xdotest
:set cino=
==ENDTEST

void f()
{
/comment 1/+1



statement;// comment 1
    // comment 2    // comment 2
}
/^STARTTEST


STARTTEST
:set cino=g0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=g0
2kdd]]=][ENDTEST

class CAbc
{
6 lines to indent...
7indented 
int Test() { return FALSE; }
/^STARTTEST








public: // comment
    void testfall();
protected:
    void testfall();
};

STARTTEST
:set cino=(0,gs,hs

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 29C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0,gs,hs
2kdd]]=][ENDTEST

class Foo : public Bar
{
5 lines to indent...
6indented 
public:
/^STARTTEST







virtual void method1(void) = 0;virtual void method2(int arg1,int arg2,int arg3) = 0;
};

STARTTEST
:set cino=+20

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 24C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=+20
2kdd]]=][ENDTEST


void
foo()
{
4 lines to indent...
5indented 
if (a)
/^STARTTEST






{
    } elseasdf;
}

STARTTEST
:set cino=(0,W2s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 27C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0,W2s
2kdd]]=][ENDTEST
{
34 lines to indent...
35indented 
averylongfunctionnamelongfunctionnameaverylongfunctionname()->asd(
/^STARTTEST
dec)->asdfasdfasdf(asdfadsf,asdfasdf,asdfasdf,),func(asdfadf,asdfasdf),asdasdf);
}

STARTTEST
:set cino=M1
2kdd]]=][
ENDTEST

int main ()
{
    if (cond1 &&cond2)foo;
}
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=M1

4 lines to indent...
5indented 
   /^STARTTEST

STARTTEST
:set cino=(0,ts

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 26C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd2j=][
ENDTEST

:so! Xdotest
:set cino=(0,ts
2kdd2j=][ENDTEST


7 lines to indent...
8indented 
void func(int a
/^STARTTEST









#if defined(FOO), int b, int c
#endif)
{
}

STARTTEST
:set cino=(0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd2j=][
ENDTEST

:so! Xdotest
:set cino=(0
2kdd2j=][ENDTEST


8 lines to indent...
9indented 
void
/^STARTTEST










func(int a
#if defined(FOO), int b, int c
#endif
    )
{
}

STARTTEST
:set cino&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 22C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd2j=7][
ENDTEST

:so! Xdotest
:set cino&
2kdd2j=7][
ENDTEST


69 lines to indent...
50
7indented 
void func(void)
/^STARTTEST
int a,int b)
{
}void
func6(int a)
{
}

STARTTEST
:set cino&
:set cino+=l1
2kdd2j=][
ENDTEST

void func(void)
{
    int tab[] =
    {1, 2, 3,4, 5, 6};
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino&
:set cino+=l1



22 lines to indent...
23indented 
/^STARTTEST
break;case baz: {printf("baz");break;}case quux:printf("But don't break the indentation of this instruction\n");break;
    }
}

STARTTEST
:set cino&
2kdd2j=][
ENDTEST

void func(void)
{
    cout << "a"
    << "b"
    << ") :"
    << "c";
}
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 21C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino&



6 lines to indent...
7indented     << "b"
        << ") :"
        << "c";
/^STARTTEST

STARTTEST
:set com=s1:/*,m:*,ex:*/

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 38C written:set ff& cpo+=A

/ENDTEST/+-1
]]3jofoo();^[
ENDTEST

:so! Xdotest
:set com=s1:/*,m:*,ex:*/



void func(void)
{


/** This is a comment.*/
-- INSERT --
foo();
}
/^STARTTEST


STARTTEST
:set cino&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 21C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd2j=][
ENDTEST

:so! Xdotest
:set cino&
2kdd2j=][ENDTEST


8 lines to indent...
9indented 
void func(void)
/^STARTTEST










{
    for (int i = 0; i < 10; ++i)if (i & 1) {foo(1);} elsefoo(0);
    baz();
}

STARTTEST
:set cino=k2s,(0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 27C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd3j=][
ENDTEST

:so! Xdotest
:set cino=k2s,(0
2kdd3j=][ENDTEST
void func(void)
23 lines to indent...
24indented 
{
/^STARTTEST
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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 27C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,(s




23 lines to indent...
24indented         && condition2)
        action();    && argument2);
/^STARTTEST
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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 30C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,(s,U1




24 lines to indent...
25indented         && condition2)
        action();    && argument2);
/^STARTTEST
&& (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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 30C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,(0,W4




29 lines to indent...
30indented         && condition2)
        action();         && argument2);
/^STARTTEST
&& (   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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 27C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,u2




18 lines to indent...
19indented         && condition2)
        action();        && argument2);
/^STARTTEST
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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 30C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,(0,w1




27 lines to indent...
28indented         && condition2)
        action();         && argument2);
/^STARTTEST
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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 26C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2,(s




14 lines to indent...
15indented 
/^STARTTEST










if (c1 && (c2 ||c3))foo;
    if (c1 &&(c2 || c3))
    {
    }
}

STARTTEST
:set cino=N-s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 47C written:set ff& cpo+=A

/ENDTEST/+-1

/^NAMESPACESTART
=/^NAMESPACEEND
ENDTEST

:so! Xdotest
:set cino=N-s
/^NAMESPACESTART


NAMESPACESTART
/^NAMESPACEEND
61 lines to indent...
50
62indented /^STARTTEST
namespace test test2
{
    1111111111111111111;
}
namespace111111111
{
    111111111111111111;
}
NAMESPACEEND


STARTTEST
:set cino=j1,J1
/^JSSTART
=/^JSEND
ENDTEST

JSSTART
var bar = {
foo: {
that: this,
some: ok,
},
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=j1,J1
/^JSSTART
/^JSEND
12 lines to indent...
13indented     foo: {
        that: this,
        some: ok,
    },/^STARTTEST










"bar":{a : 2,b: "123abc",x: 4,"y": 5
    }
}
JSEND

STARTTEST
:set cino=j1,J1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A

/ENDTEST/+-1

/^JSSTART
=/^JSEND
ENDTEST

:so! Xdotest
:set cino=j1,J1
/^JSSTART


JSSTART
/^JSEND
5 lines to indent...
6indented /^STARTTEST








var foo = [
    1,
    2,
    3
];
JSEND

STARTTEST
:set cino=j1,J1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A

/ENDTEST/+-1

/^JSSTART
=/^JSEND
ENDTEST

:so! Xdotest
:set cino=j1,J1
/^JSSTART


JSSTART
/^JSEND
7 lines to indent...
8indented /^STARTTEST










function bar() {
    var foo = [1,2,3
    ];
}
JSEND

STARTTEST
:set cino=j1,J1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A

/ENDTEST/+-1

/^JSSTART
=/^JSEND
ENDTEST

:so! Xdotest
:set cino=j1,J1
/^JSSTART


JSSTART
/^JSEND
58 lines to indent...
509indented /^STARTTEST
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: [
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=j1,J1
/^JSSTART
/^JSEND
14 lines to indent...
15indented     $(this).data(class_name+'_public',$.extend({},{
        foo: 'bar',
        bar: 2,
        foobar: [/^STARTTEST












1,2,3],callback: function(){return true;}
    }, options||{}));
}
JSEND

STARTTEST
:set cino=j1,J1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A

/ENDTEST/+-1

/^JSSTART
=/^JSEND
ENDTEST

:so! Xdotest
:set cino=j1,J1
/^JSSTART


JSSTART
/^JSEND
16 lines to indent...
17indented /^STARTTEST
2,3],callback: function(){return true;}}, options||{}));
    }
})(jQuery);
JSEND

STARTTEST
:set cino=j1,J1,+2
/^JSSTART
=/^JSEND
ENDTEST

JSSTART
// Results of JavaScript indent
// 1
(function(){
var a = [
'a',
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 38C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=j1,J1,+2
/^JSSTART
/^JSEND
149 lines to indent...
100
50 lines to indent... 
150 lines indented     var a = [
      'a',/^STARTTEST
'e',
  'f',
  'g',
  'h',
  'i'
];

// 10
var a,
    b,
    c,
    d,
    e,
    f,
    g,
    h,
    i;
JSEND

STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d
:1;/start of AUTO/,$wq! test.out
ENDTEST



:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 61C written:set ff& cpo+=A



/ENDTEST/+-1
:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
221 fewer lines5 *9 *c
  'd
  'e',
  'f',
  'g',
  'h',
  'i'];// 10var a
    b
    c
    d
    e,
    f,
    g,
    h,    i;JSEND:1;/start of AUTO/,$wq! test.out
"test.out" [New] 2062L, 19815C written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test3 = test61; then \
#	  if diff test.out test3.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test3.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test3.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test4.failed test.ok test.out X* viminfo
cp test4.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test4.in
[?1h="test4.in" 34 lines, 960 charactersTest for autocommand that changes current buffer on BufEnter event.
Check if modelines are interpreted for the correct buffer.

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo
:au BufEnter Xxx brew
/start of
:.,/end of/w! Xxx   " write test file Xxx
:set ai modeline modelines=3
:sp Xxx" split to Xxx, autocmd will do :brew
G?this is a
othis should be auto-indented^[
:" Append text with autoindent to this file
:au! BufEnter Xxx
:buf Xxx" go to Xxx, no autocmd anymore
G?this is a
othis should be in column 1^[:wq " append text without autoindent to Xxx
G:r Xxx" include Xxx in the current file
:set fo+=r" issue #57 do not move cursor on <c-o> when autoindent is sset
Go# abcdef^[2hi
^Od0^[o# abcdef^[2hi^Od0^[::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for autocommand that changes current buffer on BufEnter event./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 20 lines, 678 characters written:set ff& cpo+=A
/ENDTEST


:?startstart?,$w! test.out
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo
:au BufEnter Xxx brew
/start of


startstart
start of test file Xxx
:.,/end of/w! Xxx   " write test file Xxx
"Xxx" [New] 7L, 124C written:set ai modeline modelines=3
:sp Xxx             " split to Xxx, autocmd will do :brew
"Xxx" 7L, 124CTest for autocommand that changes current buffer on BufEnter event.
Check if modelines are interpreted for the correct buffer.STARTTESTo small.vim:set nocompatible viminfo+=nviminfo
:au BufEnter Xxx brew/start of.,/end of/w!" write test file Xxx
:set ai modeline modelines=3:sp Xxx    " split to Xxx, autocmd will do :brew
test4.in                                                                        :set fo+=rssue #57 do not move cursor on <c-o> when autoindent is ssetGo# abcdef^[2hi
^Od0^[o# abcdef^[2hi^Od0^[:
:?startstart?,$w! test.outqa!ENDTESTstartstart of test file Xxx
test4.in                                                                        test4.in" line 1 of 34 --2%-- col 1:qa!ENDTESTstartstart
start of test file Xxx
vim: set noai :        this is a test
        this is a test
        this is a test        this is a testend of test file Xxx?this is a
-- INSERT --        this should be auto-indented[+][+]
end of test file Xxx:                   " Append text with autoindent to this file
:au! BufEnter Xxx
:buf Xxx            " go to Xxx, no autocmd anymore
"Xxx" 7L, 124Cstart of test file Xxx
vim: set noai :
        this is a test
        this is a test
        this is a test

end of test file Xxx~~~~
Xxx         ?this is a
-- INSERT --this should be in column 1[+]:wq " append text without autoindent to Xxx
"Xxx8L, 151C written:au BufEnter Xxx brew/start of:.,/end of/w! Xxx   " write test file Xxx
:set ai modeline modelines=3
:sp Xxx             " split to Xxx, autocmd will do :brew
G?this is aothis should be auto-indented^[
:                   " Append text with autoindent to this file
:au! BufEnter Xxx
:buf Xxx" go to Xxx, no autocmd anymore
G?this is a
othis should be in column 1^[:wq " append text without autoindent to XxxG:r Xxx   nclude Xxx in the current file:set fo+=r" issue #57 do not move cursor on <c-o> when autoindent is ssetGo# abcdef^[2hi^Od0^[o# abcdef^[2hi^Od0^[:
:?startstart?,$w! test.out
:qa!ENDTESTstarstart of test file Xxx






vim: set noai :this is a testthis is a testthis is a testthis is a testthis should be auto-indented
end of test file Xxx
:r Xxx             " include Xxx in the current file
"Xxx" 8L, 151C
start of test file Xxx
:set fo+=r          " issue #57 do not move cursor on <c-o> when autoindent is 

set
:au! BufEnter Xxx






vim: set noai :this is a testthis is a testthis is a testthis is a test
this should be in column 1
end of test file Xxx

-- INSERT --
# abcdef
-- INSERT --
-- (insert) --
# defINSERT --defod
-- INSERT --
# abcdef
-- INSERT --
-- (insert) --
-- INSERT --def:d
::?startstart?,$w! test.out
"test.out" [New] 20L, 330C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test4 = test61; then \
#	  if diff test.out test4.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test4.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test4.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test5.failed test.ok test.out X* viminfo
cp test5.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test5.in
[?1h="test5.in" 29 lines, 949 charactersTest for autocommand that deletes the current buffer on BufLeave event.
Also test deleting the last buffer, should give a new, empty buffer.

STARTTEST
:so small.vim
:au BufLeave Xxx bwipe
/start of
:.,/end of/w! Xxx" write test file Xxx
:sp Xxx" split to Xxx
:bwipe" delete buffer Xxx, now we're back here
G?this is a
othis is some more text^[
:" Append some text to this file
:?start?,$w! test.out" Write current file contents
:bwipe test.out" delete alternate buffer
:au bufleave test5.in bwipe
:bwipe!" delete current buffer, get an empty one
ithis is another test line^[:w >>test.out
:" append an extra line to the output file
:qa!
ENDTEST

start of test file Xxx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for autocommand that deletes the current buffer on BufLeave event./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 16 lines, 664 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:au BufLeave Xxx bwipe
/start of
:.,/end of/w! Xxx               " write test file Xxx
"Xxx" [New File] 7 lines, 124 characters written:sp Xxx                         " split to Xxx
"Xxx" 7 lines, 124 charactersstart of test file Xxxvim: set noai :this is a test
        this is a test
        this is a test
        this is a test
end of test file Xxx~~~~
Xxx                                                                             ?start?,$w! test.outWrite current file contentsbwipe test.out      delete alternate bufferau bufleave test5.in bwipebwipe!                         " delete current buffer, get an empty one
ithis is another test line^[:w >>test.out:                               " append an extra line to the output file
:qa!ENDTESTstart of test file Xxx
test5.in                                                                        :bwipe                          " delete buffer Xxx, now we're back here
Test for autocommand that deletes the current buffer on BufLeave event.
Also test deleting the last buffer, should give a new, empty buffer.STARTTEST:so small.vim:au BufLeave Xxx bwipe
/start of:.,/end of/w! Xxx" write test file Xxx
:sp Xxx" split to Xxx
:bwipe" delete buffer Xxx, now we're back here
G?this is a
othis is some more text^[                    Append some text to this file
:?start?,$w! test.outWrite current file contents
:bwipe test.out                 " delete alternate buffer
:au bufleave test5.in bwipe:bwipe!                         " delete current buffer, get an empty one
ithis is another test line^[:w >>test.out   " append an extra line to the output file
:qa!ENDTESTstart of test file Xxx"test5.in" line 23 of 29 --79%-- col 1





vim: set noai :this is a testthis is a testthis is a testthis is a test
end of test file Xxx
?this is a

this is some more text
end of test file Xxx
:                               " Append some text to this file
:?start?,$w! test.out           " Write current file contents
"test.out" [New File] 8 lines, 147 characters written:bwipe test.out                 " delete alternate buffer
:au bufleave test5.in bwipe
:bwipe!                         " delete current buffer, get an empty one
Error detected while processing BufLeave Auto commands for "test5.in":
E89: No write since last change for buffer 1 (add ! to override)

Press ENTER or type command to continue~~~~~~~~~~~~~
~~~~~~~~~this is another test line:w >>test.out
"test.out" 1 line, 26 characters appended:                               " append an extra line to the output file
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test5 = test61; then \
#	  if diff test.out test5.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test5.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test5.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test7.failed test.ok test.out X* viminfo
cp test7.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test7.in
[?1h="test7.in" 26 lines, 675 charactersTest for autocommand that changes the buffer list, when doing ":ball".

STARTTEST
:so small.vim
/^start of
A1^[:.,/end of/w! Xxx1   " write test file Xxx1
:sp Xxx1
:close
$r2:.,/end of/w! Xxx2    " write test file Xxx2
:sp Xxx2
:close
$r3:.,/end of/w! Xxx3    " write test file Xxx3
:sp Xxx3
:close
:au BufReadPost Xxx2 bwipe
$r4:ball" open window for all args, close Xxx2
:.,$w! test.out" Write contents of this file
^W^W:w >>test.out" Append contents of second window (Xxx1)
^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!
ENDTEST

start of test file Xxx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for autocommand that changes the buffer list, when doing ":ball"./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 508 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^start of
1:.,/end of/w! Xxx1   " write test file Xxx1
"Xxx1" [New File] 4 lines, 77 characters written:sp Xxx1
"Xxx1" 4 lines, 77 charactersstart of test file Xxx1this is a test
        this is a test
end of test file Xxx~~~~~~~
Xxx1                                                                            closeau BufReadPost Xxx2 bwipe
$r4:ball                 " open window for all args, close Xxx2
:.,$w! test.outWrite contents of this file^W^W:w >>test.outAppend contents of second window (Xxx1)/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx1
test7.in [+]                                                                    :close
Test for autocommand that changes the buffer list, when doing ":ball".STARTTEST:so small.vim/^start of
A1^[:.,/end of/w! Xxx1   " write test file Xxx1
:sp Xxx1
:close
$r2:.,/end of/w! Xxx2    " write test file Xxx2
:sp Xxx2
:close
$r3:.,/end of/w! Xxx3    " write test file Xxx3sp Xxx3
:close:au BufReadPost Xxx2 bwipe$r4:ball       open window for all args, close Xxx2
:.,$w! test.out  Write contents of this filew >>test.out        " Append contents of second window (Xxx1)^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx12:.,/end of/w! Xxx2    " write test file Xxx2
"Xxx2" [New File] 4 lines, 77 characters written:sp Xxx2
"Xxx2" 4 lines, 77 charactersstart of test file Xxx2this is a test
        this is a test
end of test file Xxx~~~~~~~
Xxx2                                                                            closeau BufReadPost Xxx2 bwipe
$r4:ball                 " open window for all args, close Xxx2
:.,$w! test.outWrite contents of this file^W^W:w >>test.outAppend contents of second window (Xxx1)/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx2
test7.in [+]                                                                    :close
Test for autocommand that changes the buffer list, when doing ":ball".STARTTEST:so small.vim/^start of
A1^[:.,/end of/w! Xxx1   " write test file Xxx1
:sp Xxx1
:close
$r2:.,/end of/w! Xxx2    " write test file Xxx2
:sp Xxx2
:close
$r3:.,/end of/w! Xxx3    " write test file Xxx3sp Xxx3
:close:au BufReadPost Xxx2 bwipe$r4:ball       open window for all args, close Xxx2
:.,$w! test.out  Write contents of this filew >>test.out        " Append contents of second window (Xxx1)^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx23:.,/end of/w! Xxx3    " write test file Xxx3
"Xxx3" [New File] 4 lines, 77 characters written:sp Xxx3
"Xxx3" 4 lines, 77 charactersstart of test file Xxx3this is a test
        this is a test
end of test file Xxx~~~~~~~
Xxx3                                                                            closeau BufReadPost Xxx2 bwipe
$r4:ball                 " open window for all args, close Xxx2
:.,$w! test.outWrite contents of this file^W^W:w >>test.outAppend contents of second window (Xxx1)/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx3
test7.in [+]                                                                    :close
Test for autocommand that changes the buffer list, when doing ":ball".STARTTEST:so small.vim/^start of
A1^[:.,/end of/w! Xxx1   " write test file Xxx1
:sp Xxx1
:close
$r2:.,/end of/w! Xxx2    " write test file Xxx2
:sp Xxx2
:close
$r3:.,/end of/w! Xxx3    " write test file Xxx3sp Xxx3
:close:au BufReadPost Xxx2 bwipe$r4:ball       open window for all args, close Xxx2
:.,$w! test.out  Write contents of this filew >>test.out        " Append contents of second window (Xxx1)^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx3:au BufReadPost Xxx2 bwipe
4:ball                 " open window for all args, close Xxx2
"Xxx1"4 lines, 77 characters

"Xxx2" 4 lines, 77 characters

Press ENTER or type command to continue:.,$w! test.out          " Write contents of this file
"test.out" [New File] 4 lines, 77 characters written

Press ENTER or type command to continue:close
:au BufReadPost Xxx2 bwipe
$r4:ball" open window for all args, close Xxx2
:.,$w! test.out" Write contents of this file
^W^W:w >>test.out" Append contents of second window (Xxx1)
^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!
ENDTEST

start of test file Xxx4
test7.in [+]                                                                    start of test file Xxx1this is a testthis is a test
end of test file Xxx
~
~
~
~
~
~
~
Xxx1                                                                            
test7.in [+]                                                                    Xxx1                                                                            :w >>test.out        " Append contents of second window (Xxx1)
"test.out" 4 lines, 77 characters appendedtest7.in [+]                                                                    Xxx1                                                                            :/^start of/,$w >>test.out   " Append contents of last window (this file)
search hit BOTTOM, continuing at TOP"test.out" 4 lines, 77 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test7 = test61; then \
#	  if diff test.out test7.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test7.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test7.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test8.failed test.ok test.out X* viminfo
cp test8.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test8.in
[?1h="test8.in" 46 lines, 1236 charactersTest for BufWritePre autocommand that deletes or unloads the buffer.
Test for BufUnload autocommand that unloads all other buffers.

STARTTEST
:so small.vim
:au BufWritePre Xxx1 bunload
:au BufWritePre Xxx2 bwipe
/^start of
A1^[:.,/end of/w! Xxx1  " write test file Xxx1
$r2:.,/end of/w! Xxx2   " write test file Xxx2
:e! Xxx2" edit Xxx2
:bdel test8.in" delete this file from the buffer list
:e Xxx1" edit Xxx1
:w" write it, will unload it and give an error msg
:w! test.out" Write contents of this file
:e! Xxx2" start editing Xxx2
:bwipe test.out" remove test.out from the buffer list
:w" write it, will delete the buffer and give an error msg:w >>test.out" Append contents of this file
:au! BufWritePre
:func CloseAll()
  let i = 0
  while i <= bufnr('$'):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for BufWritePre autocommand that deletes or unloads the buffer./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 37 lines, 1054 characters written:set ff& cpo+=A
/ENDTEST


















if i != bufnr('%') && bufloaded(i)exe  i . "bunload"
    endif
    let i += 1
  endwhile
endfunc
:func WriteToOut()
  edit! test.out
  $put ='VimLeave done'
  write
endfunc
:set viminfo='100,nviminfo
:au BufUnload * call CloseAll()
:au VimLeave * call WriteToOut()
:e small.vim
:sp mbyte.vim
:q
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:au BufWritePre Xxx1 bunload
:au BufWritePre Xxx2 bwipe
/^start of

start of Xxx1
:.,/end of/w! Xxx1  " write test file Xxx1
"Xxx1" [New File] 3 lines, 31 characters written2:.,/end of/w! Xxx2   " write test file Xxx2
"Xxx2" [New File] 3 lines, 31 characters written:e! Xxx2                " edit Xxx2
"Xxx2" 3 lines, 31 charactersstart of Xxx2
        testend of Xxx~~~~~~~~~~~~~~~~~~
~~:bdel test8.in^I^I" delete this file from the buffer list
:e Xxx1                 " edit Xxx1
"Xxx1" 3 lines, 31 characters1
:w                      " write it, will unload it and give an error msg
"Xxx2"3 lines, 31 characters

E203: Autocommands deleted or unloaded buffer to be written

Press ENTER or type command to continue:w! test.out            " Write contents of this file
"test.out" [New File] 3 lines, 31 characters written

Press ENTER or type command to continue:e! Xxx2                " start editing Xxx2
"Xxx2" 3 lines, 31 charactersstart of Xxx2test
end of Xxx"Xxx2" 3 lines, 31 characters:bwipe test.out         " remove test.out from the buffer list
:w                      " write it, will delete the buffer and give an error ms

g"Xxx1"3 lines, 31 characters
E203: Autocommands deleted or unloaded buffer to be written

Press ENTER or type command to continue:w >>test.out           " Append contents of this file
"test.out" 3 lines, 31 characters appended

Press ENTER or type command to continue:au! BufWritePre
start of Xxx1test
end of Xxx:func CloseAll()

:    let i = 0

:    while i <= bufnr('$')

:        if i != bufnr('%') && bufloaded(i)

:            exe  i . "bunload"

:          endif

:        let i += 1

:      endwhile

:  endfunc
start of Xxx1test
end of Xxx
~
~
~
~
~:func WriteToOut()

:    edit! test.out

:    $put ='VimLeave done'

:    write

:  endfunc
start of Xxx1test
end of Xxx
~:set viminfo='100,nviminfo
:au BufUnload * call CloseAll()
:au VimLeave * call WriteToOut()
:e small.vim
Error detected while processing function CloseAll:

line    4:

E16: Invalid range: 0bunload

"small.vim" 1 line, 1 character

Press ENTER or type command to continue:sp mbyte.vim
"mbyte.vim" 0 lines, 0 characters~
~
~mbyte.vim                                                                       small.vim                                                                       "mbyte.vim" 0 lines, 0 characters:q
Error detected while processing function CloseAll:

line    4:

E16: Invalid range: 0bunload

"test.out" 6 lines, 62 characters

"test.out" 7 lines, 76 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test8 = test61; then \
#	  if diff test.out test8.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test8.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test8.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test9.failed test.ok test.out X* viminfo
cp test9.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test9.in
[?1h="test9.in" 12 lines, 255 charactersTest for Bufleave autocommand that deletes the buffer we are about to edit.

STARTTEST
:so small.vim
:au BufLeave test9.in bwipe yy
:e yy
:/^start of/,$w! test.out      " Write contents of this file
:qa!
ENDTEST

start of test file xx
end of test file xx
~
~
~
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for Bufleave autocommand that deletes the buffer we are about to edit./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 117 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:au BufLeave test9.in bwipe yy
:e yy
E143: Autocommands unexpectedly deleted new buffer yy:/^start of/,$w! test.out      " Write contents of this file
"test.out" [New File] 2 lines, 42 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test9 = test61; then \
#	  if diff test.out test9.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test9.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test9.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test14.failed test.ok test.out X* viminfo
cp test14.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test14.in
[?1h="test14.in" 99 lines, 1606 charactersTests for "vaBiB", end could be wrong.
Also test ":s/pat/sub/" with different ~s in sub.
Also test for ^Vxff and ^Vo123 in Insert mode.
Also test "[m", "]m", "[M" and "]M"
Also test search()

STARTTEST
:so small.vim
/Start cursor here
vaBiBD:?Bug?,/Piece/-2w! test.out
/^- Bug
:s/u/~u~/
:s/i/~u~/
:s/o/~~~/
:.w >>test.out
:if has("ebcdic")
: let tt = "o\<C-V>193\<C-V>xc2\<C-V>o303 \<C-V>90a\<C-V>xfg\<C-V>o578\<Esc>"
:else
: let tt = "o\<C-V>65\<C-V>x42\<C-V>o103 \<C-V>33a\<C-V>xfg\<C-V>o78\<Esc>"
:endif
:exe "normal " . tt
:unlet tt
:.w >>test.out:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for "vaBiB", end could be wrong./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 56 lines, 1141 characters written:set ff& cpo+=A
/ENDTEST:$put =@/
/^substitute
:keeppatterns s/asdf/xyz/
:$put =@/
/^substitute
Y:$put =@0
/bar /e
:$put =@0
-:keeppatterns /xyz
0dn:/^search()/,$w >>test.out
:qa!
ENDTEST

- Bug in "vPPPP" on this text (Webb):{cmd;{cmd;    /* <-- Start cursor here */{}}}
:so! Xdotest
:so small.vim
/Start cursor here
{ 
                        cmd;    /* <-- Start cursor here */ 
                        { 
                        } 
                                cmd; 
                }


6 fewer lines        }Piece of Java{        tt m1 {                t1;e1:?Bug?,/Piece/-2w! test.out
"test.out" [New File] 3 lines, 44 characters written/^- Bug
search hit BOTTOM, continuing at TOP:s/u/~u~/
:s/i/~u~/
uuun "vPPPP" on this text (Webb):
:s/o/~~~/
uuuuuuuuun this text (Webb):
:.w >>test.out
"test.out" 1 line, 48 characters appended:if has("ebcdic")

:  : let tt = "o\<C-V>193\<C-V>xc2\<C-V>o303 \<C-V>90a\<C-V>xfg\<C-V>o578\<Esc>

"
:  :else

:  : let tt = "o\<C-V>65\<C-V>x42\<C-V>o103 \<C-V>33a\<C-V>xfg\<C-V>o78\<Esc>"

:  :endif
:$put =@/
/^substitute
:keeppatterns s/asdf/xyz/
:$put =@/
/^substitute:exe "normal " . tt
ABC !a^Og^G8:unlet tt
:.w >>test.out
"test.out" 1 line, 11 characters appended:set vb
/^Piece
{A:.w >>test.out
"test.out" 1 line, 10 characters appended

tt m2 {{B
:.w >>test.out
"test.out" 1 line, 10 characters appended



t2;} e2tt m3 {{C
:.w >>test.out
"test.out" 1 line, 10 characters appended{DC:.w >>test.out
"test.out" 1 line, 11 characters appended{EA:.w >>test.out
"test.out" 1 line, 11 characters appended{F:.w >>test.out
"test.out" 1 line, 3 characters appended}G e1:.w >>test.out
"test.out" 1 line, 7 characters appended





if (x){t3;}} e3}H e3
:.w >>test.out
"test.out" 1 line, 7 characters appended
}}I
:.w >>test.out
"test.out" 1 line, 3 characters appended}JH e3:.w >>test.out
"test.out" 1 line, 8 characters appended}K e2:.w >>test.out
"test.out" 1 line, 7 characters appended{LF:.w >>test.out
"test.out" 1 line, 4 characters appended:"
/^foobar


foobar
:let startline = line('.')
:call search('foobar', 'c')
:call append(line('$'), line('.') - startline)


:call search('^$', 'c')
:call append(line('$'), line('.') - startline)
:call search('^$', 'bc')
:call append(line('$'), line('.') - startline)
/two



substitute foo asdf

one two
:call search('.', 'c')
:call append(line('$'), getline('.')[col('.') - 1:])
:"
/^substitute
search hit BOTTOM, continuing at TOP:s/foo/bar/
bar
:$put =@/






search()
0
1
1
two
foo
/^substitute
search hit BOTTOM, continuing at TOP:keeppatterns s/asdf/xyz/
xyz:$put =@/

^substitute
/^substitute
search hit BOTTOM, continuing at TOP:$put =@0

substitute bar xyz
/bar /e
:$put =@0

substitute bar xyz

:keeppatterns /xyz

/bar /exyz:/^search()/,$w >>test.out
search hit BOTTOM, continuing at TOP
"test.out" 9 lines, 58 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test14 = test61; then \
#	  if diff test.out test14.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test14.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test14.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test15.failed test.ok test.out X* viminfo
cp test15.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test15.in
[?1h="test15.in" 136 lines, 2246 charactersTests for :right on text with embedded TAB.
Also test formatting a paragraph.
Also test undo after ":%s" and formatting.

STARTTEST
:so small.vim
:set tw=65

:/^\s*test for :left/,/^\s*test for :center/ left
:/^\s*test for :center/,/^\s*test for :right/ center
:/^\s*test for :right/,/^xxx/-1 right
:set fo+=tcroql tw=72
/xxxxxxxx$
0gq6kk
:set nocp viminfo+=nviminfo
:" undo/redo here to make the next undo only work on the following changes
u^R
:map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq
/^aa
ggu
:?test for :left?,$w! test.out
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :right on text with embedded TAB./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 401 characters written:set ff& cpo+=A
/ENDTEST

:so! Xdotest
:so small.vim
:set tw=65

test for :left
:/^\s*test for :left/,/^\s*test for :center/ left
search hit BOTTOM, continuing at TOPtest for :left:/^\s*test for :center/,/^\s*test for :right/ center
:/^\s*test for :right/,/^xxx/-1 right
:set fo+=tcroql tw=72
/xxxxxxxx$
asxa;ofaaxxxoikeasdfaqweraxxxoikeaaxxxoikeyfaaxxxoikeydfaaxxxoikeysdfaaxxxoikeyasdfaaxxxoikeyxasdfaaxxxoikeyasxxdfaaxxxoikeyasxa;ofaaxxxoikeyasdfaqweraxxxoikey

xxxxx xx xxxxxx
xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xx
xxxxxxxxxxxxxxxxxx xxxxx xxxx, xxxx xxxx xxxx xxxx xxx xx xx
xx xxxxxxx. xxxx xxxx.

> xx xx, xxxx xxxx xxx xxxx xxx xxxxx xxx xxx xxxxxxx xxx xxxxx
> xxxxxx xxxxxxx: xxxx xxxxxxx, xx xxxxxx xxxx xxxxxxxxxx

aa aa aa aa
bb bb bb bb
cc cc cc cc

 xx xxxxxx xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xxxx xxxxxxx.
xxxx xxxx.xxxxxxx: xxxx xxxxxxx, xx xxxx xxxxxxx~
:set nocp viminfo+=nviminfo
:" undo/redo here to make the next undo only work on the following changes
1 more line; before #1  0 seconds ago0gq6kk
:set nocp viminfo+=nviminfo
:" undo/redo here to make the next undo only work on the following changes
u^R
:map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq
/^aa
ggu
:?test for :left?,$w! test.out
:qa!
ENDTESTtest for :leftaafaadfaasdfaaasdfaaxasdfaa
asxxdfaatest for :centeraafaafd asdf1 line less; after #1  0 seconds agotest for :lefta      afa    adfa      asdfaaasdfa           axasdfaa                test for :center  aa  fa        afd asdf
:map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq
/^aa
asxxdfaaxxxoikeasxa;ofaaxxxoikeasdfaqweraxxxoikeaaxxxoikeyfaaxxxoikeydfaaxxxoikeysdfaaxxxoikeyasdfaaxxxoikeyxasdfaaxxxoikeyasxxdfaaxxxoikeyasxa;ofaaxxxoikeyasdfaqweraxxxoikey

xxxxx xx xxxxxx xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xx
xxxxxxxxxxxxxxxxxx xxxxx xxxx, xxxx xxxx xxxx xxxx xxx xx xx xx xxxxxxx.
xxxx xxxx.

> xx xx, xxxx xxxx xxx xxxx xxx xxxxx xxx xxx xxxxxxx xxx xxxxx xxxxxx
> xxxxxxx: xxxx xxxxxxx, xx xxxxxx xxxx xxxxxxxxxx

aa aa aa aa
bb bb bb bb
cc cc cc cc


:.,.+2s/^/x/
3 substitutions on 3 linesxaa aa aa aa
xbb bb bb bb
xcc cc cc cc
:set tw=3



3 more lines
aaaaaa3 more lines
3 fewer lines; before #2  0 seconds agoaa aa aa aa
bb bb bb bb
cc cc cc cc~
:?test for :left?,$w! test.out
"test.out"[New] 111L, 2304C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test15 = test61; then \
#	  if diff test.out test15.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test15.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test15.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test19.failed test.ok test.out X* viminfo
cp test19.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test19.in
[?1h="test19.in" 33 lines, 692 charactersTests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set.
Also test that dv_ works correctly

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=^Vx7f t_kb=^Vx08
/some
r:set noexpandtab
/other
r
:" Test replacing with Tabs and then backspacing to undo it
0wR^H^H^H^[
:" Test replacing with Tabs
0wR^[
:" Test that copyindent works with expandtab set
:set expandtab smartindent copyindent ts=8 sw=8 sts=8
o{
x^[:set nosol
/Second line/
fwdv_:?^start?,$w! test.out
:qa!:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 19 lines, 447 characters written:set ff& cpo+=A
/ENDTEST
ENDTEST

:so! Xdotest
:so small.vim
:set smarttab expandtab ts=8 sw=4
:" make sure that backspace works, no matter what termcap is used
:set t_kD=^^? t_kb=^^H
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=^Vx7f t_kb=^Vx08
/some
r:set noexpandtab
/other
r
:" Test replacing with Tabs and then backspacing to undo it
0wR^H^H^H^[
:" Test replacing with Tabs
0wR^[
:" Test that copyindent works with expandtab set
:set expandtab smartindent copyindent ts=8 sw=8 sts=8
o{
x^[:set nosol
/Second line/
fwdv_:?^start?,$w! test.out
:qa!
ENDTEST

/some


start textsome test text    ome test text
:set noexpandtab
/other


test textother test text    ther test text
a cde
:" Test replacing with Tabs and then backspacing to undo it

    
f ghi
:" Test replacing with Tabs

         hi
test text
:" Test that copyindent works with expandtab set
:set expandtab smartindent copyindent ts=8 sw=8 sts=8


{x
:set nosol
/Second line/

Second line beginning with whitespace
  with whitespace
:?^start?,$w! test.out
"test.out" [New File] 10 lines, 121 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test19 = test61; then \
#	  if diff test.out test19.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test19.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test19.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test20.failed test.ok test.out X* viminfo
cp test20.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test20.in
[?1h="test20.in" 28 lines, 398 charactersTests Blockwise Visual when there are TABs before the text.
First test for undo working properly when executing commands from a register.
Also test this in an empty buffer.

STARTTEST
:so tiny.vim
G0"ay$k@au
:new
@auY:quit!
GP
/start here$
"by$^Vjjlld
/456$
^Vjj"bP
:/56$/,$-1w! test.out
:qa!
ENDTEST

123456
234567
345678

test text test tex start here:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests Blockwise Visual when there are TABs before the text./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 11 lines, 107 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so tiny.vim





some texttest text
test text

Ox^[jAy^[kddx
yy
Ox^[jAy^[kdd

2 changes; before #1  0 seconds ago
:new
~~~~~~~~~~
[No Name]                                                                       123456
234567
345678test text test tex start here
                some texttest
test textOx^[jAy^[kdd
test20.in                                                                       x[+]
y
~1 line less; before #1  0 seconds ago   :quit!
:so tiny.vim
G0"ay$k@au
:new
@auY:quit!
GP
/start here$
"by$^Vjjlld
/456$
^Vjj"bP
:/56$/,$-1w! test.out
:qa!
ENDTEST123456
234567
345678test text test tex start heresome
         test text
test textOx^[jAy^[kdd
Ox^[jAy^[kdd
/start here$
search hit BOTTOM, continuing at TOPset tat rt hereextex/456$
search hit BOTTOM, continuing at TOP4
2345
345start here56
234start here67
345start here78:/56$/,$-1w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 10 lines, 106 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test20 = test61; then \
#	  if diff test.out test20.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test20.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test20.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test22.failed test.ok test.out X* viminfo
cp test22.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test22.in
[?1h="test22.in" 13 lines, 197 charactersTests for file with some lines ending in CTRL-M, some not^M
^M
STARTTEST
:set ta tx
:e!
:$-3,$w! test.out
:qa!
ENDTEST

this lines ends in a^M
this one doesn't
this one does^M
and the last one doesn't
~
~
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for file with some lines ending in CTRL-M, some not^M/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 4 lines, 38 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:set ta tx
:e!
"test22.in" 13 lines, 197 characters:$-3,$w! test.out
"test.out" [New File] 4 lines, 79 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test22 = test61; then \
#	  if diff test.out test22.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test22.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test22.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test23.failed test.ok test.out X* viminfo
cp test23.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test23.in
[?1h="test23.in" 15 lines, 282 charactersTests for complicated + argument to :edit command

STARTTEST
:$-1w! Xfile1
:$w! Xfile2
:edit +1|s/|/PIPE/|w Xfile1| e Xfile2|1 | s/\//SLASH/|w
:w! test.out
:e Xfile1
:w >> test.out
:qa!
ENDTEST

The result should be in Xfile1: "fooPIPEbar", in Xfile2: "fooSLASHbar"
foo|bar
foo/bar
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for complicated + argument to :edit command/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 7 lines, 125 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:$-1w! Xfile1
"Xfile1" [New File] 1 line, 8 characters written:$w! Xfile2
"Xfile2" [New File] 1 line, 8 characters written:edit +1|s/|/PIPE/|w Xfile1| e Xfile2|1 | s/\//SLASH/|w
"Xfile1" 1 line, 8 characters

foo|bar

"Xfile1" 1 line, 11 characters written

"Xfile2" 1 line, 8 characters

foo/bar

"Xfile2" 1 line, 12 characters written

Press ENTER or type command to continue:w! test.out
"test.out" [New File] 1 line, 12 characters written

Press ENTER or type command to continue:e Xfile1
"Xfile1" 1 line, 11 charactersfooPIPEbar
~
~
~
~
~
~~~~~
~~~~"Xfile1" 1 line, 11 characters:w >> test.out
"test.out" 1 line, 11 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test23 = test61; then \
#	  if diff test.out test23.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test23.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test23.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test24.failed test.ok test.out X* viminfo
cp test24.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test24.in
[?1h="test24.in" 89 lines, 1301 charactersTests for regexp with backslash and other special characters inside []
Also test backslash for hex/octal numbered character.

STARTTEST
:set nocompatible viminfo+=nviminfo
/[\x]
x/[\t\]]
x/[]y]
x/[\]]
x/[y^]
x/[$y]
x/[\x61]
x/[\x60-\x64]
xj0/[\x785]
x/[\o143]
x/[\o140-\o144]
x/[\o417]
x/\%x42
x/\%o103
x/[\x00]
x
:s/[\x00-\x10]//g:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with backslash and other special characters inside []/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 51 lines, 519 characters written:set ff& cpo+=A
/ENDTEST:s/^\(\h\w*\%(->\|\.\)\=\)\+=/YY/

:s/aaa/xyz/

:s/~/bcd/

:s/~\+/BB/
:"
:?start?,$w! test.out
:qa!
ENDTEST

start
test \text test text
test    text test text
test text ]test text
test ]text test text
test text te^st text
test te$xt test text
test taext test text  x61
test tbext test text  x60-x64
test 5text test text  x78 5
:so! Xdotest
:set nocompatible viminfo+=nviminfo
/[\x]
text test text/[\t\]]
text test tex/[]y]
test text/[\]]
text test text/[y^]
st text/[$y]
xt test text/[\x61]
ext test text  x61/[\x60-\x64]
ext test text  x60-x64
/[\x785]
text test text  x78 5/[\o143]

testc text test text  o143 text test text  o143
/[\o140-\o144]

tesdt text test text  o140-o144t text test text  o140-o14
/[\o417]

test7 text test text  o41 7 text test text  o41 7
/\%x42

test text tBest text  \%x42est text  \%x42
/\%o103

test text teCst text  \%o103st text  \%o103
/[\x00]

test text ^@test text  [\x00]test text  [\x00]
test te^@xt t^Dest t^Pext  [\x00-\x10]
:s/[\x00-\x10]//g
3 substitutions on 1 linext test text  [\x00-\x10]
test \xyztext test text  [\x-z]
:s/[\x-z]\+//
text test text  [\x-z]
test text tev\uyst text  [\u-z]
:s/[\u-z]\{2,}//
st text  [\u-z]
xx aaaaa xx a
:s/\(a\)\+//
 xx 
xx aaaaa xx a
:s/\(a*\)\+//

xx aaaaa xx a
:s/\(a*\)*//

xx aaaaa xx
:s/\(a\)\{2,3}/A/
Aaa xx
xx aaaaa xx
:s/\(a\)\{-2,3}/A/
Aaaa x
xx aaa12aa xx
:s/\(a\)*\(12\)\@>/A/
Aaa xx
xx foobar xbar xx
:s/\(foo\)\@<!bar/A/
A xx
xx an file xx
:s/\(an\_s\+\)\@<=file/A/
A xx
x= 9;
:s/^\(\h\w*\%(->\|\.\)\=\)\+=/XX/
XX

hh= 77;
:s/^\(\h\w*\%(->\|\.\)\=\)\+=/YY/
YY 77;
aaa
:s/aaa/xyz/
xyz
 
xyz
:s/~/bcd/
bcd
 
bcdbcdbcd
:s/~\+/BB/
BB:"
:?start?,$w! test.out
"test.out" [New] 32L, 586C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test24 = test61; then \
#	  if diff test.out test24.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test24.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test24.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test26.failed test.ok test.out X* viminfo
cp test26.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test26.in
[?1h="test26.in" 44 lines, 750 charactersTest for :execute, :while and :if

STARTTEST
:so small.vim
mt:let i = 0
:while i < 12
:  let i = i + 1
:  if has("ebcdic")
:    execute "normal o" . i . "\047"
:  else
:    execute "normal o" . i . "\033"
:  endif
:  if i % 2
:    normal Ax^V^[
:    if i == 9
:      break
:    endif
:    if i == 5
:      continue
:    else
:      let j = 9
:      while j > 0
:if has("ebcdic"):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for :execute, :while and :if/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 39 lines, 696 characters written:set ff& cpo+=A
/ENDTEST:      let j = 9
:      while j > 0
:if has("ebcdic")
:execute "normal" j . "a" . j . "\x27"
:else
:execute "normal" j . "a" . j . "\x1b"
:endif
:let j = j - 1
:      endwhile
:    endif
:  endif
:  if i == 9
:    if has("ebcdic")
:      execute "normal Az\047"
:    else
:      execute "normal Az\033"
:    endif
:  endif
:endwhile
:unlet i j
:'t,$w! test.out
:qa!
ENDTEST


:so! Xdotest
:so small.vim
:let i = 0
:while i < 12

:  :  let i = i + 1

:  :  if has("ebcdic")

:    :    execute "normal o" . i . "\047"

:    :  else

:    :    execute "normal o" . i . "\033"

:    :  endif

:  :  if i % 2

:    :    normal Ax^^[

:    :    if i == 9

:      :      break

:      :    endif

:    :    if i == 5

:      :      continue

:      :    else

:      :      let j = 9

:      :      while j > 0

::        if has("ebcdic")

::          execute "normal" j . "a" . j . "\x27"

::        else

::          execute "normal" j . "a" . j . "\x1b"

::        endif

::        let j = j - 1

::      endwhile

:      :    endif

:    :  endif

:  :  if i == 9

:    :    if has("ebcdic")

:      :      execute "normal Az\047"

:      :    else

:      :      execute "normal Az\033"

:      :    endif

:    :  endif

:  :endwhile
:  endif
:  if i == 9
:    if has("ebcdic")
:      execute "normal Az\047"
:    else
:      execute "normal Az\033"
:    endif
:  endif
:endwhile
:unlet i j
:'t,$w! test.out
:qa!
ENDTEST

1x999999999888888887777777666666555554444333221
2
3x999999999888888887777777666666555554444333221
4
5x
6
7x999999999888888887777777666666555554444333221
8
9x
:unlet i j
:'t,$w! test.out
"test.out" [New File] 10 lines, 159 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test26 = test61; then \
#	  if diff test.out test26.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test26.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test26.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test28.failed test.ok test.out X* viminfo
cp test28.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test28.in
[?1h="test28.in" 23 lines, 364 charactersTest for sourcing a file with CTRL-V's at the end of the line

STARTTEST
:/firstline/+1,/lastline/-1w! Xtestfile
:so Xtestfile
Gmm__1^[^[__2^[__3^[^[__4^[__5^[:'m,$s/^@/0/g
:'m,$w! test.out
:qa!
ENDTEST

firstline
map __1 afirst
map __2 asecond
map __3 athird
map __4 afourth
map __5 afifth
map __1 asd^V
map __2 asd^V^V
map __3 asd^V^V
map __4 asd^V^V^V
map __5 asd^V^V^V
lastline:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for sourcing a file with CTRL-V's at the end of the line/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 114 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:/firstline/+1,/lastline/-1w! Xtestfile
"Xtestfile" [New File] 10 lines, 148 characters written:so Xtestfile

sd
map __2 asd^[secondd  sd^[^[  sd^@map __5 asd^@fifth
:'m,$s/^@/0/g
0map __5 asd0fifth:'m,$w! test.out
"test.out" [New File] 2 lines, 45 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test28 = test61; then \
#	  if diff test.out test28.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test28.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test28.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test29.failed test.ok test.out X* viminfo
cp test29.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test29.in
[?1h="test29.in" 230 lines, 4261 charactersTest for joining lines and marks in them
 in compatible and nocompatible modes
 and with 'joinspaces' set or not
 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+=jj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces
j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptionss+=j
j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible
j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjd/STARTTEST/-2
ENDTEST

firstline
asdfasdf.
asdf:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for joining lines and marks in them/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 11 lines, 478 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo
:set nojoinspaces
:set cpoptions-=j
/firstline/

/^STARTTEST/-1
+-1
37 fewer linesSTARTTEST
/^{/+1more linesasdfasdf.
asdfasdf
asdfasdf. asdf
asdfasdf. asdf
asdfasdf.       asdf
asdfasdf.       asdf
asdfasdf. asdf
asdfasdf. asdf
asdfasdff asdf
asdfasdf asdf
asdfasdf  asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
zx cvn.
zx cv


as dfg?
hjkl iop!
ert
hjkl i. as dfg? hjkl iop! ert
zx cvn.
as dfg?hjkl iop! ert er
zx cvrnnop:set cpoptions+=j

zx cv
hjkl i. as dfg? hjkl iop! ertSTARTTEST ert er
zx cvrnnop:set cpoptions-=j joinspaces



37 more linesasdfasdf.
asdf
asdfasdf.  asdf
asdfasdf.  asdf
asdfasdf.       asdf
asdfasdf.       asdf
asdfasdf. asdf
asdfasdf. asdf
asdfasdff asdf
asdfasdf asdf
asdfasdf  asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
zx cvn.
zx cv

as dfg?
hjkl iop!
hjkl i.  as dfg?  hjkl iop!  ert
zx cvn.
as dfg?  ert  e
zx cvennop


:set cpoptions+=j

zx cv
hjkl iop!
hjkl i.  as dfg? hjkl iop! ertSTARTTEST ert er
zx cvrnnop


:set cpoptions-=j nojoinspaces compatible



37 more linesasdfasdf.
asdf
asdfasdf.  asdf
asdfasdf.  asdf
asdfasdf.       asdf
asdfasdf.       asdf
asdfasdf. asdf
asdfasdf. asdf
asdfasdff asdf
asdfasdf asdf
asdfasdf  asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
zx cvn..  as dfg? hjkl iop! ertt  a
zx cvn.
/STARTTEST/-2
+-2
4 fewer lines/^STARTTEST

STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 12 lines, 147 characters written:set ff& cpo+=A

/ENDTEST











:set comments=s1:/*,mb:*,ex:*/,://
:set nojoinspaces fo=j
:set backspace=eol,start
:.,+3join
j4J
:.,+2join
j3J
:.,+2join
j3J
:.,+2join
jj3J
ENDTEST

:so! Xdotest
/^{/+1


{
:set comments=s1:/*,mb:*,ex:*/,://
:set nojoinspaces fo=j
:set backspace=eol,start
:.,+3join
/* Make sure the previous comment leader is not removed. */

/* Make sure the previous comment leader is not removed. */


:.,+2join
// Should the next comment leader be left alone? Yes.

// Should the next comment leader be left alone? Yes.


:.,+2join
/* 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.


:.,+2join
if (condition) // Remove the next comment leader! OK, I will.

action();
if (condition) // Remove the next comment leader! OK, I will.

action();

/^STARTTEST



}

STARTTEST
:" Test with backspace set to the non-compatible setting

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 17 lines, 347 characters written:set ff& cpo+=A

/ENDTEST:inoremap <c-u> <left><c-u>
Avim3^U^[
:iunmap <c-u>
Avim4^U^U^[
:" Test with backspace set to the compatible setting
:set backspace= visualbell
A vim5^[A^U^U^[
A vim6^[Azwei^Gu^U^[
:inoremap <c-u> <left><c-u>
A vim7^U^U^[
:set compatible novisualbell
ENDTEST
1 this shouldn't be deleted
2 this shouldn't be deleted
3 this shouldn't be deleted
4 this should be deleted
5 this shouldn't be deleted
6 this shouldn't be deleted
7 this shouldn't be deleted
8 this shouldn't be deleted (not touched yet)

STARTTEST
/^{/+1
:so! Xdotest
:" Test with backspace set to the non-compatible setting
/^\d\+ this
:set cp bs=2
d    vim2:set cpo-=<
:inoremap <c-u> <left><c-u>
d3:iunmap <c-u>

:" Test with backspace set to the compatible setting
:set backspace= visualbell
vim5d vim66    zwei:inoremap <c-u> <left><c-u>
vim7
:set compatible novisualbell
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 21 lines, 356 characters written:set ff& cpo+=A

/ENDTESTj3J
:.,+2join
j3J
:.,+2join
jj3J
j:.,+2join
jj3J
j:.,+5join
j6J
oSome code!^M// Make sure backspacing does not remove this comment leader.^[0i^HH^[
ENDTEST

{

/*
 * Make sure the previous comment leader is not removed.
 */

/*
 * Make sure the previous comment leader is not removed.
 */
:so! Xdotest
/^{/+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



/* Make sure the previous comment leader is not removed.  *//* List:
 * - item1
 *   foo bar baz



/* Make sure the previous comment leader is not removed.  */*   foo bar baz
 * - item2
 *   foo bar baz
:.,+8join
/* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz *//* List:- item1  foo bar baz
 * - item2
/* 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?
:.,+2join


Should the next comment leader be left alone?  Yes.


// Yes.
// Should the next comment leader be left alone?  Yes.* Here the comment leader should be left intact. */
// And so should this one.



:.,+2join
/* Here the comment leader should be left intact. */ // And so should this one.* Here the comment leader should be left intact. */
/* Here the comment leader should be left intact. */ // And so should this one.
:.,+2join
if (condition) // Remove the next comment leader!  OK, I will.

action();
if (condition) // Remove the next comment leader!  OK, I will.

action();


:.,+2join
int i = 7 /* foo *// 3 // comment

;
int i = 7 /* foo *// 3 // comment

;


:.,+5join
># Note that the last character of the ending comment leader (left angle bracket@


># Note that the last character of the ending comment leader (left angle brackett) 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 liness. This comment should retain its comment leader.
># Note that the last character of the ending comment leader (left angle bracket@


># Note that the last character of the ending comment leader (left angle brackett) 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 liness. This comment should retain its comment leader.


Some code!
// Make sure backspacing does not remove this comment leader.
// Make sure backspacing does not remove this comment leader.
}

/^STARTTEST


STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 61 characters written:set ff& cpo+=A

/ENDTEST
:?firstline?+1,$w! test.out

:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
74 fewer lines// 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 brackett) 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 liness. This comment should retain its comment leader.># Note that the last character of the ending comment leader (left angle brackett) 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 liness. This comment should retain its comment leader.

Some code!// Make sure backspacing does not remove this comment leader.
}:?firstline?+1,$w! test.out
"test.out" [New File] 97 lines, 3018 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test29 = test61; then \
#	  if diff test.out test29.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test29.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test29.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test31.failed test.ok test.out X* viminfo
cp test31.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test31.in
[?1h="test31.in" 95 lines, 1832 charactersTest for commands that close windows and/or buffers:
:quit
:close
:hide
:only
:sall
:all
:ball
:buf
:edit

STARTTEST
:so small.vim
GA 1^[:$w! Xtest1
$r2:$w! Xtest2
$r3:$w! Xtest3
:n! Xtest1 Xtest2
A 1^[:set hidden
:" test for working :n when hidden set; write "testtext 2"
:n
:w! test.out
:" test for failing :rew when hidden not set; write "testtext 2 2"
:set nohidden:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for commands that close windows and/or buffers:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 80 lines, 1697 characters written:set ff& cpo+=A
/ENDTEST:" test ":q!" and hidden buffer.
:bw! Xtest1 Xtest2 Xtest3 Xtest4
:sp Xtest1
:wincmd w
:bw!
:set modified
:bot sp Xtest2
:set modified
:bot sp Xtest3
:set modified
:wincmd t
:hide
:q!
:w >>test.out
:q!
:w >>test.out
:q!
:call append(line('$'), "Oh, Not finished yet.")
:w >>test.out
:qa!
ENDTEST

testtext


:so! Xdotest
:so small.vim

1:$w! Xtest1
"Xtest1" [New File] 1 line, 11 characters written2:$w! Xtest2
"Xtest2" [New File] 1 line, 11 characters written3:$w! Xtest3
"Xtest3" [New File] 1 line, 11 characters written:n! Xtest1 Xtest2
"Xtest1" 1 line, 11 characterstesttext 1~~~~~~~~~~~~~~~~~~~~
~~1:set hidden
:" test for working :n when hidden set; write "testtext 2"
:n
"Xtest2" 1 line, 11 characters2:w! test.out
"test.out" [New File] 1 line, 11 characters written:" test for failing :rew when hidden not set; write "testtext 2 2"
:set nohidden
2:rew
E37: No write since last change (add ! to override):w >>test.out
"test.out" 1 line, 13 characters appended:" test for working :rew when hidden set; write "testtext 1 1"
:set hidden
:rew
"Xtest1" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)1 1
:w >>test.out
"test.out" 1 line, 13 characters appended:" test for :all keeping a buffer when it's modified; write "testtext 1 1 1"
:set nohidden
1:sp
Xtest1 [+]                                                                      testtext 1 1 1Xtest1 [+]                                                                      :n Xtest2 Xtest3
"Xtest2" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)2 22:all
"Xtest3" 1 line, 11 characterstesttext 1 1 1
~
~
~
~
~
~
Xtest1 [+]                                                                      testtext 2 2
~
~
~
~
~
Xtest2 [+]                                                                      testtext 3
~
~
~
~
~
~
Xtest3                                                                          :1wincmd w
Xtest1 [+]                                                                      Xtest2 [+]                                                                      :w >>test.out
"test.out" 1 line, 15 characters appended:" test abandoning changed buffer, should be unloaded even when 'hidden' set
:" write "testtext 2 2" twice
:set hidden
1 1:q!
testtext 2 2
~
~
~
~
~
~
~
~
~
~
Xtest2 [+]                                                                      testtext 3
~
~
~
~
~
~
~
~
~
Xtest3                                                                          :w >>test.out
"test.out" 1 line, 13 characters appended:unhide
:w >>test.out
"test.out" 1 line, 13 characters appended:" test ":hide" hides anyway when 'hidden' not set; write "testtext 3"
:set nohidden
2:hide
3~~~:w >>test.out
"test.out" 1 line, 11 characters appended:" test ":edit" failing in modified buffer when 'hidden' not set
:" write "testtext 3 3"
3:e Xtest1
E37: No write since last change (add ! to override):w >>test.out
"test.out" 1 line, 13 characters appended:" test ":edit" working in modified buffer when 'hidden' set; write "testtext 1

"testtext 3 3:set hidden
:e Xtest1
"Xtest1" 1 line, 11 characters1:w >>test.out
"test.out" 1 line, 11 characters appended:" test ":close" not hiding when 'hidden' not set in modified buffer;
:" write "testtext 3 3 3"
:sp Xtest3
"Xtest3" [Modified] line 1 of 1 --100%-- col 1 (file 2 of 2)3 3Xtest3 [+]                                                                      testtext 1Xtest1                                                                          :set nohidden
3:close
E37: No write since last change (add ! to override):w >>test.out
"test.out" 1 line, 15 characters appended:" test ":close!" does hide when 'hidden' not set in modified buffer;
:" write "testtext 1"
3 3:close!
1~~~:w >>test.out
"test.out" 1 line, 11 characters appended:set nohidden
:" test ":all!" hides changed buffer; write "testtext 2 2 2"
:sp Xtest4
"Xtest4" [New File]Xtest4                                                                          testtext 1Xtest1                                                                           4[+]:all!
"Xtest2" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)

"Xtest3" [Modified] line 1 of 1 --100%-- col 1 (file 2 of 2)

Press ENTER or type command to continue:1wincmd w
testtext 2 2 2
~Xtest2 [+]                                                                      testtext 3 3 3 3~3 [+]:w >>test.out
"test.out" 1 line, 15 characters appended:"
:" test ":q!" and hidden buffer.
:bw! Xtest1 Xtest2 Xtest3 Xtest4
"test31.in"95 lines, 1832 characters

4 buffers wiped out

Press ENTER or type command to continue:sp Xtest1
"Xtest1" 1 line, 11 characterstesttext 1
~~
Xtest1                                                                          :w >>test.out
:q!
:w >>test.out
:q!
:call append(line('$'), "Oh, Not finished yet.")
:w >>test.out
:qa!
ENDTESTtesttext
test31.in "Xtest1" 1 line, 11 characters:wincmd w
Xtest1                                                                          test31.in                                                                       :bw!
~~~~~~~~~
~~~:set modified
:bot sp Xtest2
"Xtest2" 1 line, 11 charactersXtest1 [+]                                                                      testtext 2Xtest2                                                                          :set modified
[+]:bot sp Xtest3
"Xtest3" 1 line, 11 characterstesttext 1
~
~
~
~
~
~
Xtest1 [+]                                                                      testtext 2
~
~
~
~
~
Xtest2 [+]                                                                      testtext 3
~
~
~
~
~
~
Xtest3                                                                          :set modified
[+]:wincmd t
Xtest1 [+]                                                                      Xtest3 [+]                                                                      :hide
testtext 2
~
~
~
~
~
~
~
~
~
~
Xtest2 [+]                                                                      testtext 3
~
~
~
~
~
~
~
~
~
Xtest3 [+]                                                                      :q!
3~~~:w >>test.out
"test.out" 1 line, 11 characters appended:q!
E37: No write since last change

E162: No write since last change for buffer "Xtest1"

Press ENTER or type command to continue:w >>test.out
"test.out" 1 line, 11 characters appended

Press ENTER or type command to continue:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test31 = test61; then \
#	  if diff test.out test31.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test31.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test31.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test33.failed test.ok test.out X* viminfo
cp test33.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test33.in
[?1h="test33.in" 34 lines, 616 charactersTest for 'lisp'
If the lisp feature is not enabled, this will fail!

STARTTEST
:so small.vim
:set lisp
/^(defun
=G:/^(defun/,$w! test.out
:q!
ENDTEST

(defun html-file (base)
(format nil "~(~A~).html" base))

(defmacro page (name title &rest body)
(let ((ti (gensym)))
`(with-open-file (*standard-output*
(html-file ,name)
:direction :output
:if-exists :supersede)
(let ((,ti ,title))
(as title ,ti)
(with center:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for 'lisp'/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 63 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:set lisp
/^(defun
22 lines to indent...
23indented   (format nil "~(~A~).html" base))


  (let ((ti (gensym)))
       `(with-open-file (*standard-output*
                 (html-file ,name)
                  :direction :output
                         :if-exists :supersede)
                        (let ((,ti ,title))
              (as title ,ti)
            (with center:/^(defun/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 23 lines, 544 characters written:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test33 = test61; then \
#	  if diff test.out test33.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test33.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test33.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test34.failed test.ok test.out X* viminfo
cp test34.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test34.in
[?1h="test34.in" 87 lines, 1833 charactersTest for user functions.
Also test an <expr> mapping calling a function.
Also test that a builtin function cannot be replaced.
Also test for regression when calling arbitrary expression.

STARTTEST
:so small.vim
:function Table(title, ...)
:  let ret = a:title
:  let idx = 1
:  while idx <= a:0
:    exe "let ret = ret . a:" . idx
:    let idx = idx + 1
:  endwhile
:  return ret
:endfunction
:function Compute(n1, n2, divname)
:  if a:n2 == 0
:    return "fail"
:  endif
:  exe "let g:" . a:divname . " = ". a:n1 / a:n2
:  return "ok"
:endfunction:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for user functions./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 78 lines, 1621 characters written:set ff& cpo+=A
/ENDTEST:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?
:    " Second is here just to prove that this line is correct when not skipping
:    " rhs of &&.
:    $put =(0&&(function('tr'))(1, 2, 3))
:    $put =(1&&(function('tr'))(1, 2, 3))
:catch
:    $put ='!!! Unexpected exception:'
:    $put =v:exception
:endtry
:$-9,$w! test.out
:delfunc Table
:delfunc Compute
:delfunc Expr1
:delfunc Expr2
:delfunc ListItem
:delfunc ListReset
:unlet retval counter
:q!
ENDTEST

here


:so! Xdotest
:so small.vim
:function Table(title, ...)

:  :  let ret = a:title

:  :  let idx = 1

:  :  while idx <= a:0

:    :    exe "let ret = ret . a:" . idx

:    :    let idx = idx + 1

:    :  endwhile

:  :  return ret

:  :endfunction
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?
:    " Second is here just to prove that this line is correct when not skipping
:    " rhs of &&.
:    $put =(0&&(function('tr'))(1, 2, 3))
:    $put =(1&&(function('tr'))(1, 2, 3))
:catch

:function Compute(n1, n2, divname)

:  :  if a:n2 == 0

:    :    return "fail"

:    :  endif

:  :  exe "let g:" . a:divname . " = ". a:n1 / a:n2

:  :  return "ok"

:  :endfunction
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?
:    " Second is here just to prove that this line is correct when not skipping
:    " rhs of &&.
:    $put =(0&&(function('tr'))(1, 2, 3))

:func Expr1()

:  :  normal! v

:  :  return "111"

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:func Expr2()

:  :  call search('XX', 'b')

:  :  return "222"

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:func ListItem()

:  :  let g:counter += 1

:  :  return g:counter . '. '

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:func ListReset()

:  :  let g:counter = 0

:  :  return ''

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:func FuncWithRef(a)

:  :  unlet g:FuncRef

:  :  return a:a

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:let g:FuncRef=function("FuncWithRef")
:let counter = 0
:inoremap <expr> ( ListItem()
:inoremap <expr> [ ListReset()
:imap <expr> + Expr1()
:imap <expr> * Expr2()
:let retval = "nop"
/^here
her$=Table("xxx", 4, "asdf")
=Compute(45, 0, "retval")
=retval
=Compute(45, 5, "retval")
=retval
=g:FuncRef(333)

Error detected while processing function Expr1:

line    1:

E523: Not allowed here

Press ENTER or type command to continue:    $put =(0&&(function('tr'))(1, 2, 3))
:    $put =(1&&(function('tr'))(1, 2, 3))
:catch
:    $put ='!!! Unexpected exception:'$put =v:exception
:endtry$-9,$w! test.outdelfunc Table
:delfunc Computedelfunc Expr1delfunc Expr2
:delfunc ListItemListReset
:unlet retval counter
:q!ENDTESTxxx4asdf fail nop ok 9 333
XX111-XX---222---
1. one2. two1. one again
:call append(line('$'), max([1, 2, 3]))
:call extend(g:, {'max': function('min')})
E704: Funcref variable name must start with a capital: max:call append(line('$'), max([1, 2, 3]))
:try

:  :    " Regression: the first line below used to throw ?E110: Missing ')'?

:  :    " Second is here just to prove that this line is correct when not skipp

ing

:  :    " rhs of &&.

:  :    $put =(0&&(function('tr'))(1, 2, 3))

:  :    $put =(1&&(function('tr'))(1, 2, 3))

:  :catch

:  :    $put ='!!! Unexpected exception:'

:  :    $put =v:exception

:  :endtry
:    $put =v:exception
:endtry
:$-9,$w! test.out
:delfunc Table
:delfunc Compute
:delfunc Expr1
:delfunc Expr2
:delfunc ListItem
:delfunc ListReset
:unlet retval counter
:q!ENDTESTxxx4asdf fail nop ok 9 333
XX111-XX
---222---
1. one
2. two1. one again
330
:$-9,$w! test.out
"test.out" [New File] 10 lines, 81 characters written:delfunc Table
:delfunc Compute
:delfunc Expr1
:delfunc Expr2
:delfunc ListItem
:delfunc ListReset
:unlet retval counter
:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test34 = test61; then \
#	  if diff test.out test34.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test34.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test34.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test36.failed test.ok test.out X* viminfo
cp test36.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test36.in
[?1h="test36.in" 108 lines, 2025 charactersTest character classes in regexp using regexpengine 0, 1, 2.

STARTTEST
/^start-here/+1
Y:s/\%#=0\d//g
p:s/\%#=1\d//g
p:s/\%#=2\d//g
p:s/\%#=0[0-9]//g
p:s/\%#=1[0-9]//g
p:s/\%#=2[0-9]//g
p:s/\%#=0\D//g
p:s/\%#=1\D//g
p:s/\%#=2\D//g
p:s/\%#=0[^0-9]//g
p:s/\%#=1[^0-9]//g
p:s/\%#=2[^0-9]//g
p:s/\%#=0\o//g
p:s/\%#=1\o//g
p:s/\%#=2\o//g
p:s/\%#=0[0-7]//g
p:s/\%#=1[0-7]//g
p:s/\%#=2[0-7]//g
p:s/\%#=0\O//g:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test character classes in regexp using regexpengine 0, 1, 2./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 101 lines, 1850 characters written:set ff& cpo+=A
/ENDTESTp:s/\%#=1[^a-z]//g
p:s/\%#=2[^a-z]//g
p:s/\%#=0\u//g
p:s/\%#=1\u//g
p:s/\%#=2\u//g
p:s/\%#=0[A-Z]//g
p:s/\%#=1[A-Z]//g
p:s/\%#=2[A-Z]//g
p:s/\%#=0\U//g
p:s/\%#=1\U//g
p:s/\%#=2\U//g
p:s/\%#=0[^A-Z]//g
p:s/\%#=1[^A-Z]//g
p:s/\%#=2[^A-Z]//g
p:s/\%#=0\%204l^\t...//g
p:s/\%#=1\%205l^\t...//g
p:s/\%#=2\%206l^\t...//g
:/^start-here/+1,$wq! test.out
ENDTEST













:s/\%#=0\D//g
72 substitutions on 1 line0123456789~

:s/\%#=1\D//g
72 substitutions on 1 line0123456789~

:s/\%#=2\D//g
72 substitutions on 1 line0123456789~

:s/\%#=0[^0-9]//g
72 substitutions on 1 line0123456789~

:s/\%#=1[^0-9]//g
72 substitutions on 1 line0123456789~

:s/\%#=2[^0-9]//g
72 substitutions on 1 line0123456789~





~



~



~



~



~


:s/\%#=0\O//g
74 substitutions on 1 line01234567~

~


:s/\%#=2\O//g
74 substitutions on 1 line01234567~

:s/\%#=1[^0-7]//g
74 substitutions on 1 line01234567~

:s/\%#=2[^0-7]//g
74 substitutions on 1 line01234567~





~



~


:s/\%#=0\X//g
60 substitutions on 1 line0123456789ABCDEFabcdef~

~


:s/\%#=2\X//g
60 substitutions on 1 line0123456789ABCDEFabcdef~

~


:s/\%#=1[^0-9A-Fa-f]//g
60 substitutions on 1 line0123456789ABCDEFabcdef~

~



~





:s/\%#=0\W//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1\W//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2\W//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=0[^0-9A-Za-z_]//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1[^0-9A-Za-z_]//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2[^0-9A-Za-z_]//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~







:s/\%#=0\H//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1\H//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2\H//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=0[^A-Za-z_]//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1[^A-Za-z_]//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2[^A-Za-z_]//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~







:s/\%#=0\A//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=1\A//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=2\A//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=0[^A-Za-z]//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=1[^A-Za-z]//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=2[^A-Za-z]//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~













:s/\%#=0\L//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=1\L//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=2\L//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=0[^a-z]//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=1[^a-z]//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=2[^a-z]//g
69 substitutions on 1 lineabcdefghiwxyz~





~



~



~



~



~


:s/\%#=0\U//g
70 substitutions on 1 lineABCDEFGHIXYZ~

~


:s/\%#=2\U//g
70 substitutions on 1 lineABCDEFGHIXYZ~

:s/\%#=1[^A-Z]//g
70 substitutions on 1 lineABCDEFGHIXYZ~

:s/\%#=2[^A-Z]//g
70 substitutions on 1 lineABCDEFGHIXYZ~





~


# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test36 = test61; then \
#	  if diff test.out test36.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test36.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test36.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test37.failed test.ok test.out X* viminfo
cp test37.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test37.in
[?1h="test37.in" 116 lines, 3262 charactersTest for 'scrollbind'. <eralston@computer.org>   Do not add a line below!
STARTTEST
:so small.vim
:set noscrollbind
:set scrollopt=ver,jump
:set scrolloff=2
:set nowrap
:set noequalalways
:set splitbelow
:" TEST using two windows open to one buffer, one extra empty window
:split
:new
^Wt:
:resize 8
/^start of window 1$/
zt:
:set scrollbind
^Wj:
:resize 7
/^start of window 2$/
zt:
:set scrollbind
:" -- start of tests --:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for 'scrollbind'. <eralston@computer.org>   Do not add a line below!/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 72 lines, 1498 characters written:set ff& cpo+=A
/ENDTESTHk^WtH^WjHyy^Wbp^Wtyy^Wbp:
^Wt:set noscb
ggL^Wj:set noscb
ggL:set scb
^Wt:set scb
^WtG^WjG^Wt:syncbind
Hk^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:
^WtH3k^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:
:" ***** done with tests *****
:w! test.out" Write contents of this file
:qa!
ENDTEST


start of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03
. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08
:so! Xdotest
:so small.vim
:set noscrollbind
:set scrollopt=ver,jump
:set scrolloff=2
:set nowrap
:set noequalalways
:set splitbelow
:" TEST using two windows open to one buffer, one extra empty window
:split
^WtH3k^WtHyybp^Wt^Wjyy^Wbp:
:" ***** done with tests *****
:w! test.out    " Write contents of this file
:qa!ENDTESTstart of window 1. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02test37.in                                                                       Hk^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:
^WtH3k^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:
:" ***** done with tests *****
:w! test.out     " Write contents of this file
:qa!ENDTESTstart of window 11122
test37.in                                                                       :new
:w! test.out             " Write contents of this file
:qa!ENDTESTtest37.in                                                                       ~~~~
[No Name]test37.in                                                                       [No Name]                                                                       ::resize 8
:" ***** done with tests *****w! test.out             " Write contents of this file
:qa!ENDTESTstart of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
test37.in                                                                       :" ***** done with tests *****:w! test.out             " Write contents of this fileqa!ENDTESTstart of window 1/^start of window 1$/

. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02


. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03
. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05::set scrollbind
test37.in                                                                       test37.in                                                                       ::resize 7
/^start of window 2$/
end of window 1start of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04::set scrollbind
:" -- start of tests --
:" TEST scrolling down







. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08
. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09
. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10




. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08
. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09test37.in                                                                       [No Name]                                                                       
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05[+]0test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
1test37.in                                                                       [No Name] [+]                                                                   








. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15
end of window 1





. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15test37.in                                                                       [No Name] [+]                                                                   
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
2test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
3

::" TEST scrolling up
test37.in                                                                       [No Name] [+]                                                                   . line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08440505060607070808090900test37.in                                                                       test37.in                                                                       test37.in                                                                       test37.in                                                                       test37.in                                                                       [No Name] [+]                                                                   
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
4test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
5test37.in                                                                       [No Name] [+]                                                                   start of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03start of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
test37.in                                                                       test37.in                                                                       test37.in                                                                       test37.in                                                                       test37.in                                                                       [No Name] [+]                                                                   
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
6test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
7

::" TEST horizontal scrolling
:set scrollopt+=hor
05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
2 line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
3 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11



4 line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
5 line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
6 line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
7 line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
test37.in                                                                       [No Name] [+]                                                                    156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0256789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0356789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0556789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0656789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07 2UTSRQPONMLKJIHGREDCBA9876543210 01UTSRQPONMLKJIHGREDCBA9876543210 02UTSRQPONMLKJIHGREDCBA9876543210 03UTSRQPONMLKJIHGREDCBA9876543210 04UTSRQPONMLKJIHGREDCBA9876543210 05UTSRQPONMLKJIHGREDCBA9876543210 06test37.in                                                                       [No Name] [+]                                                                   56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   UTSRQPONMLKJIHGREDCBA9876543210 02


:test37.in                                                                       [No Name] [+]                                                                   56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09101112131415UTSRQPONMLKJIHGREDCBA9876543210 09101112131415. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09
. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15
end of window 1

. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09
. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15test37.in                                                                       [No Name] [+]                                                                   . line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
test37.in                                                                       [No Name] [+]                                                                   
test37.in                                                                       [No Name] [+]                                                                   . line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11


::set scrollopt-=hor
:" ****** tests using two different buffers *****
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       test37.in                                                                       ::close
start of window 20000000000::set noscrollbind
:/^start of window 2$/,/^end of window 2$/y
18 lines yanked:new
test37.in                                                                       ~~~~~~~
[No Name]test37.in                                                                       [No Name]                                                                       test37.in                                                                       [No Name]                                                                       4 more lines[+]


18 more linesstart of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02:test37.in                                                                       [No Name] [+]                                                                   /^start of window 1$/
search hit BOTTOM, continuing at TOPENDTESTstart of window 1010102020303
. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04::set scrollbind
test37.in                                                                       [No Name] [+]                                                                   :/^start of window 2$/
search hit BOTTOM, continuing at TOP


. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05::set scrollbind
:" -- start of tests --
:" TEST scrolling down








. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08
. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09




. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08
. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09
. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10[No Name] [+]                                                                   [No Name] [+]                                                                   
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
0test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
1test37.in                                                                       [No Name] [+]                                                                   







. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15





. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16test37.in                                                                       [No Name] [+]                                                                   
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
2[No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
3

::" TEST scrolling up
test37.in                                                                       [No Name] [+]                                                                   440505060607070808090900. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
4[No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
5[No Name] [+]                                                                   [No Name] [+]                                                                   start of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03start of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
6test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
7

::" TEST horizontal scrolling
:set scrollopt+=hor
05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
2 line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
3 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 113 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
46 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
56 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
6 line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
7 line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02

test37.in                                                                       [No Name] [+]                                                                    156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0256789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0356789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0556789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06 2UTSRQPONMLKJIHGREDCBA9876543210 01UTSRQPONMLKJIHGREDCBA9876543210 02UTSRQPONMLKJIHGREDCBA9876543210 03UTSRQPONMLKJIHGREDCBA9876543210 04UTSRQPONMLKJIHGREDCBA9876543210 05UTSRQPONMLKJIHGREDCBA9876543210 06UTSRQPONMLKJIHGREDCBA9876543210 07test37.in                                                                       [No Name] [+]                                                                   56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
[No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   UTSRQPONMLKJIHGREDCBA9876543210 02


:[No Name] [+]                                                                   [No Name] [+]                                                                   56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09101112131415

UTSRQPONMLKJIHGREDCBA9876543210 0910111213141516. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09
. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15

. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09
. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[No Name] [+]                                                                   [No Name] [+]                                                                   . line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
test37.in                                                                       [No Name] [+]                                                                   
test37.in                                                                       [No Name] [+]                                                                   . line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11


::set scrollopt-=hor
:" TEST syncbind
test37.in                                                                       [No Name] [+]                                                                   :set noscb
Test for 'scrollbind'. <eralston@computer.org>   Do not add a line below!
STARTTEST:so small.vim:set noscrollbind:set scrollopt=ver,jump:set scrolloff=2:set nowrap


test37.in                                                                       [No Name] [+]                                                                   :set noscb
start of window 201010202:set scb
test37.in                                                                       [No Name] [+]                                                                   :set scb
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
end of window 2end of test37.in (please don't delete this line)

end of window 2
~
~
~
~~~~zt::set scrollbind:" -- start of tests --:" TEST scrolling downL5jHyy^Wbpr0^WtHyy^Wbpr1^WtL6jHyy^Wbpr2^WkHyy^Wbpr3:
:" TEST scrolling up
^WtH4k^WjH^WtHyy^Wbpr4^WkHyy^Wbpr5^Wk3k^WtH^WjHyy^Wbpr6^WtHyy^Wbpr7:
test37.in                                                                       . line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[No Name] [+]                                                                   :syncbind
/^start of window 2$/. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
:set scrollbind


:test37.in                                                                       [No Name] [+]                                                                   :set noscb
Test for 'scrollbind'. <eralston@computer.org>   Do not add a line below!
STARTTEST
:so small.vimset noscrollbindset scrollopt=ver,jump
:set scrolloff=2set nowrap


test37.in                                                                       [No Name] [+]                                                                   :set noscb
start of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02:set scb
test37.in                                                                       [No Name] [+]                                                                   :set scb
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
end of window 2end of test37.in (please don't delete this line)

end of window 2
~
~
~
~~~~zt::set scrollbind:" -- start of tests --:" TEST scrolling downL5jHyy^Wbpr0^WtHyy^Wbpr1^WtL6jHyy^Wbpr2^WkHyy^Wbpr3:
:" TEST scrolling up
^WtH4k^WjH^WtHyy^Wbpr4^WkHyy^Wbpr5^Wk3k^WtH^WjHyy^Wbpr6^WtHyy^Wbpr7:
test37.in                                                                       . line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   :syncbind
/^start of window 2$/. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
:set scrollbind
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16


:test37.in                                                                       [No Name] [+]                                                                   zt:
:set scrollbind
^Wj:
:resize 7. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
^Wj:
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12


::" ***** done with tests *****
:w! test.out             " Write contents of this file
"test.out" [New File] 33 lines, 1329 characters writtentest.out     :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test37 = test61; then \
#	  if diff test.out test37.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test37.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test37.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test38.failed test.ok test.out X* viminfo
cp test38.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test38.in
[?1h="test38.in" 35 lines, 455 charactersTest Virtual replace mode.

STARTTEST
:so small.vim
:" make sure that backspace works, no matter what termcap is used
:set t_kD=^Vx7f t_kb=^Vx08
ggdGa
abcdefghi
jk      lmn
    opq rst
^Duvwxyz
^[gg:set ai
:set bs=2
gR0^D 1
A
BCDEFGHIJKL
MNO
PQR^[G:ka
o0^D
abcdefghi
jk      lmn:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 29 lines, 407 characters written:set ff& cpo+=A
/ENDTEST










opq rst
^Duvwxyz
^['ajgR0^D 1
A
BCDEFGHIJKL
MNO
PQR^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^[:$
iab     cdefghi jkl^[0gRAB......CDEFGHI.J^[o^[:
iabcdefghijklmnopqrst^[0gRAB    IJKLMNO QR^[:wq! test.out
ENDTEST

:so! Xdotest
:so small.vim
:" make sure that backspace works, no matter what termcap is used
:set t_kD=^^? t_kb=^^H
^[gg:set ai
:set bs=2
gR0^D 1
A
BCDEFGHIJKL
MNO
PQR^[G:ka
o0^D
abcdefghi
jk      lmn
    opq rst
^Duvwxyz
^['ajgR0^D 1
A
BCDEFGHIJKL
MNO
PQR^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^[:$
iab     cdefghi jkl^[0gRAB......CDEFGHI.J^[o^[:
iabcdefghijklmnopqrst^[0gRAB    IJKLMNO QR^[:wq! test.out
ENDTEST
Test Virtual replace mode.

STARTTEST
:so small.vim
:" make sure that backspace works, no matter what termcap is used
:set t_kD=^Vx7f t_kb=^Vx08
ggdGa
abcdefghi
jk      lmn
    opq rst
^Duvwxyz~
~~~~~~~~~~~~~
~~~~~~~~
--No lines in buffer--
abcdefghi
jk      lmn
    opq rst
uvwxyz:set ai
:set bs=2
 1
 A BCDEFGHIJ    KL        MNOPQR:ka
abcdefghi
jk      lmn
    opq rst
uvwxyz
 1:$
ab      cdefghi jkl
AB......CDEFGHI.J:abcdefghijklmnopqrst
AB      IJKLMNO QR:wq! test.out
"test.out" [New File] 13 lines, 107 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test38 = test61; then \
#	  if diff test.out test38.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test38.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test38.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test39.failed test.ok test.out X* viminfo
cp test39.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test39.in
[?1h="test39.in" 118 lines, 2435 charactersTest Visual block mode commands
And test "U" in Visual mode, also on German sharp S.

#define BO_ALL      0x0001
#define BO_BS0x0002
#define BO_CRSR     0x0004

STARTTEST
:so small.vim
:so mbyte.vim
:" This only works when 'encoding' is "latin1", don't depend on the environment
:set enc=latin1
/^abcde
:" Test shift-right of a block
jllll^Vjj>wll^Vjlll>
:" Test shift-left of a block
G$hhhh^Vkk<
:" Test block-insert
Gkl^VkkkIxyz^[
:" Test block-replace
Gllll^Vkkklllrq
:" Test block-change:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 75 lines, 2061 characters written:set ff& cpo+=A
/ENDTEST:exe ":norm! 2k\<C-V>$gj\<Esc>"
:let cpos=getpos("'>")
:$put ='col:'.cpos[2].' off:'.cpos[3]
:"
:" block_insert when replacing spaces in front of the block with tabs
:set ts=8 sts=4 sw=4
:4,7y
Gp
:exe ":norm! f0\<C-V>2jI\<tab>\<esc>"
:/^the/,$w >> test.out
:qa!
ENDTESTline1line2line3

aaaaaa
bbbbbb
cccccc
dddddd

xaaa
:so! Xdotest
:so small.vim
:so mbyte.vim
:" This only works when 'encoding' is "latin1", don't depend on the environment
:set enc=latin1
:exe ":norm! 2k\<C-V>$gj\<Esc>"
:let cpos=getpos("'>")
:$put ='col:'.cpos[2].' off:'.cpos[3]
:"
:" block_insert when replacing spaces in front of the block with tabs
:set ts=8 sts=4 sw=4
:4,7y
Gp
:exe ":norm! f0\<C-V>2jI\<tab>\<esc>"
:/^the/,$w >> test.out
:qa!
ENDTESTline1line2line3

aaaaaa
bbbbbb
cccccc
dddddd

xaaa/^abcde


















bbbb
cccc
dddd

yaaa
bbb

A23
4567

B23
4567

C23
4567

abcdefghijklm
:" Test shift-right of a block

abcdefghijklmabcd
e
abcdefghijklm
abcd
e
abcdefghijklm
abcd
3 lines >ed 1 time        efghijklm
abcd        efghijklm
abcd        efghijklm     efghgihji        ghijklm        ghijklm:" Test shift-left of a block

abcdefghijklmi 


3 lines <ed 1 timeef    efghijklmi:" Test block-insert

abbb
ab
ab
abxyzbcdefghijklm
axyzbcd
axyzbcd
axyzbcd
a:" Test block-replace



abcdebbbccfcddgd  hqqqq
axyzqqqq
axyzqqqq
abcdqqqq
axyz:" Test block-change


ji     ghijklef  gklmnomnomno:$-4,$w! test.out
"test.out" [New File] 5 lines, 108 characters written:" Test block-insert using cursor keys for movement
/^aaaa/
search hit BOTTOM, continuing at TOPaaaaaa
bbbbbb
cccccc
ddddddsearch hit BOTTOM, continuing at TOP:exe ":norm! l\<C-V>jjjlllI\<Right>\<Right>  \<Esc>"
  aaa
bbb  bbb
ccc  ccc
ddd  ddd:/^aa/,/^$/w >> test.out
search hit BOTTOM, continuing at TOP
"test.out" 5 lines, 37 characters appended/xaaa$/
:exe ":norm! \<C-V>jjjI<>\<Left>p\<Esc>"
<p>xaaa
<p>bbbb
<p>cccc
<p>dddd:/xaaa$/,/^$/w >> test.out
search hit BOTTOM, continuing at TOP
"test.out" 5 lines, 33 characters appended:" Test for Visual block was created with the last <C-v>$
/^A23$/
:exe ":norm! l\<C-V>j$Aab\<Esc>"
ab
4567ab:.,/^$/w >> test.out
"test.out" 3 lines, 14 characters appended:" Test for Visual block was created with the middle <C-v>$ (1)
/^B23$/
:exe ":norm! l\<C-V>j$hAab\<Esc>"
ab
4567ab:.,/^$/w >> test.out
"test.out" 3 lines, 15 characters appended:" Test for Visual block was created with the middle <C-v>$ (2)
/^C23$/
:exe ":norm! l\<C-V>j$hhAab\<Esc>"
ab
456ab7:.,/^$/w >> test.out
"test.out" 3 lines, 14 characters appended:" Test for Visual block insert when virtualedit=all and utf-8 encoding
:set ve=all enc=utf-8
aaa  aaa
bbb  bbb
ccc  ccc
ddd  ddd

<p>xaaa
<p>bbbb
<p>cccc
<p>dddd

yaaa
<bf><bf><bf>
bbb

A23ab
4567ab

B23 ab
4567ab

C23ab
456ab7


:/\t\tline
search hit BOTTOM, continuing at TOPline1line2line3search hit BOTTOM, continuing at TOP:exe ":norm! 07l\<C-V>jjIx\<Esc>"
xxx:.,/^$/w >> test.out
"test.out" 4 lines, 49 characters appended:" Test for Visual block append when virtualedit=all
:exe ":norm! 012l\<C-v>jjAx\<Esc>"
x   line1x   line2x   line3:set ve= enc=latin1
x     x   line1x     x   line2x     x   line3

aaa  aaa
bbb  bbb
ccc  ccc
ddd  ddd

<p>xaaa
<p>bbbb
<p>cccc
<p>dddd

yaaa
bbb

A23ab
4567ab

B23 ab








C23ab
456ab7

axyzbcdefghijklm
axyzqqqq   mnoghijklm
axyzqqqqef mnoghijklm
axyzqqqqefgmnoklm
abcdqqqqijklm
the 
:" VU must uppercase a whole line


:" same, when it's the last line in the buffer


:" Uppercase two lines

blah didoh dut
doh dut blah di t
BLAH DIDOH DUT
:" Uppercase part of two lines
~
333the youtUTUSSEUU END
333THE YOUTU

:" visual replace using Enter or NL




123456789
123456789
123456789
1234566789


789
12345
789



98765
98765
98765
987
987
98^M65
98^M65
98^M65
98



123456789
123456789
123456789
1234566789


789
12345
789



98765
98765
98765
987
987
98^@65
98^@65
98^@65


:"
:" Test cursor position. When ve=block and Visual block mode and $gj
:set ve=block
:exe ":norm! 2k\<C-V>$gj\<Esc>"
:let cpos=getpos("'>")
:$put ='col:'.cpos[2].' off:'.cpos[3]

col:4 off:0
:"
:" block_insert when replacing spaces in front of the block with tabs
:set ts=8 sts=4 sw=4
:4,7y
4 lines yanked
4 more lines
4 more lines
#define BO_ALL      0x0001
:exe ":norm! f0\<C-V>2jI\<tab>\<esc>"


    0x0001
#define BO_BS0x0002
#define BO_CRSR0x0004


:/^the/,$w >> test.out
search hit BOTTOM, continuing at TOP
"test.out" 31 lines, 322 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test39 = test61; then \
#	  if diff test.out test39.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test39.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test39.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test40.failed test.ok test.out X* viminfo
cp test40.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test40.in
[?1h="test40.in" 63 lines, 1536 charactersTest for "*Cmd" autocommands

STARTTEST
:so small.vim
:/^start/,$w! Xxx" write lines below to Xxx
:au BufReadCmd XtestA 0r Xxx|$del
:e XtestA" will read text of Xxd instead
:au BufWriteCmd XtestA call append(line("$"), "write")
:w" will append a line to the file
:r XtestA" should not read anything
:" now we have:
:" 1     start of Xxx
:" 2test40
:" 3     end of Xxx
:" 4     write
:au FileReadCmd XtestB '[r Xxx
:2r XtestB" will read Xxx below line 2 instead
:" 1     start of Xxx
:" 2test40
:" 3     start of Xxx
:" 4test40
:" 5     end of Xxx
:" 6     end of Xxx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for "*Cmd" autocommands/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 55 lines, 1455 characters written:set ff& cpo+=A
/ENDTEST:$w >>test.out" append "end of Xxx" to test.out
:au BufReadCmd XtestE 0r test.out|$del
:sp XtestE" split window with test.out
5Goasdf^[^W^W:"
:au BufWriteCmd XtestE w! test.out
:wall" will write other window to test.out
:" 1     start of Xxx
:" 2test40
:" 3     start of Xxx
:" 4test401
:" 5     end of Xxx
:" 6     asdf
:" 7     end of Xxx
:" 8     write
:" 9test401
:" 10    end of Xxx
:" 11    end of Xxx
:qa!
ENDTEST

start of Xxxtest40
end of Xxx
:so! Xdotest
:so small.vim
:/^start/,$w! Xxx^I^I" write lines below to Xxx
"Xxx" [New File] 3 lines, 32 characters written:au BufReadCmd XtestA 0r Xxx|$del
:e XtestA^I^I^I" will read text of Xxd instead
"Xxx" 3 lines, 32 charactersstart of Xxx        test40end of Xxx~~~~~~~~~~~~~~~~
~~~~:au BufWriteCmd XtestA call append(line("$"), "write")
:w^I^I^I^I" will append a line to the file
write:r XtestA^I^I^I" should not read anything
E484: Can't open file XtestA:^I^I^I^I" now we have:
:^I^I^I^I" 1^Istart of Xxx
:^I^I^I^I" 2^I^Itest40
:^I^I^I^I" 3^Iend of Xxx
:^I^I^I^I" 4^Iwrite
:au FileReadCmd XtestB '[r Xxx
:2r XtestB^I^I^I" will read Xxx below line 2 instead
"Xxx" 3 lines, 32 charactersstart of Xxxtest40
end of Xxx:^I^I^I^I" 1^Istart of Xxx
:^I^I^I^I" 2^I^Itest40
:^I^I^I^I" 3^Istart of Xxx
:^I^I^I^I" 4^I^Itest40
:^I^I^I^I" 5^Iend of Xxx
:^I^I^I^I" 6^Iend of Xxx
:^I^I^I^I" 7^Iwrite
:au FileWriteCmd XtestC '[,']copy $
test401:4,5w XtestC^I^I^I" will copy lines 4 and 5 to the end
 test401
end of Xxx
:r XtestC^I^I^I" should not read anything
E484: Can't open file XtestC:^I^I^I^I" 1^Istart of Xxx
:^I^I^I^I" 2^I^Itest40
:^I^I^I^I" 3^Istart of Xxx
:^I^I^I^I" 4^I^Itest401
:^I^I^I^I" 5^Iend of Xxx
:^I^I^I^I" 6^Iend of Xxx
:^I^I^I^I" 7^Iwrite
:^I^I^I^I" 8^I^Itest401
:^I^I^I^I" 9^Iend of Xxx
:au FILEAppendCmd XtestD '[,']w! test.out
:w >>XtestD^I^I^I" will write all lines to test.out
"test.out" [New File] 9 lines, 91 characters written:$r XtestD^I^I^I" should not read anything
E484: Can't open file XtestD:$w >>test.out^I^I^I" append "end of Xxx" to test.out
"test.out" 1 line, 11 characters appended:au BufReadCmd XtestE 0r test.out|$del
:sp XtestE^I^I^I" split window with test.out
"test.out" 10 lines, 102 charactersend of Xxx

XtestE                                                                          end of Xxx
write
 test401
end of XxxXtestA                                                                          asdf[+]XtestE [+]                                                                      XtestA                                                                          :"
:au BufWriteCmd XtestE w! test.out
:wall^I^I^I^I" will write other window to test.out
"test.out" 11 lines, 107 characters written   :^I^I^I^I" 1^Istart of Xxx
:^I^I^I^I" 2^I^Itest40
:^I^I^I^I" 3^Istart of Xxx
:^I^I^I^I" 4^I^Itest401
:^I^I^I^I" 5^Iend of Xxx
:^I^I^I^I" 6^Iasdf
:^I^I^I^I" 7^Iend of Xxx
:^I^I^I^I" 8^Iwrite
:^I^I^I^I" 9^I^Itest401
:^I^I^I^I" 10^Iend of Xxx
:^I^I^I^I" 11^Iend of Xxx
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test40 = test61; then \
#	  if diff test.out test40.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test40.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test40.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test41.failed test.ok test.out X* viminfo
cp test41.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test41.in
[?1h="test41.in" 24 lines, 421 charactersTest for writing and reading a file of over 100 Kbyte

1 line: "This is the start"
3001 lines: "This is the leader"
1 line: "This is the middle"
3001 lines: "This is the trailer"
1 line: "This is the end"

STARTTEST
:%d
aThis is the start
This is the leader
This is the middle
This is the trailer
This is the end^[kY3000p2GY3000p
:w! Xtest
:%d
:e! Xtest
:.w! test.out
3003G:.w >>test.out
6005G:.w >>test.out
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for writing and reading a file of over 100 Kbyte/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 13 lines, 196 characters written:set ff& cpo+=A
/ENDTEST

:so! Xdotest
:%d
~~~~~
~~~~~~~~~~~~~~~~
~
--No lines in buffer--This is the start
This is the leader
This is the middle
This is the trailer
This is the end3000 more linestrailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailerleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleader
:w! Xtest
"Xtest" [New File] 6005 lines, 117092 characters written:%d
~~~~~~~~~~~~~~~~~~~~~~
--No lines in buffer--:e! Xtest
"Xtest" 6005 lines, 117092 charactersThis is the start
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader:.w! test.out
"test.out" [New File] 1 line, 18 characters writtenThis is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the middle
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer:.w >>test.out
"test.out" 1 line, 19 characters appendedThis is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the end

:.w >>test.out
"test.out" 1 line, 16 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test41 = test61; then \
#	  if diff test.out test41.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test41.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test41.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test42.failed test.ok test.out X* viminfo
cp test42.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test42.in
[?1h="test42.in" 130 lines, 2368 charactersTest for writing and reading a file starting with a BOM

STARTTEST
:so mbyte.vim
:set encoding=utf-8
:set fileencodings=ucs-bom,latin-1
:set ff=unix ffs=unix" This changes the file for DOS and MAC
:" --- Write the test files
:/^latin-1$/+1w! Xtest0
:/^utf-8$/+1w! Xtest1
:/^utf-8-err$/+1w! Xtest2
:/^ucs-2$/+1w! Xtest3
:/^ucs-2le$/+1w! Xtest4
:" Need to add a NUL byte after the NL byte
:set bin
:e! Xtest4" Ignore change from setting 'ff'
o^V^@^[:set noeol
:w
:set ffs& nobinary" Allow default test42.in format
:e #
:set ff=unix" Format for files to write
:/^ucs-4$/+1w! Xtest5
:/^ucs-4le$/+1w! Xtest6:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for writing and reading a file starting with a BOM/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 111 lines, 2116 characters written:set ff& cpo+=A
/ENDTEST:e! test.out
:$r Xtest0x
:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&" Write the file in default format
:w! test.out
:qa!
ENDTEST

latin-1
utf-8
utf-8
utf-8-err
utf-8~@err
ucs-2
ucs-2le
:so! Xdotest
:so mbyte.vim
:set encoding=utf-8
:e! test.out
:$r Xtest0x
:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&" Write the file in default format
:w! test.out
:qa!
ENDTEST

latin-1
<fe><fe>latin-1
utf-8
<feff>utf-8
utf-8-err
<feff>utf-8<80>err
ucs-2
<fe><ff>^@u^@c^@s^@-^@2^@
ucs-2le
<ff><fe>u^@c^@s^@-^@2^@l^@e^@:set fileencodings=ucs-bom,latin-1
:set ff=unix ffs=unix           " This changes the file for DOS and MAC
:" --- Write the test files
:/^latin-1$/+1w! Xtest0
"Xtest0" [New File] 1 line, 10 characters written:/^utf-8$/+1w! Xtest1
"Xtest1" [New File] 1 line, 9 characters written:/^utf-8-err$/+1w! Xtest2
"Xtest2" [New File] 1 line, 13 characters written:/^ucs-2$/+1w! Xtest3
"Xtest3" [New File] 1 line, 14 characters written:/^ucs-2le$/+1w! Xtest4
"Xtest4" [New File] 1 line, 17 characters written:" Need to add a NUL byte after the NL byte
:set bin
:e! Xtest4                      " Ignore change from setting 'ff'
"Xtest4" 1 line, 17 characters<ff><fe>u^@c^@s^@-^@2^@l^@e^@~~~~~~~~~~~
~~~~~~~~~~~
^@
:set noeol
:w
"Xtest4" [Incomplete last line] 2 lines, 18 characters written:set ffs& nobinary              " Allow default test42.in format
:e #
"test42.in" [converted] 130 lines, 2385 characters:$r Xtest0x:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&" Write the file in default format
:w! test.out
:qa!
ENDTESTlatin-1
þþlatin-1
utf-8
utf-8
utf-8-err
utf-8<80>err
ucs-2
þÿ^@u^@c^@s^@-^@2^@
ucs-2le
ÿþu^@c^@s^@-^@2^@l^@e^@
ucs-4:set ff=unix                    " Format for files to write
:/^ucs-4$/+1w! Xtest5
"Xtest5" [converted][New File] 1 line, 30 characters written:/^ucs-4le$/+1w! Xtest6
"Xtest6" [converted][New File] 1 line, 35 characters written:" Need to add three NUL bytes after the NL byte
:set bin
:e! Xtest6                      " ! for when setting 'ff' is a change
"Xtest6" 1 line, 33 characters<ff><fe>^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@l^@^@^@e^@^@^@~~~~~~~~~~
~~~~~~~~~~~~
~   
^@^@^@:set noeol
:w
"Xtest6" [Incomplete last line] 2 lines, 36 characters written:set nobin
:e #
"test42.in" [converted] 130 lines, 2385 characters:$r Xtest0x:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&" Write the file in default format
:w! test.out
:qa!
ENDTESTlatin-1
þþlatin-1
utf-8
utf-8
utf-8-err
utf-8<80>err
ucs-2
þÿ^@u^@c^@s^@-^@2^@
ucs-2le
ÿþu^@c^@s^@-^@2^@l^@e^@
ucs-4:"
:" --- Check that editing a latin-1 file doesn't see a BOM
:e! Xtest0
"Xtest0" [converted] 1 line, 12 charactersþþlatin-1~~~~~~~~~~
~~~~~~~~~~~~:redir! >test.out
:set fileencoding bomb?
  fileencoding=latin1

nobomb

Press ENTER or type command to continue:redir END
þþlatin-1
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 12 characters appended:set bomb fenc=latin-1
:w! Xtest0x
"Xtest0x" [converted][New File] 1 line, 12 characters written:"
:" --- Check utf-8
:e! Xtest1
"Xtest1" 1 line, 9 charactersutf-8:redir >>test.out
:set fileencoding bomb?
  fileencoding=utf-8

  bomb

Press ENTER or type command to continue:redir END
utf-8
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 6 characters appended:set fenc=utf-8
:w! Xtest1x
"Xtest1x" [New File] 1 line, 9 characters written:"
:" --- Check utf-8 with an error (will fall back to latin-1)
:e! Xtest2
"Xtest2" [converted] 1 line, 17 charactersutf-8<80>err
:redir >>test.out
:set fileencoding bomb?
  fileencoding=latin1

nobomb

Press ENTER or type command to continue:redir END
utf-8<80>err
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 17 characters appended:set fenc=utf-8
:w! Xtest2x
"Xtest2x" [New File] 1 line, 17 characters written:"
:" --- Check ucs-2
:e! Xtest3
"Xtest3" [converted] 1 line, 8 charactersucs-2:redir >>test.out
:set fileencoding bomb?
  fileencoding=utf-16

  bomb

Press ENTER or type command to continue:redir END
ucs-2
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 6 characters appended:set fenc=ucs-2
:w! Xtest3x
"Xtest3x" [converted][New File] 1 line, 8 characters written:"
:" --- Check ucs-2le
:e! Xtest4
"Xtest4" [converted] 1 line, 10 charactersle
:redir >>test.out
:set fileencoding bomb?
  fileencoding=utf-16le

  bomb

Press ENTER or type command to continue:redir END
ucs-2le
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 8 characters appended:set fenc=ucs-2le
:w! Xtest4x
"Xtest4x" [converted][New File] 1 line, 10 characters written:"
:" --- Check ucs-4
:e! Xtest5
"Xtest5" [converted] 1 line, 10 characters4:redir >>test.out
:set fileencoding bomb?
  fileencoding=ucs-4

  bomb

Press ENTER or type command to continue:redir END
ucs-4
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 6 characters appended:set fenc=ucs-4
:w! Xtest5x
"Xtest5x" [converted][New File] 1 line, 10 characters written:"
:" --- Check ucs-4le
:e! Xtest6
"Xtest6" [converted] 1 line, 12 charactersle
:redir >>test.out
:set fileencoding bomb?
  fileencoding=ucs-4le

  bomb

Press ENTER or type command to continue:redir END
ucs-4le
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 8 characters appended:set fenc=ucs-4le
:w! Xtest6x
"Xtest6x" [converted][New File] 1 line, 12 characters written:"
:" --- Check the files written with BOM
:set bin
:e! test.out
"test.out" 35 lines, 275 characters  fileencoding=latin1
nobomb
<fe><fe>latin-1  fileencoding=utf-8
  bomb
utf-8  fileencoding=latin1
nobomb
<feff>utf-8<80>err  fileencoding=utf-16
  bomb
ucs-2  fileencoding=utf-16le:$r Xtest0x
"Xtest0x" 1 line, 10 characters












bomb
ucs-2lefileencoding=ucs-4
  bomb
ucs-4fileencoding=ucs-4le
  bomb
ucs-4le
<fe><fe>latin-1
:$r Xtest1x
"Xtest1x" 1 line, 9 characters
<feff>utf-8
:$r Xtest2x
"Xtest2x" 1 line, 17 characters
utf-8<80>err
:$r Xtest3x
"Xtest3x" 1 line, 14 characters
<fe><ff>^@u^@c^@s^@-^@2^@
:$r Xtest4x
"Xtest4x" [Incomplete last line] 2 lines, 18 characters
<ff><fe>u^@c^@s^@-^@2^@l^@e^@
:$r Xtest5x
"Xtest5x" 1 line, 28 characters

^@
^@^@<fe><ff>^@^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@
:$r Xtest6x
"Xtest6x" [Incomplete last line] 2 lines, 36 characters
<ff><fe>^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@l^@^@^@e^@^@^@
:set nobin ff&               " Write the file in default format
:w! test.out
"test.out" 44 lines, 409 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test42 = test61; then \
#	  if diff test.out test42.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test42.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test42.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test43.failed test.ok test.out X* viminfo
cp test43.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test43.in
[?1h="test43.in" 34 lines, 473 charactersTests for regexp with various magic settings.

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo
/^1
/a*b\{2}c\+/e
x/\Md\*e\{2}f\+/e
x:set nomagic
/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$
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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with various magic settings./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 19 lines, 268 characters written:set ff& cpo+=A
/ENDTEST

:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo
/^1

1 a aa abb abbccc
/a*b\{2}c\+/e
/\Md\*e\{2}f\+/e

2 d dd dee deefff
:set nomagic
/g\*h\{2}i\+/e

3 g gg ghh ghhiii
/\mj*k\{2}l\+/e

4 j jj jkk jkklll
/\vm*n{2}o+/e

5 m mm mnn mnnooo
/\V^aa$

6 x ^aa$ xaa$ x
:set magic
/\v(a)(b)\2\1\1/e

7 (a)(b) abbaa
/\V[ab]\(\[xy]\)\1

8 axx [ab]xxab]x
:$


9 foobar
:set undolevels=100
?bar?
~

1 more line; before #2  0 seconds agobar
9 foo
:"
:?^1?,$w! test.out
"test.out" [New] 11L, 137C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test43 = test61; then \
#	  if diff test.out test43.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test43.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test43.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test44.failed test.ok test.out X* viminfo
cp test44.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test44.in
[?1h="test44.in" 81 lines, 1492 charactersTests for regexp with multi-byte encoding and various magic settings.
Test matchstr() with a count and multi-byte chars.
See test99 for exactly the same test with re=2.

STARTTEST
:so mbyte.vim
:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
:set re=1
/^1
/a*b\{2}c\+/e
x/\Md\*e\{2}f\+/e
x:set nomagic
/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$
x:set magic
/\v(a)(b)\2\1\1/e
x/\V[ab]\(\[xy]\)\1
x:" Now search for multi-byte without composing char
/ม
x:" Now search for multi-byte with composing char
f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with multi-byte encoding and various magic settings./^STARTTEST

:new
:$put =['dog(a', 'cat(']
/(/e+
"ayn:bd!
:$put =''
G"ap
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
:new
:$put =['dog(a', 'cat(']
/(/e+
"ayn:bd!
:$put =''
G"ap
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
:" Test \%u, [\u] and friends
:" c
/\%u20ac

:" d
/[\u4f7f\u5929]\+

:" e
/\%U12345678

:" f
/[\U1234abcd\u1234\uabcd]

:" g
/\%d21879b

:" j Test backwards search from a multi-byte char
/x

:"
:" l Test what 7.3.192 fixed
/^l

2 d dd dee deeff
3 g gg ghh ghhii
4 j jj jkk jkkll
5 m mm mnn mnnoo
[No Name]                                                                       e y f z
g abb
test.out [+]                                                                    :$put =['dog(a', 'cat(']
dog(a
cat([+]/(/e+
/(/e+1
search hit BOTTOM, continuing at TOP:bd!
1 a aa abb abbcc
2 d dd dee deeff
3 g gg ghh ghhii
4 j jj jkk jkkll
5 m mm mnn mnnoo
6 x aa$ x
7 (a)(b) abba
8 axx ab]xx
e y
a
cat(

:w!
"test.out" 25L, 271C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test44 = test61; then \
#	  if diff test.out test44.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test44.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test44.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test45.failed test.ok test.out X* viminfo
cp test45.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test45.in
[?1h="test45.in" 90 lines, 1953 charactersTests for folding. vim: set ft=vim :

STARTTEST
:so small.vim
:" We also need the +syntax feature here.
:if !has("syntax")
   e! test.ok
   w! test.out
   qa!
:endif
:" basic test if a fold can be created, opened, moving to the end and closed
/^1
zf2j:call append("$", "manual " . getline(foldclosed(".")))
zo:call append("$", foldclosed("."))
]z:call append("$", getline("."))
zc:call append("$", getline(foldclosed(".")))
:" test folding with markers.
:set fdm=marker fdl=1 fdc=3
/^5
:call append("$", "marker " . foldlevel("."))
[z:call append("$", foldlevel("."))
jo{{ ^[r{jj:call append("$", foldlevel("."))
kYpj:call append("$", foldlevel(".")):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for folding. vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 73 lines, 1820 characters written:set ff& cpo+=A
/ENDTEST:new
iTest fdm=indent and :move bug END
line2Test fdm=indent STARTline3line4^[
:set fdm=indent
:1m1
2jzc:m0
:%w >> test.out
:qa!
ENDTEST

1 aa
2 bb
3 cc
4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg
8 hh
9 ii
a jj
:so! Xdotest
:so small.vim
:" We also need the +syntax feature here.
:if !has("syntax")

:     e! test.ok

:     w! test.out

:     qa!

:  :endif
:new
iTest fdm=indent and :move bug END
line2Test fdm=indent START:" basic test if a fold can be created, opened, moving to the end and closed
/^1
+--  3 lines: 1 aa--------------------------------------------------------------4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg8 hh9 ii
a jj
b kk
last:call append("$", "manual " . getline(foldclosed(".")))
1 aa2 bb3 cc4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg
8 hh
9 ii
a jj:call append("$", foldclosed("."))


:call append("$", getline("."))
+--  3 lines: 1 aa--------------------------------------------------------------4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg8 hh9 ii
a jj
b kk
last:call append("$", getline(foldclosed(".")))
:" test folding with markers.
:set fdm=marker fdl=1 fdc=3
   :new
   iTest fdm=indent and :move bug END
   line2
           Test fdm=indent START
           line3
           line4^[
   :set fdm=indent
   :1m1
   2jzc:m0
   :%w >> test.out
   :qa!
   ENDTEST
   
   1 aa   2 bb   3 cc-  4 dd {{{
|- 5 ee {{{ }}}
|  6 ff }}}
   7 gg
   8 hh
   9 ii
   a jj/^5
:call append("$", "marker " . foldlevel("."))
:call append("$", foldlevel("."))
{{ |  6 ff }}}-{|
|
|
|


:call append("$", foldlevel("."))
6 ff }}}
 7 gg
 8 hh:call append("$", foldlevel("."))
:" test folding with indent
:set fdm=indent sw=2
-+ +---  3 lines: Test fdm=indent START-----------------------------------------:set fdm=indent:1m12jzc:m0%w >> test.out:qa!ENDTEST1 aa2 bb3 cc4 dd {{{5 ee {{{ }}}
 {{{  6 ff }}}  6 ff }}}
  7 gg 8 hh9 iia jj/^2 b
search hit BOTTOM, continuing at TOP
-  2 bb
|-    3 cc:call append("$", "indent " . foldlevel("."))
:call append("$", foldlevel("."))
:" test syntax folding
:set fdm=syntax fdl=0
          Test fdm=indent START        line3        line4^[:set fdm=indent1m12jzc:m0:%w >> test.out:qa!ENDTEST
   1 aa  2 bb    3 cc4 dd {{{5 ee {{{ }}}{{{6 ff }}}6 ff }}}7 gg8 hh:syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3
+  +--  8 lines: 4 dd ----------------------------------------------------------a jjb kklastmanual 1 aa-13 cc:syn region Fd1 start="ee" end="ff" fold contained
:syn region Fd2 start="gg" end="hh" fold contained
:syn region Fd3 start="commentstart" end="commentend" fold contained







   1 aa
   marker 2
   1
   1
   0
   indent 2
   1:call append("$", "folding " . getline("."))
:call append("$", getline("."))

--4 dd {{{commentstart  ||5 ee {{{ }}}
||{{{||6 ff }}}
||6 ff }}}||7 gg
||8 hh
||9 ii
||a jj||b kk
||last
||manual 1 aa
||-1||3 cc commentend- 
|-

| 
  
  
  
  
  
  :set fdl=1
+ +---  3 lines: 5 ee --------------------------------------------------------- 6 ff }}}+ +---  2 lines: 7 gg----------------------------------------------------------9 ii  a jj
  b kk
 lastmanual 1 aa-13 cc1 aamarker 21:call append("$", getline("."))
:set fdl=0
+  +--  8 lines: 4 dd commentstart  commentend----------------------------------  a jj b kk  last manual 1 aa-13 cc1 aarker 2110indent
-4 dd {{{commentstart  commentend|-5 ee {{{ }}}
||{{{||6 ff }}}
|6 ff }}}|-7 gg
||8 hh
|9 iia jjb kklastmanual 1 aa-13 cc   :1m1
   2jzc:m0
   :%w >> test.out
   :qa!
   ENDTEST
   
   1 aa
     2 bb
       3 cc
-  4 dd {{{commentstart  commentend
|- 5 ee {{{ }}}
|| {{{
|| 6 ff }}}
|  6 ff }}}
|- 7 gg
|| 8 hh
|  9 ii
   a jj
   b kk
   last
   manual 1 aa
   -1
   3 cc:call append("$", getline("."))
:" test expression folding
:fun Flvl()

:    let l = getline(v:lnum)

:    if l =~ "bb$"

:        return 2

:      elseif l =~ "gg$"

:        return "s1"

:      elseif l =~ "ii$"

:        return ">2"

:      elseif l =~ "kk$"

:        return "0"

:      endif

:    return "="

:  endfun
   :1m1
   2jzc:m0
   :%w >> test.out
   :qa!
   ENDTEST
   
   1 aa
     2 bb
       3 cc
-  4 dd {{{commentstart  commentend
|- 5 ee {{{ }}}
|| {{{:set fdm=expr fde=Flvl()
+  +-- 11 lines: 2 bb-----------------------------------------------------------b kk last  manual 1 aa  -1  3 cc 1 aa  marker 2
  1 10indent 21+  +--  4 lines: folding 9 ii---------------------------------------------------~~/bb$
search hit BOTTOM, continuing at TOP--  2 bb||    3 cc
||4 dd {{{commentstart  commentend
||5 ee {{{ }}}
||{{{
||6 ff }}}
||6 ff }}}
||7 gg|8 hh
|+ +---  2 lines: 9 ii----------------------------------------------------------b kklastmanual 1 aa
 -13 cc1 aa:call append("$", "expr " . foldlevel("."))
/hh$
:call append("$", foldlevel("."))
/ii$
-9 ii||a jjb kklastmanual 1 aa-13 cc:call append("$", foldlevel("."))
/kk$
:call append("$", foldlevel("."))
:/^last/+1,$w! test.out
"test.out" [New File] 18 lines, 96 characters written:delfun Flvl
:new
  
  
  
  ~~~~~~~~~~
[No Name]                                                                       5 ee {{{ }}}{{{6 ff }}}|6 ff }}}|7 gg 8 hh
|-9 ii
||a jjb kklast
test45.in [+]                                                                   Test fdm=indent and :move bug ENDline2 Test fdm=indent START line3 line4[+]:set fdm=indent
+  +--  3 lines: Test fdm=indent START------------------------------------------~~:1m1
:m0
3 lines moved+  +--  3 lines: Test fdm=indent START------------------------------------------Test fdm=indent and :move bug END
 line2:%w >> test.out
"test.out" 5 lines, 77 characters appendedtest.out [+] :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test45 = test61; then \
#	  if diff test.out test45.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test45.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test45.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test48.failed test.ok test.out X* viminfo
cp test48.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test48.in
[?1h="test48.in" 83 lines, 1658 charactersThis is a test of 'virtualedit'.

STARTTEST
:so small.vim
:set noswf
:set ve=all
-dgg
:"
:"   Insert "keyword keyw", ESC, C CTRL-N, shows "keyword ykeyword".
:"    Repeating CTRL-N fixes it. (Mary Ellen Foster)
2/w
C^N^[
:"
:"   Using "C" then then <CR> moves the last remaining character to the next
:"    line.  (Mary Ellen Foster)
j^/are
C^Mare belong to vim^[
:"
:"   When past the end of a line that ends in a single character "b" skips
:"    that word.
^$15lbC7^[
:"
:"   Make sure 'i' works:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
This is a test of 'virtualedit'./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 61 lines, 1442 characters written:set ff& cpo+=A
/ENDTEST:set display=
:"
:"   Test for ^Y/^E due to bad w_virtcol value, reported by
:"   Roy <royl@netropolis.net>.
^O^[3li^E^[4li^E^[4li^E   <-- should show the name of a noted text editor^[
^o^[4li^Y^[4li^Y^[4li^Y   <-- and its version number^[-dd
:"
:" Test for yanking and pasting using the small delete register
gg/^foo
dewve"-p
:wq! test.out
ENDTEST
foo, bar
keyword keyw
all your base are belong to us
1 2 3 4 5 6
'i'
'C'
'a'
'A'
'D'
this is a test
this is a test
:so! Xdotest
:so small.vim
:set noswf
:set ve=all
65 fewer lines











this is a test
"r"
"r"
a^Vb^Msd
abcv6efi.him0kl


~
~
~
~
~65 fewer lines
:"
:"   Insert "keyword keyw", ESC, C CTRL-N, shows "keyword ykeyword".
:"    Repeating CTRL-N fixes it. (Mary Ellen Foster)
/w
$Scanning tags.
The only matchword:"
:"   Using "C" then then <CR> moves the last remaining character to the next
:"    line.  (Mary Ellen Foster)

/are
search hit BOTTOM, continuing at TOP$are belong to vim
1 2 3 4 5 6
'i
'C
'a
'A
'D'this is a test

"r"     
a^Vb^Msdabcv6efi.him0kl:"
:"   When past the end of a line that ends in a single character "b" skips
:"    that word.

$7:"
:"   Make sure 'i' works

'i'   <-- should be 3 ' ':"
:"   Make sure 'C' works

'C'   $<-- should be 3 ' ':"
:"   Make sure 'a' works

'a'    <-- should be 4 ' ':"
:"   Make sure 'A' works

'A'   <-- should be 0 ' ':"
:"   Make sure 'D' works

'D'   <-- 'D' should be intact:"
:"   Test for yank bug reported by Mark Waggoner.
:set ve=block

aaaaaablock of 4 lines yanked3 more linesa
a
a
 
:"
:" Test "r" beyond the end of the line
:set ve=all
/^"r"
search hit BOTTOM, continuing at TOP"r"    xx<-- should be 'x':"
:" Test "r" on a tab
:" Note that for this test, 'ts' must be 8 (the default).

"r"  xx  <-- should be '  x  ':"
:"   Test to make sure 'x' can delete control characters
:set display=uhex
<16>b<0d>sd
<16>b<0d>sdb<0d>sd<0d>sdsdd[This line should contain only the text between the brackets.]:set display=
:"
:"   Test for ^Y/^E due to bad w_virtcol value, reported by
:"   Roy <royl@netropolis.net>.

   vv   ii   m   <-- should show the name of a noted text editor
    66   ..   0   <-- and its version number

    :"
:" Test for yanking and pasting using the small delete register
/^foo
search hit BOTTOM, continuing at TOP, bar, bafoo
keyw:wq! test.out
"test.out" [New File] 23 lines, 479 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test48 = test61; then \
#	  if diff test.out test48.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test48.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test48.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test51.failed test.ok test.out X* viminfo
cp test51.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test51.in
[?1h="test51.in" 36 lines, 808 charactersTests for ":highlight". vim: set ft=vim :

STARTTEST
:so small.vim
:" basic test if ":highlight" doesn't crash
:highlight
:hi Search
:" test setting colors.
:" test clearing one color and all doesn't generate error or warning
:hi NewGroup term=bold cterm=italic ctermfg=DarkBlue ctermbg=Grey gui= guifg=#000ff00 guibg=Cyan
:hi Group2 term= cterm=
:hi Group3 term=underline cterm=bold
:redir! >test.out
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group2 NONE
:hi Group2
:hi clear:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for ":highlight". vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 31 lines, 746 characters written:set ff& cpo+=A
/ENDTEST












:hi Group3
:hi Crash term='asdf
:redir END
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
:%s/ctermfg=\d*/ctermfg=2/
:%s/ctermbg=\d*/ctermbg=3/
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
:" fix the fileformat
:set ff&
:wq!
ENDTEST

:so! Xdotest
:so small.vim
:" basic test if ":highlight" doesn't crash
:highlight

SpecialKey     xxx term=bold ctermfg=1 guifg=Blue

EndOfBuffer    xxx links to NonText

NonTextxxx term=bold ctermfg=9 gui=bold guifg=Blue

Directory      xxx term=bold ctermfg=1 guifg=Blue

ErrorMsgxxx term=standout ctermfg=15 ctermbg=4 guifg=White guibg=Red

IncSearch      xxx term=reverse cterm=reverse gui=reverse

Searchxxx term=reverse ctermfg=0 ctermbg=14 guibg=Yellow

MoreMsgxxx term=bold ctermfg=2 gui=bold guifg=SeaGreen

ModeMsgxxx term=bold cterm=bold gui=bold

LineNrxxx term=underline ctermfg=6 guifg=Brown

CursorLineNr   xxx term=bold ctermfg=6 gui=bold guifg=Brown

Questionxxx term=standout ctermfg=2 gui=bold guifg=SeaGreen

StatusLine     xxx term=bold,reverse cterm=bold,reverse gui=bold,reverse

StatusLineNC   xxx term=reverse cterm=reverse gui=reverse

VertSplit      xxx term=reverse cterm=reverse gui=reverse

Titlexxx term=bold ctermfg=5 gui=bold guifg=Magenta

Visualxxx term=reverse cterm=reverse guibg=LightGrey

VisualNOS      xxx term=bold,underline cterm=bold,underline gui=bold,underline

WarningMsg     xxx term=standout ctermfg=4 guifg=Red

WildMenuxxx term=standout ctermfg=0 ctermbg=14 guifg=Black guibg=Yellow

Foldedxxx term=standout ctermfg=1 ctermbg=7 guifg=DarkBlue

guibg=LightGrey

FoldColumn     xxx term=standout ctermfg=1 ctermbg=7 guifg=DarkBlue guibg=Grey

DiffAddxxx term=bold ctermbg=9 guibg=LightBlue

DiffChange     xxx term=bold ctermbg=13 guibg=LightMagenta

DiffDelete     xxx term=bold ctermfg=9 ctermbg=11 gui=bold guifg=Blue

guibg=LightCyan

DiffTextxxx term=reverse cterm=bold ctermbg=12 gui=bold guibg=Red

SignColumn     xxx term=standout ctermfg=1 ctermbg=7 guifg=DarkBlue guibg=Grey

Concealxxx ctermfg=7 ctermbg=8 guifg=LightGrey guibg=DarkGrey

SpellBadxxx term=reverse ctermbg=12 gui=undercurl guisp=Red

SpellCapxxx term=reverse ctermbg=9 gui=undercurl guisp=Blue

SpellRare      xxx term=reverse ctermbg=13 gui=undercurl guisp=Magenta

SpellLocal     xxx term=underline ctermbg=11 gui=undercurl guisp=DarkCyan

Pmenuxxx ctermfg=0 ctermbg=13 guibg=LightMagenta

PmenuSelxxx ctermfg=0 ctermbg=7 guibg=Grey

PmenuSbar      xxx ctermbg=7 guibg=Grey

PmenuThumb     xxx ctermbg=0 guibg=Black

TabLinexxx term=underline cterm=underline ctermfg=0 ctermbg=7

gui=underline guibg=LightGrey

TabLineSel     xxx term=bold cterm=bold gui=bold

TabLineFill    xxx term=reverse cterm=reverse gui=reverse

CursorColumn   xxx term=reverse ctermbg=7 guibg=Grey90

CursorLine     xxx term=underline cterm=underline guibg=Grey90

ColorColumn    xxx term=reverse ctermbg=12 guibg=LightRed

Cursorxxx guifg=bg guibg=fg

lCursorxxx guifg=bg guibg=fg

MatchParen     xxx term=reverse ctermbg=11 guibg=Cyan

Normalxxx cleared

Press ENTER or type command to continue:hi Search

Searchxxx term=reverse ctermfg=0 ctermbg=14 guibg=Yellow

Press ENTER or type command to continue:" test setting colors.
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group2 NONE
:hi Group2
:hi clear
:hi Group3
:hi Crash term='asdf
:redir END
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
:%s/ctermfg=\d*/ctermfg=2/
:%s/ctermbg=\d*/ctermbg=3/
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
:" fix the fileformat
:set ff&
:wq!
ENDTEST

:" test clearing one color and all doesn't generate error or warning
:hi NewGroup term=bold cterm=italic ctermfg=DarkBlue ctermbg=Grey gui= guifg=#0

0ff00 guibg=Cyan
E418: Illegal value: guifg=#00ff00Press ENTER or type command to continue:hi Group2 term= cterm=
E418: Illegal value: cterm=

Press ENTER or type command to continue:hi Group3 term=underline cterm=bold
:hi NewGroup
:hi Group2
:redir! >test.out
:hi NewGroup

NewGroupxxx term=bold cterm=italic ctermfg=1 ctermbg=7

Press ENTER or type command to continue:hi Group2

Group2xxx cleared

Press ENTER or type command to continue:hi Group3

Group3xxx term=underline cterm=bold

Press ENTER or type command to continue:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi NewGroup

NewGroupxxx cleared

Press ENTER or type command to continue:hi Group2

Group2xxx cleared

Press ENTER or type command to continue:hi Group2 NONE
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi Group2

Group2xxx cleared

Press ENTER or type command to continue:hi clear
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group2 NONE
:hi Group2
:hi clear
:hi Group3
:hi Crash term='asdf
:redir END
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
:%s/ctermfg=\d*/ctermfg=2/
:%s/ctermbg=\d*/ctermbg=3/
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
:" fix the fileformat
:set ff&
:wq!
ENDTEST

:hi Group3

Group3xxx cleared

Press ENTER or type command to continue:hi Crash term='asdf
E475: Invalid argument: term='asdf

Press ENTER or type command to continue:redir END
:hi NewGroup
:hi Group2
:hi Group3
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
"test.out" 20 lines, 289 charactersNewGroup       xxx term=bold cterm=italic ctermfg=1 ctermbg=7Group2         xxx clearedGroup3         xxx term=underline cterm=boldNewGroup       xxx clearedGroup2         xxx clearedGroup2         xxx clearedGroup3         xxx clearedE475: Invalid argument: term='asdf~~
~:%s/ctermfg=\d*/ctermfg=2/
2
:%s/ctermbg=\d*/ctermbg=3/
3
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
term='asdf:" fix the fileformat
:set ff&
:wq!
"test.out" 20 lines, 271 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test51 = test61; then \
#	  if diff test.out test51.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test51.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test51.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test53.failed test.ok test.out X* viminfo
cp test53.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test53.in
[?1h="test53.in" 75 lines, 1763 charactersTests for string and html text objects. vim: set ft=vim :

Note that the end-of-line moves the cursor to the next test line.

Also test match() and matchstr()

STARTTEST
:so small.vim
/^start:/
da"
0va'a'rx
02f`da`
0fXdi"
03f'vi'ry
:set quoteescape=+*-
di`
$F"va"oha"i"rz
:"
/^<begin
jfXdit
0fXdit
fXdat
0fXdat:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for string and html text objects. vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 47 lines, 1237 characters written:set ff& cpo+=A
/ENDTEST:put =match('abc', '$', 4, 1) " -1
:put =match('abc', '\zs', 0, 1) " 0
:put =match('abc', '\zs', 0, 2) " 1
:put =match('abc', '\zs', 0, 3) " 2
:put =match('abc', '\zs', 0, 4) " 3
:put =match('abc', '\zs', 0, 5) " -1
:put =match('abc', '\zs', 1, 1) " 1
:put =match('abc', '\zs', 2, 1) " 2
:put =match('abc', '\zs', 3, 1) " 3
:put =match('abc', '\zs', 4, 1) " -1
:/^start:/,/^end:/wq! test.out
ENDTEST

start: "wo\"rd\\" foo
'foo' 'bar' 'piep'
bla bla `quote` blah
out " in "noXno"
"'" 'blah' rep 'buh'
bla `s*`d-`+++`l**` b`la
voo "nah" sdf " asdf" sdf " sdf" sd

<begin>
-<b>asdf<i>Xasdf</i>asdf</b>-
:so! Xdotest
:so small.vim
/^start:/
fo
'foo' 'bar'
xxxxxxxxxxxx

blah
"
' repyyyyy:set quoteescape=+*-
` b`la" sdf"" " asdf" sdf ah" sdf "
voo "zzzzzzzzzzzzzzzzzzzzzzzzzzzz
voo "
:"
/^<begin

</i>asdf</b>-
-<b>asdX<i>a<i />sdf</i>asdf</b>-
</b>-
-<b>asdf<i>Xasdf</i>asdf</b>-
-<b>asdf</b>-
-<b>asdX<i>as<b />df</i>asdf</b>-

--
-<b>
-<b></b>
</begin>
:"
:put =matchstr(\"abcd\", \".\", 0, 2) " b

b
:put =matchstr(\"abcd\", \"..\", 0, 2) " bc

bc
:put =matchstr(\"abcd\", \".\", 2, 0) " c (zero and negative -> first match)

c
:put =matchstr(\"abcd\", \".\", 0, -1) " a

a
:put =match(\"abcd\", \".\", 0, 5) " -1

-1
:put =match(\"abcd\", \".\", 0, -1) " 0

0
:put =match('abc', '.', 0, 1) " 0

0
:put =match('abc', '.', 0, 2) " 1

1
:put =match('abc', '.', 0, 3) " 2

2
:put =match('abc', '.', 0, 4) " -1

-1
:put =match('abc', '.', 1, 1) " 1

1
:put =match('abc', '.', 2, 1) " 2

2
:put =match('abc', '.', 3, 1) " -1

-1
:put =match('abc', '$', 0, 1) " 3

3
:put =match('abc', '$', 0, 2) " -1

-1
:put =match('abc', '$', 1, 1) " 3

3
:put =match('abc', '$', 2, 1) " 3

3
:put =match('abc', '$', 3, 1) " 3

3
:put =match('abc', '$', 4, 1) " -1

-1
:put =match('abc', '\zs', 0, 1) " 0

0
:put =match('abc', '\zs', 0, 2) " 1

1
:put =match('abc', '\zs', 0, 3) " 2

2
:put =match('abc', '\zs', 0, 4) " 3

3
:put =match('abc', '\zs', 0, 5) " -1

-1
:put =match('abc', '\zs', 1, 1) " 1

1
:put =match('abc', '\zs', 2, 1) " 2

2
:put =match('abc', '\zs', 3, 1) " 3

3
:put =match('abc', '\zs', 4, 1) " -1

-1
:/^start:/,/^end:/wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 45 lines, 284 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test53 = test61; then \
#	  if diff test.out test53.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test53.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test53.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test55.failed test.ok test.out X* viminfo
cp test55.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test55.in
[?1h="test55.in" 586 lines, 12256 charactersTests for List and Dictionary types.     vim: set ft=vim :

STARTTEST
:so small.vim
:fun Test(...)
:lang C
:" Creating List directly with different types
:let l = [1, 'as''d', [1, 2, function("strlen")], {'a': 1},]
:$put =string(l)
:$put =string(l[-1])
:$put =string(l[-4])
:try
:  $put =string(l[-5])
:catch
:  $put =v:exception[:14]
:endtry
:" List slices
:$put =string(l[:])
:$put =string(l[1:])
:$put =string(l[:-2])
:$put =string(l[0:8])
:$put =string(l[8:-1])
:":set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for List and Dictionary types.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 580 lines, 12170 characters written:set ff& cpo+=A
/ENDTEST:$put =string(l)
:endfun
:"
:call Test(1, 2, [3, 4], {5: 6})  " This may take a while
:"
:delfunc Test
: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^R=a^M^[:"
:lang C
:redir => a
:try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
:redir END
o^R=a^M^[:"
:"
:/^start:/,$wq! test.out
ENDTEST

start:


:so! Xdotest
:so small.vim
:fun Test(...)

:  :lang C

:  :" Creating List directly with different types

:  :let l = [1, 'as''d', [1, 2, function("strlen")], {'a': 1},]

:  :$put =string(l)

:  :$put =string(l[-1])

:  :$put =string(l[-4])

:  :try

:    :  $put =string(l[-5])

:    :catch

:    :  $put =v:exception[:14]

:    :endtry

:  :" List slices

:  :$put =string(l[:])

:  :$put =string(l[1:])

:  :$put =string(l[:-2])

:  :$put =string(l[0:8])

:  :$put =string(l[8:-1])

:  :"

:  :" List identity

:  :let ll = l

:  :let lx = copy(l)

:  :try

:    :  $put =(l == ll) . (l isnot ll) . (l is ll) . (l == lx) . (l is lx) . (l

isnot lx)

:    :catch

:    :  $put =v:exception

:    :endtry

:  :"

:  :" Creating Dictionary directly with different types

:  :let d = {001: 'asd', 'b': [1, 2, function('strlen')], -1: {'a': 1},}

:  :$put =string(d) . d.1

:  :$put =string(sort(keys(d)))

:  :$put =string (values(d))

:  :for [key, val] in items(d)

:    :  $put =key . ':' . string(val)

:    :  unlet key val

:    :endfor

:  :call extend  (d, {3:33, 1:99})

:  :call extend(d, {'b':'bbb', 'c':'ccc'}, "keep")

:  :try

:    :  call extend(d, {3:333,4:444}, "error")

:    :catch

:    :  $put =v:exception[:15] . v:exception[-1:-1]

:    :endtry

:  :$put =string(d)

:  :call filter(d, 'v:key =~ ''[ac391]''')

:  :$put =string(d)

:  :"

:  :" Dictionary identity

:  :let dd = d

:  :let dx = copy(d)

:  :try

:    :  $put =(d == dd) . (d isnot dd) . (d is dd) . (d == dx) . (d is dx) . (d

isnot dx)

:    :catch

:    :  $put =v:exception

:    :endtry

:  :"

:  :"

:  :" removing items with :unlet

:  :unlet l[2]

:  :$put =string(l)

:  :let l = range(8)

:  :try

:    :unlet l[:3]

:    :unlet l[1:]

:    :catch

:    :$put =v:exception

:    :endtry

:  :$put =string(l)

:  :"

:  :unlet d.c

:  :unlet d[-1]

:  :$put =string(d)

:  :"

:  :" removing items out of range: silently skip items that don't exist

:  let l = [0, 1, 2, 3]

:  :unlet l[2:1]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[2:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[2:3]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[2:4]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[2:5]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-1:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-2:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-3:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-4:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-5:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-6:2]

:  :$put =string(l)

:  :"

:  :" assignment to a list

:  :let l = [0, 1, 2, 3]

:  :let [va, vb] = l[2:3]

:  :$put =va

:  :$put =vb

:  :try

:    :  let [va, vb] = l

:    :catch

:    :  $put =v:exception[:14]

:    :endtry

:  :try

:    :  let [va, vb] = l[1:1]

:    :catch

:    :  $put =v:exception[:14]

:    :endtry

:  :"

:  :" manipulating a big Dictionary (hashtable.c has a border of 1000 entries)

:  :let d = {}

:  :for i in range(1500)

:    : let d[i] = 3000 - i

:    :endfor

:  :$put =d[0] . ' ' . d[100] . ' ' . d[999] . ' ' . d[1400] . ' ' . d[1499]

:  :try

:    :  let n = d[1500]

:    :catch

:    :  $put =substitute(v:exception, '\v(.{14}).*( \d{4}).*', '\1\2', '')

:    :endtry

:  :" lookup each items

:  :for i in range(1500)

:    : if d[i] != 3000 - i

:      :  $put =d[i]

:      : endif

:    :endfor

:  : let i += 1

:  :" delete even items

:  :while i >= 2

:    : let i -= 2

:    : unlet d[i]

:    :endwhile

:  :$put =get(d, 1500 - 100, 'NONE') . ' ' . d[1]

:  :" delete odd items, checking value, one intentionally wrong

:  :let d[33] = 999

:  :let i = 1

:  :while i < 1500

:    : if d[i] != 3000 - i

:      :  $put =i . '=' . d[i]

:      : else

:      :  unlet d[i]

:      : endif

:    : let i += 2

:    :endwhile

:  :$put =string(d)  " must be almost empty now

:  :unlet d

:  :"

:  :" Dictionary function

:  :let dict = {}

:  :func dict.func(a) dict

:    :  $put =a:a . len(self.data)

:    :endfunc

:    :let dict.data = [1,2,3]

:    :call dict.func("len: ")

:    :let x = dict.func("again: ")

:    :let Fn = dict.func

:    :call Fn('xxx')

:    :" 

:    :" Function in script-local List or Dict

:    :let g:dict = {}

:    :function g:dict.func() dict

:      :  $put ='g:dict.func'.self.foo[1].self.foo[0]('asdf')

:      :endfunc

:      :let g:dict.foo = ['-', 2, 3]

:      :call insert(g:dict.foo, function('strlen'))

:      :call g:dict.func()

:      :" 

:      :" Nasty: remove func from Dict that's being called (works)

:      :let d = {1:1}

:      :func d.func(a)

::  return "a:". a:a

::endfunc

::$put =d.func(string(remove(d, 'func')))

::"

::" Nasty: deepcopy() dict that refers to itself (fails when noref used

)
::let d = {1:1, 2:2}

::let l = [4, d, 6]

::let d[3] = l

::let dc = deepcopy(d)

::try

::  let dc = deepcopy(d, 1)

::catch

::  $put =v:exception[:14]

::endtry

::let l2 = [0, l, l, 3]

::let l[1] = l2

::let l3 = deepcopy(l2)

::$put ='same list: ' . (l3[1] is l3[2])

::"

::" Locked variables

::for depth in range(5)

::  $put ='depth is ' . depth

::  for u in range(3)

::    unlet l

::    let l = [0, [1, [2, 3]], {4: 5, 6: {7: 8}}]

::    exe "lockvar " . depth . " l"

::    if u == 1

::      exe "unlockvar l"

::    elseif u == 2

::      exe "unlockvar " . depth . " l"

::    endif

::    let ps = islocked("l").islocked("l[1]").islocked("l[1][1]").i

slocked("l[1][1][0]").'-'.islocked("l[2]").islocked("l[2]['6']").islocked("l[2][

'6'][7]")

::    $put =ps

::    let ps = ''

::    try

::      let l[1][1][0] = 99

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[1][1] = [99]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[1] = [99]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[2]['6'][7] = 99

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[2][6] = {99: 99}

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[2] = {99: 99}

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l = [99]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    $put =ps

::  endfor

::endfor

::"

::" Unletting locked variables

::$put ='Unletting:'

::for depth in range(5)

::  $put ='depth is ' . depth

::  for u in range(3)

::    unlet l

::    let l = [0, [1, [2, 3]], {4: 5, 6: {7: 8}}]

::    exe "lockvar " . depth . " l"

::    if u == 1

::      exe "unlockvar l"

::    elseif u == 2

::      exe "unlockvar " . depth . " l"

::    endif

::    let ps = islocked("l").islocked("l[1]").islocked("l[1][1]").i

slocked("l[1][1][0]").'-'.islocked("l[2]").islocked("l[2]['6']").islocked("l[2][

'6'][7]")

::    $put =ps

::    let ps = ''

::    try

::      unlet l[2]['6'][7]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[2][6]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[2]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[1][1][0]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[1][1]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[1]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    $put =ps

::  endfor

::endfor

::"

::" Locked variables and :unlet or list / dict functions

::$put ='Locks and commands or functions:'

::"

::$put ='No :unlet after lock on dict:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar 1 d

::try

::  unlet d.a

::  $put ='did :unlet'

::catch

::  $put =v:exception[:16]

::endtry

::$put =string(d)

::"

::$put =':unlet after lock on dict item:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar d.a

::try

::  unlet d.a

::  $put ='did :unlet'

::catch

::  $put =v:exception[:16]

::endtry

::$put =string(d)

::"

::$put ='filter() after lock on dict item:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar d.a

::try

::  call filter(d, 'v:key != "a"')

::  $put ='did filter()'

::catch

::  $put =v:exception[:16]

::endtry

::$put =string(d)

::"

::$put ='map() after lock on dict:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar 1 d

::try

::  call map(d, 'v:val + 200')

::  $put ='did map()'

::catch

::  $put =v:exception[:16]

::endtry

::$put =string(d)

::"

::$put ='No extend() after lock on dict item:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar d.a

::try

::  $put =string(extend(d, {'a': 123}))

::  $put ='did extend()'

::catch

::  $put =v:exception[:14]

::endtry

::$put =string(d)

::"

::$put ='No remove() of write-protected scope-level variable:'

::fun! Tfunc(this_is_a_loooooooooong_parameter_name)

::  try

::    $put =string(remove(a:, 'this_is_a_loooooooooong_parameter_na

me'))

::    $put ='did remove()'

::  catch

::    $put =v:exception[:14]

::  endtry

::endfun

::call Tfunc('testval')

::"

::$put ='No extend() of write-protected scope-level variable:'

::fun! Tfunc(this_is_a_loooooooooong_parameter_name)

::  try

::    $put =string(extend(a:, {'this_is_a_loooooooooong_parameter

_name': 1234}))

::    $put ='did extend()'

::  catch

::    $put =v:exception[:14]

::  endtry

::endfun

::call Tfunc('testval')

::"

::$put ='No :unlet of variable in locked scope:'

::let b:testvar = 123

::lockvar 1 b:

::try

::  unlet b:testvar

::  $put ='b:testvar was :unlet: '. (!exists('b:testvar'))

::catch

::  $put =v:exception[:16]

::endtry

::unlockvar 1 b:

::unlet! b:testvar

::"

::$put ='No :let += of locked list variable:'

::let l = ['a', 'b', 3]

::lockvar 1 l

::try

::  let l += ['x']

::  $put ='did :let +='

::catch

::  $put =v:exception[:14]

::endtry

::$put =string(l)

::"

::unlet l

::let l = [1, 2, 3, 4]

::lockvar! l

::$put =string(l)

::unlockvar l[1]

::unlet l[0:1]

::$put =string(l)

::unlet l[1:2]

::$put =string(l)

::unlockvar l[1]

::let l[0:1] = [0, 1]

::$put =string(l)

::let l[1:2] = [0, 1]

::$put =string(l)

::unlet l

::" :lockvar/islocked() triggering script autoloading

::set rtp+=./sautest

::lockvar g:footest#x

::unlockvar g:footest#x

::$put ='locked g:footest#x:'.islocked('g:footest#x')

::$put ='exists g:footest#x:'.exists('g:footest#x')

::$put ='g:footest#x: '.g:footest#x

::"

::" a:000 function argument

::" first the tests that should fail

::try

::  let a:000 = [1, 2]

::catch

::  $put ='caught a:000'

::endtry

::try

::  let a:000[0] = 9

::catch

::  $put ='caught a:000[0]'

::endtry

::try

::  let a:000[2] = [9, 10]

::catch

::  $put ='caught a:000[2]'

::endtry

::try

::  let a:000[3] = {9: 10}

::catch

::  $put ='caught a:000[3]'

::endtry

::" now the tests that should pass

::try

::  let a:000[2][1] = 9

::  call extend(a:000[2], [5, 6])

::  let a:000[3][5] = 8

::  let a:000[3]['a'] = 12

::  $put =string(a:000)

::catch

::  $put ='caught ' . v:exception

::endtry

::"

::" reverse(), sort(), uniq()

::let l = ['-0', 'A11', 2, 2, 'xaaa', 4, 'foo', 'foo6', 'foo', [0, 

1, 2], 'x8', [0, 1, 2], 1.5]

::$put =string(uniq(copy(l)))

::$put =string(reverse(l))

::$put =string(reverse(reverse(l)))

::$put =string(sort(l))

::$put =string(reverse(sort(l)))

::$put =string(sort(reverse(sort(l))))

::$put =string(uniq(sort(l)))

::let l=[7, 9, 'one', 18, 12, 22, 'two', 10.0e-16, -1, 'three', 0xf

f, 0.22, 'four']

::$put =string(sort(copy(l), 'n'))

::let l=[7, 9, 18, 12, 22, 10.0e-16, -1, 0xff, 0, -0, 0.22, 'bar', 

'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', {}, []]

::$put =string(sort(copy(l), 1))

::$put =string(sort(copy(l), 'i'))

::$put =string(sort(copy(l)))

::"

::" splitting a string to a List

::$put =string(split('  aa  bb '))

::$put =string(split('  aa  bb  ', '\W\+', 0))

::$put =string(split('  aa  bb  ', '\W\+', 1))

::$put =string(split('  aa  bb  ', '\W', 1))

::$put =string(split(':aa::bb:', ':', 0))

::$put =string(split(':aa::bb:', ':', 1))

::$put =string(split('aa,,bb, cc,', ',\s*', 1))

::$put =string(split('abc', '\zs'))

::$put =string(split('abc', '\zs', 1))

::"

::" compare recursively linked list and dict

::let l = [1, 2, 3, 4]

::let d = {'1': 1, '2': l, '3': 3}

::let l[1] = d

::$put =(l == l)

::$put =(d == d)

::$put =(l != deepcopy(l))

::$put =(d != deepcopy(d))

::"

::" compare complex recursively linked list and dict

::let l = []

::call add(l, l)

::let dict4 = {"l": l}

::call add(dict4.l, dict4)

::let lcopy = deepcopy(l)

::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)

::"

::" test for range assign

::let l = [0]

::let l[:] = [1, 2]

::$put =string(l)

::endfun
:$put =string(l)
:endfun
:"
:call Test(1, 2, [3, 4], {5: 6})  " This may take a while
:"
:delfunc Test
: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^R=a^M^[:"
:lang C
:redir => a
:try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
:redir END
o^R=a^M^[:"
:"
:/^start:/,$wq! test.out
ENDTEST

start:

:"
:call Test(1, 2, [3, 4], {5: 6})  " This may take a while
Error detected while processing function Test:
line   76:

E684: list index out of range: 1

line   91:

E684: list index out of range: 2

line  271:

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

line  441:

E741: Value is locked: l[0:1]

line  443:

E741: Value is locked: l[1:2]

line  446:

E741: Value is locked: l[0:1] = [0, 1]

line  448:

E741: Value is locked: l[1:2] = [0, 1]

Press ENTER or type command to continue:"
['BAR', 'Bar', 'FOO', 'FOOBAR', 'Foo', 'bar', 'foo', -1, 0, 0, 0.22, 1.0e-15, 122, 18, 22, 255, 7, 9, [], {}]
['aa', 'bb']
['aa', 'bb']
['', 'aa', 'bb', '']
['', '', 'aa', '', 'bb', '', '']
['aa', '', 'bb']
['', 'aa', '', 'bb', '']
['aa', '', 'bb', 'cc', '']
['a', 'b', 'c']
['', 'a', '', 'b', '', 'c', '']
1
1
0
0
1
1
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
{'a': {'b': 'B'}}
Vim(call):E737: a
{'a': {'b': 'B'}}
[1, 2]
~

:delfunc Test
: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
=a
Vim(foldopen):E490::"
:lang C
:redir => a
:try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
Error detected while processing :
E492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*'

)|endtry

Press ENTER or type command to continue:redir END
['BAR', 'Bar', 'FOO', 'FOOBAR', 'Foo', 'bar', 'foo', -1, 0, 0, 0.22, 1.0e-15, 122, 18, 22, 255, 7, 9, [], {}]
['aa', 'bb']
=a





Error detected while processing :
E492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*'))|endtry

:"
:"
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 197 lines, 3821 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test55 = test61; then \
#	  if diff test.out test55.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test55.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test55.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test56.failed test.ok test.out X* viminfo
cp test56.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test56.in
[?1h="test56.in" 21 lines, 457 charactersTest for script-local function.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:set nocp viminfo+=nviminfo
:/^start:/+1,/^end:/-1w! Xtest.vim
:source Xtest.vim
_x
:$-1,$wq! test.out
ENDTEST

start:
fun <SID>DoLast()
  call append(line('$'), "last line")
endfun
fun s:DoNothing()
  call append(line('$'), "nothing line")
endfun
nnoremap <buffer> _x    :call <SID>DoNothing()<bar>call <SID>DoLast()<bar>delfunnc <SID>DoNothing<bar>delfunc <SID>DoLast<cr>
end:
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for script-local function.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 7 lines, 120 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:"
:set nocp viminfo+=nviminfo
:/^start:/+1,/^end:/-1w! Xtest.vim
"Xtest.vim" [New] 7L, 251C written:source Xtest.vim
:call <SNR>4_DoNothing()|call <SNR>4_DoLast()|delfunc <SNR>4_DoNothing|delfunc 

<SNR>4_DoLast
Press ENTER or type command to continueTest for script-local function.     vim: set ft=vim :nothing line:$-1,$wq! test.out
"test.out" [New] 2L, 23C written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test56 = test61; then \
#	  if diff test.out test56.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test56.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test56.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test57.failed test.ok test.out X* viminfo
cp test57.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test57.in
[?1h="test57.in" 545 lines, 4110 charactersTests for :sort command.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:/^t01:/+1,/^t02/-1sort
:/^t02:/+1,/^t03/-1sort n
:/^t03:/+1,/^t04/-1sort x
:/^t04:/+1,/^t05/-1sort u
:/^t05:/+1,/^t06/-1sort!
:/^t06:/+1,/^t07/-1sort! n
:/^t07:/+1,/^t08/-1sort! u
:/^t08:/+1,/^t09/-1sort o
:/^t09:/+1,/^t10/-1sort! x
:/^t10:/+1,/^t11/-1sort/./
:/^t11:/+1,/^t12/-1sort/../
:/^t12:/+1,/^t13/-1sort/../u
:/^t13:/+1,/^t14/-1sort/./n
:/^t14:/+1,/^t15/-1sort/./r
:/^t15:/+1,/^t16/-1sort/../r
:/^t16:/+1,/^t17/-1sort/./rn
:/^t17:/+1,/^t18/-1sort/\d/
:/^t18:/+1,/^t19/-1sort/\d/r:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :sort command.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 33 lines, 920 characters written:set ff& cpo+=A
/ENDTEST:/^t21:/+1,/^t22/-1sort/\d\d/
:/^t22:/+1,/^t23/-1sort/\d\d/n
:/^t23:/+1,/^t24/-1sort/\d\d/x
:/^t24:/+1,/^t25/-1sort/\d\d/r
:/^t25:/+1,/^t26/-1sort/\d\d/rn
:/^t26:/+1,/^t27/-1sort/\d\d/rx
:/^t27:/+1,/^t28/-1sort no
:/^t28:/+1,/^t29/-1sort b
:/^t29:/+1,/^t30/-1sort b
:/^t30:/+1,/^t31/-1sort f
:/^t01:/,$wq! test.out
ENDTEST

t01: alphebetical
abc
ab
a
a321
a123
a122
b321
b123
c123d
:so! Xdotest
:so small.vim
:"
:/^t01:/+1,/^t02/-1sort
 123b2
a123
a
ababc:/^t02:/+1,/^t03/-1sort n









b123
b321
b321
b321b
b322b
c123d
c321d
t02: numeric
abc
:/^t03:/+1,/^t04/-1sort x
a123
b123
c123d
 123b
a321
b321
c321d
b321
b321b
b322b
t03: hexadecimal


a
ab
abc
 123b
a122
a123
a321
b123
b321
b321:/^t04:/+1,/^t05/-1sort u






b321b
b322b
c123d
c321d
t04: alpha, unique
:/^t05:/+1,/^t06/-1sort!
a123
a321
ab
abc
b123
b321
b321b
b322b
c123d
c321d
t05: alpha, reverse
c321d
c123d
b322b
b321b
b321
b321
b123
abc
ab
a321
a123
a122:/^t06:/+1,/^t07/-1sort! n        






a
 123b


t06: numeric, reverse
b322b
:/^t07:/+1,/^t08/-1sort! u
123b
c123d
b123
a123
a122


a
ab
abc
t07: unique, reverse
c321d
c123d
b322b
b321b
b321
b123
abc
ab
a321
a123
a122
a:/^t08:/+1,/^t09/-1sort o         




123b

t08: octal
abc
:/^t09:/+1,/^t10/-1sort! x        
a123
b123
c123d
 123b
a321
b321
c321d
b321
b321b
b322b
t09: reverse, hexadecimal
c321d
c123d
b322b
b321b
b321
b321
b123
a321
a123
a122
 123b
abc:/^t10:/+1,/^t11/-1sort/./        






ab
a


t10: alpha, skip first character
a
:/^t11:/+1,/^t12/-1sort/../       
123b
c123d
a321
b321
b321
b321b
c321d
b322b
ab
abc
t11: alpha, skip first 2 characters
ab
a


a321
b321
b321
b321b
c321d
a122
b322b
a123:/^t12:/+1,/^t13/-1sort/../u






b123
 123b
c123d
abc
t12: alpha, unique, skip first 2 characters
ab
:/^t13:/+1,/^t14/-1sort/./n
b321
b321b
c321d
a122
b322b
a123
b123
 123b
c123d
abc
t13: numeric, skip first character
abc
ab
a


a122
a123
b123
c123d
 123b
a321
b321:/^t14:/+1,/^t15/-1sort/./r






c321d
b321
b321b
b322b
t14: alpha, sort on first character
:/^t15:/+1,/^t16/-1sort/../r
a321
a123
a122
b321
b123
b322b
b321
b321b
c123d
c321d
t15: alpha, sort on first 2 characters
a123b
a123
a122
a321
abc
ab
b123
b321
b322b:/^t16:/+1,/^t17/-1sort/./rn






b321
b321b
c123d
c321d
t16: numeric, sort on first character
abc
:/^t17:/+1,/^t18/-1sort/\d/
b321
b123
c123d
 123b
c321d
b322b
b321
b321b


t17: alpha, skip past first digit
abc
ab
a


a321
b321
b321
b321b
c321d
a122
b322b:/^t18:/+1,/^t19/-1sort/\d/r






a123
b123
 123b
c123d
t18: alpha, sort on first digit
abc
:/^t19:/+1,/^t20/-1sort/\d/n
a122
b123
c123d
 123b
a321
b321
c321d
b322b
b321
b321b
t19: numeric, skip past first digit
abc
ab
a


a321
b321
c321d
b321
b321b
a122
b322b:/^t20:/+1,/^t21/-1sort/\d/rn






a123
b123
c123d
 123b
t20: numeric, sort on first digit
abc
:/^t21:/+1,/^t22/-1sort/\d\d/
a122
b123
c123d
 123b
a321
b321
c321d
b322b
b321
b321b
t21: alpha, skip past first 2 digits
abc
ab
a


a321
b321
b321
b321b
c321d
a122
b322b:/^t22:/+1,/^t23/-1sort/\d\d/n






a123
b123
 123b
c123d
t22: numeric, skip past first 2 digits
abc
:/^t23:/+1,/^t24/-1sort/\d\d/x
b321
c321d
b321
b321b
a122
b322b
a123
b123
c123d
 123b
t23: hexadecimal, skip past first 2 digits
abc
ab
a


a321
b321
b321
a122
a123
b123
b321b:/^t24:/+1,/^t25/-1sort/\d\d/r






c321d
b322b
 123b
c123d
t24: alpha, sort on first 2 digits
abc
:/^t25:/+1,/^t26/-1sort/\d\d/rn
a122
b123
c123d
 123b
a321
b321
c321d
b322b
b321
b321b
t25: numeric, sort on first 2 digits
abc
ab
a


a123
a122
b123
c123d
 123b
a321
b321:/^t26:/+1,/^t27/-1sort/\d\d/rx






c321d
b322b
b321
b321b
t26: hexadecimal, sort on first 2 digits
abc
:/^t27:/+1,/^t28/-1sort no
E474: Invalid argument:/^t28:/+1,/^t29/-1sort b
b321
b123
c123d
 123b
c321d
b322b
b321
b321b


t28: binary


0b000000
0b001000
0b010000
0b100000
0b100010
0b100010
0b100100
0b101000
0b101000
0b101001:/^t29:/+1,/^t30/-1sort b






0b101001
0b101010
0b101100
0b111000
t29: binary with leading characters
:/^t30:/+1,/^t31/-1sort f
a0b001000
0b010000
ab0b100000
0b100010
0b100010
 0b100100
0b101000
0b101000
 0b101001
a0b101001
0b101010
b0b101100
b0b111000
t30: float


-1.1e3
-1.01e3
1.15e-6
0.88
1.234
123.456
t31: done:/^t01:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 501 lines, 3105 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test57 = test61; then \
#	  if diff test.out test57.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test57.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test57.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test60.failed test.ok test.out X* viminfo
cp test60.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test60.in
[?1h="test60.in" 601 lines, 13116 charactersTests for the exists() and has() functions.  vim: set ft=vim ts=8 sw=2 :

STARTTEST
:so small.vim
:function! RunTest(str, result)
    if exists(a:str) == a:resultecho "OK"
    elseecho "FAILED: Checking for " . a:str
    endif
endfunction
:function! TestExists()
    augroup myagroupautocmd! BufEnter*.my     echo "myfile edited"autocmd! FuncUndefined  UndefFun exec "fu UndefFun()\nendfu"
    augroup END
    set rtp+=./sautestlet test_cases = []" valid autocmd group
    let test_cases += [['#myagroup', 1]]
    " valid autocmd group with garbage:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for the exists() and has() functions.  vim: set ft=vim ts=8 sw=2 :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 596 lines, 13023 characters written:set ff& cpo+=A
/ENDTESTendif
    endfunctioncall TestFuncArg("arg1", "arg2")echo ' g:footest#x =' g:footest#x
    echo '   footest#F()' footest#F()
    echo 'UndefFun()' UndefFun()redir END
endfunction
:call TestExists()
:"
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
:while getchar(1) | call getchar() | endwhile
ENDTEST


:so! Xdotest
:so small.vim
:function! RunTest(str, result)

:      if exists(a:str) == a:result

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED: Checking for " . a:str

:        endif

:  endfunction
endif
    endfunctioncall TestFuncArg("arg1", "arg2")echo ' g:footest#x =' g:footest#x
:function! TestExists()

:      augroup myagroup

:  ^Iautocmd! BufEnter       *.my     echo "myfile edited"

:  ^Iautocmd! FuncUndefined  UndefFun exec "fu UndefFun()\nendfu"

:      augroup END

:      set rtp+=./sautest

:  

:      let test_cases = []

:  

:      " valid autocmd group

:      let test_cases += [['#myagroup', 1]]

:      " valid autocmd group with garbage

:      let test_cases += [['#myagroup+b', 0]]

:      " Valid autocmd group and event

:      let test_cases += [['#myagroup#BufEnter', 1]]

:      " Valid autocmd group, event and pattern

:      let test_cases += [['#myagroup#BufEnter#*.my', 1]]

:      " Valid autocmd event

:      let test_cases += [['#BufEnter', 1]]

:      " Valid autocmd event and pattern

:      let test_cases += [['#BufEnter#*.my', 1]]

:      " Non-existing autocmd group or event

:      let test_cases += [['#xyzagroup', 0]]

:      " Non-existing autocmd group and valid autocmd event

:      let test_cases += [['#xyzagroup#BufEnter', 0]]

:      " Valid autocmd group and event with no matching pattern

:      let test_cases += [['#myagroup#CmdwinEnter', 0]]

:      " Valid autocmd group and non-existing autocmd event

:      let test_cases += [['#myagroup#xyzacmd', 0]]

:      " Valid autocmd group and event and non-matching pattern

:      let test_cases += [['#myagroup#BufEnter#xyzpat', 0]]

:      " Valid autocmd event and non-matching pattern

:      let test_cases += [['#BufEnter#xyzpat', 0]]

:      " Empty autocmd group, event and pattern

:      let test_cases += [['###', 0]]

:      " Empty autocmd group and event or empty event and pattern

:      let test_cases += [['##', 0]]

:      " Valid autocmd event

:      let test_cases += [['##FileReadCmd', 1]]

:      " Non-existing autocmd event

:      let test_cases += [['##MySpecialCmd', 0]]

:  

:      " Existing and working option (long form)

:      let test_cases += [['&textwidth', 1]]

:      " Existing and working option (short form)

:      let test_cases += [['&tw', 1]]

:      " Existing and working option with garbage

:      let test_cases += [['&tw-', 0]]

:      " Global option

:      let test_cases += [['&g:errorformat', 1]]

:      " Local option

:      let test_cases += [['&l:errorformat', 1]]

:      " Negative form of existing and working option (long form)

:      let test_cases += [['&nojoinspaces', 0]]

:      " Negative form of existing and working option (short form)

:      let test_cases += [['&nojs', 0]]

:      " Non-existing option

:      let test_cases += [['&myxyzoption', 0]]

:  

:      " Existing and working option (long form)

:      let test_cases += [['+incsearch', 1]]

:      " Existing and working option with garbage

:      let test_cases += [['+incsearch!1', 0]]

:      " Existing and working option (short form)

:      let test_cases += [['+is', 1]]

:      " Existing option that is hidden.

:      let test_cases += [['+autoprint', 0]]

:  

:      " Existing environment variable

:      let $EDITOR_NAME = 'Vim Editor'

:      let test_cases += [['$EDITOR_NAME', 1]]

:      " Non-existing environment variable

:      let test_cases += [['$NON_ENV_VAR', 0]]

:  

:      " Valid internal function

:      let test_cases += [['*bufnr', 1]]

:      " Valid internal function with ()

:      let test_cases += [['*bufnr()', 1]]

:      " Non-existing internal function

:      let test_cases += [['*myxyzfunc', 0]]

:      " Valid internal function with garbage

:      let test_cases += [['*bufnr&6', 0]]

:  

:      " Valid user defined function

:      let test_cases += [['*TestExists', 1]]

:      " Non-existing user defined function

:      let test_cases += [['*MyxyzFunc', 0]]

:  

:      " Function that may be created by FuncUndefined event

:      let test_cases += [['*UndefFun', 0]]

:      " Function that may be created by script autoloading

:      let test_cases += [['*footest#F', 0]]

:  

:      redir! > test.out

:  

:      for [test_case, result] in test_cases

:            echo test_case . ": " . result

:            call RunTest(test_case, result)

:        endfor

:  

:      " Valid internal command (full match)

:      echo ':edit: 2'

:      if exists(':edit') == 2

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid internal command (full match) with garbage

:      echo ':edit/a: 0'

:      if exists(':edit/a') == 0

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid internal command (partial match)

:      echo ':q: 1'

:      if exists(':q') == 1

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing internal command

:      echo ':invalidcmd: 0'

:      if !exists(':invalidcmd')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " User defined command (full match)

:      command! MyCmd :echo 'My command'

:      echo ':MyCmd: 2'

:      if exists(':MyCmd') == 2

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " User defined command (partial match)

:      command! MyOtherCmd :echo 'Another command'

:      echo ':My: 3'

:      if exists(':My') == 3

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Command modifier

:      echo ':rightbelow: 2'

:      if exists(':rightbelow') == 2

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing user defined command (full match)

:      delcommand MyCmd

:  

:      echo ':MyCmd: 0'

:      if !exists(':MyCmd')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing user defined command (partial match)

:      delcommand MyOtherCmd

:  

:      echo ':My: 0'

:      if !exists(':My')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local variable

:      let local_var = 1

:      echo 'local_var: 1'

:      if exists('local_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local variable with garbage

:      let local_var = 1

:      echo 'local_var%n: 0'

:      if !exists('local_var%n')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing local variable

:      unlet local_var

:      echo 'local_var: 0'

:      if !exists('local_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing autoload variable that may be autoloaded

:      echo 'footest#x: 0'

:      if !exists('footest#x')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local list

:      let local_list = ["blue", "orange"]

:      echo 'local_list: 1'

:      if exists('local_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local list item

:      echo 'local_list[1]: 1'

:      if exists('local_list[1]')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local list item with garbage

:      echo 'local_list[1]+5: 0'

:      if !exists('local_list[1]+5')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Invalid local list item

:      echo 'local_list[2]: 0'

:      if !exists('local_list[2]')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing local list

:      unlet local_list

:      echo 'local_list: 0'

:      if !exists('local_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local dictionary

:      let local_dict = {"xcord":100, "ycord":2}

:      echo 'local_dict: 1'

:      if exists('local_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing local dictionary

:      unlet local_dict

:      echo 'local_dict: 0'

:      if !exists('local_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing local curly-brace variable

:      let str = "local"

:      let curly_{str}_var = 1

:      echo 'curly_' . str . '_var: 1'

:      if exists('curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing local curly-brace variable

:      unlet curly_{str}_var

:      echo 'curly_' . str . '_var: 0'

:      if !exists('curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:  

:      " Existing global variable

:      let g:global_var = 1

:      echo 'g:global_var: 1'

:      if exists('g:global_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing global variable with garbage

:      echo 'g:global_var-n: 1'

:      if !exists('g:global_var-n')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing global variable

:      unlet g:global_var

:      echo 'g:global_var: 0'

:      if !exists('g:global_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing global list

:      let g:global_list = ["blue", "orange"]

:      echo 'g:global_list: 1'

:      if exists('g:global_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing global list

:      unlet g:global_list

:      echo 'g:global_list: 0'

:      if !exists('g:global_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing global dictionary

:      let g:global_dict = {"xcord":100, "ycord":2}

:      echo 'g:global_dict: 1'

:      if exists('g:global_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing global dictionary

:      unlet g:global_dict

:      echo 'g:global_dict: 0'

:      if !exists('g:global_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing global curly-brace variable

:      let str = "global"

:      let g:curly_{str}_var = 1

:      echo 'g:curly_' . str . '_var: 1'

:      if exists('g:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing global curly-brace variable

:      unlet g:curly_{str}_var

:      echo 'g:curly_' . str . '_var: 0'

:      if !exists('g:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing window variable

:      echo 'w:window_var: 1'

:      let w:window_var = 1

:      if exists('w:window_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing window variable

:      unlet w:window_var

:      echo 'w:window_var: 0'

:      if !exists('w:window_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing window list

:      let w:window_list = ["blue", "orange"]

:      echo 'w:window_list: 1'

:      if exists('w:window_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing window list

:      unlet w:window_list

:      echo 'w:window_list: 0'

:      if !exists('w:window_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing window dictionary

:      let w:window_dict = {"xcord":100, "ycord":2}

:      echo 'w:window_dict: 1'

:      if exists('w:window_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing window dictionary

:      unlet w:window_dict

:      echo 'w:window_dict: 0'

:      if !exists('w:window_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing window curly-brace variable

:      let str = "window"

:      let w:curly_{str}_var = 1

:      echo 'w:curly_' . str . '_var: 1'

:      if exists('w:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing window curly-brace variable

:      unlet w:curly_{str}_var

:      echo 'w:curly_' . str . '_var: 0'

:      if !exists('w:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing buffer variable

:      echo 'b:buffer_var: 1'

:      let b:buffer_var = 1

:      if exists('b:buffer_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing buffer variable

:      unlet b:buffer_var

:      echo 'b:buffer_var: 0'

:      if !exists('b:buffer_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing buffer list

:      let b:buffer_list = ["blue", "orange"]

:      echo 'b:buffer_list: 1'

:      if exists('b:buffer_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing buffer list

:      unlet b:buffer_list

:      echo 'b:buffer_list: 0'

:      if !exists('b:buffer_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing buffer dictionary

:      let b:buffer_dict = {"xcord":100, "ycord":2}

:      echo 'b:buffer_dict: 1'

:      if exists('b:buffer_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing buffer dictionary

:      unlet b:buffer_dict

:      echo 'b:buffer_dict: 0'

:      if !exists('b:buffer_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing buffer curly-brace variable

:      let str = "buffer"

:      let b:curly_{str}_var = 1

:      echo 'b:curly_' . str . '_var: 1'

:      if exists('b:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing buffer curly-brace variable

:      unlet b:curly_{str}_var

:      echo 'b:curly_' . str . '_var: 0'

:      if !exists('b:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Script-local tests

:      source test60.vim

:  

:      " Existing Vim internal variable

:      echo 'v:version: 1'

:      if exists('v:version')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing Vim internal variable

:      echo 'v:non_exists_var: 0'

:      if !exists('v:non_exists_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Function arguments

:      function TestFuncArg(func_arg, ...)

:            echo 'a:func_arg: 1'

:            if exists('a:func_arg')

:                  echo "OK"

:              else

:                  echo "FAILED"

:              endif

:    

:            echo 'a:non_exists_arg: 0'

:            if !exists('a:non_exists_arg')

:                  echo "OK"

:              else

:                  echo "FAILED"

:              endif

:    

:            echo 'a:1: 1'

:            if exists('a:1')

:                  echo "OK"

:              else

:                  echo "FAILED"

:              endif

:    

:            echo 'a:2: 0'

:            if !exists('a:2')

:                  echo "OK"

:              else

:                  echo "FAILED"

:              endif

:        endfunction

:    

:        call TestFuncArg("arg1", "arg2")

:    

:        echo ' g:footest#x =' g:footest#x

:        echo '   footest#F()' footest#F()

:        echo 'UndefFun()' UndefFun()

:    

:        redir END

:    endfunction
endif
    endfunctioncall TestFuncArg("arg1", "arg2")echo ' g:footest#x =' g:footest#x
    echo '   footest#F()' footest#F()
    echo 'UndefFun()' UndefFun()redir END
endfunction
:call TestExists()
:"
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
:while getchar(1) | call getchar() | endwhile
ENDTEST

:call TestExists()
#myagroup: 1
OK

#myagroup+b: 0

OK

#myagroup#BufEnter: 1

OK

#myagroup#BufEnter#*.my: 1

OK

#BufEnter: 1

OK

#BufEnter#*.my: 1

OK

#xyzagroup: 0

OK

#xyzagroup#BufEnter: 0

OK

#myagroup#CmdwinEnter: 0

OK

#myagroup#xyzacmd: 0

OK

#myagroup#BufEnter#xyzpat: 0

OK

#BufEnter#xyzpat: 0

OK

###: 0

OK

##: 0

OK

##FileReadCmd: 1

OK

##MySpecialCmd: 0

OK

&textwidth: 1

OK

&tw: 1

OK

&tw-: 0

OK

&g:errorformat: 1

OK

&l:errorformat: 1

OK

&nojoinspaces: 0

OK

&nojs: 0

OK

&myxyzoption: 0

OK

+incsearch: 1

OK

+incsearch!1: 0

OK

+is: 1

OK

+autoprint: 0

OK

$EDITOR_NAME: 1

OK

$NON_ENV_VAR: 0

OK

*bufnr: 1

OK

*bufnr(): 1

OK

*myxyzfunc: 0

OK

*bufnr&6: 0

OK

*TestExists: 1

OK

*MyxyzFunc: 0

OK

*UndefFun: 0

OK

*footest#F: 0

OK

:edit: 2

OK

:edit/a: 0

OK

:q: 1

OK

:invalidcmd: 0

OK

:MyCmd: 2

OK

:My: 3

OK

:rightbelow: 2

OK

:MyCmd: 0

OK

:My: 0

OK

local_var: 1

OK

local_var%n: 0

OK

local_var: 0

OK

footest#x: 0

OK

local_list: 1

OK

local_list[1]: 1

OK

local_list[1]+5: 0

OK

local_list[2]: 0

OK

local_list: 0

OK

local_dict: 1

OK

local_dict: 0

OK

curly_local_var: 1

OK

curly_local_var: 0

OK

g:global_var: 1

OK

g:global_var-n: 1

OK

g:global_var: 0

OK

g:global_list: 1

OK

g:global_list: 0

OK

g:global_dict: 1

OK

g:global_dict: 0

OK

g:curly_global_var: 1

OK

g:curly_global_var: 0

OK

w:window_var: 1

OK

w:window_var: 0

OK

w:window_list: 1

OK

w:window_list: 0

OK

w:window_dict: 1

OK

w:window_dict: 0

OK

w:curly_window_var: 1

OK

w:curly_window_var: 0

OK

b:buffer_var: 1

OK

b:buffer_var: 0

OK

b:buffer_list: 1

OK

b:buffer_list: 0

OK

b:buffer_dict: 1

OK

b:buffer_dict: 0

OK

b:curly_buffer_var: 1

OK

b:curly_buffer_var: 0

OK

s:script_var: 1

OK

s:script_var: 0

OK

s:script_list: 1

OK

s:script_list: 0

OK

s:script_dict: 1

OK

s:script_dict: 0

OK

s:curly_script_var: 1

OK

s:curly_script_var: 0

OK

*s:my_script_func: 1

OK

*s:my_script_func: 0

OK

v:version: 1

OK

v:non_exists_var: 0

OK

a:func_arg: 1

OK

a:non_exists_arg: 0

OK

a:1: 1

OK

a:2: 0

OK

 g:footest#x = 1

   footest#F() 0

UndefFun() 0

Press ENTER or type command to continue:"
endif
    endfunctioncall TestFuncArg("arg1", "arg2")echo ' g:footest#x =' g:footest#x
    echo '   footest#F()' footest#F()
    echo 'UndefFun()' UndefFun()redir END
endfunction
:call TestExists()
:"
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
:while getchar(1) | call getchar() | endwhile
ENDTEST

:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
"test.out" [Incomplete last line] 206 lines, 1940 characters#myagroup: 1OK
#myagroup+b: 0OK
#myagroup#BufEnter: 1OK#myagroup#BufEnter#*.my: 1OK
#BufEnter: 1OK#BufEnter#*.my: 1OK
#xyzagroup: 0OK#xyzagroup#BufEnter: 0
OK#myagroup#CmdwinEnter: 0
OK
#myagroup#xyzacmd: 0
OK#myagroup#BufEnter#xyzpat: 0
OK:set ff=unix
:w
"test.out" 206 lines, 1941 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test60 = test61; then \
#	  if diff test.out test60.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test60.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test60.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test64.failed test.ok test.out X* viminfo
cp test64.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test64.in
[?1h="test64.in" 654 lines, 27565 charactersTest for regexp patterns without multi-byte support.
See test95 for multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:":set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for regexp patterns without multi-byte support./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 621 lines, 27090 characters written:set ff& cpo+=A
/ENDTEST:for pat in [' \ze*', ' \zs*']
:  try
:    let l = matchlist('x x', pat)
:    $put ='E888 NOT detected for ' . pat
:  catch
:    $put ='E888 detected for ' . pat
:  endtry
:endfor
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
ENDTEST

Substitute here:
<T="">Ta 5</Title>
<T="">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
:so! Xdotest
:so small.vim
:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
:call add(tl, [2, 'ab', 'aab', 'ab'])
:call add(tl, [2, 'b', 'abcdef', 'b'])
:call add(tl, [2, 'bc*', 'abccccdef', 'bcccc'])
:call add(tl, [2, 'bc\{-}', 'abccccdef', 'b'])
:call add(tl, [2, 'bc\{-}\(d\)', 'abccccdef', 'bccccd', 'd'])
:call add(tl, [2, 'bc*', 'abbdef', 'b'])
:call add(tl, [2, 'c*', 'ccc', 'ccc'])
:call add(tl, [2, 'bc*', 'abdef', 'b'])
:call add(tl, [2, 'c*', 'abdef', ''])
:call add(tl, [2, 'bc\+', 'abccccdef', 'bcccc'])
:call add(tl, [2, 'bc\+', 'abdef']) "no match
:"
:"operator \|
:call add(tl, [2, 'a\|ab', 'cabd', 'a']) "alternation is ordered
:"
:call add(tl, [2, 'c\?', 'ccb', 'c'])
:call add(tl, [2, 'bc\?', 'abd', 'b'])
:call add(tl, [2, 'bc\?', 'abccd', 'bc'])
:"
:call add(tl, [2, '\va{1}', 'ab', 'a'])
:"
:call add(tl, [2, '\va{2}', 'aa', 'aa'])
:call add(tl, [2, '\va{2}', 'caad', 'aa'])
:call add(tl, [2, '\va{2}', 'aba'])
:call add(tl, [2, '\va{2}', 'ab'])
:call add(tl, [2, '\va{2}', 'abaa', 'aa'])
:call add(tl, [2, '\va{2}', 'aaa', 'aa'])
:"
:call add(tl, [2, '\vb{1}', 'abca', 'b'])
:call add(tl, [2, '\vba{2}', 'abaa', 'baa'])
:call add(tl, [2, '\vba{3}', 'aabaac'])
:"
:call add(tl, [2, '\v(ab){1}', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(ab){1}', 'dabc', 'ab', 'ab'])
:call add(tl, [2, '\v(ab){1}', 'acb'])
:"
:call add(tl, [2, '\v(ab){0,2}', 'acb', "", ""])
:call add(tl, [2, '\v(ab){0,2}', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(ab){1,2}', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(ab){1,2}', 'ababc', 'abab', 'ab'])
:call add(tl, [2, '\v(ab){2,4}', 'ababcab', 'abab', 'ab'])
:call add(tl, [2, '\v(ab){2,4}', 'abcababa', 'abab', 'ab'])
:"
:call add(tl, [2, '\v(ab){2}', 'abab', 'abab', 'ab'])
:call add(tl, [2, '\v(ab){2}', 'cdababe', 'abab', 'ab'])
:call add(tl, [2, '\v(ab){2}', 'abac'])
:call add(tl, [2, '\v(ab){2}', 'abacabab', 'abab', 'ab'])
:call add(tl, [2, '\v((ab){2}){2}', 'abababab', 'abababab', 'abab', 'ab'])
:call add(tl, [2, '\v((ab){2}){2}', 'abacabababab', 'abababab', 'abab', 'ab'])
:"
:call add(tl, [2, '\v(a{1}){1}', 'a', 'a', 'a'])
:call add(tl, [2, '\v(a{2}){1}', 'aa', 'aa', 'aa'])
:call add(tl, [2, '\v(a{2}){1}', 'aaac', 'aa', 'aa'])
:call add(tl, [2, '\v(a{2}){1}', 'daaac', 'aa', 'aa'])
:call add(tl, [2, '\v(a{1}){2}', 'daaac', 'aa', 'a'])
:call add(tl, [2, '\v(a{1}){2}', 'aaa', 'aa', 'a'])
:call add(tl, [2, '\v(a{2})+', 'adaac', 'aa', 'aa'])
:call add(tl, [2, '\v(a{2})+', 'aa', 'aa', 'aa'])
:call add(tl, [2, '\v(a{2}){1}', 'aa', 'aa', 'aa'])
:call add(tl, [2, '\v(a{1}){2}', 'aa', 'aa', 'a'])
:call add(tl, [2, '\v(a{1}){1}', 'a', 'a', 'a'])
:call add(tl, [2, '\v(a{2}){2}', 'aaaa', 'aaaa', 'aa'])
:call add(tl, [2, '\v(a{2}){2}', 'aaabaaaa', 'aaaa', 'aa'])
:"
:call add(tl, [2, '\v(a+){2}', 'dadaac', 'aa', 'a'])
:call add(tl, [2, '\v(a{3}){2}', 'aaaaaaa', 'aaaaaa', 'aaa'])
:"
:call add(tl, [2, '\v(a{1,2}){2}', 'daaac', 'aaa', 'a'])
:call add(tl, [2, '\v(a{1,3}){2}', 'daaaac', 'aaaa', 'a'])
:call add(tl, [2, '\v(a{1,3}){2}', 'daaaaac', 'aaaaa', 'aa'])
:call add(tl, [2, '\v(a{1,3}){3}', 'daac'])
:call add(tl, [2, '\v(a{1,2}){2}', 'dac'])
:call add(tl, [2, '\v(a+)+', 'daac', 'aa', 'aa'])
:call add(tl, [2, '\v(a+)+', 'aaa', 'aaa', 'aaa'])
:call add(tl, [2, '\v(a+){1,2}', 'aaa', 'aaa', 'aaa'])
:call add(tl, [2, '\v(a+)(a+)', 'aaa', 'aaa', 'aa', 'a'])
:call add(tl, [2, '\v(a{3})+', 'daaaac', 'aaa', 'aaa'])
:call add(tl, [2, '\v(a|b|c)+', 'aacb', 'aacb', 'b'])
:call add(tl, [2, '\v(a|b|c){2}', 'abcb', 'ab', 'b'])
:call add(tl, [2, '\v(abc){2}', 'abcabd', ])
:call add(tl, [2, '\v(abc){2}', 'abdabcabc','abcabc', 'abc'])
:"
:call add(tl, [2, 'a*', 'cc', ''])
:call add(tl, [2, '\v(a*)+', 'cc', ''])
:call add(tl, [2, '\v((ab)+)+', 'ab', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(((ab)+)+)+', 'ab', 'ab', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(((ab)+)+)+', 'dababc', 'abab', 'abab', 'abab', 'ab'])
:call add(tl, [2, '\v(a{0,2})+', 'cc', ''])
:call add(tl, [2, '\v(a*)+', '', ''])
:call add(tl, [2, '\v((a*)+)+', '', ''])
:call add(tl, [2, '\v((ab)*)+', '', ''])
:call add(tl, [2, '\va{1,3}', 'aab', 'aa'])
:call add(tl, [2, '\va{2,3}', 'abaa', 'aa'])
:"
:call add(tl, [2, '\v((ab)+|c*)+', 'abcccaba', 'abcccab', '', 'ab'])
:call add(tl, [2, '\v(a{2})|(b{3})', 'bbabbbb', 'bbb', '', 'bbb'])
:call add(tl, [2, '\va{2}|b{2}', 'abab'])
:call add(tl, [2, '\v(a)+|(c)+', 'bbacbaacbbb', 'a', 'a'])
:call add(tl, [2, '\vab{2,3}c', 'aabbccccccccccccc', 'abbc'])
:call add(tl, [2, '\vab{2,3}c', 'aabbbccccccccccccc', 'abbbc'])
:call add(tl, [2, '\vab{2,3}cd{2,3}e', 'aabbbcddee', 'abbbcdde'])
:call add(tl, [2, '\va(bc){2}d', 'aabcbfbc' ])
:call add(tl, [2, '\va*a{2}', 'a', ])
:call add(tl, [2, '\va*a{2}', 'aa', 'aa' ])
:call add(tl, [2, '\va*a{2}', 'aaa', 'aaa' ])
:call add(tl, [2, '\va*a{2}', 'bbbabcc', ])
:call add(tl, [2, '\va*b*|a*c*', 'a', 'a'])
:call add(tl, [2, '\va{1}b{1}|a{1}b{1}', ''])
:"
:"submatches
:call add(tl, [2, '\v(a)', 'ab', 'a', 'a'])
:call add(tl, [2, '\v(a)(b)', 'ab', 'ab', 'a', 'b'])
:call add(tl, [2, '\v(ab)(b)(c)', 'abbc', 'abbc', 'ab', 'b', 'c'])
:call add(tl, [2, '\v((a)(b))', 'ab', 'ab', 'ab', 'a', 'b'])
:call add(tl, [2, '\v(a)|(b)', 'ab', 'a', 'a'])
:"
:call add(tl, [2, '\v(a*)+', 'aaaa', 'aaaa', ''])
:call add(tl, [2, 'x', 'abcdef'])
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:""""" Simple tests """""""""""""""""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
:" Search single groups
:call add(tl, [2, 'ab', 'aab', 'ab'])
:call add(tl, [2, 'ab', 'baced'])
:call add(tl, [2, 'ab', '                    ab           ', 'ab'])
:"
:" Search multi-modifiers
:call add(tl, [2, 'x*', 'xcd', 'x'])
:call add(tl, [2, 'x*', 'xxxxxxxxxxxxxxxxsofijiojgf', 'xxxxxxxxxxxxxxxx'])
:" empty match is good
:call add(tl, [2, 'x*', 'abcdoij', ''])
:" no match here
:call add(tl, [2, 'x\+', 'abcdoin'])
:call add(tl, [2, 'x\+', 'abcdeoijdfxxiuhfij', 'xx'])
:call add(tl, [2, 'x\+', 'xxxxx', 'xxxxx'])
:call add(tl, [2, 'x\+', 'abc x siufhiush xxxxxxxxx', 'x'])
:call add(tl, [2, 'x\=', 'x sdfoij', 'x'])
:call add(tl, [2, 'x\=', 'abc sfoij', '']) " empty match is good
:call add(tl, [2, 'x\=', 'xxxxxxxxx c', 'x'])
:call add(tl, [2, 'x\?', 'x sdfoij', 'x'])
:" empty match is good
:call add(tl, [2, 'x\?', 'abc sfoij', ''])
:call add(tl, [2, 'x\?', 'xxxxxxxxxx c', 'x'])
:"
:call add(tl, [2, 'a\{0,0}', 'abcdfdoij', ''])
:" same thing as 'a?'
:call add(tl, [2, 'a\{0,1}', 'asiubid axxxaaa', 'a'])
:" same thing as 'a\{0,1}'
:call add(tl, [2, 'a\{1,0}', 'asiubid axxxaaa', 'a'])
:call add(tl, [2, 'a\{3,6}', 'aa siofuh'])
:call add(tl, [2, 'a\{3,6}', 'aaaaa asfoij afaa', 'aaaaa'])
:call add(tl, [2, 'a\{3,6}', 'aaaaaaaa', 'aaaaaa'])
:call add(tl, [2, 'a\{0}', 'asoiuj', ''])
:call add(tl, [2, 'a\{2}', 'aaaa', 'aa'])
:call add(tl, [2, 'a\{2}', 'iuash fiusahfliusah fiushfilushfi uhsaifuh askfj na

sfvius afg aaaa sfiuhuhiushf', 'aa'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, 'a\{2}', 'abcdefghijklmnopqrestuvwxyz1234567890'])
:" same thing as 'a*'
:call add(tl, [2, 'a\{0,}', 'oij sdigfusnf', ''])
:call add(tl, [2, 'a\{0,}', 'aaaaa aa', 'aaaaa'])
:call add(tl, [2, 'a\{2,}', 'sdfiougjdsafg'])
:call add(tl, [2, 'a\{2,}', 'aaaaasfoij ', 'aaaaa'])
:call add(tl, [2, 'a\{5,}', 'xxaaaaxxx '])
:call add(tl, [2, 'a\{5,}', 'xxaaaaaxxx ', 'aaaaa'])
:call add(tl, [2, 'a\{,0}', 'oidfguih iuhi hiu aaaa', ''])
:call add(tl, [2, 'a\{,5}', 'abcd', 'a'])
:call add(tl, [2, 'a\{,5}', 'aaaaaaaaaa', 'aaaaa'])
:" leading star as normal char when \{} follows
:call add(tl, [2, '^*\{4,}$', '***'])
:call add(tl, [2, '^*\{4,}$', '****', '****'])
:call add(tl, [2, '^*\{4,}$', '*****', '*****'])
:" same thing as 'a*'
:call add(tl, [2, 'a\{}', 'bbbcddiuhfcd', ''])
:call add(tl, [2, 'a\{}', 'aaaaioudfh coisf jda', 'aaaa'])
:"
:call add(tl, [2, 'a\{-0,0}', 'abcdfdoij', ''])
:" anti-greedy version of 'a?'
:call add(tl, [2, 'a\{-0,1}', 'asiubid axxxaaa', ''])
:call add(tl, [2, 'a\{-3,6}', 'aa siofuh'])
:call add(tl, [2, 'a\{-3,6}', 'aaaaa asfoij afaa', 'aaa'])
:call add(tl, [2, 'a\{-3,6}', 'aaaaaaaa', 'aaa'])
:call add(tl, [2, 'a\{-0}', 'asoiuj', ''])
:call add(tl, [2, 'a\{-2}', 'aaaa', 'aa'])
:call add(tl, [2, 'a\{-2}', 'abcdefghijklmnopqrestuvwxyz1234567890'])
:call add(tl, [2, 'a\{-0,}', 'oij sdigfusnf', ''])
:call add(tl, [2, 'a\{-0,}', 'aaaaa aa', ''])
:call add(tl, [2, 'a\{-2,}', 'sdfiougjdsafg'])
:call add(tl, [2, 'a\{-2,}', 'aaaaasfoij ', 'aa'])
:call add(tl, [2, 'a\{-,0}', 'oidfguih iuhi hiu aaaa', ''])
:call add(tl, [2, 'a\{-,5}', 'abcd', ''])
:call add(tl, [2, 'a\{-,5}', 'aaaaaaaaaa', ''])
:" anti-greedy version of 'a*'
:call add(tl, [2, 'a\{-}', 'bbbcddiuhfcd', ''])
:call add(tl, [2, 'a\{-}', 'aaaaioudfh coisf jda', ''])
:"
:" Test groups of characters and submatches
:call add(tl, [2, '\(abc\)*', 'abcabcabc', 'abcabcabc', 'abc'])
:call add(tl, [2, '\(ab\)\+', 'abababaaaaa', 'ababab', 'ab'])
:call add(tl, [2, '\(abaaaaa\)*cd', 'cd', 'cd', ''])
:call add(tl, [2, '\(test1\)\? \(test2\)\?', 'test1 test3', 'test1 ', 'test1', 

''])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(test1\)\= \(test2\) \(test4443\)\=', ' test2 test4443 yupi

iiiiiiiiii', ' test2 test4443', '', 'test2', 'test4443'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(\(sub1\) hello \(sub 2\)\)', 'asterix sub1 hello sub 2 obe

lix', 'sub1 hello sub 2', 'sub1 hello sub 2', 'sub1', 'sub 2'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(\(\(yyxxzz\)\)\)', 'abcdddsfiusfyyzzxxyyxxzz', 'yyxxzz', '

yyxxzz', 'yyxxzz', 'yyxxzz'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\v((ab)+|c+)+', 'abcccaba', 'abcccab', 'ab', 'ab'])
:call add(tl, [2, '\v((ab)|c*)+', 'abcccaba', 'abcccab', '', 'ab'])
:call add(tl, [2, '\v(a(c*)+b)+', 'acbababaaa', 'acbabab', 'ab', ''])
:call add(tl, [2, '\v(a|b*)+', 'aaaa', 'aaaa', ''])
:call add(tl, [2, '\p*', 'aá ^I', 'aá '])
:"
:" Test greedy-ness and lazy-ness
:call add(tl, [2, 'a\{-2,7}','aaaaaaaaaaaaa', 'aa'])
:call add(tl, [2, 'a\{-2,7}x','aaaaaaaaax', 'aaaaaaax'])
:call add(tl, [2, 'a\{2,7}','aaaaaaaaaaaaaaaaaaaa', 'aaaaaaa'])
:call add(tl, [2, 'a\{2,7}x','aaaaaaaaax', 'aaaaaaax'])
:call add(tl, [2, '\vx(.{-,8})yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz','ayxa

','xayzxayz'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\vx(.*)yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz', 'ayxayzx

ayzxa',''])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\v(a{1,2}){-2,3}','aaaaaaa','aaaa','aa'])
:call add(tl, [2, '\v(a{-1,3})+', 'aa', 'aa', 'a'])
:call add(tl, [2, '^\s\{-}\zs\( x\|x$\)', ' x', ' x', ' x'])
:call add(tl, [2, '^\s\{-}\zs\(x\| x$\)', ' x', ' x', ' x'])
:call add(tl, [2, '^\s\{-}\ze\(x\| x$\)', ' x', '', ' x'])
:call add(tl, [2, '^\(\s\{-}\)\(x\| x$\)', ' x', ' x', '', ' x'])
:"
:" Test Character classes
:call add(tl, [2, '\d\+e\d\d','test 10e23 fd','10e23'])
:"
:" Test collections and character range []
:call add(tl, [2, '\v[a]', 'abcd', 'a'])
:call add(tl, [2, 'a[bcd]', 'abcd', 'ab'])
:call add(tl, [2, 'a[b-d]', 'acbd', 'ac'])
:call add(tl, [2, '[a-d][e-f][x-x]d', 'cexdxx', 'cexd'])
:call add(tl, [2, '\v[[:alpha:]]+', 'abcdefghijklmnopqrstuvwxyz6','abcdefghijkl

mnopqrstuvwxyz'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '[[:alpha:]\+]', '6x8','x'])
:call add(tl, [2, '[^abc]\+','abcabcabc'])
:call add(tl, [2, '[^abc]','defghiasijvoinasoiunbvb','d'])
:call add(tl, [2, '[^abc]\+','ddddddda','ddddddd'])
:call add(tl, [2, '[^a-d]\+','aaaAAAZIHFNCddd','AAAZIHFNC'])
:call add(tl, [2, '[a-f]*','iiiiiiii',''])
:call add(tl, [2, '[a-f]*','abcdefgh','abcdef'])
:call add(tl, [2, '[^a-f]\+','abcdefgh','gh'])
:call add(tl, [2, '[a-c]\{-3,6}','abcabc','abc'])
:call add(tl, [2, '[^[:alpha:]]\+','abcccadfoij7787ysf287yrnccdu','7787'])
:call add(tl, [2, '[-a]', '-', '-'])
:call add(tl, [2, '[a-]', '-', '-'])
:call add(tl, [2, '[a-f]*\c','ABCDEFGH','ABCDEF'])
:call add(tl, [2, '[abc][xyz]\c','-af-AF-BY--','BY'])
:" filename regexp
:call add(tl, [2, '[-./[:alnum:]_~]\+', 'log13.file', 'log13.file'])
:" special chars
:call add(tl, [2, '[\]\^\-\\]\+', '\^\\\-\---^', '\^\\\-\---^'])
:" collation elem
:call add(tl, [2, '[[.a.]]\+', 'aa', 'aa'])
:" middle of regexp
:call add(tl, [2, 'abc[0-9]*ddd', 'siuhabc ii'])
:call add(tl, [2, 'abc[0-9]*ddd', 'adf abc44482ddd oijs', 'abc44482ddd'])
:call add(tl, [2, '\_[0-9]\+', 'asfi9888u', '9888'])
:call add(tl, [2, '[0-9\n]\+', 'asfi9888u', '9888'])
:call add(tl, [2, '\_[0-9]\+', "asfi\n9888u", "\n9888"])
:call add(tl, [2, '\_f', "  \na ", "\n"])
:call add(tl, [2, '\_f\+', "  \na ", "\na"])
:call add(tl, [2, '[0-9A-Za-z-_.]\+', " @0_a.A-{ ", "0_a.A-"])
:"
:"""" Test start/end of line, start/end of file
:call add(tl, [2, '^a.', "a_\nb ", "a_"])
:call add(tl, [2, '^a.', "b a \na_"])
:call add(tl, [2, '.a$', " a\n "])
:call add(tl, [2, '.a$', " a b\n_a", "_a"])
:call add(tl, [2, '\%^a.', "a a\na", "a "])
:call add(tl, [2, '\%^a', " a \na "])
:call add(tl, [2, '.a\%$', " a\n "])
:call add(tl, [2, '.a\%$', " a\n_a", "_a"])
:"
:"""" Test recognition of character classes
:call add(tl, [2, '[0-7]\+', 'x0123456789x', '01234567'])
:call add(tl, [2, '[^0-7]\+', '0a;X+% 897', 'a;X+% 89'])
:call add(tl, [2, '[0-9]\+', 'x0123456789x', '0123456789'])
:call add(tl, [2, '[^0-9]\+', '0a;X+% 9', 'a;X+% '])
:call add(tl, [2, '[0-9a-fA-F]\+', 'x0189abcdefg', '0189abcdef'])
:call add(tl, [2, '[^0-9A-Fa-f]\+', '0189g;X+% ab', 'g;X+% '])
:call add(tl, [2, '[a-z_A-Z0-9]\+', ';+aso_SfOij ', 'aso_SfOij'])
:call add(tl, [2, '[^a-z_A-Z0-9]\+', 'aSo_;+% sfOij', ';+% '])
:call add(tl, [2, '[a-z_A-Z]\+', '0abyz_ABYZ;', 'abyz_ABYZ'])
:call add(tl, [2, '[^a-z_A-Z]\+', 'abAB_09;+% yzYZ', '09;+% '])
:call add(tl, [2, '[a-z]\+', '0abcxyz1', 'abcxyz'])
:call add(tl, [2, '[a-z]\+', 'AabxyzZ', 'abxyz'])
:call add(tl, [2, '[^a-z]\+', 'a;X09+% x', ';X09+% '])
:call add(tl, [2, '[^a-z]\+', 'abX0;%yz', 'X0;%'])
:call add(tl, [2, '[a-zA-Z]\+', '0abABxzXZ9', 'abABxzXZ'])
:call add(tl, [2, '[^a-zA-Z]\+', 'ab09_;+ XZ', '09_;+ '])
:call add(tl, [2, '[A-Z]\+', 'aABXYZz', 'ABXYZ'])
:call add(tl, [2, '[^A-Z]\+', 'ABx0;%YZ', 'x0;%'])
:call add(tl, [2, '[a-z]\+\c', '0abxyzABXYZ;', 'abxyzABXYZ'])
:call add(tl, [2, '[A-Z]\+\c', '0abABxzXZ9', 'abABxzXZ'])
:call add(tl, [2, '\c[^a-z]\+', 'ab09_;+ XZ', '09_;+ '])
:call add(tl, [2, '\c[^A-Z]\+', 'ab09_;+ XZ', '09_;+ '])
:call add(tl, [2, '\C[^A-Z]\+', 'ABCOIJDEOIFNSD jsfoij sa', ' jsfoij sa'])
:"
:"""" Tests for \z features
:" match ends at \ze
:call add(tl, [2, 'xx \ze test', 'xx '])
:call add(tl, [2, 'abc\zeend', 'oij abcend', 'abc'])
:call add(tl, [2, 'aa\zebb\|aaxx', ' aabb ', 'aa'])
:call add(tl, [2, 'aa\zebb\|aaxx', ' aaxx ', 'aaxx'])
:call add(tl, [2, 'aabb\|aa\zebb', ' aabb ', 'aabb'])
:call add(tl, [2, 'aa\zebb\|aaebb', ' aabb ', 'aa'])
:" match starts at \zs
:call add(tl, [2, 'abc\zsdd', 'ddabcddxyzt', 'dd'])
:call add(tl, [2, 'aa \zsax', ' ax'])
:call add(tl, [2, 'abc \zsmatch\ze abc', 'abc abc abc match abc abc', 'match'])
:call add(tl, [2, '\v(a \zsif .*){2}', 'a if then a if last', 'if last', 'a if 

last'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\>\zs.', 'aword. ', '.'])
:call add(tl, [2, '\s\+\ze\[/\|\s\zs\s\+', 'is   [a t', '  '])
:"
:"""" Tests for \@= and \& features
:call add(tl, [2, 'abc\@=', 'abc', 'ab'])
:call add(tl, [2, 'abc\@=cd', 'abcd', 'abcd'])
:call add(tl, [2, 'abc\@=', 'ababc', 'ab'])
:" will never match, no matter the input text
:call add(tl, [2, 'abcd\@=e', 'abcd'])
:" will never match
:call add(tl, [2, 'abcd\@=e', 'any text in here ... '])
:call add(tl, [2, '\v(abc)@=..', 'xabcd', 'ab', 'abc'])
:call add(tl, [2, '\(.*John\)\@=.*Bob', 'here is John, and here is B'])
:call add(tl, [2, '\(John.*\)\@=.*Bob', 'John is Bobs friend', 'John is Bob', '

John is Bobs friend'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\<\S\+\())\)\@=', '$((i=i+1))', 'i=i+1', '))'])
:call add(tl, [2, '.*John\&.*Bob', 'here is John, and here is B'])
:call add(tl, [2, '.*John\&.*Bob', 'John is Bobs friend', 'John is Bob'])
:call add(tl, [2, '\v(test1)@=.*yep', 'this is a test1, yep it is', 'test1, yep

', 'test1'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, 'foo\(bar\)\@!', 'foobar'])
:call add(tl, [2, 'foo\(bar\)\@!', 'foo bar', 'foo'])
:call add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if then else'])
:call add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if else ', 'if else ', ' '])
:call add(tl, [2, '\(foo\)\@!bar', 'foobar', 'bar'])
:call add(tl, [2, '\(foo\)\@!...bar', 'foobar'])
:call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' bar foo '])
:call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo bar '])
:call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo xxx ', 'foo'])
:call add(tl, [2, '[ ]\@!\p\%([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:']

):for pat in [' \ze*', ' \zs*']:call add(tl, [2, '[ ]\@!\p\([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:', 

's'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, 'm\k\+_\@=\%(_\@!\k\)\@<=\k\+e', 'mx__xe', 'mx__xe'])
:call add(tl, [2, '\%(\U\@<=S\k*\|S\l\)R', 'SuR', 'SuR'])
:"
:"""" Combining different tests and features
:call add(tl, [2, '[[:alpha:]]\{-2,6}', '787abcdiuhsasiuhb4', 'ab'])
:call add(tl, [2, '', 'abcd', ''])
:call add(tl, [2, '\v(())', 'any possible text', ''])
:call add(tl, [2, '\v%(ab(xyz)c)', '   abxyzc ', 'abxyzc', 'xyz'])
:call add(tl, [2, '\v(test|)empty', 'tesempty', 'empty', ''])
:call add(tl, [2, '\v(a|aa)(a|aa)', 'aaa', 'aa', 'a', 'a'])
:"
:"""" \%u and friends
:call add(tl, [2, '\%d32', 'yes no', ' '])
:call add(tl, [2, '\%o40', 'yes no', ' '])
:call add(tl, [2, '\%x20', 'yes no', ' '])
:call add(tl, [2, '\%u0020', 'yes no', ' '])
:call add(tl, [2, '\%U00000020', 'yes no', ' '])
:call add(tl, [2, '\%d0', "yes\x0ano", "\x0a"])
:"
:""""" \%[abc]
:call add(tl, [2, 'foo\%[bar]', 'fobar'])
:call add(tl, [2, 'foo\%[bar]', 'foobar', 'foobar'])
:call add(tl, [2, 'foo\%[bar]', 'fooxx', 'foo'])
:call add(tl, [2, 'foo\%[bar]', 'foobxx', 'foob'])
:call add(tl, [2, 'foo\%[bar]', 'foobaxx', 'fooba'])
:call add(tl, [2, 'foo\%[bar]', 'foobarxx', 'foobar'])
:call add(tl, [2, 'foo\%[bar]x', 'foobxx', 'foobx'])
:call add(tl, [2, 'foo\%[bar]x', 'foobarxx', 'foobarx'])
:call add(tl, [2, '\%[bar]x', 'barxx', 'barx'])
:call add(tl, [2, '\%[bar]x', 'bxx', 'bx'])
:call add(tl, [2, '\%[bar]x', 'xxx', 'x'])
:call add(tl, [2, 'b\%[[ao]r]', 'bar bor', 'bar'])
:call add(tl, [2, 'b\%[[]]r]', 'b]r bor', 'b]r'])
:call add(tl, [2, '@\%[\w\-]*', '<http://john.net/pandoc/>[@pandoc]', '@pandoc'

]):for pat in [' \ze*', ' \zs*']:"
:"""" Alternatives, must use first longest match
:call add(tl, [2, 'goo\|go', 'google', 'goo'])
:call add(tl, [2, '\<goo\|\<go', 'google', 'goo'])
:call add(tl, [2, '\<goo\|go', 'google', 'goo'])
:"
:"""" Back references
:call add(tl, [2, '\(\i\+\) \1', ' abc abc', 'abc abc', 'abc'])
:call add(tl, [2, '\(\i\+\) \1', 'xgoo goox', 'goo goo', 'goo'])
:call add(tl, [2, '\(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7

\8\9', 'xabcddefghiabcddefghix', 'abcddefghiabcddefghi', 'a', 'b', 'c', 'dd', 'e

', 'f', 'g', 'h', 'i'])
:for pat in [' \ze*', ' \zs*']
:  try:call add(tl, [2, '\(\d*\)a \1b', ' a b ', 'a b', ''])
:call add(tl, [2, '^.\(.\).\_..\1.', "aaa\naaa\nb", "aaa\naaa", 'a'])
:call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.com', 'foo.bat/foo

.com', 'bat'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.bat'])
:call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<=$', 'foo.bat/foo.bat', 'foo.bat/foo

.bat', 'bat', 'bat'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}', '2013-06-27${0}', '$

{0}', '0'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '^\(a*\)\1$', 'aaaaaaaa', 'aaaaaaaa', 'aaaa'])
:call add(tl, [2, '^\(a\{-2,}\)\1\+$', 'aaaaaaaaa', 'aaaaaaaaa', 'aaa'])
:"
:"""" Look-behind with limit
:call add(tl, [2, '<\@<=span.', 'xxspanxx<spanyyy', 'spany'])
:call add(tl, [2, '<\@1<=span.', 'xxspanxx<spanyyy', 'spany'])
:call add(tl, [2, '<\@2<=span.', 'xxspanxx<spanyyy', 'spany'])
:call add(tl, [2, '\(<<\)\@<=span.', 'xxspanxxxx<spanxx<<spanyyy', 'spany', '<<

'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(<<\)\@1<=span.', 'xxspanxxxx<spanxx<<spanyyy'])
:call add(tl, [2, '\(<<\)\@2<=span.', 'xxspanxxxx<spanxx<<spanyyy', 'spany', '<

<'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(foo\)\@<!bar.', 'xx foobar1 xbar2 xx', 'bar2'])
:"
:" look-behind match in front of a zero-width item
:call add(tl, [2, '\v\C%(<Last Changed:\s+)@<=.*$', '" test header'])
:call add(tl, [2, '\v\C%(<Last Changed:\s+)@<=.*$', '" Last Changed: 1970', '19

70'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(foo\)\@<=\>', 'foobar'])
:call add(tl, [2, '\(foo\)\@<=\>', 'barfoo', '', 'foo'])
:call add(tl, [2, '\(foo\)\@<=.*', 'foobar', 'bar', 'foo'])
:"
:" complicated look-behind match
:call add(tl, [2, '\(r\@<=\|\w\@<!\)\/', 'x = /word/;', '/'])
:call add(tl, [2, '^[a-z]\+\ze \&\(asdf\)\@<!', 'foo bar', 'foo'])
:"
:""""" \@>
:call add(tl, [2, '\(a*\)\@>a', 'aaaa'])
:call add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa'])
:call add(tl, [2, '^\(.\{-}b\)\@>.', '  abcbd', '  abc', '  ab'])
:call add(tl, [2, '\(.\{-}\)\(\)\@>$', 'abc', 'abc', 'abc', ''])
:" TODO: BT engine does not restore submatch after failure
:call add(tl, [1, '\(a*\)\@>a\|a\+', 'aaaa', 'aaaa'])
:"
:"""" "\_" prepended negated collection matches EOL
:call add(tl, [2, '\_[^8-9]\+', "asfi\n9888", "asfi\n"])
:call add(tl, [2, '\_[^a]\+', "asfi\n9888", "sfi\n9888"])
:"
:"""" Requiring lots of states.
:call add(tl, [2, '[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}', "

12345678-1234-1234-1234-123456789012 ", "12345678-1234-1234-1234-123456789012",

"1234-"])
:for pat in [' \ze*', ' \zs*']
:  try:"
:"""" Skip adding state twice
:call add(tl, [2, '^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=', "#if FOO", 

"#if", ' FOO'])
:for pat in [' \ze*', ' \zs*']:"
:""" Test \%V atom
:call add(tl, [2, '\%>70vGesamt', 'Jean-Michel Charlier & Victor Hubinon\Gesamt

ausgabe [Salleck]    Buck Danny {Jean-Michel Charlier & Victor Hubinon}\Gesamtau

sgabe', 'Gesamt'])
:for pat in [' \ze*', ' \zs*']
:  try:"
:"""" Run the tests
:"
:for t in tl

:  :  let re = t[0]

:  :  let pat = t[1]

:  :  let text = t[2]

:  :  let matchidx = 3

:  :  for engine in [0, 1, 2]

:    :    if engine == 2 && re == 0 || engine == 1 && re == 1

:      :      continue

:      :    endif

:    :    let &regexpengine = engine

:    :    try

:      :      let l = matchlist(text, pat)

:      :    catch

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", caused an exception: \"' . v:exception . '\"'

:      :    endtry

:    :" check the match itself

:    :    if len(l) == 0 && len(t) > matchidx

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", did not match, expected: \"' . t[matchidx] . '\"'

:      :    elseif len(l) > 0 && len(t) == matchidx

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", match: \"' . l[0] . '\", expected no match'

:      :    elseif len(t) > matchidx && l[0] != t[matchidx]

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te
t . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"'

:      :    else

:      :      $put ='OK ' . engine . ' - ' . pat

:      :    endif

:    :    if len(l) > 0

:      :"   check all the nine submatches

:      :      for i in range(1, 9)

::        if len(t) <= matchidx + i

::          let e = ''

::        else

::          let e = t[matchidx + i]

::        endif

::        if l[i] != e

::          $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: 
"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"'

::        endif

::      endfor

:      :      unlet i

:      :    endif

:    :  endfor

:  :endfor
OK 0 - ^\(.\{-}b\)\@>.
OK 1 - ^\(.\{-}b\)\@>.
OK 2 - ^\(.\{-}b\)\@>.
OK 0 - \(.\{-}\)\(\)\@>$
OK 1 - \(.\{-}\)\(\)\@>$
OK 2 - \(.\{-}\)\(\)\@>$
OK 0 - \(a*\)\@>a\|a\+
OK 2 - \(a*\)\@>a\|a\+
OK 0 - \_[^8-9]\+
OK 1 - \_[^8-9]\+
OK 2 - \_[^8-9]\+
OK 0 - \_[^a]\+
OK 1 - \_[^a]\+
OK 2 - \_[^a]\+
OK 0 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
OK 1 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
OK 2 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
OK 0 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
OK 1 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
OK 2 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
OK 0 - \%>70vGesamt
OK 1 - \%>70vGesamt
OK 2 - \%>70vGesamt

:unlet t tl e l
:"
:"""""" multi-line tests """"""""""""""""""""
:let tl = []
:"
:"""" back references
:call add(tl, [2, '^.\(.\).\_..\1.', ['aaa', 'aaa', 'b'], ['XX', 'b']])
:call add(tl, [2, '\v.*\/(.*)\n.*\/\1$', ['./Dir1/Dir2/zyxwvuts.txt', './Dir1/D

ir2/abcdefgh.bat', '', './Dir1/Dir2/file1.txt', './OtherDir1/OtherDir2/file1.txt

'], ['./Dir1/Dir2/zyxwvuts.txt', './Dir1/Dir2/abcdefgh.bat', '', 'XX']])
OK 0 - ^\(.\{-}b\)\@>.
OK 1 - ^\(.\{-}b\)\@>.
:"
:"""" line breaks
:call add(tl, [2, '\S.*\nx', ['abc', 'def', 'ghi', 'xjk', 'lmn'], ['abc', 'def'

, 'XXjk', 'lmn']])
OK 0 - ^\(.\{-}b\)\@>.
:"
:" Check that \_[0-9] matching EOL does not break a following \>
:call add(tl, [2, '\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)

\.\)\{3\}\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>', ['', 'loca

lnet/192.168.0.1', ''], ['', 'localnet/XX', '']])
OK 0 - ^\(.\{-}b\)\@>.
OK 1 - ^\(.\{-}b\)\@>.
:"
:" Check a pattern with a line break and ^ and $
:call add(tl, [2, 'a\n^b$\n^c', ['a', 'b', 'c'], ['XX']])
:"
:call add(tl, [2, '\(^.\+\n\)\1', [' dog', ' dog', 'asdf'], ['XXasdf']])
:"
:"""" Run the multi-line tests
:"
:$put ='multi-line tests'

multi-line tests
:for t in tl

:  :  let re = t[0]

:  :  let pat = t[1]

:  :  let before = t[2]

:  :  let after = t[3]

:  :  for engine in [0, 1, 2]

:    :    if engine == 2 && re == 0 || engine == 1 && re ==1

:      :      continue

:      :    endif

:    :    let &regexpengine = engine

:    :    new

:    :    call setline(1, before)

:    :    exe '%s/' . pat . '/XX/'

:    :    let result = getline(1, '$')

:    :    q!

:    :    if result != after

:      :      $put ='ERROR: pat: \"' . pat . '\", text: \"' . string(before) . 

'\", expected: \"' . string(after) . '\", got: \"' . string(result) . '\"'

:      :    else

:      :      $put ='OK ' . engine . ' - ' . pat

:      :    endif

:    :  endfor

:  :endfor
OK 2 - \%>70vGesamt
multi-line tests
OK 0 - ^.\(.\).\_..\1.
OK 1 - ^.\(.\).\_..\1.
OK 2 - ^.\(.\).\_..\1.
OK 0 - \v.*\/(.*)\n.*\/\1$
OK 1 - \v.*\/(.*)\n.*\/\1$
OK 2 - \v.*\/(.*)\n.*\/\1$
OK 0 - \S.*\nx
OK 1 - \S.*\nx
OK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

:unlet t tl
:"
:" Check that using a pattern on two lines doesn't get messed up by using
:" matchstr() with \ze in between.
:set re=0
/^Substitute here
search hit BOTTOM, continuing at TOP:    let l = matchlist('x x', pat)
:    $put ='E888 NOT detected for ' . pat
:  catch
:    $put ='E888 detected for ' . pat
:  endtry
:endfor
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
ENDTEST

Substitute here:
<T="">Ta 5</Title>
<T="">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

search hit BOTTOM, continuing at TOP:.+1,.+2s/""/\='"'.matchstr(getline("."), '\d\+\ze<').'"'
5">Ta 5</Title>
<T="7">Ac 7</Title>
/^Substitute here
search hit BOTTOM, continuing at TOP:.+1,.+2yank
OK 2 - \%>70vGesamt
multi-line tests
OK 0 - ^.\(.\).\_..\1.
OK 1 - ^.\(.\).\_..\1.
OK 2 - ^.\(.\).\_..\1.
OK 0 - \v.*\/(.*)\n.*\/\1$
OK 1 - \v.*\/(.*)\n.*\/\1$
OK 2 - \v.*\/(.*)\n.*\/\1$
OK 0 - \S.*\nx
OK 1 - \S.*\nx
OK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1


<T="5">Ta 5</Title>

:"
:"
:" Check a pattern with a look beind crossing a line boundary
/^Behind:
search hit BOTTOM, continuing at TOP:  endtry
:endfor
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
ENDTEST

Substitute here:
<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

Visual:
thexe the thexethe
andaxand andaxand
oooxofor foroxooo
search hit BOTTOM, continuing at TOP/\(<\_[xy]\+\)\@3<=start
:.yank
OK 1 - ^.\(.\).\_..\1.
OK 2 - ^.\(.\).\_..\1.
OK 0 - \v.*\/(.*)\n.*\/\1$
OK 1 - \v.*\/(.*)\n.*\/\1$
OK 2 - \v.*\/(.*)\n.*\/\1$
OK 0 - \S.*\nx
OK 1 - \S.*\nx
OK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>


xxstart3

:"
:"
:" Check matching Visual area
/^Visual:
search hit BOTTOM, continuing at TOP<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

Visual:
thexe the thexethe
andaxand andaxand
oooxofor foroxooo
oooxofor foroxooo

Marks:
asdfSasdfsadfEasdf
asdfSas
dfsadfEasdf

Results of test64:
search hit BOTTOM, continuing at TOP
thexe the the:'<,'>s/\%Ve/E/g
3 substitutions on 1 linexE thE thE

andaxand andaxand 
:'<,'>s/\%Va/A/g
6 substitutions on 1 lineAndAxAnd AndAxAnd
oooxofor forox
oooxofor foro:'<,'>s/\%Vo/O/g
8 substitutions on 2 linesxOfOr fOrOx
oooxOfOr fOrO
:/^Visual/+1,/^Visual/+4yank
search hit BOTTOM, continuing at TOP
4 lines yankedOK 0 - \v.*\/(.*)\n.*\/\1$
OK 1 - \v.*\/(.*)\n.*\/\1$
OK 2 - \v.*\/(.*)\n.*\/\1$
OK 0 - \S.*\nx
OK 1 - \S.*\nx
OK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3


4 more lines
thexE thE thExethe4 more lines:"
:"
:" Check matching marks
/^Marks:
search hit BOTTOM, continuing at TOPasdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

Visual:
thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxooo

Marks:
asdfSasdfsadfEasdf
asdfSas
dfsadfEasdf

Results of test64:
OK 0 - ab
OK 1 - ab
OK 2 - ab
OK 0 - b
OK 1 - b
OK 2 - b
search hit BOTTOM, continuing at TOP
asdf:.-4,.+6s/.\%>'s.*\%<'e../here/
hereasdf
asdf
dfsa
dfsadf:.-4,.+6s/.\%>'s\_.*\%<'e../again/

asdfagainasdfOK 0 - bc*:/^Marks:/+1,/^Marks:/+3yank
search hit BOTTOM, continuing at TOP
3 lines yankedOK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3

thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxooo


3 more lines

asdfhereasdf
asdfagainasdf3 more lines:"
:"
:" Check patterns matching cursor position.
:func! Postest()

:   new

:   call setline(1, ['ffooooo', 'boboooo', 'zoooooo', 'koooooo', 'moooooo', "\t

\t\tfoo", 'abababababababfoo', 'bababababababafoo', '********_', '        xxxxxx

xxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxx xx xxxx

xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxx xxxxxxxxxx

xxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxx xxxxxxxxxxx

x xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx xxxxxxxxx xxxx

xxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxx xxx xxx xx

xxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx xxxxxxxxxxxx x

xxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxxxxx

xxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx'])

:   call setpos('.', [0, 1, 0, 0])

:   s/\%>3c.//g

:   call setpos('.', [0, 2, 4, 0])

:   s/\%#.*$//g

:   call setpos('.', [0, 3, 0, 0])

:   s/\%<3c./_/g

:   %s/\%4l\%>5c./_/g

:   %s/\%6l\%>25v./_/g

:   %s/\%>6l\%3c./!/g

:   %s/\%>7l\%12c./?/g

:   %s/\%>7l\%<9l\%>5v\%<8v./#/g

:   $s/\%(|\u.*\)\@<=[^|\t]\+$//ge

:   1,$yank

:   quit!

:  endfunc
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3

thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxooo

asdfhereasdf
asdfagainasdf255\
OK 0 - a\n^b$\n^cOK 1 - a\n^b$\n^c2
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2<T="5">Ta 5</Title>
<T="7">Ac 7</Title>xxstart3thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooooooxOfOr fOrOxoooasdfhereasdfasdfagainasdf~
-0-
:set re=0
:call Postest()
4 substitutions on 4 lines

10 lines yanked

Press ENTER or type command to continue:put
10 more lines

Press ENTER or type command to continueoooxOfOr fOrOxooo

asdfhereasdf
asdfagainasdf-0-ffobob__ooooo
koooo__moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
-1-
:set re=1
:call Postest()
4 substitutions on 4 lines

10 lines yanked

Press ENTER or type command to continue:put
10 more lines

Press ENTER or type command to continue-1-
ffo
bob
__ooooo
koooo__
moooooo
   f__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxx xxxx xx xxxxxxxx xxx xxxxxxx~~~~~-2-:set re=2
:call Postest()
4 substitutions on 4 lines

10 lines yanked

Press ENTER or type command to continue:put
10 more lines

Press ENTER or type command to continue:"
-2-
ffo
bob~:" start and end of buffer
/\%^
search hit BOTTOM, continuing at TOPTest for regexp patterns without multi-byte support.
See test95 for multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
search hit BOTTOM, continuing at TOP-2-
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
~
~
~
~
~Test:"
OK 2 - \v(a*)+
OK 0 - \v((ab)+)+
OK 1 - \v((ab)+)+
OK 2 - \v((ab)+)+
OK 0 - \v(((ab)+)+)+
OK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(((ab)+)+)+
OK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(a{0,2})+
OK 1 - \v(a{0,2})+
OK 2 - \v(a{0,2})+
OK 0 - \v(a*)+
OK 1 - \v(a*)+
OK 2 - \v(a*)+
OK 0 - \v((a*)+)+
OK 1 - \v((a*)+)+
OK 2 - \v((a*)+)+
OK 0 - \v((ab)*)+
OK 1 - \v((ab)*)+
OK 2 - \v((ab)*)+
OK 0 - \va{1,3}/\%^..
search hit BOTTOM, continuing at TOPTest for regexp patterns without multi-byte support.
See test95 for multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
search hit BOTTOM, continuing at TOP-2-
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
Test
~
~
~
~Testt END:"
OK 0 - \v((ab)+)+
OK 1 - \v((ab)+)+
OK 2 - \v((ab)+)+
OK 0 - \v(((ab)+)+)+
OK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(((ab)+)+)+
OK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(a{0,2})+
OK 1 - \v(a{0,2})+
OK 2 - \v(a{0,2})+
OK 0 - \v(a*)+
OK 1 - \v(a*)+
OK 2 - \v(a*)+
OK 0 - \v((a*)+)+
OK 1 - \v((a*)+)+
OK 2 - \v((a*)+)+
OK 0 - \v((ab)*)+
OK 1 - \v((ab)*)+
OK 2 - \v((ab)*)+
OK 0 - \va{1,3}
OK 1 - \va{1,3}/\%$
-2-
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
Test
Test END
~
~
~:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
:call add(tl, [2, 'ab', 'aab', 'ab'])
:call add(tl, [2, 'b', 'abcdef', 'b'])
:call add(tl, [2, 'bc*', 'abccccdef', 'bcccc'])
:call add(tl, [2, 'bc\{-}', 'abccccdef', 'b'])
:call add(tl, [2, 'bc\{-}\(d\)', 'abccccdef', 'bccccd', 'd'])
:call add(tl, [2, 'bc*', 'abbdef', 'b'])
:call add(tl, [2, 'c*', 'ccc', 'ccc'])
:call add(tl, [2, 'bc*', 'abdef', 'b'])/..\%$
-2-
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
Test
Test END
~
~
~
ENE

:"
:"
:" Check for detecting error
:set regexpengine=2
:for pat in [' \ze*', ' \zs*']

:  :  try

:    :    let l = matchlist('x x', pat)

:    :    $put ='E888 NOT detected for ' . pat

:    :  catch

:    :    $put ='E888 detected for ' . pat

:    :  endtry

:  :endfor
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?ba
**!*****_  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxxxxxxx xxx xxxxxxx xxxxxxxxx  xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxx xxxx xxx xxxx xxx xxx xxxxxx x xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x x xx xxxxxx xxxxxxx  xxxxxxxxxx xxxxxxxxx xxx xxx xxxxxxxx   xxxx xxx xxxxxx xxxxx xxxxx xx   xxxxxxxxxxxx xxxx xxxxxxxxx xxxxx xxxxx xx xxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxTestEND
EN888 detected for  \ze*
E888 detected for  \zs*
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 1107 lines, 22167 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test64 = test61; then \
#	  if diff test.out test64.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test64.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test64.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test65.failed test.ok test.out X* viminfo
cp test65.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test65.in
[?1h="test65.in" 95 lines, 2153 charactersTest for floating point and logical operators.

STARTTEST
:so small.vim
:if !has("float")
:  e! test.ok
:  wq! test.out
:endif
:"
:$put =printf('%f', 123.456)
:$put =printf('%e', 123.456)
:$put =printf('%g', 123.456)
:" check we don't crash on division by zero
:echo 1.0 / 0.0
:$put ='+='
:let v = 1.234
:let v += 6.543
:$put =printf('%g', v)
:let v = 1.234
:let v += 5
:$put =printf('%g', v)
:let a = 5
:let a += 3.333:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for floating point and logical operators./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 89 lines, 2067 characters written:set ff& cpo+=A
/ENDTEST:$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

Results of test65:


:so! Xdotest
:so small.vim
:if !has("float")

:  :  e! test.ok

:  :  wq! test.out

:  :endif
:$put =float2nr(123.456)
:$put =float2nr(-123.456)
:$put ='AND'

:"
:$put =printf('%f', 123.456)

123.456000
:$put =printf('%e', 123.456)

1.234560e+02
:$put =printf('%g', 123.456)

123.456
:" check we don't crash on division by zero
:echo 1.0 / 0.0
inf:$put ='+='

+=
:let v = 1.234
:let v += 6.543
:$put =printf('%g', v)

7.777
:let v = 1.234
:let v += 5
:$put =printf('%g', v)

6.234
:let a = 5
:let a += 3.333
:$put =string(a)

8.333
:$put ='=='

==
:let v = 1.234
:$put =v == 1.234

1
:$put =v == 1.2341

0
:$put ='add-subtract'

add-subtract
:$put =printf('%g', 4 + 1.234)

5.234
:$put =printf('%g', 1.234 - 8)

-6.766
:$put ='mult-div'

mult-div
:$put =printf('%g', 4 * 1.234)

4.936
:$put =printf('%g', 4.0 / 1234)

0.003241
:$put ='dict'

dict
:$put =string({'x': 1.234, 'y': -2.0e20})

{'x': 1.234, 'y': -2.0e20}
:$put ='list'

list
:$put =string([-123.4, 2.0e-20])

[-123.4, 2.0e-20]
:$put ='abs'

abs
:$put =printf('%d', abs(1456))

1456
:$put =printf('%d', abs(-4))

4
:$put =printf('%d', abs([1, 2, 3]))
E745: Using a List as a Number
-1
:$put =printf('%g', abs(14.56))

14.56
:$put =printf('%g', abs(-54.32))

54.32
:$put ='ceil'

ceil
:$put =printf('%g', ceil(1.456))

2.0
:$put =printf('%g', ceil(-5.456))

-5.0
:$put =printf('%g', ceil(-4.000))

-4.0
:$put ='floor'

floor
:$put =printf('%g', floor(1.856))

1.0
:$put =printf('%g', floor(-5.456))

-6.0
:$put =printf('%g', floor(4.0))

4.0
:$put ='log10'

log10
:$put =printf('%g', log10(1000))

3.0
:$put =printf('%g', log10(0.01000))

-2.0
:$put ='pow'

pow
:$put =printf('%g', pow(3, 3.0))

27.0
:$put =printf('%g', pow(2, 16))

65536.0
:$put ='round'

round
:$put =printf('%g', round(0.456))

0.0
:$put =printf('%g', round(4.5))

5.0
:$put =printf('%g', round(-4.50))

-5.0
:$put ='sqrt'

sqrt
:$put =printf('%g', sqrt(100))

10.0
:echo sqrt(-4.01)
nan:$put ='str2float'

str2float
:$put =printf('%g', str2float('1e40'))

1.0e40
:$put ='trunc'

trunc
:$put =printf('%g', trunc(1.456))

1.0
:$put =printf('%g', trunc(-5.456))

-5.0
:$put =printf('%g', trunc(4.000))

4.0
:$put ='float2nr'

float2nr
:$put =float2nr(123.456)

123
:$put =float2nr(-123.456)

-123
:$put ='AND'

AND
:$put =and(127, 127)

127
:$put =and(127, 16)

16
:$put =and(127, 128)

0
:$put ='OR'

OR
:$put =or(16, 7)

23
:$put =or(8, 7)

15
:$put =or(0, 123)

123
:$put ='XOR'

XOR
:$put =xor(127, 127)

0
:$put =xor(127, 16)

111
:$put =xor(127, 128)

255
:$put ='invert'

invert
:$put =and(invert(127), 65535)

65408
:$put =and(invert(16), 65535)

65519
:$put =and(invert(128), 65535)

65407
:$put =invert(1.0)
E805: Using a Float as a Number
0
:/^Results/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 73 lines, 430 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test65 = test61; then \
#	  if diff test.out test65.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test65.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test65.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test66.failed test.ok test.out X* viminfo
cp test66.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test66.in
[?1h="test66.in" 33 lines, 509 charactersTest for visual block shift and tab characters.

STARTTEST
:so small.vim
/^one
fe^V4jR^[ugvr1:'<,'>w! test.out
/^abcdefgh
^V4jI    ^[j<<11|D
7|a^[
7|a^[
7|a^[4k13|^V4j<
:$-5,$w >> test.out
:$-4,$s/\s\+//g
^V4kI    ^[j<<
7|a^[
7|a^[
7|a^[4k13|^V4j3<
:$-4,$w >> test.out
:qa!
ENDTEST

one two three:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 16 lines, 234 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^one
on



e
one two three
one two three
one two three
one two three
4 fewer linesabcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyzmore lines; before #1  0 seconds agoone two three
one two three
one two threeone two threeone two threee
one
one
one
on1
on1
on1
on1
on1:'<,'>w! test.out
"test.out" [New File] 5 lines, 70 characters written/^abcdefgh


abcdefghijklmnopqrstuvwxyz



a
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
a
a
a
a    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyzc         defghijklmnopqrstuvwxyzc            defghijklmnopqrstuvwxyzc         defghijklmnopqrstuvwxyzi  
5 lines <ed 1 timeidefghijklmnopqrstuvwxyzdefghijklmnopqrstuvwxyzdefghijklmnopqrstuvwxyz:$-5,$w >> test.out
"test.out"6 lines, 151 characters appended:$-4,$s/\s\+//g
7 substitutions on 4 linesabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyza
a
a
a
a
a
a
a    abcdefghijklmnopqrstuvwxyz
    abcdefghij
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
abcdefghij
    abc         defghijklmnopqrstuvwxyzc                       defghijklmnopqrstuvwxyzc                 defghijklmnopqrstuvwxyzi  
5 lines <ed 3 timesidefghijklmnopqrstuvwxyz    defghijklmnopqrstuvwxyzdefghijklmnopqrstuvwxyz:$-4,$w >> test.out
"test.out"5 lines, 147 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test66 = test61; then \
#	  if diff test.out test66.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test66.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test66.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test67.failed test.ok test.out X* viminfo
cp test67.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test67.in
[?1h="test67.in" 33 lines, 1109 charactersTest that groups and patterns are tested correctly when calling exists() for
autocommands.

STARTTEST
:so small.vim
:let results=[]
:augroup auexists
:augroup END
:call add(results, "##BufEnter: " . exists("##BufEnter"))
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:au BufEnter * let g:entered=1
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:augroup auexists
:au BufEnter * let g:entered=1
:augroup END
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:au BufEnter *.test let g:entered=1
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:edit testfile.test
:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:au BufEnter <buffer> let g:entered=1:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test that groups and patterns are tested correctly when calling exists() for/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 27 lines, 998 characters written:set ff& cpo+=A
/ENDTEST








:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:edit testfile2.test
:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:e test.out
:call append(0, results)
:$d
:w
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:let results=[]
:augroup auexists
:augroup END
:call add(results, "##BufEnter: " . exists("##BufEnter"))
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:au BufEnter * let g:entered=1
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:augroup auexists
:au BufEnter * let g:entered=1
:augroup END
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:au BufEnter *.test let g:entered=1
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:edit testfile.test
"testfile.test" [New File]~~~~~~~~~~~~~~~~~~~~~
~:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:au BufEnter <buffer> let g:entered=1
:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:edit testfile2.test
"testfile2.test" [New File]:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:e test.out
"test.out" [New File]:call append(0, results)
##BufEnter: 1
#BufEnter: 0
#BufEnter: 1
#auexists#BufEnter: 0
#auexists#BufEnter: 1
#BufEnter#*.test: 0
#BufEnter#*.test: 1
#BufEnter#<buffer>: 0
#BufEnter#<buffer>: 1
#BufEnter#<buffer>: 0:$d
~:w
"test.out" [New File] 10 lines, 190 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test67 = test61; then \
#	  if diff test.out test67.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test67.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test67.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test68.failed test.ok test.out X* viminfo
cp test68.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test68.in
[?1h="test68.in" 131 lines, 1004 charactersTest for text formatting.

Results of test68:

STARTTEST
:so small.vim
/^{/+1
:set noai tw=2 fo=t
gRa b^[
ENDTEST

{


}

STARTTEST
/^{/+1
:set ai tw=2 fo=tw
gqgqjjllab^[
ENDTEST

{:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for text formatting./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 4 lines, 48 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^{/+1
:set noai tw=2 fo=t
a
b
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 38 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
/^{/+1

a  b
:set ai tw=2 fo=tw

b

aa 
b
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 4 lines, 34 characters written:set ff& cpo+=A

/ENDTEST



:set tw=3 fo=t
gqgqo
a ^V^A^[
ENDTEST

:so! Xdotest
/^{/+1


{
a ^A
:set tw=3 fo=t

^A


a
^A

}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 58 characters written:set ff& cpo+=A

/ENDTEST




:set tw=2 fo=tcq1 comments=:#
gqgqjgqgqo
a b
#a b^[
ENDTEST

:so! Xdotest
/^{/+1


{
a b
:set tw=2 fo=tcq1 comments=:#

#a b


a b
#a b
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 46 characters written:set ff& cpo+=A

/ENDTEST


:set tw=5 fo=tcn comments=:#
A b^[jA b^[
ENDTEST

:so! Xdotest
/^{/+1


{
  1 a
:set tw=5 fo=tcn comments=:#

b
# 1 a
#   b
}
/^STARTTEST


STARTTEST
/^{/+3

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 35 characters written:set ff& cpo+=A

/ENDTEST


:set tw=5 fo=t2a si
i  ^[A_^[
ENDTEST

:so! Xdotest
/^{/+3




{

  x a
  b
:set tw=5 fo=t2a si
    b b_
c
/^STARTTEST




}

STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 40 characters written:set ff& cpo+=A

/ENDTEST


:set tw=5 fo=qn comments=:#
gwap
ENDTEST

:so! Xdotest
/^{/+1


{
# 1 a b
:set tw=5 fo=qn comments=:#

#   b
/^STARTTEST



}

STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 40 characters written:set ff& cpo+=A

/ENDTEST


:set tw=5 fo=q2 comments=:#
gwap
ENDTEST

:so! Xdotest
/^{/+1


{
# x
:set tw=5 fo=q2 comments=:#
# x a

#   b
/^STARTTEST



}

STARTTEST
/^{/+2

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 26 characters written:set ff& cpo+=A

/ENDTEST


:set tw& fo=a
I^^^[
ENDTEST

:so! Xdotest
/^{/+2



{
   1aa
   2bb
:set tw& fo=a
1aa ^^2bb }STARTTEST
/^STARTTEST

/mno pqr/
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 69 characters written:set ff& cpo+=A

/ENDTEST


:setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/
A vwx yz^[
ENDTEST

:so! Xdotest
/mno pqr/


/* abc def ghi jkl
 *    mno pqr stu
:setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/

*    vwx yz
*/
/^STARTTEST


STARTTEST
/^#/

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 47 characters written:set ff& cpo+=A

/ENDTEST


:setl tw=12 fo=tqnc comments=:#
A foobar^[
ENDTEST

:so! Xdotest
/^#/

# 1 xxxxx
:setl tw=12 fo=tqnc comments=:#

#   foobar

/^STARTTEST

STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2 lines, 56 characters written:set ff& cpo+=A

/ENDTEST
:1;/^Results/,$wq! test.out

:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
63 fewer lines# 1 a#   b}{
# x a#   b}{ 1aa ^^2bb }/* abc def ghi jkl
 *    mno pqr stu
 *    vwx yz
 */# 1 xxxxx
#   foobar:1;/^Results/,$wq! test.out
"test.out" [New File] 77 lines, 281 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test68 = test61; then \
#	  if diff test.out test68.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test68.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test68.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test69.failed test.ok test.out X* viminfo
cp test69.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test69.in
[?1h="test69.in" 192 lines, 2185 charactersTest for multi-byte text formatting.
Also test, that 'mps' with multibyte chars works.
And test "ra" on multi-byte characters.
Also test byteidx() and byteidxcomp()

STARTTEST
:so mbyte.vim
:set encoding=utf-8
ENDTEST

Results of test69:

STARTTEST
/^{/+1
:set tw=2 fo=t
gqgqjgqgqo
XYZ
abc XYZ^[
ENDTEST

{
XYZ
abc XYZ:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for multi-byte text formatting./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 2 lines, 34 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so mbyte.vim
:set encoding=utf-8
Test for multi-byte text formatting.
Also test, that 'mps' with multibyte chars works.
And test "ra" on multi-byte characters.
Also test byteidx() and byteidxcomp()

STARTTEST
:so mbyte.vim
:set encoding=utf-8
ENDTEST

Results of test69:

STARTTEST
/^{/+1
:set tw=2 fo=t
gqgqjgqgqo
XYZ
abc XYZ^[
ENDTEST

{
XYZ
abc XYZ/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 58 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
/^{/+1
:set tw=2 fo=t


XYZ

XY
Z
abc 
XYZ
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 8 lines, 80 characters written:set ff& cpo+=A

/ENDTEST







:set tw=1 fo=tm
gqgqjgqgqjgqgqjgqgqjgqgqo
X
Xa
X a
XY
X Y^[
ENDTEST

:so! Xdotest
/^{/+1


{
X
:set tw=1 fo=tm

Xa
a
X a

a
XY

Y

X Y

Y



X


X
a


X
a
X

Y
X 
Y

}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 13 lines, 140 characters written:set ff& cpo+=A

/ENDTESTgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
X
Xa
X a
XY
X Y
aX
abX
abcX
abX c
abXY^[
ENDTEST

{
X
Xa
X a
XY
X Y
aX
abX
abcX
abX c
:so! Xdotest
/^{/+1
:set tw=2 fo=tm

a
a
Y

Y 

aX

X

abX

X

abcX

X

abX c


X
c
abXY


X
Y



X


X
a


X
a
X

Y
X 

Y
a

X
ab

X
abc

X
ab


X
c
ab
X
Y

}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 47 characters written:set ff& cpo+=A

/ENDTEST




:set ai tw=2 fo=tm
gqgqjgqgqo
X
Xa^[
ENDTEST

:so! Xdotest
/^{/+1


{
  X
:set ai tw=2 fo=tm
  
Xa
a


X
  
X
  a
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 53 characters written:set ff& cpo+=A

/ENDTEST




:set noai tw=2 fo=tm
gqgqjgqgqo
  X
  Xa^[
ENDTEST

:so! Xdotest
/^{/+1


{
  X
:set noai tw=2 fo=tm
  
Xa
a


X
  
X
a
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 13 lines, 169 characters written:set ff& cpo+=A

/ENDTESTgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
X
Xa
XaY
XY
XYZ
X Y
X YZ
XX
XXa
XXY^[
ENDTEST

{
X
Xa
XaY
XY
XYZ
X Y
X YZ
XX
XXa
:so! Xdotest
/^{/+1
:set tw=2 fo=cqm comments=n:X


XY

XZ



X Z

XX

XXa

XXY



X

Xa
Xa

XY
X
Y
XY

XZ
X 
Y
X Y

X Z
X
X
X
Xa
XXY
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 30 characters written:set ff& cpo+=A

/ENDTEST


:set tw=2 fo=tm
RXa^[
ENDTEST

:so! Xdotest
/^{/+1


{
:set tw=2 fo=tm

X
a
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 34 characters written:set ff& cpo+=A

/ENDTEST


:set mps+=^Vu2018:^Vu2019
d%
ENDTEST

:so! Xdotest
/^{/+1


{
‘two three ’four
:set mps+=^‘:^’
 four
}
/^STARTTEST

STARTTEST
/^ra test

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2 lines, 16 characters written:set ff& cpo+=A

/ENDTEST

jVjra
ENDTEST

:so! Xdotest
/^ra test

ra test
abba
bba 

a
aab 
aaaaaaa 

/^STARTTEST


STARTTEST
:set whichwrap+=h

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 4 lines, 43 characters written:set ff& cpo+=A

/ENDTEST



/^x
dh
:set whichwrap-=h
ENDTEST

:so! Xdotest
:set whichwrap+=h
/^x


áxx

:set whichwrap-=h
/^STARTTEST

STARTTEST
:let a = '.é.' " one char of two bytes

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 9 lines, 548 characters written:set ff& cpo+=A

/ENDTEST












:let b = '.é.' " normal e with composing char
/^byteidx
:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)])
:put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])
/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)])
:let b = '.é.'
:put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])
ENDTEST

:so! Xdotest
:let a = '.é.' " one char of two bytes
:let b = '.eé.' " normal e with composing char
/^byteidx

byteidx
:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), bytei

dx(a, 4)])
:set whichwrap-=h
ENDTESTáxSTARTTEST
:let a = '.é.' " one char of two bytesb = '.é.' " normal e with composing char
/^byteidx:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)]):put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)]):let b = '.é.'put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])ENDTESTbyteidx
[0, 1, 3, 4, -1]
:put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), bytei

dx(b, 4)])
ENDTESTáxSTARTTEST
:let a = '.é.' " one char of two bytesb = '.é.' " normal e with composing char
/^byteidx:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)]):put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)]):let b = '.é.'put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])ENDTESTbyteidx
[0, 1, 3, 4, -1]4, 5
/^byteidxcomp

byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxc

omp(a, 3), byteidxcomp(a, 4)])
áxSTARTTEST
:let a = '.é.' " one char of two bytesb = '.é.' " normal e with composing char
/^byteidx:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)]):put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)]):let b = '.é.'put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])ENDTESTbyteidx
[0, 1, 3, 4, -1]4, 5
byteidxcomp[0, 1, 3, 4, -1]
:let b = '.eé.'
:put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxc

omp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])
STARTTEST
:let a = '.é.' " one char of two bytesb = '.é.' " normal e with composing char
/^byteidx:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)]):put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)]):let b = '.é.'put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])ENDTESTbyteidx
[0, 1, 3, 4, -1]4, 5
byteidxcomp[0, 1, 3, 4, -1]2, 4, 5, -1]
/^STARTTEST


STARTTEST
/^substitute

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2 lines, 75 characters written:set ff& cpo+=A

/ENDTEST

:let y = substitute('123', '\zs', 'a', 'g')    | put =y
ENDTEST

substitute

:so! Xdotest
/^substitute
:let y = substitute('123', '\zs', 'a', 'g')    | put =y


a1a2a3a

/^STARTTEST

STARTTEST

:g/^STARTTEST/.,/^ENDTEST/d
:1;/^Results/,$wq! test.out

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2 lines, 56 characters written:set ff& cpo+=A


/ENDTEST
:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
104 fewer lines{ four}ra test
aaaaaaaáxbyteidx[0, 1, 3, 4, -1]
[0, 1, 4, 5, -1]byteidxcomp
[0, 1, 3, 4, -1]
[0, 1, 2, 4, 5, -1]substitute
a1a2a3a:1;/^Results/,$wq! test.out
"test.out" [New File] 166 lines, 730 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test69 = test61; then \
#	  if diff test.out test69.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test69.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test69.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test70.failed test.ok test.out X* viminfo
cp test70.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test70.in
[?1h="test70.in" 63 lines, 1501 charactersSmoke test for MzScheme interface and mzeval() function

STARTTEST
:so mzscheme.vim
:set nocompatible viminfo+=nviminfo
:function! MzRequire()
:redir => l:mzversion
:mz (version)
:redir END
:if strpart(l:mzversion, 1, 1) < "4"
:" MzScheme versions < 4.x:
:mz (require (prefix vim- vimext))
:else
:" newer versions:
:mz (require (prefix-in vim- 'vimext))
:mz (require r5rs)
:endif
:endfunction
:silent call MzRequire()
:mz (define l '("item0" "dictionary with list OK" "item2"))
:mz (define h (make-hash))
:mz (hash-set! h "list" l)
/^1:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Smoke test for MzScheme interface and mzeval() function/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 55 lines, 1398 characters written:set ff& cpo+=A
/ENDTEST:if l2[2] == l2
:let res = "OK"
:else
:let res = "FAILED: " . l2[2]
:endif
:call setline(search("^3"), "circular test " . res)
:" funcrefs
:mz (define vim:max (vim-eval "function('max')"))
:mz (define m (vim:max '(1 100 8)))
:let m = mzeval('m')
:if m == 100
:let fref_res = "OK"
:else
:let fref_res = "FAILED: " . m
:end
:call append(line('$'), 'funcrefs '. fref_res)
:?^1?,$w! test.out
:qa!
ENDTEST

1 line 1
2 line 2
3 line 3
:so! Xdotest
:so mzscheme.vim
"test.ok" 6 lines, 94 characters

"test.out" [New File] 6 lines, 94 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test70 = test61; then \
#	  if diff test.out test70.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test70.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test70.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test73.failed test.ok test.out X* viminfo
cp test73.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test73.in
[?1h="test73.in" 169 lines, 3647 charactersTests for find completion.

STARTTEST
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xfind directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a stale "Xfind" directory may exist, remove it so that
:" we start from a clean state.
:call delete("Xfind", "rf")
:new
:let cwd=getcwd()
:let test_out = cwd . '/test.out'
:call mkdir('Xfind')
:cd Xfind
:set path=
:find
:exec "w! " . test_out
:close:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for find completion./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 164 lines, 3600 characters written:set ff& cpo+=A
/ENDTEST:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file
:e in/file.txt
:exec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu
:exec "w >>" . test_out
:q
:exec "cd " . cwd
:call delete("Xfind", "rf")
:qa!
ENDTEST


:so! Xdotest
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xfind directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a stale "Xfind" directory may exist, remove it so that
:" we start from a clean state.
:call delete("Xfind", "rf")
:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTESTtest73.in                                                                       :let cwd=getcwd()
:let test_out = cwd . '/test.out'
:call mkdir('Xfind')
:cd Xfind
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfind/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test73.in:set path=
:find ...
E345: Can't find file "" in path:exec "w! " . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out"
<ld/vim-XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test.out" [New] 0L, 0C written/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out:close
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTEST/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test73.in                   :set path=.
:find ...
E32: No file name:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 0L, 0C appended:close
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTEST/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test73.in                   :set path=.,,
:find ...
E32: No file name:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 0L, 0C appended:close
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTEST/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test73.in                   :set path=./**
:find ...
E32: No file name:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 0L, 0C appended:close
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTEST/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test73.in                   :" We shouldn't find any file at this point, test.out must be empty.
:call mkdir('in')
:cd in
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfind/in:call mkdir('path')
:exec "cd " . cwd
/<<PKGBUILDDIR>>/src/vim-gtk3/testdirtest73.in                                                    :e Xfind/file.txt
"Xfind/file.txt" [New File]Xfind/file.txt-- INSERT --Holy Grail[+]:w
"Xfind/file.txt" [New] 1L, 11C written   :e Xfind/in/file.txt
"Xfind/in/file.txt" [New File]in/file.txt-- INSERT --Jimmy Hoffa[+]:w
"Xfind/in/file.txt" [New] 1L, 12C written   :e Xfind/in/stuff.txt
"Xfind/in/stuff.txt" [New File]stuff.txt-- INSERT --Another Holy Grail[+]:w
"Xfind/in/stuff.txt" [New] 1L, 19C written   :e Xfind/in/path/file.txt
"Xfind/in/path/file.txt" [New File]path/file.txt-- INSERT --E.T.[+]:w
"Xfind/in/path/file.txt" [New] 1L, 5C written   :set path=Xfind/**
:find file..../Xfind/file.txt
"Xfind/file.txt" 1L, 11CHoly Grailfile.txt        :exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 11C appended:find file..../Xfind/file.txt...in/file.txt
"Xfind/in/file.txt" 1L, 12CJimmy Hoffain/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 12C appended:find file..../Xfind/file.txt...in/file.txt...path/file.txt
"Xfind/in/path/file.txt" 1L, 5CE.T.path/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 5C appended:" Rerun the previous three find completions, using fullpath in 'path'
:exec "set path=" . cwd . "/Xfind/**"
:find file..../Xfind/file.txt
"Xfind/file.txt" 1L, 11CHoly Grailfile.txt        :exec "w >>" .  test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 11C appended:find file..../Xfind/file.txt...in/file.txt
"Xfind/in/file.txt" 1L, 12CJimmy Hoffain/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 12C appended:find file..../Xfind/file.txt...in/file.txt...path/file.txt
"Xfind/in/path/file.txt" 1L, 5CE.T.path/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 5C appended:" Same steps again, using relative and fullpath items that point to the same
:" recursive location.
:" This is to test that there are no duplicates in the completion list.
:exec "set path+=Xfind/**"
:find file..../Xfind/file.txt
"Xfind/file.txt" 1L, 11CHoly Grailfile.txt        :exec "w >>" .  test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 11C appended:find file..../Xfind/file.txt...in/file.txt
"Xfind/in/file.txt" 1L, 12CJimmy Hoffain/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 12C appended:find file..../Xfind/file.txt...in/file.txt...path/file.txt
"Xfind/in/path/file.txt" 1L, 5CE.T.path/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 5C appended:find file..../Xfind/file.txt...in/file.txt
"Xfind/in/file.txt" 1L, 12CJimmy Hoffafile.txt     :" Test find completion for directory of current buffer, which at this point
:" is Xfind/in/file.txt.
:set path=.
:find st...uff.txt
"Xfind/in/stuff.txt" 1L, 19CAnother Holy Grailstuff.txt:exec "w >>" .  test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 19C appended:" Test find completion for empty path item ",," which is the current directory
:cd Xfind
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfindin/stuff.txt      /<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test73.in:set path=,,
:find f...ile.txt...
"file.txt" 1L, 11CHoly Grailfile.txt    :exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 11C appended:" Test shortening of
:"
:"    foo/x/bar/voyager.txt
:"    foo/y/bar/voyager.txt
:"
:" When current directory is above foo/ they should be shortened to (in order
:" of appearance):
:"
:"    x/bar/voyager.txt
:"    y/bar/voyager.txt
:call mkdir('foo')
:cd foo
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfind/foo/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfind/file.txt:call mkdir('x')
:call mkdir('y')
:cd x
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfind/foo/x:call mkdir('bar')
:cd ..
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfind/foo:cd y
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfind/foo/y:call mkdir('bar')
:cd ..
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfind/foo:cd ..
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfindfile.txt                                                          :" We should now be in the Xfind directory
:e foo/x/bar/voyager.txt
"foo/x/bar/voyager.txt" [New File]oo/x/bar/voyager.txt-- INSERT --Voyager 1[+]:w
"foo/x/bar/voyager.txt" [New] 1L, 10C written   :e foo/y/bar/voyager.txt
"foo/y/bar/voyager.txt" [New File]y-- INSERT --Voyager 2[+]:w
"foo/y/bar/voyager.txt" [New] 1L, 10C written   :exec "set path=" . cwd . "/Xfind/**"
:find voyager...x/bar/voyager.txt
"foo/x/bar/voyager.txt" 1L, 10C1x:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 10C appended:find voyager...x/bar/voyager.txt...y
"foo/y/bar/voyager.txt" 1L, 10C2y:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 10C appended:"
:" When current directory is .../foo/y/bar they should be shortened to (in
:" order of appearance):
:"
:"    ./voyager.txt
:"    x/bar/voyager.txt
:cd foo
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfind/fooy/bar/voyager.txt    :cd y
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfind/foo/ybar/voyager.txt  :cd bar
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfind/foo/y/barvoyager.txt    :find voyager..../voyager.txt
"voyager.txt" 1L, 10C:exec "w >> " . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 10C appended:find voyager..../voyager.txt...x/bar/voyager.txt
<ild/vim-XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/Xfind/foo/x/bar/voyager.txt"
<-XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/Xfind/foo/x/bar/voyager.txt" 1L, 10C1/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfind/foo/x/bar/voyager.txt:exec "w >> " . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 10C appended:" Check the opposite too:
:cd ..
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfind/foo/y:cd ..
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfind/foox/bar/voyager.txt                                                              :cd x
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfind/foo/xbar/voyager.txt  :cd bar
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfind/foo/x/barvoyager.txt    :find voyager..../voyager.txt
"voyager.txt" 1L, 10C:exec "w >> " . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 10C appended:find voyager..../voyager.txt...y/bar/voyager.txt
<ild/vim-XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/Xfind/foo/y/bar/voyager.txt"
<-XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/Xfind/foo/y/bar/voyager.txt" 1L, 10C2/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfind/foo/y/bar/voyager.txt:exec "w >> " . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 10C appended:" Check for correct handling of shorten_fname()'s behavior on windows
:exec "cd " . cwd . "/Xfind/in"
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfind/in:find file..../file.txt
"file.txt" 1L, 12CJimmy Hoffafile.txt                                                                       :exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 12C appended:" Test for relative to current buffer 'path' item
:exec "cd " . cwd . "/Xfind/"
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xfindin/file.txt:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
"in/file.txt" 1L, 12C:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file...txt
"in/path/file.txt" 1L, 5CE.T.path/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 5C appended:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file
:e in/file.txt
"in/file.txt" 1L, 12CJimmy Hoffafile.txt     :exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 12C appended:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu...ff.txt
"in/stuff.txt" 1L, 19CAnother Holy Grailstuff.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test.out" 1L, 19C appended:q
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:exec "cd " . cwd
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir:call delete("Xfind", "rf")
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test73 = test61; then \
#	  if diff test.out test73.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test73.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test73.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test75.failed test.ok test.out X* viminfo
cp test75.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test75.in
[?1h="test75.in" 41 lines, 1000 charactersTests for maparg().
Also test utf8 map with a 0x80 byte.

STARTTEST
:so small.vim
:so mbyte.vim
:set cpo-=<
:set encoding=utf8
:" Test maparg() with a string result
:map foo<C-V> is<F4>foo
:vnoremap <script> <buffer> <expr> <silent> bar isbar
:call append('$', maparg('foo<C-V>'))
:call append('$', string(maparg('foo<C-V>', '', 0, 1)))
:call append('$', string(maparg('bar', '', 0, 1)))
:map <buffer> <nowait> foo bar
:call append('$', string(maparg('foo', '', 0, 1)))
:"
:map abc x<char-114>x
:call append('$', maparg('abc'))
:map abc y<S-char-114>y
:call append('$', maparg('abc'))
:"
Go^[:":set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for maparg()./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 34 lines, 919 characters written:set ff& cpo+=A
/ENDTEST















:" Outside of the range, minimum
:inoremap <Char-0x1040> a
:execute "normal a\u1040\<Esc>"
:" Inside of the range, minimum
:inoremap <Char-0x103f> b
:execute "normal a\u103f\<Esc>"
:" Inside of the range, maximum
:inoremap <Char-0xf03f> c
:execute "normal a\uf03f\<Esc>"
:" Outside of the range, maximum
:inoremap <Char-0xf040> d
:execute "normal a\uf040\<Esc>"
:"
:/^eof/+1,$w! test.out
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:so mbyte.vim
:set cpo-=<
:set encoding=utf8
:map abc x<char-114>x
:call append('$', maparg('abc'))
:map abc y<S-char-114>y
:call append('$', maparg('abc'))
:"
Go^[:"
:" Outside of the range, minimum
:inoremap <Char-0x1040> a
:execute "normal a\u1040\<Esc>"
:" Inside of the range, minimum
:inoremap <Char-0x103f> b
:execute "normal a\u103f\<Esc>"
:" Inside of the range, maximum
:inoremap <Char-0xf03f> c
:execute "normal a\uf03f\<Esc>"
:" Outside of the range, maximum
:inoremap <Char-0xf040> d
:execute "normal a\uf040\<Esc>"
:"
:/^eof/+1,$w! test.out
:qa!
ENDTEST

:" Test maparg() with a string result
:map foo<C-V> is<F4>foo
:vnoremap <script> <buffer> <expr> <silent> bar isbar
:call append('$', maparg('foo<C-V>'))
:call append('$', string(maparg('foo<C-V>', '', 0, 1)))
:call append('$', string(maparg('bar', '', 0, 1)))
:map <buffer> <nowait> foo bar
:call append('$', string(maparg('foo', '', 0, 1)))
:"
:map abc x<char-114>x
:call append('$', maparg('abc'))
:map abc y<S-char-114>y
:call append('$', maparg('abc'))
:"










eof
is<F4>foo
{'silent': 0, 'noremap': 0, 'lhs': 'foo<C-V>', 'mode': ' ', 'nowait': 0, 'expr':: 0, 'sid': 0, 'rhs': 'is<F4>foo', 'buffer': 0}
{'silent': 1, 'noremap': 1, 'lhs': 'bar', 'mode': 'v', 'nowait': 0, 'expr': 1, ''sid': 0, 'rhs': 'isbar', 'buffer': 1}
{'silent': 0, 'noremap': 0, 'lhs': 'foo', 'mode': ' ', 'nowait': 1, 'expr': 0, ''sid': 0, 'rhs': 'bar', 'buffer': 1}
xrx
yRy

:"
:" Outside of the range, minimum
:inoremap <Char-0x1040> a
:execute "normal a\u1040\<Esc>"
a:" Inside of the range, minimum
:inoremap <Char-0x103f> b
:execute "normal a\u103f\<Esc>"
b:" Inside of the range, maximum
:inoremap <Char-0xf03f> c
:execute "normal a\uf03f\<Esc>"
c:" Outside of the range, maximum
:inoremap <Char-0xf040> d
:execute "normal a\uf040\<Esc>"
d:"
:/^eof/+1,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 7 lines, 384 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test75 = test61; then \
#	  if diff test.out test75.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test75.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test75.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test76.failed test.ok test.out X* viminfo
cp test76.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test76.in
[?1h="test76.in" 46 lines, 899 charactersTests for completefunc/omnifunc. vim: set ft=vim :

STARTTEST
:"Test that nothing happens if the 'completefunc' opens
:"a new window (no completion, no crash)
:so small.vim
:function! DummyCompleteOne(findstart, base)
:  if a:findstart
:    return 0
:  else
:    wincmd n
:    return ['onedef', 'oneDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteOne
/^one
A^X^U^N^[:q!
:function! DummyCompleteTwo(findstart, base)
:  if a:findstart
:    wincmd n
:    return 0
:  else
:    return ['twodef', 'twoDEF']:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for completefunc/omnifunc. vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 37 lines, 810 characters written:set ff& cpo+=A
/ENDTEST

















:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)
:  if a:findstart
:    return 0
:  else
:    return ['threedef', 'threeDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteThree
/^three
A^X^U^N^[:/^+++/,/^three/w! test.out
:qa!
ENDTEST

:so! Xdotest
:"Test that nothing happens if the 'completefunc' opens
:"a new window (no completion, no crash)
:so small.vim
:function! DummyCompleteOne(findstart, base)

:  :  if a:findstart

:    :    return 0

:    :  else

:    :    wincmd n

:    :    return ['onedef', 'oneDEF']

:    :  endif

:  :endfunction
:    wincmd n
:    return 0
:  else
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
:setlocal completefunc=DummyCompleteOne
/^one


+++
one
E839: Completion function changed window

Pattern not found

Press ENTER or type command to continuePress ENTER or type command to continueone
~~~~~~~~~~
[No Name] [+]                                                                   endifendfunction
:setlocal completefunc=DummyCompleteThree
/^threeA^X^U^N^[:/^+++/,/^three/w! test.out
:qa!ENDTEST+++test76.in [+]                                                                   :q!
:  else
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)
:  if a:findstart
:    return 0
:  else  return ['threedef', 'threeDEF']
:  endifendfunction:setlocal completefunc=DummyCompleteThree
/^threeA^X^U^N^[:/^+++/,/^three/w! test.out
:qa!ENDTEST+++:function! DummyCompleteTwo(findstart, base)

:  :  if a:findstart

:    :    wincmd n

:    :    return 0

:    :  else

:    :    return ['twodef', 'twoDEF']

:    :  endif

:  :endfunction
:  else
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:setlocal completefunc=DummyCompleteTwo
/^two

two
E839: Completion function changed window

E764: Option 'completefunc' is not set

Press ENTER or type command to continue~~~~~~~~~~
[No Name]                                                                       endfunction
:setlocal completefunc=DummyCompleteThree
/^threeA^X^U^N^[:/^+++/,/^three/w! test.out
:qa!ENDTEST+++two
test76.in [+]                                                                   :q!
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)
:  if a:findstart
:    return 0
:  else
:    return ['threedef', 'threeDEF']  endifendfunction:setlocal completefunc=DummyCompleteThree
/^threeA^X^U^N^[:/^+++/,/^three/w! test.out
:qa!ENDTEST+++two:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)

:  :  if a:findstart

:    :    return 0

:    :  else

:    :    return ['threedef', 'threeDEF']

:    :  endif

:  :endfunction
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:setlocal completefunc=DummyCompleteThree
/^three

three
match 1 of 22DEF
:/^+++/,/^three/w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 4 lines, 18 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test76 = test61; then \
#	  if diff test.out test76.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test76.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test76.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test77.failed test.ok test.out X* viminfo
cp test77.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test77.in
[?1h="test77.in" 30 lines, 719 charactersInserts 2 million lines with consecutive integers starting from 1
(essentially, the output of GNU's seq 1 2000000), writes them to Xtest
and writes its cksum to test.out.

We need 2 million lines to trigger a call to mf_hash_grow().  If it would mess
up the lines the checksum would differ.

cksum is part of POSIX and so should be available on most Unixes.
If it isn't available then the test will be skipped.

STARTTEST
:so small.vim
:if !executable("cksum")
: e! test.ok
: w! test.out
: qa!
:endif
:set fileformat=unix undolevels=-1
ggdG
:let i = 1
:while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhileggdd
:w! Xtest:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Inserts 2 million lines with consecutive integers starting from 1/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 288 characters written:set ff& cpo+=A
/ENDTEST





:r !cksum Xtest
:s/\s/ /g
:set fileformat&
:.w! test.out
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:if !executable("cksum")

:  : e! test.ok

:  : w! test.out

:  : qa!

:  :endif
cksum is part of POSIX and so should be available on most Unixes.
If it isn't available then the test will be skipped.

STARTTEST
:set fileformat=unix undolevels=-1
Inserts 2 million lines with consecutive integers starting from 1
(essentially, the output of GNU's seq 1 2000000), writes them to Xtest
and writes its cksum to test.out.

We need 2 million lines to trigger a call to mf_hash_grow().  If it would mess
up the lines the checksum would differ.~~
~~~
~~~
~~~~~~~~~~~~~~
--No lines in buffer--:let i = 1
:while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhil

e1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
:w! Xtest
"Xtest" [New File] 2000000 lines, 14888896 characters written:r !cksum Xtest
1
2
3678979763 14888896 Xtest
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22:s/\s/ /g
:set fileformat&
:.w! test.out
"test.out" [New File] 1 line, 26 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test77 = test61; then \
#	  if diff test.out test77.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test77.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test77.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test79.failed test.ok test.out X* viminfo
cp test79.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test79.in
[?1h="test79.in" 255 lines, 3381 charactersTest for *sub-replace-special* and *sub-replace-expression* on :substitute.
Test for submatch() on :substitue.
Test for *:s%* on :substitute.
Test for :s replacing \n with  line break.

STARTTEST
:so small.vim
ENDTEST

Results of test71:

STARTTEST
:set magic
:set cpo&
/^TEST/
j:s/A/&&/
j:s/B/\&/
j:s/C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/
j:s/D/d/
j:s/E/~/
j:s/F/\~/
j:s/G/\ugg/
j:s/H/\Uh\Eh/:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for *sub-replace-special* and *sub-replace-expression* on :substitute./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1 line, 14 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 25 lines, 347 characters written:set ff& cpo+=A
/ENDTESTj:s/L/^V^M/
j:s/M/\r/
j:s/N/\^V^M/
j:s/O/\n/
j:s/P/\b/
j:s/Q/\t/
j:s/R/\\/
j:s/S/\c/
j:s/T/^V^@/
j:s/U/\L\uuUu\l\EU/
j:s/V/\U\lVvV\u\Ev/
ENDTEST

TEST_1:
A
B
C123456789
D
E
F
G
H
I
:so! Xdotest
:set magic
:set cpo&
/^TEST/

:s/A/&&/
A

:s/B/\&/
&
:s/C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/
987654321

:s/D/d/
d
:s/E/~/
d
:s/F/\~/
~
:s/G/\ugg/
g

:s/H/\Uh\Eh/
h

:s/I/\lII/
iI

J
:s/J/\LJ\EJ/
jJ

K
:s/K/\Uk\ek/
k

lLl
:s/L/^^M/

l
mMm

:s/M/\r/

m
nNn

:s/N/\^^M/
^Mn

oOo
:s/O/\n/
^@o

pPp
:s/P/\b/
^Hp

qQq
:s/Q/\t/
       q

rRr
:s/R/\\/
\

sSs
:s/S/\c/
c

tTt
:s/T/^^@/
^@t

U
:s/U/\L\uuUu\l\EU/
uuU

V
:s/V/\U\lVvV\u\Ev/
vVVv
/^STARTTEST


STARTTEST
:set nomagic

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 25 lines, 351 characters written:set ff& cpo+=A

/ENDTESTj:s/L/^V^M/
j:s/M/\r/
j:s/N/\^V^M/
j:s/O/\n/
j:s/P/\b/
j:s/Q/\t/
j:s/R/\\/
j:s/S/\c/
j:s/T/^V^@/
j:s/U/\L\uuUu\l\EU/
j:s/V/\U\lVvV\u\Ev/
ENDTEST

TEST_2:
A
B
C123456789
D
E
F
G
H
I
:so! Xdotest
:set nomagic
:set cpo&
/^TEST/

:s/A/&&/
&&

:s/B/\&/

:s/\mC\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/
987654321

:s/D/d/
d
:s/E/~/
~
:s/F/\~/
~
:s/G/\ugg/
g

:s/H/\Uh\Eh/
h

:s/I/\lII/
iI

J
:s/J/\LJ\EJ/
jJ

K
:s/K/\Uk\ek/
k

lLl
:s/L/^^M/

l
mMm

:s/M/\r/

m
nNn

:s/N/\^^M/
^Mn

oOo
:s/O/\n/
^@o

pPp
:s/P/\b/
^Hp

qQq
:s/Q/\t/
       q

rRr
:s/R/\\/
\

sSs
:s/S/\c/
c

tTt
:s/T/^^@/
^@t

U
:s/U/\L\uuUu\l\EU/
uuU

V
:s/V/\U\lVvV\u\Ev/
vVVv
/^STARTTEST


STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 15 lines, 203 characters written:set ff& cpo+=A

/ENDTESTj:s/B/\='\\'/
j:s/C/\='^V^M'/
j:s/D/\='\^V^M'/
j:s/E/\='\\^V^M'/
j:s/F/\='\r'/
j:s/G/\='^V^@'/
j:s/H/\='\^V^@'/
j:s/I/\='\\^V^@'/
j:s/J/\='\n'/
j:s/K/\="\r"/
j:s/L/\="\n"/
ENDTEST

TEST_3:
aAa
bBb
cCc
dDd
eEe
fFf
gGg
hHh
iIi
:so! Xdotest
:set magic&
:set cpo&
/^TEST/

:s/A/\='\'/
\

:s/B/\='\\'/
\\b

:s/C/\='^^M'/
c
:s/D/\='\^^M'/
\d



:s/E/\='\\^^M'/
\\
efFf
:s/F/\='\r'/
\rf

gGg
:s/G/\='^^@'/

g
hHh

:s/H/\='\^^@'/

\h
iIi

:s/I/\='\\^^@'/

\\
i
jJj

:s/J/\='\n'/
\nj

kKk
:s/K/\="\r"/

k
lLl

:s/L/\="\n"/

l
/^STARTTEST


STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 15 lines, 611 characters written:set ff& cpo+=A

/ENDTESTj:s/B/\=substitute(submatch(0), '.', '\\', '')/
j:s/C/\=substitute(submatch(0), '.', '^V^M', '')/
j:s/D/\=substitute(submatch(0), '.', '\^V^M', '')/
j:s/E/\=substitute(submatch(0), '.', '\\^V^M', '')/
j:s/F/\=substitute(submatch(0), '.', '\r', '')/
j:s/G/\=substitute(submatch(0), '.', '^V^@', '')/
j:s/H/\=substitute(submatch(0), '.', '\^V^@', '')/
j:s/I/\=substitute(submatch(0), '.', '\\^V^@', '')/
j:s/J/\=substitute(submatch(0), '.', '\n', '')/
j:s/K/\=substitute(submatch(0), '.', "\r", '')/
j:s/L/\=substitute(submatch(0), '.', "\n", '')/
ENDTEST

TEST_4:
aAa
bBb
cCc
dDd
eEe
fFf
gGg
hHh
iIi
:so! Xdotest
:set magic&
:set cpo&
/^TEST/

:s/A/\=substitute(submatch(0), '.', '\', '')/
\

:s/B/\=substitute(submatch(0), '.', '\\', '')/
\

:s/C/\=substitute(submatch(0), '.', '^^M', '')/
c
:s/D/\=substitute(submatch(0), '.', '\^^M', '')/
d



:s/E/\=substitute(submatch(0), '.', '\\^^M', '')/
\efFf
:s/F/\=substitute(submatch(0), '.', '\r', '')/

f
gGg

:s/G/\=substitute(submatch(0), '.', '^^@', '')/

g
hHh

:s/H/\=substitute(submatch(0), '.', '\^^@', '')/

h
iIi

:s/I/\=substitute(submatch(0), '.', '\\^^@', '')/

\i
jJj

:s/J/\=substitute(submatch(0), '.', '\n', '')/

j
kKk

:s/K/\=substitute(submatch(0), '.', "\r", '')/

k
lLl

:s/L/\=substitute(submatch(0), '.', "\n", '')/

l
/^STARTTEST


STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 445 characters written:set ff& cpo+=A

/ENDTEST








:set cpo&
/^TEST/
j:s/A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=submatch(0) . submatch(9) .. submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch((3) . submatch(2) . submatch(1)/
j:s/B\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=string([submatch(0, 1), subbmatch(9, 1), submatch(8, 1), submatch(7, 1), submatch(6, 1), submatch(5, 1), subbmatch(4, 1), submatch(3, 1), submatch(2, 1), submatch(1, 1)])/
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
/^TEST/

TEST_5:
A123456789

:s/A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=submatch(0) . submatch(9) .

submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch(

3) . submatch(2) . submatch(1)/
i\
i987654321
B123456789

:s/B\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=string([submatch(0, 1), sub

match(9, 1), submatch(8, 1), submatch(7, 1), submatch(6, 1), submatch(5, 1), sub

match(4, 1), submatch(3, 1), submatch(2, 1), submatch(1, 1)])/
i
j[['B123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]
/^STARTTEST


STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 8 lines, 80 characters written:set ff& cpo+=A

/ENDTEST







/^TEST/
:set cpo+=/
j:s/A/a/
j:s/B/%/
:set cpo-=/
j:s/C/c/
j:s/D/%/
ENDTEST

:so! Xdotest
:set magic&
/^TEST/



TEST_6:
A
B


:set cpo+=/

:s/A/a/
a
:s/B/%/
a:set cpo-=/



C
D


:s/C/c/
c
:s/D/%/
%/^STARTTEST

STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 11 lines, 303 characters written:set ff& cpo+=A

/ENDTEST










:set cpo&
/^TEST_7/
j:s/A./\=submatch(0)/
j:s/B./\=submatch(0)/
j:s/C./\=strtrans(string(submatch(0, 1)))/
j:s/D.\nD/\=strtrans(string(submatch(0, 1)))/
j:s/E\_.\{-}E/\=strtrans(string(submatch(0, 1)))/
/^Q$
:s/Q[^\n]Q/\=submatch(0)."foobar"/
:" Avoid :s error breaks dotest map on Windows.
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
/^TEST_7/

TEST_7:
A^MA

:s/A./\=submatch(0)/

A
B^@B

:s/B./\=submatch(0)/

B
C^@C

:s/C./\=strtrans(string(submatch(0, 1)))/
['C^@']C

D^@
:s/D.\nD/\=strtrans(string(submatch(0, 1)))/
['D^@', 'D']

E^@
:s/E\_.\{-}E/\=strtrans(string(submatch(0, 1)))/
['E^@', '^@', '^@', '^@', '^@E']
/^Q$

Q
:s/Q[^\n]Q/\=submatch(0)."foobar"/
E486: Pattern not found: Q[^\n]Q:" Avoid :s error breaks dotest map on Windows.
/^STARTTEST



Q

STARTTEST
:function! TitleString()

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 8 lines, 177 characters written:set ff& cpo+=A

/ENDTEST







let check = 'foo' =~ 'bar'
  return ""
endfunction
:set titlestring=%{TitleString()}
:/^test_one/s/.*/\="foo\nbar"/
:/^test_two/s/.*/\="foo\nbar"/c
y
ENDTEST

:so! Xdotest
:function! TitleString()

:    let check = 'foo' =~ 'bar'

:    return ""

:  endfunction
TEST_7:
A
:set titlestring=%{TitleString()}
:/^test_one/s/.*/\="foo\nbar"/


foo
bar
:/^test_two/s/.*/\="foo\nbar"/c

test_tworeplace with \="foo\nbar" (y/n/a/q/l/^E/^Y)?
foobar


/^STARTTEST

STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 72 characters written:set ff& cpo+=A

/ENDTEST
:1;/^Results/,$wq! test.out

:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
136 fewer linesaa
c
%TEST_7:AABB['C^@']C['D^@', 'D']
['E^@', '^@', '^@', '^@', '^@E']
Q
Qfoo
bar
foobar:1;/^Results/,$wq! test.out
"test.out" [New File] 134 lines, 574 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test79 = test61; then \
#	  if diff test.out test79.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test79.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test79.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test80.failed test.ok test.out X* viminfo
cp test80.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test80.in
[?1h="test80.in" 201 lines, 6298 charactersTest for *sub-replace-special* and *sub-replace-expression* on substitute().
Test for submatch() on substitute().
Test for *:s%* on :substitute.

STARTTEST
:so small.vim
ENDTEST

TEST_1:

STARTTEST
:set magic
:set cpo&
:$put =\"\n\nTEST_1:\"
:$put =substitute('A', 'A', '&&', '')
:$put =substitute('B', 'B', '\&', '')
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\0\9\8\7\6\5\4\3\2\1', '')
:$put =substitute('D', 'D', 'd', '')
:$put =substitute('E', 'E', '~', '')
:$put =substitute('F', 'F', '\~', '')
:$put =substitute('G', 'G', '\ugg', '')
:$put =substitute('H', 'H', '\Uh\Eh', ''):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for *sub-replace-special* and *sub-replace-expression* on substitute()./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1 line, 14 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 29 lines, 1142 characters written:set ff& cpo+=A
/ENDTEST:$put =substitute('pPp', 'P', '\b', '')
:$put =substitute('qQq', 'Q', '\t', '')
:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('xXx', 'X', \"\r\", '')
:$put =substitute('Y', 'Y', '\L\uyYy\l\EY', '')
:$put =substitute('Z', 'Z', '\U\lZzZ\u\Ez', '')
/^TEST_2
ENDTEST

TEST_2:

STARTTEST
:set nomagic
:set cpo&
:$put =\"\n\nTEST_2:\"
:$put =substitute('A', 'A', '&&', '')
:$put =substitute('B', 'B', '\&', '')
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\0\9\8\7\6\5\4\3\2\1', '')
:so! Xdotest
:set magic
:set cpo&
:$put =\"\n\nTEST_1:\"
3 more lines:set cpo&
:$put =\"\n\nTEST_10:\"
:let y = substitute('123', '\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\zs.', 'a', 'g')| $put =y
:let y = substitute('123', '.\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\ze', 'a', 'g')| $put =y
:let y = substitute('123', '\ze.', 'a', 'g')| $put =y
:let y = substitute('123', '.\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\|\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y
/^TEST_11
ENDTEST

TEST_11:

STARTTEST
:/^Results/,$wq! test.out
ENDTEST

Results of test72:


TEST_1:
3 more lines:$put =substitute('A', 'A', '&&', '')

AA
:$put =substitute('B', 'B', '\&', '')

&
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)

', '\0\9\8\7\6\5\4\3\2\1', '')
:let y = substitute('123', '\zs.', 'a', 'g')| $put =y.\zs\ze', 'a', 'g') .', 'a', 'g').\ze1\|\ze', 'a', 'g')zs\|[23]', 'a', 'g')
/^TEST_11ENDTESTTEST_11:STARTTEST
:/^Results/,$wq! test.out
ENDTESTResults of test72:TEST_1:
AA&C123456789987654321
:$put =substitute('D', 'D', 'd', '')

d
:$put =substitute('E', 'E', '~', '')

~
:$put =substitute('F', 'F', '\~', '')

~
:$put =substitute('G', 'G', '\ugg', '')

Gg
:$put =substitute('H', 'H', '\Uh\Eh', '')

Hh
:$put =substitute('I', 'I', '\lII', '')

iI
:$put =substitute('J', 'J', '\LJ\EJ', '')

jJ
:$put =substitute('K', 'K', '\Uk\ek', '')

Kk
:$put =substitute('lLl', 'L', '^^M', '')

l^Ml
:$put =substitute('mMm', 'M', '\r', '')

m^Mm
:$put =substitute('nNn', 'N', '\^^M', '')

n^Mn
:$put =substitute('oOo', 'O', '\n', '')


o
o
:$put =substitute('pPp', 'P', '\b', '')

p^Hp
:$put =substitute('qQq', 'Q', '\t', '')

qq
:$put =substitute('rRr', 'R', '\\', '')

r\r
:$put =substitute('sSs', 'S', '\c', '')

scs
:$put =substitute('uUu', 'U', \"\n\", '')


u
u
:$put =substitute('vVv', 'V', \"\b\", '')

v^Hv
:$put =substitute('wWw', 'W', \"\\\", '')

w\w
:$put =substitute('xXx', 'X', \"\r\", '')

x^Mx
:$put =substitute('Y', 'Y', '\L\uyYy\l\EY', '')

YyyY
:$put =substitute('Z', 'Z', '\U\lZzZ\u\Ez', '')

zZZz
/^TEST_2
search hit BOTTOM, continuing at TOP:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('xXx', 'X', \"\r\", '')
:$put =substitute('Y', 'Y', '\L\uyYy\l\EY', '')
:$put =substitute('Z', 'Z', '\U\lZzZ\u\Ez', '')
/^TEST_2
ENDTEST

TEST_2:

STARTTEST
:set nomagic
:set cpo&
:$put =\"\n\nTEST_2:\"
:$put =substitute('A', 'A', '&&', '')
:$put =substitute('B', 'B', '\&', '')
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\0\9\8\7\6\5\4\3\2\1', '')
:$put =substitute('D', 'D', 'd', '')
:$put =substitute('E', 'E', '~', '')
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 29 lines, 1144 characters written:set ff& cpo+=A
/ENDTEST:$put =substitute('pPp', 'P', '\b', '')
:$put =substitute('qQq', 'Q', '\t', '')
:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('tTt', 'T', \"\r\", '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('X', 'X', '\L\uxXx\l\EX', '')
:$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')
/^TEST_3
ENDTEST

TEST_3:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_3:\"
:let y = substitute('aAa', 'A', '\="\\"', '')| $put =y
:let y = substitute('bBb', 'B', '\="\\\\"', '')| $put =y
:let y = substitute('cCc', 'C', '\="^V^M"', '')| $put =y
:let y = substitute('dDd', 'D', '\="\\^V^M"', '')| $put =y
:so! Xdotest
:set nomagic
:set cpo&
:$put =\"\n\nTEST_2:\"
3 more linesHh
iI
jJ
Kk
l^Ml
m^Mm
n^Mn
o
o
p^Hp
qq
r\r
scs
u
u
v^Hv
w\w
x^Mx
YyyY
zZZz


TEST_2:
3 more lines:$put =substitute('A', 'A', '&&', '')

AA
:$put =substitute('B', 'B', '\&', '')

&
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)

', '\0\9\8\7\6\5\4\3\2\1', '')
Kk
l^Ml
mm
nn
op^Hp
q       q
r\rscs
uv^Hv
w\wx^Mx
YyyY
zZZzTEST_2:
AA&C123456789987654321
:$put =substitute('D', 'D', 'd', '')

d
:$put =substitute('E', 'E', '~', '')

~
:$put =substitute('F', 'F', '\~', '')

~
:$put =substitute('G', 'G', '\ugg', '')

Gg
:$put =substitute('H', 'H', '\Uh\Eh', '')

Hh
:$put =substitute('I', 'I', '\lII', '')

iI
:$put =substitute('J', 'J', '\LJ\EJ', '')

jJ
:$put =substitute('K', 'K', '\Uk\ek', '')

Kk
:$put =substitute('lLl', 'L', '^^M', '')

l^Ml
:$put =substitute('mMm', 'M', '\r', '')

m^Mm
:$put =substitute('nNn', 'N', '\^^M', '')

n^Mn
:$put =substitute('oOo', 'O', '\n', '')


o
o
:$put =substitute('pPp', 'P', '\b', '')

p^Hp
:$put =substitute('qQq', 'Q', '\t', '')

qq
:$put =substitute('rRr', 'R', '\\', '')

r\r
:$put =substitute('sSs', 'S', '\c', '')

scs
:$put =substitute('tTt', 'T', \"\r\", '')

t^Mt
:$put =substitute('uUu', 'U', \"\n\", '')


u
u
:$put =substitute('vVv', 'V', \"\b\", '')

v^Hv
:$put =substitute('wWw', 'W', \"\\\", '')

w\w
:$put =substitute('X', 'X', '\L\uxXx\l\EX', '')

XxxX
:$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')

yYYy
/^TEST_3
search hit BOTTOM, continuing at TOP:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('tTt', 'T', \"\r\", '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('X', 'X', '\L\uxXx\l\EX', '')
:$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')
/^TEST_3
ENDTEST

TEST_3:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_3:\"
:let y = substitute('aAa', 'A', '\="\\"', '')| $put =y
:let y = substitute('bBb', 'B', '\="\\\\"', '')| $put =y
:let y = substitute('cCc', 'C', '\="^V^M"', '')| $put =y
:let y = substitute('dDd', 'D', '\="\\^V^M"', '')| $put =y
:let y = substitute('eEe', 'E', '\="\\\\^V^M"', '')     | $put =y
:let y = substitute('fFf', 'F', '\="\\r"', '')| $put =y
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 13 lines, 642 characters written:set ff& cpo+=A
/ENDTEST




:let y = substitute('jJj', 'J', '\="\\n"', '')| $put =y
:let y = substitute('kKk', 'K', '\="\r"', '')| $put =y
:let y = substitute('lLl', 'L', '\="\n"', '')| $put =y
/^TEST_4
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_3:\"
3 more linesHh
iI
jJ
Kk
l^Ml
m^Mm
n^Mn
o
o
p^Hp
qq
r\r
scs
t^Mt
u
u
v^Hv
w\w
XxxX
yYYy


TEST_3:
3 more lines:let y = substitute('aAa', 'A', '\="\\"', '')           | $put =y

a\a
:let y = substitute('bBb', 'B', '\="\\\\"', '')         | $put =y

b\\b
:let y = substitute('cCc', 'C', '\="^^M"', '')         | $put =y

c^Mc
:let y = substitute('dDd', 'D', '\="\\^^M"', '')       | $put =y

d\^Md
:let y = substitute('eEe', 'E', '\="\\\\^^M"', '')     | $put =y

e\\^Me
:let y = substitute('fFf', 'F', '\="\\r"', '')          | $put =y

f\rf
:let y = substitute('jJj', 'J', '\="\\n"', '')          | $put =y

j\nj
:let y = substitute('kKk', 'K', '\="\r"', '')           | $put =y

k^Mk
:let y = substitute('lLl', 'L', '\="\n"', '')           | $put =y


l
l
/^TEST_4
search hit BOTTOM, continuing at TOP:let y = substitute('bBb', 'B', '\="\\\\"', '')| $put =y
:let y = substitute('cCc', 'C', '\="^V^M"', '')| $put =y
:let y = substitute('dDd', 'D', '\="\\^V^M"', '')| $put =y
:let y = substitute('eEe', 'E', '\="\\\\^V^M"', '')     | $put =y
:let y = substitute('fFf', 'F', '\="\\r"', '')| $put =y
:let y = substitute('jJj', 'J', '\="\\n"', '')| $put =y
:let y = substitute('kKk', 'K', '\="\r"', '')| $put =y
:let y = substitute('lLl', 'L', '\="\n"', '')| $put =y
/^TEST_4
ENDTEST

TEST_4:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_4:\"
:let y = substitute('aAa', 'A', '\=substitute(submatch(0), ".", "\\", "")', '')        | $put =y
:let y = substitute('bBb', 'B', '\=substitute(submatch(0), ".", "\\\\", "")', ''')     | $put =y
:let y = substitute('cCc', 'C', '\=substitute(submatch(0), ".", "^V^M", "")', ''')     | $put =y
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 13 lines, 912 characters written:set ff& cpo+=A
/ENDTEST













:let y = substitute('dDd', 'D', '\=substitute(submatch(0), ".", "\\^V^M", "")',  '')   | $put =y
:let y = substitute('eEe', 'E', '\=substitute(submatch(0), ".", "\\\\^V^M", "")'', '') | $put =y
:let y = substitute('fFf', 'F', '\=substitute(submatch(0), ".", "\\r", "")', ''))      | $put =y
:let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', ''))      | $put =y
:let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')        | $put =y
:let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')        | $put =y
/^TEST_5
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_4:\"
3 more linest^Mt
u
u
v^Hv
w\w
XxxX
yYYy


TEST_3:
a\a
b\\b
c^Mc
d\^Md
e\\^Me
f\rf
j\nj
k^Mk
l
l


TEST_4:
3 more lines:let y = substitute('aAa', 'A', '\=substitute(submatch(0), ".", "\\", "")', '')

      | $put =y
u

v^Hv
w\wXxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\a
:let y = substitute('bBb', 'B', '\=substitute(submatch(0), ".", "\\\\", "")', '

')     | $put =y
u
v^Hv
w\wXxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
:let y = substitute('cCc', 'C', '\=substitute(submatch(0), ".", "^^M", "")', '')

    | $put =y
v^Hv
w\wXxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
:let y = substitute('dDd', 'D', '\=substitute(submatch(0), ".", "\\^^M", "")', '

')   | $put =y
w\w
XxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
:let y = substitute('eEe', 'E', '\=substitute(submatch(0), ".", "\\\\^^M", "")',

'') | $put =y
XxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
:let y = substitute('fFf', 'F', '\=substitute(submatch(0), ".", "\\r", "")', ''

)      | $put =y
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
f^Mf
:let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', ''

)      | $put =y
TEST_3:
a\a
b\\bc^Mc
d\^Md
e\\^Me
f\rfj\njk^Mk
llTEST_4:
a\a
b\bc^Mc
d^Md
e\^Me
ff
jj
:let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')

      | $put =y
TEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
f^Mfjk^Mk
:let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')

      | $put =y
b\\b
c^Mc
d\^Md
e\\^Me
f\rfj\njk^Mk
llTEST_4:
a\a
b\bc^Mc
d^Md
e\^Me
ff
jjk^Mk
l
l
/^TEST_5
search hit BOTTOM, continuing at TOP:let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', ''))      | $put =y
:let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')        | $put =y
:let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')        | $put =y
/^TEST_5
ENDTEST

TEST_5:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_5:\"
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submaatch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)', '')
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\=string([submatch(0, 1), submatch(9, 1), submatch(8, 1), submatch(7, 1), subbmatch(6, 1), submatch(5, 1), submatch(4, 1), submatch(3, 1), submatch(2, 1), subbmatch(1, 1)])', '')
/^TEST_6
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 6 lines, 543 characters written:set ff& cpo+=A
/ENDTEST

ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_5:\"
3 more linese\\^Me
f\rf
j\nj
k^Mk
l
l


TEST_4:
a\a
b\b
c^Mc
d^Md
e\^Me
f^Mf
j
j
k^Mk
l
l


TEST_5:
3 more lines:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)

', '\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . subm

atch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)', '')
f\rf
j\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
f^Mfjk^Mk
lTEST_5:
A123456789987654321
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)

', '\=string([submatch(0, 1), submatch(9, 1), submatch(8, 1), submatch(7, 1), su

bmatch(6, 1), submatch(5, 1), submatch(4, 1), submatch(3, 1), submatch(2, 1), su

bmatch(1, 1)])', '')
j\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
f^Mfjk^Mk
lTEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]
/^TEST_6
search hit BOTTOM, continuing at TOP:$put =\"\n\nTEST_5:\"
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submaatch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)', '')
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\=string([submatch(0, 1), submatch(9, 1), submatch(8, 1), submatch(7, 1), subbmatch(6, 1), submatch(5, 1), submatch(4, 1), submatch(3, 1), submatch(2, 1), subbmatch(1, 1)])', '')
/^TEST_6
ENDTEST

TEST_6:

STARTTEST
:set magic&
:$put =\"\n\nTEST_6:\"
:set cpo+=/
:$put =substitute('A', 'A', 'a', '')
:$put =substitute('B', 'B', '%', '')
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')
:$put =substitute('D', 'D', '%', '')
/^TEST_7
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 9 lines, 216 characters written:set ff& cpo+=A
/ENDTEST
ENDTEST


TEST_7:


:so! Xdotest
:set magic&
:$put =\"\n\nTEST_6:\"
3 more linesl


TEST_4:
a\a
b\b
c^Mc
d^Md
e\^Me
f^Mf
j
j
k^Mk
l
l


TEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]


TEST_6:
3 more lines:set cpo+=/
:$put =substitute('A', 'A', 'a', '')

a
:$put =substitute('B', 'B', '%', '')

%
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')

c
:$put =substitute('D', 'D', '%', '')

%
/^TEST_7
search hit BOTTOM, continuing at TOP:set magic&
:$put =\"\n\nTEST_6:\"
:set cpo+=/
:$put =substitute('A', 'A', 'a', '')
:$put =substitute('B', 'B', '%', '')
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')
:$put =substitute('D', 'D', '%', '')
/^TEST_7
ENDTEST

TEST_7:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
:$put =substitute('A^V^MA', 'A.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=string(submatch(0, 1))', '')
:$put =substitute('-bb', '\zeb', 'a', 'g')
:$put =substitute('-bb', '\ze', 'c', 'g')
/^TEST_8
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 9 lines, 313 characters written:set ff& cpo+=A
/ENDTEST
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
3 more linesd^Md
e\^Me
f^Mf
j
j
k^Mk
l
l


TEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]


TEST_6:
a
%
c
%


TEST_7:
3 more lines:$put =substitute('A^^MA', 'A.', '\=submatch(0)', '')

A^MA
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')


B
B
:$put =substitute(\"B\nB\", 'B.', '\=string(submatch(0, 1))', '')


['B
']B
:$put =substitute('-bb', '\zeb', 'a', 'g')

-abab
:$put =substitute('-bb', '\ze', 'c', 'g')

c-cbcbc
/^TEST_8
search hit BOTTOM, continuing at TOP:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
:$put =substitute('A^V^MA', 'A.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=string(submatch(0, 1))', '')
:$put =substitute('-bb', '\zeb', 'a', 'g')
:$put =substitute('-bb', '\ze', 'c', 'g')
/^TEST_8
ENDTEST

TEST_8:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_8:\"
:$put =',,X'
:s/\(^\|,\)\ze\(,\|X\)/\1N/g
:$put =',,Y'
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
a:$put =',,Z'
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 10 lines, 186 characters written:set ff& cpo+=A
/ENDTEST

yy/^TEST_9:
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_8:\"
3 more linesTEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]


TEST_6:
a
%
c
%


TEST_7:
A^MA
B
B
['B
']B
-abab
c-cbcbc


TEST_8:
3 more lines:$put =',,X'

,,X
:s/\(^\|,\)\ze\(,\|X\)/\1N/g
N,,NX
:$put =',,Y'

,,Y
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
,
replace with \1N (y/n/a/q/l/^E/^Y)?N,,NY

:$put =',,Z'

,,Z
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
,
replace with \1N (y/n/a/q/l/^E/^Y)?N,,Z
replace with \1N (y/n/a/q/l/^E/^Y)?,NZ

/^TEST_9:
search hit BOTTOM, continuing at TOP:set cpo&
:$put =\"\n\nTEST_8:\"
:$put =',,X'
:s/\(^\|,\)\ze\(,\|X\)/\1N/g
:$put =',,Y'
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
a:$put =',,Z'
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
yy/^TEST_9:
ENDTEST

TEST_9:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_9:\"
:$put ='xxx'
:s/x/X/gc
yyq/^TEST_10:
ENDTEST

TEST_10:
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 6 lines, 82 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_9:\"
3 more linesa
%
c
%


TEST_7:
A^MA
B
B
['B
']B
-abab
c-cbcbc


TEST_8:
N,,NX
N,,NY
N,,NZ


TEST_9:
3 more lines:$put ='xxx'

xxx
:s/x/X/gc
x
replace with X (y/n/a/q/l/^E/^Y)?Xx
replace with X (y/n/a/q/l/^E/^Y)?Xx
replace with X (y/n/a/q/l/^E/^Y)?x
/^TEST_10:
search hit BOTTOM, continuing at TOPTEST_9:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_9:\"
:$put ='xxx'
:s/x/X/gc
yyq/^TEST_10:
ENDTEST

TEST_10:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_10:\"
:let y = substitute('123', '\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\zs.', 'a', 'g')| $put =y
:let y = substitute('123', '.\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\ze', 'a', 'g')| $put =y
:let y = substitute('123', '\ze.', 'a', 'g')| $put =y
:let y = substitute('123', '.\ze', 'a', 'g')| $put =y
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 12 lines, 584 characters written:set ff& cpo+=A
/ENDTEST



:let y = substitute('123', '1\|\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y
/^TEST_11
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_10:\"
3 more linesTEST_7:
A^MA
B
B
['B
']B
-abab
c-cbcbc


TEST_8:
N,,NX
N,,NY
N,,NZ


TEST_9:
XXx


TEST_10:
3 more lines:let y = substitute('123', '\zs', 'a', 'g')             | $put =y

a1a2a3a
:let y = substitute('123', '\zs.', 'a', 'g')            | $put =y

aaa
:let y = substitute('123', '.\zs', 'a', 'g')            | $put =y

1a2a3a
:let y = substitute('123', '\ze', 'a', 'g')             | $put =y

a1a2a3a
:let y = substitute('123', '\ze.', 'a', 'g')            | $put =y

a1a2a3
:let y = substitute('123', '.\ze', 'a', 'g')            | $put =y

aaa
:let y = substitute('123', '1\|\ze', 'a', 'g')          | $put =y

aa2a3a
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y

1aaa
/^TEST_11
search hit BOTTOM, continuing at TOP:let y = substitute('123', '\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\zs.', 'a', 'g')| $put =y
:let y = substitute('123', '.\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\ze', 'a', 'g')| $put =y
:let y = substitute('123', '\ze.', 'a', 'g')| $put =y
:let y = substitute('123', '.\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\|\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y
/^TEST_11
ENDTEST

TEST_11:

STARTTEST
:/^Results/,$wq! test.out
ENDTEST

Results of test72:


TEST_1:
AA
&
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 1 line, 26 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:/^Results/,$wq! test.out
"test.out" [New File] 131 lines, 617 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test80 = test61; then \
#	  if diff test.out test80.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test80.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test80.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test82.failed test.ok test.out X* viminfo
cp test82.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test82.in
[?1h="test82.in" 103 lines, 3166 charactersTests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)
Also test "g~ap".

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, aa:b, a:expected))
:  else
:    let b:passed += 1
:  endif
:endfunction
:
:function! Chk(a, b, result):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 97 lines, 3055 characters written:set ff& cpo+=A
/ENDTEST: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%.22X', n)) | endfor
:for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ\xc2\x%.2XuVw', n)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ\xc2\x%.2XuVw', n)) | endfor
:call append(0, printf('%d checks passed', b:passed))
:"
:" test that g~ap changes one paragraph only.
:new
iabcd

defg^[gg0g~ap:let lns = getline(1,3)
:q!
:call append(line('$'), lns)
:"
:wq! test.out
ENDTEST

~
~



:so! Xdotest
:so small.vim
:if !has("multi_byte")

:  : e! test.ok

:  : w! test.out

:  : qa!

:  :endif
: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%.22X', n)) | endfor


:set enc=utf8
: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%.22X', n)) | endfor
:for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ\xc2\x%.2XuVw', n)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ\xc2\x%.2XuVw', n)) | endfor
:call append(0, printf('%d checks passed', b:passed))
:"
:" test that g~ap changes one paragraph only.
:new
iabcd

defg^[gg0g~ap:let lns = getline(1,3)
:q!
:call append(line('$'), lns)
:"
:wq! test.out
ENDTEST

~
~Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)
Also test "g~ap".

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, aa:b, a:expected))
:  else
:    let b:passed += 1
:  endif
:endfunction
:
:function! Chk(a, b, result)~
~~~~~~~~~~
~~~~~~~~~
~~
--No lines in buffer--:::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\x

aakk\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 cha

racter
: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('Xy

Z\xc2\x%.2XuVw', n)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('Xy

Z\xc2\x%.2XuVw', n)) | endfor
:call append(0, printf('%d checks passed', b:passed))
3732 checks passed:"
:" test that g~ap changes one paragraph only.
:new
~[No Name]                                                                       3732 checks passedtest82.in [+]                                                                   abcddefg[+]ABCD
:let lns = getline(1,3)
:q!
3732 checks passed~~~
~~:call append(line('$'), lns)
ABCDdefg:"
:wq! test.out
"test.out" [New File] 5 lines, 31 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test82 = test61; then \
#	  if diff test.out test82.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test82.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test82.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test84.failed test.ok test.out X* viminfo
cp test84.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test84.in
[?1h="test84.in" 35 lines, 786 charactersTests 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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for curswant not changing when setting an option/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 25 lines, 637 characters written:set ff& cpo+=A
/ENDTEST





:put =map(copy(result), 'join(v:val, '' '')')
:1 delete _
:write test.out
:
:qall!
ENDTEST

:so! Xdotest
:so small.vim
:/^start target options$/+1,/^end target options$/-1 yank
3 lines yanked: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
:  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
~~~~~
~~~~~
[No Name]                                                                       endfornew
:put =map(copy(result), 'join(v:val, '' '')')
:1 delete _write test.outqall!
ENDTESTtest84.in                                                                       :put =['1234567890', '12345']
1234567890
12345[+]:1 delete _

~:let result = []
:for option_name in target_option_names

:  :  call add(result, TestCurswant(option_name))

:  :endfor
1234567890
12345::new
~
~
~
~
~
~
[No Name]                                                                       1234567890
12345
~
~
~
~
~
[No Name] [+]                                                                   :1 delete _
:write test.out
:
:qall!
ENDTEST

test84.in                                                                       :put =map(copy(result), 'join(v:val, '' '')')
3 more linestabstop 7 4
timeoutlen 7 7
ttimeoutlen 7 7[+]:1 delete _

~:write test.out
"test.out" [New File] 3 lines, 43 characters writtentest.out     ::qall!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test84 = test61; then \
#	  if diff test.out test84.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test84.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test84.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test88.failed test.ok test.out X* viminfo
cp test88.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test88.in
[?1h="test88.in" 99 lines, 1449 charactersvim: set ft=vim

Tests for correct display (cursor column position) with +conceal and
tabulators.

STARTTEST
:so small.vim
:if !has('conceal')
   e! test.ok
   wq! test.out
:endif
:" Conceal settings.
:set conceallevel=2
:set concealcursor=nc
:syntax match test /|/ conceal
:" Save current cursor position. Only works in <expr> mode, can't be used
:" with :normal because it moves the cursor to the command line. Thanks to ZyX
:" <zyx.vim@gmail.com> for the idea to use an <expr> mapping.
:let positions = []
:nnoremap <expr> GG ":let positions += ['".screenrow().":".screencol()."']\n"
:" Start test.
/^start:
:normal ztj:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
vim: set ft=vim/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 82 lines, 1216 characters written:set ff& cpo+=A
/ENDTEST:normal W
GGk
:normal W
GGk
:normal W
GGk
:normal $
GGk
:" Display result.
:call append('$', 'end:')
:call append('$', positions)
:/^end/,$wq! test.out
ENDTEST

start:
.concealed.     text
|concealed|     text.concealed.     text|concealed|     text

.a.     .b.     .c.     .d.
|a|     |b|     |c|     |d|
:so! Xdotest
:so small.vim
:if !has('conceal')

:     e! test.ok

:     wq! test.out

:  :endif
:normal W
GGk
:normal W:" Conceal settings.
:set conceallevel=2
:set concealcursor=nc
:syntax match test /|/ conceal
concealed  concealed  


a       b       c       d:" Save current cursor position. Only works in <expr> mode, can't be used
:" with :normal because it moves the cursor to the command line. Thanks to ZyX
:" <zyx.vim@gmail.com> for the idea to use an <expr> mapping.
:let positions = []
:nnoremap <expr> GG ":let positions += ['".screenrow().":".screencol()."']\n"
:" Start test.
/^start:
:normal ztj














~
~
~
~
~
~
~
~
~
~
~
~
~
~:let positions += ['2:1']
:" We should end up in the same column when running these commands on the two
:" lines.
:normal ft
:let positions += ['2:17']
:normal $
:let positions += ['2:20']
:normal 0j
:let positions += ['3:1']
:normal ft
:let positions += ['3:17']
:normal $
:let positions += ['3:20']
:normal 0j0j
:let positions += ['5:8']
:" Same for next test block.
:normal ft
:let positions += ['5:25']
:normal $
:let positions += ['5:28']
:normal 0j
:let positions += ['6:8']
:normal ft
:let positions += ['6:25']
:normal $
:let positions += ['6:28']
:normal 0j0j
:let positions += ['8:1']
:" And check W with multiple tabs and conceals in a line.
:normal W
:let positions += ['8:9']
:normal W
:let positions += ['8:17']
:normal W
:let positions += ['8:25']
:normal $
:let positions += ['8:27']
:normal 0j
:let positions += ['9:1']
:normal W
:let positions += ['9:9']
:normal W
:let positions += ['9:17']
:normal W
:let positions += ['9:25']
:normal $
:let positions += ['9:26']
:set lbr
:normal $
:let positions += ['9:26']
:set list listchars=tab:>-
>------

>------->----
>------->------>----.b.>----.c.>----
a>------b>------c>------:normal 0
:let positions += ['9:1']
:normal W
:let positions += ['9:9']
:normal W
:let positions += ['9:17']
:normal W
:let positions += ['9:25']
:normal $
:let positions += ['9:26']
:" Display result.
:call append('$', 'end:')
end::call append('$', positions)
2:1
2:17
2:20
3:1
3:17
3:20
5:8
5:25
5:28
6:8
6:25
6:28
8:1:/^end/,$wq! test.out
"test.out" [New File] 29 lines, 135 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test88 = test61; then \
#	  if diff test.out test88.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test88.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test88.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test90.failed test.ok test.out X* viminfo
cp test90.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test90.in
[?1h="test90.in" 53 lines, 1204 charactersTests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :

STARTTEST
:so small.vim
:if !has('cryptv') || !exists('*sha256')
   e! test.ok
   wq! test.out
:endif
:"
:let testcase='test for empty string: '
:if sha256("") ==# 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b78522b855'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:let testcase='test for 1 char: '
:if sha256("a") ==# 'ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afeee48bb'
: let res='ok'
:else:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 47 lines, 1114 characters written:set ff& cpo+=A
/ENDTEST:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc39ed110ca776'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:let testcase='test for contains non-ascii char: '
:if sha256("\xde\xad\xbe\xef") ==# '5f78c33274e43fa9de5659265c1d917e25c03722dcb00b8d27db8d5feaa813953'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:/^start:/,$wq! test.out
ENDTEST

start:


:so! Xdotest
:so small.vim
:if !has('cryptv') || !exists('*sha256')

:     e! test.ok

:     wq! test.out

:  :endif
:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc3

:"
:let testcase='test for empty string: '
:if sha256("") ==# 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b785

2b855'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc39ed110ca776'

:$put =testcase.res

test for empty string: ok
:"
:let testcase='test for 1 char: '
:if sha256("a") ==# 'ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785af

ee48bb'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc39ed110ca776'
: let res='ok'
:$put =testcase.res

test for 1 char: ok
:"
:let testcase='test for 3 chars: '
:if sha256("abc") ==# 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61

f20015ad'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc39ed110ca776'
: let res='ok'
:else
:$put =testcase.res


test for 3 chars: ok
~

:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8c

c39ed110ca776'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
: let res='ok'
:else
: let res='ng'
:endif

:$put =testcase.res
test for contains meta char: ok
:"
:let testcase='test for contains non-ascii char: '
:if sha256("\xde\xad\xbe\xef") ==# '5f78c33274e43fa9de5659265c1d917e25c03722dcb

0b8d27db8d5feaa813953'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res

test for contains non-ascii char: ok
:"
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 6 lines, 143 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test90 = test61; then \
#	  if diff test.out test90.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test90.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test90.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test91.failed test.ok test.out X* viminfo
cp test91.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test91.in
[?1h="test91.in" 116 lines, 3240 charactersTests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar().
vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Use strings to test for memory leaks.
:" First, check that in an empty window, gettabvar() returns the correct value
:let t:testvar='abcd'
:$put =string(gettabvar(1,'testvar'))
:$put =string(gettabvar(1,'testvar'))
:" Test for getbufvar()
:let b:var_num = '1234'
:let def_num = '5678'
:$put =string(getbufvar(1, 'var_num'))
:$put =string(getbufvar(1, 'var_num', def_num))
:$put =string(getbufvar(1, ''))
:$put =string(getbufvar(1, '', def_num))
:unlet b:var_num
:$put =string(getbufvar(1, 'var_num', def_num))
:$put =string(getbufvar(1, ''))
:$put =string(getbufvar(1, '', def_num)):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar()./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 109 lines, 3127 characters written:set ff& cpo+=A
/ENDTEST:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:tabnext
:3wincmd w
:unlet w:var_dict
:tabrewind
:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:$put =string(gettabwinvar(2, 9, ''))
:$put =string(gettabwinvar(2, 9, '', def_dict))
:$put =string(gettabwinvar(9, 3, ''))
:$put =string(gettabwinvar(9, 3, '', def_dict))
:unlet def_dict
:$put =string(gettabwinvar(2, 3, '&nux'))
:$put =string(gettabwinvar(2, 3, '&nux', 1))
:tabonly
:"
:/^start/,$wq! test.out
ENDTEST

start:


:so! Xdotest
:so small.vim
:so mbyte.vim
:"
:" Use strings to test for memory leaks.
:" First, check that in an empty window, gettabvar() returns the correct value
:let t:testvar='abcd'
:$put =string(gettabvar(1,'testvar'))

'abcd'
:$put =string(gettabvar(1,'testvar'))

'abcd'
:" Test for getbufvar()
:let b:var_num = '1234'
:let def_num = '5678'
:$put =string(getbufvar(1, 'var_num'))

'1234'
:$put =string(getbufvar(1, 'var_num', def_num))

'1234'
:$put =string(getbufvar(1, ''))

{'var_num': '1234'}
:$put =string(getbufvar(1, '', def_num))

{'var_num': '1234'}
:unlet b:var_num
:$put =string(getbufvar(1, 'var_num', def_num))

'5678'
:$put =string(getbufvar(1, ''))

{}
:$put =string(getbufvar(1, '', def_num))

{}
:$put =string(getbufvar(9, ''))

''
:$put =string(getbufvar(9, '', def_num))

'5678'
:unlet def_num
:$put =string(getbufvar(1, '&autoindent'))

0
:$put =string(getbufvar(1, '&autoindent', 1))

0
:"
:" Open new window with forced option values
:set fileformats=unix,dos
:new ++ff=dos ++bin ++enc=iso-8859-2
~~~~~~~
~~~
[No Name]                                                                       {'var_num': '1234'}

'5678'{}''
'5678'
0test91.in [+]                                                                   :let otherff = getbufvar(bufnr('%'), '&fileformat')
:let otherbin = getbufvar(bufnr('%'), '&bin')
:let otherfenc = getbufvar(bufnr('%'), '&fenc')
:close
:$put =string(gettabwinvar(9, 3, '', def_dict))
:unlet def_dict
:$put =string(gettabwinvar(2, 3, '&nux'))
:$put =string(gettabwinvar(2, 3, '&nux', 1))
:tabonly
:"
:/^start/,$wq! test.out
ENDTESTstart:
'abcd'
'abcd''1234'{'var_num': '1234'}
'5678'

{}
'''5678'

0:$put =otherff

dos
:$put =string(otherbin)

1
:$put =otherfenc

iso-8859-2
:unlet otherff otherbin otherfenc
:" test for getwinvar()
:let w:var_str = "Dance"
:let def_str = "Chance"
:$put =string(getwinvar(1, 'var_str'))

'Dance'
:$put =string(getwinvar(1, 'var_str', def_str))

'Dance'
:$put =string(getwinvar(1, ''))

{'var_str': 'Dance'}
:$put =string(getwinvar(1, '', def_str))

{'var_str': 'Dance'}
:unlet w:var_str
:$put =string(getwinvar(1, 'var_str', def_str))

'Chance'
:$put =string(getwinvar(1, ''))

{}
:$put =string(getwinvar(1, '', def_str))

{}
:$put =string(getwinvar(9, ''))

''
:$put =string(getwinvar(9, '', def_str))

'Chance'
:$put =string(getwinvar(1, '&nu'))

0
:$put =string(getwinvar(1, '&nu',  1))

0
:unlet def_str
:"
:" test for gettabvar()
:tabnew
 + test91.in | [No Name] _______________________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:tabnew
 + test91.in | [No Name] | [No Name] ___________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:let t:var_list = [1, 2, 3]
:let t:other = 777
:let def_list = [4, 5, 6, 7]
:tabrewind
 + test91.in | [No Name] | [No Name] ___________________________________________X{'var_num': '1234'}
'5678'
{}
{}
''
'5678'
0
0
dos
1
iso-8859-2
'Dance'
'Dance'
{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
:$put =string(gettabvar(3, 'var_list'))

[1, 2, 3]
:$put =string(gettabvar(3, 'var_list', def_list))

[1, 2, 3]
:$put =string(gettabvar(3, ''))

{'var_list': [1, 2, 3], 'other': 777}
:$put =string(gettabvar(3, '', def_list))

{'var_list': [1, 2, 3], 'other': 777}
:tablast
 + test91.in | [No Name] | [No Name] ___________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:unlet t:var_list
:tabrewind
 + test91.in | [No Name] | [No Name] ___________________________________________X''
'5678'
0
0
dos
1
iso-8859-2
'Dance'
'Dance'
{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
[1, 2, 3]
[1, 2, 3]
{'var_list': [1, 2, 3], 'other': 777}
{'var_list': [1, 2, 3], 'other': 777}

:$put =string(gettabvar(3, 'var_list', def_list))

[4, 5, 6, 7]
:$put =string(gettabvar(9, ''))

''
:$put =string(gettabvar(9, '', def_list))

[4, 5, 6, 7]
:$put =string(gettabvar(3, '&nu'))

''
:$put =string(gettabvar(3, '&nu', def_list))

[4, 5, 6, 7]
:unlet def_list
:tabonly
dos:"
:" test for gettabwinvar()
:tabnew
 + test91.in | [No Name] _______________________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:tabnew
 + test91.in | [No Name] | [No Name] ___________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:tabprev
 + test91.in | [No Name] | [No Name] ___________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:split
2 [No Name] | [No Name] _X[No Name]                                                                       [No Name]                                                                       :split
 + test91.in | 3 [No Name] | [No Name] _________________________________________X~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :wincmd w
[No Name]                                                                       [No Name]                                                                       _X:vert split
4_X||||||                                       
~                                       
~                                       
~                                       
~                                       ~~~~~[No Name]                              :wincmd w
[No Name]                                [No Name]                              _X:let w:var_dict = {'dict': 'tabwin'}
:let def_dict = {'dict2': 'newval'}
:wincmd b
[No Name]                              [No Name]                                                                       _X:tabrewind
 + test91.in | 4 [No Name] | [No Name] _________________________________________X1
iso-8859-2
'Dance'
'Dance'
{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
[1, 2, 3]
[1, 2, 3]
{'var_list': [1, 2, 3], 'other': 777}
{'var_list': [1, 2, 3], 'other': 777}
[4, 5, 6, 7]
''
[4, 5, 6, 7]
''
[4, 5, 6, 7]

:$put =string(gettabwinvar(2, 3, 'var_dict'))

{'dict': 'tabwin'}
:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))

{'dict': 'tabwin'}
:$put =string(gettabwinvar(2, 3, ''))

{'var_dict': {'dict': 'tabwin'}}
:$put =string(gettabwinvar(2, 3, '', def_dict))

{'var_dict': {'dict': 'tabwin'}}
:tabnext
 + test91.in | 4 [No Name] | [No Name] _________________________________________X~
~
~
~
~
~
[No Name]                                                                       ||||||~                                       
~                                       
~                                       
~                                       
~                                       
[No Name]                                ~~~~~[No Name]                              ~
~
~
~
~
[No Name]                                                                       :3wincmd w
[No Name]                              [No Name]                                                                       _X:unlet w:var_dict
:tabrewind
 + test91.in | 4 [No Name] | [No Name] _________________________________________X{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
[1, 2, 3]
[1, 2, 3]
{'var_list': [1, 2, 3], 'other': 777}
{'var_list': [1, 2, 3], 'other': 777}
[4, 5, 6, 7]
''
[4, 5, 6, 7]
''
[4, 5, 6, 7]
{'dict': 'tabwin'}
{'dict': 'tabwin'}
{'var_dict': {'dict': 'tabwin'}}
{'var_dict': {'dict': 'tabwin'}}

:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))

{'dict2': 'newval'}
:$put =string(gettabwinvar(2, 3, ''))

{}
:$put =string(gettabwinvar(2, 3, '', def_dict))

{}
:$put =string(gettabwinvar(2, 9, ''))

''
:$put =string(gettabwinvar(2, 9, '', def_dict))

{'dict2': 'newval'}
:$put =string(gettabwinvar(9, 3, ''))

''
:$put =string(gettabwinvar(9, 3, '', def_dict))

{'dict2': 'newval'}
:unlet def_dict
:$put =string(gettabwinvar(2, 3, '&nux'))

''
:$put =string(gettabwinvar(2, 3, '&nux', 1))

1
:tabonly
0:"
:/^start/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 50 lines, 530 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test91 = test61; then \
#	  if diff test.out test91.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test91.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test91.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test92.failed test.ok test.out X* viminfo
cp test92.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test92.in
[?1h="test92.in" 48 lines, 852 charactersvim: set ft=vim fenc=utf-8:

Tests if :mksession saves cursor columns correctly in presence of tab and
multibyte characters when fileencoding=utf-8.

STARTTEST
:so mbyte.vim
:if !has('mksession')
:  e! test.ok
:  wq! test.out
:endif
:set sessionoptions=buffers splitbelow fileencoding=utf-8
/^start:
:vsplit
j16|:split
j16|:split
j16|:split
j8|:split
j8|:split
j16|:split
j16|:split
j16|:wincmd l
/^start::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
vim: set ft=vim fenc=utf-8:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 31 lines, 467 characters written:set ff& cpo+=A
/ENDTESTj016|3zl:split
j016|3zl:split
j08|3zl:split
j08|3zl:split
j016|3zl:split
j016|3zl:split
j016|3zl:split
:mksession! test.out
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!
ENDTEST

start:
no multibyte chAracterone leaDing tab
    four leadinG spaces
twoconsecutive tabs
two     tabs    in one line
:so! Xdotest
:so mbyte.vim
:if !has('mksession')

:  :  e! test.ok

:  :  wq! test.out

:  :endif
j016|3zl:split
j016|3zl:split
j08|3zl:split:set sessionoptions=buffers splitbelow fileencoding=utf-8
/^start:
:vsplit
|
j08|3zl:split ||
j016|3zl:split|||
:mksession! test.out|
:new test.out       |
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d  |
:w! test.out                            |
:qa!        |
ENDTEST|
       |
start:|
no multibyte chAracter|
        one leaDing tab|
    four leadinG spaces|
two             consecutive tabs|tabs    in one line     |
:split
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out 
:qa!         
ENDTEST       
              
start:        
no multibyte chAracter
        one leaDing tab
    four leadinG spaces               
two             consecutive tabs
test92.in [+]                           
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!                  
ENDTEST                
                       
start:                
no multibyte chAracter     
        one leaDing tab    
    four leadinG spaces               
two             consecutive tabs        :split
:qa!|
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
:w! test.out|
:qa!|
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
ENDTEST                                 
                                        
start:                                  
no multibyte chAracter                  
        one leaDing tab                 
                                        
    four leadinG spaces

:split
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|

:split
ENDTEST||
start:|
no multibyte chAracter|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
two     tabs    in one line|

:split
|
start:|
no multibyte chAracter|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |
test92.in [+]                            !TESTrt:multibyte chAracterone leaDing tabfour leadinG spacestest92.in [+]                          TESTrt:multibyte chAracterone leaDing tabfour leadinG spacestest92.in [+]                          test.out!TESTrt:multibyte chAracterone leaDing tabtest92.in [+]                          !                                      TEST                                                                          rt:                                    multibyte chAracter                         one leaDing tab                                                          four leadinG spaces:qa!ENDTESTstart:no multibyte chAracter   one leaDing tab   four leadinG spaces!TESrt:multibyte chAracterone leaDing tabfour leadinG spaces

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |
test92.in [+]                            TESTrt:multibyte chAracterone leaDing tabtest92.in [+]                          TESTrt:multibyte chAracterone leaDing tabtest92.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacestest92.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacesconsecutive tabstest92.in [+]                          start:no multibyte chAracter   one leaDing tab   four leadinG spacestwo   consecutive tabsrt:multibyte chAracterone leaDing tabfour leadinG spaces   consecutive tabs

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |
test92.in [+]                            TESTrt:multibyte chAractertest92.in [+]                          rt:multibyte chAracterone leaDing tabtest92.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacestest92.in [+]                          one leaDing tabfour leadinG spacesconsecutive tabstest92.in [+]                          one leaDing tabfour leadinG spacesconsecutive tabstabs    in one linetest92.in [+]                             one leaDing tab   four leadinG spacestwo   consecutive tabstwo     tabs    in one lineone leaDing tabfour leadinG spaces   consecutive tabs     tabs    in one line

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:mksession! test.out
:new test.out
"test.out" 282 lines, 5850 charactersstart:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
256 fewer lines  normal! 016|[+]:w! test.out
"test.out" 26 lines, 611 characters written   :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test92 = test61; then \
#	  if diff test.out test92.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test92.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test92.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test93.failed test.ok test.out X* viminfo
cp test93.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test93.in
[?1h="test93.in" 48 lines, 843 charactersvim: set ft=vim fenc=latin1:

Tests if :mksession saves cursor columns correctly in presence of tab and
multibyte characters when fileencoding=latin1.

STARTTEST
:so mbyte.vim
:if !has('mksession')
:  e! test.ok
:  wq! test.out
:endif
:set sessionoptions=buffers splitbelow fileencoding=latin1
/^start:
:vsplit
j16|:split
j16|:split
j16|:split
j8|:split
j8|:split
j16|:split
j16|:split
j16|:wincmd l
/^start::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
vim: set ft=vim fenc=latin1:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 31 lines, 468 characters written:set ff& cpo+=A
/ENDTESTj016|3zl:split
j016|3zl:split
j08|3zl:split
j08|3zl:split
j016|3zl:split
j016|3zl:split
j016|3zl:split
:mksession! test.out
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!
ENDTEST

start:
no multibyte chAracterone leaDing tab
    four leadinG spaces
twoconsecutive tabs
two     tabs    in one line
:so! Xdotest
:so mbyte.vim
:if !has('mksession')

:  :  e! test.ok

:  :  wq! test.out

:  :endif
j016|3zl:split
j016|3zl:split
j08|3zl:split:set sessionoptions=buffers splitbelow fileencoding=latin1
/^start:
:vsplit
|
j08|3zl:split ||
j016|3zl:split|||
:mksession! test.out|
:new test.out       |
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d  |
:w! test.out                            |
:qa!        |
ENDTEST|
       |
start:|
no multibyte chAracter|
        one leaDing tab|
    four leadinG spaces|
two             consecutive tabs|tabs    in one line     |
:split
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out 
:qa!         
ENDTEST       
              
start:        
no multibyte chAracter
        one leaDing tab
    four leadinG spaces               
two             consecutive tabs
test93.in [+]                           
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!                  
ENDTEST                
                       
start:                
no multibyte chAracter     
        one leaDing tab 
    four leadinG spaces       
two             consecutive tab:split
:qa!|
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
:w! test.out|
:qa!|
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
ENDTEST                                 
                                        
start:                                  
no multibyte chAracter                  
        one leaDing tab                 
                                        
    four leadinG spaces

:split
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|

:split
ENDTEST||
start:|
no multibyte chAracter|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
two     tabs    in one line|

:split
|
start:|
no multibyte chAracter|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |
test93.in [+]                            !TESTrt:multibyte chAracterone leaDing tabfour leadinG spacestest93.in [+]                          TESTrt:multibyte chAracterone leaDing tabfour leadinG spacestest93.in [+]                          test.out!TESTrt:multibyte chAracterone leaDing tabtest93.in [+]                          !                                      TEST                                                                          rt:                                    multibyte chAracter                         one leaDing tab                                                          four leadinG spaces:qa!ENDTESTstart:no multibyte chAracter   one leaDing tab   four leadinG spaces!TESrt:multibyte chAracterone leaDing tabfour leadinG spaces

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |
test93.in [+]                            TESTrt:multibyte chAracterone leaDing tabtest93.in [+]                          TESTrt:multibyte chAracterone leaDing tabtest93.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacestest93.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacesconsecutive tabstest93.in [+]                          start:no multibyte chAracter   one leaDing tab   four leadinG spacestwo   consecutive tabsrt:multibyte chAracterone leaDing tabfour leadinG spaces   consecutive tabs

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |
test93.in [+]                            TESTrt:multibyte chAractertest93.in [+]                          rt:multibyte chAracterone leaDing tabtest93.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacestest93.in [+]                          one leaDing tabfour leadinG spacesconsecutive tabstest93.in [+]                          one leaDing tabfour leadinG spacesconsecutive tabstabs    in one linetest93.in [+]                             one leaDing tab   four leadinG spacestwo   consecutive tabstwo     tabs    in one lineone leaDing tabfour leadinG spaces   consecutive tabs     tabs    in one line

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:mksession! test.out
:new test.out
"test.out" 282 lines, 5850 charactersstart:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
256 fewer lines  normal! 016|[+]:w! test.out
"test.out" 26 lines, 611 characters written   :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test93 = test61; then \
#	  if diff test.out test93.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test93.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test93.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test94.failed test.ok test.out X* viminfo
cp test94.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test94.in
[?1h="test94.in" 256 lines, 4824 charactersTest for Visual mode and operators

Tests for the two kinds of operations: Those executed with Visual mode
followed by an operator and those executed via Operator-pending mode. Also
part of the test are mappings, counts, and repetition with the . command.

Test cases:
- Visual modes (v V CTRL-V) followed by an operator; count; repeating
- Visual mode maps; count; repeating
  - Simple
  - With an Ex command (custom text object)
- Operator-pending mode maps
  - Simple
  - With Ex command moving the cursor
  - With Ex command and Visual selection (custom text object)
- Patch 7.3.879: Properly abort Ex command in Operator-pending mode

STARTTEST
:so small.vim
:set enc=utf-8 nocp viminfo+=nviminfo
:
:" User functions
:function MoveToCap():set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for Visual mode and operators/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 211 lines, 3837 characters written:set ff& cpo+=A
/ENDTESTkv3lyjv3lpgvcxxx^[
:$put ='---'
:
:$put =''
:$put ='gv in exclusive select mode without operation'
:$put ='zzz '
:set selection=exclusive
0v3l^[gvcxxx^[
:$put ='---'
:/^start:/+2,$w! test.out
:q!
ENDTEST

start:

apple banana cherry

line 1 line 1
line 2 line 2
line 3 line 3
line 4 line 4
line 5 line 5
line 6 line 6
:so! Xdotest
:so small.vim
:set enc=utf-8 nocp viminfo+=nviminfo
kv3lyjv3lpgvcxxx^[
:$put ='---'
:
:$put =''
:$put ='gv in exclusive select mode without operation'
:$put ='zzz '
:set selection=exclusive
0v3l^[gvcxxx^[
:$put ='---'
:/^start:/+2,$w! test.out
:q!
ENDTEST

start:

apple banana cherry

line 1 line 1
line 2 line 2
line 3 line 3
line 4 line 4
line 5 line 5
line 6 line 6::" User functions
:function MoveToCap()

:  :  call search('\u', 'W')

:  :endfunction
kv3lyjv3lpgvcxxx^[
:$put ='---':function SelectInCaps()

:  :  let [line1, col1] = searchpos('\u', 'bcnW')

:  :  let [line2, col2] = searchpos('.\u', 'nW')

:  :  call setpos("'<", [0, line1, col1, 0])

:  :  call setpos("'>", [0, line2, col2, 0])

:  :  normal! gv

:  :endfunction
kv3lyjv3lpgvcxxx^[
:$put ='---'
:
:$put =''
:$put ='gv in exclusive select mode without operation'
:$put ='zzz '::" Visual modes followed by operator
/^apple
a-- VISUAL --ple banana cherry banana cherry banan-- VISUAL --
a  cherryy:/^line 1
line 1 line 1 -- VISUAL LINE --INSERT --newline-- INSERT --newline
line 3 line 3 
line 4 line 4 


-- VISUAL LINE --line 5 line 5line 6 line 6xxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxx:/^xxxx



-- VISUAL BLOCK --x
x
xINSERT --  
   


-- INSERT --  
     
xxxx
    xxxx
xxxxxxxx
xxxxxxxxxxxxx
-- VISUAL BLOCK --
-- INSERT ------
    ----
xxxx----
xxxx------- INSERT ------------------:::" Visual mode maps (movement and text object)
:vnoremap W /\u/s-1<CR>
:vnoremap iW :<C-U>call SelectInCaps()<CR>
/^Kiwi


KiwiRaspberryDateWatermelonPeach
-- VISUAL --/\u/s-1
Kiw
-- INSERT --NoRaspberryDateWatermelonPeacho
-- INSERT --NoberryDateWatermelonPeachoberryDateWat
-- VISUAL --rmelonPeachach
:/^Jambu

JambuRambutanBananaTangerineMangoJa
-- VISUAL --:'<,'>call SelectInCaps()
Jamb
-- INSERT ---RambutanBananaTangerineMango-
-- INSERT ---tanBananaTangerineMango-tanBanana
-- VISUAL --
--angerineMangoago
:::" Operator-pending mode maps (movement and text object)
:onoremap W /\u/<CR>
:onoremap <Leader>W :<C-U>call MoveToCap()<CR>
:onoremap iW :<C-U>call SelectInCaps()<CR>
/^Pineapple


PineappleQuinceLoganberryOrangeGrapefruitKiwiZ
/\u/
-QuinceLoganberryOrangeGrapefruitKiwiZ-
/\u/
-- INSERT ---LoganberryOrangeGrapefruitKiwiZ-
/\u/
-- INSERT ---GrapefruitKiwiZ-
/\u/
-- INSERT ---Z
:/^Juniper

JuniperDurianZ
:call MoveToCap()
Whavcre
:call MoveToCap()
Qhevna:/^Lemon

LemonNectarineZ
:call SelectInCaps()
LemonLemonNectarineZ
Lemon:call SelectInCaps()
NewNectarineZwNecta
:call SelectInCaps()
wZ
:::" Patch 7.3.879: Properly abort Operator-pending mode for "dv:<Esc>" etc.
/^zzzz


zzzz
:::set noma | let v:errmsg = ''
:E21: Cannot make changes, 'modifiable' is off:set ma | put = v:errmsg =~# '^E21' ? 'ok' : 'failed'

ok
:
:
:set noma | let v:errmsg = ''
:
:set ma | put = v:errmsg =~# '^E21' ? 'failed' : 'ok'

ok
::$put =''


:$put ='characterwise visual mode: replace last line'

characterwise visual mode: replace last line
:$put ='a'

a
:let @" = 'x'
:let v:errmsg = ''

-- VISUAL --ax
:$put ='---'

---
:$put ='v:errmsg='.v:errmsg

v:errmsg=
::$put =''


:$put ='characterwise visual mode: delete middle line'

characterwise visual mode: delete middle line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c


-- VISUAL --ab
c
~


:$put ='---'
---
::$put =''


:$put ='characterwise visual mode: delete middle two line'

characterwise visual mode: delete middle two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c


-- VISUAL --a 
bc~
~


:$put ='---'
---
::$put =''
:$put ='characterwise visual mode: delete last line'

characterwise visual mode: delete last line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c
-- VISUAL --c
:$put ='---'

---
::$put =''


:$put ='characterwise visual mode: delete last two line'

characterwise visual mode: delete last two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c

-- VISUAL --b 
c~

:$put ='---'
---
::" Select mode maps
:snoremap <lt>End> <End>
:snoremap <lt>Down> <Down>
:snoremap <lt>Del> <Del>
::$put =''


:$put ='characterwise select mode: delete middle line'

characterwise select mode: delete middle line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c


-- SELECT --ab
c
~


:$put ='---'
---
::$put =''


:$put ='characterwise select mode: delete middle two line'

characterwise select mode: delete middle two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c


-- SELECT --a 
bc~
~


:$put ='---'
---
::$put =''
:$put ='characterwise select mode: delete last line'

characterwise select mode: delete last line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c
-- SELECT --c
:$put ='---'

---
::$put =''


:$put ='characterwise select mode: delete last two line'

characterwise select mode: delete last two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c

-- SELECT --b 
c~

:$put ='---'
---
::$put =''


:$put ='linewise select mode: delete middle line'

linewise select mode: delete middle line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

ca 


-- SELECT LINE --bc
~


:$put ='---'
---
::$put =''


:$put ='linewise select mode: delete middle two line'

linewise select mode: delete middle two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

ca 


-- SELECT LINE --a
b 
c~
~


:$put ='---'
---
::$put =''
:$put ='linewise select mode: delete last line'

linewise select mode: delete last line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

cc 
-- SELECT LINE --~

:$put ='---'
---
::$put =''


:$put ='linewise select mode: delete last two line'

linewise select mode: delete last two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

cb 

-- SELECT LINE --b
c 
~~


:$put ='---'
---
::$put =''
:$put ='v_p: replace last character with line register at middle line'

v_p: replace last character with line register at middle line
:$put ='aaa'

aaa
:$put ='bbb'

bbb
:$put ='ccc'

ccc
:-2yank
bb

-- VISUAL --aaa

:$put ='---'


ccc
---
::$put =''


:$put ='v_p: replace last character with line register at middle line selecting

newline'
linewise select mode: delete middle two line
c---linewise select mode: delete last line
ab
---linewise select mode: delete last two line
a---v_p: replace last character with line register at middle line
aaabbaaaccc
---v_p: replace last character with line register at middle line selecting newline
:$put ='aaa'

aaa
:$put ='bbb'

bbb
:$put ='ccc'

ccc
:-2yank
bb

-- VISUAL --baaa
ccc

:$put ='---'

---
::$put =''


:$put ='v_p: replace last character with line register at last line'

v_p: replace last character with line register at last line
:$put ='aaa'

aaa
:$put ='bbb'

bbb
:$put ='ccc'

ccc
:-2yank
cc
-- VISUAL --
aaa

:$put ='---'

---
::$put =''


:$put ='v_p: replace last character with line register at last line selecting n

ewline'
aaa
bbaaaccc
---v_p: replace last character with line register at middle line selecting newline
aaabbaaa
ccc
---v_p: replace last character with line register at last line
aaabbb
ccaaa---v_p: replace last character with line register at last line selecting newline
:$put ='aaa'

aaa
:$put ='bbb'

bbb
:$put ='ccc'

ccc
:-2yank
cc
-- VISUAL --c
aaa

:$put ='---'

---
::$put =''


:$put ='gv in exclusive select mode after operation'

gv in exclusive select mode after operation
:$put ='zzz '

zzz
:$put ='äà '

äÃ
:set selection=exclusive


-- VISUAL --zzz
zzz

-- VISUAL --äÃ
zzz
-- VISUAL --zzzINSERTxxx
:$put ='---'

---
::$put =''


:$put ='gv in exclusive select mode without operation'

gv in exclusive select mode without operation
:$put ='zzz '

zzz
:set selection=exclusive

-- VISUAL --zzz
zzz
-- VISUAL --zzzINSERTxxx
:$put ='---'

---
:/^start:/+2,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New] 123L, 1328C written:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test94 = test61; then \
#	  if diff test.out test94.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test94.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test94.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test95.failed test.ok test.out X* viminfo
cp test95.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test95.in
[?1h="test95.in" 141 lines, 5827 charactersTest for regexp patterns with multi-byte support, using utf-8.
See test64 for the non-multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:so mbyte.vim
:set nocp encoding=utf-8 viminfo+=nviminfo nomore
:" tl is a List of Lists with:
:"    2: test auto/old/new  0: test auto/old  1: test auto/new
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:
:"""" Multi-byte character tests. These will fail unless vim is compiled
:"""" with Multibyte (FEAT_MBYTE) or BIG/HUGE features.:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for regexp patterns with multi-byte support, using utf-8./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 131 lines, 5590 characters written:set ff& cpo+=A
/ENDTEST:endif
:      endfor
:      unlet i
:    endif
:  endfor
:endfor
:unlet t tl e l
:
:" check that 'ambiwidth' does not change the meaning of \p
:set regexpengine=1 ambiwidth=single
:$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=1 ambiwidth=double
:$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=single
:$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=double
:$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')
:
:/\%#=1^Results/,$wq! test.out
ENDTEST

Results of test95:
~



:so! Xdotest
:so small.vim
:so mbyte.vim
:set nocp encoding=utf-8 viminfo+=nviminfo nomore
:endif
:      endfor
:      unlet i
:    endif
:  endfor
:endfor
:unlet t tl e l
:
:" check that 'ambiwidth' does not change the meaning of \p
:set regexpengine=1 ambiwidth=single
:$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=1 ambiwidth=double
:$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=single
:$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=double
:$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')
:
:/\%#=1^Results/,$wq! test.out
ENDTEST

Results of test95:
~


:" tl is a List of Lists with:
:"    2: test auto/old/new  0: test auto/old  1: test auto/new
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
::"""" Multi-byte character tests. These will fail unless vim is compiled
:"""" with Multibyte (FEAT_MBYTE) or BIG/HUGE features.
:call add(tl, [2, '[[:alpha:][=a=]]\+', '879 aiaãâaiuvna ', 'aiaãâaiuvna'])
:call add(tl, [2, '[[=a=]]\+', 'ddaãâbcd', 'aãâ'])^I^I^I^I^I^I^I^I" equivalence

classes
:endif


:call add(tl, [2, '[^ม ]\+', 'มม oijasoifjos ifjoisj f osij j มมมมม abcd', 'oij

asoifjos'])
:endif


:call add(tl, [2, ' [^ ]\+', 'start มabcdม ', ' มabcdม'])
:call add(tl, [2, '[ม[:alpha:][=a=]]\+', '879 aiaãมâมaiuvna ', 'aiaãมâมaiuvna']

):endif


::" this is not a normal "i" but 0xec
:call add(tl, [2, '\p\+', 'ìa', 'ìa'])
:call add(tl, [2, '\p*', 'aあ', 'aあ'])
::"""" Test recognition of some character classes
:call add(tl, [2, '\i\+', '&*¨xx ', 'xx'])
:call add(tl, [2, '\f\+', '&*<9f>fname ', 'fname'])
::"""" Test composing character matching
:call add(tl, [2, '.ม', 'xมม่x yมy', 'yม'])
:call add(tl, [2, '.มม่', 'xมม่x yมy', 'xมม่'])
:call add(tl, [2, "\u05b9", " x\u05b9 ", "x\u05b9"])
:call add(tl, [2, ".\u05b9", " x\u05b9 ", "x\u05b9"])
:call add(tl, [2, "\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, ".\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, "\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, ".\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, "\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])
:call add(tl, [2, ".\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])
:call add(tl, [2, "\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])
:call add(tl, [2, ".\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])
:call add(tl, [1, "\u05b9\u05bb", " y\u05b9 x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, ".\u05b9\u05bb", " y\u05bb x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, "a", "ca\u0300t"])
:call add(tl, [2, "ca", "ca\u0300t"])
:call add(tl, [2, "a\u0300", "ca\u0300t", "a\u0300"])
:call add(tl, [2, 'a\%C', "ca\u0300t", "a\u0300"])
:call add(tl, [2, 'ca\%C', "ca\u0300t", "ca\u0300"])
:call add(tl, [2, 'ca\%Ct', "ca\u0300t", "ca\u0300t"])
:::"""" Test \Z
:call add(tl, [2, 'ú\Z', 'x'])
:call add(tl, [2, 'יהוה\Z', 'יהוה', 'יהוה'])
:call add(tl, [2, 'ייְהווָה\Z', 'יהוה', 'יהוה'])
:call add(tl, [2, 'יהוה\Z', 'ייְהווָה', 'ייְהווָה'])
:call add(tl, [2, 'ייְהווָה\Z', 'ייְהווָה', 'ייְהווָה'])
:call add(tl, [2, 'ייְ\Z', 'ווְייַ', 'ייַ'])
:call add(tl, [2, "ק\u200d\u05b9x\\Z", "xק\u200d\u05b9xy", "ק\u200d\u05b9x"])
:call add(tl, [2, "ק\u200d\u05b9x\\Z", "xק\u200dxy", "ק\u200dx"])
:call add(tl, [2, "ק\u200dx\\Z", "xק\u200d\u05b9xy", "ק\u200d\u05b9x"])
:call add(tl, [2, "ק\u200dx\\Z", "xק\u200dxy", "ק\u200dx"])
:call add(tl, [2, "\u05b9\\Z", "xyz"])
:call add(tl, [2, "\\Z\u05b9", "xyz"])
:call add(tl, [2, "\u05b9\\Z", "xy\u05b9z", "y\u05b9"])
:call add(tl, [2, "\\Z\u05b9", "xy\u05b9z", "y\u05b9"])
:call add(tl, [1, "\u05b9\\+\\Z", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])
:call add(tl, [1, "\\Z\u05b9\\+", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])
::"""" Combining different tests and features
:call add(tl, [2, '[^[=a=]]\+', 'ddaãâbcd', 'dd'])
::"""" Run the tests
::"
:for t in tl

:  :  let re = t[0]

:  :  let pat = t[1]

:  :  let text = t[2]

:  :  let matchidx = 3

:  :  for engine in [0, 1, 2]

:    :    if engine == 2 && re == 0 || engine == 1 && re == 1

:      :      continue

:      :    endif

:    :    let &regexpengine = engine

:    :    try

:      :      let l = matchlist(text, pat)

:      :    catch

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", caused an exception: \"' . v:exception . '\"'

:      :    endtry

:    :" check the match itself

:    :    if len(l) == 0 && len(t) > matchidx

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", did not match, expected: \"' . t[matchidx] . '\"'

:      :    elseif len(l) > 0 && len(t) == matchidx

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", match: \"' . l[0] . '\", expected no match'

:      :    elseif len(t) > matchidx && l[0] != t[matchidx]

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te
t . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"'

:      :    else

:      :      $put ='OK ' . engine . ' - ' . pat

:      :    endif

:    :    if len(l) > 0

:      :"   check all the nine submatches

:      :      for i in range(1, 9)

::        if len(t) <= matchidx + i

::          let e = ''

::        else

::          let e = t[matchidx + i]

::        endif

::        if l[i] != e

::          $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: 
"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"'

::        endif

::      endfor

:      :      unlet i

:      :    endif

:    :  endfor

:  :endfor
OK 2 - ק<200d>x\Z
OK 0 - ק<200d>x\Z
OK 1 - ק<200d>x\Z
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+

:unlet t tl e l
::" check that 'ambiwidth' does not change the meaning of \p
:set regexpengine=1 ambiwidth=single
OK 2 - ק<200d>x\Z
OK 0 - ק<200d>x\Z
OK 1 - ק<200d>x\Z
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+

:$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')

eng 1 ambi single: 0
:set regexpengine=1 ambiwidth=double
OK 0 - ק<200d>x\Z
OK 1 - ק<200d>x\Z
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+
eng 1 ambi single: 0

:$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')

eng 1 ambi double: 0
:set regexpengine=2 ambiwidth=single
OK 1 - ק<200d>x\Z
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+
eng 1 ambi single: 0
eng 1 ambi double: 0

:$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')

eng 2 ambi single: 0
:set regexpengine=2 ambiwidth=double
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+
eng 1 ambi single: 0
eng 1 ambi double: 0
eng 2 ambi single: 0

:$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')

eng 2 ambi double: 0
::/\%#=1^Results/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New] 140L, 2022C written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test95 = test61; then \
#	  if diff test.out test95.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test95.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test95.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test98.failed test.ok test.out X* viminfo
cp test98.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test98.in
[?1h="test98.in" 43 lines, 908 charactersTest for 'scrollbind' causing an unexpected scroll of one of the windows.
STARTTEST
:so small.vim
:" We don't want the status line to cause problems:
:set laststatus=0
:let g:totalLines = &lines * 20
:let middle = g:totalLines / 2
:wincmd n
:wincmd o
:for i in range(1, g:totalLines)
:    call setline(i, 'LINE ' . i)
:endfor
:exe string(middle)
:normal zt
:normal M
:aboveleft vert new
:for i in range(1, g:totalLines)
:    call setline(i, 'line ' . i)
:endfor
:exe string(middle)
:normal zt
:normal M
:" Execute the following two command at once to reproduce the problem.:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for 'scrollbind' causing an unexpected scroll of one of the windows./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 35 lines, 791 characters written:set ff& cpo+=A
/ENDTEST















:setl scb | wincmd p
:setl scb
:wincmd w
:let topLineLeft = line('w0')
:wincmd p
:let topLineRight = line('w0')
:setl noscrollbind
:wincmd p
:setl noscrollbind
:q!
:%del _
:call setline(1, 'Difference between the top lines (left - right): ' . string(toopLineLeft - topLineRight))
:w! test.out
:brewind
ENDTEST

:so! Xdotest
:so small.vim
:" We don't want the status line to cause problems:
:set laststatus=0
:let g:totalLines = &lines * 20
:let middle = g:totalLines / 2
:wincmd n
~~~~~~~~~~
[No Name]                                                                       :wincmd o
~~~~~~~~~~~
~:for i in range(1, g:totalLines)

:  :    call setline(i, 'LINE ' . i)

:  :endfor
LINE 1
LINE 2
LINE 3
LINE 4
LINE 5
LINE 6
LINE 7
LINE 8
LINE 9
LINE 10
LINE 11
LINE 12
LINE 13
LINE 14
LINE 15
LINE 16
LINE 17
LINE 18
LINE 19
LINE 20
LINE 21
LINE 22
LINE 23:exe string(middle)
LINE 229
LINE 230
LINE 231
LINE 232
LINE 233
LINE 234
LINE 235
LINE 236
LINE 237
LINE 238
LINE 239
LINE 240
LINE 241
LINE 242
LINE 243
LINE 244
LINE 245
LINE 246
LINE 247
LINE 248
LINE 249
LINE 250
LINE 251:normal zt











LINE 252
LINE 253
LINE 254
LINE 255
LINE 256
LINE 257
LINE 258
LINE 259
LINE 260
LINE 261
LINE 262:normal M
:aboveleft vert new
        |||||||||||||||||||||||~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       LINE 240LINE 241LINE 242LINE 243LINE 244LINE 245LINE 246LINE 247LINE 248LINE 249LINE 250LINE 251LINE 252LINE 253LINE 254LINE 255LINE 256LINE 257LINE 258LINE 259LINE 260LINE 261LINE 262:for i in range(1, g:totalLines)

:  :    call setline(i, 'line ' . i)

:  :endfor
line 1|
line 2|
line 3                                  
line 4                                  
line 5                                  
line 6                                  
line 7                                  
line 8                                  
line 9                                  
line 10                                 
line 11                                 
line 12                                 
line 13                                 
line 14                                 
line 15                                 
line 16                                 
line 17                                 
line 18                                 
line 19                                 
line 20                                 
line 21                                 
line 22                                 
line 23                                 LINE 240LINE 241:exe string(middle)
2293023123223323423523623723823924024124224324424524624748495051:normal zt
line 240                                
line 241                                
line 242                                
line 243                                
line 244                                
line 245                                
line 246                                
line 247                                
line 248                                
line 249                                
line 250                                
line 251                                
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        line 252
line 253
line 254
line 255
line 256
line 257
line 258
line 259
line 260
line 261
line 262:normal M
:" Execute the following two command at once to reproduce the problem.
:setl scb | wincmd p
:setl scb
:wincmd w
:let topLineLeft = line('w0')
:wincmd p
:let topLineRight = line('w0')
:setl noscrollbind
:wincmd p
:setl noscrollbind
:q!
LINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINE:%del _
~~~~~~~~~~~~~~~~~~~~~~
--No lines in buffer--:call setline(1, 'Difference between the top lines (left - right): ' . string(t

opLineLeft - topLineRight))
Difference between the top lines (left - right): 0:w! test.out
"test.out" [New File] 1 line, 51 characters written:brewind
"test98.in" 43 lines, 908 characters:normal M:" Execute the following two command at once to reproduce the problem.
:setl scb | wincmd p
:setl scb
:wincmd w
:let topLineLeft = line('w0')
:wincmd p
:let topLineRight = line('w0')
:setl noscrollbind
:wincmd p
:setl noscrollbind
:q!
:%del _
:call setline(1, 'Difference between the top lines (left - right): ' . string(toopLineLeft - topLineRight))
:w! test.out
:brewind
ENDTESTSTARTTEST
:qa!
ENDTEST/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 1 line, 5 characters written:set ff& cpo+=A



/ENDTEST
:so! Xdotest
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test98 = test61; then \
#	  if diff test.out test98.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test98.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test98.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test99.failed test.ok test.out X* viminfo
cp test99.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test99.in
[?1h="test99.in" 69 lines, 1400 charactersTests for regexp with multi-byte encoding and various magic settings.
Test matchstr() with a count and multi-byte chars.
See test44 for exactly the same test with re=1.

STARTTEST
:so mbyte.vim
:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
:set re=2
/^1
/a*b\{2}c\+/e
x/\Md\*e\{2}f\+/e
x:set nomagic
/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$
x:set magic
/\v(a)(b)\2\1\1/e
x/\V[ab]\(\[xy]\)\1
x:" Now search for multi-byte without composing char
/ม
x:" Now search for multi-byte with composing char
f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with multi-byte encoding and various magic settings./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 43 lines, 931 characters written:set ff& cpo+=A
/ENDTEST:" l Test what 7.3.192 fixed
/^l
:s/ \?/ /g
:?^1?,$w! test.out
:e! test.out
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
:so! Xdotest
:so mbyte.vim
:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
:" l Test what 7.3.192 fixed
/^l
:s/ \?/ /g
:?^1?,$w! test.out
:e! test.out
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
:" Test \%u, [\u] and friends
/\%u20ac

/[\u4f7f\u5929]\+

/\%U12345678

/[\U1234abcd\u1234\uabcd]

/\%d21879b

:" Test backwards search from a multi-byte char
/x

:"
:" l Test what 7.3.192 fixed
/^l

2 d dd dee deeff
3 g gg ghh ghhii
4 j jj jkk jkkll
5 m mm mnn mnnoo
#@/bin/sh -c "if test -f test.out -a test99 = test61; then \
#	  if diff test.out test99.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test99.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test99.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test103.failed test.ok test.out X* viminfo
cp test103.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test103.in
[?1h="test103.in" 37 lines, 823 charactersTest for visual mode not being reset causing E315 error.
STARTTEST
:so small.vim
:enew
:let g:msg="Everything's fine."
:function! TriggerTheProblem()
:" At this point there is no visual selection because :call reset it.
:" Let's restore the selection:
:normal gv
:'<,'>del _
:try
:exe "normal \<Esc>"
:catch /^Vim\%((\a\+)\)\=:E315/
:echom 'Snap! E315 error!'
:let g:msg='Snap! E315 error!'
:endtry
:endfunction
:enew
:setl buftype=nofile
:call append(line('$'), 'Delete this line.')
:"
:"
:" NOTE: this has to be done by a call to a function because executing :del the:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for visual mode not being reset causing E315 error./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 29 lines, 723 characters written:set ff& cpo+=A
/ENDTEST









:"ex-way will require the colon operator which resets the visual mode thuus
:"preventing the problem:
:"
GV:call TriggerTheProblem()
:%del _
:call append(line('$'), g:msg)
:w! test.out
:brewind
ENDTEST

:so! Xdotest
:so small.vim
:enew
~~~~~~~~~~~~
~~~~~~~~~
~:let g:msg="Everything's fine."
:function! TriggerTheProblem()

:  :^I" At this point there is no visual selection because :call reset it.

:  :^I" Let's restore the selection:

:  :^Inormal gv

:  :^I'<,'>del _

:  :^Itry

:    :^I^Iexe "normal \<Esc>"

:    :^Icatch /^Vim\%((\a\+)\)\=:E315/

:    :^I^Iechom 'Snap! E315 error!'

:    :^I^Ilet g:msg='Snap! E315 error!'

:    :^Iendtry

:  :endfunction
~
~
~
~
~
~
~
~
~
~:enew
:setl buftype=nofile
:call append(line('$'), 'Delete this line.')
Delete this line.:"
:"
:" NOTE: this has to be done by a call to a function because executing :del the
:"       ex-way will require the colon operator which resets the visual mode th

us:"       preventing the problem:
:"

Delete this line. 
:'<,'>call TriggerTheProblem()
~:%del _
--No lines in buffer--:call append(line('$'), g:msg)
Everything's fine.:w! test.out
"test.out" [New File] 2 lines, 20 characters written:brewind
"test103.in" 37 lines, 823 characters:endtry
:endfunction:enew
:setl buftype=nofile
:call append(line('$'), 'Delete this line.')
:"
:"
:" NOTE: this has to be done by a call to a function because executing :del the
:"ex-way will require the colon operator which resets the visual mode thuus
:"preventing the problem:
:"
GV:call TriggerTheProblem()
:%del _
:call append(line('$'), g:msg)
:w! test.out
:brewind
ENDTESTSTARTTEST
:qa!
ENDTEST/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 1 line, 5 characters written:set ff& cpo+=A



/ENDTEST
:so! Xdotest
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test103 = test61; then \
#	  if diff test.out test103.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test103.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test103.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test104.failed test.ok test.out X* viminfo
cp test104.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test104.in
[?1h="test104.in" 30 lines, 698 charactersTests for :let.  vim: set ft=vim ts=8 :

STARTTEST
:so small.vim
:set runtimepath+=./sautest
:" Test to not autoload when assigning.  It causes internal error.
:try
:  let Test104#numvar = function('tr')
:  $put ='OK: ' . string(Test104#numvar)
:catch
:  $put ='FAIL: ' . v:exception
:endtry
:let a = 1
:let b = 2
:for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0  == 1 ? "a" : "b"}']
:  try
:    redir => messages
:    execute 'let' letargs
:    redir END
:    $put ='OK:'
:    $put =split(substitute(messages, '\n', '\0  ', 'g'), '\n')
:  catch:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :let.  vim: set ft=vim ts=8 :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 24 lines, 618 characters written:set ff& cpo+=A
/ENDTEST





:    $put ='FAIL: ' . v:exception
:    redir END
:  endtry
:endfor
:/^Results/,$wq! test.out
ENDTEST

:so! Xdotest
:so small.vim
:set runtimepath+=./sautest
:" Test to not autoload when assigning.  It causes internal error.
:try

:  :  let Test104#numvar = function('tr')

:  :  $put ='OK: ' . string(Test104#numvar)

:  :catch

:  :  $put ='FAIL: ' . v:exception

:  :endtry
:catch
:  $put ='FAIL: ' . v:exception
:endtry
:let a = 1
:let b = 2
:for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0  == 1 ? "a" : "b"}']
:  try:    redir => messages
:    execute 'let' letargsEND$put ='OK:'$put =split(substitute(messages, '\n', '\0  ', 'g'), '\n')
:  catch'FAIL: ' . v:exception  redir END
:  endtryendfor/^Results/,$wq! test.out
ENDTESTResults of test104:
OK: function('tr')
:let a = 1
:let b = 2
:for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0

== 1 ? "a" : "b"}']
:  :  try

:    :    redir => messages

:    :    execute 'let' letargs

a#1

b#2

:    :    redir END

:    :    $put ='OK:'

:    :    $put =split(substitute(messages, '\n', '\0  ', 'g'), '\n')

:    :  catch

:    :    $put ='FAIL: ' . v:exception

:    :    redir END

:    :  endtry

:  :endfor

b#2

b#2

a#1

a#1

b#2

Press ENTER or type command to continue:/^Results/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 13 lines, 244 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test104 = test61; then \
#	  if diff test.out test104.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test104.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test104.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test107.failed test.ok test.out X* viminfo
cp test107.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test107.in
[?1h="test107.in" 38 lines, 717 charactersTests for adjusting window and contents     vim: set ft=vim :

STARTTEST
:so small.vim
:new
:call setline(1, range(1,256))
:let r=[]
:func! GetScreenStr(row)
:   let str = ""
:   for c in range(1,3)
:let str .= nr2char(screenchar(a:row, c))
:   endfor
:   return str
:endfunc
:
:exe ":norm! \<C-W>t\<C-W>=1Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p
:call add(r, [line("w0"), s3])
:
:exe ":norm! \<C-W>t\<C-W>=50Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for adjusting window and contents     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 32 lines, 628 characters written:set ff& cpo+=A
/ENDTEST












:call add(r, [line("w0"), s3])
:
:exe ":norm! \<C-W>t\<C-W>=59Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
::wincmd p
:call add(r, [line("w0"), s3])
:
:bwipeout!
:$put=r
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
ENDTEST

:so! Xdotest
:so small.vim
:new
~~~~
~~~~~
~
[No Name]                                                                       :wincmd pcall add(r, [line("w0"), s3])bwipeout!
:$put=rcall garbagecollect(1)
:"/^start:/,$wq! test.out
ENDTESTtest107.in                                                                      :call setline(1, range(1,256))
1
2
3
4
5
6
7
8
9
10
11[+]:let r=[]
:func! GetScreenStr(row)

:  :   let str = ""

:  :   for c in range(1,3)

:    :       let str .= nr2char(screenchar(a:row, c))

:    :   endfor

:  :   return str

:  :endfunc
1
2
3
4
5
6::exe ":norm! \<C-W>t\<C-W>=1Gzt\<C-W>w\<C-W>+"
[No Name] [+]                                                                   :let s3=GetScreenStr(1)test107.in                                                                      :let s3=GetScreenStr(1)
:wincmd p
[No Name] [+]                                                                   test107.in                                                                      :call add(r, [line("w0"), s3])
::exe ":norm! \<C-W>t\<C-W>=50Gzt\<C-W>w\<C-W>+"
50
51
52
53
54
55
56
57
58
59
[No Name] [+]                                                                   :let s3=GetScreenStr(1)
::wincmd p
:call add(r, [line("w0"), s3])
:
:bwipeout!
:$put=r
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
ENDTEST

test107.in                                                                      

:let s3=GetScreenStr(1)
:wincmd p
[No Name] [+]                                                                   test107.in                                                                      :call add(r, [line("w0"), s3])
::exe ":norm! \<C-W>t\<C-W>=59Gzt\<C-W>w\<C-W>+"
59
60
61
62
63
64
65
66
67
68
[No Name] [+]                                                                   :let s3=GetScreenStr(1)
::wincmd p
:call add(r, [line("w0"), s3])
:
:bwipeout!
:$put=r
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
ENDTEST

test107.in                                                                      

:let s3=GetScreenStr(1)
::wincmd p
[No Name] [+]                                                                   test107.in                                                                      :call add(r, [line("w0"), s3])
::bwipeout!
::exe ":norm! \<C-W>t\<C-W>=1Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p
:call add(r, [line("w0"), s3])
::exe ":norm! \<C-W>t\<C-W>=50Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p
:call add(r, [line("w0"), s3])
:exe ":norm! \<C-W>t\<C-W>=59Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
::wincmd pcall add(r, [line("w0"), s3])bwipeout!
:$put=rcall garbagecollect(1)
:":/^start:/,$wq! test.out
ENDTEST:$put=r
3 more lines



start:
[1, '1  ']
[50, '50 ']
[59, '59 ']3 more lines:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 4 lines, 42 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test107 = test61; then \
#	  if diff test.out test107.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test107.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test107.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test108.failed test.ok test.out X* viminfo
cp test108.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test108.in
[?1h="test108.in" 88 lines, 1329 charactersTests for backtrace debug commands.     vim: set ft=vim :

STARTTEST
:so small.vim
:lang mess C
:function! Foo()
:   let var1 = 1
:   let var2 = Bar(var1) + 9
:   return var2
:endfunction
:
:function! Bar(var)
:    let var1 = 2 + a:var
:    let var2 = Bazz(var1) + 4
:    return var2
:endfunction
:
:function! Bazz(var)
:    let var1 = 3 + a:var
:    let var3 = "another var"
:    return var1
:endfunction
:new:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for backtrace debug commands.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 83 lines, 1251 characters written:set ff& cpo+=A
/ENDTESTup
b
echo "fil is not frame or finish, it is file"
fil
echo "\n- relative backtrace movement\n"
fr -1
frame
fra +1
fram
echo "\n- go beyond limits does not crash\n"
fr 100
fra
frame -40
fram
echo "\n- final result 19:"
cont
:0debuggreedy
:redir END
:$put =out
:w! test.out
:qa!
ENDTEST


:so! Xdotest
:so small.vim
:lang mess C
:function! Foo()

:  :   let var1 = 1

:  :   let var2 = Bar(var1) + 9

:  :   return var2

:  :endfunction
up
b
echo "fil is not frame or finish, it is file"
fil
::function! Bar(var)

:  :    let var1 = 2 + a:var

:  :    let var2 = Bazz(var1) + 4

:  :    return var2

:  :endfunction
up
b
echo "fil is not frame or finish, it is file"
fil
::function! Bazz(var)

:  :    let var1 = 3 + a:var

:  :    let var3 = "another var"

:  :    return var1

:  :endfunction
up
b
echo "fil is not frame or finish, it is file"
fil
:new
~~~~~~~~~~
[No Name]                                                                       echo "\n- final result 19:"
cont:0debuggreedy
:redir END$put =out
:w! test.out
:qa!ENDTESTtest108.in                                                                      :debuggreedy
:redir => out
:debug echo Foo()
Entering Debug mode.  Type "cont" to continue.

cmd: echo Foo()

>step

function Foo

line 1: let var1 = 1

>step

function Foo

line 2: let var2 = Bar(var1) + 9

>step

function Foo[2]..Bar

line 1: let var1 = 2 + a:var

>step

function Foo[2]..Bar

line 2: let var2 = Bazz(var1) + 4

>step

function Foo[2]..Bar[2]..Bazz

line 1: let var1 = 3 + a:var

>step

function Foo[2]..Bar[2]..Bazz

line 2: let var3 = "another var"

>echo "- show backtrace:\n"

- show backtrace:

>backtrace

  2 function Foo[2]

  1 Bar[2]

->0 Bazz

line 2: let var3 = "another var"

>echo "\nshow variables on different levels:\n"


show variables on different levels:

>echo var1

6
>up

>back

  2 function Foo[2]

->1 Bar[2]

  0 Bazz

line 2: let var3 = "another var"

>echo var1

3
>u

>bt

->2 function Foo[2]

  1 Bar[2]

  0 Bazz

line 2: let var3 = "another var"

>echo var1

1
>echo "\n- undefined vars:\n"


- undefined vars:

>step

function Foo[2]..Bar[2]..Bazz

line 3: return var1

>frame 2

>echo "undefined var3 on former level:"

undefined var3 on former level:

>echo var3

Error detected while processing function Foo[2]..Bar[2]..Bazz:

line    3:

E121: Undefined variable: var3

E15: Invalid expression: var3

>fr 0

>echo "here var3 is defined with \"another var\":"

here var3 is defined with "another var":

>echo var3

another var

>step

function Foo[2]..Bar[2]..Bazz

line 3: End of function

>step

function Foo[2]..Bar

line 3: return var2

>step

function Foo[2]..Bar

line 3: End of function

>up

>echo "\nundefined var2 on former level"


undefined var2 on former level

>echo var2

Error detected while processing function Foo[2]..Bar:

line    3:

E121: Undefined variable: var2

E15: Invalid expression: var2

>down

>echo "here var2 is defined with 10:"

here var2 is defined with 10:

>echo var2

10

>echo "\n- backtrace movements:\n"


- backtrace movements:

>b

  1 function Foo[2]

->0 Bar

line 3: End of function

>echo "\nnext command cannot go down, we are on bottom\n"


next command cannot go down, we are on bottom

>down

frame is zero

>up

>echo "\nnext command cannot go up, we are on top\n"


next command cannot go up, we are on top

>up

frame at highest level: 1

>b

->1 function Foo[2]

  0 Bar

line 3: End of function

>echo "fil is not frame or finish, it is file"

fil is not frame or finish, it is file

>fil

"[No Name]" --No lines in buffer--

>echo "\n- relative backtrace movement\n"


- relative backtrace movement

>fr -1

>frame

  1 function Foo[2]

->0 Bar

line 3: End of function

>fra +1

>fram

->1 function Foo[2]

  0 Bar

line 3: End of function

>echo "\n- go beyond limits does not crash\n"


- go beyond limits does not crash

>fr 100

frame at highest level: 1

>fra

->1 function Foo[2]

  0 Bar

line 3: End of function

>frame -40

frame is zero

>fram

  1 function Foo[2]

->0 Bar

line 3: End of function

>echo "\n- final result 19:"


- final result 19:

>cont

19

Press ENTER or type command to continue:0debuggreedy
~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       fram
echo "\n- final result 19:"
cont
:0debuggreedy
:redir END
:$put =out
:w! test.out
:qa!
ENDTEST

test108.in                                                                      :redir END
:$put =out
83 more lines->1 function Foo[2]
  0 Bar
line 3: End of function
frame is zero
  1 function Foo[2]
->0 Bar
line 3: End of function- final result 19:
19[+]:w! test.out
"test.out" [New File] 84 lines, 1390 characters writtentest.out     :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test108 = test61; then \
#	  if diff test.out test108.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test108.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test108.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_autocmd_option.failed test.ok test.out X* viminfo
cp test_autocmd_option.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autocmd_option.in
[?1h="test_autocmd_option.in" 77 lines, 2954 charactersTest for option autocommand

STARTTEST
:so small.vim
:if !has("eval") || !has("autocmd") || !exists("+autochdir") | e! test.ok | w! ttest.out | qa! | endif
:fu! AutoCommand(match)
:let c=g:testcase
:let item=remove(g:options, 0)
:let c.=printf("Expected: Name: <%s>, Oldval: <%s>, NewVal: <%s>, Scope:  <%s>\n", item[0], item[1], item[2], item[3])
:let c.=printf("Autocmd Option: <%s>,", a:match)
:let c.=printf(" OldVal: <%s>,", v:option_old)
:let c.=printf(" NewVal: <%s>,", v:option_new)
:let c.=printf(" Scope: <%s>\n", v:option_type)
:call setreg('r', printf("%s\n%s", getreg('r'), c))
:endfu
:au OptionSet * :call AutoCommand(expand("<amatch>"))
:let g:testcase="1: Setting number option\n"
:let g:options=[['number', 0, 1, 'global']]
:set nu
:let g:testcase="2: Setting local number option\n"
:let g:options=[['number', 1, 0, 'local']]:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for option autocommand/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 72 lines, 2896 characters written:set ff& cpo+=A
/ENDTEST:let g:testcase="13: Setting option backspace through setbufvar()\n"
:let g:options=[['backup', '', '1', 'local']]
: "try twice, first time, shouldn't trigger because option name is invalid, secoond time, it should trigger
:call setbufvar(1, '&l:bk', 1)
: "should trigger, use correct option name
:call setbufvar(1, '&backup', 1)
:let g:testcase="14: Setting number option using setwinvar\n"
:let g:options=[['number', 0, 1, 'local']]
:call setwinvar(0, '&number', 1)
:" Write register now, because next test shouldn't output anything.
:$put r
:let @r=''
:let g:testcase="\n15: Setting key option, shouldn't trigger\n"
:let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
:setlocal key=blah
:setlocal key=
:$put =g:testcase
:$put r
:/^dummy text/,$w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
:if !has("eval") || !has("autocmd") || !exists("+autochdir") | e! test.ok | w! 

test.out | qa! | endif
:let g:testcase="13: Setting option backspace through setbufvar()\n"
:fu! AutoCommand(match)

:  :^Ilet c=g:testcase

:  :       let item=remove(g:options, 0)

:  :       let c.=printf("Expected: Name: <%s>, Oldval: <%s>, NewVal: <%s>, Sco

pe: <%s>\n", item[0], item[1], item[2], item[3])

:  :       let c.=printf("Autocmd Option: <%s>,", a:match)

:  :       let c.=printf(" OldVal: <%s>,", v:option_old)

:  :       let c.=printf(" NewVal: <%s>,", v:option_new)

:  :       let c.=printf(" Scope: <%s>\n", v:option_type)

:  :       call setreg('r', printf("%s\n%s", getreg('r'), c))

:  :endfu
:let g:testcase="13: Setting option backspace through setbufvar()\n"
:let g:options=[['backup', '', '1', 'local']]
: "try twice, first time, shouldn't trigger because option name is invalid, secoond time, it should trigger
:call setbufvar(1, '&l:bk', 1)
: "should trigger, use correct option name
:call setbufvar(1, '&backup', 1)
:let g:testcase="14: Setting number option using setwinvar\n"
:let g:options=[['number', 0, 1, 'local']]
:call setwinvar(0, '&number', 1)
:au OptionSet * :call AutoCommand(expand("<amatch>"))
:let g:testcase="1: Setting number option\n"
:let g:options=[['number', 0, 1, 'global']]
:set nu
     56 :let g:testcase="13: Setting option backspace through setbufvar()\n"
     57 :let g:options=[['backup', '', '1', 'local']]
     58 : "try twice, first time, shouldn't trigger because option name is invallid, second time, it should trigger
     59 :call setbufvar(1, '&l:bk', 1)
     60 : "should trigger, use correct option name
     61 :call setbufvar(1, '&backup', 1)
     62 :let g:testcase="14: Setting number option using setwinvar\n"
     63 :let g:options=[['number', 0, 1, 'local']]
     64 :call setwinvar(0, '&number', 1)
     65 :" Write register now, because next test shouldn't output anything.
     66 :$put r
     67 :let @r=''
     68 :let g:testcase="\n15: Setting key option, shouldn't trigger\n"
     69 :let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
     70 :setlocal key=blah
     71 :setlocal key=
     72 :$put =g:testcase
     73 :$put r
     74 :/^dummy text/,$w! test.out
     75 :qa!
     76 ENDTEST
     77 dummy text:let g:testcase="2: Setting local number option\n"
:let g:options=[['number', 1, 0, 'local']]
:setlocal nonu
:let g:testcase="13: Setting option backspace through setbufvar()\n":let g:options=[['backup', '', '1', 'local']]: "try twice, first time, shouldn't trigger because option name is invalid, secoond time, it should trigger:call setbufvar(1, '&l:bk', 1): "should trigger, use correct option name:call setbufvar(1, '&backup', 1):let g:testcase="14: Setting number option using setwinvar\n":let g:options=[['number', 0, 1, 'local']]:call setwinvar(0, '&number', 1):" Write register now, because next test shouldn't output anything.:$put r:let @r='':let g:testcase="\n15: Setting key option, shouldn't trigger\n":let g:options=[['key', 'invalid', 'invalid1', 'invalid']]:setlocal key=blah:setlocal key=:$put =g:testcase:$put r:/^dummy text/,$w! test.out:qa!ENDTESTdummy text:let g:testcase="3: Setting global number option\n"
:let g:options=[['number', 1, 0, 'global']]
:setglobal nonu
:let g:testcase="4: Setting local autoindent option\n"
:let g:options=[['autoindent', 0, 1, 'local']]
:setlocal ai
:let g:testcase="5: Setting global autoindent option\n"
:let g:options=[['autoindent', 0, 1, 'global']]
:setglobal ai
:let g:testcase="6: Setting global autoindent option\n"
:let g:options=[['autoindent', 1, 0, 'global']]
:set ai!
: Should not print anything, use :noa
E492: Not an editor command: Should not print anything, use :noa:noa :set nonu
:let g:testcase="7: Setting several global list and number option\n"
:let g:options=[['list', 0, 1, 'global'], ['number', 0, 1, 'global']]
:set list nu
     56 :let g:testcase="13: Setting option backspace through setbufvar()\n"$
     57 :let g:options=[['backup', '', '1', 'local']]$
     58 : "try twice, first time, shouldn't trigger because option name is invallid, second time, it should trigger$
     59 :call setbufvar(1, '&l:bk', 1)$
     60 : "should trigger, use correct option name$
     61 :call setbufvar(1, '&backup', 1)$
     62 :let g:testcase="14: Setting number option using setwinvar\n"$
     63 :let g:options=[['number', 0, 1, 'local']]$
     64 :call setwinvar(0, '&number', 1)$
     65 :" Write register now, because next test shouldn't output anything.$
     66 :$put r$
     67 :let @r=''$
     68 :let g:testcase="\n15: Setting key option, shouldn't trigger\n"$
     69 :let g:options=[['key', 'invalid', 'invalid1', 'invalid']]$
     70 :setlocal key=blah$
     71 :setlocal key=$
     72 :$put =g:testcase$
     73 :$put r$
     74 :/^dummy text/,$w! test.out$
     75 :qa!$
     76 ENDTEST$
     77 dummy text$:noa set nolist nonu
:let g:testcase="13: Setting option backspace through setbufvar()\n":let g:options=[['backup', '', '1', 'local']]: "try twice, first time, shouldn't trigger because option name is invalid, secoond time, it should trigger:call setbufvar(1, '&l:bk', 1): "should trigger, use correct option name:call setbufvar(1, '&backup', 1):let g:testcase="14: Setting number option using setwinvar\n":let g:options=[['number', 0, 1, 'local']]:call setwinvar(0, '&number', 1):" Write register now, because next test shouldn't output anything.:$put r:let @r='':let g:testcase="\n15: Setting key option, shouldn't trigger\n":let g:options=[['key', 'invalid', 'invalid1', 'invalid']]:setlocal key=blah:setlocal key=:$put =g:testcase:$put r:/^dummy text/,$w! test.out:qa!ENDTESTdummy text:let g:testcase="8: Setting global acd\n"
:let g:options=[['autochdir', 0, 1, 'global']]
:setlocal acd
:let g:testcase="9: Setting global autoread\n"
:let g:options=[['autoread', 0, 1, 'global']]
:set ar
:let g:testcase="10: Setting local autoread\n"
:let g:options=[['autoread', 0, 1, 'local']]
:setlocal ar
:let g:testcase="11: Setting global autoread\n"
:let g:options=[['autoread', 1, 0, 'global']]
:setglobal invar
:let g:testcase="12: Setting option backspace through :let\n"
:let g:options=[['backspace', '', 'eol,indent,start', 'global']]
:let &bs="eol,indent,start"
:let g:testcase="13: Setting option backspace through setbufvar()\n"
:let g:options=[['backup', '', '1', 'local']]
: "try twice, first time, shouldn't trigger because option name is invalid, sec

ond time, it should trigger
:let g:testcase="13: Setting option backspace through setbufvar()\n"
:call setbufvar(1, '&l:bk', 1)
E355: Unknown option: l:bk: "should trigger, use correct option name
:call setbufvar(1, '&backup', 1)
:let g:testcase="14: Setting number option using setwinvar\n"
:let g:options=[['number', 0, 1, 'local']]
:call setwinvar(0, '&number', 1)
     56 :let g:testcase="13: Setting option backspace through setbufvar()\n"
     57 :let g:options=[['backup', '', '1', 'local']]
     58 : "try twice, first time, shouldn't trigger because option name is invallid, second time, it should trigger
     59 :call setbufvar(1, '&l:bk', 1)
     60 : "should trigger, use correct option name
     61 :call setbufvar(1, '&backup', 1)
     62 :let g:testcase="14: Setting number option using setwinvar\n"
     63 :let g:options=[['number', 0, 1, 'local']]
     64 :call setwinvar(0, '&number', 1)
     65 :" Write register now, because next test shouldn't output anything.
     66 :$put r
     67 :let @r=''
     68 :let g:testcase="\n15: Setting key option, shouldn't trigger\n"
     69 :let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
     70 :setlocal key=blah
     71 :setlocal key=
     72 :$put =g:testcase
     73 :$put r
     74 :/^dummy text/,$w! test.out
     75 :qa!
     76 ENDTEST
     77 dummy text:" Write register now, because next test shouldn't output anything.
:$put r
60 more lines117Autocmd Option: <autoread>, OldVal: <0>, NewVal: <1>, Scope: <global>11811910: Setting local autoread    120 Expected: Name: <autoread>, Oldval: <0>, NewVal: <1>, Scope: <local>121Autocmd Option: <autoread>, OldVal: <1>, NewVal: <1>, Scope: <local>12212311: Setting global autoread124Expected: Name: <autoread>, Oldval: <1>, NewVal: <0>, Scope: <global>125Autocmd Option: <autoread>, OldVal: <1>, NewVal: <0>, Scope: <global>12612712: Setting option backspace through :let128Expected: Name: <backspace>, Oldval: <>, NewVal: <eol,indent,start>, Scoope: <global>129Autocmd Option: <backspace>, OldVal: <>, NewVal: <eol,indent,start>, Scoope: <global>131313: Setting option backspace through setbufvar()13Expected: Name: <backup>, Oldval: <>, NewVal: <1>, Scope: <local>13Autocmd Option: <backup>, OldVal: <0>, NewVal: <1>, Scope: <local>131314: Setting number option using setwinvar13xpected: Name: <number>, Oldval: <0>, NewVal: <1>, Scope: <local>13Autocmd Option: <number>, OldVal: <0>, NewVal: <1>, Scope: <local>:let @r=''
:let g:testcase="\n15: Setting key option, shouldn't trigger\n"
:let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
:setlocal key=blah
:setlocal key=
:$put =g:testcase


    138 
    139 15: Setting key option, shouldn't trigger
:$put r

    140 
:/^dummy text/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 64 lines, 2700 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_autocmd_option = test61; then \
#	  if diff test.out test_autocmd_option.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_autocmd_option.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autocmd_option.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_autoformat_join.failed test.ok test.out X* viminfo
cp test_autoformat_join.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autoformat_join.in
[?1h="test_autoformat_join.in" 23 lines, 524 charactersTests for setting the '[,'] marks when joining lines.

STARTTEST
:so small.vim
:/^\t\t/
0gqj:
:let a=string(getpos("'[")).'/'.string(getpos("']"))
:/^This line/;'}-join
:let b=string(getpos("'[")).'/'.string(getpos("']"))
:$put ='First test: Start/End '.string(a)
:$put ='Second test: Start/End '.string(b)
:/^\t\t/,$wq! test.out
ENDTESTO sodales, ludite, vos qui
attamen consulite per voster honur. Tua pulchra facies me fay planszer milies

This line.
Should be joined with the next line
and with this line

Results::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for setting the '[,'] marks when joining lines./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 9 lines, 265 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:/^\t\t/
attamen consulite per voster honur.
Tua pulchra facies me fay planszer milies::let a=string(getpos("'[")).'/'.string(getpos("']"))
:/^This line/;'}-join


This line.  Should be joined with the next line and with this line


~
~:let b=string(getpos("'[")).'/'.string(getpos("']"))
:$put ='First test: Start/End '.string(a)
First test: Start/End '[0, 16, 1, 0]/[0, 17, 1, 0]'
:$put ='Second test: Start/End '.string(b)
Second test: Start/End '[0, 19, 11, 0]/[0, 19, 67, 0]'
:/^\t\t/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 8 lines, 292 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_autoformat_join = test61; then \
#	  if diff test.out test_autoformat_join.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_autoformat_join.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autoformat_join.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_breakindent.failed test.ok test.out X* viminfo
cp test_breakindent.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_breakindent.in
[?1h="test_breakindent.in" 122 lines, 3678 charactersTest for breakindent

STARTTEST
:so small.vim
:if !exists("+breakindent") | e! test.ok | w! test.out | qa! | endif
:10new|:vsp|:vert resize 20
:put =\"\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP\"
:set ts=4 sw=4 sts=4 breakindent
:fu! ScreenChar(line, width)
:let c=''
:for i in range(1,a:width)
:let c.=nr2char(screenchar(a:line, i))
:endfor
:let c.="\n"
:for i in range(1,a:width)
:let c.=nr2char(screenchar(a:line+1, i))
:endfor
:let c.="\n"
:for i in range(1,a:width)
:let c.=nr2char(screenchar(a:line+2, i))
:endfor
:return c
:endfu:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for breakindent/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 117 lines, 3627 characters written:set ff& cpo+=A
/ENDTEST:$put =line2
:"
:let g:test="Test 14: breakindent + visual blockwise delete #1"
:set all& breakindent viminfo+=nviminfo
:30vnew
:normal! 3a1234567890
:normal! a    abcde
:exec "normal! 0\<C-V>tex"
:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
:"
:let g:test="Test 15: breakindent + visual blockwise delete #2"
:%d
:normal! 4a1234567890
:exec "normal! >>\<C-V>3f0x"
:let line1=ScreenChar(line('.'),20)
:call DoRecordScreen()
:quit!
:"
:%w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
:if !exists("+breakindent") | e! test.ok | w! test.out | qa! | endif
:10new|:vsp|:vert resize 20
            ||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            ~~~~~~~~~[No Name]                                                  %dnormal! 4a1234567890
:exec "normal! >>\<C-V>3f0x"
:let line1=ScreenChar(line('.'),20)
:call DoRecordScreen()quit!"%w! test.out
:qaENDTEST
dummy text
test_breakindent.in                                                             :put =\"\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP\"
        abcdefghijkl
mnopqrstuvwxyzABCDEF
GHIJKLMNOP          [+] abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP[+]:set ts=4 sw=4 sts=4 breakindent
abcdefghijklmnop
qrstuvwxyzABCDEFGHIJ
KLMNOP    abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP:fu! ScreenChar(line, width)

:  :^Ilet c=''

:  :^Ifor i in range(1,a:width)

:    :^I^Ilet c.=nr2char(screenchar(a:line, i))

:    :^Iendfor

:  :       let c.="\n"

:  :^Ifor i in range(1,a:width)

:    :^I^Ilet c.=nr2char(screenchar(a:line+1, i))

:    :^Iendfor

:  :       let c.="\n"

:  :^Ifor i in range(1,a:width)

:    :^I^Ilet c.=nr2char(screenchar(a:line+2, i))

:    :^Iendfor

:  :^Ireturn c

:  :endfu
|
    abcdefghijklmnop|
qrstuvwxyzABCDEFGHIJ|
KLMNOP|||||||~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP~~~~~~~~[No Name] [+]                                              :%d
:normal! 4a1234567890
:exec "normal! >>\<C-V>3f0x":fu DoRecordScreen()

:  :^Iwincmd l

:  :^I$put =printf(\"\n%s\", g:test)

:  :^I$put =g:line1

:  :^Iwincmd p

:  :endfu
|
    abcdefghijklmnop|
qrstuvwxyzABCDEFGHIJ|
KLMNOP||
~                   abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP~~~:set briopt=min:0
    qrstuvwxyzABCDEF
    GHIJKLMNOP:let g:test="Test 1: Simple breakindent"
:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                    
Test 1: Simple break
indent              
    abcd            
    qrst            
    GHIJ            Test 1: Simple breakindent    abcd    qrst    GHIJ:let g:test="Test 2: Simple breakindent + sbr=>>"
:set sbr=>>
>>qrstuvwxyzABCD
    >>EFGHIJKLMNOP


>>indent:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                           Test 1: Simple breakindent                                     abcd                                                       qrst                                                       GHIJ                                                   ~                                                          ~                                                          ~                                                                                                                                                                                Test 2: Simple breakindent + sbr=>>    abcd>>qr>>EF3 more lines:let g:test ="Test 3: Simple breakindent + briopt:sbr"
:set briopt=sbr,min:0 sbr=++
++  qrstuvwxyzABCDEF
++  GHIJKLMNOP    


++:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                           Test 2: Simple breakindent + sbr=>>                            abcd                                                       >>qr                                                       >>EF                                                                                                                                                                                                                                                                                                                                                          Test 3: Simple breakindent + briopt:sbrabcd++  qrst++  GHIJ3 more lines:let g:test ="Test 4: Simple breakindent + min width: 18"
:set sbr= briopt=min:18
  qrstuvwxyzABCDEFGH
  IJKLMNOP    


indent  :let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                           Test 3: Simple breakindent + briopt:sbr                        abcd                                                   ++  qrst                                                   ++  GHIJ                                                                                                                                                                                                                                                                                                                                                          Test 4: Simple breakindent + min width: 18abcdqrstuvIJKLMN3 more lines:let g:test =" Test 5: Simple breakindent + shift by 2"
:set briopt=shift:2,min:0
    qrstuvwxyzABCD
      EFGHIJKLMNOP


  indent:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                           Test 4: Simple breakindent + min width: 18                     abcd                                                     qrstuv                                                     IJKLMN                                                                                                                                                                                                                                                                                                                                                          Test 5: Simple breakindent + shift by 2abcdqrEF3 more lines:let g:test=" Test 6: Simple breakindent + shift by -1"
:set briopt=shift:-1,min:0
qrstuvwxyzABCDEFG
   HIJKLMNOP      


indent  :let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                            Test 5: Simple breakindent + shift by 2                       abcd                                                         qr                                                         EF                                                                                                                                                                                                                                                                                                                                                          Test 6: Simple breakindent + shift by -1abcdqrstuHIJKL3 more lines:let g:test=" Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr"
:set briopt=shift:1,sbr,min:0 nu sbr=? nuw=4
  1 
  2     abcdefghijkl
?        mnopqrstuvw
?        xyzABCDEFGH
?IJKLMNOP
  3                 
  4 Test 1: Simple b
?    reakindent
  5     abcd
  6     qrst:let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
3 more lines                                                            Test 6: Simple breakindent + shift by -1                      abcd                                                      qrstu                                                      HIJKL                                                                                                                                                                                                                                                                                                                                                          Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr2     ab?m?x3 more lines:let g:test=" Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr"
:set briopt=shift:1,sbr,min:0 nu sbr=# list
$^Iabcdefghijklmn
#      opqrstuvwxyzA
#      BCDEFGHIJKLMN
#      OP$       $

#$$$:let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
3 more lines                                                            Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr   2     ab                                                 ?        m                                                 ?        x                                                                                                                                                                                                                                                                                                                                                        Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr2 ^Iabcd#      opq#      BCD3 more lines:let g:test=" Test 9: breakindent + shift by +1 + 'nu' + sbr=# list"
:set briopt-=sbr
       #opqrstuvwxyz
       #ABCDEFGHIJKL
       #MNOP$


     #reakindent$:let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
3 more lines                                                            Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr  2 ^Iabcd                                                 #      opq                                                 #      BCD                                                                                                                                                                                                                                                                                                                                                        Test 9: breakindent + shift by +1 + 'nu' + sbr=# list2 ^Iabcd#op#AB3 more lines:let g:test=" Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n"
:set cpo+=n sbr=~ nu nuw=4 nolist briopt=sbr,min:0
     abcdefghijkl
~       mnopqrstuvwx
~       yzABCDEFGHIJ
~       KLMNOP 

~   reakindent     :let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
3 more lines                                                            Test 9: breakindent + shift by +1 + 'nu' + sbr=# list       2 ^Iabcd                                                        #op                                                        #AB                                                                                                                                                                                                                                                                                                                                                        Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n2     ab~mn~yz3 more lines:wincmd p
[No Name] [+]        [No Name] [+]                                              :let g:test="\n Test 11: strdisplaywidth when breakindent is on"
:set cpo-=n sbr=>> nu nuw=4 nolist briopt= ts=4
    >>
    >>
    >>


    >>reakindent 44  Test 9: breakindent + shift by +1 + 'nu' + sbr=# list 45   2 ^Iabcd 46        #op 47        #AB 48  49  Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+    >>=n 50   2     ab 51 ~       mn 52 ~       yz:let text=getline(2) "skip leading tab when calculating text width
:let width = strlen(text[1:])+indent(2)*4+strlen(&sbr)*3 " text wraps 3 times
:$put =g:test
 46        #op                                              47        #AB                                              48                                                         49  Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+    >>=n                                                    50   2     ab                                              51 ~       mn                                              52 ~       yz                                                                                                                                                                    53  54  Test 11: strdisplaywidth when breakindent is on:$put =printf(\"strdisplaywidth: %d == calculated: %d\", strdisplaywidth(text),

width)
  1 | 47 #AB89Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+  >>=n50  2     ab1~       mn2yz34Test 11: strdisplaywidth when breakindent is on5strdisplaywidth: 46 == calculated: 64:let g:str="\t\t\t\t\t{"
:let g:test=" Test 12: breakindent + long indent"
:wincmd p
[No Name] [+]        [No Name] [+]                                              :set all& breakindent linebreak briopt=min:10 nu numberwidth=3 ts=4
 1 |
 2 |abcdefghijklm|nopqrstuvwxyz|ABCDEFGHIJKLM|NOP|
 3 |
 4 Test 1: Simple   |
   breakindent      |
 5     abcd|
[No Name]             47 #AB 48  49  Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n 50   2     ab 51 ~mn 52 ~yz 53  54  Test 11: strdisplaywidth when breakindent is on 55 strdisplaywidth: 46 == calculated: 64[No Name]                                                  :%d
:normal! 4a1234567890
:exec "normal! >>\<C-V>3f0x"
:let line1=ScreenChar(line('.'),20)
:call DoRecordScreen()
:quit!
:"
:%w! test.out
:qa!
ENDTEST
dummy text
test_breakindent.in                                                             :$put =g:str
54Test 11:
    strdisplaywidth
    when            
    breakindent is  
    on              
55 strdisplaywidth:
   46 ==
   calculated: 64
56            
             {[+][+]56                  
             {      
                    
                    
                    
                    
                    
                    
                    
                    ~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   :let line1=ScreenChar(1,10)
:wincmd p
[No Name] [+]        [No Name] [+]                                              :call DoRecordScreen()
3 more lines57                  
58  Test 12:        
    breakindent +   
    long indent     
59 56               
60                  
61 ~                

[No Name] [+]         52 ~       yz                                              53                                                         54  Test 11: strdisplaywidth when breakindent is on        55 strdisplaywidth: 46 == calculated: 64                                                                                                                                                                                                                                                                                                                                                                                     56 { 57  58  Test 12: breakindent + long indent 59 56 60  61 ~[No Name] [+]                                              3 more lines:"
:" Test, that the string "    a\tb\tc\td\te" is correctly
:" displayed in a 20 column wide window (see bug report
:" https://groups.google.com/d/msg/vim_dev/ZOdg2mc9c9Y/TT8EhFjEy0IJ
:only
   {57 8Test 12: breakindent + long indent956       60           61 ~         ~~~~~~~~~~~~~~~~:vert 20new
 1||||||||||||||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            56 {57 58  Test 12: breakindent + long indent59 5660 61 ~~~~~~~~~~~~~~~~~[No Name] [+]                                              :set all& nocp breakindent briopt=min:10
||||||||||||||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            56 {57 58  Test 12: breakindent + long indent59 5660 61 ~~~~~~~~~~~~~~~~~[No Name] [+]                                              :call setline(1, ["    a\tb\tc\td\te", "    z   y       x       w       v"])
a   bc
        d   e       
    z   y       x   
        w       v   [+]:/^\s*a
search hit BOTTOM, continuing at TOPa   :let line1 = @0
:?^\s*z
search hit TOP, continuing at BOTTOMz   :let line2 = @0
:quit!
56              {57 58  Test 12: breakindent + long indent59 56    60           61 ~         ~:$put ='Test 13: breakindent with wrapping Tab'
62 Test 13: breakindent with wrapping Tab:$put =line1
63 d:$put =line2
64 w:"
:let g:test="Test 14: breakindent + visual blockwise delete #1"
:set all& breakindent viminfo+=nviminfo
{

 Test 12: breakindent + long indent
56

~
Test 13: breakindent with wrapping Tab
d
w
~
~
~
~
~
~
~
~
~
~
~
~
~
~:30vnew
||||||||||||||||||||||~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
[No Name]                       { Test 12: breakindent + long indent56~Test 13: breakindent with wrapping Tabdw~~~~~~~~~~~~~[No Name]                                        :normal! 3a1234567890
123456789012345678901234567890[+]:normal! a    abcde
    abcde                     :exec "normal! 0\<C-V>tex"
e                             
~                             :let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more linesTest 14: breakindent + visual blockwise delete #1e~~[+]:"
:let g:test="Test 15: breakindent + visual blockwise delete #2"
:%d
 --No lines in buffer--:normal! 4a1234567890
123456789012345678901234567890
1234567890                    :exec "normal! >>\<C-V>3f0x"
        1234567890            
~                             :let line1=ScreenChar(line('.'),20)
:call DoRecordScreen()
3 more linesTest 15: breakindent + visual blockwise delete #2 1234567890~~:quit!
strdisplaywidth: 46 == calculated: 64                               { Test 12: breakindent + long indent
56                  ~         Test 13: breakindent with wrapping Tab
dwTest 14: breakindent + visual blockwise delete #1
e       ~       ~       Test 15: breakindent + visual blockwise delete #2
        1234567890  ~                   ~                   ~:"
:%w! test.out
"test.out" [New] 74L, 1210C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_breakindent = test61; then \
#	  if diff test.out test_breakindent.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_breakindent.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_breakindent.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_changelist.failed test.ok test.out X* viminfo
cp test_changelist.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_changelist.in
[?1h="test_changelist.in" 22 lines, 288 charactersTest changelist position after splitting window
Set 'undolevels' to make changelist for sourced file

STARTTEST
:so small.vim
Gkylp:set ul=100
Gylp:set ul=100
gg
:vsplit
:try
:  normal g;
:  normal ggVGcpass^[
:catch
:  normal ggVGcfail^[
:finally
:  %w! test.out
:endtry
:qa!
ENDTEST

1
2
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test changelist position after splitting window/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 14 lines, 163 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim


11:set ul=100

22:set ul=100

:vsplit
|
 window                                 |
Set 'undolevels' to make changelist for |
sourced file|
             |
STARTTEST       |
:so small.vim  |
Gkylp:set ul=100|
Gylp:set ul=100|
gg  |
:vsplit     |
:try                 |
:  normal g;|pass|
:catch  |
:  normal ggVGcfail^[|
:finally|
:  %w! test.out|
:endtry|
:qa!|
ENDTEST|
  |
test_changelist.in [+]                   Test changelist position after splitting windowSet 'undolevels' to make changelist forsourced fileSTARTTEST:so small.vimGkylp:set ul=100Gylp:set ul=100gg:vsplit:try:  normal g;:  normal ggVGcpass^[:catch:  normal ggVGcfail^[:finally:  %w! test.out:endtry:qa!ENDTESTtest_changelist.in [+]                 :try

:  :  normal g;

:  :  normal ggVGcpass
21 fewer lines
:  

:  :catch

:  :  normal ggVGcfail

:  

:  :finally

:  :  %w! test.out

"test.out" [New File] 1 line, 5 characters written

:  :endtry
pass||||||||||~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                          pass~~~~~~~~~~~~~~~~~~~~~   :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_changelist = test61; then \
#	  if diff test.out test_changelist.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_changelist.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_changelist.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_close_count.failed test.ok test.out X* viminfo
cp test_close_count.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_close_count.in
[?1h="test_close_count.in" 153 lines, 2665 charactersTests for :[count]close! and :[count]hide     vim: set ft=vim :

STARTTEST
:so small.vim
:let tests = []
:for i in range(5)
:new
:endfor
:4wincmd w
:close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:$close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
:2close!:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :[count]close! and :[count]hide     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 41 lines, 749 characters written:set ff& cpo+=A
/ENDTEST:call add(tests, buffers)
:2wincmd w
:+1close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(0, map(copy(tests), 'join(v:val, " ")'))
:w
:only!
:b1
ENDTEST

STARTTEST
:let tests = []
:for i in range(5)
:new
:endfor
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:4wincmd w
:.hide
:so! Xdotest
:so small.vim
:let tests = []
:for i in range(5)

:  :new

:  :endfor
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ENDTEST

test_close_count.in                                                             :4wincmd w
[No Name]                                                                       [No Name]                                                                       :close!
~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :b1
ENDTEST

test_close_count.in                                                             :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       test_close_count.in                                                             :call add(tests, buffers)
:1close!
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :only!
:b1
ENDTEST

STARTTEST
test_close_count.in                                                             


:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:$close!
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :2close!
~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :new
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :new
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :2wincmd w
[No Name]                                                                       [No Name]                                                                       :-1close!
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:2wincmd w
[No Name]                                                                       [No Name]                                                                       :+1close!
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
"test.out" [New File]test.out :call append(0, map(copy(tests), 'join(v:val, " ")'))
6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5[+]:w
"test.out" [New File] 7 lines, 39 characters written   :only!
6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5~~~~~~~
~~:b1
"test_close_count.in" 153 lines, 2665 characters:2wincmd w
:+1close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(0, map(copy(tests), 'join(v:val, " ")'))
:w
:only!
:b1
ENDTESTSTARTTEST
:let tests = []
:for i in range(5)
:new
:endfor
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:4wincmd w
:.hide
:let buffers = []/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 44 lines, 815 characters written:set ff& cpo+=A
/ENDTEST:2wincmd w
:+hide
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
Go^[
:w
:only!
:b1
ENDTEST

STARTTEST
:let tests = []
:set hidden
:for i in range(5)
:new
:endfor
:1wincmd w
:$ hide
:let buffers = []
:windo call add(buffers, bufnr('%'))
:so! Xdotest
:let tests = []
:for i in range(5)

:  :new

:  :endfor
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ENDTEST

test_close_count.in                                                             :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       test_close_count.in                                                             :call add(tests, buffers)
:4wincmd w
[No Name]                                                                       test_close_count.in                                                             :.hide
~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :b1
ENDTEST

test_close_count.in                                                             :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       test_close_count.in                                                             :call add(tests, buffers)
:1hide
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :only!
:b1
ENDTEST

STARTTEST
test_close_count.in                                                             


:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:$hide
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :2hide
~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :new
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :new
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :3wincmd w
[No Name]                                                                       [No Name]                                                                       :-hide
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:2wincmd w
[No Name]                                                                       [No Name]                                                                       :+hide
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
"test.out" 7 lines, 39 characters6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5test.out :call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
13 12 11 10 9 1
13 12 11 9 1
12 11 9 1
12 11 9[+]


12 9
15 12 9
15 12


:w
"test.out" 15 lines, 106 characters written   :only!
6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 513 12 11 10 9 1
13 12 11 9 1
12 11 9 1
12 11 912 915 12 9
15 12~~~~~~
~~:b1
:+hide:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
Go^[
:w:only!:b1ENDTESTSTARTTEST
:let tests = []
:set hidden
:for i in range(5)
:new
:endfor
:1wincmd w
:$ hide
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
"test_close_count.in" line 93 of 153 --60%-- col 1/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 25 lines, 448 characters written:set ff& cpo+=A
/ENDTEST:1wincmd w
:.+close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
Go^[
:w
:only!
:b1
ENDTEST

STARTTEST
:let tests = []
:set hidden
:for i in range(5)
:new
:endfor
:4wincmd w
^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:so! Xdotest
:let tests = []
:set hidden
:for i in range(5)

:  :new

:  :endfor
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ENDTEST

test_close_count.in                                                             :1wincmd w
:$ hide
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:$-1 close!
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :.+close!
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:e! test.out
"test.out" 15 lines, 106 characters6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5
test.out :call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
[+]15 12 915 120 19 18 17 16
20 19 18 16
20 18 16



:w
"test.out" 19 lines, 143 characters written   :only!
6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5

13 12 11 10 9 1
13 12 11 9 1
12 11 9 1
12 11 9
12 9
15 12 9
15 12

20 19 18 17 16
20 19 18 16
20 18 16

~
~
~
~:b1
:.+close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
Go^[
:w:only!:b1ENDTESTSTARTTEST
:let tests = []
:set hidden
:for i in range(5)
:new:endfor:4wincmd w
^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
"test_close_count.in" line 121 of 153 --79%-- col 1/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 28 lines, 511 characters written:set ff& cpo+=A
/ENDTEST


















1^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
9^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
2^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:only!
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
:w
:qa!
ENDTEST

:so! Xdotest
:let tests = []
:set hidden
:for i in range(5)

:  :new

:  :endfor
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ENDTEST

test_close_count.in                                                             :4wincmd w
[No Name]                                                                       [No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :qa!
ENDTEST

test_close_count.in                                                             :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       test_close_count.in                                                             :call add(tests, buffers)
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
:w
:qa!
ENDTEST

test_close_count.in                                                             


:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       ~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:only!
~
~~:e! test.out
"test.out" line 19 of 19 --100%-- col 16 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 513 12 11 10 9 1
13 12 11 9 1
12 11 9 1
12 11 9
12 9
15 12 9
15 1220 19 18 17 16
20 19 18 16
20 18 16:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
25 24 23 21 1
24 23 21 1
24 23 21
24 21:w
"test.out" 23 lines, 183 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_close_count = test61; then \
#	  if diff test.out test_close_count.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_close_count.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_close_count.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_comparators.failed test.ok test.out X* viminfo
cp test_comparators.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_comparators.in
[?1h="test_comparators.in" 21 lines, 283 characters" Test for expression comparators.   vim: set ft=vim :


STARTTEST
:so small.vim
:try
:  let oldisident=&isident
:  set isident+=#
:  if 1 is#1
:    $put ='ok'
:  else
:    $put ='ng'
:  endif
:finally
:  let &isident=oldisident
:endtry
:"
:/^marker/+1,$wq! test.out
ENDTEST

marker
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
" Test for expression comparators.   vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 14 lines, 200 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:try

:  :  let oldisident=&isident

:  :  set isident+=#

:  :  if 1 is#1

:    :    $put ='ok'

:    :  else

:    :    $put ='ng'

:    :  endif

:  :finally

:  :  let &isident=oldisident

:  :endtry
" Test for expression comparators.   vim: set ft=vim :


STARTTEST
:so small.vim
:try
:  let oldisident=&isident
:  set isident+=#
:  if 1 is#1
:    $put ='ok'ok

:"
:/^marker/+1,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 1 line, 3 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_comparators = test61; then \
#	  if diff test.out test_comparators.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_comparators.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_comparators.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_erasebackword.failed test.ok test.out X* viminfo
cp test_erasebackword.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_erasebackword.in
[?1h="test_erasebackword.in" 19 lines, 427 charactersTest for erasing backword

STARTTEST
:so small.vim
:so mbyte.vim
:set encoding=utf-8
G
:/^test/,$w! test.out
:qa!
ENDTEST

test starts here:

~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for erasing backword/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 12 lines, 362 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:so mbyte.vim
:set encoding=utf-8
Test for erasing backword

STARTTEST
:so small.vim
:so mbyte.vim
:set encoding=utf-8
G
o wwwこんにちわ世界ワールドvim ^W^[
o wwwこんにちわ世界ワールドvim ^W^W^[
o wwwこんにちわ世界ワールドvim ^W^W^W^[
o wwwこんにちわ世界ワールドvim ^W^W^W^W^[
o wwwこんにちわ世界ワールドvim ^W^W^W^W^W^[
o wwwこんにちわ世界ワールドvim ^W^W^W^W^W^W^[
:/^test/,$w! test.out
:qa!
ENDTEST

test starts here:

~
~
~
~


 wwwこんにちわ世界ワールド
 wwwこんにちわ世界ワール
 wwwこんにちわ世界ワール
 wwwこんにちわ世界ワール
wwwこんにちわ世界ワール
wwwこんにちわ世界ワール
:/^test/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 8 lines, 111 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_erasebackword = test61; then \
#	  if diff test.out test_erasebackword.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_erasebackword.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_erasebackword.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_eval.failed test.ok test.out X* viminfo
cp test_eval.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_eval.in
[?1h="test_eval.in" 247 lines, 6201 charactersTest for various eval features.   vim: set ft=vim :

Note: system clipboard is saved, changed and restored.

clipboard contents
something else

STARTTEST
:so small.vim
:set encoding=latin1
:set noswapfile
:lang C
:fun AppendRegContents(reg)
  call AppendRegParts(a:reg, getregtype(a:reg), getreg(a:reg), string(getreg(a:rreg, 0, 1)), getreg(a:reg, 1), string(getreg(a:reg, 1, 1)))
:endfun
:fun AppendRegParts(reg, type, cont, strcont, cont1, strcont1)
  call append('$', printf('%s: type %s; value: %s (%s), expr: %s (%s)', a:reg, aa:type, a:cont, a:strcont, a:cont1, a:strcont1))
endfun
:command -nargs=? AR :call AppendRegContents(<q-args>)
:fun SetReg(...)
    call call('setreg', a:000):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for various eval features.   vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 233 lines, 6010 characters written:set ff& cpo+=A
/ENDTEST:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]
:unlet nn
:let b:nn = 4
:$put =str[b:nn:]
:$put =str[:b:nn]
:$put =str[b:nn:b:nn]
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start:
:so! Xdotest
:so small.vim
:set encoding=latin1
:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]
:unlet nn
:let b:nn = 4
:$put =str[b:nn:]
:$put =str[:b:nn]
:$put =str[b:nn:b:nn]
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start::set noswapfile
:lang C
:fun AppendRegContents(reg)

:    call AppendRegParts(a:reg, getregtype(a:reg), getreg(a:reg), string(getreg

(a:reg, 0, 1)), getreg(a:reg, 1), string(getreg(a:reg, 1, 1)))

:  :endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n:fun AppendRegParts(reg, type, cont, strcont, cont1, strcont1)

:    call append('$', printf('%s: type %s; value: %s (%s), expr: %s (%s)', a:re

g, a:type, a:cont, a:strcont, a:cont1, a:strcont1))

:  endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n:command -nargs=? AR :call AppendRegContents(<q-args>)
:fun SetReg(...)

:      call call('setreg', a:000)

:      call append('$', printf('{{{2 setreg(%s)', string(a:000)[1:-2]))

:      call AppendRegContents(a:1)

:      if a:1 isnot# '='

:            execute "silent normal! Go==\n==\e\"".a:1."P"

:        endif

:  endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]:fun ErrExe(str)

:      call append('$', 'Executing '.a:str)

:      try

:            execute a:str

:        catch

:            $put =v:exception

:        endtry

:  endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]:fun Test()

:  $put ='{{{1 let tests'

:  let @" = 'abc'

:  AR "

:  let @" = "abc\n"

:  AR "

:  let @" = "abc\<C-m>"

:  AR "

:  let @= = '"abc"'

:  AR =

:  

:  $put ='{{{1 Basic setreg tests'

:  call SetReg('a', 'abcA', 'c')

:  call SetReg('b', 'abcB', 'v')

:  call SetReg('c', 'abcC', 'l')

:  call SetReg('d', 'abcD', 'V')

:  call SetReg('e', 'abcE', 'b')

:  call SetReg('f', 'abcF', "\<C-v>")

:  call SetReg('g', 'abcG', 'b10')

:  call SetReg('h', 'abcH', "\<C-v>10")

:  call SetReg('I', 'abcI')

:  

:  $put ='{{{1 Appending single lines with setreg()'

:  call SetReg('A', 'abcAc', 'c')

:  call SetReg('A', 'abcAl', 'l')

:  call SetReg('A', 'abcAc2','c')

:  call SetReg('b', 'abcBc', 'ca')

:  call SetReg('b', 'abcBb', 'ba')

:  call SetReg('b', 'abcBc2','ca')

:  call SetReg('b', 'abcBb2','b50a')

:  

:  call SetReg('C', 'abcCl', 'l')

:  call SetReg('C', 'abcCc', 'c')

:  call SetReg('D', 'abcDb', 'b')

:  

:  call SetReg('E', 'abcEb', 'b')

:  call SetReg('E', 'abcEl', 'l')

:  call SetReg('F', 'abcFc', 'c')

:  

:  $put ='{{{1 Appending NL with setreg()'

:  call setreg('a', 'abcA2', 'c')

:  call setreg('b', 'abcB2', 'v')

:  call setreg('c', 'abcC2', 'l')

:  call setreg('d', 'abcD2', 'V')

:  call setreg('e', 'abcE2', 'b')

:  call setreg('f', 'abcF2', "\<C-v>")

:  call setreg('g', 'abcG2', 'b10')

:  call setreg('h', 'abcH2', "\<C-v>10")

:  call setreg('I', 'abcI2')

:  

:  call SetReg('A', "\n")

:  call SetReg('B', "\n", 'c')

:  call SetReg('C', "\n")

:  call SetReg('D', "\n", 'l')

:  call SetReg('E', "\n")

:  call SetReg('F', "\n", 'b')

:  

:  $put ='{{{1 Setting lists with setreg()'

:  call SetReg('a', ['abcA3'], 'c')

:  call SetReg('b', ['abcB3'], 'l')

:  call SetReg('c', ['abcC3'], 'b')

:  call SetReg('d', ['abcD3'])

:  call SetReg('e', [1, 2, 'abc', 3])

:  call SetReg('f', [1, 2, 3])

:  

:  $put ='{{{1 Appending lists with setreg()'

:  call SetReg('A', ['abcA3c'], 'c')

:  call SetReg('b', ['abcB3l'], 'la')

:  call SetReg('C', ['abcC3b'], 'lb')

:  call SetReg('D', ['abcD32'])

:  

:  call SetReg('A', ['abcA32'])

:  call SetReg('B', ['abcB3c'], 'c')

:  call SetReg('C', ['abcC3l'], 'l')

:  call SetReg('D', ['abcD3b'], 'b')

:  

:  $put ='{{{1 Appending lists with NL with setreg()'

:  call SetReg('A', ["\n", 'abcA3l2'], 'l')

:  call SetReg('B', ["\n", 'abcB3c2'], 'c')

:  call SetReg('C', ["\n", 'abcC3b2'], 'b')

:  call SetReg('D', ["\n", 'abcD3b50'],'b50')

:  

:  $put ='{{{1 Setting lists with NLs with setreg()'

:  call SetReg('a', ['abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4

-4-2"])

:  call SetReg('b', ['abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\na

bcB4c-4-2"], 'c')

:  call SetReg('c', ['abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\na

bcC4l-4-2"], 'l')

:  call SetReg('d', ['abcD4b-0', "\n", "abcD4b-2\n", "\nabcD4b-3", "abcD4b-4\na

bcD4b-4-2"], 'b')

:  call SetReg('e', ['abcE4b10-0', "\n", "abcE4b10-2\n", "\nabcE4b10-3", "abcE4

b10-4\nabcE4b10-4-2"], 'b10')

:  

:  $put ='{{{1 Search and expressions'

:  call SetReg('/', ['abc/'])

:  call SetReg('/', ["abc/\n"])

:  call SetReg('=', ['"abc/"'])

:  call SetReg('=', ["\"abc/\n\""])

:  $put ='{{{1 System clipboard'

:  if has('clipboard')

:    " Save and restore system clipboard.

:    " If no connection to X-Server is possible, test should succeed.

:    let _clipreg = ['*', getreg('*'), getregtype('*')]

:    let _clipopt = &cb

:    let &cb='unnamed'

:    5y

:    AR *

:    tabdo :windo :echo "hi"

:    6y

:    AR *

:    let &cb=_clipopt

:    call call('setreg', _clipreg)

:    else

:      call AppendRegParts('*', 'V', "clipboard contents\n", "['clipboard conte

nts']", "clipboard contents\n", "['clipboard contents']")

:      call AppendRegParts('*', 'V', "something else\n", "['something else']", 

"something else\n", "['something else']")

:    endif

:  $put ='{{{1 Errors'

:  call ErrExe('call setreg()')

:  call ErrExe('call setreg(1)')

:  call ErrExe('call setreg(1, 2, 3, 4)')

:  call ErrExe('call setreg([], 2)')

:  call ErrExe('call setreg(1, {})')

:  call ErrExe('call setreg(1, 2, [])')

:  call ErrExe('call setreg("/", ["1", "2"])')

:  call ErrExe('call setreg("=", ["1", "2"])')

:  call ErrExe('call setreg(1, ["", "", [], ""])')

:  endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]
:unlet nn
:let b:nn = 4
:$put =str[b:nn:]
:$put =str[:b:nn]
:$put =str[b:nn:b:nn]
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start::"
:call Test()
hi*: type V; value: something else^@ (['something else']), expr: something else^@  (['something else'])
{{{1 Errors
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)
Vim(call):E118: Too many arguments for function: setreg
Executing call setreg([], 2)
Vim(call):E730: using List as a String
Executing call setreg(1, {})
Vim(call):E731: using Dictionary as a String
Executing call setreg(1, 2, [])
Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore lines
Executing call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a String
:"
:delfunction SetReg
:delfunction AppendRegContents
:delfunction ErrExe
:delfunction Test
:delcommand AR
:call garbagecollect(1)
:"
:" function name not starting with capital
:try

:  :func! g:test()

:  :echo "test"

:  :endfunc

:  :catch

:  :$put =v:exception

:  :endtry
{{{1 Errors
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)8: Too many arguments for function: setreg[], 2)730: using List as a String1, {}1Dictionary as a String2, [])0List as a String"/", ["1", "2"])883: search pattern and expression register may not contain two or moore linesExecuting call setreg("=", ["1", "2"])Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg(1, ["", "", [], ""])Vim(call):E730: using List as a String
Vim(function):E128: Function name must start with a capital or "s:": g:test()~

:"
:" function name includes a colon
:try

:  :func! b:test()

:  :echo "test"

:  :endfunc

:  :catch

:  :$put =v:exception

:  :endtry
{{{1 Errors
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)Vim(function):E128: Function name must start with a capital or "s:": b:test()
:"
:" function name folowed by #
:try

:  :func! test2() "#

:  :echo "test2"

:  :endfunc

:  :catch

:  :$put =v:exception

:  :endtry
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)
Vim(call):E118: Too many arguments for function: setreg
Executing call setreg([], 2)Vim(call):E730: using List as a String
Executing call setreg(1, {})Vim(call):E731: using Dictionary as a String
Executing call setreg(1, 2, [])Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a Stringfunction):E128: Function name must start with a capital or "s:": g:test()btest2() "#
:"
:" function name starting with/without "g:", buffer-local funcref.
:function! g:Foo(n)

:  :  $put ='called Foo(' . a:n . ')'

:  :endfunction
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
:let b:my_func = function('Foo')
:call b:my_func(1)

called Foo(1)
:echo g:Foo(2)
0
called Foo(2)
:echo Foo(3)
0
called Foo(3)
:"
:" script-local function used in Funcref must exist.
:so test_eval_func.vim




s:Testje exists: 0
func s:Testje exists: 1
Bar exists: 1
func Bar exists: 1
:"
:" Using $ instead of '$' must give an error
:try

:  : call append($, 'foobar')

:  :catch

:  :$put =v:exception

:  :endtry
Executing call setreg(1, {})
Vim(call):E731: using Dictionary as a String
Executing call setreg(1, 2, [])
Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a Stringfunction):E128: Function name must start with a capital or "s:": g:test()btest2() "#
called Foo(123
s:Testje exists: 0
func s:Testje exists: 1
Bar exists: 1func Bar exists: 1
Vim(call):E116: Invalid arguments for function append
:"
:$put ='{{{1 getcurpos/setpos'

{{{1 getcurpos/setpos
/^012345678
search hit BOTTOM, continuing at TOP:let b:nn = 4
:$put =str[b:nn:]
:$put =str[:b:nn]
:$put =str[b:nn:b:nn]
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start:
{{{1 let tests
": type v; value: abc (['abc']), expr: abc (['abc'])
": type V; value: abc^@ (['abc']), expr: abc^@ (['abc'])
": type V; value: abc^M^@ (['abc^M']), expr: abc^M^@ (['abc^M'])
=: type v; value: abc (['abc']), expr: "abc" (['"abc"'])
{{{1 Basic setreg tests
{{{2 setreg('a', 'abcA', 'c')
a: type v; value: abcA (['abcA']), expr: abcA (['abcA'])
search hit BOTTOM, continuing at TOP012345:let sp = getcurpos()

:call setpos('.', sp)
:$put
Executing call setreg(1, 2, [])
Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore lines
Executing call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore lines
Executing call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a String
Vim(function):E128: Function name must start with a capital or "s:": g:test()
Vim(function):E128: Function name must start with a capital or "s:": b:test()
Vim(function):E128: Function name must start with a capital or "s:": test2() "#
called Foo(1)
called Foo(2)
called Foo(3)
s:Testje exists: 0
func s:Testje exists: 1
Bar exists: 1
func Bar exists: 1
Vim(call):E116: Invalid arguments for function append
{{{1 getcurpos/setpos
6
:"
:" substring and variable name
:let str = 'abcdef'
:let n = 3
:$put =str[n:]

def
:$put =str[:n]

abcd
:$put =str[n:n]

d
:unlet n
:let nn = 3
:$put =str[nn:]


def
~

:$put =str[:nn]
abcd
:$put =str[nn:nn]

d
:unlet nn
:let b:nn = 4
:$put =str[b:nn:]


ef
~

:$put =str[:b:nn]
abcde
:$put =str[b:nn:b:nn]

e
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 362 lines, 11279 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_eval = test61; then \
#	  if diff test.out test_eval.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_eval.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_eval.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_fixeol.failed test.ok test.out X* viminfo
cp test_fixeol.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_fixeol.in
[?1h="test_fixeol.in" 40 lines, 780 charactersTests for 'fixeol'vim: set ft=vim :

STARTTEST
:" use Unix fileformat for consistency
:set ff=unix
:enew!
awith eol^[:w! XXEol
:enew!
:set noeol nofixeol
awithout eol^[:w! XXNoEol
:set eol fixeol
:bwipe XXEol XXNoEol
:"
:" try editing files with 'fixeol' disabled
:e! XXEol
ostays eol^[:set nofixeol
:w! XXTestEol
:e! XXNoEol
ostays without^[:set nofixeol
:w! XXTestNoEol
:bwipe XXEol XXNoEol XXTestEol XXTestNoEol
:set fixeol:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for 'fixeol'vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 35 lines, 698 characters written:set ff& cpo+=A
/ENDTEST















:"
:" Append "END" to each file so that we can see what the last written char was.
ggdGaEND^[:w >>XXEol
:w >>XXNoEol
:w >>XXTestEol
:w >>XXTestNoEol
:"
:" Concatenate the results
:e! test.out
a0^[:$r XXEol
:$r XXNoEol
Go1^[:$r XXTestEol
:$r XXTestNoEol
:w
:qa!
ENDTEST

~with eol:w! XXEol
"XXEol" [New File] 1 line, 9 characters written:enew!
:set noeol nofixeol
without eol:w! XXNoEol
"XXNoEol" [New File][Incomplete last line] 1 line, 11 characters written:set eol fixeol
:bwipe XXEol XXNoEol
"test_fixeol.in" 40 lines, 780 characters

2 buffers wiped out

Press ENTER or type command to continue:"
:w! XXTestEol
:e! XXNoEol
ostays without^[:set nofixeol
:w! XXTestNoEol
:bwipe XXEol XXNoEol XXTestEol XXTestNoEol
:set fixeol
:"
:" Append "END" to each file so that we can see what the last written char was.
ggdGaEND^[:w >>XXEol
:w >>XXNoEol
:w >>XXTestEol
:w >>XXTestNoEol
:"
:" Concatenate the results
:e! test.out
a0^[:$r XXEol
:$r XXNoEol
Go1^[:$r XXTestEol
:$r XXTestNoEol
:w
:qa!
ENDTEST
:" try editing files with 'fixeol' disabled
:e! XXEol
"XXEol" 1 line, 9 characterswith eol~~~~~~~~~~~~~~~~~~~~~
~
stays eol:set nofixeol
:w! XXTestEol
"XXTestEol" [New File] 2 lines, 19 characters written:e! XXNoEol
"XXNoEol" [Incomplete last line] 1 line, 11 charactersout eol~
stays without:set nofixeol
:w! XXTestNoEol
"XXTestNoEol" [New File][Incomplete last line] 2 lines, 25 characters written:bwipe XXEol XXNoEol XXTestEol XXTestNoEol
"test_fixeol.in" 40 lines, 780 characters

4 buffers wiped out

Press ENTER or type command to continue:set fixeol
:w! XXTestEol
:e! XXNoEol
ostays without^[:set nofixeol
:w! XXTestNoEol
:bwipe XXEol XXNoEol XXTestEol XXTestNoEol
:set fixeol
:"
:" Append "END" to each file so that we can see what the last written char was.
ggdGaEND^[:w >>XXEol
:w >>XXNoEol
:w >>XXTestEol
:w >>XXTestNoEol
:"
:" Concatenate the results
:e! test.out
a0^[:$r XXEol
:$r XXNoEol
Go1^[:$r XXTestEol
:$r XXTestNoEol
:w
:qa!
ENDTEST
:"
:" Append "END" to each file so that we can see what the last written char was.
Tests for 'fixeol'vim: set ft=vim :

STARTTEST
:" use Unix fileformat for consistency
:set ff=unix
:enew!
awith eol^[:w! XXEol
:enew!
:set noeol nofixeol
awithout eol^[:w! XXNoEol
:set eol fixeol
:bwipe XXEol XXNoEol
:"
:" try editing files with 'fixeol' disabled
:e! XXEol
ostays eol^[:set nofixeol~~~~~~~~~~~~~~~~~~~~~~
--No lines in buffer--END:w >>XXEol
"XXEol" 1 line, 4 characters appended:w >>XXNoEol
"XXNoEol" 1 line, 4 characters appended:w >>XXTestEol
"XXTestEol" 1 line, 4 characters appended:w >>XXTestNoEol
"XXTestNoEol" 1 line, 4 characters appended:"
:" Concatenate the results
:e! test.out
"test.out" [New File]0:$r XXEol
"XXEol" 2 lines, 13 characterswith eol
END:$r XXNoEol
"XXNoEol" 1 line, 15 characterswithout eolEND

1:$r XXTestEol
"XXTestEol" 3 lines, 23 characterswith eol
stays eol
END:$r XXTestNoEol
"XXTestNoEol" 2 lines, 29 characterswithout eol
stays withoutEND:w
"test.out" [New File] 10 lines, 84 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_fixeol = test61; then \
#	  if diff test.out test_fixeol.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_fixeol.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_fixeol.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_getcwd.failed test.ok test.out X* viminfo
cp test_getcwd.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_getcwd.in
[?1h="test_getcwd.in" 96 lines, 2374 charactersTests for getcwd(), haslocaldir(), and :lcdvim: set ft=vim :

STARTTEST
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xtopdir directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a swapfile in Xtopdir prevents it from being cleaned up.
:set noswapfile
:"
:function! GetCwdInfo(win, tab)
: let tab_changed = 0
: let mod = ":t"
: if a:tab > 0 && a:tab != tabpagenr()
:   let tab_changed = 1
:   exec "tabnext " . a:tab
: endif
: let bufname = fnamemodify(bufname(winbufnr(a:win)), mod)
: if tab_changed:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for getcwd(), haslocaldir(), and :lcdvim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 90 lines, 2273 characters written:set ff& cpo+=A
/ENDTEST:wincmd W
:lcd Xdir2
:call add(r, GetCwdInfo(0, 0))
:wincmd W
:lcd Xdir3
:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("x"), 0))
:call add(r, GetCwdInfo(bufwinnr("y"), 0))
:call add(r, GetCwdInfo(bufwinnr("z"), 0))
:let tp_nr = tabpagenr()
:tabrewind
:call add(r, GetCwdInfo(3, tp_nr))
:call add(r, GetCwdInfo(2, tp_nr))
:call add(r, GetCwdInfo(1, tp_nr))
:"
:call writefile(r, test_out, "a")
:q
:exec "cd " . cwd
:call delete("Xtopdir", "rf")
:qa!
ENDTEST



:so! Xdotest
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xtopdir directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a swapfile in Xtopdir prevents it from being cleaned up.
:set noswapfile
:"
:function! GetCwdInfo(win, tab)

:  : let tab_changed = 0

:  : let mod = ":t"

:  : if a:tab > 0 && a:tab != tabpagenr()

:    :   let tab_changed = 1

:    :   exec "tabnext " . a:tab

:    : endif

:  : let bufname = fnamemodify(bufname(winbufnr(a:win)), mod)

:  : if tab_changed

:    :   tabprevious

:    : endif

:  : if a:win == 0 && a:tab == 0

:    :   let dirname = fnamemodify(getcwd(), mod)

:    :   let lflag = haslocaldir()

:    : elseif a:tab == 0

:    :   let dirname = fnamemodify(getcwd(a:win), mod)

:    :   let lflag = haslocaldir(a:win)

:    : else

:    :   let dirname = fnamemodify(getcwd(a:win, a:tab), mod)

:    :   let lflag = haslocaldir(a:win, a:tab)

:    : endif

:  : return bufname . ' ' . dirname . ' ' . lflag

:  :endfunction
:wincmd W
:lcd Xdir2
:call add(r, GetCwdInfo(0, 0))
:wincmd W
:lcd Xdir3
:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("x"), 0))
:call add(r, GetCwdInfo(bufwinnr("y"), 0))
:call add(r, GetCwdInfo(bufwinnr("z"), 0))
:let tp_nr = tabpagenr()
:tabrewind
:call add(r, GetCwdInfo(3, tp_nr))
:call add(r, GetCwdInfo(2, tp_nr))
:call add(r, GetCwdInfo(1, tp_nr))
:"
:call writefile(r, test_out, "a")
:q
:exec "cd " . cwd
:call delete("Xtopdir", "rf")
:qa!
ENDTEST


:" On windows a stale "Xtopdir" directory may exist, remove it so that
:" we start from a clean state.
:call delete("Xtopdir", "rf")
:let r=[]
:new
~~~~~~~~~~
[No Name]                                                                       test_getcwd.in                                                                  :let cwd=getcwd()
:let test_out = cwd . '/test.out'
:call mkdir('Xtopdir')
:cd Xtopdir
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtopdir/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test_getcwd.in:call mkdir('Xdir1')
:call mkdir('Xdir2')
:call mkdir('Xdir3')
:new a
"a" [New File]~
~
~
~
~
~
a                                                                               ~
~
~
~
~
~
[No Name]                                                                       :q
:exec "cd " . cwd
:call delete("Xtopdir", "rf")
:qa!
ENDTEST

/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test_getcwd.in              :new b
"b" [New File]~
~
~
~
b                                                                               ~
~
~
~
a                                                                               ~
~
~
~
[No Name]                                                                       :call delete("Xtopdir", "rf")
:qa!
ENDTEST

/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test_getcwd.in              :new c
"c" [New File]~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       :qa!
ENDTEST

/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test_getcwd.in              :3wincmd w
c                                                                               a                                                                               :lcd Xdir1
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtopdir/Xdir1/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtopdir/c/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtopdir/b/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtopdir/a:call add(r, GetCwdInfo(0, 0))
:wincmd W
c                                                            b                                                                               a                                                                               :call add(r, GetCwdInfo(0, 0))
:wincmd W
c                                                                               b                                                                               :lcd Xdir3
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtopdir/Xdir3/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtopdir/c/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtopdir/b/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtopdir/a:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("a"), 0))
:call add(r, GetCwdInfo(bufwinnr("b"), 0))
:call add(r, GetCwdInfo(bufwinnr("c"), 0))
:wincmd W
c                                                                               b                                                            a                                                            /<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test_getcwd.in              :call add(r, GetCwdInfo(bufwinnr("a"), tabpagenr()))
:call add(r, GetCwdInfo(bufwinnr("b"), tabpagenr()))
:call add(r, GetCwdInfo(bufwinnr("c"), tabpagenr()))
:"
:tabnew x
"x" [New File] 5 /b/v/v/s/v/t/test_getcwd.in | x _____________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:new y
"y" [New File]2 y _Xy                                                                               x                                                                               :new z
"z" [New File] 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
~
~
~
z                                                                               ~
~
~
~
~
y                                                                               ~
~
~
~
~
x                                                                               :3wincmd w
z                                                                               x                                                                               x_X:call add(r, GetCwdInfo(0, 0))
:wincmd W
y                                                                               x                                                                               y_X:lcd Xdir2
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtopdir/Xdir2/b/v/v/s/v/t/X/y _X/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtopdir/z/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtopdir/y/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtopdir/x:call add(r, GetCwdInfo(0, 0))
:wincmd W
z ________________Xz                                                                               y                                                                               x                                                            :lcd Xdir3
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtopdir/Xdir3/b/v/v/s/v/t/X/z _X/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtopdir/z/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtopdir/y/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtopdir/x:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("x"), 0))
:call add(r, GetCwdInfo(bufwinnr("y"), 0))
:call add(r, GetCwdInfo(bufwinnr("z"), 0))
:let tp_nr = tabpagenr()
:tabrewind
 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       ENDTEST

/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test_getcwd.in              

:call add(r, GetCwdInfo(3, tp_nr))
 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       ENDTEST

/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test_getcwd.in              

:call add(r, GetCwdInfo(2, tp_nr))
 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       ENDTEST

/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test_getcwd.in              

:call add(r, GetCwdInfo(1, tp_nr))
 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       ENDTEST

/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test_getcwd.in              

:"
:call writefile(r, test_out, "a")
:q
 4 [No Name] | 3 z _____________________________________________________________X~
~
~
c                                                                               ~
~
~
~
b                                                                               ~
~
~
a                                                                               ~
~
~
~
[No Name]                                                                       :exec "cd " . cwd
/<<PKGBUILDDIR>>/src/vim-gtk3/testdirX/z _XXtopdir/cXtopdir/bXtopdir/a
:call delete("Xtopdir", "rf")
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_getcwd = test61; then \
#	  if diff test.out test_getcwd.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_getcwd.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_getcwd.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_insertcount.failed test.ok test.out X* viminfo
cp test_insertcount.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_insertcount.in
[?1h="test_insertcount.in" 14 lines, 204 charactersTests for repeating insert and replace.

STARTTEST
:so small.vim
:/Second
4gro
:/^First/,$wq! test.out
:" get here when failed and in Insert mode
^[:.wq! test.out
ENDTEST

First line
Second line
Last line
~
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for repeating insert and replace./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 6 lines, 111 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:/Second
ooooecond line
ooo
Las:/^First/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 3 lines, 36 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_insertcount = test61; then \
#	  if diff test.out test_insertcount.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_insertcount.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_insertcount.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_listchars.failed test.ok test.out X* viminfo
cp test_listchars.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listchars.in
[?1h="test_listchars.in" 54 lines, 705 charactersTests for 'listchars' display with 'list' and :list

STARTTEST
:so small.vim
:set ff=unix
:let g:lines = []
:function GetScreenCharsForLine(lnum)
:  return join(map(range(1, virtcol('$')), 'nr2char(screenchar(a:lnum, v:val))')), '')
:endfunction
:nnoremap <expr> GG ":call add(g:lines, GetScreenCharsForLine(".screenrow()."))\\<CR>"
:set listchars+=tab:>-,space:.,trail:<
:set list
:
/^start:/
:normal! jzt
GG
GG
GG
GG
GGH:
:set listchars-=trail:<:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for 'listchars' display with 'list' and :list/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 25 lines, 431 characters written:set ff& cpo+=A
/ENDTEST








GG
GG
GG
GG
GG:
:put =g:lines
:'[,']w! test.out
ENDTEST

:so! Xdotest
:so small.vim
:set ff=unix
:let g:lines = []
:function GetScreenCharsForLine(lnum)

:  :  return join(map(range(1, virtcol('$')), 'nr2char(screenchar(a:lnum, v:val

))'), '')

:  :endfunction
:endfunction
:nnoremap <expr> GG ":call add(g:lines, GetScreenCharsForLine(".screenrow()."))\\<CR>"
:nnoremap <expr> GG ":call add(g:lines, GetScreenCharsForLine(".screenrow()."))

\<CR>"
:endfunction
:set listchars+=tab:>-,space:.,trail:<
:set list
$.<expr>.GG.":call..\\<CR>"$
:set.$
:set.list$
:$$.jzt$
GG$
GG$
GG$
GG$
GGH:$
:set.$
GG$
GG$
GG$
GG$
GG:$
:put.$.$$
$:/^start:/

start:$
:normal! jzt
>-------aa>-----$
..bb>---<<$
...cccc><$
dd........ee<<>-$
<$
$
$
STARTTEST$
:set.listchars+=trail:<$
:set.nolist$
:$
/^start:/$
:redir!.>>.test.out$
:+1,$list$
:redir.END$
:q!$
ENDTEST$
$
start:$
..fff>--<<$
>-------gg>-----$
.....h>-$
iii<<<<><<$:call add(g:lines, GetScreenCharsForLine(1))

:call add(g:lines, GetScreenCharsForLine(2))

:call add(g:lines, GetScreenCharsForLine(3))

:call add(g:lines, GetScreenCharsForLine(4))

:call add(g:lines, GetScreenCharsForLine(5))
::set listchars-=trail:<
.....
.......>..:call add(g:lines, GetScreenCharsForLine(1))
:call add(g:lines, GetScreenCharsForLine(2))
:call add(g:lines, GetScreenCharsForLine(3))
:call add(g:lines, GetScreenCharsForLine(4))

:call add(g:lines, GetScreenCharsForLine(5))
::put =g:lines
10 more >-------aa>-----$$
..bb>---<<$$
...cccc><$$
dd........ee<<>-$$
<$$
>-------aa>-----$$
..bb>---..$$
...cccc>.$$
dd........ee..>-$$
.$$10 more lines:'[,']w! test.out
"test.out" [New File] 10 lines, 124 characters written/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 8 lines, 93 characters written:set ff& cpo+=A
/ENDTEST



:+1,$list$
:redir.END$
:q!$
ENDTEST$
$
:so! Xdotest
:set listchars+=trail:<
:set nolist
   >>  :/^start:/

start:
:redir! >> test.out
:+1,$list
..fff>--<<$

>-------gg>-----$

.....h>-$

iii<<<<><<$

Press ENTER or type command to continue:redir END
>-------aa>-----$
..bb>---..$
...cccc>.$
dd........ee..>-$
.$STARTTEST:set listchars+=trail:<
:set nolist
:
/^start:/
:redir! >> test.out+1,$listredir END
:q!ENDTESTstart:  fff
        ggh
iii   
:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_listchars = test61; then \
#	  if diff test.out test_listchars.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_listchars.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listchars.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_listlbr.failed test.ok test.out X* viminfo
cp test_listlbr.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr.in
[?1h="test_listlbr.in" 119 lines, 2868 charactersTest for linebreak and list option (non-utf8)

STARTTEST
:so small.vim
:if !exists("+linebreak") || !has("conceal") | e! test.ok | w! test.out | qa! |  endif
:10new|:vsp|:vert resize 20
:put =\"\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \"
:norm! zt
:set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
:fu! ScreenChar(width)
:let c=''
:for j in range(1,4)
:for i in range(1,a:width)
:let c.=nr2char(screenchar(j, i))
:endfor
:let c.="\n"
:endfor
:return c
:endfu
:fu! DoRecordScreen()
:wincmd l
:$put =printf(\"\n%s\", g:test):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for linebreak and list option (non-utf8)/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 114 lines, 2792 characters written:set ff& cpo+=A
/ENDTESTabcd{ef
ghijklm
no}pqrs^[2k0f{^V^Vc%^[
:"
:let g:test ="Test 11: using block replace mode after wrapping"
:$put =g:test
:set linebreak wrap
Go^[150aa^[yypk147|^Vjr0
:"
:let g:test ="Test 12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$":set list listchars=space:_,trail:-,tab:>-,eol:$
:$put =g:test
:let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
:if !exists("+linebreak") || !has("conceal") | e! test.ok | w! test.out | qa! |

endif
abcd{ef
:10new|:vsp|:vert resize 20
       ||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            ~~~~~~~~~[No Name]                                                  let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =linenorm! zt
:redraw!let line=ScreenChar(winwidth(0))
:call DoRecordScreen()%w! test.outqaENDTEST
dummy text
test_listlbr.in                                                                 :put =\"\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \"
        abcdef hijkl
mn  pqrstuvwxyz_1060
ABCDEFGHIJKLMNOP    [+] abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP[+]:norm! zt
        abcdef hijkl
mn  pqrstuvwxyz_1060
ABCDEFGHIJKLMNOP    
~                   
~                   
~                   
~                   
~                   
~                   
                    
~                   :set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
abcdef          
+hijklmn            
+pqrstuvwxyz_1060ABC
+DEFGHIJKLMNOP      abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP :fu! ScreenChar(width)

:  :^Ilet c=''

:  :^Ifor j in range(1,4)

:    :^I    for i in range(1,a:width)

:      :^I    ^Ilet c.=nr2char(screenchar(j, i))

:      :^I    endfor

:    :           let c.="\n"

:    :^Iendfor

:  :^Ireturn c

:  :endfu
abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      ||||||~                   
~                   
~                   
~                   
~                   abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP~~~~~~~:fu! DoRecordScreen()

:  :^Iwincmd l

:  :^I$put =printf(\"\n%s\", g:test)

:  :^I$put =g:line

:  :^Iwincmd p

:  :endfu
abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      ||
~                   abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP~~~:"
:let g:test="Test 1: set linebreak"
:redraw!
abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      |||||||~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP~~~~~~~~[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines                    
Test 1: set         
+linebreak          
    abcdef          
+hijklmn            
+pqrstuvwxyz_1060ABCTest 1: set linebreak    abcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP:"
:let g:test="Test 2: set linebreak + set list"
:set linebreak list listchars=
^Iabcdef hijklmn^I  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP      
              
Test 1: set
+linebreak 
    abcdef
+hijklmn  
+pqrstuvwxyz_1060ABC
+DEFGHIJKLMNOP      :redraw!
^Iabcdef hijklmn^I  |
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      ||
Test 1: set|
+linebreak|
    abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      |
[No Name] [+]        abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOPTest 1: set linebreakabcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP~~[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines    abcdef                                                 +hijklmn                                                   +pqrstuvwxyz_1060ABC                                       +DEFGHIJKLMNOP                                             ~                                                          ~                                                                                                                                                                                                                                                                                                      Test 2: set linebreak + set list^Iabcdef hijklmn^I+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP4 more lines:"
:let g:test ="Test 3: set linebreak nolist"
:set nolist linebreak
    abcdef          hijklmn            pqrstuvwxyz_1060ABC
+DEFGHIJKLMNOP
           
Test 1: set
+linebreak
    abcdef
+hijklmn            
+pqrstuvwxyz_1060ABC:redraw!
abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      ||
Test 1: set|
+linebreak|
    abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
[No Name] [+]        abcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOPTest 2: set linebreak + set list^Iabcdef hijklmn^I+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines^Iabcdef hijklmn^I                                         +pqrstuvwxyz_1060ABC                                       +DEFGHIJKLMNOP                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Test 3: set linebreak nolistabcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP4 more lines:"
:let g:test ="Test 4: set linebreak with tab and 1 line as long as screen: shou

ld break!"
abcdef|^Iabcdef hijklmn^I:set nolist linebreak ts=8
    abcdef:let line="1\t".repeat('a', winwidth(0)-2)
:$put =line
      
        
Test 3: set         linebreak nolist
    abcdef
+hijklmn   
+pqrstuvwxyz_1060ABC
+DEFGHIJKLMNOP
1       
+aaaaaaaaaaaaaaaaaa :$
:norm! zt
1                   
+aaaaaaaaaaaaaaaaaa 
                    
                    
                    
                    
                    
                    
                    
                    ~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   :redraw!
1|
+aaaaaaaaaaaaaaaaaa |||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        ^Iabcdef hijklmn^I+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOPTest 3: set linebreak nolistabcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines                    
Test 4: set         
+linebreak with tab 
+and 1 line as long 
+as screen: should  
+break!             
1                   
+aaaaaaaaaaaaaaaaaa +pqrstuvwxyz_1060ABC                                       +DEFGHIJKLMNOP                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     1aaaaaaaaaaaaaaaaaaTest 4: set linebreak with tab and 1 line as long as screen+: should break!1+aaaaaaaaaaaaaaaaaa~~4 more lines:let line="_S_\t bla"
:$put =line
Test 4: set         
+linebreak with tab 
+and 1 line as long 
+as screen: should  
+break!             
1                   
+aaaaaaaaaaaaaaaaaa 
                    
                    
                    ~
~
_S_      bla:$
:norm! zt
_S_      bla        
                    
                    
                    
                    
                    
                    
                    
                    
                    ~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   :"
:let g:test ="Test 5: set linebreak with conceal and set list and tab displayed

by different char (line may not be truncated)"
_S_      bla|+pqrstuvwxyz_1060ABC:set cpo&vim list linebreak conceallevel=2 concealcursor=nv listchars=tab:ab
abbbb:syn match ConcealVar contained /_/ conceal
:syn match All /.*/ contains=ConcealVar
Sabb:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines                    
Test 5: set         
+linebreak with     
+conceal and set    
+list and tab       
+displayed by       
+different char     
+(line may not be   
+truncated)         ~                                                          ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  _S_      blaTest 5: set linebreak with conceal and set list and tab dis+played by different char (line may not be truncated)Sabbbbbb bla~~~4 more lines:set cpo&vim linebreak
:"
:let g:test ="Test 6: set linebreak with visual block mode"
:let line="REMOVE: this not"
:$put =g:test
abbbbbb
~
~          
~              
Test 6: set     nebreak withvisual block mode
~                   
~                   
~                   :$put =line
REMOVE: this not    :let line="REMOVE: aaaaaaaaaaaaa"
:$put =line
REMOVE:             
+aaaaaaaaaaaaa      :1/^REMOVE:
REMOVE: 
REMOVE:this not        
aaaaaaaaaaaaa
~                   :$put
~                   
~                   
~                   
Test 6: set         
+linebreak with     
+visual block mode  
this not            
aaaaaaaaaaaaa       
~                   
                    REMOVE:             
REMOVE::set cpo&vim linebreak
:"
:let g:test ="Test 7: set linebreak with visual block mode and v_b_A"
:$put =g:test
this not            
aaaaaaaaaaaaa       
REMOVE:             
REMOVE:             
                    
                    
                    
                    
                    
                    Test 7: set
+linebreak with
+visual block mode
+and vbA
~                   
~                   long line:           foobar
+foobar foobar      @                   
@                           
             
       
       
           
               
                  
        
                    
                    +foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar             
                    TARGET at
+end:exe "norm! $3B\<C-v>eAx\<Esc>"
x at:set cpo&vim linebreak sbr=
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar TARGETx at 
end played by different char (line may not be truncated):"
:let g:test ="Test 8: set linebreak with visual char mode and changing block"
:$put =g:test
Test 8: set  
linebreak with
visual char mode
and changing block
~                   
~                   
~                   
~                   
~                   
~                   1111-1111-1111-11-  
1111-1111-1111      11122222222:"
:let g:test ="Test 9: using redo after block visual mode"
:$put =g:test
Test 9: using redo  
after block visual  
mode                1111-2222-1111-11-  
1111-2222-1111      
Test 9: using redo  
after block visual  
mode                
~                   
                    
                    
                    
                                        
aaa
aaa
a
~                   a
a3 lines changedA
A
AA
AaA:"
:let g:test ="Test 10: using normal commands after block-visual"
:$put =g:test
Test 9: using redo  
after block visual  
mode                
                    
AaA                 
AaA                 
A                   
~                   
                    
                    Test 10: using      
normal commands
after block-visual:set linebreak
AaA                 
AaA                 
A                   
Test 10: using      
normal commands     
after block-visual  
                    
                    
                    
                    abcd{ef
ghijklm
no}pqrspqrs
~                   
~                   :"
:let g:test ="Test 11: using block replace mode after wrapping"
:$put =g:test
AaA                 
A                   
Test 10: using      
normal commands     
after block-visual  
                    
abcdpqrs            
~                   
~                   
                    Test 11: using      
block replace mode  
after wrapping:set linebreak wrap
A                   
Test 10: using      
normal commands     
after block-visual  
                    
abcdpqrs            
Test 11: using      
block replace mode  
after wrapping      
                    aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaa        
~                   
~                   aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa@                   
@                   @                   
@                   
                    
                    
                    
                    
                    
                    
                    
                    aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaa
~                   
~                   0
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa@                   
@                   @                   
@                   
                    
                    
                    
                    
                    
                    
                    
                    aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaa0aaa
~                   
~                   :"
:let g:test ="Test 12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$

"aaaaaaaaaaaaaaaaaaaa|~:set list listchars=space:_,trail:-,tab:>-,eol:$
$:$put =g:test
Test_12:_set_       
linebreak_list_     
listchars=space:,   
tab:>-,tail:-,eol:$$
~                   
~                   
~                   
~                   :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
a_                  
aaaaaaaaaaaaaaaaaaaa
aa>-----a-$         :$
:norm! zt
a_                  
aaaaaaaaaaaaaaaaaaaa
aa>-----a-$         
~                   
~                   
~                   
                    
                    
                    
                    ~                   
~                   
~                   
~                   :redraw!
a_|
aaaaaaaaaaaaaaaaaaaa|
aa>-----a-$||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        ~~_S_      blaTest 5: set linebreak with conceal and set list and tab displayed by different char (line may not be truncated)Sabbbbbb bla~~~[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines$                   
Test_12:_set_       
linebreak_list_     
listchars=space:,   
tab:>-,tail:-,eol:$$
a------------------ 
$                   Test 12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$a aaaaaaaaaaaaaaaaaaaaaaa12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$a_          aaaaaaaaaaaaaaaaaaaaaa>-----a-$:%w! test.out
"test.out" [New File] 62 lines, 2030 characters writtentest.out     test.out     :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_listlbr = test61; then \
#	  if diff test.out test_listlbr.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_listlbr.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_search_mbyte.failed test.ok test.out X* viminfo
cp test_search_mbyte.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_search_mbyte.in
[?1h="test_search_mbyte.in" 15 lines, 226 charactersTest for search('multi-byte char', 'bce')

STARTTEST
:source small.vim
:source mbyte.vim
:set encoding=utf-8
:/^Test bce:/+1
:$put =search('A', 'bce', line('.'))
:1;/^Results:/,$wq! test.out
ENDTEST

Results:

Test bce:
A
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for search('multi-byte char', 'bce')/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 6 lines, 140 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:source small.vim
:source mbyte.vim
:set encoding=utf-8
Test for search('multi-byte char', 'bce')

STARTTEST
:source small.vim
:source mbyte.vim
:set encoding=utf-8
:/^Test bce:/+1
:$put =search('A', 'bce', line('.'))
:1;/^Results:/,$wq! test.out
ENDTEST

Results:

Test bce:
A
~
~
~
~
~
~
~
~:/^Test bce:/+1
:$put =search('A', 'bce', line('.'))
15
:1;/^Results:/,$wq! test.out
"test.out" [New File] 5 lines, 27 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_search_mbyte = test61; then \
#	  if diff test.out test_search_mbyte.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_search_mbyte.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_search_mbyte.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_utf8.failed test.ok test.out X* viminfo
cp test_utf8.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_utf8.in
[?1h="test_utf8.in" 46 lines, 1245 charactersTests for Unicode manipulationsvim: set ft=vim :

STARTTEST
:so small.vim
:set encoding=utf-8
:"
:" Visual block Insert adjusts for multi-byte char
:new
:exe ":norm! gg0l\<C-V>jjIx\<Esc>"
:let r = getline(1, '$')
:"
:bwipeout!
:$put=r
:"
:" Test for built-in function strchars()
:$put=strchars(str)
:$put=strchars(str, 0)
:$put=strchars(str, 1)
:endfor
:"
:" Test for customlist completion:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for Unicode manipulationsvim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 40 lines, 1151 characters written:set ff& cpo+=A
/ENDTEST:"
:" Test for customlist completion
:function! CustomComplete1(lead, line, pos)
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
:call feedkeys(":Test1 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete2(lead, line, pos)
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
:call feedkeys(":Test2 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete3(lead, line, pos)
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:call garbagecollect(1)
:/^start:/,$wq! test.out
ENDTEST


:so! Xdotest
:so small.vim
:set encoding=utf-8
:" Test for customlist completion
:function! CustomComplete1(lead, line, pos)
:return ['あ', 'い']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
:call feedkeys(":Test1 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete2(lead, line, pos)
:return ['あたし', 'あたま', 'あたりめ']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
:call feedkeys(":Test2 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete3(lead, line, pos)
:return ['Nこ', 'Nん', 'Nぶ']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:call garbagecollect(1)
:/^start:/,$wq! test.out
ENDTEST

:"
:" Visual block Insert adjusts for multi-byte char
:new
~~~~~~~~~~
[No Name]                                                                       function! CustomComplete3(lead, line, pos)
:       return ['Nこ', 'Nん', 'Nぶ']endfunctioncommand -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')"call garbagecollect(1)
:/^start:/,$wq! test.out
ENDTEST test_utf8.in                                                                    :call setline(1, ["aaa", "あああ", "bbb"])
aaa
あああ
bbb[+]:exe ":norm! gg0l\<C-V>jjIx\<Esc>"
xaa
xあああ
bxbb:let r = getline(1, '$')
:"
:bwipeout!
:" Test for customlist completion
:function! CustomComplete1(lead, line, pos)
:       return ['あ', 'い']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
:call feedkeys(":Test1 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete2(lead, line, pos)
:return ['あたし', 'あたま', 'あたりめ']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
:call feedkeys(":Test2 \<C-L>'\<C-B>$put='\<CR>", 'it')"function! CustomComplete3(lead, line, pos)
:       return ['Nこ', 'Nん', 'Nぶ']
:endfunctionommand -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"call garbagecollect(1):/^start:/,$wq! test.out
ENDTEST
 :$put=r
3 more lines



start:
axaa
xあああ
bxbb3 more lines:"
:" Test for built-in function strchars()
:for str in ["a", "あいa", "A\u20dd", "A\u20dd\u20dd", "\u20dd"]

:  :^I$put=strchars(str)

:  :^I$put=strchars(str, 0)

:  :^I$put=strchars(str, 1)

:  :endfor
:call garbagecollect(1)
:/^start:/,$wq! test.out
ENDTEST

start:axaaxあああbxbb11133322133
1111
:"
:" Test for customlist completion
:function! CustomComplete1(lead, line, pos)

:  :^Ireturn ['あ', 'い']

:  :endfunction
:call garbagecollect(1)
:/^start:/,$wq! test.out
:command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
:call feedkeys(":Test1 \<C-L>'\<C-B>$put='\<CR>", 'it')
:Test1 ...'
:$Test1 '
:$pTest1 '
:$puTest1 '
:$putTest1 '
:$put=Test1 ''Test1 '

Test1
:"
:function! CustomComplete2(lead, line, pos)

:  :^Ireturn ['あたし', 'あたま', 'あたりめ']

:  :endfunction
:/^start:/,$wq! test.out
ENDTEST
:command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
:call feedkeys(":Test2 \<C-L>'\<C-B>$put='\<CR>", 'it')
:Test2 ...あた'
:$Test2 あた'
:$pTest2 あた'
:$puTest2 あた'
:$putTest2 あた'
:$put=Test2 あた''Test2 あた'

Test2 あた
:"
:function! CustomComplete3(lead, line, pos)

:  :^Ireturn ['Nこ', 'Nん', 'Nぶ']

:  :endfunction
ENDTEST
:command -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')
:Test3 ...N'
:$Test3 N'
:$pTest3 N'
:$puTest3 N'
:$putTest3 N'
:$put=Test3 N''Test3 N'

Test3 N
:"
:call garbagecollect(1)
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 22 lines, 86 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_utf8 = test61; then \
#	  if diff test.out test_utf8.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_utf8.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_utf8.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_wordcount.failed test.ok test.out X* viminfo
cp test_wordcount.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_wordcount.in
[?1h="test_wordcount.in" 126 lines, 2815 charactersTest for wordcount() function

STARTTEST
:so small.vim
:so mbyte.vim
:set enc=utf8
:set selection=inclusive fileformat=unix fileformats=unix
:new
:fu DoRecordWin(...)
:wincmd k
:if exists("a:1")
:call cursor(a:1)
:endif
:let result=[]
:call add(result, g:test)
:call add(result, getline(1, '$'))
:call add(result, wordcount())
:wincmd j
:return result
:endfu
:fu PutInWindow(args)
:wincmd k
:%d _:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for wordcount() function/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 121 lines, 2753 characters written:set ff& cpo+=A
/ENDTEST:0
v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])
:let log[2]=g:visual_stat
:call Log()
:"
:let g:test="Test 11: visual mode, single line"
:wincmd k
:set ls=2 stl=%{STL()}
:" start visual mode quickly and select complete buffer
:2
0v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])
:let log[2]=g:visual_stat
:call Log()
:"
:/^RESULT test/,$w! test.out
:qa!
ENDTEST
RESULT test:

:so! Xdotest
:so small.vim
:so mbyte.vim
:set enc=utf8
:0
v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])
:let log[2]=g:visual_stat
:call Log()
:"
:let g:test="Test 11: visual mode, single line"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
:wincmd k
:set ls=2 stl=%{STL()}
:" start visual mode quickly and select complete buffer
:2
0v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])
:let log[2]=g:visual_stat
:call Log()
:"
:/^RESULT test/,$w! test.out
:qa!
ENDTEST
RESULT test:

:set selection=inclusive fileformat=unix fileformats=unix
:new
~~~~~~~~~~
[No Name]                                                                       0v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])[2]=g:visual_statcall Log()"/^RESULT test/,$w! test.out
:qa!ENDTEST
RESULT test:
test_wordcount.in                                                               :fu DoRecordWin(...)

:  :^Iwincmd k

:  :       if exists("a:1")

:    :           call cursor(a:1)

:    :       endif

:  :       let result=[]

:  :       call add(result, g:test)

:  :       call add(result, getline(1, '$'))

:  :       call add(result, wordcount())

:  :^Iwincmd j

:  :       return result

:  :endfu
~
~
~
~
~
~
~
~
~
~:fu PutInWindow(args)

:  :       wincmd k

:  :       %d _

:  :       call append(1, a:args)

:  :^Iwincmd j

:  :endfu
~
~
~
~:fu Log()

:  :   $put ='----'

:  :   $put =remove(g:log,0)

:  :   $put =string(g:log)

:  :endfu
~
~
~:fu! STL()

:  :    if mode() =~? 'V'

:    :       let g:visual_stat=wordcount()

:    :    endif

:  :    return string(wordcount())

:  :endfu
~
~
~
~:let g:test="Test 1: empty window"
:let log=DoRecordWin()
[No Name]                                                                       test_wordcount.in                                                               :call Log()




----
Test 1: empty window
[[''], {'chars': 0, 'cursor_chars': 0, 'words': 0, 'cursor_words': 0, 'bytes': 00, 'cursor_bytes': 0}][+]


:"
:let g:test="Test 2: some words, cursor at start"
:call PutInWindow('one two three')
one two three[+]:let log=DoRecordWin([1,1,0])
:call Log()




----
Test 2: some words, cursor at start
[['', 'one two three'], {'chars': 15, 'cursor_chars': 1, 'words': 3, 'cursor_worrds': 0, 'bytes': 15, 'cursor_bytes': 1}]


:"
:let g:test="Test 3: some words, cursor at end"
:call PutInWindow('one two three')
--No lines in buffer--:let log=DoRecordWin([2,99,0])
:call Log()




----
Test 3: some words, cursor at end
[['', 'one two three'], {'chars': 15, 'cursor_chars': 14, 'words': 3, 'cursor_woords': 3, 'bytes': 15, 'cursor_bytes': 14}]


:"
:let g:test="Test 4: some words, cursor at end, ve=all"
:set ve=all
:call PutInWindow('one two three')
--No lines in buffer--:let log=DoRecordWin([2,99,0])
:call Log()




----
Test 4: some words, cursor at end, ve=all
[['', 'one two three'], {'chars': 15, 'cursor_chars': 15, 'words': 3, 'cursor_woords': 3, 'bytes': 15, 'cursor_bytes': 15}]


:set ve=
:"
:let g:test="Test 5: several lines with words"
:call PutInWindow(['one two three', 'one two three', 'one two three'])
one two three
one two three--No lines in buffer--:let log=DoRecordWin([4,99,0])
:call Log()




----
Test 5: several lines with words
[['', 'one two three', 'one two three', 'one two three'], {'chars': 43, 'cursor__chars': 42, 'words': 9, 'cursor_words': 9, 'bytes': 43, 'cursor_bytes': 42}]


:"
:let g:test="Test 6: one line with BOM set"
:call PutInWindow('one two three')
~~--No lines in buffer--:wincmd k
[No Name] [+]                                                                   test_wordcount.in [+]                                                           :set bomb
:w! Xtest
"Xtest" [New File] 2 lines, 18 characters writtenXtest        :wincmd j
Xtest                                                                           test_wordcount.in [+]                                                           :let log=DoRecordWin([2,99,0])
:call Log()




----
Test 6: one line with BOM set
[['', 'one two three'], {'chars': 15, 'cursor_chars': 14, 'words': 3, 'cursor_woords': 3, 'bytes': 18, 'cursor_bytes': 14}]


:wincmd k
Xtest                                                                           test_wordcount.in [+]                                                           :set nobomb
[+]:w!
"Xtest" 2 lines, 15 characters written   :wincmd j
Xtest                                                                           test_wordcount.in [+]                                                           :"
:let g:test="Test 7: one line with multibyte words"
:call PutInWindow(['Äne M¤ne Müh'])
Äne M¤ne Müh[+]--No lines in buffer--:let log=DoRecordWin([2,99,0])
:call Log()




----
Test 7: one line with multibyte words
[['', 'Äne M¤ne Müh'], {'chars': 14, 'cursor_chars': 13, 'words': 3, 'cursor_worrds': 3, 'bytes': 17, 'cursor_bytes': 16}]


:"
:let g:test="Test 8: several lines with multibyte words"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
und raus bist dü!--No lines in buffer--:let log=DoRecordWin([3,99,0])
:call Log()




----
Test 8: several lines with multibyte words
[['', 'Äne M¤ne Müh', 'und raus bist dü!'], {'chars': 32, 'cursor_chars': 31, 'wwords': 7, 'cursor_words': 7, 'bytes': 36, 'cursor_bytes': 35}]


:"
:let g:test="Test 9: visual mode, complete buffer"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
--No lines in buffer--:wincmd k
Xtest [+]                                                                       test_wordcount.in [+]                                                           :set ls=2 stl=%{STL()}
<ursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor_bytes': 1}<: 3985, 'words': 579, 'cursor_words': 560, 'bytes': 4153, 'cursor_bytes': 4007}:" start visual mode quickly and select complete buffer
:0
ords': 7, 'bytes': 36, 'visual_chars': 1, 'visual_words': 0, 'visual 
Äne M¤ne Müh 
und raus bist dü! ds': 7, 'bytes': 36, 'visual_chars': 32, 'visual_words': 7, 'visual_bytes': 36Äne M¤ne Mühnd raus bist dü!3 lines yankedursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor_bytes': 1213:set stl= ls=1
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log=DoRecordWin([3,99,0])
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log[2]=g:visual_stat
:call Log()




----
Test 9: visual mode, complete buffer
[['', 'Äne M¤ne Müh', 'und raus bist dü!'], {'chars': 32, 'words': 7, 'bytes': 336, 'visual_chars': 32, 'visual_words': 7, 'visual_bytes': 36}]


:"
:let g:test="Test 10: visual mode (empty)"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
--No lines in buffer--:wincmd k
Xtest [+]                                                                       test_wordcount.in [+]                                                           :set ls=2 stl=%{STL()}
<ursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor_bytes': 1}<: 4170, 'words': 606, 'cursor_words': 587, 'bytes': 4342, 'cursor_bytes': 4196}:" start visual mode quickly and select complete buffer
:0
ords': 7, 'bytes': 36, 'visual_chars': 1, 'visual_words': 0, 'visualursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor213:set stl= ls=1
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log=DoRecordWin([3,99,0])
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log[2]=g:visual_stat
:call Log()




----
Test 10: visual mode (empty)
[['', 'Äne M¤ne Müh', 'und raus bist dü!'], {'chars': 32, 'words': 7, 'bytes': 336, 'visual_chars': 1, 'visual_words': 0, 'visual_bytes': 1}]


:"
:let g:test="Test 11: visual mode, single line"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
--No lines in buffer--:wincmd k
Xtest [+]                                                                       test_wordcount.in [+]                                                           :set ls=2 stl=%{STL()}
<ursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor_bytes': 1}<: 4347, 'words': 632, 'cursor_words': 613, 'bytes': 4521, 'cursor_bytes': 4377}:" start visual mode quickly and select complete buffer
:2
213ords': 7, 'bytes': 36, 'visual_chars': 1, 'visual_words': 1, 'visual2Äne M¤ne Mühds': 7, 'bytes': 36, 'visual_chars': 13, 'visual_words': 3, 'visual_bytes': 16
Äne M¤ne Mühursor_chars': 2, 'words': 7, 'cursor_words': 1, 'bytes': 36, 'cursor_bytes': 3sor_chars': 15, 'words': 7, 'cursor_words': 4, 'bytes': 36, 'cursor_bytes': 18:set stl= ls=1
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log=DoRecordWin([3,99,0])
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log[2]=g:visual_stat
:call Log()




----
Test 11: visual mode, single line
[['', 'Äne M¤ne Müh', 'und raus bist dü!'], {'chars': 32, 'words': 7, 'bytes': 336, 'visual_chars': 13, 'visual_words': 3, 'visual_bytes': 16}]


:"
:/^RESULT test/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 34 lines, 1905 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_wordcount = test61; then \
#	  if diff test.out test_wordcount.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_wordcount.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_wordcount.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test11.failed test.ok test.out X* viminfo
cp test11.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test11.in
[?1h="test11.in" 84 lines, 3366 charactersTests for autocommands:
- FileWritePrewriting a compressed file
- FileReadPostreading a compressed file
- BufNewFilereading a file template
- BufReadPredecompressing the file to be read
- FilterReadPresubstituting characters in the temp file
- FilterReadPostsubstituting characters after filtering
- FileReadPreset options for decompression
- FileReadPostdecompress the file

Note: This test is skipped if "gzip" is not available.
$GZIP is made empty, "-v" would cause trouble.
Use a FileChangedShell autocommand to avoid a prompt for "Xtestfile.gz" being
modified outside of Vim (noticed on Solaris).

STARTTEST
:so small.vim
:" drop out when there is no gzip program
:if !executable("gzip")
: e! test.ok
: w! test.out
: qa!
:endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for autocommands:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 48 lines, 2298 characters written:set ff& cpo+=A
/ENDTEST:au! FileReadPre    *.gz   exe 'silent !gzip -d ' . shellescape(expand("<afile>""))
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/
:$r Xtestfile.gz" Read compressed file
:w" write it, after filtering
:au!" remove all autocommands
:e" Edit test.out again
:set nobin ff&   " use the default fileformat for writing
:w
:qa!
ENDTEST

startstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 4  Abcdefghijklmnopqrstuvwxyz
line 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 6  Abcdefghijklmnopqrstuvwxyz
line 7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 8  Abcdefghijklmnopqrstuvwxyz
line 9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
:so! Xdotest
:so small.vim
:" drop out when there is no gzip program
:if !executable("gzip")

:  : e! test.ok

:  : w! test.out

:  : qa!

:  :endif
:au! FileReadPre    *.gz   exe 'silent !gzip -d ' . shellescape(expand("<afile>""))
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/:let $GZIP = ""
:au FileChangedShell * echo "caught FileChangedShell"
:set bin
:au FileWritePre    *.gz   '[,']!gzip
:au FileWritePost   *.gz   undo
:/^start of testfile/,/^end of testfile/w! Xtestfile.gz
11 lines filtered
"Xtestfile.gz" [New File][Incomplete last line] 1 line, 111 characters written

10 more lines; before #1  0 seconds ago

Press ENTER or type command to continue:au FileReadPost    *.gz   '[,']!gzip -d
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/
:$r Xtestfile.gz" Read compressed file
:w                           " write it, after filtering
:au!             " remove all autocommandse" Edit test.out againset nobin ff&   " use the default fileformat for writing
:wqa!ENDTESTstartstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx45678910
end of testfile
:$r Xtestfile.gz                " Read and decompress the testfile
"Xtestfile.gz" [Incomplete last line] 1 line, 111 characters







start of test.c
/*
 * Here is a new .c file
 */
end of test.c
start of testfile
:?startstart?,$w! test.out      " Write contents of this file
"test.out" [New File] 29 lines, 788 characters written:au BufNewFile      *.c    read Xtest.c
:/^start of test.c/+1,/^end of test.c/-1w! Xtest.c
search hit BOTTOM, continuing at TOP"Xtest.c" [New File] 3 lines, 32 characters written:e! foo.c                       " Will load Xtest.c
"foo.c" [New File]
"Xtest.c" 3 lines, 32 characters

Press ENTER or type command to continue:au FileAppendPre   *.out  '[,']s/new/NEW/
/*
 * Here is a new .c file
 */~~~~~~~~~~~~
~~~~~~~:au FileAppendPost  *.out  !cat Xtest.c >>test.out
:w>>test.out                    " Append it to the output file
"test.out" 4 lines, 33 characters appended

:!cat Xtest.c >>test.out


Press ENTER or type command to continue:au! FileAppendPre
/*
 * Here is a NEW .c file
 */
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:" setup autocommands to decompress before reading and re-compress afterwards
:au BufReadPre      *.gz   exe '!gzip -d ' . shellescape(expand("<afile>"))
:au BufReadPre      *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au BufReadPost     *.gz   call rename(expand("<afile>"), expand("<afile>:r"))
:au BufReadPost     *.gz   exe '!gzip ' . shellescape(expand("<afile>:r"))
:e! Xtestfile.gz                " Edit compressed file
:!gzip -d 'Xtestfile.gz'

"Xtestfile.gz""Xtestfile.gz" 11 lines, 357 characters:!gzip 'Xtestfile'

caught FileChangedShell

Press ENTER or type command to continue:w>>test.out                    " Append it to the output file
"test.out" 11 lines, 357 characters appended

:!cat Xtest.c >>test.out


Press ENTER or type command to continue:set shelltemp                  " need temp files here
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 4  Abcdefghijklmnopqrstuvwxyz
line 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 6  Abcdefghijklmnopqrstuvwxyz
line 7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 8  Abcdefghijklmnopqrstuvwxyz
line 9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 10 Abcdefghijklmnopqrstuvwxyz
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~:au FilterReadPre   *.out  call rename(expand("<afile>"), expand("<afile>") . "

.t")
start of testfile:au FilterReadPre   *.out  exe 'silent !sed s/e/E/ ' . shellescape(expand("<afi

le>")) . ".t >" . shellescape(expand("<afile>"))
start of testfile:au FilterReadPre   *.out  exe 'silent !rm ' . shellescape(expand("<afile>")) .

'.t'
start of testfile:au FilterReadPost  *.out  '[,']s/x/X/g
:e! test.out                    " Edit the output file
"test.out" 50 lines, 1242 charactersstarstart of testfile2  Abcdefghijklmnopqrstuvwxyz3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4  Abcdefghijklmnopqrstuvwxyz5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx6  Abcdefghijklmnopqrstuvwxyz7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8  Abcdefghijklmnopqrstuvwxyz9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 10 Abcdefghijklmnopqrstuvwxyz
end of testfilestart of test.c
/*
 * Here is a new .c file
 */
end of test.c
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 4  Abcdefghijklmnopqrstuvwxyz
line 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:23,$!cat
218 substitutions on 15 lines

28 lines filtered

Press ENTER or type command to continue:23,$s/\r$//                 " remove CR for when sed adds them
E486: Pattern not found: \r$
Press ENTER or type command to continue:au! FileReadPre    *.gz   exe 'silent !gzip -d ' . shellescape(expand("<afile>

"))
startstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE 5  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/
:$r Xtestfile.gz             " Read compressed file
"Xtestfile.gz" 11 lines, 357 characters

11 substitutions on 11 lines

Press ENTER or type command to continue:w                           " write it, after filtering
"test.out"61 lines, 1599 characters written

Press ENTER or type command to continue:au!             " remove all autocommands
E216: No such group or event: " remove all autocommands

Press ENTER or type command to continue:e               " Edit test.out again
"test.out"61 lines, 1599 charactersstartstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"test.out" 61 lines, 1599 characters:set nobin ff&   " use the default fileformat for writing
:w
"test.out" 61 lines, 1599 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test11 = test61; then \
#	  if diff test.out test11.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test11.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test11.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test52.failed test.ok test.out X* viminfo
cp test52.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test52.in
[?1h="test52.in" 65 lines, 1645 charactersTests for reading and writing files with conversion for Win32.

STARTTEST
:so mbyte.vim
:" make this a dummy test for non-Win32 systems
:if !has("win32") | e! test.ok | wq! test.out | endif
:"
:" write tests:
:" combine three values for 'encoding' with three values for 'fileencoding'
:" also write files for read tests
/^1
:set encoding=utf-8
:.w! ++enc=utf-8 test.out
:.w ++enc=cp1251 >>test.out
:.w ++enc=cp866 >>test.out
:.w! ++enc=utf-8 Xutf8
/^2
:set encoding=cp1251
:.w ++enc=utf-8 >>test.out
:.w ++enc=cp1251 >>test.out
:.w ++enc=cp866 >>test.out
:.w! ++enc=cp1251 Xcp1251
/^3:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for reading and writing files with conversion for Win32./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 57 lines, 1333 characters written:set ff& cpo+=A
/ENDTEST:e Xcp1251
:.w ++enc=cp1251 >>test.out
:set fencs=utf-8,cp866
:e Xcp866
:.w ++enc=cp1251 >>test.out
:"
:" read three 'fileencoding's with cp866 'encoding'
:set encoding=cp866 fencs=utf-8,cp1251
:e Xutf8
:.w ++enc=cp866 >>test.out
:e Xcp1251
:.w ++enc=cp866 >>test.out
:set fencs=utf-8,cp866
:e Xcp866
:.w ++enc=cp866 >>test.out
:"
:qa!
ENDTEST

:so! Xdotest
:so mbyte.vim
:" make this a dummy test for non-Win32 systems
:if !has("win32") | e! test.ok | wq! test.out | endif
"test.ok" 18 lines, 1374 characters

"test.out" [New File] 18 lines, 1374 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test52 = test61; then \
#	  if diff test.out test52.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test52.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test52.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test85.failed test.ok test.out X* viminfo
cp test85.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test85.in
[?1h="test85.in" 85 lines, 1868 charactersTest 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):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for Lua interface and luaeval() function/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 77 lines, 1775 characters written:set ff& cpo+=A
/ENDTEST:lua d = vim.eval("d")
:lua d[0] = 123
:lua d[1] = "abc"
:lua d[2] = vim.eval("[1, 2, 3]")
:lua d[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
:lua d[4] = d[0]
:lua d[5] = d[1]
:lua d[6] = d[2]
:lua d[7] = d[3]
:lua d[3] = nil
:lua d[2] = nil
:lua d[1] = nil
:lua d[0] = nil
:lua d = nil
:$put =string(d)

:?^1?,$w! test.out
:qa!
ENDTEST

1 line 1
2 line 2
3 line 3
:so! Xdotest
: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"
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
:lua d = vim.eval("d")
:lua d[0] = 123
:lua d[1] = "abc"
:lua d[2] = vim.eval("[1, 2, 3]")


:call append(search("^1"), "scalar test " . scalar_res)
scalar test OK
2 line 2:" dictionary containing a list
:let tmp = luaeval("h").list[1]
:/^2/put =tmp

dictionary with list OK
:" 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
:lua d[0] = 123
:lua d[1] = "abc"
:lua d[2] = vim.eval("[1, 2, 3]")
:lua d[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
:call setline(search("^3"), "circular test " . res)

circular test OK
:let l = []
:lua l = vim.eval("l")
:lua l:add(123)
:lua l:add("abc")
:lua l:add(vim.eval("[1, 2, 3]"))
:lua l:add(vim.eval("{'a':1, 'b':2, 'c':3}"))
:lua l:insert(123)
:lua l:insert("abc")
:lua l:insert(vim.eval("[1, 2, 3]"))
:lua l:insert(vim.eval("{'a':1, 'b':2, 'c':3}"))
:lua l[0] = l[0]
:lua l[1] = l[1]
:lua l[2] = l[2]
:lua l[3] = l[3]
:lua l[0] = 123
:lua l[1] = "abc"
:lua l[2] = vim.eval("[1, 2, 3]")
:lua l[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
:lua l[3] = nil
:lua l[2] = nil
:lua l[1] = nil
:lua l[0] = nil
:lua l = nil
:$put =string(l)

[123.0, 'abc', [1, 2, 3], {'a': 1, 'b': 2, 'c': 3}]
:let d = {}
:lua d = vim.eval("d")
:lua d[0] = 123
:lua d[1] = "abc"
:lua d[2] = vim.eval("[1, 2, 3]")
:lua d[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
:lua d[4] = d[0]
:lua d[5] = d[1]
:lua d[6] = d[2]
:lua d[7] = d[3]
:lua d[3] = nil
:lua d[2] = nil
:lua d[1] = nil
:lua d[0] = nil
:lua d = nil
:$put =string(d)

{'4': 123.0, '5': 'abc', '6': [1, 2, 3], '7': {'a': 1, 'b': 2, 'c': 3}}
:?^1?,$w! test.out
"test.out" [New] 7L, 206C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test85 = test61; then \
#	  if diff test.out test85.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test85.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test85.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test86.failed test.ok test.out X* viminfo
cp test86.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test86.in
[?1h="test86.in" 1711 lines, 48481 charactersTests for various python features.     vim: set ft=vim :

NOTE: This will cause errors when run under valgrind.
This would require recompiling Python with:
  ./configure --without-pymalloc
See http://svn.python.org/view/python/trunk/Misc/README.valgrind?view=markup

STARTTEST
:so small.vim
:set encoding=latin1
:set noswapfile
:if !has('python') | e! test.ok | wq! test.out | endif
:lang C
:fun Test()
:py import vim
:py cb = vim.current.buffer
: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]):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for various python features.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1700 lines, 48188 characters written:set ff& cpo+=A
/ENDTEST:   endif
:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:" vim: et ts=4 isk-=\:
:while getchar(0) isnot 0|endwhile
ENDTEST

start:


:so! Xdotest
:so small.vim
:set encoding=latin1
:   endif
:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:" vim: et ts=4 isk-=\:
:while getchar(0) isnot 0|endwhile
ENDTEST

start:

:set noswapfile
:if !has('python') | e! test.ok | wq! test.out | endif
"test.ok" 1445 lines, 67439 characters

"test.out" [New File] 1445 lines, 67439 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test86 = test61; then \
#	  if diff test.out test86.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test86.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test86.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test87.failed test.ok test.out X* viminfo
cp test87.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test87.in
[?1h="test87.in" 1707 lines, 49069 charactersTests for various python features.     vim: set ft=vim :

STARTTEST
:so small.vim
:set noswapfile
:if !has('python3') | e! test.ok | wq! test.out | endif
:lang C
:fun Test()
:py3 import vim
:py3 cb = vim.current.buffer
: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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for various python features.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1701 lines, 48985 characters written:set ff& cpo+=A
/ENDTEST:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:/^start:/,$w! test.out
:" vim: et ts=4 isk-=\:
:while getchar(0) isnot 0|endwhile
ENDTEST

start:


:so! Xdotest
:so small.vim
:set noswapfile
:if !has('python3') | e! test.ok | wq! test.out | endif
:lang C
:fun Test()

:  :py3 import vim

:  :py3 cb = vim.current.buffer

:  :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 = {}

:  :fun d.f()

:    :  return 1

:    :endfun

:    py3 << EOF

:    d=vim.bindeval('d')

:    d['1']='asd'

:    d.update()  # Must not do anything, including throwing errors

:    d.update(b=[1, 2, f])

:    d.update((('-1', {'a': 1}),))

:    d.update({'0': -1})

:    dk = d.keys()

:    dv = d.values()

:    di = d.items()

:    dk.sort(key=repr)

:    dv.sort(key=repr)

:    di.sort(key=repr)

:    EOF

:    :$put =py3eval('d[''f''](self={})')

:    :$put =py3eval('repr(dk)')

:    :$put =substitute(py3eval('repr(dv)'),'0x\x\+','','g')

:    :$put =substitute(py3eval('repr(di)'),'0x\x\+','','g')

:    :for [key, Val] in sort(items(d))

:      :  $put =string(key) . ' : ' . string(Val)

:      :  unlet key Val

:      :endfor

:    :py3 del dk

:    :py3 del di

:    :py3 del dv

:    :"

:    :" 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']

:    :py3 del d['f']

:    :$put =string(py3eval('d.get(''b'', 1)'))

:    :$put =string(py3eval('d.pop(''b'')'))

:    :$put =string(py3eval('d.get(''b'', 1)'))

:    :$put =string(py3eval('d.pop(''1'', 2)'))

:    :$put =string(py3eval('d.pop(''1'', 2)'))

:    :$put =py3eval('repr(d.has_key(''0''))')

:    :$put =py3eval('repr(d.has_key(''1''))')

:    :$put =py3eval('repr(''0'' in d)')

:    :$put =py3eval('repr(''1'' in d)')

:    :$put =py3eval('repr(list(iter(d)))')

:    :$put =string(d)

:    :$put =py3eval('repr(d.popitem())')

:    :$put =py3eval('repr(d.get(''0''))')

:    :$put =py3eval('repr(list(iter(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)

:    :let l = [0, 1, 2, 3]

:    :py3 l=vim.bindeval('l')

:    :py3 del l[::2]

:    :$put =string(l)

:    :let l = [0, 1, 2, 3]

:    :py3 l=vim.bindeval('l')

:    :py3 del l[3:0:-2]

:    :$put =string(l)

:    :let l = [0, 1, 2, 3]

:    :py3 l=vim.bindeval('l')

:    :py3 del l[2:4:-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)

:    :let l = range(8)

:    :py3 l=vim.bindeval('l')

:    :py3 l[2:6:2] = [10, 20]

:    :$put =string(l)

:    :let l = range(8)

:    :py3 l=vim.bindeval('l')

:    :py3 l[6:2:-2] = [10, 20]

:    :$put =string(l)

:    :let l = range(8)

:    :py3 l=vim.bindeval('l')

:    :py3 l[6:2] = ()

:    :$put =string(l)

:    :let l = range(8)

:    :py3 l=vim.bindeval('l')

:    :py3 l[6:2:1] = ()

:    :$put =string(l)

:    :let l = range(8)

:    :py3 l=vim.bindeval('l')

:    :py3 l[2:2:1] = ()

:    :$put =string(l)

:    :"

:    :" Locked variables

:    :let l = [0, 1, 2, 3]

:    :py3 l=vim.bindeval('l')

:    :lockvar! l

:    py3 << EOF

:    def emsg(ei):

:        return ei[0].__name__ + ':' + repr(ei[1].args)

:    

:    try:

:        l[2]='i'

:    except vim.error:

:        cb.append('l[2] threw vim.error: ' + emsg(sys.exc_info()))

:    EOF

:    :$put =string(l)

:    :unlockvar! l

:    :"

:    :" Function calls

:    py3 << EOF

:    import sys

:    import re

:    

:    py33_type_error_pattern = re.compile('^__call__\(\) takes (\d+) positional

argument but (\d+) were given$')

:    

:    def ee(expr, g=globals(), l=locals()):

:        cb = vim.current.buffer

:        try:

:            try:

:                exec(expr, g, l)

:            except Exception as e:

:                if sys.version_info >= (3, 3) and e.__class__ is AttributeErro

r and str(e).find('has no attribute')>=0 and not str(e).startswith("'vim."):

:                    cb.append(expr + ':' + repr((e.__class__, AttributeError(s

tr(e)[str(e).rfind(" '") + 2:-1]))))

:                elif sys.version_info >= (3, 3) and e.__class__ is ImportError

and str(e).find('No module named \'') >= 0:

:                    cb.append(expr + ':' + repr((e.__class__, ImportError(str(

e).replace("'", '')))))

:                elif sys.version_info >= (3, 3) and e.__class__ is TypeError:

:                    m = py33_type_error_pattern.search(str(e))

:                    if m:

:                        msg = '__call__() takes exactly {0} positional argumen

t ({1} given)'.format(m.group(1), m.group(2))

:                        cb.append(expr + ':' + repr((e.__class__, TypeError(ms

g))))

:                    else:

:                        cb.append(expr + ':' + repr((e.__class__, e)))

:                elif sys.version_info >= (3, 5) and e.__class__ is ValueError 

and str(e) == 'embedded null byte':

:                    cb.append(expr + ':' + repr((TypeError, TypeError('expecte

d bytes with no null'))))

:                else:

:                    msg = repr((e.__class__, e))

:                    # Some Python versions say can't, others cannot.

:                    if msg.find('can\'t') > -1:

:                        msg = msg.replace('can\'t', 'cannot')

:                    # Some Python versions use single quote, some double quote

:                    if msg.find('"cannot ') > -1:

:                        msg = msg.replace('"cannot ', '\'cannot ')

:                    if msg.find(' attributes"') > -1:

:                        msg = msg.replace(' attributes"', ' attributes\'')

:                    cb.append(expr + ':' + msg)

:            else:

:                cb.append(expr + ':NOT FAILED')

:        except Exception as e:

:            cb.append(expr + '::' + repr((e.__class__, e)))

:    EOF

:    :fun New(...)

:      :   return ['NewStart']+a:000+['NewEnd']

:      :endfun

:      :fun DictNew(...) dict

::   return ['DictNewStart']+a:000+['DictNewEnd', self]

::endfun

::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)

::py3 ee('l[1](1, 2, 3)')

::py3 f=l[0]

::delfunction New

::py3 ee('f(1, 2, 3)')

::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

::let messages=[]

::delfunction DictNew

:py3 <<EOF

:import sys

:d=vim.bindeval('{}')

:m=vim.bindeval('messages')

:def em(expr, g=globals(), l=locals()):

:    try:

:        exec(expr, g, l)

:    except Exception as e:

:        if sys.version_info >= (3, 5) and e.__class__ is ValueError an

d str(e) == 'embedded null byte':

:            m.extend([TypeError.__name__])

:        else:

:            m.extend([e.__class__.__name__])

:

:em('d["abc1"]')

:em('d["abc1"]="\\0"')

:em('d["abc1"]=vim')

:em('d[""]=1')

:em('d["a\\0b"]=1')

:em('d[b"a\\0b"]=1')

:

:em('d.pop("abc1")')

:em('d.popitem()')

:del em

:del m

:EOF

::$put =messages

::unlet messages

::" locked and scope attributes

::let d={} | let dl={} | lockvar dl

::for s in split("d dl v: g:")

::    let name=tr(s, ':', 's')

::    execute 'py3 '.name.'=vim.bindeval("'.s.'")'

::    let toput=s.' : '.join(map(['locked', 'scope'], 'v:val.":".py3e

val(name.".".v:val)'), ';')

::    $put =toput

::endfor

::silent! let d.abc2=1

::silent! let dl.abc3=1

::py3 d.locked=True

::py3 dl.locked=False

::silent! let d.def=1

::silent! let dl.def=1

::put ='d:'.string(d)

::put ='dl:'.string(dl)

::unlet d dl

::

::let l=[] | let ll=[] | lockvar ll

::for s in split("l ll")

::    let name=tr(s, ':', 's')

::    execute 'py3 '.name.'=vim.bindeval("'.s.'")'

::    let toput=s.' : locked:'.py3eval(name.'.locked')

::    $put =toput

::endfor

::silent! call extend(l, [0])

::silent! call extend(ll, [0])

::py3 l.locked=True

::py3 ll.locked=False

::silent! call extend(l, [1])

::silent! call extend(ll, [1])

::put ='l:'.string(l)

::put ='ll:'.string(ll)

::unlet l ll

::"

::" py3eval()

::let l=py3eval('[0, 1, 2]')

::$put =string(l)

::let d=py3eval('{"a": "b", "c": 1, "d": ["e"]}')

::$put =sort(items(d))

::let v:errmsg = ''

::$put ='py3eval(\"None\") = ' . py3eval('None') . v:errmsg

::if has('float')

::   let f=py3eval('0.0')

::   $put =string(f)

::else

::   $put ='0.0'

::endif

::" Invalid values:

::for e in ['"\0"', '{"\0": 1}', 'undefined_name', 'vim']

::   try

::      let v=py3eval(e)

::   catch

::      let toput=e.":\t".v:exception[:13]

::      $put =toput

::   endtry

::endfor

::"

::" threading

::let l = [0]

::py3 l=vim.bindeval('l')

:py3 <<EOF

:import threading

:import time

:

:class T(threading.Thread):

:    def __init__(self):

:        threading.Thread.__init__(self)

:        self.t = 0

:        self.running = True

:

:    def run(self):

:        while self.running:

:            self.t += 1

:            time.sleep(0.1)

:

:t = T()

:del T

:t.start()

:EOF

::sleep 1

::py3 t.running = False

::py3 t.join()

::" Check if the background thread is working.  Count should be 10, but

on a

::" busy system (AppVeyor) it can be much lower.

::py3 l[0] = t.t > 4

::py3 del time

::py3 del threading

::py3 del t

::$put =string(l)

::"

::" settrace

::let l = []

::py3 l=vim.bindeval('l')

:py3 <<EOF

:import sys

:

:def traceit(frame, event, arg):

:    global l

:    if event == "line":

:        l += [frame.f_lineno]

:    return traceit

:

:def trace_main():

:    for i in range(5):

:        pass

:EOF

::py3 sys.settrace(traceit)

::py3 trace_main()

::py3 sys.settrace(None)

::py3 del traceit

::py3 del trace_main

::$put =string(l)

::"

::" Slice

::py3 ll = vim.bindeval('[0, 1, 2, 3, 4, 5]')

::py3 l = ll[:4]

::$put =string(py3eval('l'))

::py3 l = ll[2:]

::$put =string(py3eval('l'))

::py3 l = ll[:-4]

::$put =string(py3eval('l'))

::py3 l = ll[-2:]

::$put =string(py3eval('l'))

::py3 l = ll[2:4]

::$put =string(py3eval('l'))

::py3 l = ll[4:2]

::$put =string(py3eval('l'))

::py3 l = ll[-4:-2]

::$put =string(py3eval('l'))

::py3 l = ll[-2:-4]

::$put =string(py3eval('l'))

::py3 l = ll[:]

::$put =string(py3eval('l'))

::py3 l = ll[0:6]

::$put =string(py3eval('l'))

::py3 l = ll[-10:10]

::$put =string(py3eval('l'))

::py3 l = ll[4:2:-1]

::$put =string(py3eval('l'))

::py3 l = ll[::2]

::$put =string(py3eval('l'))

::py3 l = ll[4:2:1]

::$put =string(py3eval('l'))

::py3 del l

::"

::" Vars

::let g:foo = 'bac'

::let w:abc3 = 'def'

::let b:baz = 'bar'

::let t:bar = 'jkl'

::try

::  throw "Abc"

::catch

::  put =py3eval('vim.vvars[''exception'']')

::endtry

::put =py3eval('vim.vars[''foo'']')

::put =py3eval('vim.current.window.vars[''abc3'']')

::put =py3eval('vim.current.buffer.vars[''baz'']')

::put =py3eval('vim.current.tabpage.vars[''bar'']')

::"

::" Options

::" paste:          boolean, global

::" previewheight   number,  global

::" operatorfunc:   string,  global

::" number:         boolean, window-local

::" numberwidth:    number,  window-local

::" colorcolumn:    string,  window-local

::" statusline:     string,  window-local/global

::" autoindent:     boolean, buffer-local

::" shiftwidth:     number,  buffer-local

::" omnifunc:       string,  buffer-local

::" preserveindent: boolean, buffer-local/global

::" path:           string,  buffer-local/global

::let g:bufs=[bufnr('%')]

::new

::let g:bufs+=[bufnr('%')]

::vnew

::let g:bufs+=[bufnr('%')]

::wincmd j

::vnew

::let g:bufs+=[bufnr('%')]

::wincmd l

::fun RecVars(opt)

::  let gval =string(eval('&g:'.a:opt))

::  let wvals=join(map(range(1, 4),  'v:val.":".string(getwinvar(v:va

l, "&".a:opt))'))

::  let bvals=join(map(copy(g:bufs), 'v:val.":".string(getbufvar(v:va

l, "&".a:opt))'))

::  put ='  G: '.gval

::  put ='  W: '.wvals

::  put ='  B: '.wvals

::endfun

:py3 << EOF

:def e(s, g=globals(), l=locals()):

:    try:

:        exec(s, g, l)

:    except Exception as e:

:        vim.command('return ' + repr(e.__class__.__name__))

:

:def ev(s, g=globals(), l=locals()):

:    try:

:        return eval(s, g, l)

:    except Exception as e:

:        vim.command('let exc=' + repr(e.__class__.__name__))

:        return 0

:EOF

::fun E(s)

::   python3 e(vim.eval('a:s'))

::endfun

::fun Ev(s)

::   let r=py3eval('ev(vim.eval("a:s"))')

::   if exists('exc')

::       throw exc

::   endif

::   return r

::endfun

::py3 gopts1=vim.options

::py3 wopts1=vim.windows[2].options

::py3 wopts2=vim.windows[0].options

::py3 wopts3=vim.windows[1].options

::py3 bopts1=vim.buffers[vim.bindeval("g:bufs")[2]].options

::py3 bopts2=vim.buffers[vim.bindeval("g:bufs")[1]].options

::py3 bopts3=vim.buffers[vim.bindeval("g:bufs")[0]].options

::$put ='wopts iters equal: '.py3eval('list(wopts1) == list(wopts

2)')

::$put ='bopts iters equal: '.py3eval('list(bopts1) == list(bopts

2)')

::py3 gset=set(iter(gopts1))

::py3 wset=set(iter(wopts1))

::py3 bset=set(iter(bopts1))

::set path=.,..,,

::let lst=[]

::let lst+=[['paste',          1,     0,     1,     2,      1,   

1,      0    ]]

::let lst+=[['previewheight',  5,     1,     6,     'a',    0,   

1,      0    ]]

::let lst+=[['operatorfunc',   'A',   'B',   'C',   2,      0,   

1,      0    ]]

::let lst+=[['number',         0,     1,     1,     0,      1,   

0,      1    ]]

::let lst+=[['numberwidth',    2,     3,     5,     -100,   0,   

0,      1    ]]

::let lst+=[['colorcolumn',    '+1',  '+2',  '+3',  'abc4',  0,  

 0,      1    ]]

::let lst+=[['statusline',     '1',   '2',   '4',   0,      0,   

1,      1    ]]

::let lst+=[['autoindent',     0,     1,     1,     2,      1,   

0,      2    ]]

::let lst+=[['shiftwidth',     0,     2,     1,     3,      0,   

0,      2    ]]

::let lst+=[['omnifunc',       'A',   'B',   'C',   1,      0,   

0,      2    ]]

::let lst+=[['preserveindent', 0,     1,     1,     2,      1,   

1,      2    ]]

::let lst+=[['path',           '.,,', ',,',  '.',   0,      0,   

1,      2    ]]

::for       [oname,            oval1, oval2, oval3, invval, bool,

global, local] in lst

::   py3 oname=vim.eval('oname')

::   py3 oval1=vim.bindeval('oval1')

::   py3 oval2=vim.bindeval('oval2')

::   py3 oval3=vim.bindeval('oval3')

::   if invval is 0 || invval is 1

::       py3 invval=bool(vim.bindeval('invval'))

::   else

::       py3 invval=vim.bindeval('invval')

::   endif

::   if bool

::       py3 oval1=bool(oval1)

::       py3 oval2=bool(oval2)

::       py3 oval3=bool(oval3)

::   endif

::   put ='>>> '.oname

::   $put ='  g/w/b:'.py3eval('oname in gset').'/'.py3eval('ona

me in wset').'/'.py3eval('oname in bset')

::   $put ='  g/w/b (in):'.py3eval('oname in gopts1').'/'.py3ev

al('oname in wopts1').'/'.py3eval('oname in bopts1')

::   for v in ['gopts1', 'wopts1', 'bopts1']

::       try

::           put ='  p/'.v.': '.Ev('repr('.v.'['''.oname.''

'])')

::       catch

::           put ='  p/'.v.'! '.v:exception

::       endtry

::       let r=E(v.'['''.oname.''']=invval')

::       if r isnot 0

::           put ='  inv: '.string(invval).'! '.r

::       endif

::       for vv in (v is# 'gopts1' ? [v] : [v, v[:-2].'2', v[

:-2].'3'])

::           let val=substitute(vv, '^.opts', 'oval', '')

::           let r=E(vv.'['''.oname.''']='.val)

::           if r isnot 0

::               put ='  '.vv.'! '.r

::           endif

::       endfor

::   endfor

::   call RecVars(oname)

::   for v in ['wopts3', 'bopts3']

::       let r=E('del '.v.'["'.oname.'"]')

::       if r isnot 0

::           put ='  del '.v.'! '.r

::       endif

::   endfor

::   call RecVars(oname)

::endfor

::delfunction RecVars

::delfunction E

::delfunction Ev

::py3 del ev

::py3 del e

::only

::for buf in g:bufs[1:]

::   execute 'bwipeout!' buf

::endfor

::py3 del gopts1

::py3 del wopts1

::py3 del wopts2

::py3 del wopts3

::py3 del bopts1

::py3 del bopts2

::py3 del bopts3

::py3 del oval1

::py3 del oval2

::py3 del oval3

::py3 del oname

::py3 del invval

::"

::" Test buffer object

::vnew

::put ='First line'

::put ='Second line'

::put ='Third line'

::1 delete _

::py3 b=vim.current.buffer

::wincmd w

::mark a

::augroup BUFS

::   autocmd BufFilePost * python3 cb.append(vim.eval('expand("<a

buf>")') + ':BufFilePost:' + vim.eval('bufnr("%")'))

::   autocmd BufFilePre * python3 cb.append(vim.eval('expand("<ab

uf>")') + ':BufFilePre:' + vim.eval('bufnr("%")'))

::augroup END

:py3 << EOF

:# Tests BufferAppend and BufferItem

:cb.append(b[0])

:# Tests BufferSlice and BufferAssSlice

:cb.append('abc5') # Will be overwritten

:cb[-1:] = b[:-2]

:# Test BufferLength and BufferAssSlice

:cb.append('def') # Will not be overwritten

:cb[len(cb):] = b[:]

:# Test BufferAssItem and BufferMark

:cb.append('ghi') # Will be overwritten

:cb[-1] = repr((len(cb) - cb.mark('a')[0], cb.mark('a')[1]))

:# Test BufferRepr

:cb.append(repr(cb) + repr(b))

:# Modify foreign buffer

:b.append('foo')

:b[0]='bar'

:b[0:0]=['baz']

:vim.command('call append("$", getbufline(%i, 1, "$"))' % b.numbe

r)
:# Test assigning to name property

:import os

:old_name = cb.name

:cb.name = 'foo'

:cb.append(cb.name[-11:].replace(os.path.sep, '/'))

:b.name = 'bar'

:cb.append(b.name[-11:].replace(os.path.sep, '/'))

:cb.name = old_name

:cb.append(cb.name[-17:].replace(os.path.sep, '/'))

:del old_name

:# Test CheckBuffer

:for _b in vim.buffers:

:    if _b is not cb:

:        vim.command('bwipeout! ' + str(_b.number))

:del _b

:cb.append('valid: b:%s, cb:%s' % (repr(b.valid), repr(cb.valid))

)
:for expr in ('b[1]','b[:] = ["A", "B"]','b[:]','b.append("abc6")

'):

:    try:

:        exec(expr)

:    except vim.error:

:        pass

:    else:

:        # Usually a SEGV here

:        # Should not happen in any case

:        cb.append('No exception for ' + expr)

:vim.command('cd .')

:del b

:EOF

::"

::" Test vim.buffers object

::set hidden

::edit a

::buffer #

::edit b

::buffer #

::edit c

::buffer #

:py3 << EOF

:# Check GCing iterator that was not fully exhausted

:i = iter(vim.buffers)

:cb.append('i:' + str(next(i)))

:# and also check creating more than one iterator at a time

:i2 = iter(vim.buffers)

:cb.append('i2:' + str(next(i2)))

:cb.append('i:' + str(next(i)))

:# The following should trigger GC and not cause any problems

:del i

:del i2

:i3 = iter(vim.buffers)

:cb.append('i3:' + str(next(i3)))

:del i3

:

:prevnum = 0

:for b in vim.buffers:

:    # Check buffer order

:    if prevnum >= b.number:

:        cb.append('!!! Buffer numbers not in strictly ascending 

order')

:    # Check indexing: vim.buffers[number].number == number

:    cb.append(str(b.number) + ':' + repr(vim.buffers[b.number]) 

+ '=' + repr(b))

:    prevnum = b.number

:del prevnum

:

:cb.append(str(len(vim.buffers)))

:

:bnums = list(map(lambda b: b.number, vim.buffers))[1:]

:

:# Test wiping out buffer with existing iterator

:i4 = iter(vim.buffers)

:cb.append('i4:' + str(next(i4)))

:vim.command('bwipeout! ' + str(bnums.pop(0)))

:try:

:    next(i4)

:except vim.error:

:    pass

:else:

:    cb.append('!!!! No vim.error')

:i4 = iter(vim.buffers)

:vim.command('bwipeout! ' + str(bnums.pop(-1)))

:vim.command('bwipeout! ' + str(bnums.pop(-1)))

:cb.append('i4:' + str(next(i4)))

:try:

:    next(i4)

:except StopIteration:

:    cb.append('StopIteration')

:del i4

:del bnums

:EOF

::"

::" Test vim.{tabpage,window}list and vim.{tabpage,window} object

s
::tabnew 0

::tabnew 1

::vnew a.1

::tabnew 2

::vnew a.2

::vnew b.2

::vnew c.2

:py3 << EOF

:cb.append('Number of tabs: ' + str(len(vim.tabpages)))

:cb.append('Current tab pages:')

:

:def W(w):

:    if '(unknown)' in repr(w):

:        return '<window object (unknown)>'

:    else:

:        return repr(w)

:

:def Cursor(w, start=len(cb)):

:    if w.buffer is cb:

:        return repr((start - w.cursor[0], w.cursor[1]))

:    else:

:        return repr(w.cursor)

:

:for t in vim.tabpages:

:    cb.append('  ' + repr(t) + '(' + str(t.number) + ')' + ': ' 

+ str(len(t.windows)) + ' windows, current is ' + W(t.window))

:    cb.append('  Windows:')

:    for w in t.windows:

:        cb.append('    ' + W(w) + '(' + str(w.number) + ')' + ':

displays buffer ' + repr(w.buffer) + '; cursor is at ' + Cursor(w))

:        # Other values depend on the size of the terminal, so th

ey are checked partly:

:        for attr in ('height', 'row', 'width', 'col'):

:            try:

:                aval = getattr(w, attr)

:                if type(aval) is not int:

:                    raise TypeError

:                if aval < 0:

:                    raise ValueError

:            except Exception as e:

:                cb.append('!!!!!! Error while getting attribute 

' + attr + ': ' + e.__class__.__name__)

:        del aval

:        del attr

:        w.cursor = (len(w.buffer), 0)

:del W

:del Cursor

:cb.append('Number of windows in current tab page: ' + str(len(vi

m.windows)))

:if list(vim.windows) != list(vim.current.tabpage.windows):

:    cb.append('!!!!!! Windows differ')

:EOF

::"

::" Test vim.current

:py3 << EOF

:def H(o):

:    return repr(o)

:cb.append('Current tab page: ' + repr(vim.current.tabpage))

:cb.append('Current window: ' + repr(vim.current.window) + ': ' +

H(vim.current.window) + ' is ' + H(vim.current.tabpage.window))

:cb.append('Current buffer: ' + repr(vim.current.buffer) + ': ' +

H(vim.current.buffer) + ' is ' + H(vim.current.window.buffer)+ ' is ' + H(vim.c

urrent.tabpage.window.buffer))

:del H

:# Assigning: fails

:try:

:    vim.current.window = vim.tabpages[0].window

:except ValueError:

:    cb.append('ValueError at assigning foreign tab window')

:

:for attr in ('window', 'tabpage', 'buffer'):

:    try:

:        setattr(vim.current, attr, None)

:    except TypeError:

:        cb.append('Type error at assigning None to vim.current.'

+ attr)

:del attr

:

:# Assigning: success

:vim.current.tabpage = vim.tabpages[-2]

:vim.current.buffer = cb

:vim.current.window = vim.windows[0]

:vim.current.window.cursor = (len(vim.current.buffer), 0)

:cb.append('Current tab page: ' + repr(vim.current.tabpage))

:cb.append('Current window: ' + repr(vim.current.window))

:cb.append('Current buffer: ' + repr(vim.current.buffer))

:cb.append('Current line: ' + repr(vim.current.line))

:ws = list(vim.windows)

:ts = list(vim.tabpages)

:for b in vim.buffers:

:    if b is not cb:

:        vim.command('bwipeout! ' + str(b.number))

:del b

:cb.append('w.valid: ' + repr([w.valid for w in ws]))

:cb.append('t.valid: ' + repr([t.valid for t in ts]))

:del w

:del t

:del ts

:del ws

:EOF

::tabonly!

::only!

::"

::" Test types

:py3 << EOF

:for expr, attr in (

:    ('vim.vars',                         'Dictionary'),

:    ('vim.options',                      'Options'),

:    ('vim.bindeval("{}")',               'Dictionary'),

:    ('vim.bindeval("[]")',               'List'),

:    ('vim.bindeval("function(\'tr\')")', 'Function'),

:    ('vim.current.buffer',               'Buffer'),

:    ('vim.current.range',                'Range'),

:    ('vim.current.window',               'Window'),

:    ('vim.current.tabpage',              'TabPage'),

:):

:    cb.append(expr + ':' + attr + ':' + repr(type(eval(expr)) is

getattr(vim, attr)))

:del expr

:del attr

:EOF

::"

::" Test __dir__() method

:py3 << EOF

:for name, o in (

:        ('current',    vim.current),

:        ('buffer',     vim.current.buffer),

:        ('window',     vim.current.window),

:        ('tabpage',    vim.current.tabpage),

:        ('range',      vim.current.range),

:        ('dictionary', vim.bindeval('{}')),

:        ('list',       vim.bindeval('[]')),

:        ('function',   vim.bindeval('function("tr")')),

:        ('output',     sys.stdout),

:    ):

:    cb.append(name + ':' + ','.join(dir(o)))

:del name

:del o

:EOF

::"

::" Test vim.*.__new__

::$put =string(py3eval('vim.Dictionary({})'))

::$put =string(py3eval('vim.Dictionary(a=1)'))

::$put =string(py3eval('vim.Dictionary(((''a'', 1),))'))

::$put =string(py3eval('vim.List()'))

::$put =string(py3eval('vim.List(iter(''abc7''))'))

::$put =string(py3eval('vim.Function(''tr'')'))

::$put =string(py3eval('vim.Function(''tr'', args=[123, 3, 4])'))

::$put =string(py3eval('vim.Function(''tr'', args=[])'))

::$put =string(py3eval('vim.Function(''tr'', self={})'))

::$put =string(py3eval('vim.Function(''tr'', args=[123, 3, 4], se

lf={})'))

::$put ='auto_rebind'

::$put =string(py3eval('vim.Function(''tr'', auto_rebind=False)')

)
::$put =string(py3eval('vim.Function(''tr'', args=[123, 3, 4], au

to_rebind=False)'))

::$put =string(py3eval('vim.Function(''tr'', args=[], auto_rebind

=False)'))

::$put =string(py3eval('vim.Function(''tr'', self={}, auto_rebind

=False)'))

::$put =string(py3eval('vim.Function(''tr'', args=[123, 3, 4], se

lf={}, auto_rebind=False)'))

::"

::" Test vim.Function

::function Args(...)

::   return a:000

::endfunction

::function SelfArgs(...) dict

::   return [a:000, self]

::endfunction

::" The following four lines should not crash

::let Pt = function('tr', [[]], {'l': []})

::py3 Pt = vim.bindeval('Pt')

::unlet Pt

::py3 del Pt

:py3 << EOF

:def ecall(out_prefix, func, *args, **kwargs):

:    line = out_prefix + ': '

:    try:

:        ret = func(*args, **kwargs)

:    except Exception:

:        line += '!exception: ' + emsg(sys.exc_info())

:    else:

:        line += '!result: ' + str(vim.Function('string')(ret

), 'utf-8')

:    cb.append(line)

:a = vim.Function('Args')

:pa1 = vim.Function('Args', args=['abcArgsPA1'])

:pa2 = vim.Function('Args', args=[])

:pa3 = vim.Function('Args', args=['abcArgsPA3'], self={'abcSe

lfPA3': 'abcSelfPA3Val'})

:pa4 = vim.Function('Args', self={'abcSelfPA4': 'abcSelfPA4Va

l'})

:cb.append('a: ' + repr(a))

:cb.append('pa1: ' + repr(pa1))

:cb.append('pa2: ' + repr(pa2))

:cb.append('pa3: ' + repr(pa3))

:cb.append('pa4: ' + repr(pa4))

:sa = vim.Function('SelfArgs')

:psa1 = vim.Function('SelfArgs', args=['abcArgsPSA1'])

:psa2 = vim.Function('SelfArgs', args=[])

:psa3 = vim.Function('SelfArgs', args=['abcArgsPSA3'], self={

'abcSelfPSA3': 'abcSelfPSA3Val'})

:psa4 = vim.Function('SelfArgs', self={'abcSelfPSA4': 'abcSel

fPSA4Val'})

:psa5 = vim.Function('SelfArgs', self={'abcSelfPSA5': 'abcSel

fPSA5Val'}, auto_rebind=0)

:psa6 = vim.Function('SelfArgs', args=['abcArgsPSA6'], self={

'abcSelfPSA6': 'abcSelfPSA6Val'}, auto_rebind=())

:psa7 = vim.Function('SelfArgs', args=['abcArgsPSA7'], auto_r

ebind=[])

:psa8 = vim.Function('SelfArgs', auto_rebind=False)

:psa9 = vim.Function('SelfArgs', self={'abcSelfPSA9': 'abcSel

fPSA9Val'}, auto_rebind=True)

:psaA = vim.Function('SelfArgs', args=['abcArgsPSAA'], self={

'abcSelfPSAA': 'abcSelfPSAAVal'}, auto_rebind=1)

:psaB = vim.Function('SelfArgs', args=['abcArgsPSAB'], auto_r

ebind={'abcARPSAB': 'abcARPSABVal'})

:psaC = vim.Function('SelfArgs', auto_rebind=['abcARPSAC'])

:cb.append('sa: ' + repr(sa))

:cb.append('psa1: ' + repr(psa1))

:cb.append('psa2: ' + repr(psa2))

:cb.append('psa3: ' + repr(psa3))

:cb.append('psa4: ' + repr(psa4))

:cb.append('psa5: ' + repr(psa5))

:cb.append('psa6: ' + repr(psa6))

:cb.append('psa7: ' + repr(psa7))

:cb.append('psa8: ' + repr(psa8))

:cb.append('psa9: ' + repr(psa9))

:cb.append('psaA: ' + repr(psaA))

:cb.append('psaB: ' + repr(psaB))

:cb.append('psaC: ' + repr(psaC))

:

:psar = vim.Function('SelfArgs', args=[{'abcArgsPSAr': 'abcAr

gsPSArVal'}], self={'abcSelfPSAr': 'abcSelfPSArVal'})

:psar.args[0]['abcArgsPSAr2'] = [psar.self, psar.args[0]]

:psar.self['rec'] = psar

:psar.self['self'] = psar.self

:psar.self['args'] = psar.args

:

:try:

:    cb.append('psar: ' + repr(psar))

:except Exception:

:    cb.append('!!!!!!!! Caught exception: ' + emsg(sys.exc_i

nfo()))

:EOF

::$put ='s(a): '.string(py3eval('a'))

::$put ='s(pa1): '.string(py3eval('pa1'))

::$put ='s(pa2): '.string(py3eval('pa2'))

::$put ='s(pa3): '.string(py3eval('pa3'))

::$put ='s(pa4): '.string(py3eval('pa4'))

::$put ='s(sa): '.string(py3eval('sa'))

::$put ='s(psa1): '.string(py3eval('psa1'))

::$put ='s(psa2): '.string(py3eval('psa2'))

::$put ='s(psa3): '.string(py3eval('psa3'))

::$put ='s(psa4): '.string(py3eval('psa4'))

::$put ='s(psa5): '.string(py3eval('psa5'))

::$put ='s(psa6): '.string(py3eval('psa6'))

::$put ='s(psa7): '.string(py3eval('psa7'))

::$put ='s(psa8): '.string(py3eval('psa8'))

::$put ='s(psa9): '.string(py3eval('psa9'))

::$put ='s(psaA): '.string(py3eval('psaA'))

::$put ='s(psaB): '.string(py3eval('psaB'))

::$put ='s(psaC): '.string(py3eval('psaC'))

::

::for v in ['sa', 'psa1', 'psa2', 'psa3', 'psa4', 'psa5', 'ps

a6', 'psa7', 'psa8', 'psa9', 'psaA', 'psaB', 'psaC']

::   let d = {'f': py3eval(v)}

::   $put ='d.'.v.'(): '.string(d.f())

::endfor

::

::py3 ecall('a()', a, )

::py3 ecall('pa1()', pa1, )

::py3 ecall('pa2()', pa2, )

::py3 ecall('pa3()', pa3, )

::py3 ecall('pa4()', pa4, )

::py3 ecall('sa()', sa, )

::py3 ecall('psa1()', psa1, )

::py3 ecall('psa2()', psa2, )

::py3 ecall('psa3()', psa3, )

::py3 ecall('psa4()', psa4, )

::

::py3 ecall('a(42, 43)', a, 42, 43)

::py3 ecall('pa1(42, 43)', pa1, 42, 43)

::py3 ecall('pa2(42, 43)', pa2, 42, 43)

::py3 ecall('pa3(42, 43)', pa3, 42, 43)

::py3 ecall('pa4(42, 43)', pa4, 42, 43)

::py3 ecall('sa(42, 43)', sa, 42, 43)

::py3 ecall('psa1(42, 43)', psa1, 42, 43)

::py3 ecall('psa2(42, 43)', psa2, 42, 43)

::py3 ecall('psa3(42, 43)', psa3, 42, 43)

::py3 ecall('psa4(42, 43)', psa4, 42, 43)

::

::py3 ecall('a(42, self={"20": 1})', a, 42, self={'20': 1})

::py3 ecall('pa1(42, self={"20": 1})', pa1, 42, self={'20': 1

})
::py3 ecall('pa2(42, self={"20": 1})', pa2, 42, self={'20': 1

})
::py3 ecall('pa3(42, self={"20": 1})', pa3, 42, self={'20': 1

})
::py3 ecall('pa4(42, self={"20": 1})', pa4, 42, self={'20': 1

})
::py3 ecall('sa(42, self={"20": 1})', sa, 42, self={'20': 1})

::py3 ecall('psa1(42, self={"20": 1})', psa1, 42, self={'20':

1})

::py3 ecall('psa2(42, self={"20": 1})', psa2, 42, self={'20':

1})

::py3 ecall('psa3(42, self={"20": 1})', psa3, 42, self={'20':

1})

::py3 ecall('psa4(42, self={"20": 1})', psa4, 42, self={'20':

1})

::

::py3 ecall('a(self={"20": 1})', a, self={'20': 1})

::py3 ecall('pa1(self={"20": 1})', pa1, self={'20': 1})

::py3 ecall('pa2(self={"20": 1})', pa2, self={'20': 1})

::py3 ecall('pa3(self={"20": 1})', pa3, self={'20': 1})

::py3 ecall('pa4(self={"20": 1})', pa4, self={'20': 1})

::py3 ecall('sa(self={"20": 1})', sa, self={'20': 1})

::py3 ecall('psa1(self={"20": 1})', psa1, self={'20': 1})

::py3 ecall('psa2(self={"20": 1})', psa2, self={'20': 1})

::py3 ecall('psa3(self={"20": 1})', psa3, self={'20': 1})

::py3 ecall('psa4(self={"20": 1})', psa4, self={'20': 1})

:py3 << EOF

:def s(v):

:    if v is None:

:        return repr(v)

:    else:

:        return str(vim.Function('string')(v), 'utf-8')

:

:cb.append('a.args: ' + s(a.args))

:cb.append('pa1.args: ' + s(pa1.args))

:cb.append('pa2.args: ' + s(pa2.args))

:cb.append('pa3.args: ' + s(pa3.args))

:cb.append('pa4.args: ' + s(pa4.args))

:cb.append('sa.args: ' + s(sa.args))

:cb.append('psa1.args: ' + s(psa1.args))

:cb.append('psa2.args: ' + s(psa2.args))

:cb.append('psa3.args: ' + s(psa3.args))

:cb.append('psa4.args: ' + s(psa4.args))

:

:cb.append('a.self: ' + s(a.self))

:cb.append('pa1.self: ' + s(pa1.self))

:cb.append('pa2.self: ' + s(pa2.self))

:cb.append('pa3.self: ' + s(pa3.self))

:cb.append('pa4.self: ' + s(pa4.self))

:cb.append('sa.self: ' + s(sa.self))

:cb.append('psa1.self: ' + s(psa1.self))

:cb.append('psa2.self: ' + s(psa2.self))

:cb.append('psa3.self: ' + s(psa3.self))

:cb.append('psa4.self: ' + s(psa4.self))

:

:cb.append('a.name: ' + s(a.name))

:cb.append('pa1.name: ' + s(pa1.name))

:cb.append('pa2.name: ' + s(pa2.name))

:cb.append('pa3.name: ' + s(pa3.name))

:cb.append('pa4.name: ' + s(pa4.name))

:cb.append('sa.name: ' + s(sa.name))

:cb.append('psa1.name: ' + s(psa1.name))

:cb.append('psa2.name: ' + s(psa2.name))

:cb.append('psa3.name: ' + s(psa3.name))

:cb.append('psa4.name: ' + s(psa4.name))

:

:cb.append('a.auto_rebind: ' + s(a.auto_rebind))

:cb.append('pa1.auto_rebind: ' + s(pa1.auto_rebind))

:cb.append('pa2.auto_rebind: ' + s(pa2.auto_rebind))

:cb.append('pa3.auto_rebind: ' + s(pa3.auto_rebind))

:cb.append('pa4.auto_rebind: ' + s(pa4.auto_rebind))

:cb.append('sa.auto_rebind: ' + s(sa.auto_rebind))

:cb.append('psa1.auto_rebind: ' + s(psa1.auto_rebind))

:cb.append('psa2.auto_rebind: ' + s(psa2.auto_rebind))

:cb.append('psa3.auto_rebind: ' + s(psa3.auto_rebind))

:cb.append('psa4.auto_rebind: ' + s(psa4.auto_rebind))

:cb.append('psa5.auto_rebind: ' + s(psa5.auto_rebind))

:cb.append('psa6.auto_rebind: ' + s(psa6.auto_rebind))

:cb.append('psa7.auto_rebind: ' + s(psa7.auto_rebind))

:cb.append('psa8.auto_rebind: ' + s(psa8.auto_rebind))

:cb.append('psa9.auto_rebind: ' + s(psa9.auto_rebind))

:cb.append('psaA.auto_rebind: ' + s(psaA.auto_rebind))

:cb.append('psaB.auto_rebind: ' + s(psaB.auto_rebind))

:cb.append('psaC.auto_rebind: ' + s(psaC.auto_rebind))

:

:del s

:

:del a

:del pa1

:del pa2

:del pa3

:del pa4

:del sa

:del psa1

:del psa2

:del psa3

:del psa4

:del psa5

:del psa6

:del psa7

:del psa8

:del psa9

:del psaA

:del psaB

:del psaC

:del psar

:

:del ecall

:EOF

::"

::" Test stdout/stderr

::redir => messages

::py3 sys.stdout.write('abc8') ; sys.stdout.write('def')

::py3 sys.stderr.write('abc9') ; sys.stderr.write('def')

::py3 sys.stdout.writelines(iter('abcA'))

::py3 sys.stderr.writelines(iter('abcB'))

::redir END

::$put =string(substitute(messages, '\d\+', '', 'g'))

::" Test subclassing

::fun Put(...)

::   $put =string(a:000)

::   return a:000

::endfun

:py3 << EOF

:class DupDict(vim.Dictionary):

:    def __setitem__(self, key, value):

:        super(DupDict, self).__setitem__(key, value)

:        super(DupDict, self).__setitem__('dup_' + key, val

ue)

:dd = DupDict()

:dd['a'] = 'b'

:

:class DupList(vim.List):

:    def __getitem__(self, idx):

:        return [super(DupList, self).__getitem__(idx)] * 2

:

:dl = DupList()

:dl2 = DupList(iter('abcC'))

:dl.extend(dl2[0])

:

:class DupFun(vim.Function):

:    def __call__(self, arg):

:        return super(DupFun, self).__call__(arg, arg)

:

:df = DupFun('Put')

:EOF

::$put =string(sort(keys(py3eval('dd'))))

::$put =string(py3eval('dl'))

::$put =string(py3eval('dl2'))

::$put =string(py3eval('df(2)'))

::$put =string(py3eval('dl') is# py3eval('dl'))

::$put =string(py3eval('dd') is# py3eval('dd'))

::$put =string(py3eval('df'))

::delfunction Put

:py3 << EOF

:del DupDict

:del DupList

:del DupFun

:del dd

:del dl

:del dl2

:del df

:EOF

::"

::" Test chdir

:py3 << EOF

:import os

:fnamemodify = vim.Function('fnamemodify')

:cb.append(str(fnamemodify('.', ':p:h:t')))

:cb.append(vim.eval('@%'))

:os.chdir('..')

:path = fnamemodify('.', ':p:h:t')

:if path != b'src':

:  # Running tests from a shadow directory, so move up anot

her level

:  # This will result in @% looking like shadow/testdir/tes

t87.in, hence the

:  # slicing to remove the leading path and path separator

:  os.chdir('..')

:  cb.append(str(fnamemodify('.', ':p:h:t')))

:  cb.append(vim.eval('@%')[len(path)+1:].replace(os.path.s

ep, '/'))

:  os.chdir(path)

:else:

:  cb.append(str(fnamemodify('.', ':p:h:t')))

:  cb.append(vim.eval('@%').replace(os.path.sep, '/'))

:del path

:os.chdir('testdir')

:cb.append(str(fnamemodify('.', ':p:h:t')))

:cb.append(vim.eval('@%'))

:del fnamemodify

:EOF

::"

::" Test errors

::fun F() dict

::endfun

::fun D()

::endfun

:py3 << EOF

:d = vim.Dictionary()

:ned = vim.Dictionary(foo='bar', baz='abcD')

:dl = vim.Dictionary(a=1)

:dl.locked = True

:l = vim.List()

:ll = vim.List('abcE')

:ll.locked = True

:nel = vim.List('abcO')

:f = vim.Function('string')

:fd = vim.Function('F')

:fdel = vim.Function('D')

:vim.command('delfunction D')

:

:def subexpr_test(expr, name, subexprs):

:    cb.append('>>> Testing %s using %s' % (name, expr)

)
:    for subexpr in subexprs:

:        ee(expr % subexpr)

:    cb.append('<<< Finished')

:

:def stringtochars_test(expr):

:    return subexpr_test(expr, 'StringToChars', (

:        '1',       # Fail type checks

:        'b"\\0"',  # Fail PyString_AsStringAndSize(obj

ect, , NULL) check

:        '"\\0"',   # Fail PyString_AsStringAndSize(byt

es, , NULL) check

:    ))

:

:class Mapping(object):

:    def __init__(self, d):

:        self.d = d

:

:    def __getitem__(self, key):

:        return self.d[key]

:

:    def keys(self):

:        return self.d.keys()

:

:    def items(self):

:        return self.d.items()

:

:def convertfrompyobject_test(expr, recurse=True):

:    # pydict_to_tv

:    stringtochars_test(expr % '{%s : 1}')

:    if recurse:

:        convertfrompyobject_test(expr % '{"abcF" : %s}

', False)

:    # pymap_to_tv

:    stringtochars_test(expr % 'Mapping({%s : 1})')

:    if recurse:

:        convertfrompyobject_test(expr % 'Mapping({"abc

G" : %s})', False)

:    # pyseq_to_tv

:    iter_test(expr)

:    return subexpr_test(expr, 'ConvertFromPyObject', (

:        'None',                 # Not conversible

:        '{b"": 1}',             # Empty key not allowe

d
:        '{"": 1}',              # Same, but with unico

de object

:        'FailingMapping()',     #

:        'FailingMappingKey()',  #

:        'FailingNumber()',      #

:    ))

:

:def convertfrompymapping_test(expr):

:    convertfrompyobject_test(expr)

:    return subexpr_test(expr, 'ConvertFromPyMapping', 

(
:        '[]',

:    ))

:

:def iter_test(expr):

:    return subexpr_test(expr, '*Iter*', (

:        'FailingIter()',

:        'FailingIterNext()',

:    ))

:

:def number_test(expr, natural=False, unsigned=False):

:    if natural:

:        unsigned = True

:    return subexpr_test(expr, 'NumberToLong', (

:        '[]',

:        'None',

:    ) + (('-1',) if unsigned else ())

:    + (('0',) if natural else ()))

:

:class FailingTrue(object):

:    def __bool__(self):

:        raise NotImplementedError('bool')

:

:class FailingIter(object):

:    def __iter__(self):

:        raise NotImplementedError('iter')

:

:class FailingIterNext(object):

:    def __iter__(self):

:        return self

:

:    def __next__(self):

:        raise NotImplementedError('next')

:

:class FailingIterNextN(object):

:    def __init__(self, n):

:        self.n = n

:

:    def __iter__(self):

:        return self

:

:    def __next__(self):

:        if self.n:

:            self.n -= 1

:            return 1

:        else:

:            raise NotImplementedError('next N')

:

:class FailingMappingKey(object):

:    def __getitem__(self, item):

:        raise NotImplementedError('getitem:mappingkey'

)
:

:    def keys(self):

:        return list("abcH")

:

:class FailingMapping(object):

:    def __getitem__(self):

:        raise NotImplementedError('getitem:mapping')

:

:    def keys(self):

:        raise NotImplementedError('keys')

:

:class FailingList(list):

:    def __getitem__(self, idx):

:        if i == 2:

:            raise NotImplementedError('getitem:list')

:        else:

:            return super(FailingList, self).__getitem_

_(idx)

:

:class NoArgsCall(object):

:    def __call__(self):

:        pass

:

:class FailingCall(object):

:    def __call__(self, path):

:        raise NotImplementedError('call')

:

:class FailingNumber(object):

:    def __int__(self):

:        raise NotImplementedError('int')

:

:cb.append("> Output")

:cb.append(">> OutputSetattr")

:ee('del sys.stdout.softspace')

:number_test('sys.stdout.softspace = %s', unsigned=True

)
:number_test('sys.stderr.softspace = %s', unsigned=True

)
:ee('assert sys.stdout.isatty()==False')

:ee('assert sys.stdout.seekable()==False')

:ee('sys.stdout.close()')

:ee('sys.stdout.flush()')

:ee('assert sys.stderr.isatty()==False')

:ee('assert sys.stderr.seekable()==False')

:ee('sys.stderr.close()')

:ee('sys.stderr.flush()')

:ee('sys.stdout.attr = None')

:cb.append(">> OutputWrite")

:ee('assert sys.stdout.writable()==True')

:ee('assert sys.stdout.readable()==False')

:ee('assert sys.stderr.writable()==True')

:ee('assert sys.stderr.readable()==False')

:ee('assert sys.stdout.closed()==False')

:ee('assert sys.stderr.closed()==False')

:ee('assert sys.stdout.errors=="strict"')

:ee('assert sys.stderr.errors=="strict"')

:ee('assert sys.stdout.encoding==sys.stderr.encoding')

:ee('sys.stdout.write(None)')

:cb.append(">> OutputWriteLines")

:ee('sys.stdout.writelines(None)')

:ee('sys.stdout.writelines([1])')

:iter_test('sys.stdout.writelines(%s)')

:cb.append("> VimCommand")

:stringtochars_test('vim.command(%s)')

:ee('vim.command("", 2)')

:#! Not checked: vim->python exceptions translating: ch

ecked later

:cb.append("> VimToPython")

:#! Not checked: everything: needs errors in internal p

ython functions

:cb.append("> VimEval")

:stringtochars_test('vim.eval(%s)')

:ee('vim.eval("", FailingTrue())')

:#! Not checked: everything: needs errors in internal p

ython functions

:cb.append("> VimEvalPy")

:stringtochars_test('vim.bindeval(%s)')

:ee('vim.eval("", 2)')

:#! Not checked: vim->python exceptions translating: ch

ecked later

:cb.append("> VimStrwidth")

:stringtochars_test('vim.strwidth(%s)')

:cb.append("> VimForeachRTP")

:ee('vim.foreach_rtp(None)')

:ee('vim.foreach_rtp(NoArgsCall())')

:ee('vim.foreach_rtp(FailingCall())')

:ee('vim.foreach_rtp(int, 2)')

:cb.append('> import')

:old_rtp = vim.options['rtp']

:vim.options['rtp'] = os.getcwd().replace('\\', '\\\\')

.replace(',', '\\,')

:ee('import xxx_no_such_module_xxx')

:ee('import failing_import')

:ee('import failing')

:vim.options['rtp'] = old_rtp

:del old_rtp

:cb.append("> Options")

:cb.append(">> OptionsItem")

:ee('vim.options["abcQ"]')

:ee('vim.options[""]')

:stringtochars_test('vim.options[%s]')

:cb.append(">> OptionsContains")

:stringtochars_test('%s in vim.options')

:cb.append("> Dictionary")

:cb.append(">> DictionaryConstructor")

:ee('vim.Dictionary("abcI")')

:##! Not checked: py_dict_alloc failure

:cb.append(">> DictionarySetattr")

:ee('del d.locked')

:ee('d.locked = FailingTrue()')

:ee('vim.vvars.locked = False')

:ee('d.scope = True')

:ee('d.xxx = True')

:cb.append(">> _DictionaryItem")

:ee('d.get("a", 2, 3)')

:stringtochars_test('d.get(%s)')

:ee('d.pop("a")')

:ee('dl.pop("a")')

:cb.append(">> DictionaryContains")

:ee('"" in d')

:ee('0 in d')

:cb.append(">> DictionaryIterNext")

:ee('for i in ned: ned["a"] = 1')

:del i

:cb.append(">> DictionaryAssItem")

:ee('dl["b"] = 1')

:stringtochars_test('d[%s] = 1')

:convertfrompyobject_test('d["a"] = %s')

:cb.append(">> DictionaryUpdate")

:cb.append(">>> kwargs")

:cb.append(">>> iter")

:ee('d.update(FailingMapping())')

:ee('d.update([FailingIterNext()])')

:ee('d.update([FailingIterNextN(1)])')

:iter_test('d.update(%s)')

:convertfrompyobject_test('d.update(%s)')

:stringtochars_test('d.update(((%s, 0),))')

:convertfrompyobject_test('d.update((("a", %s),))')

:cb.append(">> DictionaryPopItem")

:ee('d.popitem(1, 2)')

:cb.append(">> DictionaryHasKey")

:ee('d.has_key()')

:cb.append("> List")

:cb.append(">> ListConstructor")

:ee('vim.List(1, 2)')

:ee('vim.List(a=1)')

:iter_test('vim.List(%s)')

:convertfrompyobject_test('vim.List([%s])')

:cb.append(">> ListItem")

:ee('l[1000]')

:cb.append(">> ListAssItem")

:ee('ll[1] = 2')

:ee('l[1000] = 3')

:cb.append(">> ListAssSlice")

:ee('ll[1:100] = "abcJ"')

:iter_test('l[:] = %s')

:ee('nel[1:10:2]  = "abcK"')

:cb.append(repr(tuple(nel)))

:ee('nel[1:10:2]  = "a"')

:cb.append(repr(tuple(nel)))

:ee('nel[1:1:-1]  = "a"')

:cb.append(repr(tuple(nel)))

:ee('nel[:] = FailingIterNextN(2)')

:cb.append(repr(tuple(nel)))

:convertfrompyobject_test('l[:] = [%s]')

:cb.append(">> ListConcatInPlace")

:iter_test('l.extend(%s)')

:convertfrompyobject_test('l.extend([%s])')

:cb.append(">> ListSetattr")

:ee('del l.locked')

:ee('l.locked = FailingTrue()')

:ee('l.xxx = True')

:cb.append("> Function")

:cb.append(">> FunctionConstructor")

:cb.append(">>> FunctionConstructor")

:ee('vim.Function("123")')

:ee('vim.Function("xxx_non_existent_function_xxx")')

:ee('vim.Function("xxx#non#existent#function#xxx")')

:ee('vim.Function("xxx_non_existent_function_xxx2", arg

s=[])')

:ee('vim.Function("xxx_non_existent_function_xxx3", sel

f={})')

:ee('vim.Function("xxx_non_existent_function_xxx4", arg

s=[], self={})')

:cb.append(">>> FunctionNew")

:ee('vim.Function("tr", self="abcFuncSelf")')

:ee('vim.Function("tr", args=427423)')

:ee('vim.Function("tr", self="abcFuncSelf2", args="abcF

uncArgs2")')

:ee('vim.Function(self="abcFuncSelf2", args="abcFuncArg

s2")')

:ee('vim.Function("tr", "", self="abcFuncSelf2", args="

abcFuncArgs2")')

:ee('vim.Function("tr", "")')

:cb.append(">> FunctionCall")

:convertfrompyobject_test('f(%s)')

:convertfrompymapping_test('fd(self=%s)')

:cb.append("> TabPage")

:cb.append(">> TabPageAttr")

:ee('vim.current.tabpage.xxx')

:cb.append("> TabList")

:cb.append(">> TabListItem")

:ee('vim.tabpages[1000]')

:cb.append("> Window")

:cb.append(">> WindowAttr")

:ee('vim.current.window.xxx')

:cb.append(">> WindowSetattr")

:ee('vim.current.window.buffer = 0')

:ee('vim.current.window.cursor = (100000000, 100000000)

')
:ee('vim.current.window.cursor = True')

:number_test('vim.current.window.height = %s', unsigned

=True)

:number_test('vim.current.window.width = %s', unsigned=

True)

:ee('vim.current.window.xxxxxx = True')

:cb.append("> WinList")

:cb.append(">> WinListItem")

:ee('vim.windows[1000]')

:cb.append("> Buffer")

:cb.append(">> StringToLine (indirect)")

:ee('vim.current.buffer[0] = "\\na"')

:ee('vim.current.buffer[0] = b"\\na"')

:cb.append(">> SetBufferLine (indirect)")

:ee('vim.current.buffer[0] = True')

:cb.append(">> SetBufferLineList (indirect)")

:ee('vim.current.buffer[:] = True')

:ee('vim.current.buffer[:] = ["\\na", "bc"]')

:cb.append(">> InsertBufferLines (indirect)")

:ee('vim.current.buffer.append(None)')

:ee('vim.current.buffer.append(["\\na", "bc"])')

:ee('vim.current.buffer.append("\\nbc")')

:cb.append(">> RBItem")

:ee('vim.current.buffer[100000000]')

:cb.append(">> RBAsItem")

:ee('vim.current.buffer[100000000] = ""')

:cb.append(">> BufferAttr")

:ee('vim.current.buffer.xxx')

:cb.append(">> BufferSetattr")

:ee('vim.current.buffer.name = True')

:ee('vim.current.buffer.xxx = True')

:cb.append(">> BufferMark")

:ee('vim.current.buffer.mark(0)')

:ee('vim.current.buffer.mark("abcM")')

:ee('vim.current.buffer.mark("!")')

:cb.append(">> BufferRange")

:ee('vim.current.buffer.range(1, 2, 3)')

:cb.append("> BufMap")

:cb.append(">> BufMapItem")

:ee('vim.buffers[100000000]')

:number_test('vim.buffers[%s]', natural=True)

:cb.append("> Current")

:cb.append(">> CurrentGetattr")

:ee('vim.current.xxx')

:cb.append(">> CurrentSetattr")

:ee('vim.current.line = True')

:ee('vim.current.buffer = True')

:ee('vim.current.window = True')

:ee('vim.current.tabpage = True')

:ee('vim.current.xxx = True')

:del d

:del ned

:del dl

:del l

:del ll

:del nel

:del f

:del fd

:del fdel

:del subexpr_test

:del stringtochars_test

:del Mapping

:del convertfrompyobject_test

:del convertfrompymapping_test

:del iter_test

:del number_test

:del FailingTrue

:del FailingIter

:del FailingIterNext

:del FailingIterNextN

:del FailingMapping

:del FailingMappingKey

:del FailingList

:del NoArgsCall

:del FailingCall

:del FailingNumber

:EOF

::delfunction F

::"

::" Test import

:py3 << EOF

:sys.path.insert(0, os.path.join(os.getcwd(), 'python_b

efore'))

:sys.path.append(os.path.join(os.getcwd(), 'python_afte

r'))

:vim.options['rtp'] = os.getcwd().replace(',', '\\,').r

eplace('\\', '\\\\')

:l = []

:def callback(path):

:    l.append(os.path.relpath(path))

:vim.foreach_rtp(callback)

:cb.append(repr(l))

:del l

:def callback(path):

:    return os.path.relpath(path)

:cb.append(repr(vim.foreach_rtp(callback)))

:del callback

:from module import dir as d

:from modulex import ddir

:cb.append(d + ',' + ddir)

:import before

:cb.append(before.dir)

:import after

:cb.append(after.dir)

:import topmodule as tm

:import topmodule.submodule as tms

:import topmodule.submodule.subsubmodule.subsubsubmodul

e as tmsss

:cb.append(tm.__file__.replace(os.path.sep, '/')[-len('

modulex/topmodule/__init__.py'):])

:cb.append(tms.__file__.replace(os.path.sep, '/')[-len(

'modulex/topmodule/submodule/__init__.py'):])

:cb.append(tmsss.__file__.replace(os.path.sep, '/')[-le

n('modulex/topmodule/submodule/subsubmodule/subsubsubmodule.py'):])

:del before

:del after

:del d

:del ddir

:del tm

:del tms

:del tmsss

:EOF

::"

::" Test exceptions

::fun Exe(e)

::   execute a:e

::endfun

:py3 << EOF

:Exe = vim.bindeval('function("Exe")')

:ee('vim.command("throw \'abcN\'")')

:ee('Exe("throw \'def\'")')

:ee('vim.eval("Exe(\'throw \'\'ghi\'\'\')")')

:ee('vim.eval("Exe(\'echoerr \'\'jkl\'\'\')")')

:ee('vim.eval("Exe(\'xxx_non_existent_command_xxx\')"

)')

:ee('vim.eval("xxx_unknown_function_xxx()")')

:ee('vim.bindeval("Exe(\'xxx_non_existent_command_xxx

\')")')

:del Exe

:EOF

::delfunction Exe

::"

::" Regression: interrupting vim.command propagates t

o next vim.command

:py3 << EOF

:def test_keyboard_interrupt():

:    try:

:        vim.command('while 1 | endwhile')

:    except KeyboardInterrupt:

:        cb.append('Caught KeyboardInterrupt')

:    except Exception:

:        cb.append('!!!!!!!! Caught exception: ' + em

sg(sys.exc_info()))

:    else:

:        cb.append('!!!!!!!! No exception')

:    try:

:        vim.command('$ put =\'Running :put\'')

:    except KeyboardInterrupt:

:        cb.append('!!!!!!!! Caught KeyboardInterrupt

')
:    except Exception:

:        cb.append('!!!!!!!! Caught exception: ' + em

sg(sys.exc_info()))

:    else:

:        cb.append('No exception')

:EOF

::debuggreedy

::call inputsave()

::call feedkeys("s\ns\ns\ns\nq\n")

::redir => output

::debug silent! py3 test_keyboard_interrupt()

::redir END

::0 debuggreedy

::call inputrestore()

::silent $put =output

::unlet output

::py3 del test_keyboard_interrupt

::"

::" Cleanup

:py3 << EOF

:del cb

:del ee

:del emsg

:del sys

:del os

:del vim

:EOF

::endfun
:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:/^start:/,$w! test.out
:" vim: et ts=4 isk-=\:
:while getchar(0) isnot 0|endwhile
ENDTEST

start:

:"
:fun RunTest()

:  :let checkrefs = !empty($PYTHONDUMPREFS)

:  :let start = getline(1, '$')

:  :for i in range(checkrefs ? 10 : 1)

:    :   if i != 0

:      :       %d _

:      :       call setline(1, start)

:      :   endif

:    :   call Test()

:    :   if i == 0

:      :       let result = getline(1, '$')

:      :   endif

:    :endfor

:  :if checkrefs

:    :   %d _

:    :   call setline(1, result)

:    :endif

:  :endfun
:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out

:"
:call RunTest()
8 more lin
3 more lines

"a" [New File]

"b" [New File]

"c" [New File]

"0" [New File]

"1" [New File]

"a.1" [New File]

"2" [New File]

"a.2" [New File]

"b.2" [New File]

"c.2" [New File]

Already only one window

abc8def

Error detected while processing function RunTest[8]..Test:

line 1106:

abc9def

abcA

line 1108:

abcB

8 more lines

Entering Debug mode.  Type "cont" to continue.

function RunTest[8]..Test

line 1650: py3 test_keyboard_interrupt()

>s

function RunTest[8]..Test

line 1650: while 1 | endwhile

>s

function RunTest[8]..Test

line 1650: endwhile

>s

function RunTest[8]..Test

line 1650: while 1 | endwhile

>s

function RunTest[8]..Test

line 1650: endwhile

>q
['.']
'.'
3,xx
before
after
pythonx/topmodule/__init__.py
pythonx/topmodule/submodule/__init__.py
pythonx/topmodule/submodule/subsubmodule/subsubsubmodule.py
vim.command("throw 'abcN'"):(<class 'vim.error'>, error('abcN',))
Exe("throw 'def'"):(<class 'vim.error'>, error('def',))
vim.eval("Exe('throw ''ghi''')"):(<class 'vim.error'>, error('ghi',))
vim.eval("Exe('echoerr ''jkl''')"):(<class 'vim.error'>, error('Vim(echoerr):jkll',))
vim.eval("Exe('xxx_non_existent_command_xxx')"):(<class 'vim.error'>, error('Vimm:E492: Not an editor command: xxx_non_existent_command_xxx',))
vim.eval("xxx_unknown_function_xxx()"):(<class 'vim.error'>, error('Vim:E117: Unnknown function: xxx_unknown_function_xxx',))
vim.bindeval("Exe('xxx_non_existent_command_xxx')"):(<class 'vim.error'>, error(('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',))
Caught KeyboardInterrupt
Running :put
No exception

"test87.in" [Modified][Not edited] line 3151 of 3151 --100%-- col 1:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 1445 lines, 77744 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test87 = test61; then \
#	  if diff test.out test87.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test87.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test87.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test12.failed test.ok test.out X* viminfo
cp test12.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test12.in
[?1h="test12.in" 52 lines, 1199 charactersTests for 'directory' option.
- ".", in same dir as file
- "./dir", in directory relative to file
- "dir", in directory relative to current dir

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo
:set dir=.,~
:/start of testfile/,/end of testfile/w! Xtest1
:" do an ls of the current dir to find the swap file (should not be there)
:if has("unix")
:  !ls .X*.swp >test.out
:else
:  r !ls X*.swp >test.out
:endif
:!echo first line >>test.out
:e Xtest1
:if has("unix")
:" Do an ls of the current dir to find the swap file, remove the leading dot
:" to make the result the same for all systems.
:  r!ls .X*.swp
:  s/\.*X/X/:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for 'directory' option./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 40 lines, 965 characters written:set ff& cpo+=A
/ENDTEST:!mkdir Xtest2
:set dir=./Xtest2,.,~
:e Xtest1
:!ls X*.swp >>test.out
:!echo under under >>test.out
:!ls Xtest2 >>test.out
:!echo under Xtest1.swp >>test.out
:!mkdir Xtest.je
:/start of testfile/,/end of testfile/w! Xtest2/Xtest3
:set dir=Xtest.je,~
:e Xtest2/Xtest3
:swap
:!ls Xtest2 >>test.out
:!echo under Xtest3 >>test.out
:!ls Xtest.je >>test.out
:!echo under Xtest3.swp >>test.out
:qa!
ENDTEST

start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo
:set dir=.,~
:/start of testfile/,/end of testfile/w! Xtest1
"Xtest1" [New] 4L, 70C written:" do an ls of the current dir to find the swap file (should not be there)
:if has("unix")

:  :  !ls .X*.swp >test.out

:!ls .X*.swp >test.out[?1l>
ls: cannot access '.X*.swp': No such file or directory

shell returned 2

[?1h=:  :else

:  :  r !ls X*.swp >test.out

:  :endif
:!mkdir Xtest2
:set dir=./Xtest2,.,~
:e Xtest1
:!ls X*.swp >>test.out
:!echo under under >>test.out
:!ls Xtest2 >>test.out
:!echo under Xtest1.swp >>test.out
:!mkdir Xtest.je
:/start of testfile/,/end of testfile/w! Xtest2/Xtest3
:set dir=Xtest.je,~
:e Xtest2/Xtest3
:swap
:!ls Xtest2 >>test.out
:!echo under Xtest3 >>test.out
:!ls Xtest.je >>test.out
:!echo under Xtest3.swp >>test.out
:qa!
ENDTEST

start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile:!echo first line >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:e Xtest1
"Xtest1" 4L, 70Cstart of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"Xtest1" 4L, 70C:if has("unix")

:  :" Do an ls of the current dir to find the swap file, remove the leading dot

:  :" to make the result the same for all systems.

:  :  r!ls .X*.swp

:  :  s/\.*X/X/

:  :  .w >>test.out
"test.out" 1L, 11C appended

:  :  undo

1 line less; before #1  0 seconds ago

:  :else

:  :  !ls X*.swp >>test.out

:  :endif
start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:!echo under Xtest1.swp >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir Xtest2
[?1l>
[?1h=
Press ENTER or type command to continue:set dir=./Xtest2,.,~
start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:e Xtest1
"Xtest1" 4L, 70C:!ls X*.swp >>test.out
[?1l>
ls: cannot access 'X*.swp': No such file or directory

shell returned 2

[?1h=
Press ENTER or type command to continue:!echo under under >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!ls Xtest2 >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!echo under Xtest1.swp >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir Xtest.je
[?1l>
[?1h=
Press ENTER or type command to continue:/start of testfile/,/end of testfile/w! Xtest2/Xtest3
search hit BOTTOM, continuing at TOP"Xtest2/Xtest3" [New] 4L, 70C written

Press ENTER or type command to continue:set dir=Xtest.je,~
start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:e Xtest2/Xtest3
"Xtest2/Xtest3" 4L, 70C:swap
Xtest.je/Xtest3.swp:!ls Xtest2 >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!echo under Xtest3 >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!ls Xtest.je >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!echo under Xtest3.swp >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test12 = test61; then \
#	  if diff test.out test12.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test12.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test12.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test25.failed test.ok test.out X* viminfo
cp test25.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test25.in
[?1h="test25.in" 31 lines, 840 charactersTest for jumping to a tag with 'hidden' set, with symbolic link in path of tag.
This only works for Unix, because of the symbolic link.

STARTTEST
:so small.vim
:set hidden
:" Create a link from test25.dir to the current directory.
:!rm -f test25.dir
:!ln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line
:r !pwd
d$/test
hP:.w! tags.test
:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.test
G^] x:.w! test.out
:!rm -f test25.dir tags.test
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for jumping to a tag with 'hidden' set, with symbolic link in path of tag./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 540 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:set hidden
:" Create a link from test25.dir to the current directory.
:!rm -f test25.dir
[?1l>
[?1h=
Press ENTER or type command to continue:!ln -s . test25.dir
[?1l>
[?1h=
Press ENTER or type command to continue:" Create tags.text, with the current directory name inserted.
Test for jumping to a tag with 'hidden' set, with symbolic link in path of tag.
This only works for Unix, because of the symbolic link.

STARTTEST
:so small.vim
:set hidden
:" Create a link from test25.dir to the current directory.
:!rm -f test25.dir
:!ln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line
:r !pwd
d$/test
hP:.w! tags.test
:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.test
G^] x:.w! test.out
:!rm -f test25.dir tags.test
:qa!
ENDTEST

/tags line
his only works for Unix, because of the symbolic link.STARTTEST
:so small.vim
:set hidden" Create a link from test25.dir to the current directory.
:!rm -f test25.dirln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line:r !pwdd$/test
hP:.w! tags.test
:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.testG^] x:.w! test.out:!rm -f test25.dir tags.test
:qa!ENDTESTtags line:
:r !pwd
STARTTEST
:so small.vim
:set hidden
:" Create a link from test25.dir to the current directory.
:!rm -f test25.dir
:!ln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line
:r !pwd
d$/test
hP:.w! tags.test
:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.test
G^] x:.w! test.out
:!rm -f test25.dir tags.test
:qa!
ENDTEST

tags line:
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir

/test

SECTION_OFF     /test25.dir/test25.in   /^#define  SECTION_OFF  3$//<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test25.dir/t@
SECTION_OFF     /<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test25.dir/ttest25.in/^#define  SECTION_OFF  3$/

:.w! tags.test
"tags.test" [New File] 1 line, 113 characters written:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.test






/*tx.c*/
#define  SECTION_OFF  3
#define  NUM_SECTIONS 3

SECTION_OFF#efine  SECTION_OFF  3:.w! test.out
"test.out" [New File] 1 line, 23 characters written:!rm -f test25.dir tags.test
[?1l>
[No write since last change]

[?1h=
Press ENTER or type command to continue:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test25 = test61; then \
#	  if diff test.out test25.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test25.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test25.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test49.failed test.ok test.out X* viminfo
cp test49.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test49.in
[?1h="test49.in" 32 lines, 705 charactersThis is a test of the script language.

If after adding a new test, the test output doesn't appear properly in
test49.failed, try to add one or more "G"s at the line ending in "test.out"

STARTTEST
:so small.vim
:se nocp nomore viminfo+=nviminfo
:lang mess C
:so test49.vim
:" Go back to this file and append the results from register r.
:buf test49.in
G"rp:/^Results/,$w! test.out
:"
:" make valgrind happy
:redir => funclist
:silent func
:redir END
:for line in split(funclist, "\n")
:  let name = matchstr(line, 'function \zs[A-Z]\w*\ze(')
:  if name != ''
:    exe "delfunc " . name
:  endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
This is a test of the script language./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 23 lines, 475 characters written:set ff& cpo+=A
/ENDTEST






:endfor
:for v in keys(g:)
:  silent! exe "unlet " . v
:endfor
:unlet v
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:se nocp nomore viminfo+=nviminfo
:lang mess C
:so test49.vim
Error detected while processing function F:

line    5:

E583: multiple :else:     else^I^I

Error detected while processing function G:

line    5:

E584: :elseif after :else:     elseif 1^I^I" aborts function

Error detected while processing function H:

line    7:

E583: multiple :else:     else^I^I

Error detected while processing function I:

line    7:

E584: :elseif after :else:     elseif 1^I^I" aborts function

*** Test  16: OK (8722)

Error detected while processing function F:

line   18:

E171: Missing :endif:     endwhile^I

E171: Missing :endif:     endwhile^I

line   34:

E171: Missing :endif:     endwhile^I

E171: Missing :endif:     endwhile^I

E171: Missing :endif:     endwhile^I

line   47:

E580: :endif without :if: ^Iendif^I

E580: :endif without :if: ^Iendif^I

E580: :endif without :if: ^Iendif^I

Error detected while processing /<<PKGBUILDDIR>>/src/vim-gtk3/tes

tdir/test49.vim:

line  784:

E171: Missing :endif: endwhile 

*** Test  17: OK (285127993)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"/tmp/vN7bWWe/0" [New] 53L, 1582C written14L, 358C appended26L, 824C appended34L, 986C appended

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/1[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/1" 16L, 304C appended17L, 326C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/2[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/2"' -c 'breakad

dfile 8 /tmp/vN7bWWe/1' -S /tmp/vN7bWWe/1[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/2" 3L, 6C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/3[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/3" 6L, 127C appended7L, 149C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/4[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/4"' -c 'breakad

dfile 4 /tmp/vN7bWWe/3' -S /tmp/vN7bWWe/3[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/4" 1L, 5C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/5[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/5" 21L, 486C appended22L, 508C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/6[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/6"' -c 'breakad

dfunc 7 F' -S /tmp/vN7bWWe/5[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/6" 3L, 18C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/7[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/7" 13L, 364C appended14L, 386C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/8[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/8"' -c 'breakad

dfunc 3 G' -S /tmp/vN7bWWe/7[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/8" 1L, 9C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  18: OK (67224583)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/9[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/9" 12L, 201C appended13L, 223C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/10[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/10"' -S /tmp/vN7bW

We/9[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/10" 2L, 4C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/11[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/11" 12L, 205C appended13L, 227C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/12[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/12"' -S /tmp/vN7bW

We/11[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/12" 2L, 7C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/13[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/13" 6L, 122C appended7L, 144C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/14[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/14"' -S /tmp/vN7bW

We/13[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/14" 1L, 5C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/15[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/15" 8L, 176C appended9L, 198C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/16[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/16"' -S /tmp/vN7bW

We/15[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/16" 1L, 6C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/17[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/17" 10L, 215C appended11L, 237C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/18[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/18"' -S /tmp/vN7bW

We/17[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/18" 1L, 8C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/19[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/19" 7L, 149C appended8L, 171C8L, 170C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/20[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/20"' -S /tmp/vN7bW

We/19[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/20" 1L, 9C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  19: OK (69275973)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/21[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/21" 9L, 135C appended10L, 157C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/22[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/22"' -S /tmp/vN7bW

We/21[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/22" 2L, 4C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/23[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/23" 10L, 155C appended11L, 177C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/24[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/24"' -S /tmp/vN7bW

We/23[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/24" 3L, 8C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/25[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/25" 12L, 204C appended13L, 226C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/26[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/26"' -S /tmp/vN7bW

We/25[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/26" 4L, 18C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/27[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/27" 12L, 214C appended13L, 236C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/28[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/28"' -S /tmp/vN7bW

We/27[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/28" 4L, 22C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/29[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/29" 12L, 211C appended13L, 233C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/30[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/30"' -S /tmp/vN7bW

We/29[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/30" 3L, 22C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/31[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/31" 14L, 263C appended15L, 285C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/32[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/32"' -S /tmp/vN7bW

We/31[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/32" 4L, 34C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/33[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/33" 14L, 277C appended15L, 299C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/34[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/34"' -S /tmp/vN7bW

We/33[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/34" 4L, 40C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  20: OK (1874575085)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/35[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/35" 58L, 1022C appended59L, 1044C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/36[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/36"' -S /tmp/vN7bW

We/35[?1l>
[?1h="/tmp/vN7bWWe/36" 9L, 56C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  21: OK (147932225)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/37[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/37" 23L, 418C appended24L, 440C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/38[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/38"' -S /tmp/vN7bW

We/37[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/38" 1L, 2C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/39[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/39" 23L, 437C appended24L, 459C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/40[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/40"' -c 'breaka

dd func 2 Interrupt' -S /tmp/vN7bWWe/39[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/40" 1L, 3C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/41[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/41" 21L, 386C appended22L, 408C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/42[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/42"' -S /tmp/vN7bW

We/41[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/42" 1L, 5C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  22: OK (4161)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/43[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/43" 25L, 432C appended26L, 454C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/44[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/44"' -S /tmp/vN7bW

We/43[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/44" 3L, 8C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  23: OK (49)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/45[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/45" 16L, 392C appended17L, 414C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/46[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/46"' -S /tmp/vN7bW

We/45[?1l>
[?1h="/tmp/vN7bWWe/46" 3L, 7C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  24: OK (41)

*** Test  25: OK (260177811)

*** Test  26: OK (1681500476)

*** Test  27: OK (1996459)

   function F()

1      try

2Xpath 1" X: 1

3try

4Xpath 2" X: 2

5return

6Xpath 4" X: 0

7finally

8Xpath 8" X: 8

9endtry

10Xpath 16" X: 0

11     finally

12Xpath 32" X: 32

13     endtry

14     Xpath 64" X: 0

   endfunction"/tmp/vN7bWWe/47"[noeol] 17L, 552C
14 substitutions on 14 lines
Pattern not found: ^\s*$
"/tmp/vN7bWWe/47" 14L, 502C written
"test49.in" 32L, 705C
   function G()
1      try
2Xpath 128" X: 128
3return
4Xpath 256" X: 0
5      finally
6Xpath 512" X: 512
7call F()
8Xpath 1024" X: 1024
9      endtry
10     Xpath 2048" X: 0
   endfunction"/tmp/vN7bWWe/48"[noeol] 13L, 406C
10 substitutions on 10 lines
Pattern not found: ^\s*$
"/tmp/vN7bWWe/48" 10L, 378C written
"test49.in" 32L, 705C
   function H()
1      try
2Xpath 4096" X: 4096
3call G()
4Xpath 8192" X: 8192
5      finally
6Xpath 16384" X: 16384
7return
8Xpath 32768" X: 0
9      endtry

10     Xpath 65536" X: 0

   endfunction"/tmp/vN7bWWe/49"[noeol] 13L, 409C
10 substitutions on 10 lines
Pattern not found: ^\s*$
"/tmp/vN7bWWe/49" 10L, 381C written
"test49.in" 32L, 705C
*** Test  28: OK (1996459)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/50[?1l>[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/50" 39L, 721C appended40L, 743C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/51[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/51"' -S /tmp/vN7bW

We/50[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/51" 6L, 21C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/52[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/52" 23L, 509C appended24L, 531C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/53[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/53"' -S /tmp/vN7bW

We/52[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/53" 4L, 34C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  29: OK (170428555)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/54[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/54" 60L, 1101C appended61L, 1123C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/55[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nv

iminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/55"' -

c'breakadd func 3 F' -c 'breakadd file 19 /tmp/vN7bWWe/54' -c 'breakadd file 31

/tmp/vN7bWWe/54' -S /tmp/vN7bWWe/54[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/55" 16L, 89C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  30: OK (190905173)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/56[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/56" 60L, 1122C appended61L, 1144C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/57[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/57"' -S /tmp/vN7bW

We/56[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/57" 16L, 89C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  31: OK (190905173)

*** Test  32: OK (354833067)

*** Test  33: OK (1216907538)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/58[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/58" 63L, 1288C appended64L, 1310C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/59[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi

minfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bW

We/59"' -c 'breakadd func 16 C' -S /tmp/vN7bWWe/58[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/59" 17L, 127C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  34: OK (2146584868)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/60[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/60" 63L, 1285C appended64L, 1307C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/61[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi

minfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bW

We/61"' -c 'breakadd func 16 B' -S /tmp/vN7bWWe/60[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/61" 17L, 127C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  35: OK (2146584868)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/62[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/62" 66L, 1430C appended67L, 1452C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/63[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vimin

fo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/

63"' -c 'breakadd func 16 R' -S /tmp/vN7bWWe/62[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/63" 9L, 81C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  36: OK (1071644672)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/64[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/64" 73L, 1488C appended74L, 1510C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/65[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/65"' -c 'breakadd

func 16 F' -S /tmp/vN7bWWe/64[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/65" 9L, 81C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  37: OK (1071644672)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/66[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/66" 82L, 1519C appended83L, 1541C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/67[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi

minfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bW

We/67"' -c 'breakadd func 16 E' -S /tmp/vN7bWWe/66[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/67" 8L, 63C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  38: OK (357908480)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/68[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/68" 83L, 1538C appended84L, 1560C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/69[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -

c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVi

mResult = "/tmp/vN7bWWe/69"' -c 'breakadd func 16 I' -c 'breakadd func 22 I' -S

/tmp/vN7bWWe/68[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/69" 8L, 63C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  39: OK (357908480)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/70[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/70" 82L, 1519C appended83L, 1541C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/71[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi

minfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bW

We/71"' -c 'breakadd func 16 T' -S /tmp/vN7bWWe/70[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/71" 8L, 63C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  40: OK (357908480)

*** Test  41: OK (3076095)

*** Test  42: OK (1505155949)

*** Test  43: OK (1157763329)

*** Test  44: OK (1031761407)

*** Test  45: OK (1157763329)

*** Test  46: OK (739407)

*** Test  47: OK (371213935)

*** Test  48: OK (756255461)

*** Test  49: OK (179000669)

   function C()

1      try

2Xpath 1" X: 1

3throw "arrgh"

4Xpath 2" X: 0

5      catch /arrgh/

6Xpath 4" X: 4

7      endtry

8      Xpath 8" X: 8

   endfunction"/tmp/vN7bWWe/72"[noeol] 11L, 334C
8 substitutions on 8 lines
Pattern not found: ^\s*$
"/tmp/vN7bWWe/72" 8L, 295C written
"test49.in" 32L, 705C
   function T1()
1      XloopNEXT
2      try
3Xloop 1" X: 16 + 16*16
4throw "arrgh"
5Xloop 2" X: 0
6      finally

7Xloop 4" X: 64 + 64*16

8      endtry

9      Xloop 8" X: 0

   endfunction"/tmp/vN7bWWe/73"[noeol] 12L, 364C
9 substitutions on 9 lines
Pattern not found: ^\s*$
"/tmp/vN7bWWe/73" 9L, 323C written
"test49.in" 32L, 705C
   function T2()
1      try
2Xpath 4096" X: 4096
3call T1()
4Xpath 8192" X: 0
5      finally
6Xpath 16384" X: 16384
7      endtry

8      Xpath 32768" X: 0

   endfunction"/tmp/vN7bWWe/74"[noeol] 11L, 332C
8 substitutions on 8 lines
Pattern not found: ^\s*$
"/tmp/vN7bWWe/74" 8L, 305C written
"test49.in" 32L, 705C
*** Test  50: OK (363550045)
*** Test  51: OK (40744667)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/76[?1l>[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/76" 2L, 41C appended3L, 63C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/77[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/77"' -S /tmp/vN7bWWe/76[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/77" 1L, 2C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/75" 8L, 182C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/78[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/78" 7L, 115C appended8L, 137C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/79[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/79"' -S /tmp/vN7bWWe/78[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/79" 1L, 2C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/75" 8L, 181C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/80[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/80" 12L, 180C appended13L, 202C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/81[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/81"' -S /tmp/vN7bWWe/80[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/81" 2L, 8C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/75" 10L, 209C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/82[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/82" 8L, 139C appended9L, 161C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/83[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/83"' -S /tmp/vN7bWWe/82[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/83" 2L, 11C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/75" 10L, 217C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/84[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/84" 5L, 87C appended6L, 109C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/85[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir!

>/tmp/vN7bWWe/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin =

1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/85"' -c 'breakadd file 4 /tmp/vN7bWWe

/84' -S /tmp/vN7bWWe/84[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/85" 1L, 7C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/75" [noeol] 9L, 202C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/86[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/86" 7L, 189C appended8L, 211C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/87[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/87"' -S /tmp/vN7bWWe/86[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/87" 1L, 8C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/75" 9L, 252C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/88[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/88" 7L, 199C appended8L, 221C8L, 220C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/89[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/89"' -S /tmp/vN7bWWe/88[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/89" 1L, 10C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/75" 9L, 214C
"test49.in" 32L, 705C

*** Test  52: OK (1247112011)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/91[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/91" 1L, 10C appended2L, 32C2L, 31C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/92[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/92"' -S /tmp/vN7bWWe/91[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/92" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/90" 6L, 154C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/93[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/93" 3L, 39C appended4L, 61C

3 substitutions on 3 lines
"/tmp/vN7bWWe/93" 4L, 58C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/94[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/94"' -S /tmp/vN7bWWe/93[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/94" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/90" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/95[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/95" 4L, 45C appended5L, 67C

4 substitutions on 4 lines
"/tmp/vN7bWWe/95" 5L, 63C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/96[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/96"' -S /tmp/vN7bWWe/95[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/96" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/90" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/97[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/97" 3L, 33C appended4L, 55C

3 substitutions on 3 lines
"/tmp/vN7bWWe/97" 4L, 52C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/98[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/98"' -S /tmp/vN7bWWe/97[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/98" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/90" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/99[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/99" 5L, 65C appended6L, 87C

5 substitutions on 5 lines
"/tmp/vN7bWWe/99" 6L, 82C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/100[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/100"' -S /tmp/vN7bWWe/99[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/100" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/90" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/101[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/101" 1L, 9C appended2L, 31C2L, 30C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/102[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/102"' -S /tmp/vN7bWWe/101[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/102" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/90" 6L, 153C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/103[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/103" 3L, 38C appended4L, 60C

3 substitutions on 3 lines
"/tmp/vN7bWWe/103"4L, 57C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/104[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/104"' -S /tmp/vN7bWWe/103[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/104" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/105[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/105" 4L, 44C appended5L, 66C

4 substitutions on 4 lines
"/tmp/vN7bWWe/105"5L, 62C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/106[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/106"' -S /tmp/vN7bWWe/105[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/106" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/107[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/107" 3L, 32C appended4L, 54C

3 substitutions on 3 lines
"/tmp/vN7bWWe/107"4L, 51C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/108[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/108"' -S /tmp/vN7bWWe/107[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/108" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/109[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/109" 5L, 64C appended6L, 86C

5 substitutions on 5 lines
"/tmp/vN7bWWe/109"6L, 81C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/110[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/110"' -S /tmp/vN7bWWe/109[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/110" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/111[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/111" 1L, 11C appended2L, 33C2L, 32C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/112[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/112"' -S /tmp/vN7bWWe/111[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/112" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/113[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/113" 3L, 40C appended4L, 62C

3 substitutions on 3 lines
"/tmp/vN7bWWe/113"4L, 59C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/114[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/114"' -S /tmp/vN7bWWe/113[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/114" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/90" 6L, 161C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/115[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/115" 4L, 46C appended5L, 68C

4 substitutions on 4 lines
"/tmp/vN7bWWe/115"5L, 64C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/116[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/116"' -S /tmp/vN7bWWe/115[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/116" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/90" 6L, 161C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/117[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/117" 3L, 34C appended4L, 56C

3 substitutions on 3 lines
"/tmp/vN7bWWe/117"4L, 53C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/118[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/118"' -S /tmp/vN7bWWe/117[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/118" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/90" 6L, 161C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/119[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/119" 5L, 66C appended6L, 88C

5 substitutions on 5 lines
"/tmp/vN7bWWe/119"6L, 83C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/120[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/120"' -S /tmp/vN7bWWe/119[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/120" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/90" 6L, 161C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/121[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/121" 4L, 37C appended5L, 59C

4 substitutions on 4 lines
"/tmp/vN7bWWe/121"5L, 55C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/122[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/122"' -S /tmp/vN7bWWe/121[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/122" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/90" 6L, 150C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/123[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/123" 4L, 41C appended5L, 63C

4 substitutions on 4 lines
"/tmp/vN7bWWe/123"5L, 59C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/124[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vN7bWWe/124"' -S /tmp/vN7bWWe/123[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/124" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/90" 6L, 159C
"test49.in" 32L, 705C

*** Test  53: OK (131071)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/126[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/126" 1L, 13C appended2L, 35C2L, 34C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/127[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/127"' -S /tmp/vN7bWWe/126[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/127" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/125" 6L, 164C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/128[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/128" 3L, 36C appended4L, 58C

3 substitutions on 3 lines
"/tmp/vN7bWWe/128"4L, 55C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/129[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/129"' -S /tmp/vN7bWWe/128[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/129" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/125" 6L, 168C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/130[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/130" 3L, 38C appended4L, 60C

3 substitutions on 3 lines
"/tmp/vN7bWWe/130"4L, 57C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/131[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/131"' -S /tmp/vN7bWWe/130[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/131" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/125" 6L, 154C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/132[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/132" 4L, 48C appended5L, 70C

4 substitutions on 4 lines
"/tmp/vN7bWWe/132"5L, 66C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/133[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/133"' -S /tmp/vN7bWWe/132[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/133" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/125" 6L, 168C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/134[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/134" 4L, 53C appended5L, 75C

4 substitutions on 4 lines
"/tmp/vN7bWWe/134"5L, 71C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/135[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/135"' -S /tmp/vN7bWWe/134[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/135" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/125" 6L, 155C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/136[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/136" 5L, 62C appended6L, 84C

5 substitutions on 5 lines
"/tmp/vN7bWWe/136"6L, 79C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/137[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/137"' -S /tmp/vN7bWWe/136[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/137" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/125" 6L, 155C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/138[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/138" 5L, 64C appended6L, 86C

5 substitutions on 5 lines
"/tmp/vN7bWWe/138"6L, 81C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/139[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/139"' -S /tmp/vN7bWWe/138[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/139" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/125" 6L, 154C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/140[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/140" 3L, 36C appended4L, 58C

3 substitutions on 3 lines
"/tmp/vN7bWWe/140"4L, 55C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/141[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/141"' -S /tmp/vN7bWWe/140[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/141" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/125" 6L, 168C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/142[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/142" 5L, 67C appended6L, 89C

5 substitutions on 5 lines
"/tmp/vN7bWWe/142"6L, 84C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/143[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/143"' -S /tmp/vN7bWWe/142[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/143" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/125" 6L, 167C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/144[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/144" 5L, 68C appended6L, 90C

5 substitutions on 5 lines
"/tmp/vN7bWWe/144"6L, 85C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/145[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/145"' -S /tmp/vN7bWWe/144[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/145" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/125" 6L, 168C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/146[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/146" 7L, 95C appended8L, 117C

7 substitutions on 7 lines
"/tmp/vN7bWWe/146"8L, 110C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/147[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/147"' -S /tmp/vN7bWWe/146[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/147" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/125" 6L, 167C
"test49.in" 32L, 705C

*** Test  54: OK (2047)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/149[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/149" 1L, 13C appended2L, 35C2L, 34C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/150[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/150"' -S /tmp/vN7bWWe/149[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/150" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/148" 6L, 172C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/151[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/151" 3L, 36C appended4L, 58C

3 substitutions on 3 lines
"/tmp/vN7bWWe/151"4L, 55C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/152[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/152"' -S /tmp/vN7bWWe/151[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/152" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/148" 6L, 176C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/153[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/153" 4L, 48C appended5L, 70C

4 substitutions on 4 lines
"/tmp/vN7bWWe/153"5L, 66C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/154[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/154"' -S /tmp/vN7bWWe/153[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/154" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/148" 6L, 176C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/155[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/155" 3L, 36C appended4L, 58C

3 substitutions on 3 lines
"/tmp/vN7bWWe/155"4L, 55C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/156[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/156"' -S /tmp/vN7bWWe/155[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/156" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/148" 6L, 176C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/157[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/157" 5L, 68C appended6L, 90C

5 substitutions on 5 lines
"/tmp/vN7bWWe/157"6L, 85C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/158[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/158"' -S /tmp/vN7bWWe/157[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/158" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/148" 6L, 176C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/159[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/159" 1L, 10C appended2L, 32C2L, 31C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/160[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/160"' -S /tmp/vN7bWWe/159[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/160" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/148" 6L, 166C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/161[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/161" 3L, 33C appended4L, 55C

3 substitutions on 3 lines
"/tmp/vN7bWWe/161"4L, 52C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/162[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/162"' -S /tmp/vN7bWWe/161[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/162" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/148" 6L, 170C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/163[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/163" 4L, 45C appended5L, 67C

4 substitutions on 4 lines
"/tmp/vN7bWWe/163"5L, 63C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/164[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/164"' -S /tmp/vN7bWWe/163[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/164" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/148" 6L, 170C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/165[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/165" 3L, 33C appended4L, 55C

3 substitutions on 3 lines
"/tmp/vN7bWWe/165"4L, 52C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/166[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/166"' -S /tmp/vN7bWWe/165[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/166" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/148" 6L, 170C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/167[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/167" 5L, 65C appended6L, 87C

5 substitutions on 5 lines
"/tmp/vN7bWWe/167"6L, 82C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/168[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/168"' -S /tmp/vN7bWWe/167[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/168" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/148" 6L, 170C
"test49.in" 32L, 705C

*** Test  55: OK (1023)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/170[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/170" 1L, 11C appended2L, 33C2L, 32C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/171[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/171"' -S /tmp/vN7bWWe/170[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/171" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/169" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/172[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/172" 3L, 34C appended4L, 56C

3 substitutions on 3 lines
"/tmp/vN7bWWe/172"4L, 53C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/173[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/173"' -S /tmp/vN7bWWe/172[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/173" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/169" 6L, 162C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/174[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/174" 3L, 40C appended4L, 62C

3 substitutions on 3 lines
"/tmp/vN7bWWe/174"4L, 59C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/175[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/175"' -S /tmp/vN7bWWe/174[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/175" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/169" 6L, 162C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/176[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/176" 3L, 32C appended4L, 54C

3 substitutions on 3 lines
"/tmp/vN7bWWe/176"4L, 51C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/177[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/177"' -S /tmp/vN7bWWe/176[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/177" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/169" 6L, 152C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/178[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/178" 3L, 35C appended4L, 57C

3 substitutions on 3 lines
"/tmp/vN7bWWe/178"4L, 54C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/179[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/179"' -S /tmp/vN7bWWe/178[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/179" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/169" 6L, 155C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/180[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/180" 4L, 44C appended5L, 66C

4 substitutions on 4 lines
"/tmp/vN7bWWe/180"5L, 62C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/181[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/181"' -S /tmp/vN7bWWe/180[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/181" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/169" 6L, 152C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/182[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/182" 4L, 47C appended5L, 69C

4 substitutions on 4 lines
"/tmp/vN7bWWe/182"5L, 65C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/183[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/183"' -S /tmp/vN7bWWe/182[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/183" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/169" 6L, 155C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/184[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/184" 5L, 64C appended6L, 86C

5 substitutions on 5 lines
"/tmp/vN7bWWe/184"6L, 81C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/185[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/185"' -S /tmp/vN7bWWe/184[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/185" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/169" 6L, 152C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/186[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/186" 5L, 67C appended6L, 89C

5 substitutions on 5 lines
"/tmp/vN7bWWe/186"6L, 84C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/187[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vN7bWWe/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vN7bWWe/187"' -S /tmp/vN7bWWe/186[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/187" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vN7bWWe/169" 6L, 155C
"test49.in" 32L, 705C

*** Test  56: OK (511)

   function FuncException()

1      let g:exception = v:exception

   endfunction"/tmp/vN7bWWe/188" [noeol] 4L, 80C
Pattern not found: ^\s*$
"/tmp/vN7bWWe/188"1L, 36C written
"test49.in" 32L, 705C
   function FuncThrowpoint()

1      let g:throwpoint = v:throwpoint

   endfunction"/tmp/vN7bWWe/189" [noeol] 4L, 83C
Pattern not found: ^\s*$
"/tmp/vN7bWWe/189"1L, 38C written
"test49.in" 32L, 705C
   function T(arg, line)

1      if a:line == 2

2throw a:arg" in line 2

3      elseif a:line == 4

4throw a:arg" in line 4

5      elseif a:line == 6

6throw a:arg" in line 6

7      elseif a:line == 8

8throw a:arg" in line 8

9      endif

   endfunction"/tmp/vN7bWWe/190"[noeol] 12L, 341C
9 substitutions on 9 lines
8 substitutions on 8 lines
Pattern not found: ^\s*$
"/tmp/vN7bWWe/190"9L, 292C written
"test49.in" 32L, 705C
   function G(arg, line)
1      call T(a:arg, a:line)
   endfunction"/tmp/vN7bWWe/191"[noeol] 4L, 69C
Pattern not found: ^\s*$
"/tmp/vN7bWWe/191"1L, 30C written
"test49.in" 32L, 705C
   function F(arg, line)
1      call G(a:arg, a:line)
   endfunction"/tmp/vN7bWWe/192"[noeol] 4L, 69C
Pattern not found: ^\s*$
"/tmp/vN7bWWe/192"1L, 30C written
"test49.in" 32L, 705C
*** Test  57: OK (2147450880)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/193[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/193" 87L, 1700C appended88L, 1722C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/194[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/194"' -c 'break

add func 4 T' -S /tmp/vN7bWWe/193[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/194" 8L, 36C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  58: OK (624945)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/195[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/195" 293L, 5789C appended294L, 5811C

3 substitutions on 3 lines
"/tmp/vN7bWWe/195"294L, 5808C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/196[?1l>
[?1h=:!echo 'q^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo

'-c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/196"' -c 'br

eakadd file 115 /tmp/vN7bWWe/195' -c 'breakadd file 225 /tmp/vN7bWWe/195' -S /tm

p/vN7bWWe/195[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/196" 28L, 162C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  59: OK (2038431743)
"/n/o/n/w/r/i/t/a/b/l/e/_/f/i/l/e"
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/197[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/197" 33L, 765C appended34L, 787C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/198[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/198"' -c 'break

add file 7 /tmp/vN7bWWe/197' -S /tmp/vN7bWWe/197[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/198" 3L, 27C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  60: OK (311511339)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/199[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/199" 115L, 2272C appended116L, 2294C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/200[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vimin

fo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/

200"' -c 'breakadd file 8 /tmp/vN7bWWe/199' -c 'breakadd file 36 /tmp/vN7bWWe/19

9' -c 'breakadd file 40 /tmp/vN7bWWe/199' -c 'breakadd file 69 /tmp/vN7bWWe/199'

-c 'breakadd file 95 /tmp/vN7bWWe/199' -c 'breakadd file 97 /tmp/vN7bWWe/199' -

S/tmp/vN7bWWe/199[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/200" 14L, 81C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  61: OK (374889517)

   function F()

1      while 1

2      " Missing :endwhile

   endfunction"/tmp/vN7bWWe/201"[noeol] 5L, 73C
Pattern not found: ^\s*$
"/tmp/vN7bWWe/201"2L, 40C written
"test49.in" 32L, 705C
*** Test  62: OK (286331153)
"/i/m/p/o/s/s/i/b/l/e" line 5500:

"/i/m/p/o/s/s/i/b/l/e" E212: Can't open file for writing

*** Test  63: OK (236978127)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/202[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/202" 149L, 2828C appended150L, 2850C

6 substitutions on 6 lines
"/tmp/vN7bWWe/202"150L, 2844C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/203[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/203"' -c 'break

add file 63 /tmp/vN7bWWe/202' -S /tmp/vN7bWWe/202[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/203" 16L, 97C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  64: OK (1499645335)

*** Test  65: OK (70187)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/204[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/204" 78L, 1520C appended79L, 1542C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/205[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/205"' -c 'break

add func 8 F' -S /tmp/vN7bWWe/204[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/205" 6L, 22C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  66: OK (5464)

*** Test  67: OK (212514423)

*** Test  68: OK (212514423)

*** Test  69: OK (8995471)

*** Test  70: OK (69544277)

*** Test  71: OK (34886997)

*** Test  72: OK (1789569365)

   function F0()

   endfunction

   function F1()

   endfunction

*** Test  73: OK (9032615)
"/tmp/vN7bWWe/206" [New File]
"test49.in" 32L, 705C
"/tmp/vN7bWWe/207" [New File]
"test49.in" 32L, 705C

*** Test  74: OK (224907669)

*** Test  75: OK (2000403408)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/208[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/208" 253L, 6369C appended254L, 6391C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/209[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|

set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp

/vN7bWWe/209"' -c 'breakadd func 2 INT' -S /tmp/vN7bWWe/208[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/209" 28L, 167C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  76: OK (1610087935)

Error detected while processing function ERR:

line    2:

E492: Not an editor command:     asdf

E492: Not an editor command:     asdf

E492: Not an editor command:     asdf

*** Test  77: OK (1388671)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/210[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/210" 161L, 4543C appended162L, 4565C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/211[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/211"' -S /tmp/vN7b

WWe/210[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/211" 1L, 10C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  78: OK (134217728)

Error detected while processing function NEXT:

line    1:

E121: Undefined variable: novar

E15: Invalid expression: novar | Xloop 1

E121: Undefined variable: novar

E488: Trailing characters

E108: No such variable: "novar"

E488: Trailing characters

E121: Undefined variable: novar

E15: Invalid expression: novar

E475: Invalid argument: {novar} | Xloop 1

E121: Undefined variable: novar

E15: Invalid expression:  novar

E475: Invalid argument: { novar} | Xloop 1

*** Test  79: OK (70288929)

Error detected while processing /<<PKGBUILDDIR>>/src/vim-gtk3/tes

tdir/test49.vim:

line 7985:

E584: :elseif after :else: elseif 1 ||| 2

line 7995:

E584: :elseif after :else: elseif 1 ||| 2

line 8003:

E582: :elseif without :if: elseif 1 ||| 2

line 8011:

E582: :elseif without :if:     elseif 1 ||| 2

*** Test  80: OK (17895765)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/212[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/212" 15L, 272C appended16L, 294C16L, 293C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/213[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/213"' -S /tmp/vN7b

WWe/212[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/213" 2L, 4C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/214[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/214" 12L, 227C appended13L, 249C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/215[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/215"' -c 'break

add file 8 /tmp/vN7bWWe/214' -S /tmp/vN7bWWe/214[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/215" 2L, 8C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  81: OK (387)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/216[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/216" 20L, 417C appended21L, 439C21L, 438C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/217[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/217"' -S /tmp/vN7b

WWe/216[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/217" 1L, 2C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/218[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/218" 24L, 480C appended25L, 502C25L, 501C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/219[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/219"' -S /tmp/vN7b

WWe/218[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/219" 1L, 4C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/220[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/220" 17L, 390C appended18L, 412C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/221[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/221"' -c 'break

add file 7 /tmp/vN7bWWe/220' -S /tmp/vN7bWWe/220[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/221" 1L, 6C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/222[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/222" 21L, 444C appended22L, 466C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/223[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/223"' -c 'break

add func 6 I' -S /tmp/vN7bWWe/222[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/223" 1L, 8C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  82: OK (8454401)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/224[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/224" 17L, 307C appended18L, 329C18L, 328C written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/225[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/225"' -S /tmp/vN7b

WWe/224[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/225" 3L, 7C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/226[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/226" 14L, 266C appended15L, 288C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/227[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/227"' -c 'break

add file 8 /tmp/vN7bWWe/226' -S /tmp/vN7bWWe/226[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/227" 3L, 13C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  83: OK (2835)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/228[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/228" 154L, 3580C appended155L, 3602C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/229[?1l>
[?1h=:!echo 'q^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo

'-c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/229"' -c 'br

eakadd func 1 INT' -S /tmp/vN7bWWe/228[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/229" 18L, 118C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  84: OK (934782101)

TMP
"/tmp/vN7bWWe/230" [noeol] 2L, 6C/  
"test49.in" 32L, 705C
"/n/o/n/e/x/i/s/t/e/n/t"

"/tmp/vN7bWWe/232" 1L, 1C
"test49.in" 32L, 705C

:!echo XYZ >/tmp/vN7bWWe/233[?1l>
[?1h="/tmp/vN7bWWe/234" [New File]
"test49.in" 32L, 705C

*** Test  85: OK (198689)

line 8769:

E123: Undefined function: F

Make_all.mak
"Make_all.mak" line 1 of 202 --0%-- col 1

line 8772:

E926: Current location list was changed

line 8773:

E193: :endfunction not inside a function

Error detected while processing function ExecAsScript[2]..MakeScript:

line    3:

E123: Undefined function: F
"/tmp/vN7bWWe/235" [noeol] 4L, 109C

search hit BOTTOM, continuing at TOP
line   10:
E486: Pattern not found: .*F(.*)

search hit BOTTOM, continuing at TOP
line   11:
E486: Pattern not found: ^\d*\s*endfunction\>

4 substitutions on 4 lines
"/tmp/vN7bWWe/235"3L, 109C written
"Make_all.mak" 202L, 3684C

Error detected while processing /tmp/vN7bWWe/235:

line    1:

E492: Not an editor command: Error detected while processing function ExecAsScr

ipt[2]..MakeScript:

line    2:

E492: Not an editor command: line    3:

line    3:

E492: Not an editor command: E123: Undefined function: F

Error detected while processing /<<PKGBUILDDIR>>/src/vim-gtk3/tes

tdir/test49.vim:

line 8779:

E130: Unknown function: F

*** Test  86: OK (0)

5
*** Test  87: OK (0)
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vN7bWWe/0' >/tmp/vN7bWWe/236[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vN7bWWe/236" 151L, 3929C appended152L, 3951C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vN7bWWe/237[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nvimi

nfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vN7bWWe/237"' -c

'breakadd func 5 ThrowOnInterrupt' -S /tmp/vN7bWWe/236[?1l>

shell returned 1

[?1h="/tmp/vN7bWWe/237" 16L, 281C
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/test49.vim"
<XFPoUg/vim-8.0.0022/src/vim-gtk3/testdir/test49.vim" [readonly] 9009L, 206880C
"Make_all.mak" 202L, 3684C

*** Test  88: OK (50443995)

Press ENTER or type command to continue:" Go back to this file and append the results from register r.
#
# Common Makefile, defines the list of tests to run.
#

NO_PLUGIN = -U NONE --noplugin --not-a-term

# The first script creates small.vim.
SCRIPTS_FIRST = \test1.out

# Tests that run on all systems.
SCRIPTS_ALL = \test3.out \test4.out \test5.out \test7.out \test8.out \test9.out \test14.out \test15.out \test19.out \test20.out \test22.out \:buf test49.in
"test49.in" 32L, 705C:so test49.vim
:" Go back to this file and append the results from register r.
:buf test49.in
G"rp:/^Results/,$w! test.out
:":" make valgrind happy
:redir => funclis:silent func:redir END:for line in split(funclist, "\n")
:  let name = matchstr(line, 'function \zs[A-Z]\w*\ze(')
:  if name != ''
:    exe "delfunc " . name
:  endif:endfor:for v in keys(g:):  silent! exe "unlet " . v
:endfor:unlet v:qa!ENDTESTResults of test49.vim:

83 more lines
*** Test  16: OK (8722)83 more lines:/^Results/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New] 84L, 2484C written:"
:" make valgrind happy
:redir => funclist
:silent func
:redir END
:for line in split(funclist, "\n")

:  :  let name = matchstr(line, 'function \zs[A-Z]\w*\ze(')

:  :  if name != ''

:    :    exe "delfunc " . name

:    :  endif

:  :endfor
:" Go back to this file and append the results from register r.
:buf test49.in
G"rp:/^Results/,$w! test.out
:"
:" make valgrind happy
:for v in keys(g:)

:  :  silent! exe "unlet " . v

:  :endfor
:" Go back to this file and append the results from register r.
:buf test49.in
:unlet v
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test49 = test61; then \
#	  if diff test.out test49.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test49.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test49.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test97.failed test.ok test.out X* viminfo
cp test97.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test97.in
[?1h="test97.in" 23 lines, 483 charactersTest whether glob()/globpath() return correct results with certain escaped
characters.

STARTTEST
:so small.vim
:" make sure glob() doesn't use the shell
:set shell=doesnotexist
:" consistent sorting of file names
:set nofileignorecase
:e test.out
:$put =glob('Xxx\{')
:$put =glob('Xxx\$')
:w! Xxx{
:w! Xxx\$
:$put =glob('Xxx\{')
:$put =glob('Xxx\$')
:"
:$put =string(globpath('sautest/autoload', '*.vim'))
:$put =string(globpath('sautest/autoload', '*.vim', 0, 1))
:w
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test whether glob()/globpath() return correct results with certain escaped/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 376 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:" make sure glob() doesn't use the shell
:set shell=doesnotexist
:" consistent sorting of file names
:set nofileignorecase
:e test.out
"test.out" [New File]~
~~~~~~~~~~~~~~~~~~~~
~:$put =glob('Xxx\{')
:$put =glob('Xxx\$')
:w! Xxx{

Cannot execute shell doesnotexist


E79: Cannot expand wildcards

"Xxx{" [New File] 3 lines, 3 characters written

Press ENTER or type command to continue:w! Xxx\$
"Xxx$" [New File] 3 lines, 3 characters written

Press ENTER or type command to continue:$put =glob('Xxx\{')
Xxx{
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:$put =glob('Xxx\$')
Xxx$
:"
:$put =string(globpath('sautest/autoload', '*.vim'))
'sautest/autoload/Test104.vim
sautest/autoload/footest.vim'
:$put =string(globpath('sautest/autoload', '*.vim', 0, 1))
['sautest/autoload/Test104.vim', 'sautest/autoload/footest.vim']
:w
"test.out" [New File] 8 lines, 138 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test97 = test61; then \
#	  if diff test.out test97.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test97.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test97.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_listlbr_utf8.failed test.ok test.out X* viminfo
cp test_listlbr_utf8.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr_utf8.in
[?1h="test_listlbr_utf8.in" 134 lines, 4027 charactersTest for linebreak and list option in utf-8 mode

STARTTEST
:so small.vim
:if !exists("+linebreak") || !has("conceal") || !has("signs") | e! test.ok | w!  test.out | qa! | endif
:so mbyte.vim
:set encoding=utf8
:if &enc !=? 'utf-8'|:e! test.ok|:w! test.out|qa!|endif
:10new|:vsp|:vert resize 20
:put =\"\tabcdef hijklmn\tpqrstuvwxyz\u00a01060ABCDEFGHIJKLMNOP \"
:norm! zt
:set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
:fu! ScreenChar(width, lines)
:let c=''
:for j in range(1,a:lines)
:for i in range(1,a:width)
:let c.=nr2char(screenchar(j, i))
:endfor
:let c.="\n"
:endfor
:return c
:endfu:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for linebreak and list option in utf-8 mode/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 129 lines, 3948 characters written:set ff& cpo+=A
/ENDTEST:set list nolinebreak cc=3
:sign define foo text=^Vuff0b
:sign place 1 name=foo line=50 buffer=2
:norm! 2kztj
:let line1=line('.')
0GGlGGlGGlGGl
:let line2=line('.')
:let attr2=attr
:let attr=[]
0GGlGGlGGlGGl
:redraw!
:let line=ScreenChar(winwidth(0),3)
:call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
:if !exists("+linebreak") || !has("conceal") || !has("signs") | e! test.ok | w!

test.out | qa! | endif
:set list nolinebreak cc=3
:so mbyte.vim
:set encoding=utf8
:set list nolinebreak cc=3
:sign define foo text=^Vuff0b
:sign place 1 name=foo line=50 buffer=2
:norm! 2kztj
:let line1=line('.')
0GGlGGlGGlGGl
:let line2=line('.')
:let attr2=attr
:let attr=[]
0GGlGGlGGlGGl
:redraw!
:let line=ScreenChar(winwidth(0),3)
:call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text

:if &enc !=? 'utf-8'|:e! test.ok|:w! test.out|qa!|endif
:10new|:vsp|:vert resize 20
                    ||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            ~~~~~~~~~[No Name]                                                  call DoRecordScreen()" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")else   call append('$', "Screen attributes are the same!")
:endif%w! test.out
:qaENDTEST
dummy text
test_listlbr_utf8.in                                                            :put =\"\tabcdef hijklmn\tpqrstuvwxyz\u00a01060ABCDEFGHIJKLMNOP \"
        abcdef hijkl
mn  pqrstuvwxyz 1060
ABCDEFGHIJKLMNOP    [+] abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP[+]:norm! zt
        abcdef hijkl
mn  pqrstuvwxyz 1060
ABCDEFGHIJKLMNOP    
~                   
~                   
~                   
~                   
~                   
~                   
                    
~                   :set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
abcdef          
+hijklmn            
+pqrstuvwxyz 1060ABC
+DEFGHIJKLMNOP      abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP :fu! ScreenChar(width, lines)

:  :^Ilet c=''

:  :^Ifor j in range(1,a:lines)

:    :^I    for i in range(1,a:width)

:      :^I    ^Ilet c.=nr2char(screenchar(j, i))

:      :^I    endfor

:    :           let c.="\n"

:    :^Iendfor

:  :^Ireturn c

:  :endfu
abcdef|
+hijklmn|
+pqrstuvwxyz 1060ABC|
+DEFGHIJKLMNOP      ||||||~                   
~                   
~                   
~                   
~                   abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP~~~~~~~:fu! DoRecordScreen()

:  :^Iwincmd l

:  :^I$put =printf(\"\n%s\", g:test)

:  :^I$put =g:line

:  :^Iwincmd p

:  :endfu
abcdef|
+hijklmn|
+pqrstuvwxyz 1060ABC|
+DEFGHIJKLMNOP      ||
~                   abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP~~~:"
:let g:test ="Test 1: set linebreak + set list + fancy listchars"
:exe "set linebreak list listchars=nbsp:\u2423,tab:\u2595\u2014,trail:\u02d1,eo

l:\ub6"
▕———abcdef|▕———␣ˑ¶:redraw!
▕———abcdef|
+hijklmn▕———|
+pqrstuvwxyz␣1060ABC|
+DEFGHIJKLMNOPˑ¶|||||||~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP~~~~~~~~[No Name] [+]                                              :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),4)
:call DoRecordScreen()
4 more lines¶                   
Test 1: set         
+linebreak + set    
+list + fancy       
+listchars¶         
▕———abcdefˑˑˑˑˑˑˑˑˑˑ
@                   Test 1: set linebreak + set list + fancy listchars▕———abcdef+hijklmn▕———+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶:"
:let g:test ="Test 2: set nolinebreak list"
:set list nolinebreak
hijklmn▕—pqrstuvwxyz␣1060ABCDEFGHIJKLMNOPˑ¶    
¶               
Test 1: set linebrea
+k + set list + fancy listchars¶   
▕———abcdefˑˑˑˑˑˑˑˑˑˑ
+¶         
+hijklmn▕———ˑˑˑˑˑˑˑˑ
@                   :redraw!
▕———abcdef hijklmn▕—|
+pqrstuvwxyz␣1060ABC|
+DEFGHIJKLMNOPˑ¶|
¶|
Test 1: set linebrea|
+k + set list + fanc|
+y listchars¶|
▕———abcdefˑˑˑˑˑˑˑˑˑˑ|
+¶|
+hijklmn▕———ˑˑˑˑˑˑˑˑ|
@                   
[No Name] [+]        abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOPTest 1: set linebreak + set list + fancy listchars▕———abcdef+hijklmn▕———+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶~~[No Name] [+]                                              :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            +hijklmn▕———ˑˑˑˑˑˑˑˑ
@                   :let line=ScreenChar(winwidth(0),4)
:call DoRecordScreen()
4 more lines▕———abcdef                                                 +hijklmn▕———                                               +pqrstuvwxyz␣1060ABC                                       +DEFGHIJKLMNOPˑ¶                                           ~                                                          ~                                                                                                                                                                                                                                                                                                      Test 2: set nolinebreak list▕———abcdef hijklmn▕—+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶4 more lines:"
:let g:test ="Test 3: set linebreak nolist"
:$put =\"\t*mask = nil;\"
▕———▕—¶                  
+pqrstuvwxyz␣1060ABC
+¶+DEFGHIJKLMNOPˑ¶ˑˑˑˑ
+¶                 
¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ
+¶                  
▕———*mask = nil;¶~:$
:norm! zt
▕———*mask = nil;¶   
~                   
                    
                    
                    
                    
                    
                    
                    
                    ~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   :set nolist linebreak
     
    :redraw!
*mask = nil;    ||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        ▕———abcdef+hijklmn▕———+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶Test 2: set nolinebreak list▕———abcdef hijklmn▕—+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶[No Name] [+]                                              :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),4)
:call DoRecordScreen()
4 more lines                    
Test 3: set         
+linebreak nolist   
    *mask = nil;    
~                   
~                   
~                   +pqrstuvwxyz␣1060ABC                                       +DEFGHIJKLMNOPˑ¶                                           ¶                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       *mask = nil;Test 3: set linebreak nolist*mask = nil;~~~4 more lines:"
:let g:test ="Test 4: set linebreak list listchars and concealing"
:let c_defines=['#define ABCDE^I^I1','#define ABCDEF^I^I1','#define ABCDEFG^I^I

1','#define ABCDEFGH^I1', '#define MSG_MODE_FILE^I^I^I1','#define MSG_MODE_CONSO

LE^I^I2','#define MSG_MODE_FILE_AND_CONSOLE^I3','#define MSG_MODE_FILE_THEN_CONS

OLE^I4']
*mask = nil;    ||
Test 3: set|+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶:call append('$', c_defines)
#define             
+ABCDE      1       :vert resize 40
                    |                    |linebreak nolist|
    *mask = nil;                        |
~                    |                    |                    |
#define ABCDE1 |ABCDEF      1 |
#define ABCDEFG     1 |                    +pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶*mask = nil;Test 3: set linebreak nolist*mask = nil;~~~[No Name] [+]:$-7
:norm! zt
#define ABCDE       1                   
#define ABCDEF      1                   
#define ABCDEFG     1                   
                                        
                                        
                                        
                                        
                                        
                                        
                                        #define ABCDEFGH    1
#define MSG_MODE_FILE1
#define MSG_MODE_CONSOLE2
#define MSG_MODE_FILE_AND_CONSOLE   3
#define MSG_MODE_FILE_THEN_CONSOLE  4
~                                       
~                                       :set list linebreak listchars=tab:>- cole=1
>-->--->->--->>--->--->-->--->--->--->--->-->-:syn match Conceal conceal cchar=>'AB\|MSG_MODE'
>CDEF>->CDEFG>->CDEFGH>->_FILE>------->_CONSOLE>------->_FILE_AND_CONSOLE>------->_FILE_THEN_CONSOLE>-------:redraw!
#define ABCDE>-->---1|
#define >CDEF>-->---1|
#define >CDEFG>->---1|
#define >CDEFGH>----1|
#define >_FILE>--------->--->---1|
#define >_CONSOLE>---------->---2|
#define >_FILE_AND_CONSOLE>---------3   |
#define >_FILE_THEN_CONSOLE>--------4   |||~                                       
~                                       
[No Name] [+]                            +pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶*mask = nil;Test 3: set linebreak nolist*mask = nil;~~~[No Name] [+]                          :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),7)
:call DoRecordScreen()
>CDE>-7 more lines                                        
Test 4: set linebreak list listchars    
@                                       #define >CDEFG>->---1+ #define >CDEFGH>----1+#define >_FILE>--------->--->---1+ #define >_CONSOLE>---------->---2+#define >_FILE_AND_CONSOLE>---------3+ABCDE>
:"
:let g:test ="Test 5: set linebreak list listchars and concealing part2"
:let c_defines=['bbeeeeee^I^I;^Isome text']
:call append('$', c_defines)
:$
@                                       
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        Test 4: set linebreak list listchars    
+and concealing
#define >CDE>-->---1
#define >CDEF>-->---1
#define >CDEFG>->---1
#define >CDEFGH>----1
#define >_FILE>--------->--->---1
#define >_CONSOLE>---------->---2
#define >_FILE_AND_CONSOLE>---------3
bbeeeeee>--->---;>--some text:norm! zt
bbeeeeee>--->---;>--some text           
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        ~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       :set nowrap ts=2 list linebreak listchars=tab:>- cole=2 concealcursor=n
>;>some text      :syn clear
:syn match meaning    /;\s*\zs.*/
:syn match hasword    /^\x\{8}/    contains=word
:syn match word       /\<\x\{8}\>/ contains=beginword,endword contained
:syn match beginword  /\<\x\x/     contained conceal
eeeeee>--:syn match endword    /\x\{6}\>/   contained
:hi meaning   guibg=blue
:hi beginword guibg=green
:hi endword   guibg=red
:redraw!
eeeeee>--->-;>some text||||||||||~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
[No Name] [+]                            #define >CDEFG>->---1+#define >CDEFGH>----1+#define >_FILE>--------->--->---1+#define >_CONSOLE>---------->---2+#define >_FILE_AND_CONSOLE>---------3+[No Name] [+]                          :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),1)
:call DoRecordScreen()
                                        
Test 5: set linebreak list listchars and
eeeeee>--->-;>some text                 #define >_CONSOLE>---------->---2      +                                      #define >_FILE_AND_CONSOLE>---------3  +                                                                                                                                                                                                                                                                                bbeeeeee    ; some textTest 5: set linebreak list listchars an+d concealing part2eeeeee>--->-;>some text+:"
:let g:test ="Test 6: Screenattributes for comment"
:$put =g:test
Test 6: Screenattributes for comment    :call append('$', ' /*^I^I and some more */')
 /*>>- and some more */                 :exe "set ft=c ts=7 linebreak list listchars=nbsp:\u2423,tab:\u2595\u2014,trail

:\u02d1,eol:\ub6"
eeeeee▕———————▕——————;▕—————some text¶|
¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ¶▕———▕—————— and some more */¶#define >_CONSOLE>---------->---2         ;      some text:syntax on
bbeeeeee▕56for
 /* and some more */#define >_CONSOLE>---------->---2       #define >_FILE_AND_CONSOLE>---------3   5:hi SpecialKey term=underline ctermfg=red guifg=red
▕—————▕——————▕—————ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ▕———▕——————:let attr=[]
:nnoremap <expr> GG ":let attr += ['".screenattr(screenrow(),screencol())."']\n

"bbeeeeee▕—————▕——————;▕—————some text¶|#define >_CONSOLE>---------->---2      :$
:norm! zt0
 /*▕———▕—————— and some more */¶        
~                                       
~                                       
~                                       
~                                       
                                        
                                        
                                        
                                        
                                        ~                                       
~                                       
~                                       
~                                       
~                                       :let attr += ['0']
:let attr += ['2']
:let attr += ['2']
:let attr += ['8']
:let attr += ['8']
:let attr += ['2']
:let attr += ['2']
:let attr += ['2']
:let attr += ['2']
:let attr += ['2']
:call append('$', ['ScreenAttributes for test6:'])
ScreenAttributes for test6:¶            :if attr[0] != attr[1] && attr[1] != attr[3] && attr[3] != attr[5]

:  :   call append('$', "Attribut 0 and 1 and 3 and 5 are different!")

:  :else

:  :   call append('$', "Not all attributes are different")

:  :endif
/*▕———▕—————— and some more */¶|
ScreenAttributes for test6:¶|
Attribut 0 and 1 and 3 and 5 are differe||
~                                       #define >_CONSOLE>---------->---2      + #define >_FILE_AND_CONSOLE>---------3  + :set cpo&vim linebreak selection=exclusive
:"
:let g:test ="Test 8: set linebreak with visual block mode and v_b_A and select

ion=exclusive and multibyte char"
/*▕———▕—————— and some more */¶|#define >_CONSOLE>---------->---2      :$put =g:test
Test 8: set linebreak with visual block long line:ˑ¶                            ¶                               
¶                           
¶                                       
¶                                      
oobar foobar foobar foobar foobarˑ¶
foobar foobar TARGET¶              Ã' at end¶:exe "norm! $3B\<C-v>eAx\<Esc>"
x' at end¶:"
:let g:test ="Test 9: a multibyte sign and colorcolumn"
:let attr=[]
:let attr2=[]
:$put =''
 /*▕———▕—————— and some more */¶ScreenAttributes for test6:¶Attribut 0 and 1 and 3 and 5 are differe
Test 8: set linebreak with visual block
long line: foobar foobar foobar foobar f
¶                                       :$put ='a b c'
a b c¶                                  :$put ='a b c'
a b c¶                                  :set list nolinebreak cc=3
*
Scr
Att
Tesn 
a b
a b:sign define foo text=^+
:sign place 1 name=foo line=50 buffer=2
   /*▕—▕—— and some more */¶  ScreenAttributes for test6:¶  Attribut 0 and 1 and 3 and 5 are diff
  Test 8: set linebreak with visual bloc
  long line: foobar foobar foobar foobar
  ¶ 
+a b c¶  a b c¶  
  ~~  #define >_CONSOLE>-->---2  +     #define >_FILE_AND_CONSOLE>--3  +     bbeeeeee  ;      some text    Test 5: set linebreak list listchars   +and concealing part2  eeeeee>--->-;>some text  +:norm! 2kztj
  ¶                                     
+a b c¶                                
  a b c¶                                
  ~                                     
  ~                                     
                                        
                                        
                                        
                                        
                                          
  
  
  
  ~                                     ~                                     ~                                     ~                                     ~                                     :let line1=line('.')
:let attr += ['0']
:let attr += ['0']
:let attr += ['1']
:let attr += ['0']
:let line2=line('.')
:let attr2=attr
:let attr=[]
:let attr += ['0']
:let attr += ['0']
:let attr += ['1']
:let attr += ['0']
:redraw!
  ¶ |
+a b c¶|
  a b c¶||||||||  
  
  
  
  
  
  ~                                     ~                                     ~                                     ~                                     ~                                     ~                                     ~                                     
[No Name] [+]                              #define >_CONSOLE>---------->---2      +     #define >_FILE_AND_CONSOLE>---------3  +     bbeeeeee;      some text    Test 5: set linebreak list listchars  +and concealing part2  eeeeee>--->-;>some text  +[No Name] [+]                          :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),3)
:call DoRecordScreen()
3 more lines¶                                     Test 9: a multibyte sign and colorcolu  ¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ+a b c¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ  a b c¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑa b cTest 9: a multibyte sign and colorcolumn  ¶                     ++a b c¶                                 a b c¶               :" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]

:  :   call append('$', "Screen attributes are different!")

:  :else

:  :   call append('$', "Screen attributes are the same!")

:  :endif
  ¶ |
+a b c¶|
  a b c¶|
  ¶ |Screen attributes are the same!¶        a b c    Test 9: a multibyte sign and colorcol  +umn:%w! test.out
"test.out" [New File] 57 lines, 1882 characters writtentest.out     test.out     :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_listlbr_utf8 = test61; then \
#	  if diff test.out test_listlbr_utf8.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_listlbr_utf8.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr_utf8.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test54.failed test.ok test.out X* viminfo
cp test54.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test54.in
[?1h="test54.in" 22 lines, 658 charactersSome tests for buffer-local autocommands

STARTTEST
:so small.vim
:e xx
:if has("vms")
: !del test.out.*
: au BufLeave <buffer> :!write sys$output "buffer-local autommand in %" > test.oout
:else
: !rm -f test.out
: au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
:endif
:e somefile" here, autocommand for xx shall write test.out
:" but autocommand shall not apply to buffer named <buffer>:bwipe xx" here, autocommand shall be auto-deleted
:e xx" nothing shall be written
:e somefile" nothing shall be written
:qa!
ENDTEST

start of test file xx
end of test file xx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Some tests for buffer-local autocommands/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 15 lines, 555 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:e xx
"xx" [New File]~~~~~~~~~~~~~~~~~~~
~~~:if has("vms")

:  : !del test.out.*

:  : au BufLeave <buffer> :!write sys$output "buffer-local autommand in %" > te

st.out

:  :else

:  : !rm -f test.out

:!rm -f test.out[?1l>
[?1h=:  : au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out

:  :endif
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:e somefile           " here, autocommand for xx shall write test.out 
:!echo buffer-local autommand in xx>> test.out

"somefile" [New File]

Press ENTER or type command to continue:                     " but autocommand shall not apply to buffer named <buffer

>~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:bwipe xx             " here, autocommand shall be auto-deleted
:e xx                 " nothing shall be written
"xx" [New File]:e somefile           " nothing shall be written
"somefile" [New File]:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test54 = test61; then \
#	  if diff test.out test54.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test54.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test54.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test17.failed test.ok test.out X* viminfo
cp test17.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test17.in
[?1h="test17.in" 135 lines, 2431 charactersTests for:
- "gf" on ${VAR},
- ":checkpath!" with various 'include' settings.

STARTTEST
:so small.vim
:if has("ebcdic")
: set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,}
:else
: set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,}
:endif
:"
:if has("unix")
:let $CDIR = "."
/CDIR
:else
:if has("amiga")
:let $TDIR = "/testdir"
:else
:let $TDIR = "."
:endif
/TDIR
:endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 27 lines, 564 characters written:set ff& cpo+=A
/ENDTEST









:" Dummy writing for making that sure gf doesn't fail even if the current
:" file is modified. It can be occurred when executing the following command
:" directly on Windows without fixing the 'fileformat':
:"  > nmake -f Make_dos.mak test17.out
:w! test.out
gf
:set ff=unix
:w! test.out
:brewind
ENDTEST

:so! Xdotest
:so small.vim
:if has("ebcdic")

:  : set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,}

:  :else

:  : set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,}

:  :endif
:"
:if has("unix")
:let $CDIR = "."
/CDIR
:"
:if has("unix")

:  :let $CDIR = "."

:  /CDIR

:  :else

:  :if has("amiga")

:    :let $TDIR = "/testdir"

:    :else

:    :let $TDIR = "."

:    :endif

:  /TDIR

:  :endif
:if has("unix")
:let $CDIR = "."
/CDIR
:else
:if has("amiga")
:let $TDIR = "/testdir"
:else
:let $TDIR = "."
:endif
/TDIR
:endif
:" Dummy writing for making that sure gf doesn't fail even if the current
:" file is modified. It can be occurred when executing the following command
:" directly on Windows without fixing the 'fileformat': > nmake -f Make_dos.mak test17.outw! test.outgf:set ff=unix
:w! test.out
:brewindENDTEST${CDIR}/test17a.in
:" Dummy writing for making that sure gf doesn't fail even if the current
:" file is modified. It can be occurred when executing the following command
:" directly on Windows without fixing the 'fileformat':
:"  > nmake -f Make_dos.mak test17.out
:w! test.out
"test.out" [New File] 135 lines, 2431 characters written
"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/./test17a.in" 3 lines, 88

characters

Press ENTER or type command to continueThis file is just to test "gf" in test 17.
The contents is not important.
Just testing!~~~~~~~~~~~~~~~~~~
~~:set ff=unix
:w! test.out
"test.out" 3 lines, 88 characters written:brewind
"test17.in" 135 lines, 2431 characters:" Dummy writing for making that sure gf doesn't fail even if the current
:" file is modified. It can be occurred when executing the following command
:" directly on Windows without fixing the 'fileformat':
:"  > nmake -f Make_dos.mak test17.out
:w! test.out
gf
:set ff=unix
:w! test.out
:brewind
ENDTEST ${CDIR}/test17a.in
 $TDIR/test17a.inSTARTTEST
:" check for 'include' without \zs or \ze
:lang C
:call delete("./Xbase.a")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:e! Xdir1/dir2/foo.a
i#include   "bar.a"^[:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 23 lines, 396 characters written:set ff& cpo+=A
/ENDTEST: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
:call delete("./Xbase.b")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*/\zs[^/]\+\ze'
:function! DotsToSlashes()
:  return substitute(v:fname, '\.', '/', 'g') . '.b'
:endfunction
:so! Xdotest
:" check for 'include' without \zs or \ze
:lang C
:call delete("./Xbase.a")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir "Xdir1/dir2"
[?1l>
[?1h=
Press ENTER or type command to continue:e! Xdir1/dir2/foo.a
"Xdir1/dir2/foo.a" [New File]~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~#include   "bar.a"::w
"Xdir1/dir2/foo.a" [New File] 1 line, 19 characters written:e Xdir1/dir2/bar.a
"Xdir1/dir2/bar.a" [New File]#include      "baz.a"::w
"Xdir1/dir2/bar.a" [New File] 1 line, 22 characters written:e Xdir1/dir2/baz.a
"Xdir1/dir2/baz.a" [New File]#include"foo.a"::w
"Xdir1/dir2/baz.a" [New File] 1 line, 28 characters written:e Xbase.a
"Xbase.a" [New File]:set path=Xdir1/dir2
#include    <foo.a>::w
"Xbase.a" [New File] 1 line, 20 characters written:redir! >>test.out
:checkpath!
--- 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)

Press ENTER or type command to continue:redir END
#include    <foo.a>
~
~
~
~
~
~
~:brewind
"test17.in" 135 lines, 2431 charactersi#include            "foo.a"^[:
:w
:e Xbase.a
:set path=Xdir1/dir2
i#include    <foo.a>^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
ENDTESTSTARTTEST
:" check for 'include' with \zs and \ze
:call delete("./Xbase.b")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*/\zs[^/]\+\ze'
:function! DotsToSlashes()
:  return substitute(v:fname, '\.', '/', 'g') . '.b'
:endfunction
:let &includeexpr='DotsToSlashes()'/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 27 lines, 532 characters written:set ff& cpo+=A
/ENDTEST: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
:call delete("./Xbase.c")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
:function! StripNewlineChar()
:  if v:fname =~ '\n$'
:    return v:fname[:-2]
:so! Xdotest
:" check for 'include' with \zs and \ze
:call delete("./Xbase.b")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir "Xdir1/dir2"
[?1l>
[?1h=
Press ENTER or type command to continue:let &include='^\s*%inc\s*/\zs[^/]\+\ze'
: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
:call delete("./Xbase.c")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
:function! StripNewlineChar()
:  if v:fname =~ '\n$'
:    return v:fname[:-2]:function! DotsToSlashes()

:  :  return substitute(v:fname, '\.', '/', 'g') . '.b'

:  :endfunction
:e Xdir1/dir2/baz.b
i%inc/foo/^[::let &includeexpr='DotsToSlashes()'
:e! Xdir1/dir2/foo.b
"Xdir1/dir2/foo.b" [New File]~~~~~~~~~~~
~~~~~~~~~~~%inc   /bar/::w
"Xdir1/dir2/foo.b" [New File] 1 line, 13 characters written:e Xdir1/dir2/bar.b
"Xdir1/dir2/bar.b" [New File]%inc      /baz/::w
"Xdir1/dir2/bar.b" [New File] 1 line, 16 characters written:e Xdir1/dir2/baz.b
"Xdir1/dir2/baz.b" [New File]%inc/foo/::w
"Xdir1/dir2/baz.b" [New File] 1 line, 22 characters written:e Xbase.b
"Xbase.b" [New File]:set path=Xdir1/dir2
%inc    /foo/::w
"Xbase.b" [New File] 1 line, 14 characters written:redir! >>test.out
:checkpath!
--- 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)

Press ENTER or type command to continue:redir END
%inc    /foo/
~
~
~
~
~
~
~:brewind
"test17.in" 135 lines, 2431 charactersi%inc            /foo/^[:
:w
:e Xbase.b
:set path=Xdir1/dir2
i%inc    /foo/^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
ENDTESTSTARTTEST
:" check for 'include' with \zs and no \ze
:call delete("./Xbase.c")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
:function! StripNewlineChar()
:  if v:fname =~ '\n$'
:    return v:fname[:-2]
:  endif/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 39 lines, 745 characters written:set ff& cpo+=A
/ENDTEST:w
:e Xdir1/dir2/baz.c
i%incfoo.c^[:
:w
:e Xdir1/dir2/FALSE.c
i%incfoo.c^[:
:w
:e Xbase.c
:set path=Xdir1/dir2
i%inc    FALSE.c foo.c^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
:" change "\" to "/" for Windows and fix 'fileformat'
:e test.out
:%s#\\#/#g
:set ff&
:w
:q
ENDTEST


:so! Xdotest
:" check for 'include' with \zs and no \ze
:call delete("./Xbase.c")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir "Xdir1/dir2"
[?1l>
[?1h=
Press ENTER or type command to continue:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
:w
:e Xdir1/dir2/baz.c
i%incfoo.c^[:
:w
:e Xdir1/dir2/FALSE.c
i%incfoo.c^[:
:w
:e Xbase.c
:set path=Xdir1/dir2
i%inc    FALSE.c foo.c^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
:" change "\" to "/" for Windows and fix 'fileformat'
:e test.out
:%s#\\#/#g
:set ff&
:w
:q
ENDTEST

:function! StripNewlineChar()

:  :  if v:fname =~ '\n$'

:    :    return v:fname[:-2]

:    :  endif

:  :  return v:fname

:  :endfunction
:w
:e Xdir1/dir2/baz.c
i%incfoo.c^[:
:w
:e Xdir1/dir2/FALSE.c
:let &includeexpr='StripNewlineChar()'
:e! Xdir1/dir2/foo.c
"Xdir1/dir2/foo.c" [New File]~~~~~~~~~~~~~~~~~~~~~
~%inc   bar.c::w
"Xdir1/dir2/foo.c" [New File] 1 line, 13 characters written:e Xdir1/dir2/bar.c
"Xdir1/dir2/bar.c" [New File]%inc      baz.c::w
"Xdir1/dir2/bar.c" [New File] 1 line, 16 characters written:e Xdir1/dir2/baz.c
"Xdir1/dir2/baz.c" [New File]%incfoo.c::w
"Xdir1/dir2/baz.c" [New File] 1 line, 22 characters written:e Xdir1/dir2/FALSE.c
"Xdir1/dir2/FALSE.c" [New File]%incfoo.c::w
"Xdir1/dir2/FALSE.c" [New File] 1 line, 22 characters written:e Xbase.c
"Xbase.c" [New File]:set path=Xdir1/dir2
%inc    FALSE.c foo.c::w
"Xbase.c" [New File] 1 line, 22 characters written:redir! >>test.out
:checkpath!
--- 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)

Press ENTER or type command to continue:redir END
%inc    FALSE.c foo.c
~
~
~
~
~
~
~:brewind
"test17.in" 135 lines, 2431 characters:w:e Xdir1/dir2/baz.c
i%incfoo.c^[:
:w
:e Xdir1/dir2/FALSE.c
i%incfoo.c^[:
:w
:e Xbase.c
:set path=Xdir1/dir2
i%inc    FALSE.c foo.c^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
:" change "\" to "/" for Windows and fix 'fileformat'
:e test.out
:%s#\\#/#g
:set ff&
:w
:q
ENDTEST:" change "\" to "/" for Windows and fix 'fileformat'
:e test.out
"test.out" 33 lines, 655 charactersThis 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):%s#\\#/#g
E486: Pattern not found: \\:set ff&
:w
"test.out" 33 lines, 655 characters written:q
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test17 = test61; then \
#	  if diff test.out test17.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test17.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test17.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test30.failed test.ok test.out X* viminfo
cp test30.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test30.in
[?1h="test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' option

Note: This test will fail if "cat" is not available.

STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for a lot of variations of the 'fileformats' option/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 221 lines, 3592 characters written:set ff& cpo+=A
/ENDTEST:$r XXtt64
Go7^[:$r XXtt71
:$r XXtt72
Go8^[:$r XXtt81
:$r XXtt82
Go9^[:$r XXtt91
:$r XXtt92
:$r XXtt93
Go10^[:$r XXUnix
:set nobinary ff&
:w
:qa!
ENDTEST

unix
unix
eof

dos^M
dos^M
eof

mac^Mmac^M
:so! Xdotest
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
"XXUnix" [New File] 2 lines, 10 characters written:/^dos/;/eof/-1w! XXDos
"XXDos" [New File] 2 lines, 10 characters written:set bin noeol
:$w! XXMac
"XXMac" [New File][Incomplete last line] 1 line, 8 characters written
noeol
:$w! XXEol
"XXEol" [New File][Incomplete last line] 1 line, 5 characters written:set nobin eol
:enew!
~~~~~~~~~~~
~~~~
~~~~
~~~:bwipe XXUnix XXDos XXMac
3 buffers wiped out:" create mixed format files
:if has("vms")

:  : !copy XXUnix,XXDos XXUxDs.

:  : !copy XXUnix,XXMac XXUxMac.

:  : !copy XXDos,XXMac  XXDosMac.

:  : !copy XXMac,XXEol  XXMacEol.

:  : !copy XXUnix,XXDos,XXMac XXUxDsMc.

:  :elseif has("win32")

:  : !copy /b XXUnix+XXDos XXUxDs

:  : !copy /b XXUnix+XXMac XXUxMac

:  : !copy /b XXDos+XXMac XXDosMac

:  : !copy /b XXMac+XXEol XXMacEol

:  : !copy /b XXUnix+XXDos+XXMac XXUxDsMc

:  :else

:  : !cat XXUnix XXDos >XXUxDs

:!cat XXUnix XXDos >XXUxDs[?1l>
[?1h=:  : !cat XXUnix XXMac >XXUxMac

:!cat XXUnix XXMac >XXUxMac[?1l>
[?1h=:  : !cat XXDos XXMac >XXDosMac

:!cat XXDos XXMac >XXDosMac[?1l>
[?1h=:  : !cat XXMac XXEol >XXMacEol

:!cat XXMac XXEol >XXMacEol[?1l>
[?1h=:  : !cat XXUnix XXDos XXMac >XXUxDsMc

:!cat XXUnix XXDos XXMac >XXUxDsMc[?1l>
[?1h=:  :endif
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:"
:" try reading and writing with 'fileformats' empty
:set fileformat=unix
:e! XXUnix
"XXUnix" 2 lines, 10 charactersunix
unix:w! test.out
"test.out" [New File] 2 lines, 10 characters written:e! XXDos
"XXDos" 2 lines, 10 charactersdos^M
dos^M:w! XXtt01
"XXtt01" [New File] 2 lines, 10 characters written:e! XXMac
"XXMac" [Incomplete last line] 1 line, 8 charactersmacmac^M~:w! XXtt02
"XXtt02" [New File] 1 line, 9 characters written:bwipe XXUnix XXDos XXMac
"test30.in" 237 lines, 3762 characters

3 buffers wiped out

Press ENTER or type command to continue:set fileformat=dos
:$r XXtt64
Go7^[:$r XXtt71
:$r XXtt72
Go8^[:$r XXtt81
:$r XXtt82
Go9^[:$r XXtt91
:$r XXtt92
:$r XXtt93
Go10^[:$r XXUnix
:set nobinary ff&
:w
:qa!
ENDTESTunix
unix
eofdos^M
dos^M
eofmac^Mmac^M
:e! XXUnix
"XXUnix" [CR missing][dos format] 2 lines, 10 charactersunixunix~~~~~~~~~~~
~~~~
~~~~
~~:w! XXtt11
"XXtt11" [New File][dos format] 2 lines, 12 characters written:e! XXDos
"XXDos" [dos format] 2 lines, 10 charactersdosdos:w! XXtt12
"XXtt12" [New File][dos format] 2 lines, 10 characters written:e! XXMac
"XXMac" [Incomplete last line][dos format] 1 line, 8 charactersmac^Mmac^M~:w! XXtt13
"XXtt13" [New File][dos format] 1 line, 10 characters written:bwipe XXUnix XXDos XXMac
"test30.in" [CR missing][dos format] 237 lines, 3762 characters

3 buffers wiped out

Press ENTER or type command to continue:set fileformat=mac
:$r XXtt64
Go7^[:$r XXtt71
:$r XXtt72
Go8^[:$r XXtt81
:$r XXtt82
Go9^[:$r XXtt91
:$r XXtt92
:$r XXtt93
Go10^[:$r XXUnix
:set nobinary ff&
:w
:qa!
ENDTESTunix
unix
eofdos
dos
eofmac^Jmac
:e! XXUnix
"XXUnix" [Incomplete last line][mac format] 1 line, 10 charactersunix^Junix^J~~~~~~~~~~~~
~~~~
~~~~
~~:w! XXtt21
"XXtt21" [New File][mac format] 1 line, 11 characters written:e! XXDos
"XXDos" [Incomplete last line][mac format] 3 lines, 10 charactersdos^Jdos
^J:w! XXtt22
"XXtt22" [New File][mac format] 3 lines, 11 characters written:e! XXMac
"XXMac" [mac format] 2 lines, 8 charactersmac
mac~:w! XXtt23
"XXtt23" [New File][mac format] 2 lines, 8 characters written:bwipe XXUnix XXDos XXMac
"test30.in" [Incomplete last line][mac format] 5 lines, 3762 characters

3 buffers wiped out

Press ENTER or type command to continue:"
^Jdos
^Jeof^J^Jmac
mac
^J:" try reading and writing with 'fileformats' set to one format
:set fileformats=unix
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunixdos^M
dos^M
mac^Mmac^M:w! XXtt31
"XXtt31" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=dos
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line][CR missing][dos format] 5 lines, 28 character

s
Press ENTER or type command to continue:w! XXtt32
"XXtt32" [New File][dos format] 5 lines, 32 characters written

Press ENTER or type command to continue:bwipe XXUxDsMc
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' option

Note: This test will fail if "cat" is not available."test30.in" [CR missing][dos format] 237 lines, 3762 characters:set fileformats=mac
:e! XXUxDsMc
"XXUxDsMc" [mac format] 4 lines, 28 charactersunix^Junix^Jdos^Jdos
^Jmacmac~~~~~~~~~~~~~~~~~~~:w! XXtt33
"XXtt33" [New File][mac format] 4 lines, 28 characters written:bwipe XXUxDsMc
"test30.in" [Incomplete last line][mac format] 5 lines, 3762 characters^Jdoseof^J^Jmac
mac^J:"
:" try reading and writing with 'fileformats' set to two formats
:set fileformats=unix,dos
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunixdos^M
dos^M
mac^Mmac^M:w! XXtt41
"XXtt41" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXUxMac
"XXUxMac" [Incomplete last line] 3 lines, 18 charactersunixunix
mac^Mmac^M~~~~~~~~~~~~~~~~~~~~:w! XXtt42
"XXtt42" [New File] 3 lines, 19 characters written:bwipe XXUxMac
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXDosMac
"XXDosMac" [Incomplete last line][dos format] 3 lines, 18 charactersdodos
mac^Mmac^M~~~~~~~~~~~~~~~~~~~~:w! XXtt43
"XXtt43" [New File][dos format] 3 lines, 20 characters written:bwipe XXDosMac
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=unix,mac
:e! XXUxDs
"XXUxDs" 4 lines, 20 charactersunixunix
dos^Mdos^M~~~~~~~~~~~~~~~~~~~:w! XXtt51
"XXtt51" [New File] 4 lines, 20 characters written:bwipe XXUxDs
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt52
"XXtt52" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXDosMac
"XXDosMac" [mac format] 4 lines, 18 charactersdo^Jdos
^Jmacmac~~~~~~~~~~~~~~~~~~~:w! XXtt53
"XXtt53" [New File][mac format] 4 lines, 18 characters written:bwipe XXDosMac
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXEol
"XXEol" [Incomplete last line] 1 line, 5 charactersnoeol~~
~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
unix,mac:unix:w! XXtt54
"XXtt54" [New File] 2 lines, 20 characters written:bwipe XXEol
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=dos,mac
:e! XXUxDs
"XXUxDs" [CR missing][dos format] 4 lines, 20 charactersunixunix
dosdos~~~~~~~~~~~~~~~~~~~:w! XXtt61
"XXtt61" [New File][dos format] 4 lines, 22 characters written:bwipe XXUxDs
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXUxMac
"XXUxMac" [Incomplete last line][CR missing][dos format] 3 lines, 18 charactersunixunix
mac^Mmac^M~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
dos,mac:dos:w! XXtt62
"XXtt62" [New File][dos format] 4 lines, 35 characters written:bwipe XXUxMac
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line][CR missing][dos format] 5 lines, 28 character

s
Press ENTER or type command to continue:w! XXtt63
"XXtt63" [New File][dos format] 5 lines, 32 characters written

Press ENTER or type command to continue:bwipe XXUxDsMc
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' option

Note: This test will fail if "cat" is not available."test30.in" [CR missing][dos format] 237 lines, 3762 characters:e! XXMacEol
"XXMacEol" [Incomplete last line][mac format] 3 lines, 13 charactersmacmac
noeol~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
dos,mac:mac:w! XXtt64
"XXtt64" [New File][mac format] 4 lines, 26 characters written:bwipe XXMacEol
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:"
:" try reading and writing with 'fileformats' set to three formats
:set fileformats=unix,dos,mac
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt71
"XXtt71" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXEol
"XXEol" [Incomplete last line] 1 line, 5 charactersnoeol~~
~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
unix,dos,mac:unix:w! XXtt72
"XXtt72" [New File] 2 lines, 24 characters written:bwipe XXEol
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=mac,dos,unix
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt81
"XXtt81" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXEol
"XXEol" [Incomplete last line][mac format] 1 line, 5 charactersnoeol~~
~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
mac,dos,unix:mac:w! XXtt82
"XXtt82" [New File][mac format] 2 lines, 23 characters written:bwipe XXEol
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:" try with 'binary' set
:set fileformats=mac,unix,dos
:set binary
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt91
"XXtt91" [New File][Incomplete last line] 5 lines, 28 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=mac
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt92
"XXtt92" [New File][Incomplete last line] 5 lines, 28 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=dos
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt93
"XXtt93" [New File][Incomplete last line] 5 lines, 28 characters written:"
:" Append "END" to each file so that we can see what the last written char was.
:set fileformat=unix nobin
~~~~--No lines in buffer--END:w >>XXtt01
"XXtt01" 1 line, 4 characters appended:w >>XXtt02
"XXtt02" 1 line, 4 characters appended:w >>XXtt11
"XXtt11" 1 line, 4 characters appended:w >>XXtt12
"XXtt12" 1 line, 4 characters appended:w >>XXtt13
"XXtt13" 1 line, 4 characters appended:w >>XXtt21
"XXtt21" 1 line, 4 characters appended:w >>XXtt22
"XXtt22" 1 line, 4 characters appended:w >>XXtt23
"XXtt23" 1 line, 4 characters appended:w >>XXtt31
"XXtt31" 1 line, 4 characters appended:w >>XXtt32
"XXtt32" 1 line, 4 characters appended:w >>XXtt33
"XXtt33" 1 line, 4 characters appended:w >>XXtt41
"XXtt41" 1 line, 4 characters appended:w >>XXtt42
"XXtt42" 1 line, 4 characters appended:w >>XXtt43
"XXtt43" 1 line, 4 characters appended:w >>XXtt51
"XXtt51" 1 line, 4 characters appended:w >>XXtt52
"XXtt52" 1 line, 4 characters appended:w >>XXtt53
"XXtt53" 1 line, 4 characters appended:w >>XXtt54
"XXtt54" 1 line, 4 characters appended:w >>XXtt61
"XXtt61" 1 line, 4 characters appended:w >>XXtt62
"XXtt62" 1 line, 4 characters appended:w >>XXtt63
"XXtt63" 1 line, 4 characters appended:w >>XXtt64
"XXtt64" 1 line, 4 characters appended:w >>XXtt71
"XXtt71" 1 line, 4 characters appended:w >>XXtt72
"XXtt72" 1 line, 4 characters appended:w >>XXtt81
"XXtt81" 1 line, 4 characters appended:w >>XXtt82
"XXtt82" 1 line, 4 characters appended:w >>XXtt91
"XXtt91" 1 line, 4 characters appended:w >>XXtt92
"XXtt92" 1 line, 4 characters appended:w >>XXtt93
"XXtt93" 1 line, 4 characters appended:"
:" Concatenate the results.
:" Make fileformat of test.out the native fileformat.
:" Add a newline at the end.
:set binary
:e! test.out
"test.out" 2 lines, 10 charactersunix
unix:$r XXtt01
"XXtt01" 3 lines, 14 charactersdos^M
dos^M
END:$r XXtt02
"XXtt02" 2 lines, 13 charactersmac^Mmac^M
END

1:$r XXtt11
"XXtt11" 3 lines, 16 charactersunix^M
unix^M
END:$r XXtt12
"XXtt12" 3 lines, 14 charactersdos^M
dos^M
END:$r XXtt13
"XXtt13" 2 lines, 14 charactersmac^Mmac^M^M
END

2:$r XXtt21
"XXtt21" 3 lines, 15 charactersunix
unix
^MEND:$r XXtt22
"XXtt22" 3 lines, 15 charactersdos^M
dos^M
^MEND:$r XXtt23
"XXtt23" 1 line, 12 characters
mac^Mmac^MEND
3
:$r XXtt31
"XXtt31" 6 lines, 33 characters
unix
:$r XXtt32
"XXtt32" 6 lines, 36 characters





unix
dos^M
dos^M
mac^Mmac^M
END
unix^M
:$r XXtt33
"XXtt33" 5 lines, 32 characters





unix^M
dos^M
dos^M
mac^Mmac^M^M
END
unix



unix
dos^M
dos^M
mac^Mmac^MEND

4
:$r XXtt41
"XXtt41" 6 lines, 33 characters
unix
:$r XXtt42
"XXtt42" 4 lines, 23 characters





unix
dos^M
dos^M
mac^Mmac^M
END
unix
:$r XXtt43
"XXtt43" 4 lines, 24 characters



unix
mac^Mmac^M
END
dos^M


dos^M
mac^Mmac^M^M
END

5
:$r XXtt51
"XXtt51" 5 lines, 24 characters
unix
:$r XXtt52
"XXtt52" 6 lines, 33 characters




unix
dos^M
dos^M
END
unix
:$r XXtt53
"XXtt53" 3 lines, 22 characters





unix
dos^M
dos^M
mac^Mmac^M
END
dos^M
:$r XXtt54
"XXtt54" 3 lines, 24 characters


dos^M
mac^Mmac^MEND
unix,mac:unix

noeol
END

6
:$r XXtt61
"XXtt61" 5 lines, 26 characters
unix^M
:$r XXtt62
"XXtt62" 5 lines, 39 characters




unix^M
dos^M
dos^M
END
dos,mac:dos^M
:$r XXtt63
"XXtt63" 6 lines, 36 characters




unix^M
unix^M
mac^Mmac^M^M
END
unix^M
:$r XXtt64
"XXtt64" 1 line, 30 characters





unix^M
dos^M
dos^M
mac^Mmac^M^M
END
dos,mac:mac^Mmac^Mmac^Mnoeol^MEND
7
:$r XXtt71
"XXtt71" 6 lines, 33 characters
unix
:$r XXtt72
"XXtt72" 3 lines, 28 characters





unix
dos^M
dos^M
mac^Mmac^M
END
unix,dos,mac:unix

noeol
END

8
:$r XXtt81
"XXtt81" 6 lines, 33 characters
unix
:$r XXtt82
"XXtt82" 1 line, 27 characters





unix
dos^M
dos^M
mac^Mmac^M
END
mac,dos,unix:mac^Mnoeol^MEND
9
:$r XXtt91
"XXtt91" 5 lines, 32 characters
unix
:$r XXtt92
"XXtt92" 5 lines, 32 characters




unix
dos^M
dos^M
mac^Mmac^MEND
unix
:$r XXtt93
"XXtt93" 5 lines, 32 characters




unix
dos^M
dos^M
mac^Mmac^MEND
unix



unix
dos^M
dos^M
mac^Mmac^MEND

10
:$r XXUnix
"XXUnix" 2 lines, 10 characters
unix
:set nobinary ff&
:w
"test.out" 130 lines, 786 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test30 = test61; then \
#	  if diff test.out test30.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test30.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test30.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test32.failed test.ok test.out X* viminfo
cp test32.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test32.in
[?1h="test32.in" 60 lines, 1391 charactersTest for insert expansion

:se cpt=.,w
* add-expands (word from next line) from other window
* add-expands (current buffer first)
* Local expansion, ends in an empty line (unless it becomes a global expansion)
* starts Local and switches to global add-expansion
:se cpt=.,w,i
* i-add-expands and switches to local
* add-expands lines (it would end in an empty line if it didn't ignored it self):se cpt=kXtestfile
* checks k-expansion, and file expansion (use Xtest11 instead of test11,
* because TEST11.OUT may match first on DOS)
:se cpt=w
* checks make_cyclic in other window
:se cpt=u nohid
* checks unloaded buffer expansion
* checks adding mode abortion
:se cpt=t,d
* tag expansion, define add-expansion interrupted
* t-expansion

STARTTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for insert expansion/^STARTTEST

:so small.vim
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 27 lines, 533 characters written:set ff& cpo+=A

/ENDTESTO^N^[IX^[A^X^F^N^[
:" use CTRL-X CTRL-F to complete Xtest11.one, remove it and then use
:" CTRL-X CTRL-F again to verify this doesn't cause trouble.
OX^X^F^H^H^H^H^H^H^H^H^X^F^[ddk
:se cpt=w
OST^N^P^P^P^P^[
:se cpt=u nohid
^WoOEN^N
unl^N^X^X^P^[
:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
O^X^]^X^D^X^D^X^X^D^X^D^X^D^X^D
a^N^[
:wq! test.out
ENDTEST

start of testfile
run1
run2
end of testfile

test11  36Gepeto/Tag/
asd     test11file      36G
Makefileto      run
:so! Xdotest
:so small.vim
:se nocp viminfo+=nviminfo cpt=.,w ff=unix | $-2,$w!Xtestfile | set ff&
"Xtestfile" [New] 3L, 57C written:se cot=
~~~~~~~~~~
[No Name]                                                                       unl^N^X^X^P^[
:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
O^X^]^X^D^X^D^X^X^D^X^D^X^D^X^D
a^N^[:wq! test.out
ENDTESTstart of testfile
run1run2test32.in                                                                       -- INSERT --
-- Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) match 1 of 4match in file test32.in-- Keyword completion (^N^P) match 2 of 4-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Adding Keyword completion (^N^P) Word from other line#include "Xtestfile"
run1 run2[+]-- Adding Keyword completion (^N^P) Word from other line-- INSERT --3
-- INSERT --
-- Keyword completion (^N^P) -- Searching...
Scanning: test32.in-- Keyword completion (^N^P) match 1 of 115-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.in-- Adding Keyword completion (^N^P) Word from other line-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword Local completion (^N^P) -- Searching...match 1 of 4 match 2 of 4 match 3 of 4 match 4 of 4 Back at original-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword Local completion (^N^P) -- Searching...match 1 of 4 match 2 of 4-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning: test32.in-- Keyword completion (^N^P) The only match-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.in-- Adding Keyword completion (^N^P) match 1 of 2match in file test32.in-- Adding Keyword completion (^N^P) Word from other linerun3 run3

run1 run2-- Adding Keyword completion (^N^P) Word from other line-- INSERT --
:se cpt=.,w,i
-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning: test32.in included file: Xtestfile
match in file test32.in-- Keyword completion (^N^P) The only match-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.in included file: Xtestfile
match in file test32.in-- Adding Keyword completion (^N^P) The only match-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.in included file: Xtestfile
match in file test32.in-- Adding Keyword completion (^N^P) The only match-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword Local completion (^N^P) -- Searching...match 1 of 3-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- Whole line completion (^L^N^P) -- Searching...
Scanning: test32.in-- Whole line completion (^L^N^P) match 1 of 57INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) match 1 of 57Adding Whole line completion (^L^N^P) -- Searching...
Scanning: test32.in-- Adding Whole line completion (^L^N^P) The only match Back at original The only matchMakefileto      run3
Makefileto      run3
Makefileto      run3-- INSERT --:se cpt=kXtestfile
:w Xtest11.one
"Xtest11.one" [New] 9L, 104C writtenXtest11.one  :w Xtest11.two
"Xtest11.two" [New] 9L, 104C written-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning dictionary: Xtestfilematch in file Xtestfile-- Keyword completion (^N^P) match 1 of 9test11[+]I -- Keyword completion (^N^P) match 1 of 9-- INSERT ---- INSERT --Xtest11
-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- File name completion (^F^N^P) -- Searching...match 1 of 2 match 2 of 2.two-- INSERT --:" use CTRL-X CTRL-F to complete Xtest11.one, remove it and then use
:" CTRL-X CTRL-F again to verify this doesn't cause trouble.
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- File name completion (^F^N^P) -- Searching...match 1 of 4INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- File name completion (^F^N^P) -- Searching...match 1 of 443
Make_all.mak
run1 run2d -- INSERT --
run1 run2~
:se cpt=w
-- INSERT --
-- Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) The only match Back at originalmatch in file test32.in-- Keyword completion (^N^P) The only match Back at originalmatch in file test32.in-- Keyword completion (^N^P) The only match
STARTTEST
run1 run2-- Keyword completion (^N^P) The only match-- INSERT --:se cpt=u nohid
~~~~~~~
~~~~~-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) The only match-- INSERT --
-- Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) match 1 of 3-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) The only matchENDTEST
unless-- Keyword completion (^N^P) The only match-- INSERT --:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- Tag completion (^]^N^P) -- Searching...match 1 of 3INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) match 1 of 3Definition completion (^D^N^P) -- Searching...Scanning included file: Xtestfilematch in file Xtestfile-- Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- Adding Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Adding Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- Adding Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Adding Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- Adding Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Adding Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- Adding Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Adding Definition completion (^D^N^P) Word from other lineINSERT ---- Keyword completion (^N^P) -- Searching...
Scanning tags.included file: Xtestfile
-- Keyword completion (^N^P) The only matchtest11file      36Gepeto/Tag/ asd
asd-- Keyword completion (^N^P) The only match-- INSERT --
ru:wq! test.out
"test.out" [New] 15L, 175C written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test32 = test61; then \
#	  if diff test.out test32.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test32.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test32.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test58.failed test.ok test.out X* viminfo
cp test58.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test58.in
[?1h="test58.in" 656 lines, 11024 charactersTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for spell checking.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 111 lines, 2591 characters written:set ff& cpo+=A
/ENDTEST:"
:" NOSLITSUGS
:call TestOne('8', '8')
:" Numbers
:call TestOne('9', '9')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1


:so! Xdotest
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:"
:" NOSLITSUGS
:call TestOne('8', '8')
:" Numbers
:call TestOne('9', '9')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1


:"Don't want to depend on the locale from the environment
:set enc=latin1e!"Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spelliasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=$put =''
  $put ='test '. a:aff . '-' . a:dic  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest  " use that spell file:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
vim

STARTTESTlatin1maxmem
iasdaff/.dic
:func TestOne(aff, dicspellfilea:affa:dicspldic and .aff
  exea:aff . 'affstarta:aff . 'affend/-1w! Xtest.aff
  exea:dic . 'dicstarta:dic . 'dicend/-1w! Xtest.dic
  mkspell! Xtest XtestasdTests for spell checking.     vim: set ft=vim :Change "asdTests" to:

 1 "Acid tests"

 2 "Attests"

 3 "Ass Tests"

 4 "As Tests"

 5 "Sad Tests"

 6 "Ads Tests"

 7 "As tests"

 8 "As detests"

 9 "Add Tests"

10 "Aid Tests"

11 "Ash Tests"

12 "Ad Tests"

13 "And Tests"

14 "Ask Tests"

15 "Asp Tests"

16 "USD Tests"

17 "Astutest"

18 "Autotests"

19 "Sadists"

20 "Asst Tests"

21 "Assad Tests"

22 "SSD Tests"

Type number and <Enter> or click with mouse (empty cancels): :"
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)

:    set spellfile=

:    $put =''

:    $put ='test '. a:aff . '-' . a:dic

:    " Generate a .spl file from a .dic and .aff file.

:    exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'

:    exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'

:    mkspell! Xtest Xtest

:    " use that spell file

:    set spl=Xtest.latin1.spl spell

:    " list all valid words

:    spelldump

:    %yank

:    quit

:    $put

:    $put ='-------'

:    " find all bad words and suggestions for them

:    exe '1;/^' . a:aff . 'good:'

:    normal 0f:]s

:    let prevbad = ''

:    while 1

:        let [bad, a] = spellbadword()

:        if bad == '' || bad == prevbad || bad == 'badend'

:            break

:          endif

:        let prevbad = bad

:        let lst = spellsuggest(bad, 3)

:        normal mm

:        $put =bad

:        $put =string(lst)

:        normal `m]s

:      endwhile

:  endfunc
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:"
:call TestOne('1', '1')
"Xtest.aff" [New File] 46 lines, 754 characters written

"Xtest.dic" [New File] 11 lines, 71 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 29 of 127 nodes; 98 (77%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 490 bytes

Reading back spell file...

Performing soundfolding...

Total number of words: 16

Number of words after soundfolding: 16

Compressing word tree...

Compressed 39 of 104 nodes; 65 (62%) remaining

Writing suggestion file Xtest.latin1.sug ...

Estimated runtime memory use: 357 bytes

17 lines yanked

17 more lines

Press ENTER or type command to continue:$put =soundfold('goobledygoook')
the end
uk
wrong
-------
bad
['put', 'uk', 'OK']
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']th['put', 'uk', 'test']gebletegek
kepereneven
:$put =soundfold('oeverloos gezwets edale')

everles gesvets etele
:"
:"
:" and now with SAL instead of SOFO items; test automatic reloading
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^affstart_sal/+1,/^affend_sal/-1w! Xtest.aff
"Xtest.aff" 151 lines, 3412 characters written:mkspell! Xtest Xtest
Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 29 of 127 nodes; 98 (77%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 490 bytes

Performing soundfolding...

Total number of words: 16

Number of words after soundfolding: 15

Compressing word tree...

Compressed 33 of 75 nodes; 42 (56%) remaining

Writing suggestion file Xtest.latin1.sug ...

Estimated runtime memory use: 241 bytes

Press ENTER or type command to continue:$put =soundfold('goobledygoook')
-------
bad
['put', 'uk', 'OK']
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end['put', 'uk', 'test']
the['put', 'uk', 'test']gebletegekkepereneveneverles gesvet etelekbltykk
kprnfn
:$put =soundfold('oeverloos gezwets edale')

*fls kswts tl
:"
:" also use an addition file
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^addstart/+1,/^addend/-1w! Xtest.latin1.add
"Xtest.latin1.add" [New File] 3 lines, 38 characters written:mkspell! Xtest.latin1.add.spl Xtest.latin1.add
Reading word file Xtest.latin1.add ...
Compressing word tree...

Compressed 0 of 29 nodes; 29 (100%) remaining

Writing spell file Xtest.latin1.add.spl ...

Done!

Estimated runtime memory use: 145 bytes

Press ENTER or type command to continue:set spellfile=Xtest.latin1.add
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment/^test2:
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent

:set spl=Xtest_us.latin1.spl
/^test2:
search hit BOTTOM, continuing at TOP2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend
search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint

:set spl=Xtest_gb.latin1.spl
elequint
/^test2:
search hit BOTTOM, continuing at TOP2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend
search hit BOTTOM, continuing at TOP:let [str, a] = spellbadword()
:$put =str
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent

:set spl=Xtest_nz.latin1.spl
elequint
elekwint
elekwint
/^test2:
search hit BOTTOM, continuing at TOP2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend
search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent

:set spl=Xtest_ca.latin1.spl
elequint
elekwint
elekwint

elequint
/^test2:
search hit BOTTOM, continuing at TOP2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend
search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
elekwint

:unlet str a
:"
:" Postponed prefixes
:call TestOne('2', '1')
"Xtest.aff" 44 lines, 447 characters written

"Xtest.dic" 11 lines, 71 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 10 of 98 nodes; 88 (89%) remaining

Compressed 0 of 13 nodes; 13 (100%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 505 bytes

17 lines yanked

17 more lines

2affend

2good: puts
badendaddstar
/regions=usgbnz
elequ/2/3
addendtest2:test elekwint test elekwent asdf:" Compound words
:call TestOne('3', '3')
"Xtest.aff" 5 lines, 60 characters written

"Xtest.dic" 5 lines, 29 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 6 of 29 nodes; 23 (79%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 115 bytes

3 lines yanked

3 more lines

Press ENTER or type command to continue:call TestOne('4', '4')
"Xtest.aff" 45 lines, 559 characters written

"Xtest.dic" 8 lines, 59 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - word
Compressing word tree...
Compressed 2 of 91 nodes; 89 (97%) remaining

Compressed 0 of 15 nodes; 15 (100%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 520 bytes

12 lines yanked

12 more lines

Press ENTER or type command to continue:call TestOne('5', '5')
"Xtest.aff" 25 lines, 237 characters written

"Xtest.dic" 6 lines, 57 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 19 of 105 nodes; 86 (81%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 440 bytes

10 lines yanked

10 more lines

Press ENTER or type command to continue:call TestOne('6', '6')
"Xtest.aff" 23 lines, 211 characters written

"Xtest.dic" 6 lines, 53 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - mee
Compressing word tree...
Compressed 19 of 87 nodes; 68 (78%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 350 bytes

9 lines yanked

9 more lines

Press ENTER or type command to continue:call TestOne('7', '7')
"Xtest.aff" 22 lines, 223 characters written

"Xtest.dic" 6 lines, 67 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - mee
Compressing word tree...
Compressed 19 of 89 nodes; 70 (78%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 360 bytes

9 lines yanked

9 more lines

Press ENTER or type command to continue:"
1234
mee/391,111,9999
bar/17,61003,123
lead/2
tail/123
middle/77,1
7dicend

bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar
badend

Test NOSLITSUGS

8affstart
SET ISO8859-1

NOSPLITSUGS
8affend

8dicstart:" NOSLITSUGS
:call TestOne('8', '8')
"Xtest.aff" 3 lines, 27 characters written

"Xtest.dic" 4 lines, 20 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 8 of 26 nodes; 18 (69%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 90 bytes

4 lines yanked

4 more lines

Press ENTER or type command to continue:" Numbers
NOSPLITSUGS
8affend

8dicstart
1234
foo
bar
faabar
8dicend

8good: foo bar faabar
bad: foobar barfooTest Numbers9affstart9affend9dicstart
1234
foo:call TestOne('9', '9')
Error detected while processing function TestOne:

line    5:

E493: Backwards range given: 1;/^9affstart/+1,/^9affend/-1w! Xtest.aff

"Xtest.dic" 3 lines, 13 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 2 of 15 nodes; 13 (86%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 65 bytes

3 lines yanked

3 more lines

Press ENTER or type command to continue:"
Test Numbers

9affstart
9affend

9dicstart
1234
foo
bar
9dicend

9good: 0b1011 0777 1234 0x01ff
badend


test output:

test 1-1# ile: Xtest.latin1.spl
Comment
input:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
Test Numbers

9affstart
9affend

9dicstart
1234
foo
bar
9dicend

9good: 0b1011 0777 1234 0x01ff
badend


test output:

test 1-1
# file: Xtest.latin1.spl
Comment
deol
input:"
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^test output:/,$wq! test.out
"test.out" [New File] 289 lines, 3844 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test58 = test61; then \
#	  if diff test.out test58.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test58.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test58.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test59.failed test.ok test.out X* viminfo
cp test59.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test59.in
[?1h="test59.in" 626 lines, 10897 charactersTests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 106 lines, 2520 characters written:set ff& cpo+=A
/ENDTEST:call TestOne('3', '3')
:call TestOne('4', '4')
:call TestOne('5', '5')
:call TestOne('6', '6')
:call TestOne('7', '7')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1


:so! Xdotest
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:call TestOne('3', '3')
:call TestOne('4', '4')
:call TestOne('5', '5')
:call TestOne('6', '6')
:call TestOne('7', '7')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1


:" text is in latin1, the test text is utf-8.enc=latin1e!
:set enc=utf-8:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=$put =''
  $put ='test '. a:aff . '-' . a:dic  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest  " use that spell file:set enc=utf-8
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)

:    set spellfile=

:    $put =''

:    $put ='test '. a:aff . '-' . a:dic

:    " Generate a .spl file from a .dic and .aff file.

:    exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'

:    exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'

:    mkspell! Xtest Xtest

:    " use that spell file

:    set spl=Xtest.utf-8.spl spell

:    " list all valid words

:    spelldump

:    %yank

:    quit

:    $put

:    $put ='-------'

:    " find all bad words and suggestions for them

:    exe '1;/^' . a:aff . 'good:'

:    normal 0f:]s

:    let prevbad = ''

:    while 1

:        let [bad, a] = spellbadword()

:        if bad == '' || bad == prevbad || bad == 'badend'

:            break

:          endif

:        let prevbad = bad

:        let lst = spellsuggest(bad, 3)

:        normal mm

:        $put =bad

:        $put =string(lst)

:        normal `m]s

:      endwhile

:  endfunc
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:"
:call TestOne('1', '1')
"Xtest.aff" [New File] 48 lines, 768 characters written

"Xtest.dic" [New File] 11 lines, 71 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 29 of 131 nodes; 102 (77%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 510 bytes

Reading back spell file...

Performing soundfolding...

Total number of words: 16

Number of words after soundfolding: 16

Compressing word tree...

Compressed 39 of 104 nodes; 65 (62%) remaining

Writing suggestion file Xtest.utf-8.sug ...

Estimated runtime memory use: 357 bytes

17 lines yanked

17 more lines

Press ENTER or type command to continue:$put =soundfold('goobledygoook')
the end
uk
wrong
-------
bad
['put', 'uk', 'OK']
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']the['put', 'uk', 'test']gebletegek
:$put =soundfold('kóopërÿnôven')

kepereneven
:$put =soundfold('oeverloos gezwets edale')

everles gesvets etele
:"
:"
:" and now with SAL instead of SOFO items; test automatic reloading
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^affstart_sal/+1,/^affend_sal/-1w! Xtest.aff
"Xtest.aff" 153 lines, 3426 characters written:mkspell! Xtest Xtest
Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 29 of 131 nodes; 102 (77%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 510 bytes

Performing soundfolding...

Total number of words: 16

Number of words after soundfolding: 15

Compressing word tree...

Compressed 33 of 75 nodes; 42 (56%) remaining

Writing suggestion file Xtest.utf-8.sug ...

Estimated runtime memory use: 241 bytes

Press ENTER or type command to continue:$put =soundfold('goobledygoook')
-------
bad
['put', 'uk', 'OK']
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end['put', 'uk', 'test']
the['put', 'uk', 'test']gebletegekkepereneveneverles gesvet etelekbltykk
:$put =soundfold('kóopërÿnôven')

kprnfn
:$put =soundfold('oeverloos gezwets edale')

*fls kswts tl
:"
:" also use an addition file
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^addstart/+1,/^addend/-1w! Xtest.utf-8.add
"Xtest.utf-8.add" [New File] 3 lines, 38 characters written:mkspell! Xtest.utf-8.add.spl Xtest.utf-8.add
Reading word file Xtest.utf-8.add ...
Compressing word tree...

Compressed 0 of 29 nodes; 29 (100%) remaining

Writing spell file Xtest.utf-8.add.spl ...

Done!

Estimated runtime memory use: 145 bytes

Press ENTER or type command to continue:set spellfile=Xtest.utf-8.add
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"/^test2:
tomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!:let [str, a] = spellbadword()
:$put =str
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent

:set spl=Xtest_us.utf-8.spl
/^test2:
search hit BOTTOM, continuing at TOPtomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
startwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

COMPOUNDRULE ssmm*ee:let [str, a] = spellbadword()
:$put =str
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint

:set spl=Xtest_gb.utf-8.spl
elequint
/^test2:
search hit BOTTOM, continuing at TOPtomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

search hit BOTTOM, continuing at TOP:let [str, a] = spellbadword()
:$put =str
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
startwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

COMPOUNDRULE ssmm*ee:let [str, a] = spellbadword()
:$put =str
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent

:set spl=Xtest_nz.utf-8.spl
elequint
elekwint
elekwint
/^test2:
search hit BOTTOM, continuing at TOPtomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
startwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

COMPOUNDRULE ssmm*ee:let [str, a] = spellbadword()
:$put =str
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent

:set spl=Xtest_ca.utf-8.spl
elequint
elekwint
elekwint

elequint
/^test2:
search hit BOTTOM, continuing at TOPtomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
startwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

COMPOUNDRULE ssmm*ee:let [str, a] = spellbadword()
:$put =str
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
elekwint

:unlet str a
:"
:" Postponed prefixes
:call TestOne('2', '1')
"Xtest.aff" 46 lines, 461 characters written

"Xtest.dic" 11 lines, 71 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 10 of 102 nodes; 92 (90%) remaining

Compressed 0 of 13 nodes; 13 (100%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 525 bytes

17 lines yanked

17 more lines

Press ENTER or type command to continue:"
addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

1good: wrong OK puts. Test the end
bad:  inputs comment ok Ok. test déôl end the
badend

2good: puts
bad: inputs comment ok Ok end the. test déôl
badendTest rules for compounding.3affstart
SET ISO8859-1COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:" Compound words
:call TestOne('3', '3')
"Xtest.aff" 5 lines, 60 characters written

"Xtest.dic" 5 lines, 29 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 6 of 31 nodes; 25 (80%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 125 bytes

3 lines yanked

3 more lines

Press ENTER or type command to continue:call TestOne('4', '4')
"Xtest.aff" 45 lines, 559 characters written

"Xtest.dic" 8 lines, 59 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - word
Compressing word tree...
Compressed 2 of 91 nodes; 89 (97%) remaining

Compressed 0 of 15 nodes; 15 (100%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 520 bytes

12 lines yanked

12 more lines

Press ENTER or type command to continue:call TestOne('5', '5')
"Xtest.aff" 25 lines, 237 characters written

"Xtest.dic" 6 lines, 57 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 19 of 107 nodes; 88 (82%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 440 bytes

10 lines yanked

10 more lines

Press ENTER or type command to continue:call TestOne('6', '6')
"Xtest.aff" 23 lines, 211 characters written

"Xtest.dic" 6 lines, 53 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - mee
Compressing word tree...
Compressed 19 of 89 nodes; 70 (78%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 350 bytes

9 lines yanked

9 more lines

Press ENTER or type command to continue:call TestOne('7', '7')
"Xtest.aff" 26 lines, 338 characters written

"Xtest.dic" 6 lines, 67 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - mee
Compressing word tree...
Compressed 19 of 91 nodes; 72 (79%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 360 bytes

9 lines yanked

9 more lines

Press ENTER or type command to continue:"
1234
mee/391,111,9999
bar/17,61003,123
lead/2
tail/123
middle/77,1
7dicend

7good: meea1 meeaébar prebar barmeat prebarmeat  leadprebarlead tail leadtail  leadmiddletail
bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar
badend

test output:

test 1-1
# file: Xtest.utf-8.spl
Comment
deol
déôr
input
OK:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
1234
mee/391,111,9999
bar/17,61003,123
lead/2
tail/123
middle/77,1
7dicend

7good: meea1 meeaé bar prebar barmeat prebarmeat  leadprebarlead tail leadtail  leadmiddletail
bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar
badend

test output:

test 1-1
# file: Xtest.utf-8.spl
Comment
deol
déôr
input
OK:"
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^test output:/,$wq! test.out
"test.out" [New File] 270 lines, 3685 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test59 = test61; then \
#	  if diff test.out test59.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test59.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test59.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test72.failed test.ok test.out X* viminfo
cp test72.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test72.in
[?1h="test72.in" 146 lines, 2110 charactersTests for undo file.
Since this script is sourced we need to explicitly break changes up in
undo-able pieces.  Do that by setting 'undolevels'.

STARTTEST
:so small.vim
:"
:" Test 'undofile': first a simple one-line change.
:set nocompatible viminfo+=nviminfo visualbell
:set ul=100 undofile nomore
:e! Xtestfile
ggdGithis is one line^[:set ul=100
:s/one/ONE/
:set ul=100
:w
:bwipe!
:e Xtestfile
u:.w! test.out
:"
:" Test 'undofile', change in original file fails check
:set noundofile
:e! Xtestfile
:s/line/Line/:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for undo file./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 135 lines, 1913 characters written:set ff& cpo+=A
/ENDTEST:bwipe!
:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST

1111 -----
2222 -----

123456789
:so! Xdotest
:so small.vim
:"
:" Test 'undofile': first a simple one-line change.
:set nocompatible viminfo+=nviminfo visualbell
:set ul=100 undofile nomore
:e! Xtestfile
"Xtestfile" [New File]~~~~~~~~~~~~~~~~~
~~~
~~-- INSERT --this is one line:set ul=100
:s/one/ONE/
ONE
:set ul=100
:w
"Xtestfile" [New] 1L, 17C written:bwipe!
"test72.in" 146L, 2110C:bwipe!:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 1L, 17Cthis is ONE line~~~~~~~~~~~~~~~~~
~~~
~~1 change; before #2  0 seconds agoone
:.w! test.out
"test.out" [New] 1L, 17C written:"
:" Test 'undofile', change in original file fails check
:set noundofile
:e! Xtestfile
"Xtestfile" 1L, 17CONE
:s/line/Line/
L
:w
"Xtestfile" 1L, 17C written:set undofile
:bwipe!
"test72.in" 146L, 2110C:bwipe!:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 1L, 17Cthis is ONE Line~~~~~~~~~~~~~~~~~
~~~
~~:" TODO: this beeps
Already at oldest change:.w >>test.out
"test.out" 1L, 17C appended:"
:" Test 'undofile', add 10 lines, delete 6 lines, undo 3
:set undofile
--No lines in buffer---- INSERT --one
two
three
four
five
six
seven
eight
nine
ten:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100
:w
"Xtestfile" 4L, 17C written:bwipe!
"test72.in" 146L, 2110C:bwipe!
:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 4L, 17Conetwonineten~~~~~~~~~~~~~~
~~~
~~1 more line; before #7  0 seconds agoeight1 more line; before #6  0 seconds agoseven1 more line; before #5  0 seconds agosix:w >>test.out
"test.out" 7L, 33C appended:"
:" Test that reading the undofiles when setting undofile works
:set noundofile ul=0
-- INSERT --six
us1 line less; before #8  0 seconds ago
~:e! Xtestfile
"Xtestfile" 4L, 17Cnine
ten~~~:set undofile ul=100
1 more line; before #7  0 seconds agoeight1 more line; before #6  0 seconds agoseven1 more line; before #5  0 seconds agosix1 more line; before #4  0 seconds agofive1 more line; before #3  0 seconds agofour1 more line; before #2  0 seconds agothree:w >>test.out
"test.out" 10L, 49C appended:" And now with encryption, cryptmethod=zip
:e! Xtestfile
"Xtestfile" 4L, 17Cninten~~~~~~:set undofile cm=zip
~~~--No lines in buffer---- INSERT --monday
tuesday
wednesday
thursday
friday:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100
:X
Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

Enter same key again: ******

monday
friday
~:w!
"Xtestfile" [crypted] 2L, 14C written:bwipe!
"test72.in" 146L, 2110C:bwipe!
:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 
Need encryption key for "Xtestfile"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtestfile" [crypted] 2L, 14Cmonday
friday
~~~~~~~~~~~~~~~~
~~~
~~"Xtestfile" [crypted] 2L, 14C:set key=
1 more line; before #11  1 seconds agothursday1 more line; before #10  1 seconds agowednesday:w >>test.out
"test.out" 4L, 33C appended:"
:"
:" With encryption, cryptmethod=blowfish
:e! Xtestfile
"Xtestfile" Need encryption key for "Xtestfile"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: *******

~
~~"Xtestfile" [noeol][crypted] 1L, 14C:set undofile cm=blowfish ff&
--No lines in buffer---- INSERT --jan
feb
mar
apr
jun:set ul=100

-- INSERT --foo mar:set ul=100

~:set ul=100
-- INSERT --bar apr:set ul=100
:X
Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

Enter same key again: ******

jan
feb
bar apr:w!
"Xtestfile" [blowfish] 4L, 20C written:bwipe!
"test72.in" 146L, 2110C:bwipe!
:e Xtestfile
foo2ba
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 
Need encryption key for "Xtestfile"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtestfile" [blowfish] 4L, 20Cjan
feb
bar apr
jun~~~~~~~~~~~~~~
~~~
~~"Xtestfile" [blowfish] 4L, 20C:set key=
/bar
:.w >>test.out
"test.out" 1L, 8C appended1 change; before #15  1 seconds agoap:.w >>test.out
"test.out" 1L, 4C appended1 more line; before #14  1 seconds agofoo mar:.w >>test.out
"test.out" 1L, 8C appended1 change; before #13  1 seconds agomar:.w >>test.out
"test.out" 1L, 4C appended:"
:" With encryption, cryptmethod=blowfish2
:e! Xtestfile
"Xtestfile" Need encryption key for "Xtestfile"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: *******

~
~~~"Xtestfile" [noeol][blowfish] 1L, 20C:set undofile cm=blowfish2 ff&
--No lines in buffer---- INSERT --jan
feb
mar
apr
jun:set ul=100

-- INSERT --foo mar:set ul=100

~:set ul=100
-- INSERT --bar apr:set ul=100
:X
Enter encryption key: *******

Enter same key again: *******

jan
feb:w!
"Xtestfile" [blowfish2] 4L, 20C written:bwipe!
"test72.in" 146L, 2110C:bwipe!
:e Xtestfile
foo2ba
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 
Need encryption key for "Xtestfile"

Enter encryption key: *******

"Xtestfile" [blowfish2] 4L, 20Cjan
feb
bar ap
jun~~~~~~~~~~~~~~
~~~
~~"Xtestfile" [blowfish2] 4L, 20C:set key=
/bar
:.w >>test.out
"test.out" 1L, 8C appended1 change; before #19  0 seconds agoap:.w >>test.out
"test.out" 1L, 4C appended1 more line; before #18  0 seconds agofoo mar:.w >>test.out
"test.out" 1L, 8C appended1 change; before #17  1 seconds agomar:.w >>test.out
"test.out" 1L, 4C appended:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")

:  : call rename("_un_Xtestfile", "Xtestundo")

:  :else

:  : call rename(".Xtestfile.un~", "Xtestundo")

:  :endif
jan
feb
mar
apr:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test72 = test61; then \
#	  if diff test.out test72.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test72.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test72.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test78.failed test.ok test.out X* viminfo
cp test78.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test78.in
[?1h="test78.in" 46 lines, 1464 charactersInserts 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 viminfo+=nviminfo
:e! Xtest
ggdG
:let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01223456789abcdefghijklmnoparstuvwxyz0123456789"
: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', ''):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Inserts 10000 lines with text to fill the swap file with two levels of pointer/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 37 lines, 1208 characters written:set ff& cpo+=A
/ENDTEST: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 linnecount = linedollar | endif
:let i = 1
:while i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call appendd(line('$'), i . ' differs') | exe 'wincmd w' | endif | let i += 1 | endwhile
:q!
:call append(line('$'), 'recovery end')
:w! test.out
:qa!
ENDTEST


:so! Xdotest
:so small.vim
:set nocp fileformat=unix undolevels=-1 viminfo+=nviminfo
:e! Xtest
"Xtest" [New File]~~~~~~~~~~~~~~~~~~~~~
~:let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01

23456789abcdefghijklmnoparstuvwxyz0123456789"
:let i = 1
:let linecount = 10000
:while i <= linecount | call append(i - 1, i . text) | let i += 1 | endwhile
9990    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9991    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9992    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9993    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9994    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9995    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9996    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9997    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9998    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9999    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
10000   abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789:preserve
File preserved:" get the name of the swap file
:redir => swapname
:swapname
.Xtest.swp:redir END
:let swapname = substitute(swapname, '[[:blank:][:cntrl:]]*\(.\{-}\)[[:blank:][

:cntrl:]]*$', '\1', '')
9990    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899a
:" make a copy of the swap file in Xswap
:set bin
:exe 'sp ' . swapname
".Xtest.swp"[noeol] 611L, 1224704Cb0VIM 8.0^@^@^@^@^P^@^@^@^@^@^@^@^@^@^@~P^G^@^@buildd^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@bm-wb-03^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@/<<PKGBUILDDIR>>/src/vim-gtk3/tesstdir/Xtest^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@.Xtest.swp                                                                      799a
999899a
999999a
1000099a~
Xtest [+]                                                                       :w! Xswap
"Xswap" [New][noeol] 611L, 1224704C written:echo swapname
.Xtest.sw:set nobin
:new
~
~
~
~
~
~
[No Name]                                                                       b0VIM 8.0^@^@^@^@^P^@^@^@^@^@^@^@^@^@^@~P^G^@^@buildd^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@bm-wb-03^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@/<<PKGBUILDDIR>>/src/vim-gtk3/tesstdir/Xtest^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@.Xtest.swp                                                                      9999    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
10000   abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789

~
Xtest [+]                                                                       :only!
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:bwipe! Xtest
:call rename('Xswap', swapname)
:recover Xtest
Using swap file ".Xtest.swp"

Original file "/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtest"

"/<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xtest" [New File]Recovery completed. You should check if everything is OK.

(You might want to write out this file under another name

and run diff with the original file to check for changes)

You may want to delete the .swp file now.



Press ENTER or type command to continue:call delete(swapname)
1abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
2abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
3abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
4abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
5abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
6abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
7abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
8abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
10      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
11      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
12      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@:new
~~~~~~~~~~
[No Name]                                                                       199a
299a
399a
4 99a
5 99a
Xtest [+]                                                                       :call append(0, 'recovery start')
recovery start[+]:wincmd w
[No Name] [+]                                                                   Xtest [+]                                                                       :let linedollar = line('$')
:if linedollar < linecount | exe 'wincmd w' | call append(line('$'), "expected 

" . linecount . " lines but found only " . linedollar) | exe 'wincmd w' | let li

necount = linedollar | endif
recovery start:let i = 1
:while i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call appen

d(line('$'), i . ' differs') | exe 'wincmd w' | endif | let i += 1 | endwhile
recovery start:q!
~~~~~~~~~~~~:call append(line('$'), 'recovery end')
recovery end:w! test.out
"test.out" [New] 3L, 29C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test78 = test61; then \
#	  if diff test.out test78.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test78.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test78.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test83.failed test.ok test.out X* viminfo
cp test83.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test83.in
[?1h="test83.in" 76 lines, 1273 charactersTests for tag search with !_TAG_FILE_ENCODING.

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
:/^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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for tag search with !_TAG_FILE_ENCODING./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 58 lines, 1021 characters written:set ff& cpo+=A
/ENDTEST: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
:so! Xdotest
:so mbyte.vim
:set enc=utf8
: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:if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"

:  : e! test.ok

:  : w! test.out

:  : qa!

:  :endif
:tag abc50
:if v:errmsg =~ 'E426:' || getline('.') != 'ABC'
: close
: put ='case3: failed'::/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt
"Xtags1.txt" [New File] 2 lines, 35 characters written:/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt
"Xtags2.txt" [New File] 2 lines, 25 characters written:/^text for tags3$/,/^text for tags3$/+1w! Xtags3.txt
"Xtags3.txt" [New File] 2 lines, 25 characters written:/^tags1$/+1,/^tags1-end$/-1w! Xtags1
"Xtags1" [New File] 2 lines, 81 characters written:Tests for tag search with !_TAG_FILE_ENCODING.

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
:/^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~~~~~~~~~
~~~~~
~~
~~
~~~~
--No lines in buffer--:::call setline('.', 'Results of test83')
Results of test83
::" case1:
:new
[No Name]                                                                       Results of test83test83.in [+]                                                                   :set tags=Xtags1
:let v:errmsg = ''
:tag abcdefghijklmnopqrs
"Xtags1.txt" 2 lines, 35 characterstext for tags1
abcdefghijklmnopqrsXtags1.txt:if v:errmsg =~ 'E426:' || getline('.') != 'abcdefghijklmnopqrs'

:  : close

:  : put ='case1: failed'

:  :else

:  : close

:  : put ='case1: ok'

:  :endif
Results of test83
case1: ok
~
~
~
~~~~::" case2:
:new
~[No Name]                                                                       Results of test83
case1: oktest83.in [+]                                                                   :set tags=test83-tags2
:let v:errmsg = ''
:tag /.BC
"Xtags2.txt" 2 lines, 25 characterstext for tags2
ABCXtags2.txt:if v:errmsg =~ 'E426:' || getline('.') != 'ABC'

:  : close

:  : put ='case2: failed'

:  :else

:  : close

:  : put ='case2: ok'

:  :endif
Results of test83
case1: ok
case2: ok
~
~
~~~~~::" case3:
:new
~~[No Name]                                                                       case1: ok
case2: oktest83.in [+]                                                                   :set tags=test83-tags3
:let v:errmsg = ''
:tag abc50
"Xtags3.txt" 2 lines, 25 characterstext for tags3
ABCXtags3.txt:if v:errmsg =~ 'E426:' || getline('.') != 'ABC'

:  : close

:  : put ='case3: failed'

:  :else

:  : close

:  : put ='case3: ok'

:  :endif
Results of test83
case1: ok
case2: ok
case3: ok
~
~~~~~:close
E37: No write since last change (add ! to override)::wq! test.out
"test.out" [New File] 4 lines, 48 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test83 = test61; then \
#	  if diff test.out test83.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test83.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test83.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test89.failed test.ok test.out X* viminfo
cp test89.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test89.in
[?1h="test89.in" 71 lines, 1514 characters- Some tests for setting 'number' and 'relativenumber'
  This is not all that useful now that the options are no longer reset when
  setting the other.
- Some tests for findfile() function

STARTTEST
:so small.vim
:set hidden nocp nu rnu viminfo+=nviminfo
:redir @a | set nu? rnu? | redir END
:e! xx
:redir @b | set nu? rnu? | redir END
:e! #
:$put ='results:'
:$put a
:$put b
:"
:set nonu nornu
:setglobal nu
:setlocal rnu
:redir @c | setglobal nu? | redir END
:set nonu nornu
:setglobal rnu
:setlocal nu:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
- Some tests for setting 'number' and 'relativenumber'/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 63 lines, 1305 characters written:set ff& cpo+=A
/ENDTEST:$put =':set MUST reset the other global value'
:$put g
:$put h
:"
:let cwd=getcwd()
:cd ..
:" Tests may be run from a shadow directory, so an extra cd needs to be done to
:" get above src/
:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
:$put =''
:$put ='Testing findfile'
:$put =''
:set ssl
:$put =findfile('test19.in','src/test*')
:exe "cd" cwd
:cd ..
:$put =findfile('test19.in','test*')
:$put =findfile('test19.in','testdir')
:exe "cd" cwd
:/^results/,$w! test.out
:q!
ENDTEST


:so! Xdotest
:so small.vim
:set hidden nocp nu rnu viminfo+=nviminfo
 21 :$put g 20 :$put h
 19 :" 18 :let cwd=getcwd()
 17 :cd .. 16 :" Tests may be run from a shadow directory, so an extra cd needs to be donee     to 15 :" get above src/
 14 :if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
 13 :$put =''
 12 :$put ='Testing findfile'
 11 :$put =''
 10 :set ssl
  9 :$put =findfile('test19.in','src/test*')
  8 :exe "cd" cwd
  7 :cd ..
  6 :$put =findfile('test19.in','test*')
  5 :$put =findfile('test19.in','testdir')
  4 :exe "cd" cwd
  3 :/^results/,$w! test.out
  2 :q!
  1 ENDTEST
71  :redir @a | set nu? rnu? | redir END
  number

  relativenumber

Press ENTER or type command to continue:e! xx
"xx" [New File]1   
~~~~~~~~~~~~~~~~~~~~~~:redir @b | set nu? rnu? | redir END
  number

  relativenumber

Press ENTER or type command to continue:e! #
"test89.in" line 71 of 71 --100%-- col 1 21 :$put g
 20 :$put h
 19 :"
 18 :let cwd=getcwd()
 17 :cd ..
 16 :" Tests may be run from a shadow directory, so an extra cd needs to be donee     to
 15 :" get above src/
 14 :if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
 13 :$put =''
 12 :$put ='Testing findfile'
 11 :$put =''
 10 :set ssl
  9 :$put =findfile('test19.in','src/test*')
  8 :exe "cd" cwd
  7 :cd ..
  6 :$put =findfile('test19.in','test*')
  5 :$put =findfile('test19.in','testdir')
  4 :exe "cd" cwd
  3 :/^results/,$w! test.out
  2 :q!
  1 ENDTEST
71  "test89.in" line 71 of 71 --100%-- col 1:$put ='results:'

1
 20
 19
 18
 17ee 
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
72  results:
:$put a
3 more lines


21
 20ee 
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3 
  2 
  1   number
75    relativenumber3 more lines:$put b
3 more lines


22
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3 
  2 
  1   number
78    relativenumber3 more lines:"
:set nonu nornu
:" get above src/:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif:$put ='':$put ='Testing findfile':$put ='':set ssl:$put =findfile('test19.in','src/test*'):exe "cd" cwd:cd ..:$put =findfile('test19.in','test*'):$put =findfile('test19.in','testdir'):exe "cd" cwd:/^results/,$w! test.ou:q!ENDTESTresults:  number  relativenumber  number  relativenumber:setglobal nu
:setlocal rnu
 22 :" get above src/
 21 :if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
 20 :$put =''
 19 :$put ='Testing findfile'
 18 :$put =''
 17 :set ssl
 16 :$put =findfile('test19.in','src/test*')
 15 :exe "cd" cwd
 14 :cd ..
 13 :$put =findfile('test19.in','test*')
 12 :$put =findfile('test19.in','testdir')
 11 :exe "cd" cwd
 10 :/^results/,$w! test.out
  9 :q!
  8 ENDTEST
  7 
  6 results:
  5 
  4   number
  3   relativenumber
  2 
  1   number
  0   relativenumber:redir @c | setglobal nu? | redir END
  number:set nonu nornu
:" get above src/:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif:$put ='':$put ='Testing findfile':$put ='':set ssl:$put =findfile('test19.in','src/test*'):exe "cd" cwd:cd ..:$put =findfile('test19.in','test*'):$put =findfile('test19.in','testdir'):exe "cd" cwd:/^results/,$w! test.ou:q!ENDTESTresults:  number  relativenumber  number  relativenumber:setglobal rnu
:setlocal nu
 56 :" get above src/
 57 :if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
 58 :$put =''
 59 :$put ='Testing findfile'
 60 :$put =''
 61 :set ssl
 62 :$put =findfile('test19.in','src/test*')
 63 :exe "cd" cwd
 64 :cd ..
 65 :$put =findfile('test19.in','test*')
 66 :$put =findfile('test19.in','testdir')
 67 :exe "cd" cwd
 68 :/^results/,$w! test.out
 69 :q!
 70 ENDTEST
 71 
 72 results:
 73 
 74   number
 75   relativenumber
 76 
 77   number
 78   relativenumber:redir @d | setglobal rnu? | redir END
  relativenumber:$put =':setlocal must NOT reset the other global value'

 79 :setlocal must NOT reset the other global value
:$put c


 80 
 81   number
:$put d


 82 
 83   relativenumber
:"
:set nonu nornu
:set ssl:$put =findfile('test19.in','src/test*'):exe "cd" cwd:cd ..:$put =findfile('test19.in','test*'):$put =findfile('test19.in','testdir'):exe "cd" cwd:/^results/,$w! test.ou:q!ENDTESTresults:  number  relativenumber  number  relativenumber:setlocal must NOT reset the other global value  number  relativenumber:setglobal nu
:setglobal rnu
:redir @e | setglobal nu? | redir END
  number:set nonu nornu
:setglobal rnu
:setglobal nu
:redir @f | setglobal rnu? | redir END
  relativenumber:$put =':setglobal MUST reset the other global value'

:setglobal MUST reset the other global value
:$put e


number
:$put f


relativenumber
:"
:set nonu nornu
:set nu
 66 :$put =findfile('test19.in','testdir')
 67 :exe "cd" cwd
 68 :/^results/,$w! test.out
 69 :q!
 70 ENDTEST
 71 
 72 results:
 73 
 74   number
 75   relativenumber
 76 
 77   number
 78   relativenumber
 79 :setlocal must NOT reset the other global value
 80 
 81   number
 82 
 83   relativenumber
 84 :setglobal MUST reset the other global value
 85 
 86   number
 87 
 88   relativenumber:set rnu
22
 21
 20
 1
 18
 17
 16
 15
 1
 13
 12
 11
 10
  
  8
  7
  6
  5
  
  3
  2
  1
88    :redir @g | setglobal nu? | redir END
  number:set nonu nornu
:$put =findfile('test19.in','testdir'):exe "cd" cwd:/^results/,$w! test.ou:q!ENDTESTresults:  number  relativenumber  number  relativenumber:setlocal must NOT reset the other global value  number  relativenumber:setglobal MUST reset the other global value  number  relativenumber:set rnu
 22 :$put =findfile('test19.in','testdir')
 21 :exe "cd" cwd
 20 :/^results/,$w! test.out
 19 :q!
 18 ENDTEST
 17 
 16 results:
 15 
 14   number
 13   relativenumber
 12 
 11   number
 10   relativenumber
  9 :setlocal must NOT reset the other global value
  8 
  7   number
  6 
  5   relativenumber
  4 :setglobal MUST reset the other global value
  3 
  2   number
  1 
  0   relativenumber:set nu
88    :redir @h | setglobal rnu? | redir END
  relativenumber:$put =':set MUST reset the other global value'

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
89  :set MUST reset the other global value
:$put g


2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2 
  1 
91    number
:$put h


2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2 
  1 
93    relativenumber
:"
:let cwd=getcwd()
:cd ..
/<<PKGBUILDDIR>>/src/vim-gtk3:" Tests may be run from a shadow directory, so an extra cd needs to be done to
:" get above src/
:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
/<<PKGBUILDDIR>>:$put =''

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
94  
:$put ='Testing findfile'

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
95  Testing findfile
:$put =''

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
96  
:set ssl
:$put =findfile('test19.in','src/test*')

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
97  src/testdir/test19.in
:exe "cd" cwd
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir:cd ..
/<<PKGBUILDDIR>>/src/vim-gtk3:$put =findfile('test19.in','test*')

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
98  testdir/test19.in
:$put =findfile('test19.in','testdir')

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
99  testdir/test19.in
:exe "cd" cwd
/<<PKGBUILDDIR>>/src/vim-gtk3/testdir:/^results/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New] 28L, 356C written:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test89 = test61; then \
#	  if diff test.out test89.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test89.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test89.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_arglist.vim
[?1h="test_arglist.vim" 318 lines, 6653 characters

Executing Test_argadd()
"a" [New File]bababababd

Executing Test_argc()
"a" [New File]
Executing Test_argdelete()
"a" [New File]a" [New File]
"bb

Executing Test_argedit()
"a" [New File]ba

"c" [New File]
"x

"y" [New File]

Executing Test_argidx()
"a" [New File]cabc

Executing Test_arglist_autocmd()
"Xxx1" 1L, 15C
"Xxx21L, 15C1L, 15C
"Xxx1" line 1 of 1 --100%-- col 1 ((3) of 2)
"Xxx21 of 2)
3 buffers wiped out

Executing Test_arglistid()
"a" [New File]
Executing Test_argpos()
"a" [New File]d

"c" [New File]
"ba

"d" [New File]
"a

Executing Test_argument()
"d" [New File]cbafile] --No lines in buffer-- (1 of 4)
"c3

a b [c] d
"c" [New File]

"x" [New File]
"z

Executing Test_argv()
"a" [New file] --No lines in buffer--

Executing Test_zero_argadd()
"b" [New file] --No lines in buffer-- (2 of 4)
"aFbedited" [New File]
"a" [New File]test_arglist.res" [New File][New] 0L, 0C written

Executed 11 tests
"messages" [New File][New] 15L, 326C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_assert.vim
[?1h="test_assert.vim" 125 lines, 2880 characters

Executing Test_assert_equal()

Executing Test_assert_exception()

Executing Test_assert_fail_fails()

Executing Test_assert_false()

Executing Test_assert_inrange()

Executing Test_assert_notequal()

Executing Test_assert_true()

Executing Test_compare_fail()

Executing Test_match()

Executing Test_notmatch()

Executing Test_user_is_happy()


oooo$$$$$$$$$$$$oooo

oo$$$$$$$$$$$$$$$$$$$$$$$$o

oo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$oo$   $$ o$

     o $ ooo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o$$ $$ $$o$

  oo $ $ "$      o$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$o$$$o$$o$

  "$$$$$$o$     o$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$o    $$$$$$$$

    $$$$$$$    $$$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$

    $$$$$$$$$$$$$$$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$$$$$$  """$$$

     "$$$""""$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$

      $$$   o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$o

     o$$"   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o

     $$$    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" "$$$$$$ooooo$$$$o

    o$$$oooo$$$$$  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$   o$$$$$$$$$$$$$$$$$

    $$$$$$$$"$$$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     $$$$""""""""

   """"$$$$    "$$$$$$$$$$$$$$$$$$$$$$$$$$$$"      o$$$

"$$$o     """$$$$$$$$$$$$$$$$$$"$$"$$$

$$$o"$$""$$$$$$""""o$$$

$$$$oo$$$"

"$$$$o      o$$$$$$o"$$$$oo$$$$

"$$$$$oo     ""$$$$o$$$$$o   o$$$$""

""$$$$$oooo  "$$$o$$$$$$$$$"""

""$$$$$$$oo $$$$$$$$$$

""""$$$$$$$$$$$

$$$$$$$$$$$$

$$$$$$$$$$"

"$$$""""

Executing Test_wrong_error_type()
"test_assert.res" [New File][New] 0L, 0C written

Executed 12 tests
"messages" 15L, 326C30L, 734C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_autochdir.vim
[?1h="test_autochdir.vim" 17 lines, 332 characters

Executing Test_set_filename()
"samples/Xtest" [New] 0L, 0C written
"test_autochdir.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"30L, 734C34L, 806C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_backspace_opt.vim
[?1h="test_backspace_opt.vim" 59 lines, 1673 characters

Executing Test_backspace_option()
"test_backspace_opt.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"34L, 806C38L, 886C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_bufwintabinfo.vim
[?1h="test_bufwintabinfo.vim" 116 lines, 3459 characters

Executing Test_get_buf_options()

Executing Test_get_win_options()

Executing Test_getbufwintabinfo()
"Xtestfile1" [New File]212

Already only one window
"test_bufwintabinfo.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"38L, 886C44L, 1033C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_cdo.vim
[?1h="test_cdo.vim" 205 lines, 5116 characters

Executing Test_cdo()
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile1" 3L, 18C33L, 18C

(1 of 1): Line3
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2

(7 of 8): Line2
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile2" 3L, 18C

(5 of 8): Line2

(5 of 8): Line2

(1 of 1): Line2

Executing Test_ldo()
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile1" 3L, 18C33L, 18C

(1 of 1): Line3
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2

(7 of 8): Line2
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile2" 3L, 18C

(5 of 8): Line2

(5 of 8): Line2

(1 of 1): Line2
"test_cdo.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"44L, 1033C49L, 1112C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_channel.vim
[?1h="test_channel.vim" 1528 lines, 43719 characters
"test_channel.res" [New File][New] 0L, 0C written

Executed 0 test
"messages"49L, 1112C52L, 1152C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_charsearch.vim
[?1h="test_charsearch.vim" 62 lines, 1475 characters

Executing Test_charsearch()

Executing Test_search_cmds()
"test_charsearch.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"52L, 1152C57L, 1253C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_cmdline.vim
[?1h="test_cmdline.vim" 191 lines, 5876 characters

Executing Test_complete_list():e test

test1.intest84.ok

test1.oktest84.out

test1.outtest85.in

test103.intest85.ok

test103.oktest85.out

test103.outtest86.in

test104.intest86.ok

test104.oktest86.out

test104.outtest87.in

test107.intest87.ok

test107.oktest87.out

test107.outtest88.in

test108.intest88.ok

test108.oktest88.out

test108.outtest89.in

test11.intest89.ok

test11.oktest89.out

test11.outtest9.in

test12.intest9.ok

test12.oktest9.out

test12.outtest90.in

test14.intest90.ok

test14.oktest90.out

test14.outtest91.in

test15.intest91.ok

test15.oktest91.out

test15.outtest92.in

test17.intest92.ok

test17.oktest92.out

test17.outtest93.in

test17a.intest93.ok

test19.intest93.out

test19.oktest94.in

test19.outtest94.ok

test20.intest94.out

test20.oktest95.in

test20.outtest95.ok

test22.intest95.out

test22.oktest97.in

test22.outtest97.ok

test23.intest97.out

test23.oktest98.in

test23.outtest98.ok

test24.intest98.out

test24.oktest99.in

test24.outtest99.ok

test25.intest99.out

test25.oktest_alot.vim

test25.outtest_alot_latin.vim

test26.intest_alot_utf8.vim

test26.oktest_arglist.res

test26.outtest_arglist.vim

test28.intest_assert.res

test28.oktest_assert.vim

test28.outtest_assign.vim

test29.intest_autochdir.res

test29.oktest_autochdir.vim

test29.outtest_autocmd.vim

test3.intest_autocmd_option.in

test3.oktest_autocmd_option.ok

test3.outtest_autocmd_option.out

test30.intest_autoformat_join.in

test30.oktest_autoformat_join.ok

test30.outtest_autoformat_join.out

test31.intest_backspace_opt.res

test31.oktest_backspace_opt.vim

test31.outtest_breakindent.in

test32.intest_breakindent.ok

test32.oktest_breakindent.out

test32.outtest_bufwintabinfo.res

test33.intest_bufwintabinfo.vim

test33.oktest_cdo.res

test33.outtest_cdo.vim

test34.intest_changelist.in

test34.oktest_changelist.ok

test34.outtest_changelist.out

test36.intest_channel.py

test36.oktest_channel.res

test36.outtest_channel.vim

test37.intest_channel_pipe.py

test37.oktest_charsearch.res

test37.outtest_charsearch.vim

test38.intest_close_count.in

test38.oktest_close_count.ok

test38.outtest_close_count.out

test39.intest_cmdline.vim

test39.oktest_command_count.vim

test39.outtest_comparators.in

test4.intest_comparators.ok

test4.oktest_comparators.out

test4.outtest_crypt.vim

test40.intest_cscope.vim

test40.oktest_cursor_func.vim

test40.outtest_delete.vim

test41.intest_diffmode.vim

test41.oktest_digraph.vim

test41.outtest_erasebackword.in

test42.intest_erasebackword.ok

test42.oktest_erasebackword.out

test42.outtest_eval.in

test43.intest_eval.ok

test43.oktest_eval.out

test43.outtest_eval_func.vim

test44.intest_ex_undo.vim

test44.oktest_execute_func.vim

test44.outtest_expand.vim

test45.intest_expand_dllpath.vim

test45.oktest_expr.vim

test45.outtest_expr_utf8.vim

test48.intest_farsi.vim

test48.oktest_feedkeys.vim

test48.outtest_file_perm.vim

test49.intest_filter_cmd.vim

test49.oktest_filter_map.vim

test49.outtest_fixeol.in

test49.vimtest_fixeol.ok

test5.intest_fixeol.out

test5.oktest_fnameescape.vim

test5.outtest_fnamemodify.vim

test50.intest_getcwd.in

test50.oktest_getcwd.ok

test51.intest_getcwd.out

test51.oktest_gf.vim

test51.outtest_glob2regpat.vim

test52.intest_gn.vim

test52.oktest_goto.vim

test52.outtest_gui.vim

test53.intest_hardcopy.vim

test53.oktest_help_tagjump.vim

test53.outtest_history.vim

test54.intest_hlsearch.vim

test54.oktest_increment.vim

test54.outtest_increment_dbcs.vim

test55.intest_insertcount.in

test55.oktest_insertcount.ok

test55.outtest_insertcount.out

test56.intest_job_fails.vim

test56.oktest_join.vim

test56.outtest_json.vim

test57.intest_jumps.vim

test57.oktest_lambda.vim

test57.outtest_langmap.vim

test58.intest_largefile.vim

test58.oktest_lispwords.vim

test58.outtest_listchars.in

test59.intest_listchars.ok

test59.oktest_listchars.out

test59.outtest_listlbr.in

test60.intest_listlbr.ok

test60.oktest_listlbr.out

test60.outtest_listlbr_utf8.in

test60.vimtest_listlbr_utf8.ok

test64.intest_listlbr_utf8.out

test64.oktest_man.vim

test64.outtest_mapping.vim

test65.intest_marks.vim

test65.oktest_match.vim

test65.outtest_matchadd_conceal.vim

test66.intest_matchadd_conceal_utf8.vim

test66.oktest_menu.vim

test66.outtest_messages.vim

test67.intest_nested_function.vim

test67.oktest_netbeans.py

test67.outtest_netbeans.vim

test68.intest_normal.vim

test68.oktest_options.vim

test68.outtest_packadd.vim

test69.intest_partial.vim

test69.oktest_perl.vim

test69.outtest_popup.vim

test7.intest_quickfix.vim

test7.oktest_regexp_latin.vim

test7.outtest_regexp_utf8.vim

test70.intest_reltime.vim

test70.oktest_ruby.vim

test70.outtest_search.vim

test72.intest_search_mbyte.in

test72.oktest_search_mbyte.ok

test72.outtest_search_mbyte.out

test73.intest_searchpos.vim

test73.oktest_set.vim

test73.outtest_signs.vim

test75.intest_smartindent.vim

test75.oktest_sort.vim

test75.outtest_source_utf8.vim

test76.intest_startup.vim

test76.oktest_startup_utf8.vim

test76.outtest_stat.vim

test77.intest_statusline.vim

test77.oktest_substitute.vim

test77.outtest_syn_attr.vim

test77a.intest_syntax.vim

test77a.oktest_tabline.vim

test78.intest_tabpage.vim

test78.oktest_tagcase.vim

test78.outtest_tagjump.vim

test79.intest_textobjects.vim

test79.oktest_timers.vim

test79.outtest_true_false.vim

test8.intest_undo.vim

test8.oktest_unlet.vim

test8.outtest_usercommands.vim

test80.intest_utf8.in

test80.oktest_utf8.ok

test80.outtest_utf8.out

test82.intest_viminfo.vim

test82.oktest_viml.vim

test82.outtest_visual.vim

test83-tags2test_window_cmd.vim

test83-tags3test_window_id.vim

test83.intest_wordcount.in

test83.oktest_wordcount.ok

test83.outtest_wordcount.out

test84.intest_writefile.vim

:e test
"test" [New File]

Executing Test_complete_tab():e Xtest...file
"Xtestfile" 1L, 9C

Executing Test_complete_wildmenu():e Xtest...file1...

Xtestfile1  Xtestfile2  
Xtestfile1                                                        :e Xtest...Xtestfile1
Xtestfile1file1...Xtestfile1Xtestfile22:e Xtestfile2"Xtestfile2" 1L, 10C
Executing Test_expand_star_star():find **/fileXname...a/b/fileXname
"a/b/fileXname" 1L, 9C
"Xtestfile2" [New File]

Executing Test_getcompletion():cscope find 

a  c  d  e  f  g  i  s  t

:cscope find :sign list 

Testing

:sign list "test_cmdline.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"57L, 1253C65L, 1455C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_crypt.vim
[?1h="test_crypt.vim" 83 lines, 2590 characters

Executing Test_crypt_blowfish()
"Xtest.txt" [New File]:X

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

Enter same key again: ******

"Xtest.txt" [New][blowfish] 3L, 98C written
:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [blowfish] 3L, 98C

Executing Test_crypt_blowfish2()
"Xtest.txt" [New File]:X
Enter encryption key: ******
Enter same key again: ******

"Xtest.txt" [New][blowfish2] 3L, 98C written
:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Enter encryption key: ******

"Xtest.txt" [blowfish2] 3L, 98C

Executing Test_crypt_zip()
"Xtest.txt" [New File]:X

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

Enter same key again: ******

"Xtest.txt" [New][crypted] 3L, 98C written
:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [crypted] 3L, 98C

Executing Test_head_only_2()
"Xtest.txt" [New File][New] 1L, 16C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [readonly] 1L, 16C

Executing Test_head_only_3()
"Xtest.txt" [New File][New] 1L, 16C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Enter encryption key: ******

"Xtest.txt" [readonly] 1L, 16C

Executing Test_uncrypt_blowfish()
"Xtest.txt" [New File][converted][New][noeol] 1L, 80C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [blowfish] 2L, 27C

Executing Test_uncrypt_blowfish2()
"Xtest.txt" [New File][converted][New][noeol] 1L, 103C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Enter encryption key: *******

"Xtest.txt" [blowfish2] 2L, 44C

Executing Test_uncrypt_zip()
"Xtest.txt" [New File][converted][New][noeol] 1L, 45C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [converted][crypted] 2L, 26C"test_crypt.res" [New File][converted][New] 0L, 0C written
Executed 8 tests
"messages"65L, 1455C76L, 1742C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_cscope.vim
[?1h="test_cscope.vim" 279 lines, 10568 characters
"test_cscope.res" [New File][New] 0L, 0C written

Executed 0 test
"messages"76L, 1742C79L, 1781C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_diffmode.vim
[?1h="test_diffmode.vim" 220 lines, 4746 characters

Executing Test_diff_fold_sync()

Executing Test_diffget_diffput()

Executing Test_diffoff()  -------------------------------------|
  -------------------------------------|
  Two|
  Three|||||||||||||||||||  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    
[No Name] [+]                             One                                                                             Two  Three                                    ~~~~~~~~~~~~~~~~~~[No Name] [+]                           Two                                    
Three                                  
~                                      
~                                      
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  OneTwoThree~~~~~~~~~~~~~~~~~~

Executing Test_filler_lines()

7 more lines

10 more lines

Executing Test_vert_split()
"Xtest" [New] 5L, 25C written"Xtest2" [New] 6L, 29C written

"Nop" [Modified][Not edited] line 4 of 6 --66%-- col 3"Xtest" 5L, 25C2" 6L, 29C
"test_diffmode.vim" 220L, 4746Cres" [New File][New] 0L, 0C written

Executed 5 tests
"messages"79L, 1781C87L, 1971C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_digraph.vim
[?1h="test_digraph.vim" 461 lines, 14928 characters

Executing Test_digraph_cmndline()
Executing T

Executing Test_digraphs()
Executing Test_digraphs_option()
Executing Test_digraphs_output()

Executing Test_loadkeymap()"test_digraph.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"87L, 1971C95L, 2166C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_farsi.vim
[?1h="test_farsi.vim" 84 lines, 2881 characters

Executed 2 tests
"messages"[converted] 95L, 2166C[converted] 100L, 2262C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_fnameescape.vim
[?1h="test_fnameescape.vim" 21 lines, 467 characters

Executing Test_fnameescape()
"Xspa ce"[New] 21L, 467C written
"Xemark![New] 21L, 467C written
"test_fnameescape.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"100L, 2262C104L, 2335C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_gf.vim
[?1h="test_gf.vim" 33 lines, 1138 characters

Executing Test_gf_url()
"test_gf.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"104L, 2335C108L, 2394C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_gn.vim
[?1h="test_gn.vim" 93 lines, 2821 characters

Executing Test_gn_command()/[u]niquepattern/s
/a:0\@!\zs\d\+
"test_gn.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"108L, 2394C112L, 2457C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_gui.vim
[?1h="test_gui.vim" 36 lines, 838 characters
"test_gui.res" [New File][New] 0L, 0C written

Executed 0 test
"messages"112L, 2457C115L, 2493C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_hardcopy.vim
[?1h="test_hardcopy.vim" 62 lines, 2001 characters

Executing Test_printheader_parsing()

Executing Test_printmbfont_parsing()

Executing Test_printoptions_parsing()

Executing Test_with_syntax()Printing page 1 (0%)Printed: test_hardcopy.vim
"test_hardcopy.res" [New File][New] 0L, 0C written

Executed 4 tests
"messages"115L, 2493C122L, 2676C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_history.vim
[?1h="test_history.vim" 65 lines, 1978 characters

Executing Test_History()

"test_history.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"122L, 2676C126L, 2741C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_hlsearch.vim
[?1h="test_hlsearch.vim" 34 lines, 1013 characters

Executing Test_hlsearch()/aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
~
[No Name] [+]                                                                   " Test for v:hlsearch

function! Test_hlsearch()
  new
  call setline(1, repeat(['aaa'], 10))
  set hlsearch nolazyredraw
  let r=[]
  " redraw is needed to make hlsearch highlight the matches
  exe "normal! /aaa\<CR>" | redraw
  let r1 = screenattr(1, 1)
test_hlsearch.vim                                                               aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaa


/aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaa//aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaa//aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaa


"test_hlsearch.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"126L, 2741C130L, 2808C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_increment.vim
[?1h="test_increment.vim" 760 lines, 19011 characters

Executing Test_normal_increment_01()
"dummy" [New File]
Executing Test_normal_increment_02()
"dummy" [New File]
Executing Test_normal_increment_03()
"dummy" [New File]
Executing Test_visual_increment_01()
"dummy" [New File]
Executing Test_visual_increment_02()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_03()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_04()
"dummy" [New File]
Executing Test_visual_increment_05()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_06()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_07()
"dummy" [New File]5 lines changed
Executing Test_visual_increment_08()
"dummy" [New File]
Executing Test_visual_increment_09()
"dummy" [New File]
Executing Test_visual_increment_10()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_11()
"dummy" [New File]3 lines changed
Executing Test_visual_increment_12()
"dummy" [New File]3 lines changed
Executing Test_visual_increment_13()
"dummy" [New File]3 lines changed
Executing Test_visual_increment_14()
"dummy" [New File]
Executing Test_visual_increment_15()
"dummy" [New File]
Executing Test_visual_increment_16()
"dummy" [New File]3 lines changed
Executing Test_visual_increment_17()
"dummy" [New File]
Executing Test_visual_increment_18()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_19()
"dummy" [New File]
Executing Test_visual_increment_20()
"dummy" [New File]
Executing Test_visual_increment_21()
"dummy" [New File]
Executing Test_visual_increment_22()
"dummy" [New File]
Executing Test_visual_increment_23()
"dummy" [New File]
Executing Test_visual_increment_24()
"dummy" [New File]
Executing Test_visual_increment_25()
"dummy" [New File]
Executing Test_visual_increment_26()
"dummy" [New File]
Executing Test_visual_increment_27()
"dummy" [New File]
Executing Test_visual_increment_28()
"dummy" [New File]
Executing Test_visual_increment_29()
"dummy" [New File]
Executing Test_visual_increment_30()
"dummy" [New File]
Executing Test_visual_increment_31()
"dummy" [New File]
Executing Test_visual_increment_32()
"dummy" [New File]_31" [New File]

Executing Test_visual_increment_33()
"dummy" [New File]
Executing Test_visual_increment_34()
"dummy" [New File]
Executing Test_visual_increment_35()
"dummy" [New File]
Executing Test_visual_increment_36()
"dummy" [New File]
Executing Test_visual_increment_37()
"dummy" [New File]
Executing Test_visual_increment_38()
"dummy" [New File]"test_increment.res" [New File][New] 0L, 0C written

Executed 41 tests
"messages" 130L, 2808C174L, 4369C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_increment_dbcs.vim
[?1h="test_increment_dbcs.vim" 30 lines, 604 characters

Executing Test_increment_dbcs_1()
"test_increment_dbcs.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"[converted] 174L, 4369C[converted] 178L, 4450C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_job_fails.vim
[?1h="test_job_fails.vim" 19 lines, 598 characters

Executing Test_job_start_fails()
"test_job_fails.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"178L, 4450C182L, 4525C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_json.vim
[?1h="test_json.vim" 281 lines, 10366 characters

Executing Test_js_decode()

Executing Test_js_encode()

Executing Test_json_decode()

Executing Test_json_encode()

"test_json.res" [New File][New] 0L, 0C written

Executed 4 tests
"messages"182L, 4525C189L, 4675C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_langmap.vim
[?1h="test_langmap.vim" 28 lines, 628 characters

Executing Test_langmap()
"test_langmap.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"189L, 4675C193L, 4740C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_man.vim
[?1h="test_man.vim" 60 lines, 1358 characters

Executing Test_g_ft_man_open_mode()


Cannot find a 'vim'.

Executing Test_nomodifiable()


Cannot find a 'vim'.
"test_man.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"193L, 4740C198L, 4843C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_marks.vim
[?1h="test_marks.vim" 26 lines, 775 characters

Executing Test_Incr_Marks()

Executing Test_Restore_DelMark()1 more line; before #2  0 seconds ago
1 line less; after #2  0 seconds agomore line; before #2  0 seconds ago
"test_marks.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"198L, 4843C203L, 4943C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_matchadd_conceal.vim
[?1h="test_matchadd_conceal.vim" 266 lines, 8378 characters[?1l>Executing Test_clearmatches()# This is a Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       #ZThisZisZaZTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_default_conceal_char()# This is a Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       #+This+is+a+Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_matchadd_and_conceallevel_3()#ThisisaTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       #Thisisa Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_matchadd_repeat_conceal_with_syntax_off()TARGET_TARGETTARGET" Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term
endif

function! s:(lnum)t_ttsimple_matchadd()# This is a Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_simple_matchadd_and_conceal()#XThisXisXaXTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_syn_and_match_conceal()#ZThisZisZaZTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       #*This*is*a*Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_using_matchaddpos()#Pis a Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       "test.log" [New File][New] 8L, 363C written

Executed 8 tests

2 FAILED:
"messages" 203L, 4943C220L, 5654C written

VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_nested_function.vim
[?1h="test_nested_function.vim" 32 lines, 622 characters

Executing Test_nested_functions()
"test_nested_function.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"220L, 5654C224L, 5736C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_netbeans.vim
[?1h="test_netbeans.vim" 79 lines, 2100 characters
"test_netbeans.res" [New File][New] 0L, 0C written

Executed 0 test
"messages"224L, 5736C227L, 5777C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_normal.vim
[?1h="test_normal.vim" 2209 lines, 57349 characters

Executing Test_normal00_optrans()
Executing Test_normal01_keymodel()
4 lines yankedExecuting Test_normal02_selectmode()10 fewer lines
Executing Test_normal02_selectmode2():set im
:set noim

Executing Test_normal03_join()

Executing Test_normal04_filter():.!sed -e 's/^/|    /'
[?1l>one
[?1h=:.!sed -e 's/^/|    /'
:.!
:!echo one
[?1l>
[No write since last change]

one
[?1h=:.!!

Executing Test_normal05_formatexpr()

Executing Test_normal05_formatexpr_newbuf()
"another" [New File]
Executing Test_normal05_formatexpr_setopt()

Executing Test_normal06_formatprg():.,$!./Xsed_format.sh
7 lines filtered
Executing Test_normal07_internalfmt()
7 fewer lin
Executing Test_normal08_fold()

Executing Test_normal09_operatorfunc()

11 substitutions on 11 lines

Executing Test_normal10_expand()

Executing Test_normal11_showcmd()
Executing Test_normal12_nv_error()

Executing Test_normal13_help()
"help.txt" [readonly] 225L, 8437C

Executing Test_normal14_page()

Executing Test_normal14_page_eol()
Executing Test_normal15_z_scroll_vert()

Executing Test_normal16_z_scroll_hor()

Executing Test_normal17_z_scroll_hor2()

Executing Test_normal18_z_fold()

Executing Test_normal19_z_spell()
Word 'goood' added to ./Xspellfile.add
search hit BOTTOM, continuing at TOPWord 'goood' added to ./Xspellfile.add2 goood' added to ./Xspellfile.add/tmp/vSEunO0/9removed from /tmp/vSEunO0/9goood' added to /tmp/vSEunO0/9removed from /tmp/vSEunO0/9added to ./Xspellfile.addremoved from ./Xspellfile.add2 goood' added to ./Xspellfile.addremoved from ./Xspellfile.addgoood' added to ./Xspellfile2.add
Executing Test_normal20_exmode()

Executing Test_normal21_nv_hat()
"Xfoobar" [New File]ile2" [New File]
Executing Test_normal22_zet()

Executing Test_normal23_K()
"version8.txt" [readonly] 14510L, 546213Cline 1 of 14510 --0%-- col 1
:! man --pager=cat 'man'[?1l>
[No write since last change]

stdin not open for reading!

shell returned 2

[?1h=
Executing Test_normal24_rot13()

Executing Test_normal25_tag()
"help.txt" [readonly] 225L, 8437C
"change.txt" [readonly] 1829L, 74755C
"help.txt" [readonly] 225L, 8437C
"change.txt" [readonly] 1829L, 74755C
"help.txt" [readonly] 225L, 8437C
"insert.txt" [readonly] 2003L, 82815Cline 49 of 2003 --2%-- col 7-49

Executing Test_normal26_put()

Executing Test_normal27_bracket()

21 substitutions on 21 lines

Executing Test_normal28_parenthesis()

Executing Test_normal29_brace()
17 fewer lines4 fewer lines3
Executing Test_normal30_changecase()

Executing Test_normal31_r_cmd()
Executing Test_normal32_g_cmd1()
/x_foo?abc
Executing Test_normal33_g_cmd2()/[1-8]
search hit BOTTOM, continuing at TOP
9 substitutions on 9 linesblock of 3 lines yanked5
Executing Test_normal34_g_cmd3()

Executing Test_normal35_g_cmd4()

Executing Test_normal36_g_cmd5()

Executing Test_normal37_g_cmd6()
"1.txt" [New File]23

Executing Test_normal38_nvhome()

Executing Test_normal39_cw()
Executing Test_normal40_ctrl_bsl()
Executing Test_normal41_insert_reg()=a
=a
=a

Executing Test_normal42_halfpage()

Executing Test_normal43_textobject1()

Executing Test_normal44_textobjects2()

Executing Test_normal45_drop()

Executing Test_normal46_ignore()

Executing Test_normal47_autocmd()

Executing Test_normal47_visual_buf_wipe()

Executing Test_normal48_wincmd()

Executing Test_normal49_counts()

Executing Test_normal50_commandline()q:  :xxx
~
~
~
~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       :set im
:set noim
:.!sed -e 's/^/|    /'
:.!
:!echo one
:.!!
:
[Command Line]                                                                  :^M   

Executing Test_normal51_FileChangedRO()
"Xreadonly.log" 1L, 4C
Error detected while processing ...[9]..Test_normal51_FileChangedRO:
line    8:W10: Warning: Changing a readonly file
Executing Test_normal52_rl()3_digraph()

Executing Test_normal54_Ctrl_bsl()
"test_normal.res" [New File][New] 0L, 0C written

Executed 60 tests
"messages" 227L, 5777C294L, 8101C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_packadd.vim
[?1h="test_packadd.vim" 238 lines, 8288 characters

Executing Test_colorscheme()

Executing Test_colorscheme_completion():colorscheme ...one')
:ccolorscheme one')
:cacolorscheme one')
:calcolorscheme one')
:callcolorscheme one')
:call colorscheme one')acolorscheme one')dcolorscheme one')dcolorscheme one')(colorscheme one')lcolorscheme one')icolorscheme one'),colorscheme one') colorscheme one')'colorscheme one')
:colorscheme ...one...three')
:ccolorscheme three')
:cacolorscheme three')
:calcolorscheme three')
:callcolorscheme three')
:call colorscheme three')acolorscheme three')dcolorscheme three')dcolorscheme three')(colorscheme three')lcolorscheme three')icolorscheme three'),colorscheme three') colorscheme three')'colorscheme three')
:colorscheme ...one...three...wo')
:ccolorscheme two')
:cacolorscheme two')
:calcolorscheme two')
:callcolorscheme two')
:call colorscheme two')acolorscheme two')dcolorscheme two')dcolorscheme two')(colorscheme two')lcolorscheme two')icolorscheme two'),colorscheme two') colorscheme two')'colorscheme two')
:colorscheme ...one...three...wo...')
:ccolorscheme ')
:cacolorscheme ')
:calcolorscheme ')
:callcolorscheme ')
:call colorscheme ')acolorscheme ')dcolorscheme ')dcolorscheme ')(colorscheme ')lcolorscheme ')icolorscheme '),colorscheme ') colorscheme ')'colorscheme ')

Executing Test_helptags()

Executing Test_packadd()
"./Xdir/pack/mine/opt/mytest/plugin/test.vim" [New File][New] 1L, 24C writtenalso/loaded.vim" [New File][New] 1L, 29C writtenftdetect/test.vim" [New File[New] 1L, 26C written

Executing Test_packadd_completion():packadd ...pluginA')
:cpackadd pluginA')
:capackadd pluginA')
:calpackadd pluginA')
:callpackadd pluginA')
:call packadd pluginA')apackadd pluginA')dpackadd pluginA')dpackadd pluginA')(packadd pluginA')lpackadd pluginA')ipackadd pluginA'),packadd pluginA') packadd pluginA')'packadd pluginA')
:packadd ...pluginA...B')
:cpackadd pluginB')
:capackadd pluginB')
:calpackadd pluginB')
:callpackadd pluginB')
:call packadd pluginB')apackadd pluginB')dpackadd pluginB')dpackadd pluginB')(packadd pluginB')lpackadd pluginB')ipackadd pluginB'),packadd pluginB') packadd pluginB')'packadd pluginB')
:packadd ...pluginA...B...C')
:cpackadd pluginC')
:capackadd pluginC')
:calpackadd pluginC')
:callpackadd pluginC')
:call packadd pluginC')apackadd pluginC')dpackadd pluginC')dpackadd pluginC')(packadd pluginC')lpackadd pluginC')ipackadd pluginC'),packadd pluginC') packadd pluginC')'packadd pluginC')
:packadd ...pluginA...B...C...')
:cpackadd ')
:capackadd ')
:calpackadd ')
:callpackadd ')
:call packadd ')apackadd ')dpackadd ')dpackadd ')(packadd ')lpackadd ')ipackadd '),packadd ') packadd ')'packadd ')

Executing Test_packadd_noload()
"./Xdir/pack/mine/opt/mytest/plugin/test.vim" [New File][New] 1L, 24C written

Executing Test_packloadall()

Executing Test_runtime()
"test_packadd.res" [New File][New] 0L, 0C written

Executed 8 tests
"messages"294L, 8101C305L, 8384C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_perl.vim
[?1h="test_perl.vim" 123 lines, 3037 characters

Executing Test_SvREFCNT()
"t" [New File]
Executing Test_VIM_package()

Executing Test_change_buffer()/^1

Executing Test_evaluate_list()/^2
search hit BOTTOM, continuing at TOP

Executing Test_perldo()
"__TEST__" [New File]test_perl.vim"123L, 3037C

Executing Test_perleval()

Executing Test_stdio()

&VIM::Msg

STDOUT

STDERR
"test_perl.res" [New File][New] 0L, 0C written

Executed 7 tests
"messages"305L, 8384C315L, 8612C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_quickfix.vim
[?1h="test_quickfix.vim" 1594 lines, 44709 characters

Executing Test_Autocmd()
"F1" [New File]
(1 of 1): Line 10
"F2" [New File]
(1 of 2): Line 10

Executing Test_adjust_lnum()

Already only one window
"Xqftestfilec" 20L, 131C

9 fewer lines

Already only one window
"Xqftestfilel" 20L, 131C

9 fewer lines

Executing Test_browse()
"Xqftestfile1" 20L, 131C

(1 of 4): Line5

"Xqftestfile2" 20L, 131C

(3 of 4): Line10
"Xqftestfile1" 20L, 131C

(2 of 4): Line6
"Xqftestfile2" 20L, 131C

(4 of 4): Line11

"Xqftestfile1" 20L, 131C

(1 of 4): Line5

(1 of 4): Line5

"Xqftestfile2" 20L, 131C

(3 of 4): Line10
"Xqftestfile1" 20L, 131C

(2 of 4): Line6
"Xqftestfile2" 20L, 131C

(4 of 4): Line11

"Xqftestfile1" 20L, 131C

(1 of 4): Line5

Executing Test_caddbuffer_to_empty()
"autocmd.txt" [readonly] 1486L, 61530C

(1 of 475): |QuickFixCmdPre|^Ibefore a quickfix command is run

(2 of 1486):

Executing Test_cage()

error list 9 of 10; 1 errors      :cgetexpr ['Xtestfile2:2:2:Line2']

error list 10 of 10; 1 errors     :cgetexpr ['Xtestfile3:3:1:Line3']

error list 8 of 10; 1 errors      :cgetexpr ['Xtestfile1:1:3:Line1']

error list 10 of 10; 1 errors     :cgetexpr ['Xtestfile3:3:1:Line3']

error list 6 of 7; 1 errors:lgetexpr ['Xtestfile2:2:2:Line2']

error list 7 of 7; 1 errors:lgetexpr ['Xtestfile3:3:1:Line3']

error list 5 of 7; 1 errors:lgetexpr ['Xtestfile1:1:3:Line1']

error list 7 of 7; 1 errors:lgetexpr ['Xtestfile3:3:1:Line3']

Executing Test_cbottom()

Executing Test_cbuffer()
"Xtestfile7" [New File]
(1 of 2): Line 700
"Xtestfile7" [New File]

(1 of 2): Line 700

Executing Test_cexpr()

Executing Test_cfile()
"Xtestfile1" [New File]

(1 of 2): Line 700

"Xtestfile1" [New File]

(1 of 2): Line 700

Executing Test_cgetexpr_works()

Executing Test_clist()

 2 Xtestfile1:1 col 3: Line1

 4 Xtestfile2:2 col 2: Line2

 6 Xtestfile3:3 col 1: Line3

 1: non-error 1

 2 Xtestfile1:1 col 3: Line1

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 5: non-error 3

 6 Xtestfile3:3 col 1: Line3

 4 Xtestfile2:2 col 2: Line2

 6 Xtestfile3:3 col 1: Line3

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 2 Xtestfile1:1 col 3: Line1

 2 Xtestfile1:1 col 3: Line1

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 2 Xtestfile1:1 col 3: Line1

 4 Xtestfile2:2 col 2: Line2

 6 Xtestfile3:3 col 1: Line3

 1: non-error 1

 2 Xtestfile1:1 col 3: Line1

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 5: non-error 3

 6 Xtestfile3:3 col 1: Line3

 4 Xtestfile2:2 col 2: Line2

 6 Xtestfile3:3 col 1: Line3

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 2 Xtestfile1:1 col 3: Line1

 2 Xtestfile1:1 col 3: Line1

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

Executing Test_cwindow()~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       Xtestfile1|1 col 3| Line1                                                       Xtestfile2|2 col 2| Line2
Xtestfile3|3 col 1| Line3
~
~
~
~
~
~
~
[Quickfix List]                                                                 ~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       Xtestfile1|1 col 3| Line1                                                       Xtestfile2|2 col 2| Line2
Xtestfile3|3 col 1| Line3
~
~
~
~
~
~
~
[Location List]                                                                 Executing Test_duplicate_buf()
"DoesNotExist" [New File]2" [New File]

Xgrepthis
"Xgrepthis" line 1 of 2 --50%-- col 1

(1 of 2): this one

Xgrepthis
(1 of 2): this one

Executing Test_efm()

Executing Test_efm1()
"Xtestfile" 21L, 903C

(1 of 20): 1506-045 (S) Undeclared identifier fd_set.

(20 of 20): What is the title of the quickfix window?

Executing Test_efm2()
"Xtestfile" [New File]

Executing Test_efm_dirstack()

Executing Test_errortitle()

Executing Test_grep()

Already only one window[?1l>test_quickfix.vim:1379:  " Grep_Test_Text: Match 1
test_quickfix.vim:1380:  " Grep_Test_Text: Match 2
test_quickfix.vim:1385:  silent Xgrep Grep_Test_Text: test_quickfix.vim
[?1h=[?1l>test_quickfix.vim:1381:  " GrepAdd_Test_Text: Match 1
test_quickfix.vim:1382:  " GrepAdd_Test_Text: Match 2
test_quickfix.vim:1392:  silent Xgrepadd GrepAdd_Test_Text: test_quickfix.vim
[?1h=Already only one window[?1l>test_quickfix.vim:1379:  " Grep_Test_Text: Match 1
test_quickfix.vim:1380:  " Grep_Test_Text: Match 2
test_quickfix.vim:1385:  silent Xgrep Grep_Test_Text: test_quickfix.vim
[?1h=[?1l>test_quickfix.vim:1381:  " GrepAdd_Test_Text: Match 1
test_quickfix.vim:1382:  " GrepAdd_Test_Text: Match 2
test_quickfix.vim:1392:  silent Xgrepadd GrepAdd_Test_Text: test_quickfix.vim
[?1h=Executing Test_helpgrep()
"autocmd.txt" [readonly] 1486L, 61530C

(1 of 475): |QuickFixCmdPre|^Ibefore a quickfix command is run
"autocmd.txt" [readonly] line 1 of 1486 --0%-- col 1
(1 of 475): |QuickFixCmdPre|^Ibefore a quickfix command is run

Executing Test_history()

error list 1 of 10; 21 errors     :cf Xerrorfile1

error list 1 of 2; 21 errors      :cf Xerrorfile1

error list 1 of 2; 13 errors      :lexpr ""

error list 1 of 2; 13 errors      :lexpr ""

Executing Test_invalid_efm()

Executing Test_locationlist()

No matching autocommands

(1 of 7): file foo.txt
No matching autocommands

No matching autocommands

No matching autocommands

No matching autocommands

No matching autocommands

No matching autocommands

(1 of 7): file foo.txt
No matching autocommands

No matching autocommands

(1 of 7): file foo.txt
No matching autocommands

W19: Deleting augroup that is still in use
Executing Test_locationlist_curwin_was_closed()

W19: Deleting augroup that is still in use
Executing Test_long_lines()"samples/quickfix.txt" 4L, 22089C

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"samples/quickfix.txt" 4L, 22089C

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"samples/quickfix.txt" 4L, 22089C

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Executing Test_nomem()
"/<<PKGBUILDDIR>>/src/vim-gtk3/alloc.h" 21L, 485C

Error detected while processing function RunTheTest[9]..Test_nomem:

line    2:

E342: Out of memory!  (allocating 4096 bytes)
"/<<PKGBUILDDIR>>/src/vim-gtk3/alloc.h" 21L, 485C

line    5:

E342: Out of memory!  (allocating 4096 bytes)
"/<<PKGBUILDDIR>>/src/vim-gtk3/alloc.h" 21L, 485C

line    8:

E342: Out of memory!  (allocating 1025 bytes)
"/<<PKGBUILDDIR>>/src/vim-gtk3/alloc.h" 21L, 485C

line   11:

E342: Out of memory!  (allocating 1025 bytes)
"/<<PKGBUILDDIR>>/src/vim-gtk3/alloc.h" 21L, 485C

line   14:

E342: Out of memory!  (allocating 1025 bytes)

Executing Test_qf_property()

Executing Test_qf_title()

Executing Test_quickfix_set_list_with_act()

Executing Test_quickfix_was_changed_by_autocmd()

error list 9 of 10; 1 errors      :setqflist()

W19: Deleting augroup that is still in use
error list 9 of 10; 1 errors      :setloclist()

error list 9 of 10; 1 errors      :setloclist()

W19: Deleting augroup that is still in use
Executing Test_setqflist()"Xtestfile" [New File]
(2 of 2):

(3 of 3):

(2 of 2):

(3 of 3):

Executing Test_setqflist_empty_middle()

test_quickfix.vim
"test_quickfix.vim" 1594L, 44709C

(1 of 43): function Test_clist()

test_quickfix.vim
(1 of 13): " With an empty list, command should return error

test_quickfix.vim
(1 of 2): " number of matches is unknown

error list 9 of 10; 13 errors     :vimgrep empty test_quickfix.vim

error list 8 of 10; 43 errors     :vimgrep Test_ test_quickfix.vim

error list 9 of 10; 0 errors      :setqflist()

error list 10 of 10; 2 errors     :vimgrep matches test_quickfix.vim

test_quickfix.vim
(1 of 43): function Test_clist()

test_quickfix.vim
(1 of 13): " With an empty list, command should return error

test_quickfix.vim
(1 of 2): " number of matches is unknown

error list 9 of 10; 13 errors     :lvimgrep empty test_quickfix.vim

error list 8 of 10; 43 errors     :lvimgrep Test_ test_quickfix.vim

error list 9 of 10; 0 errors      :setloclist()

error list 10 of 10; 2 errors     :lvimgrep matches test_quickfix.vim

Executing Test_setqflist_empty_older()

test_quickfix.vim
(1 of 24): \ 'Does anyone know what is the problem and how to correction it?',

test_quickfix.vim
(1 of 21): " Go back two lists

test_quickfix.vim
(1 of 7): " Add three quickfix/location lists

error list 8 of 10; 24 errors     :vimgrep one test_quickfix.vim

error list 9 of 10; 21 errors     :vimgrep two test_quickfix.vim

error list 10 of 10; 7 errors     :vimgrep three test_quickfix.vim

test_quickfix.vim
(1 of 24): \ 'Does anyone know what is the problem and how to correction it?',

test_quickfix.vim
(1 of 21): " Go back two lists

test_quickfix.vim
(1 of 7): " Add three quickfix/location lists

error list 8 of 10; 24 errors     :lvimgrep one test_quickfix.vim

error list 9 of 10; 21 errors     :lvimgrep two test_quickfix.vim

error list 10 of 10; 7 errors     :lvimgrep three test_quickfix.vim

Executing Test_switchbuf()
"Xqftestfile1" 20L, 131C220L, 131C1" line 1 of 20 --5%-- col 1

(1 of 6): Line5

(2 of 6): Line6
"Xqftestfile2" line 1 of 20 --5%-- col 1

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16

(1 of 6): Line5

(2 of 6): Line6

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16
"Xqftestfile1" 20L, 131C220L, 131C

(1 of 6): Line5

(2 of 6): Line6

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16
"Xqftestfile1" 20L, 131C

(1 of 6): Line5

(2 of 6): Line6
"Xqftestfile2" 20L, 131C

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16
"Xqftestfile1" 20L, 131C

(1 of 6): Line5

(2 of 6): Line6
"Xqftestfile2" 20L, 131C

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16

Already only one window
"Xqftestfile1" 20L, 131C220L, 131C320L, 131C

Executing Test_two_windows()
"one" [New File]two

Executing Test_vimgreptitle()

file
"file" [New File]

Cannot open file "file"
"test_quickfix.res" [New File][New] 0L, 0C written

Executed 36 tests
"messages" 315L, 8612C354L, 9693C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_ruby.vim
[?1h="test_ruby.vim" 34 lines, 820 characters

Executing Test_ruby_change_buffer()/^1

Executing Test_ruby_evaluate_dict()

{"a"=>"foo", "b"=>123}

Executing Test_ruby_evaluate_list()/^2
search hit BOTTOM, continuing at TOP
"test_ruby.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"354L, 9693C360L, 9839C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_search.vim
[?1h="test_search.vim" 281 lines, 8457 characters

Executing Test_search_cmdline()/foobar
/the
search hit BOTTOM, continuing at TOP/thes
/foobar
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
?the
?the
?the
?the
?the
?the
?the
?the
?the
?the
search hit TOP, continuing at BOTTOM/thes
/thes
/thes
/thes
/thei
/theis
/theiss
/themthe\>
Executing Test_search_cmdline2()/the
/the
/the
/the
/the
/the
/the
/foo
6 their
  7 the
  8 them
  9 these
 10 foobar
[No Name] [+]                                                                   " Test for the search command

func Test_search_cmdline()
  if !exists('+incsearch')
    return
  endif
  " need to disable char_avail,
  " so that expansion of commandline works
  call test_disable_char_avail(1)
  new
  call setline(1, ['  1', '  2 these', '  3 the', '  4 their', '  5 there', '  66 their', '  7 the', '  8 them', '  9 these', ' 10 foobar'])
  " Test 1
  " CTRL-N / CTRL-P skips through the previous search history
  set noincsearch
  :1
test_search.vim                                                                 Executing Test_use_sub_pat()
"test_search.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"360L, 9839C366L, 9973C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_signs.vim
[?1h="test_signs.vim" 199 lines, 6383 characters

Executing Test_sign()
"foo" [New File]a  b  c xd                                                                                 ~
[No Name] [+]                                                                   " Test for signs

if !has('signs')
  finish
endif
test_signs.vim                                                                  ~
~
~
~
foo                                                                               a
  b
x c
  d
[No Name] [+]                                                                     a  bx c  d  ~"foo" [New file] --No lines in buffer--
"barF
Executing Test_sign_completion():sign ...define jump list place undefine unplace
:"sign define jump list place undefine unplace
:"
:sign define Sign ...icon= linehl= text= texthl=
:"sign define Sign icon= linehl= text= texthl=
:"
:sign define Sign linehl=Spell...Bad SpellCap SpellLocal SpellRare
:"sign define Sign linehl=SpellBad SpellCap SpellLocal SpellRare
:"
:sign define Sign icon=Xsig...nOne XsignTwo
:"sign define Sign icon=XsignOne XsignTwo
:"
:sign undefine ...Sign1 Sign2
:"sign undefine Sign1 Sign2
:"
:sign place 1 ...buffer= file= line= name=
:"sign place 1 buffer= file= line= name=
:"
:sign place 1 name=...Sign1 Sign2
:"sign place 1 name=Sign1 Sign2
:"
:sign unplace 1 ...buffer= file=
:"sign unplace 1 buffer= file=
:"
:sign list ...Sign1 Sign2
:"sign list Sign1 Sign2
:"
:sign jump 1 ...buffer= file=
:"sign jump 1 buffer= file=
:"

Executing Test_sign_delete_buffer()

Executing Test_sign_invalid_commands()

Executing Test_sign_undefine_still_placed()
"foobar" [New File]test_signs.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"366L, 9973C374L, 10186C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_smartindent.vim
[?1h="test_smartindent.vim" 14 lines, 376 characters

Executing Test_nosmartindent()/some
search hit BOTTOM, continuing at TOP"test_smartindent.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"374L, 10186C378L, 10261C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_startup.vim
[?1h="test_startup.vim" 185 lines, 4581 characters

Executing Test_after_comes_later()[?1l>[?1h=1: /<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xbefore.vim

  2: /<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xhere/plugin/here.vim

  3: /<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xhere/pack/foo/start/f

oobar/plugin/foo.vim

  4: /<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xafter/plugin/later.vi

m
  5: /<<PKGBUILDDIR>>/src/vim-gtk3/testdir/Xafter.vim
[?1l>
[?1h=
Executing Test_compatible_args()[?1l>[?1h=Error detected while processing /<<PKGBUILDDIR>>/src/vim-gtk3/tes

tdir/Xafter.vim:

line    2:

E528: Must specify a ' value: viminfo+=nviminfo
[?1l>
[?1h=[?1l>[?1h=[?1l>[?1h=
Executing Test_file_args()[?1l>[?1h=[?1l>[?1h=[?1l>[?1h="one" [New File]
[?1l>
[?1h=[?1l>[?1h="one" [New File]
[?1l>
3 files to edit
[?1h=[?1l>[?1h="one" [New File]
[?1l>
2 files to edit
[?1h=[?1l>[?1h="one" [New File]
[?1l>
4 files to edit
[?1h=
Executing Test_help_arg()[?1l>[?1h=
Executing Test_read_stdin()[?1l>[?1h="-stdin-" 1 line, 10 characters"Xtestout" [New File] 1 line, 10 characters written
[?1l>
Vim: Reading from stdin...
[?1h=
Executing Test_startup_script()

Executing Test_startuptime()[?1l>[?1h="one" [New File]
[?1l>
[?1h="test_startup.res" [New File][New] 0L, 0C written

Executed 7 tests
"messages"378L, 10261C388L, 10512C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_startup_utf8.vim
[?1h="test_startup_utf8.vim" 64 lines, 1366 characters

Executing Test_read_fifo_utf8()[?1l>[?1h="/dev/fd/63" [readonly] 2 lines, 24 characters

"Xtestout" [New File] 2 lines, 24 characters written
[?1l>
[?1h=
Executing Test_read_stdin_utf8()[?1l>[?1h="-stdin-" 2 lines, 24 characters"Xtestout" [New File] 2 lines, 24 characters written
[?1l>
Vim: Reading from stdin...
[?1h="test_startup_utf8.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"388L, 10512C393L, 10623C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_stat.vim
[?1h="test_stat.vim" 64 lines, 1598 characters

Executing Test_checktime()
"Xtest.tmp" 1L, 13C1L, 25C

Executing Test_existent_directory()

Executing Test_existent_file()

Executing Test_nonexistent_file()

Executing Test_win32_symlink_dir()
"test_stat.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"393L, 10623C401L, 10824C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_substitute.vim
[?1h="test_substitute.vim" 41 lines, 1151 characters

Executing Test_multiline_subst()

search hit BOTTOM, continuing at TOP
3 substitutions on 3 lines
3 substitutions on 2 lines
"test_substitute.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"401L, 10824C405L, 10900C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_syntax.vim
[?1h="test_syntax.vim" 82 lines, 1624 characters

Executing Test_syn_iskeyword()CREATE TABLE FOOBAR(
    DLTD_BY VARCHAR2(100)
);

~
~
~
~
~
~
~
[No Name] [+]                                                                   " Test for syntax and syntax iskeyword option

if !has("syntax")
  finish
endif

func GetSyntaxItem(pat)
  let c = ''
  let a = ['a', getreg('a'), getregtype('a')]
  0
test_syntax.vim                                                                 
syntax iskeyword not set

syntax iskeyword @,48-57,_,192-255CREATE TABLE FOOBAR(
    DLTD_BY VARCHAR2(100)
);

~
~
~
~
~
~
~
[No Name] [+]                                                                   " Test for syntax and syntax iskeyword option

if !has("syntax")
  finish
endif

func GetSyntaxItem(pat)
  let c = ''
  let a = ['a', getreg('a'), getregtype('a')]
  0
test_syntax.vim                                                                 
syntax iskeyword not set

Executing Test_syntax_after_reload()
"Xsomefile" [New File][New] 2L, 12C written
"other" [New File]Xsomefile" 2L, 12C
"test_syntax.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"405L, 10900C410L, 11008C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_textobjects.vim
[?1h="test_textobjects.vim" 43 lines, 946 characters

Executing Test_inner_block_with_cpo_M_left_backslash()

Executing Test_inner_block_with_cpo_M_right_backslash()

Executing Test_inner_block_without_cpo_M()
"test_textobjects.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"410L, 11008C416L, 11207C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_undo.vim
[?1h="test_undo.vim" 237 lines, 6322 characters

Executing Test_U_command()Executing Test_global_local_undolevels()
"one" [New File]
6 fewer lines; before #8  0 seconds ago
"two" [New File]
3 fewer lines; before #11  0 seconds ago
"three" [New File]
Executing Test_insert_expr()=setline('.','1234')
1 line less; before #4  0 seconds ago3=setline('.','1234')
1 line less; before #7  0 seconds ago=string(123)
1 line less; before #9  0 seconds ago

Executing Test_undo_del_chars()
1 change; before #3  0 seconds ago21

1 change; before #6  1 seconds ago5
4s; after #3
1; before #21

3 changes; after #6  1 seconds ago3 changes; before #7  0 seconds ago

3 changes; before #1  3 seconds ago

3 changes; after #6  3 seconds ago

3 changes; after #9  0 seconds ago

Executing Test_undo_write()
"Xtest" [New File]"Xtest" [New] 1L, 12C written"Xtest" 3L, 20C written1 line less; before #4  0 seconds ago

2 fewer lines; before #2  0 seconds ago

1 line less; before #1  0 seconds ago

1 more line; after #1  0 seconds ago

2 more lines; after #3  0 seconds ago

1 more line; after #4  0 seconds ago

Executing Test_undojoin()1 line less; before #2  0 seconds ago2 fewer lines; before #3  0 seconds ago

Executing Test_undolist()1 change; before #2  0 seconds agoExecuting Test_undotree()
1 change; before #2  0 seconds ago
"Xtest" [New] 1L, 4C written
"test_undo.res" [New File][New] 0L, 0C written

Executed 8 tests
"messages"416L, 11207C427L, 11480C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_usercommands.vim
[?1h="test_usercommands.vim" 104 lines, 2527 characters

Executing Test_Ambiguous()

Executing Test_CmdUndefined()

Executing Test_cmdmods()
"test_usercommands.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"427L, 11480C433L, 11608C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_viminfo.vim
[?1h="test_viminfo.vim" 495 lines, 13092 characters

Executing Test_cmdline_history()

Executing Test_cmdline_history_order()

Executing Test_global_vars()

Executing Test_oldfiles()

Executing Test_read_and_write()

Executing Test_viminfo_bad_syntax()

Executing Test_viminfo_encoding()
"Xviminfo" [converted] 74L, 3345C

Executing Test_viminfo_file_mark_tabclose()
"Xtestfileintab" [New File]viminfo" 84L, 3522C

Executing Test_viminfo_file_marks()
"ten" [New File]again" [New File]
"thirty" [New File]
"twen
"again" [New File]fourty" [New File]
"Xviminfo" 91L, 3320C

Executing Test_viminfo_jumplist()
"testbuf" [New File]/20
/30
/last pos
/15
/last pos
?30
/15
/last pos
?30
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here

Executing Test_viminfo_marks()
"bufa" [New File]b

Executing Test_viminfo_registers()
"test_viminfo.res" [New File][New] 0L, 0C written

Executed 12 tests
"messages" 433L, 11608C448L, 12059C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_viml.vim
[?1h="test_viml.vim" 1245 lines, 29827 characters

Error detected while processing /<<PKGBUILDDIR>>/src/vim-gtk3/tes

tdir/test_viml.vim:

line  432:

E492: Not an editor command: ^Iasdf

line  444:

E492: Not an editor command: ^Iasdf

line  452:

E492: Not an editor command: asdf

line  455:

E492: Not an editor command: asdf | Xpath 'p'

Error detected while processing function T8_F:

line    5:

E492: Not an editor command: ^I    asdf

line    7:

E492: Not an editor command: ^I    asdf | Xpath 'd'

line   19:

E492: Not an editor command: ^I    asdf

line   21:

E492: Not an editor command: ^I    asdf | Xpath 'l'

line   29:

E121: Undefined variable: novar

E15: Invalid expression: novar^I^I" returns (default return value 0)

Error detected while processing function T8_G:

line    5:

E492: Not an editor command: ^I    asdf^I^I" returns -1

Error detected while processing function T8_H:

line    5:

E492: Not an editor command: ^I    asdf^I^I" returns -1

Error detected while processing function F[2]..G[2]..H[2]..I:

line    2:

E492: Not an editor command:     asdf^I^I" error

Error detected while processing /<<PKGBUILDDIR>>/src/vim-gtk3/tes

tdir/test_viml.vim:

line  663:

E15: Invalid expression: | strlen("\"") | Xpath 'j'

E15: Invalid expression: 1 ||| strlen("\"") | Xpath 'j'

line  673:

E15: Invalid expression: | strlen("\"") | Xpath 'n'

E15: Invalid expression: 1 ||| strlen("\"") | Xpath 'n'

line  682:

E15: Invalid expression: | strlen("\"") | Xpath 'r'

E15: Invalid expression: 1 ||| strlen("\"") | Xpath 'r'

line  717:

E492: Not an editor command:     asdf^I^I" error

1
line  787:

E492: Not an editor command:     asdf^I^I" error

line  794:

E492: Not an editor command:     asdf^I^I" error

line  817:

E121: Undefined variable: asdf

E15: Invalid expression: asdf

line  828:

E121: Undefined variable: asdf

E15: Invalid expression: asdf | Xpath 'f' | endwhile | Xpath 'g'

Error detected while processing function F:

line    8:

E121: Undefined variable: g:boolvar

E15: Invalid expression: g:boolvar^I" possibly undefined

E121: Undefined variable: g:boolvar

E15: Invalid expression: g:boolvar | Xpath 'd' | else | Xpath 'e' | endif

Executing Test_arg_abort()

Executing Test_braces_skipped()

Executing Test_curlies()

Executing Test_defining_functions()

Executing Test_echo_and_string()

foo bar

'foo bar'

-1.2

-1.2

string

function('string')

{'a': {...}}

{'a': {...}}

[[...]]

[[...]]

[{}, {}, {}]

[{}, {}, {}]

{'a': {}, 'b': {}}

{'a': {}, 'b': {}}

[[], [], []]

[[], [], []]

{'a': [], 'b': []}

{'a': [], 'b': []}

[{'one': 'yes', 'two': 'yes', 'three': 'yes'}, {...}, {...}]

[{'one': 'yes', 'two': 'yes', 'three': 'yes'}, {'one': 'yes', 'two': 'yes', 'th

ree': 'yes'}, {'one': 'yes', 'two': 'yes', 'three': 'yes'}]

{'a': {'one': 'yes', 'two': 'yes', 'three': 'yes'}, 'b': {...}}

{'a': {'one': 'yes', 'two': 'yes', 'three': 'yes'}, 'b': {'one': 'yes', 'two':

'yes', 'three': 'yes'}}

[[1, 2, 3], [...], [...]]

[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

{'a': [1, 2, 3], 'b': [...]}

{'a': [1, 2, 3], 'b': [1, 2, 3]}

Executing Test_endwhile_function()

Executing Test_endwhile_script()

   function T1_F()

1      Xpath 'a'

2      let first = 1

3      while 1

4Xpath 'b'

5if first

6Xpath 'c'

7let first = 0

8break

9else

10Xpath 'd'

11return

12endif

13     endwhile

   endfunction"/tmp/v89ASzZ/0" [noeol] 16L, 299C
13 substitutions on 13 lines
Pattern not found: ^\s*$
"/tmp/v89ASzZ/0" 13L, 248C written
"test_viml.vim" 1245L, 29827C
   function T1_G()
1      Xpath 'h'
2      let first = 1
3      while 1
4Xpath 'i'
5if first
6Xpath 'j'
7let first = 0
8break
9else
10Xpath 'k'
11return

12endif

13if 1    " unmatched :if

14     endwhile

   endfunction"/tmp/v89ASzZ/1" [noeol] 17L, 334C
14 substitutions on 14 lines
Pattern not found: ^\s*$
"/tmp/v89ASzZ/1" 14L, 281C written
"test_viml.vim" 1245L, 29827C
Executing Test_error_in_function()
Executing Test_error_in_script()
Executing Test_expr_parsing()
Executing Test_finish()
   function T4_F()
1      if 1
2Xpath 'a'
3let loops = 3
4while loops > 0"    3:  2:     1:
5Xpath 'b' . loops
6if (loops == 2)
7Xpath 'c' . loops
8return

9Xpath 'd' . loops

10endif

11Xpath 'e' . loops

12let loops = loops - 1

13endwhile

14Xpath 'f'

15     else

16Xpath 'g'

17     endif

   endfunction"/tmp/v89ASzZ/2" [noeol] 20L, 504C
17 substitutions on 17 lines
Pattern not found: ^\s*$
"/tmp/v89ASzZ/2" 17L, 445C written
"test_viml.vim" 1245L, 29827C
Executing Test_func_abort()
Executing Test_if_bar_fail()
Executing Test_if_fail()
Executing Test_if_while()
Executing Test_num64()
Executing Test_return()
Executing Test_skip()
Executing Test_type()
Executing Test_while_fail()
"test_viml.res" [New File][New] 0L, 0C written
Executed 20 tests
"messages" 448L, 12059C471L, 12668C written[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_visual.vim
[?1h="test_visual.vim" 17 lines, 339 characters

Executing Test_block_shift_multibyte()
"test_visual.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"471L, 12668C475L, 12746C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_window_id.vim
[?1h="test_window_id.vim" 94 lines, 2575 characters

Executing Test_win_getid()
"one" [New File]twohree" [New File]
"four" [New File]ive
"test_window_id.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"475L, 12746C479L, 12815C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_writefile.vim
[?1h="test_writefile.vim" 16 lines, 490 characters

Executing Test_WriteFile()
"test_writefile.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"479L, 12815C483L, 12884C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_alot_latin.vim
[?1h="test_alot_latin.vim" 7 lines, 280 characters

Executing Test_eow_with_optional()

Executing Test_equivalence_re1()

Executing Test_equivalence_re2()

Executing Test_nested_backrefs()

Executing Test_recursive_substitute()
"test_alot_latin.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"[converted] 483L, 12884C[converted] 491L, 13100C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_alot_utf8.vim
[?1h="test_alot_utf8.vim" 11 lines, 440 characters[?1l>Executing Test_classes_re1()

Executing Test_classes_re2()

Executing Test_equivalence_re1()

Executing Test_equivalence_re2()

Executing Test_match_using_multibyte_conceal_char()#ˑThisˑisˑaˑTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " A series of tests that can run in one Vim invocation.
" This makes testing go faster, since Vim doesn't need to restart.

" These tests use utf8 'encoding'.  Setting 'encoding' is already done in
" runtest.vim.  Checking for the multi_byte feature is in the individual
" files, so that they can be run by themselves.

source test_expr_utf8.vim
source test_matchadd_conceal_utf8.vim
source test_regexp_utf8.vim
test_alot_utf8.vim                                                              Executing Test_source_latin()
"Xscript"[New] 2L, 44C written
Executing Test_source_utf8()"Xscript"[New] 2L, 42C written:%s/àx/--à1234--/g
:%s/Àx/--À1234--/g

Executing Test_strcharpart()

Executing Test_strgetchar()
"test.log" 8L, 363C12L, 547C written

Executed 9 tests

1 FAILED:
"messages" 491L, 13100C506L, 13603C written

VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_alot.vim
[?1h="test_alot.vim" 46 lines, 1183 characters

Executing Test_abbreviation()Executing Test_augroup_deleted()

W19: Deleting augroup that is still in use
Executing Test_augroup_warning()
W19: Deleting augroup that is still in useentering

Executing Test_auto_partial_rebind()

Executing Test_autocmd_bufunload_avoiding_SEGV_01()
"aa.txt" [New File]
"bb.txt" [New File]

Executing Test_autocmd_bufunload_avoiding_SEGV_02()
"a.txt" [New File]
"test_alot.vim" 46L, 1183C

Executing Test_autocmd_bufunload_with_tabnext()

Executing Test_autocmd_bufwinleave_with_tabfirst()
"a.txt" [New File]
Executing Test_bind_in_python()

Executing Test_break_undo()Executing Test_bufunload()

Executing Test_cancel_ptjump()

Already only one window:ptjump word
  # pri kind tagfile

  1 Fwordfile1

cmd1

  2 Fwordfile2

cmd2

Type number and <Enter> (empty cancels): 
"help.txt" [readonly] 225L, 8437C

Executing Test_caught_error_in_statusline()source test_messages.vim
source test_partial.vim
source test_popup.vim
source test_reltime.vim
source test_searchpos.vim
source test_set.vim
source test_sort.vim
source test_statusline.vim
source test_syn_attr.vim
source test_tabline.vim
source test_tabpage.vim
source test_tagcase.vim
source test_tagjump.vim
source test_timers.vim
source test_true_false.vim
source test_unlet.vim
source test_window_cmd.vim
source test_options.vim
new line here
Test3: text with a (parenthesis here
new line here

                                                                                Executing Test_caught_error_in_tabline()                                                                                source test_partial.vim
source test_popup.vim
source test_reltime.vim
source test_searchpos.vim
source test_set.vim
source test_sort.vim
source test_statusline.vim
source test_syn_attr.vim
source test_tabline.vim
source test_tabpage.vim
source test_tagcase.vim
source test_tagjump.vim
source test_timers.vim
source test_true_false.vim
source test_unlet.vim
source test_window_cmd.vim
source test_options.vim
new line here
Test3: text with a (parenthesis here
new line here

test_alot.vim                                                                   Executing Test_closure_counter()

Executing Test_closure_refcount()

Executing Test_closure_unlet()

Executing Test_color_names()

Executing Test_command_count_0()
"DoesNotExistEver" [New File]
Executing Test_command_count_1()

"a" [New File]

loading buffers

"b" [New File]

loading buffers

"c" [New File]

loading buffers

"d" [New File]

loading buffers

"e" [New File]

loading buffers
"c" [New File]beb

Executing Test_command_count_2()

"d" [New File]
"a

Already only one window
"x" [New File]
Already only one window

Executing Test_command_count_3()
"aaa" [New File]bbb
"ccc
"test_alot.vim" 46L, 1183C

2 buffers deleted

Executing Test_command_count_4()
"cc" [New File]
"dd" [New File]

"ee" [New File]
"aa

"bb" [New File]

"cc" [New File]

"dd" [New File]

"ee" [New File]
"cc

"ee" [New File]

"ff" [New File]

Executing Test_compare_null_dict()

Executing Test_compare_partials()

Executing Test_compl_vim_cmds_after_register_expr()=s:test_func()
Executing Test_cursorhold_insert()Executing Test_cursorhold_insert_ctrl_x()Executing Test_curswant_with_autocommand()
Executing Test_cycle_partial_job()

Executing Test_cyclic_dict_arg()

Executing Test_cyclic_list_arg()

Executing Test_delete_myself()

Executing Test_dict()

Executing Test_dir_delete()

Executing Test_early_bar()

Executing Test_empty_buffer()

Executing Test_equal()

Executing Test_ex_undo()
"ex-undo" [New File]
1 line less; before #3  0 seconds ago

1 line less; after #1  0 seconds ago

2 fewer lines; before #1  0 seconds ago

Executing Test_execute_list()

Executing Test_execute_string()

this

theend

something

Executing Test_existing()

Executing Test_expand()

Executing Test_feedkeys_x_with_empty_string()Executing Test_file_delete()
"Xfile" [New File][New] 2L, 4C written

Executing Test_file_perm()

Executing Test_filter()
"Xdoesnotmatch" [New File]
"Xwillmatch" [New File]ff" [New File]
Executing Test_filter_fails()

Executing Test_filter_map_dict_expr_funcref()

Executing Test_filter_map_dict_expr_string()

Executing Test_filter_map_list_expr_funcref()

Executing Test_filter_map_list_expr_string()

Executing Test_fnamemodify()
"test_alot.vim" 46L, 1183C

Executing Test_func_unref()

Executing Test_funcref()

0
Executing Test_function_in_dict()

Executing Test_function_with_funcref()

Executing Test_geeDEE()

Executing Test_gee_dee()

Executing Test_get_partial_items()

Executing Test_getreg_empty_list()

Executing Test_global_local_lispwords()

Executing Test_help_complete():h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...har...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...har...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col@en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col@en...ab'
:lh test-col@ab'
:leh test-col@ab'
:leth test-col@ab'
:let h test-col@ab'
:let sh test-col@ab'th test-col@ab'rh test-col@ab'=h test-col@ab''h test-col@ab'
:h test...-col@en...ab...har@en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col@en...ab...har@en...ab'
:lh test-char@ab'
:leh test-char@ab'
:leth test-char@ab'
:let h test-char@ab'
:let sh test-char@ab'th test-char@ab'rh test-char@ab'=h test-char@ab''h test-char@ab'
:h test...-col@en...ab...har@en...ab...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...@en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col...@en...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...@en...har...@en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col...@en...har...@en...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col@en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col@en...ab'
:lh test-col@ab'
:leh test-col@ab'
:leth test-col@ab'
:let h test-col@ab'
:let sh test-col@ab'th test-col@ab'rh test-col@ab'=h test-col@ab''h test-col@ab'
:h test...-col@en...ab...ja'
:lh test-col@ja'
:leh test-col@ja'
:leth test-col@ja'
:let h test-col@ja'
:let sh test-col@ja'th test-col@ja'rh test-col@ja'=h test-col@ja''h test-col@ja'
:h test...-col@en...ab...ja...har@en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col@en...ab...ja...har@en...ab'
:lh test-char@ab'
:leh test-char@ab'
:leth test-char@ab'
:let h test-char@ab'
:let sh test-char@ab'th test-char@ab'rh test-char@ab'=h test-char@ab''h test-char@ab'
:h test...-col@en...ab...ja...har@en...ab...ja'
:lh test-char@ja'
:leh test-char@ja'
:leth test-char@ja'
:let h test-char@ja'
:let sh test-char@ja'th test-char@ja'rh test-char@ja'=h test-char@ja''h test-char@ja'
:h test...-col@en...ab...ja...har@en...ab...ja...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...@en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col...@en...ja'
:lh test-col@ja'
:leh test-col@ja'
:leth test-col@ja'
:let h test-col@ja'
:let sh test-col@ja'th test-col@ja'rh test-col@ja'=h test-col@ja''h test-col@ja'
:h test...-col...@en...ja...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...@en...ja...har...@en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col...@en...ja...har...@en...ja'
:lh test-char@ja'
:leh test-char@ja'
:leth test-char@ja'
:let h test-char@ja'
:let sh test-char@ja'th test-char@ja'rh test-char@ja'=h test-char@ja''h test-char@ja'
:h test...-col...@en...ja...har...@en...ja...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...@ja'
:lh test-col@ja'
:leh test-col@ja'
:leth test-col@ja'
:let h test-col@ja'
:let sh test-col@ja'th test-col@ja'rh test-col@ja'=h test-col@ja''h test-col@ja'
:h test...-col...@ja...en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col...@ja...en...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...@ja...en...har...@ja'
:lh test-char@ja'
:leh test-char@ja'
:leth test-char@ja'
:let h test-char@ja'
:let sh test-char@ja'th test-char@ja'rh test-char@ja'=h test-char@ja''h test-char@ja'
:h test...-col...@ja...en...har...@ja...en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col...@ja...en...har...@ja...en...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'

Executing Test_help_tagjump()
"help.txt" [readonly] 225L, 8437C
"options.txt" [readonly] 8732L, 369923Cline 7646 of 8732 --87%-- col 7-49 ((5) of 6)
"eval.txt" [readonly][converted] 10590L, 407237C line 2405 of 10590 --22%-- col 1 ((5) of 6)
"options.txt" [readonly] line 1320 of 8732 --15%-- col 4-25 ((5) of 6)
"cmdline[readonly] 1144L, 46758C

Executing Test_if()

Executing Test_info()

Executing Test_invalid()

Executing Test_invalid_submatch()

Executing Test_join_with_count()

Executing Test_keyword_jump()
"Xtestfile" 9L, 141C

Executing Test_lambda_call_lambda_from_lambda()

Executing Test_lambda_capture_by_reference()

Executing Test_lambda_circular_reference()

Executing Test_lambda_closure_counter()

Executing Test_lambda_combination()

Executing Test_lambda_delfunc()

Executing Test_lambda_do_not_share_local_variable()

Executing Test_lambda_fails()

Executing Test_lambda_feature()

Executing Test_lambda_refer_local_variable_from_other_scope()

Executing Test_lambda_scope()

Executing Test_lambda_share_scope()

Executing Test_lambda_side_effect()

Executing Test_lambda_with_a_var()

Executing Test_lambda_with_filter()

Executing Test_lambda_with_map()

Executing Test_lambda_with_partial()

Executing Test_lambda_with_sort()

Executing Test_lambda_with_timer()

1
2
3
4
5
6
7
8
Executing Test_load_menu()

Executing Test_loop_over_null_list()

Executing Test_map_ctrl_c_insert()Executing Test_map_ctrl_c_visual():'<,'>$put ='vmap works'

Executing Test_map_cursor()1 line less; before #8  0 seconds ago

Executing Test_map_feedkeys():call feedkeys(".", "in")
:call feedkeys(".", "in")
Executing Test_map_langmap():call append(line('$'), '+')

Executing Test_map_meta_quotes()Executing Test_match()

abcdefghijklmnopq
TEST2: CTRL-C |<ctrl-c>A|
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   abcdΣabcdef
TEST2: CTRL-C |<ctrl-c>A|
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   Executing Test_matchaddpos()12345
NP
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   12345 
NP 
vmap works 
 
Test1: text with a (here some more text) 
Test1: text with a (here some more text) 
 
 
Test2: text wit a (here some more text [und undo]) 
fooc d 
fooc d 
+ 
+ 
bbbb 
bbbb 
cccc 
bbbb 
+ 
-foo- 
~
~
~
[No Name] [+]                                                                   012345 
NP 
vmap works 
 
Test1: text with a (here some more text) 
Test1: text with a (here some more text) 
 
 
Test2: text wit a (here some more text [und undo]) 
fooc d 
fooc d 
+ 
+ 
bbbb 
bbbb 
cccc 
bbbb 
+ 
-foo- 
~
~
~
[No Name] [+]                                                                   Executing Test_matchaddpos_using_negative_priority()x
NP
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   x
NP
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   x
-1 match priority
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   Executing Test_matchstrpos()

Executing Test_max_min_errors()

Executing Test_messages()

hello0x
-1 match priority
vmap works   hello1234567898

hello9xhello9
Executing Test_missing_attr()

Executing Test_move_cursor()

Executing Test_named_function_closure()

Executing Test_no_type_checking()

Executing Test_noinsert_complete()=s:complTest1()
=s:complTest2()
Executing Test_non_zero_arg()

Executing Test_not_existing()

Executing Test_not_lamda()

Executing Test_oneshot()

Executing Test_option_value()

Executing Test_options()
"option-window" [New File]

Executing Test_partial_args()

Executing Test_partial_dict()

Executing Test_partial_exists()

Executing Test_partial_implicit()

Executing Test_partial_string()

Executing Test_path_keep_commas()

Executing Test_paused()

Executing Test_popup_complete()=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
Scanning: [No Name]test_alot.vima.txtDoesNotExistEverabcdxaabbcceeffex-undoXfiletestfile tags.=ListMonths()
=ListMonths()
 =ListMonths()

+=ListMonths()

+      =ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()

  =ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
  =ListMonths()
o-=ListMonths()
=ListMonths()
=ListMonths()
Executing Test_popup_complete2()=ListMonths()
Executing Test_popup_completion_insertmode()=ListMonths()
=ListMonths()
=ListMonths()
       
=ListMonths()
=ListMonths()
Executing Test_printf_64bit()

Executing Test_printf_errors()

0
0
1
0
0
Executing Test_printf_float()

0.000000

Executing Test_printf_misc()

Executing Test_printf_spec_b()

Executing Test_printf_spec_s()

Executing Test_ptag_with_notagstack()

Executing Test_read_only()

Executing Test_recursive_delete()
"Xdir1/Xfile" [New File][New] 2L, 4C writtensubdir/Xfile" [New] 2L, 4C written

Executing Test_redefine_dict_func()

Executing Test_ref_job_partial_dict()

Executing Test_reltime()

Executing Test_repeat_many()

Executing Test_repeat_three()

Executing Test_retain_partial()

Executing Test_script_function_in_dict()

Executing Test_script_function_in_dict_arg()

Executing Test_searchpos()
"one" [New File]
Executing Test_set_add()

Executing Test_set_backslash()

Executing Test_set_reg_null_list()

Executing Test_set_tagcase()

Executing Test_setmatches()

Executing Test_signcolumn()

Executing Test_sort_default()

Executing Test_sort_float()

Executing Test_sort_nested()

Executing Test_sort_numbers()

Executing Test_sort_numeric()

Executing Test_sort_strings()

Executing Test_special_char()

Executing Test_statusline_will_be_disabled_with_error()x
-1 match priority
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
                                                                                Executing Test_stop_all_in_callback()

Executing Test_stop_in_callback()

Executing Test_stopall()

Executing Test_strcharpart()

Executing Test_strgetchar()

Executing Test_substitute_expr()

Executing Test_substitute_expr_arg()

Executing Test_symlink_delete()
"Xfile" [New File][New] 2L, 4C written[?1l>[?1h=
Executing Test_symlink_dir_delete()[?1l>[?1h=
Executing Test_symlink_recursive_delete()
"Xdir3/Xfile" [New File][New] 2L, 4C writtensubdir/Xfile" [New] 2L, 4C written
"Xdir4/Xfile" [New] 2L, 4C written[?1l>[?1h=
Executing Test_tabline_will_be_disabled_with_error()                                                                                x
-1 match priority
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
[No Name]                                                                       Executing Test_tabnext_on_buf_unload1()

Executing Test_tabnext_on_buf_unload2()

"x" [Not edited] --No lines in buffer-- ((5) of 6)
"y" [New File]
Executing Test_tabpage()
"Xtestfile" [New File]
2 fewer lines; before #1  0 seconds ago
"test1" [New File]newfile" [New File]
"test1" [New File]file] --No lines in buffer--

Executing Test_tabpage_with_autocmd()

Executing Test_tabpage_with_tab_modifier()
"help.txt" [readonly] line 1 of 225 --0%-- col 1

"ff" [New File]

Executing Test_tagcase()
"Xtext" [New File]
Executing Test_three_windows()
"Xtestje1" [New File][New] 1L, 8C written2" [New File][New] 1L, 8C written3" [New File][New] 1L, 8C written11L, 8C

"Xtestje3" 1L, 8C21L, 8C11L, 8C

"Xanother" [New File]
"Xtestje11L, 8C
"Xanother" [New File]

Already only one window
"help.txt" [readonly] 225L, 8437C

Executing Test_tostring()

Executing Test_true_false_arg()[?1l>[?1h=[?1l>[?1h=[?1l>[?1h=[?1l>[?1h=
"colored" [New File]

Executing Test_valid()

Executing Test_version()

Executing Test_vim_did_enter()

Executing Test_whichwrap()

Executing Test_win_tab_autocmd()

"somefile" [New File]

Executing Test_window_cmd_cmdwin_with_vsp()

Executing Test_window_cmd_ls0_with_split()

Executing Test_window_cmd_wincmd_gf()
"test_gf.txt" 0L, 0C
W19: Deleting augroup that is still in use
Executing Test_with_directories()"Xdir1/file" [New File]
"Xdir1/file" [New] 2L, 4C written

"Xdir3/Xdir4/file" [New] 2L, 4C written2L, 4C
"Xdir?/*/nofile" [New DIRECTORY]
"foo" [New File]Executing Test_with_partial_callback()tilde()rong_arguments()
"test.log" 12L, 547C

"test.log" 40L, 2933C written
Executed 188 tests4 FAILED:"messages" 506L, 13603C

"messages" 724L, 22313C written
[?1l>


From test_arglist.vim:
Executing Test_argadd()
Executing Test_argc()
Executing Test_argdelete()
Executing Test_argedit()
Executing Test_argidx()
Executing Test_arglist_autocmd()
Executing Test_arglistid()
Executing Test_argpos()
Executing Test_argument()
Executing Test_argv()
Executing Test_zero_argadd()
Executed 11 tests

From test_assert.vim:
Executing Test_assert_equal()
Executing Test_assert_exception()
Executing Test_assert_fail_fails()
Executing Test_assert_false()
Executing Test_assert_inrange()
Executing Test_assert_notequal()
Executing Test_assert_true()
Executing Test_compare_fail()
Executing Test_match()
Executing Test_notmatch()
Executing Test_user_is_happy()
Executing Test_wrong_error_type()
Executed 12 tests

From test_autochdir.vim:
Executing Test_set_filename()
Executed 1 test

From test_backspace_opt.vim:
Executing Test_backspace_option()
Executed 1 test

From test_bufwintabinfo.vim:
Executing Test_get_buf_options()
Executing Test_get_win_options()
Executing Test_getbufwintabinfo()
Executed 3 tests

From test_cdo.vim:
Executing Test_cdo()
Executing Test_ldo()
Executed 2 tests

From test_channel.vim:
Executed 0 test

From test_charsearch.vim:
Executing Test_charsearch()
Executing Test_search_cmds()
Executed 2 tests

From test_cmdline.vim:
Executing Test_complete_list()
Executing Test_complete_tab()
Executing Test_complete_wildmenu()
Executing Test_expand_star_star()
Executing Test_getcompletion()
Executed 5 tests

From test_crypt.vim:
Executing Test_crypt_blowfish()
Executing Test_crypt_blowfish2()
Executing Test_crypt_zip()
Executing Test_head_only_2()
Executing Test_head_only_3()
Executing Test_uncrypt_blowfish()
Executing Test_uncrypt_blowfish2()
Executing Test_uncrypt_zip()
Executed 8 tests

From test_cscope.vim:
Executed 0 test

From test_diffmode.vim:
Executing Test_diff_fold_sync()
Executing Test_diffget_diffput()
Executing Test_diffoff()
Executing Test_filler_lines()
Executing Test_vert_split()
Executed 5 tests

From test_digraph.vim:
Executing Test_digraph_cmndline()
Executing Test_digraphs()
Executing Test_digraphs_option()
Executing Test_digraphs_output()
Executing Test_loadkeymap()
Executed 5 tests

From test_farsi.vim:
Executing Test_farsi_map()
Executing Test_farsi_toggle()
Executed 2 tests

From test_fnameescape.vim:
Executing Test_fnameescape()
Executed 1 test

From test_gf.vim:
Executing Test_gf_url()
Executed 1 test

From test_gn.vim:
Executing Test_gn_command()
Executed 1 test

From test_gui.vim:
Executed 0 test

From test_hardcopy.vim:
Executing Test_printheader_parsing()
Executing Test_printmbfont_parsing()
Executing Test_printoptions_parsing()
Executing Test_with_syntax()
Executed 4 tests

From test_history.vim:
Executing Test_History()
Executed 1 test

From test_hlsearch.vim:
Executing Test_hlsearch()
Executed 1 test

From test_increment.vim:
Executing Test_normal_increment_01()
Executing Test_normal_increment_02()
Executing Test_normal_increment_03()
Executing Test_visual_increment_01()
Executing Test_visual_increment_02()
Executing Test_visual_increment_03()
Executing Test_visual_increment_04()
Executing Test_visual_increment_05()
Executing Test_visual_increment_06()
Executing Test_visual_increment_07()
Executing Test_visual_increment_08()
Executing Test_visual_increment_09()
Executing Test_visual_increment_10()
Executing Test_visual_increment_11()
Executing Test_visual_increment_12()
Executing Test_visual_increment_13()
Executing Test_visual_increment_14()
Executing Test_visual_increment_15()
Executing Test_visual_increment_16()
Executing Test_visual_increment_17()
Executing Test_visual_increment_18()
Executing Test_visual_increment_19()
Executing Test_visual_increment_20()
Executing Test_visual_increment_21()
Executing Test_visual_increment_22()
Executing Test_visual_increment_23()
Executing Test_visual_increment_24()
Executing Test_visual_increment_25()
Executing Test_visual_increment_26()
Executing Test_visual_increment_27()
Executing Test_visual_increment_28()
Executing Test_visual_increment_29()
Executing Test_visual_increment_30()
Executing Test_visual_increment_31()
Executing Test_visual_increment_32()
Executing Test_visual_increment_33()
Executing Test_visual_increment_34()
Executing Test_visual_increment_35()
Executing Test_visual_increment_36()
Executing Test_visual_increment_37()
Executing Test_visual_increment_38()
Executed 41 tests

From test_increment_dbcs.vim:
Executing Test_increment_dbcs_1()
Executed 1 test

From test_job_fails.vim:
Executing Test_job_start_fails()
Executed 1 test

From test_json.vim:
Executing Test_js_decode()
Executing Test_js_encode()
Executing Test_json_decode()
Executing Test_json_encode()
Executed 4 tests

From test_langmap.vim:
Executing Test_langmap()
Executed 1 test

From test_man.vim:
Executing Test_g_ft_man_open_mode()
Executing Test_nomodifiable()
Executed 2 tests

From test_marks.vim:
Executing Test_Incr_Marks()
Executing Test_Restore_DelMark()
Executed 2 tests

From test_matchadd_conceal.vim:
Executing Test_clearmatches()
Executing Test_default_conceal_char()
Executing Test_matchadd_and_conceallevel_3()
Executing Test_matchadd_repeat_conceal_with_syntax_off()
Executing Test_simple_matchadd()
Executing Test_simple_matchadd_and_conceal()
Executing Test_syn_and_match_conceal()
Executing Test_using_matchaddpos()
Executed 8 tests
2 FAILED:
Found errors in Test_clearmatches():
function RunTheTest[9]..Test_clearmatches line 29: Expected 0 differs from 0
Found errors in Test_default_conceal_char():
function RunTheTest[9]..Test_default_conceal_char line 13: Expected 0 differs from 0
function RunTheTest[9]..Test_default_conceal_char line 26: Expected 0 differs from 0

From test_nested_function.vim:
Executing Test_nested_functions()
Executed 1 test

From test_netbeans.vim:
Executed 0 test

From test_normal.vim:
Executing Test_normal00_optrans()
Executing Test_normal01_keymodel()
Executing Test_normal02_selectmode()
Executing Test_normal02_selectmode2()
Executing Test_normal03_join()
Executing Test_normal04_filter()
Executing Test_normal05_formatexpr()
Executing Test_normal05_formatexpr_newbuf()
Executing Test_normal05_formatexpr_setopt()
Executing Test_normal06_formatprg()
Executing Test_normal07_internalfmt()
Executing Test_normal08_fold()
Executing Test_normal09_operatorfunc()
Executing Test_normal10_expand()
Executing Test_normal11_showcmd()
Executing Test_normal12_nv_error()
Executing Test_normal13_help()
Executing Test_normal14_page()
Executing Test_normal14_page_eol()
Executing Test_normal15_z_scroll_vert()
Executing Test_normal16_z_scroll_hor()
Executing Test_normal17_z_scroll_hor2()
Executing Test_normal18_z_fold()
Executing Test_normal19_z_spell()
Executing Test_normal20_exmode()
Executing Test_normal21_nv_hat()
Executing Test_normal22_zet()
Executing Test_normal23_K()
Executing Test_normal24_rot13()
Executing Test_normal25_tag()
Executing Test_normal26_put()
Executing Test_normal27_bracket()
Executing Test_normal28_parenthesis()
Executing Test_normal29_brace()
Executing Test_normal30_changecase()
Executing Test_normal31_r_cmd()
Executing Test_normal32_g_cmd1()
Executing Test_normal33_g_cmd2()
Executing Test_normal34_g_cmd3()
Executing Test_normal35_g_cmd4()
    Skipped
Executing Test_normal36_g_cmd5()
Executing Test_normal37_g_cmd6()
Executing Test_normal38_nvhome()
Executing Test_normal39_cw()
Executing Test_normal40_ctrl_bsl()
Executing Test_normal41_insert_reg()
Executing Test_normal42_halfpage()
Executing Test_normal43_textobject1()
Executing Test_normal44_textobjects2()
Executing Test_normal45_drop()
Executing Test_normal46_ignore()
Executing Test_normal47_autocmd()
    Skipped
Executing Test_normal47_visual_buf_wipe()
Executing Test_normal48_wincmd()
Executing Test_normal49_counts()
Executing Test_normal50_commandline()
Executing Test_normal51_FileChangedRO()
Executing Test_normal52_rl()
Executing Test_normal53_digraph()
Executing Test_normal54_Ctrl_bsl()
Executed 60 tests
SKIPPED Test_normal35_g_cmd4(): output of g< can't be tested currently
SKIPPED Test_normal47_autocmd(): not possible to test cursorhold autocmd while waiting for input in normal_cmd

From test_packadd.vim:
Executing Test_colorscheme()
Executing Test_colorscheme_completion()
Executing Test_helptags()
Executing Test_packadd()
Executing Test_packadd_completion()
Executing Test_packadd_noload()
Executing Test_packloadall()
Executing Test_runtime()
Executed 8 tests

From test_perl.vim:
Executing Test_SvREFCNT()
Executing Test_VIM_package()
Executing Test_change_buffer()
Executing Test_evaluate_list()
Executing Test_perldo()
Executing Test_perleval()
Executing Test_stdio()
Executed 7 tests

From test_quickfix.vim:
Executing Test_Autocmd()
Executing Test_adjust_lnum()
Executing Test_browse()
Executing Test_caddbuffer_to_empty()
Executing Test_cage()
Executing Test_cbottom()
Executing Test_cbuffer()
Executing Test_cexpr()
Executing Test_cfile()
Executing Test_cgetexpr_works()
Executing Test_clist()
Executing Test_cwindow()
Executing Test_duplicate_buf()
Executing Test_efm()
Executing Test_efm1()
Executing Test_efm2()
Executing Test_efm_dirstack()
Executing Test_errortitle()
Executing Test_grep()
Executing Test_helpgrep()
Executing Test_history()
Executing Test_invalid_efm()
Executing Test_locationlist()
Executing Test_locationlist_curwin_was_closed()
Executing Test_long_lines()
Executing Test_nomem()
Executing Test_qf_property()
Executing Test_qf_title()
Executing Test_quickfix_set_list_with_act()
Executing Test_quickfix_was_changed_by_autocmd()
Executing Test_setqflist()
Executing Test_setqflist_empty_middle()
Executing Test_setqflist_empty_older()
Executing Test_switchbuf()
Executing Test_two_windows()
Executing Test_vimgreptitle()
Executed 36 tests

From test_ruby.vim:
Executing Test_ruby_change_buffer()
Executing Test_ruby_evaluate_dict()
Executing Test_ruby_evaluate_list()
Executed 3 tests

From test_search.vim:
Executing Test_search_cmdline()
Executing Test_search_cmdline2()
Executing Test_use_sub_pat()
Executed 3 tests

From test_signs.vim:
Executing Test_sign()
Executing Test_sign_completion()
Executing Test_sign_delete_buffer()
Executing Test_sign_invalid_commands()
Executing Test_sign_undefine_still_placed()
Executed 5 tests

From test_smartindent.vim:
Executing Test_nosmartindent()
Executed 1 test

From test_startup.vim:
Executing Test_after_comes_later()
Executing Test_compatible_args()
Executing Test_file_args()
Executing Test_help_arg()
Executing Test_read_stdin()
Executing Test_startup_script()
Executing Test_startuptime()
Executed 7 tests

From test_startup_utf8.vim:
Executing Test_read_fifo_utf8()
Executing Test_read_stdin_utf8()
Executed 2 tests

From test_stat.vim:
Executing Test_checktime()
Executing Test_existent_directory()
Executing Test_existent_file()
Executing Test_nonexistent_file()
Executing Test_win32_symlink_dir()
Executed 5 tests

From test_substitute.vim:
Executing Test_multiline_subst()
Executed 1 test

From test_syntax.vim:
Executing Test_syn_iskeyword()
Executing Test_syntax_after_reload()
Executed 2 tests

From test_textobjects.vim:
Executing Test_inner_block_with_cpo_M_left_backslash()
Executing Test_inner_block_with_cpo_M_right_backslash()
Executing Test_inner_block_without_cpo_M()
Executed 3 tests

From test_undo.vim:
Executing Test_U_command()
Executing Test_global_local_undolevels()
Executing Test_insert_expr()
Executing Test_undo_del_chars()
Executing Test_undo_write()
Executing Test_undojoin()
Executing Test_undolist()
Executing Test_undotree()
Executed 8 tests

From test_usercommands.vim:
Executing Test_Ambiguous()
Executing Test_CmdUndefined()
Executing Test_cmdmods()
Executed 3 tests

From test_viminfo.vim:
Executing Test_cmdline_history()
Executing Test_cmdline_history_order()
Executing Test_global_vars()
Executing Test_oldfiles()
Executing Test_read_and_write()
Executing Test_viminfo_bad_syntax()
Executing Test_viminfo_encoding()
Executing Test_viminfo_file_mark_tabclose()
Executing Test_viminfo_file_marks()
Executing Test_viminfo_jumplist()
Executing Test_viminfo_marks()
Executing Test_viminfo_registers()
Executed 12 tests

From test_viml.vim:
Executing Test_arg_abort()
Executing Test_braces_skipped()
Executing Test_curlies()
Executing Test_defining_functions()
Executing Test_echo_and_string()
Executing Test_endwhile_function()
Executing Test_endwhile_script()
Executing Test_error_in_function()
Executing Test_error_in_script()
Executing Test_expr_parsing()
Executing Test_finish()
Executing Test_func_abort()
Executing Test_if_bar_fail()
Executing Test_if_fail()
Executing Test_if_while()
Executing Test_num64()
Executing Test_return()
Executing Test_skip()
Executing Test_type()
Executing Test_while_fail()
Executed 20 tests

From test_visual.vim:
Executing Test_block_shift_multibyte()
Executed 1 test

From test_window_id.vim:
Executing Test_win_getid()
Executed 1 test

From test_writefile.vim:
Executing Test_WriteFile()
Executed 1 test

From test_alot_latin.vim:
Executing Test_eow_with_optional()
Executing Test_equivalence_re1()
Executing Test_equivalence_re2()
Executing Test_nested_backrefs()
Executing Test_recursive_substitute()
Executed 5 tests

From test_alot_utf8.vim:
Executing Test_classes_re1()
Executing Test_classes_re2()
Executing Test_equivalence_re1()
Executing Test_equivalence_re2()
Executing Test_match_using_multibyte_conceal_char()
Executing Test_source_latin()
Executing Test_source_utf8()
Executing Test_strcharpart()
Executing Test_strgetchar()
Executed 9 tests
1 FAILED:
Found errors in Test_match_using_multibyte_conceal_char():
function RunTheTest[9]..Test_match_using_multibyte_conceal_char line 14: Expected 0 differs from 0

From test_alot.vim:
Executing Test_abbreviation()
Executing Test_augroup_deleted()
Executing Test_augroup_warning()
Executing Test_auto_partial_rebind()
Executing Test_autocmd_bufunload_avoiding_SEGV_01()
Executing Test_autocmd_bufunload_avoiding_SEGV_02()
Executing Test_autocmd_bufunload_with_tabnext()
Executing Test_autocmd_bufwinleave_with_tabfirst()
Executing Test_bind_in_python()
Executing Test_break_undo()
Executing Test_bufunload()
Executing Test_cancel_ptjump()
Executing Test_caught_error_in_statusline()
Executing Test_caught_error_in_tabline()
Executing Test_closure_counter()
Executing Test_closure_refcount()
Executing Test_closure_unlet()
Executing Test_color_names()
Executing Test_command_count_0()
Executing Test_command_count_1()
Executing Test_command_count_2()
Executing Test_command_count_3()
Executing Test_command_count_4()
Executing Test_compare_null_dict()
Executing Test_compare_partials()
Executing Test_compl_vim_cmds_after_register_expr()
Executing Test_cursorhold_insert()
Executing Test_cursorhold_insert_ctrl_x()
Executing Test_curswant_with_autocommand()
Executing Test_cycle_partial_job()
Executing Test_cyclic_dict_arg()
Executing Test_cyclic_list_arg()
Executing Test_delete_myself()
Executing Test_dict()
Executing Test_dir_delete()
Executing Test_early_bar()
Executing Test_empty_buffer()
Executing Test_equal()
Executing Test_ex_undo()
Executing Test_execute_list()
Executing Test_execute_string()
Executing Test_existing()
Executing Test_expand()
Executing Test_feedkeys_x_with_empty_string()
Executing Test_file_delete()
Executing Test_file_perm()
Executing Test_filter()
Executing Test_filter_fails()
Executing Test_filter_map_dict_expr_funcref()
Executing Test_filter_map_dict_expr_string()
Executing Test_filter_map_list_expr_funcref()
Executing Test_filter_map_list_expr_string()
Executing Test_fnamemodify()
Executing Test_func_unref()
Executing Test_funcref()
Executing Test_function_in_dict()
Executing Test_function_with_funcref()
Executing Test_geeDEE()
Executing Test_gee_dee()
Executing Test_get_partial_items()
Executing Test_getreg_empty_list()
Executing Test_global_local_lispwords()
Executing Test_help_complete()
Executing Test_help_tagjump()
Executing Test_if()
Executing Test_info()
Executing Test_invalid()
Executing Test_invalid_submatch()
Executing Test_join_with_count()
Executing Test_keyword_jump()
Executing Test_lambda_call_lambda_from_lambda()
Executing Test_lambda_capture_by_reference()
Executing Test_lambda_circular_reference()
Executing Test_lambda_closure_counter()
Executing Test_lambda_combination()
Executing Test_lambda_delfunc()
Executing Test_lambda_do_not_share_local_variable()
Executing Test_lambda_fails()
Executing Test_lambda_feature()
Executing Test_lambda_refer_local_variable_from_other_scope()
Executing Test_lambda_scope()
Executing Test_lambda_share_scope()
Executing Test_lambda_side_effect()
Executing Test_lambda_with_a_var()
Executing Test_lambda_with_filter()
Executing Test_lambda_with_map()
Executing Test_lambda_with_partial()
Executing Test_lambda_with_sort()
Executing Test_lambda_with_timer()
Executing Test_load_menu()
Executing Test_loop_over_null_list()
Executing Test_map_ctrl_c_insert()
Executing Test_map_ctrl_c_visual()
Executing Test_map_cursor()
Executing Test_map_feedkeys()
Executing Test_map_langmap()
Executing Test_map_meta_quotes()
Executing Test_match()
Executing Test_matchaddpos()
Executing Test_matchaddpos_using_negative_priority()
Executing Test_matchstrpos()
Executing Test_max_min_errors()
Executing Test_messages()
Executing Test_missing_attr()
Executing Test_move_cursor()
Executing Test_named_function_closure()
Executing Test_no_type_checking()
Executing Test_noinsert_complete()
Executing Test_non_zero_arg()
Executing Test_not_existing()
Executing Test_not_lamda()
Executing Test_oneshot()
Executing Test_option_value()
Executing Test_options()
Executing Test_partial_args()
Executing Test_partial_dict()
Executing Test_partial_exists()
Executing Test_partial_implicit()
Executing Test_partial_string()
Executing Test_path_keep_commas()
Executing Test_paused()
Executing Test_popup_complete()
Executing Test_popup_complete2()
Executing Test_popup_completion_insertmode()
Executing Test_printf_64bit()
Executing Test_printf_errors()
Executing Test_printf_float()
Executing Test_printf_misc()
Executing Test_printf_spec_b()
Executing Test_printf_spec_s()
Executing Test_ptag_with_notagstack()
Executing Test_read_only()
Executing Test_recursive_delete()
Executing Test_redefine_dict_func()
Executing Test_ref_job_partial_dict()
Executing Test_reltime()
Executing Test_repeat_many()
Executing Test_repeat_three()
Executing Test_retain_partial()
Executing Test_script_function_in_dict()
Executing Test_script_function_in_dict_arg()
Executing Test_searchpos()
Executing Test_set_add()
Executing Test_set_backslash()
Executing Test_set_reg_null_list()
Executing Test_set_tagcase()
Executing Test_setmatches()
Executing Test_signcolumn()
Executing Test_sort_default()
Executing Test_sort_float()
Executing Test_sort_nested()
Executing Test_sort_numbers()
Executing Test_sort_numeric()
Executing Test_sort_strings()
Executing Test_special_char()
Executing Test_statusline_will_be_disabled_with_error()
Executing Test_stop_all_in_callback()
Executing Test_stop_in_callback()
Executing Test_stopall()
Executing Test_strcharpart()
Executing Test_strgetchar()
Executing Test_substitute_expr()
Executing Test_substitute_expr_arg()
Executing Test_symlink_delete()
Executing Test_symlink_dir_delete()
Executing Test_symlink_recursive_delete()
Executing Test_tabline_will_be_disabled_with_error()
Executing Test_tabnext_on_buf_unload1()
Executing Test_tabnext_on_buf_unload2()
Executing Test_tabpage()
Executing Test_tabpage_with_autocmd()
Executing Test_tabpage_with_tab_modifier()
Executing Test_tagcase()
Executing Test_three_windows()
Executing Test_tostring()
Executing Test_true_false_arg()
Executing Test_valid()
Executing Test_version()
Executing Test_vim_did_enter()
Executing Test_whichwrap()
Executing Test_win_tab_autocmd()
Executing Test_window_cmd_cmdwin_with_vsp()
Executing Test_window_cmd_ls0_with_split()
Executing Test_window_cmd_wincmd_gf()
Executing Test_with_directories()
Executing Test_with_partial_callback()
Executing Test_with_tilde()
Executing Test_wrong_arguments()
Executed 188 tests
4 FAILED:
Found errors in Test_matchaddpos_using_negative_priority():
function RunTheTest[9]..Test_matchaddpos_using_negative_priority line 20: 'Match with negative priority is incorrectly highlighted with Search highlight.'
Found errors in Test_noinsert_complete():
function RunTheTest[9]..Test_noinsert_complete line 15: Expected 'soundfold' but got 'soun'
function RunTheTest[9]..Test_noinsert_complete line 16: Expected 'soundfold' but got ''
function RunTheTest[9]..Test_noinsert_complete line 22: Expected 'source' but got ''
Found errors in Test_popup_complete():
function RunTheTest[9]..Test_popup_complete line 6: Expected ['Ju'] but got ['June']
function RunTheTest[9]..Test_popup_complete line 11: Expected ['August'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 41: Expected ['July'] but got ['Jul']
function RunTheTest[9]..Test_popup_complete line 77: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 82: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 87: Expected ['February'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 92: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 97: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 102: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 107: Expected ['October'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 112: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 117: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 122: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 142: Expected ['September'] but got ['January', '']
function RunTheTest[9]..Test_popup_complete line 159: Expected ['December2015', 'December201', ''] but got ['December2015', 'December2015', '']
function RunTheTest[9]..Test_popup_complete line 177: Expected ['March', 'M', 'March'] but got ['March', 'M', 'M', '']
Found errors in Test_popup_completion_insertmode():
function RunTheTest[9]..Test_popup_completion_insertmode line 5: Expected 'February' but got ''
function RunTheTest[9]..Test_popup_completion_insertmode line 10: Expected 'February' but got ''


From test_matchadd_conceal.vim:
Found errors in Test_clearmatches():
function RunTheTest[9]..Test_clearmatches line 29: Expected 0 differs from 0
Found errors in Test_default_conceal_char():
function RunTheTest[9]..Test_default_conceal_char line 13: Expected 0 differs from 0
function RunTheTest[9]..Test_default_conceal_char line 26: Expected 0 differs from 0

From test_alot_utf8.vim:
Found errors in Test_match_using_multibyte_conceal_char():
function RunTheTest[9]..Test_match_using_multibyte_conceal_char line 14: Expected 0 differs from 0

From test_alot.vim:
Found errors in Test_matchaddpos_using_negative_priority():
function RunTheTest[9]..Test_matchaddpos_using_negative_priority line 20: 'Match with negative priority is incorrectly highlighted with Search highlight.'
Found errors in Test_noinsert_complete():
function RunTheTest[9]..Test_noinsert_complete line 15: Expected 'soundfold' but got 'soun'
function RunTheTest[9]..Test_noinsert_complete line 16: Expected 'soundfold' but got ''
function RunTheTest[9]..Test_noinsert_complete line 22: Expected 'source' but got ''
Found errors in Test_popup_complete():
function RunTheTest[9]..Test_popup_complete line 6: Expected ['Ju'] but got ['June']
function RunTheTest[9]..Test_popup_complete line 11: Expected ['August'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 41: Expected ['July'] but got ['Jul']
function RunTheTest[9]..Test_popup_complete line 77: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 82: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 87: Expected ['February'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 92: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 97: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 102: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 107: Expected ['October'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 112: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 117: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 122: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 142: Expected ['September'] but got ['January', '']
function RunTheTest[9]..Test_popup_complete line 159: Expected ['December2015', 'December201', ''] but got ['December2015', 'December2015', '']
function RunTheTest[9]..Test_popup_complete line 177: Expected ['March', 'M', 'March'] but got ['March', 'M', 'M', '']
Found errors in Test_popup_completion_insertmode():
function RunTheTest[9]..Test_popup_completion_insertmode line 5: Expected 'February' but got ''
function RunTheTest[9]..Test_popup_completion_insertmode line 10: Expected 'February' but got ''

Test results:


From test_matchadd_conceal.vim:
Found errors in Test_clearmatches():
function RunTheTest[9]..Test_clearmatches line 29: Expected 0 differs from 0
Found errors in Test_default_conceal_char():
function RunTheTest[9]..Test_default_conceal_char line 13: Expected 0 differs from 0
function RunTheTest[9]..Test_default_conceal_char line 26: Expected 0 differs from 0

From test_alot_utf8.vim:
Found errors in Test_match_using_multibyte_conceal_char():
function RunTheTest[9]..Test_match_using_multibyte_conceal_char line 14: Expected 0 differs from 0

From test_alot.vim:
Found errors in Test_matchaddpos_using_negative_priority():
function RunTheTest[9]..Test_matchaddpos_using_negative_priority line 20: 'Match with negative priority is incorrectly highlighted with Search highlight.'
Found errors in Test_noinsert_complete():
function RunTheTest[9]..Test_noinsert_complete line 15: Expected 'soundfold' but got 'soun'
function RunTheTest[9]..Test_noinsert_complete line 16: Expected 'soundfold' but got ''
function RunTheTest[9]..Test_noinsert_complete line 22: Expected 'source' but got ''
Found errors in Test_popup_complete():
function RunTheTest[9]..Test_popup_complete line 6: Expected ['Ju'] but got ['June']
function RunTheTest[9]..Test_popup_complete line 11: Expected ['August'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 41: Expected ['July'] but got ['Jul']
function RunTheTest[9]..Test_popup_complete line 77: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 82: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 87: Expected ['February'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 92: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 97: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 102: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 107: Expected ['October'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 112: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 117: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 122: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 142: Expected ['September'] but got ['January', '']
function RunTheTest[9]..Test_popup_complete line 159: Expected ['December2015', 'December201', ''] but got ['December2015', 'December2015', '']
function RunTheTest[9]..Test_popup_complete line 177: Expected ['March', 'M', 'March'] but got ['March', 'M', 'M', '']
Found errors in Test_popup_completion_insertmode():
function RunTheTest[9]..Test_popup_completion_insertmode line 5: Expected 'February' but got ''
function RunTheTest[9]..Test_popup_completion_insertmode line 10: Expected 'February' but got ''
TEST FAILURE
Makefile:41: recipe for target 'report' failed
make[2]: *** [report] Error 1
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-gtk3/testdir'
Makefile:1992: recipe for target 'scripttests' failed
make[1]: *** [scripttests] Error 2
make[1]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-gtk3'
debian/rules:279: recipe for target 'build-stamp-vim-gtk3' failed
make: *** [build-stamp-vim-gtk3] Error 2
make[1]: warning: -jN forced in submake: disabling jobserver mode.
make[1]: Entering directory '/<<PKGBUILDDIR>>/src/vim-athena'
/usr/bin/make -f Makefile vim
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-athena'
make[2]: 'vim' is up to date.
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-athena'
if test -n "yes" -a -f po/Makefile; then \
	cd po; /usr/bin/make -f Makefile check VIM=../vim; \
fi
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-athena/po'
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq af.po
touch af.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ca.po
touch ca.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq cs.po
touch cs.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq de.po
touch de.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq en_GB.po
touch en_GB.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq eo.po
touch eo.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq es.po
touch es.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq fi.po
touch fi.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq fr.po
touch fr.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ga.po
touch ga.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq it.po
touch it.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.po
touch ja.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ko.po
touch ko.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ko.UTF-8.po
touch ko.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq nb.po
touch nb.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq nl.po
touch nl.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq no.po
touch no.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.po
touch pl.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pt_BR.po
touch pt_BR.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ru.po
touch ru.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sk.po
touch sk.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sv.po
touch sv.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq uk.po
touch uk.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq vi.po
touch vi.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.UTF-8.po
touch zh_CN.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.po
touch zh_CN.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_TW.UTF-8.po
touch zh_TW.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_TW.po
touch zh_TW.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq cs.cp1250.po
touch cs.cp1250.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.sjis.po
touch ja.sjis.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.euc-jp.po
touch ja.euc-jp.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.cp1250.po
touch pl.cp1250.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.UTF-8.po
touch pl.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ru.cp1251.po
touch ru.cp1251.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sk.cp1250.po
touch sk.cp1250.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq uk.cp1251.po
touch uk.cp1251.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.cp936.po
touch zh_CN.cp936.ck
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-athena/po'
if test vim != vim -a ! -r vim; then \
	ln -s vim vim; \
fi
cd testdir; /usr/bin/make -f Makefile gui VIMPROG=../vim  SCRIPTSOURCE=../../runtime
make[2]: Entering directory '/<<PKGBUILDDIR>>/src/vim-athena/testdir'
rm -f test.log messages
rm -rf test1.failed test.out X* viminfo tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok benchmark.out wrongtermsize
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test1.in
[?1h="test1.in" 57 lines, 2069 charactersFirst a simple test to check if the test script works.

If Vim was not compiled with the +eval feature, the small.vim script will be
set to copy the test.ok file to test.out, so that it looks like the test
succeeded.  Otherwise an empty small.vim is written.  small.vim is sourced by
tests that require the +eval feature or other features that are missing in the
small version.

If Vim was not compiled with the +windows feature, the tiny.vim script will be
set like small.vim above.  tiny.vim is sourced by tests that require the
+windows feature or other features that are missing in the tiny version.

If Vim was not compiled with the +multi_byte feature, the mbyte.vim script will
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
:" If columns or lines are too small, create wrongtermsize.
:" (Some tests will fail. When columns and/or lines are small)
:if &lines < 24 || &columns < 80 | sp another | w! wrongtermsize | qa! | endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 35 lines, 1133 characters written:set ff& cpo+=A



/ENDTEST: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
:w! small.vim
:" If +windows feature not supported :sp will fail and tiny.vim will be
:" written to skip the test.
:sp another
:wq! tiny.vim
:qa!
ENDTEST


:so! Xdotest
:" If columns or lines are too small, create wrongtermsize.
:" (Some tests will fail. When columns and/or lines are small)
:if &lines < 24 || &columns < 80 | sp another | w! wrongtermsize | qa! | endif
:"
:" Write a single line to test.out to check if testing works at all.
:%d
~~~~~~~~~~~~~~~~~~~~~
~
--No lines in buffer--this is a test:w! test.out
"test.out" [New File] 1 line, 15 characters written:" Create small.vim and tiny.vim empty, create mbyte.vim to skip the test.

:w! small.vim
"small.vim" [New File] 1 line, 1 character written:w! tiny.vim
"tiny.vim" [New File] 1 line, 1 character writtene! test.ok
w! test.out
qa!:w! mbyte.vim
"mbyte.vim" [New File] 4 lines, 28 characters written:w! mzscheme.vim
"mzscheme.vim" [New File] 4 lines, 28 characters written:w! lua.vim
"lua.vim" [New File] 4 lines, 28 characters written:"
:" If +multi_byte feature supported, make mbyte.vim empty.
:if has("multi_byte") | sp another | w! mbyte.vim | q | endif
"another" [New File]
"mbyte.vim" 0 lines, 0 characters writtene! test.ok:"
:" 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
"another" [New File]
"lua.vim" 0 lines, 0 characters writtene! test.ok:"
:" 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
[?1l>rm -rf X* viminfo
rm -rf test3.failed test.ok test.out X* viminfo
cp test3.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test3.in
[?1h="test3.in" 2303 lines, 22649 characters/* vim: set cin ts=4 sw=4 : */

Test for 'cindent'

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo modeline
:edit" read modeline
/start of AUTO
=/end of AUTO
ENDTEST

/* start of AUTO matically checked vim: set ts=4 : */
{if (test)cmd1;cmd2;
}

{if (test)cmd1;else:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/* vim: set cin ts=4 sw=4 : *//^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 125 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo modeline
:edit                " read modeline
"test3.in"2303L, 22649Cif (test)cmd1;cmd2;if (test)cmd1;else/start of AUTO
/end of AUTO
956 lines to indent...
9500
850
750
650
550
450
350
250
150
50 lines to indent... 
957 lines indented /^STARTTEST
}break;default:baz();baz();break;
    }
}

/* end of AUTO */

STARTTEST
:set tw=0 wm=60 columns=80 noai fo=croq
/serious/e
a about life, the universe, and the rest^[
ENDTEST

{

/* this is
 * a real serious important big
 * comment
 */
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 93C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set tw=0 wm=60 columns=80 noai fo=croq
}break;default:baz();baz();break;
    }
}

/* end of AUTO */

STARTTEST
:set tw=0 wm=60 columns=80 noai fo=croq
/serious/e
a about life, the universe, and the rest^[
ENDTEST

{

/* this is
 * a real serious important big
 * comment
 *//serious/e



-- INSERT --
about life, the
 * universe, and the
 * rest important big
* comment
/^STARTTEST





*/
    /* insert " about life, the universe, and the rest" after "serious" */
}

STARTTEST
:set nocin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 6L, 78C written:set ff& cpo+=A

/ENDTEST/+-1




/comments
joabout life^[/happens
jothere^[/below
oline^[/this
Ohello^[
ENDTEST

:so! Xdotest
:set nocin
/comments




{
    /** Testing for comments, without 'cin' set
*/
-- INSERT --
about life
/happens



/*
* what happens here?
*/
-- INSERT --
there
/below



/*the end of the comment, try inserting a line below */
-- INSERT --
line
/this



/* how aboutthis one */
-- INSERT --hello
this one */
/^STARTTEST



}

STARTTEST
:set cin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 18C written:set ff& cpo+=A

/ENDTEST/+-1

/vec2
==
ENDTEST

:so! Xdotest
:set cin
/vec2





{
    var = this + that + vec[0] * vec[0]+ vec[1] * vec[1]+ vec2[2] * vec[2];
}
/^STARTTEST


STARTTEST
:set cin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5L, 51C written:set ff& cpo+=A

/ENDTEST/+-1



:set cino=}4
/testing1
k2==/testing2
k2==
ENDTEST

:so! Xdotest
:set cin
:set cino=}4
/testing1








{asdf asdflkajds f;
    if (tes & ting) {asdf asdf asdf ;asdfa sdf asdf;}
    testing1; 

/testing2






if (tes & ting)
    {asdf asdf asdf ;asdfa sdf asdf;}
    testing2; 
/^STARTTEST



}

STARTTEST
:set cin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 4L, 36C written:set ff& cpo+=A

/ENDTEST/+-1


:set cino=(0,)20
/main
=][
ENDTEST

:so! Xdotest
:set cin
:set cino=(0,)20
/main


main ( int first_par, /*
19 lines to indent...
20indented 
* Comment for
/^STARTTEST
* Comment for* first par*/second_par /** Comment for* second par*/);

}

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();
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 4L, 36C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cin
:set cino=es,n0s
/main
8 lines to indent...
9indented 
/^STARTTEST







else
    {bar();
    }
}

STARTTEST
:set cin

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 26C written:set ff& cpo+=A

/ENDTEST/+-1

:set cino=
]]=][
ENDTEST

:so! Xdotest
:set cin
:set cino=


{
11 lines to indent...
12indented 
do
/^STARTTEST
if (){if ()asdf;elseasdf;}
    } while ();
    cmd;/* this should go under the } */
}

STARTTEST
]]=][
ENDTEST

void f()
{
    if ( k() ) {l();} else { /* Start (two words) end */m();
    }
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 1L, 6C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest



8 lines to indent...
9indented 
   /^STARTTEST





n();
}

STARTTEST
:set cino={s,e-s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
]]=][
ENDTEST

:so! Xdotest
:set cino={s,e-s



void f()
{
7 lines to indent...
8indented     {
if ( k() )
/^STARTTEST









{l();} else { /* Start (two words) end */m();}
    n();    /* should be under the if () */
}

STARTTEST
:set cino={s,fs

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 25C written:set ff& cpo+=A

/ENDTEST/+-1
]]=/ foo
ENDTEST

:so! Xdotest
:set cino={s,fs



void bar(void)
{
/ foo
30 lines to indent...
31indented     {/^STARTTEST
void func(void)
    {
    a = 1;{b = 2;}
    c = 3;
    d = 4;
    }
/* foo */

STARTTEST
:set cino=
/while
ohere^[
ENDTEST

a()
{
  do {
    a = a +a;
  } while ( a );/* add text under this line */
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 25C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=
/while

-- INSERT --
here
if ( a )
    i
/^STARTTEST




a;
}

STARTTEST
:set cino= com=

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 109C written:set ff& cpo+=A

/ENDTEST/+-1


/comment
olabel2: b();^Mlabel3 /* post */:^M/* pre */ label4:^Mf(/*com*/);^Mif (/*com*/)^^Mcmd();^[
ENDTEST

:so! Xdotest
:set cino= com=
/comment






a()
{
label1:/* hmm */// comment
-- INSERT --





label2: b();
label3 /* post */:
/* pre */ label4:f(/*com*/);if (/*com*/)cmd();
}
/^STARTTEST


STARTTEST
:set comments& comments^=s:/*,m:**,ex:*/

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 53C written:set ff& cpo+=A

/ENDTEST/+-1

/simple
=5j
ENDTEST

:so! Xdotest
:set comments& comments^=s:/*,m:**,ex:*/
/simple



/*
  * A simple comment
5 lines to indent...
6indented * A simple comment
*/
/^STARTTEST






/*
** A different comment
*/

STARTTEST
:set cino=c0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 70C written:set ff& cpo+=A

/ENDTEST/+-1

:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=c0
:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][ENDTEST

void f()
{
4 lines to indent...
5indented 

/^STARTTEST






/*********A comment.
    *********/
}

STARTTEST
:set cino=c0,C1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 73C written:set ff& cpo+=A

/ENDTEST/+-1

:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=c0,C1
:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][ENDTEST

void f()
{
4 lines to indent...
5indented 

/^STARTTEST






/*********
    A comment.
    *********/
}

STARTTEST
:set cino=

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 17C written:set ff& cpo+=A

/ENDTEST/+-1
]]=][
ENDTEST

:so! Xdotest
:set cino=



void f()
{
5 lines to indent...
6indented 
c = c1 &&
/^STARTTEST







(c2 ||c3) && c4;
}

STARTTEST
:set cino=(s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(s
2kdd]]=][ENDTEST

void f()
{
5 lines to indent...
6indented 
c = c1 &&
/^STARTTEST







(c2 ||c3) && c4;
}

STARTTEST
:set cino=(s,U1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 28C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(s,U1  
2kdd]]=][ENDTEST

void f()
{
5 lines to indent...
6indented 
c = c1 &&
/^STARTTEST







(c2 ||c3) && c4;
}

STARTTEST
:set cino=(0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0
2kdd]]=][ENDTEST

void f()
{
4 lines to indent...
5indented 
if (   c1
/^STARTTEST






&& (   c2|| c3))foo;
}

STARTTEST
:set cino=(0,w1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 28C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0,w1  
2kdd]]=][ENDTEST

void f()
{
4 lines to indent...
5indented 
if (   c1
/^STARTTEST






&& (   c2|| c3))foo;
}

STARTTEST
:set cino=(s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(s
2kdd]]=][ENDTEST

void f()
{
8 lines to indent...
9indented 
c = c1 && (
/^STARTTEST










c2 ||c3) && c4;
    if (c1 && c2)foo;
}

STARTTEST
:set cino=(s,m1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 28C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(s,m1  
2kdd]]=][ENDTEST

void f()
{
8 lines to indent...
9indented 
c = c1 && (
/^STARTTEST










c2 ||c3
    ) && c4;
    if (c1 && c2
    )foo;
}

STARTTEST
:set cino=b1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=b1
2kdd]]=][ENDTEST

void f()
{
9 lines to indent...
10 lines indented 
switch (x)
/^STARTTEST











{case 1:a = b;break;default:a = 0;break;
    }
}

STARTTEST
:set cino=(0,W5

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 26C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0,W5
2kdd]]=][ENDTEST

void f()
{
10 lines to indent...
11indented 
invokeme(
/^STARTTEST












argu,ment);
    invokeme(argu,ment);
    invokeme(argu,ment);
}

STARTTEST
:set cino=/6

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=/6
2kdd]]=][ENDTEST

void f()
{
3 lines to indent...
4indented 
statement;
/^STARTTEST





// comment 1// comment 2
}

STARTTEST
:set cino=

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 34C written:set ff& cpo+=A

/ENDTEST/+-1

2kdd]]/comment 1/+1
==
ENDTEST

:so! Xdotest
:set cino=
==ENDTEST

void f()
{
/comment 1/+1



statement;// comment 1
    // comment 2    // comment 2
}
/^STARTTEST


STARTTEST
:set cino=g0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=g0
2kdd]]=][ENDTEST

class CAbc
{
6 lines to indent...
7indented 
int Test() { return FALSE; }
/^STARTTEST








public: // comment
    void testfall();
protected:
    void testfall();
};

STARTTEST
:set cino=(0,gs,hs

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 29C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0,gs,hs
2kdd]]=][ENDTEST

class Foo : public Bar
{
5 lines to indent...
6indented 
public:
/^STARTTEST







virtual void method1(void) = 0;virtual void method2(int arg1,int arg2,int arg3) = 0;
};

STARTTEST
:set cino=+20

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 24C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=+20
2kdd]]=][ENDTEST


void
foo()
{
4 lines to indent...
5indented 
if (a)
/^STARTTEST






{
    } elseasdf;
}

STARTTEST
:set cino=(0,W2s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 27C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd]]=][
ENDTEST

:so! Xdotest
:set cino=(0,W2s
2kdd]]=][ENDTEST
{
34 lines to indent...
35indented 
averylongfunctionnamelongfunctionnameaverylongfunctionname()->asd(
/^STARTTEST
dec)->asdfasdfasdf(asdfadsf,asdfasdf,asdfasdf,),func(asdfadf,asdfasdf),asdasdf);
}

STARTTEST
:set cino=M1
2kdd]]=][
ENDTEST

int main ()
{
    if (cond1 &&cond2)foo;
}
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=M1

4 lines to indent...
5indented 
   /^STARTTEST

STARTTEST
:set cino=(0,ts

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 26C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd2j=][
ENDTEST

:so! Xdotest
:set cino=(0,ts
2kdd2j=][ENDTEST


7 lines to indent...
8indented 
void func(int a
/^STARTTEST









#if defined(FOO), int b, int c
#endif)
{
}

STARTTEST
:set cino=(0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 23C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd2j=][
ENDTEST

:so! Xdotest
:set cino=(0
2kdd2j=][ENDTEST


8 lines to indent...
9indented 
void
/^STARTTEST










func(int a
#if defined(FOO), int b, int c
#endif
    )
{
}

STARTTEST
:set cino&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 22C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd2j=7][
ENDTEST

:so! Xdotest
:set cino&
2kdd2j=7][
ENDTEST


69 lines to indent...
50
7indented 
void func(void)
/^STARTTEST
int a,int b)
{
}void
func6(int a)
{
}

STARTTEST
:set cino&
:set cino+=l1
2kdd2j=][
ENDTEST

void func(void)
{
    int tab[] =
    {1, 2, 3,4, 5, 6};
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino&
:set cino+=l1



22 lines to indent...
23indented 
/^STARTTEST
break;case baz: {printf("baz");break;}case quux:printf("But don't break the indentation of this instruction\n");break;
    }
}

STARTTEST
:set cino&
2kdd2j=][
ENDTEST

void func(void)
{
    cout << "a"
    << "b"
    << ") :"
    << "c";
}
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 21C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino&



6 lines to indent...
7indented     << "b"
        << ") :"
        << "c";
/^STARTTEST

STARTTEST
:set com=s1:/*,m:*,ex:*/

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 38C written:set ff& cpo+=A

/ENDTEST/+-1
]]3jofoo();^[
ENDTEST

:so! Xdotest
:set com=s1:/*,m:*,ex:*/



void func(void)
{


/** This is a comment.*/
-- INSERT --
foo();
}
/^STARTTEST


STARTTEST
:set cino&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 21C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd2j=][
ENDTEST

:so! Xdotest
:set cino&
2kdd2j=][ENDTEST


8 lines to indent...
9indented 
void func(void)
/^STARTTEST










{
    for (int i = 0; i < 10; ++i)if (i & 1) {foo(1);} elsefoo(0);
    baz();
}

STARTTEST
:set cino=k2s,(0

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 27C written:set ff& cpo+=A

/ENDTEST/+-1
2kdd3j=][
ENDTEST

:so! Xdotest
:set cino=k2s,(0
2kdd3j=][ENDTEST
void func(void)
23 lines to indent...
24indented 
{
/^STARTTEST
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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 27C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,(s




23 lines to indent...
24indented         && condition2)
        action();    && argument2);
/^STARTTEST
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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 30C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,(s,U1




24 lines to indent...
25indented         && condition2)
        action();    && argument2);
/^STARTTEST
&& (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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 30C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,(0,W4




29 lines to indent...
30indented         && condition2)
        action();         && argument2);
/^STARTTEST
&& (   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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 27C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,u2




18 lines to indent...
19indented         && condition2)
        action();        && argument2);
/^STARTTEST
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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 30C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2s,(0,w1




27 lines to indent...
28indented         && condition2)
        action();         && argument2);
/^STARTTEST
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);
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 26C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=k2,(s




14 lines to indent...
15indented 
/^STARTTEST










if (c1 && (c2 ||c3))foo;
    if (c1 &&(c2 || c3))
    {
    }
}

STARTTEST
:set cino=N-s

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 47C written:set ff& cpo+=A

/ENDTEST/+-1

/^NAMESPACESTART
=/^NAMESPACEEND
ENDTEST

:so! Xdotest
:set cino=N-s
/^NAMESPACESTART


NAMESPACESTART
/^NAMESPACEEND
61 lines to indent...
50
62indented /^STARTTEST
namespace test test2
{
    1111111111111111111;
}
namespace111111111
{
    111111111111111111;
}
NAMESPACEEND


STARTTEST
:set cino=j1,J1
/^JSSTART
=/^JSEND
ENDTEST

JSSTART
var bar = {
foo: {
that: this,
some: ok,
},
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=j1,J1
/^JSSTART
/^JSEND
12 lines to indent...
13indented     foo: {
        that: this,
        some: ok,
    },/^STARTTEST










"bar":{a : 2,b: "123abc",x: 4,"y": 5
    }
}
JSEND

STARTTEST
:set cino=j1,J1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A

/ENDTEST/+-1

/^JSSTART
=/^JSEND
ENDTEST

:so! Xdotest
:set cino=j1,J1
/^JSSTART


JSSTART
/^JSEND
5 lines to indent...
6indented /^STARTTEST








var foo = [
    1,
    2,
    3
];
JSEND

STARTTEST
:set cino=j1,J1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A

/ENDTEST/+-1

/^JSSTART
=/^JSEND
ENDTEST

:so! Xdotest
:set cino=j1,J1
/^JSSTART


JSSTART
/^JSEND
7 lines to indent...
8indented /^STARTTEST










function bar() {
    var foo = [1,2,3
    ];
}
JSEND

STARTTEST
:set cino=j1,J1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A

/ENDTEST/+-1

/^JSSTART
=/^JSEND
ENDTEST

:so! Xdotest
:set cino=j1,J1
/^JSSTART


JSSTART
/^JSEND
58 lines to indent...
509indented /^STARTTEST
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: [
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=j1,J1
/^JSSTART
/^JSEND
14 lines to indent...
15indented     $(this).data(class_name+'_public',$.extend({},{
        foo: 'bar',
        bar: 2,
        foobar: [/^STARTTEST












1,2,3],callback: function(){return true;}
    }, options||{}));
}
JSEND

STARTTEST
:set cino=j1,J1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 35C written:set ff& cpo+=A

/ENDTEST/+-1

/^JSSTART
=/^JSEND
ENDTEST

:so! Xdotest
:set cino=j1,J1
/^JSSTART


JSSTART
/^JSEND
16 lines to indent...
17indented /^STARTTEST
2,3],callback: function(){return true;}}, options||{}));
    }
})(jQuery);
JSEND

STARTTEST
:set cino=j1,J1,+2
/^JSSTART
=/^JSEND
ENDTEST

JSSTART
// Results of JavaScript indent
// 1
(function(){
var a = [
'a',
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3L, 38C written:set ff& cpo+=A
/ENDTEST/+-1
:so! Xdotest
:set cino=j1,J1,+2
/^JSSTART
/^JSEND
149 lines to indent...
100
50 lines to indent... 
150 lines indented     var a = [
      'a',/^STARTTEST
'e',
  'f',
  'g',
  'h',
  'i'
];

// 10
var a,
    b,
    c,
    d,
    e,
    f,
    g,
    h,
    i;
JSEND

STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d
:1;/start of AUTO/,$wq! test.out
ENDTEST



:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2L, 61C written:set ff& cpo+=A



/ENDTEST/+-1
:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
221 fewer lines5 *9 *c
  'd
  'e',
  'f',
  'g',
  'h',
  'i'];// 10var a
    b
    c
    d
    e,
    f,
    g,
    h,    i;JSEND:1;/start of AUTO/,$wq! test.out
"test.out" [New] 2062L, 19815C written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test3 = test61; then \
#	  if diff test.out test3.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test3.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test3.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test4.failed test.ok test.out X* viminfo
cp test4.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test4.in
[?1h="test4.in" 34 lines, 960 charactersTest for autocommand that changes current buffer on BufEnter event.
Check if modelines are interpreted for the correct buffer.

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo
:au BufEnter Xxx brew
/start of
:.,/end of/w! Xxx   " write test file Xxx
:set ai modeline modelines=3
:sp Xxx" split to Xxx, autocmd will do :brew
G?this is a
othis should be auto-indented^[
:" Append text with autoindent to this file
:au! BufEnter Xxx
:buf Xxx" go to Xxx, no autocmd anymore
G?this is a
othis should be in column 1^[:wq " append text without autoindent to Xxx
G:r Xxx" include Xxx in the current file
:set fo+=r" issue #57 do not move cursor on <c-o> when autoindent is sset
Go# abcdef^[2hi
^Od0^[o# abcdef^[2hi^Od0^[::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for autocommand that changes current buffer on BufEnter event./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 20 lines, 678 characters written:set ff& cpo+=A
/ENDTEST


:?startstart?,$w! test.out
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo
:au BufEnter Xxx brew
/start of


startstart
start of test file Xxx
:.,/end of/w! Xxx   " write test file Xxx
"Xxx" [New] 7L, 124C written:set ai modeline modelines=3
:sp Xxx             " split to Xxx, autocmd will do :brew
"Xxx" 7L, 124CTest for autocommand that changes current buffer on BufEnter event.
Check if modelines are interpreted for the correct buffer.STARTTESTo small.vim:set nocompatible viminfo+=nviminfo
:au BufEnter Xxx brew/start of.,/end of/w!" write test file Xxx
:set ai modeline modelines=3:sp Xxx    " split to Xxx, autocmd will do :brew
test4.in                                                                        :set fo+=rssue #57 do not move cursor on <c-o> when autoindent is ssetGo# abcdef^[2hi
^Od0^[o# abcdef^[2hi^Od0^[:
:?startstart?,$w! test.outqa!ENDTESTstartstart of test file Xxx
test4.in                                                                        test4.in" line 1 of 34 --2%-- col 1:qa!ENDTESTstartstart
start of test file Xxx
vim: set noai :        this is a test
        this is a test
        this is a test        this is a testend of test file Xxx?this is a
-- INSERT --        this should be auto-indented[+][+]
end of test file Xxx:                   " Append text with autoindent to this file
:au! BufEnter Xxx
:buf Xxx            " go to Xxx, no autocmd anymore
"Xxx" 7L, 124Cstart of test file Xxx
vim: set noai :
        this is a test
        this is a test
        this is a test

end of test file Xxx~~~~
Xxx         ?this is a
-- INSERT --this should be in column 1[+]:wq " append text without autoindent to Xxx
"Xxx8L, 151C written:au BufEnter Xxx brew/start of:.,/end of/w! Xxx   " write test file Xxx
:set ai modeline modelines=3
:sp Xxx             " split to Xxx, autocmd will do :brew
G?this is aothis should be auto-indented^[
:                   " Append text with autoindent to this file
:au! BufEnter Xxx
:buf Xxx" go to Xxx, no autocmd anymore
G?this is a
othis should be in column 1^[:wq " append text without autoindent to XxxG:r Xxx   nclude Xxx in the current file:set fo+=r" issue #57 do not move cursor on <c-o> when autoindent is ssetGo# abcdef^[2hi^Od0^[o# abcdef^[2hi^Od0^[:
:?startstart?,$w! test.out
:qa!ENDTESTstarstart of test file Xxx






vim: set noai :this is a testthis is a testthis is a testthis is a testthis should be auto-indented
end of test file Xxx
:r Xxx             " include Xxx in the current file
"Xxx" 8L, 151C
start of test file Xxx
:set fo+=r          " issue #57 do not move cursor on <c-o> when autoindent is 

set
:au! BufEnter Xxx






vim: set noai :this is a testthis is a testthis is a testthis is a test
this should be in column 1
end of test file Xxx

-- INSERT --
# abcdef
-- INSERT --
-- (insert) --
# defINSERT --defod
-- INSERT --
# abcdef
-- INSERT --
-- (insert) --
-- INSERT --def:d
::?startstart?,$w! test.out
"test.out" [New] 20L, 330C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test4 = test61; then \
#	  if diff test.out test4.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test4.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test4.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test5.failed test.ok test.out X* viminfo
cp test5.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test5.in
[?1h="test5.in" 29 lines, 949 charactersTest for autocommand that deletes the current buffer on BufLeave event.
Also test deleting the last buffer, should give a new, empty buffer.

STARTTEST
:so small.vim
:au BufLeave Xxx bwipe
/start of
:.,/end of/w! Xxx" write test file Xxx
:sp Xxx" split to Xxx
:bwipe" delete buffer Xxx, now we're back here
G?this is a
othis is some more text^[
:" Append some text to this file
:?start?,$w! test.out" Write current file contents
:bwipe test.out" delete alternate buffer
:au bufleave test5.in bwipe
:bwipe!" delete current buffer, get an empty one
ithis is another test line^[:w >>test.out
:" append an extra line to the output file
:qa!
ENDTEST

start of test file Xxx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for autocommand that deletes the current buffer on BufLeave event./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 16 lines, 664 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:au BufLeave Xxx bwipe
/start of
:.,/end of/w! Xxx               " write test file Xxx
"Xxx" [New File] 7 lines, 124 characters written:sp Xxx                         " split to Xxx
"Xxx" 7 lines, 124 charactersstart of test file Xxxvim: set noai :this is a test
        this is a test
        this is a test
        this is a test
end of test file Xxx~~~~
Xxx                                                                             ?start?,$w! test.outWrite current file contentsbwipe test.out      delete alternate bufferau bufleave test5.in bwipebwipe!                         " delete current buffer, get an empty one
ithis is another test line^[:w >>test.out:                               " append an extra line to the output file
:qa!ENDTESTstart of test file Xxx
test5.in                                                                        :bwipe                          " delete buffer Xxx, now we're back here
Test for autocommand that deletes the current buffer on BufLeave event.
Also test deleting the last buffer, should give a new, empty buffer.STARTTEST:so small.vim:au BufLeave Xxx bwipe
/start of:.,/end of/w! Xxx" write test file Xxx
:sp Xxx" split to Xxx
:bwipe" delete buffer Xxx, now we're back here
G?this is a
othis is some more text^[                    Append some text to this file
:?start?,$w! test.outWrite current file contents
:bwipe test.out                 " delete alternate buffer
:au bufleave test5.in bwipe:bwipe!                         " delete current buffer, get an empty one
ithis is another test line^[:w >>test.out   " append an extra line to the output file
:qa!ENDTESTstart of test file Xxx"test5.in" line 23 of 29 --79%-- col 1





vim: set noai :this is a testthis is a testthis is a testthis is a test
end of test file Xxx
?this is a

this is some more text
end of test file Xxx
:                               " Append some text to this file
:?start?,$w! test.out           " Write current file contents
"test.out" [New File] 8 lines, 147 characters written:bwipe test.out                 " delete alternate buffer
:au bufleave test5.in bwipe
:bwipe!                         " delete current buffer, get an empty one
Error detected while processing BufLeave Auto commands for "test5.in":
E89: No write since last change for buffer 1 (add ! to override)

Press ENTER or type command to continue~~~~~~~~~~~~~
~~~~~~~~~this is another test line:w >>test.out
"test.out" 1 line, 26 characters appended:                               " append an extra line to the output file
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test5 = test61; then \
#	  if diff test.out test5.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test5.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test5.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test7.failed test.ok test.out X* viminfo
cp test7.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test7.in
[?1h="test7.in" 26 lines, 675 charactersTest for autocommand that changes the buffer list, when doing ":ball".

STARTTEST
:so small.vim
/^start of
A1^[:.,/end of/w! Xxx1   " write test file Xxx1
:sp Xxx1
:close
$r2:.,/end of/w! Xxx2    " write test file Xxx2
:sp Xxx2
:close
$r3:.,/end of/w! Xxx3    " write test file Xxx3
:sp Xxx3
:close
:au BufReadPost Xxx2 bwipe
$r4:ball" open window for all args, close Xxx2
:.,$w! test.out" Write contents of this file
^W^W:w >>test.out" Append contents of second window (Xxx1)
^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!
ENDTEST

start of test file Xxx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for autocommand that changes the buffer list, when doing ":ball"./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 508 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^start of
1:.,/end of/w! Xxx1   " write test file Xxx1
"Xxx1" [New File] 4 lines, 77 characters written:sp Xxx1
"Xxx1" 4 lines, 77 charactersstart of test file Xxx1this is a test
        this is a test
end of test file Xxx~~~~~~~
Xxx1                                                                            closeau BufReadPost Xxx2 bwipe
$r4:ball                 " open window for all args, close Xxx2
:.,$w! test.outWrite contents of this file^W^W:w >>test.outAppend contents of second window (Xxx1)/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx1
test7.in [+]                                                                    :close
Test for autocommand that changes the buffer list, when doing ":ball".STARTTEST:so small.vim/^start of
A1^[:.,/end of/w! Xxx1   " write test file Xxx1
:sp Xxx1
:close
$r2:.,/end of/w! Xxx2    " write test file Xxx2
:sp Xxx2
:close
$r3:.,/end of/w! Xxx3    " write test file Xxx3sp Xxx3
:close:au BufReadPost Xxx2 bwipe$r4:ball       open window for all args, close Xxx2
:.,$w! test.out  Write contents of this filew >>test.out        " Append contents of second window (Xxx1)^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx12:.,/end of/w! Xxx2    " write test file Xxx2
"Xxx2" [New File] 4 lines, 77 characters written:sp Xxx2
"Xxx2" 4 lines, 77 charactersstart of test file Xxx2this is a test
        this is a test
end of test file Xxx~~~~~~~
Xxx2                                                                            closeau BufReadPost Xxx2 bwipe
$r4:ball                 " open window for all args, close Xxx2
:.,$w! test.outWrite contents of this file^W^W:w >>test.outAppend contents of second window (Xxx1)/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx2
test7.in [+]                                                                    :close
Test for autocommand that changes the buffer list, when doing ":ball".STARTTEST:so small.vim/^start of
A1^[:.,/end of/w! Xxx1   " write test file Xxx1
:sp Xxx1
:close
$r2:.,/end of/w! Xxx2    " write test file Xxx2
:sp Xxx2
:close
$r3:.,/end of/w! Xxx3    " write test file Xxx3sp Xxx3
:close:au BufReadPost Xxx2 bwipe$r4:ball       open window for all args, close Xxx2
:.,$w! test.out  Write contents of this filew >>test.out        " Append contents of second window (Xxx1)^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx23:.,/end of/w! Xxx3    " write test file Xxx3
"Xxx3" [New File] 4 lines, 77 characters written:sp Xxx3
"Xxx3" 4 lines, 77 charactersstart of test file Xxx3this is a test
        this is a test
end of test file Xxx~~~~~~~
Xxx3                                                                            closeau BufReadPost Xxx2 bwipe
$r4:ball                 " open window for all args, close Xxx2
:.,$w! test.outWrite contents of this file^W^W:w >>test.outAppend contents of second window (Xxx1)/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx3
test7.in [+]                                                                    :close
Test for autocommand that changes the buffer list, when doing ":ball".STARTTEST:so small.vim/^start of
A1^[:.,/end of/w! Xxx1   " write test file Xxx1
:sp Xxx1
:close
$r2:.,/end of/w! Xxx2    " write test file Xxx2
:sp Xxx2
:close
$r3:.,/end of/w! Xxx3    " write test file Xxx3sp Xxx3
:close:au BufReadPost Xxx2 bwipe$r4:ball       open window for all args, close Xxx2
:.,$w! test.out  Write contents of this filew >>test.out        " Append contents of second window (Xxx1)^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!ENDTESTstart of test file Xxx3:au BufReadPost Xxx2 bwipe
4:ball                 " open window for all args, close Xxx2
"Xxx1"4 lines, 77 characters

"Xxx2" 4 lines, 77 characters

Press ENTER or type command to continue:.,$w! test.out          " Write contents of this file
"test.out" [New File] 4 lines, 77 characters written

Press ENTER or type command to continue:close
:au BufReadPost Xxx2 bwipe
$r4:ball" open window for all args, close Xxx2
:.,$w! test.out" Write contents of this file
^W^W:w >>test.out" Append contents of second window (Xxx1)
^W^W:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!
ENDTEST

start of test file Xxx4
test7.in [+]                                                                    start of test file Xxx1this is a testthis is a test
end of test file Xxx
~
~
~
~
~
~
~
Xxx1                                                                            
test7.in [+]                                                                    Xxx1                                                                            :w >>test.out        " Append contents of second window (Xxx1)
"test.out" 4 lines, 77 characters appendedtest7.in [+]                                                                    Xxx1                                                                            :/^start of/,$w >>test.out   " Append contents of last window (this file)
search hit BOTTOM, continuing at TOP"test.out" 4 lines, 77 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test7 = test61; then \
#	  if diff test.out test7.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test7.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test7.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test8.failed test.ok test.out X* viminfo
cp test8.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test8.in
[?1h="test8.in" 46 lines, 1236 charactersTest for BufWritePre autocommand that deletes or unloads the buffer.
Test for BufUnload autocommand that unloads all other buffers.

STARTTEST
:so small.vim
:au BufWritePre Xxx1 bunload
:au BufWritePre Xxx2 bwipe
/^start of
A1^[:.,/end of/w! Xxx1  " write test file Xxx1
$r2:.,/end of/w! Xxx2   " write test file Xxx2
:e! Xxx2" edit Xxx2
:bdel test8.in" delete this file from the buffer list
:e Xxx1" edit Xxx1
:w" write it, will unload it and give an error msg
:w! test.out" Write contents of this file
:e! Xxx2" start editing Xxx2
:bwipe test.out" remove test.out from the buffer list
:w" write it, will delete the buffer and give an error msg:w >>test.out" Append contents of this file
:au! BufWritePre
:func CloseAll()
  let i = 0
  while i <= bufnr('$'):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for BufWritePre autocommand that deletes or unloads the buffer./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 37 lines, 1054 characters written:set ff& cpo+=A
/ENDTEST


















if i != bufnr('%') && bufloaded(i)exe  i . "bunload"
    endif
    let i += 1
  endwhile
endfunc
:func WriteToOut()
  edit! test.out
  $put ='VimLeave done'
  write
endfunc
:set viminfo='100,nviminfo
:au BufUnload * call CloseAll()
:au VimLeave * call WriteToOut()
:e small.vim
:sp mbyte.vim
:q
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:au BufWritePre Xxx1 bunload
:au BufWritePre Xxx2 bwipe
/^start of

start of Xxx1
:.,/end of/w! Xxx1  " write test file Xxx1
"Xxx1" [New File] 3 lines, 31 characters written2:.,/end of/w! Xxx2   " write test file Xxx2
"Xxx2" [New File] 3 lines, 31 characters written:e! Xxx2                " edit Xxx2
"Xxx2" 3 lines, 31 charactersstart of Xxx2
        testend of Xxx~~~~~~~~~~~~~~~~~~
~~:bdel test8.in^I^I" delete this file from the buffer list
:e Xxx1                 " edit Xxx1
"Xxx1" 3 lines, 31 characters1
:w                      " write it, will unload it and give an error msg
"Xxx2"3 lines, 31 characters

E203: Autocommands deleted or unloaded buffer to be written

Press ENTER or type command to continue:w! test.out            " Write contents of this file
"test.out" [New File] 3 lines, 31 characters written

Press ENTER or type command to continue:e! Xxx2                " start editing Xxx2
"Xxx2" 3 lines, 31 charactersstart of Xxx2test
end of Xxx"Xxx2" 3 lines, 31 characters:bwipe test.out         " remove test.out from the buffer list
:w                      " write it, will delete the buffer and give an error ms

g"Xxx1"3 lines, 31 characters
E203: Autocommands deleted or unloaded buffer to be written

Press ENTER or type command to continue:w >>test.out           " Append contents of this file
"test.out" 3 lines, 31 characters appended

Press ENTER or type command to continue:au! BufWritePre
start of Xxx1test
end of Xxx:func CloseAll()

:    let i = 0

:    while i <= bufnr('$')

:        if i != bufnr('%') && bufloaded(i)

:            exe  i . "bunload"

:          endif

:        let i += 1

:      endwhile

:  endfunc
start of Xxx1test
end of Xxx
~
~
~
~
~:func WriteToOut()

:    edit! test.out

:    $put ='VimLeave done'

:    write

:  endfunc
start of Xxx1test
end of Xxx
~:set viminfo='100,nviminfo
:au BufUnload * call CloseAll()
:au VimLeave * call WriteToOut()
:e small.vim
Error detected while processing function CloseAll:

line    4:

E16: Invalid range: 0bunload

"small.vim" 1 line, 1 character

Press ENTER or type command to continue:sp mbyte.vim
"mbyte.vim" 0 lines, 0 characters~
~
~mbyte.vim                                                                       small.vim                                                                       "mbyte.vim" 0 lines, 0 characters:q
Error detected while processing function CloseAll:

line    4:

E16: Invalid range: 0bunload

"test.out" 6 lines, 62 characters

"test.out" 7 lines, 76 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test8 = test61; then \
#	  if diff test.out test8.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test8.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test8.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test9.failed test.ok test.out X* viminfo
cp test9.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test9.in
[?1h="test9.in" 12 lines, 255 charactersTest for Bufleave autocommand that deletes the buffer we are about to edit.

STARTTEST
:so small.vim
:au BufLeave test9.in bwipe yy
:e yy
:/^start of/,$w! test.out      " Write contents of this file
:qa!
ENDTEST

start of test file xx
end of test file xx
~
~
~
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for Bufleave autocommand that deletes the buffer we are about to edit./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 117 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:au BufLeave test9.in bwipe yy
:e yy
E143: Autocommands unexpectedly deleted new buffer yy:/^start of/,$w! test.out      " Write contents of this file
"test.out" [New File] 2 lines, 42 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test9 = test61; then \
#	  if diff test.out test9.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test9.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test9.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test14.failed test.ok test.out X* viminfo
cp test14.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test14.in
[?1h="test14.in" 99 lines, 1606 charactersTests for "vaBiB", end could be wrong.
Also test ":s/pat/sub/" with different ~s in sub.
Also test for ^Vxff and ^Vo123 in Insert mode.
Also test "[m", "]m", "[M" and "]M"
Also test search()

STARTTEST
:so small.vim
/Start cursor here
vaBiBD:?Bug?,/Piece/-2w! test.out
/^- Bug
:s/u/~u~/
:s/i/~u~/
:s/o/~~~/
:.w >>test.out
:if has("ebcdic")
: let tt = "o\<C-V>193\<C-V>xc2\<C-V>o303 \<C-V>90a\<C-V>xfg\<C-V>o578\<Esc>"
:else
: let tt = "o\<C-V>65\<C-V>x42\<C-V>o103 \<C-V>33a\<C-V>xfg\<C-V>o78\<Esc>"
:endif
:exe "normal " . tt
:unlet tt
:.w >>test.out:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for "vaBiB", end could be wrong./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 56 lines, 1141 characters written:set ff& cpo+=A
/ENDTEST:$put =@/
/^substitute
:keeppatterns s/asdf/xyz/
:$put =@/
/^substitute
Y:$put =@0
/bar /e
:$put =@0
-:keeppatterns /xyz
0dn:/^search()/,$w >>test.out
:qa!
ENDTEST

- Bug in "vPPPP" on this text (Webb):{cmd;{cmd;    /* <-- Start cursor here */{}}}
:so! Xdotest
:so small.vim
/Start cursor here
{ 
                        cmd;    /* <-- Start cursor here */ 
                        { 
                        } 
                                cmd; 
                }


6 fewer lines        }Piece of Java{        tt m1 {                t1;e1:?Bug?,/Piece/-2w! test.out
"test.out" [New File] 3 lines, 44 characters written/^- Bug
search hit BOTTOM, continuing at TOP:s/u/~u~/
:s/i/~u~/
uuun "vPPPP" on this text (Webb):
:s/o/~~~/
uuuuuuuuun this text (Webb):
:.w >>test.out
"test.out" 1 line, 48 characters appended:if has("ebcdic")

:  : let tt = "o\<C-V>193\<C-V>xc2\<C-V>o303 \<C-V>90a\<C-V>xfg\<C-V>o578\<Esc>

"
:  :else

:  : let tt = "o\<C-V>65\<C-V>x42\<C-V>o103 \<C-V>33a\<C-V>xfg\<C-V>o78\<Esc>"

:  :endif
:$put =@/
/^substitute
:keeppatterns s/asdf/xyz/
:$put =@/
/^substitute:exe "normal " . tt
ABC !a^Og^G8:unlet tt
:.w >>test.out
"test.out" 1 line, 11 characters appended:set vb
/^Piece
{A:.w >>test.out
"test.out" 1 line, 10 characters appended

tt m2 {{B
:.w >>test.out
"test.out" 1 line, 10 characters appended



t2;} e2tt m3 {{C
:.w >>test.out
"test.out" 1 line, 10 characters appended{DC:.w >>test.out
"test.out" 1 line, 11 characters appended{EA:.w >>test.out
"test.out" 1 line, 11 characters appended{F:.w >>test.out
"test.out" 1 line, 3 characters appended}G e1:.w >>test.out
"test.out" 1 line, 7 characters appended





if (x){t3;}} e3}H e3
:.w >>test.out
"test.out" 1 line, 7 characters appended
}}I
:.w >>test.out
"test.out" 1 line, 3 characters appended}JH e3:.w >>test.out
"test.out" 1 line, 8 characters appended}K e2:.w >>test.out
"test.out" 1 line, 7 characters appended{LF:.w >>test.out
"test.out" 1 line, 4 characters appended:"
/^foobar


foobar
:let startline = line('.')
:call search('foobar', 'c')
:call append(line('$'), line('.') - startline)


:call search('^$', 'c')
:call append(line('$'), line('.') - startline)
:call search('^$', 'bc')
:call append(line('$'), line('.') - startline)
/two



substitute foo asdf

one two
:call search('.', 'c')
:call append(line('$'), getline('.')[col('.') - 1:])
:"
/^substitute
search hit BOTTOM, continuing at TOP:s/foo/bar/
bar
:$put =@/






search()
0
1
1
two
foo
/^substitute
search hit BOTTOM, continuing at TOP:keeppatterns s/asdf/xyz/
xyz:$put =@/

^substitute
/^substitute
search hit BOTTOM, continuing at TOP:$put =@0

substitute bar xyz
/bar /e
:$put =@0

substitute bar xyz

:keeppatterns /xyz

/bar /exyz:/^search()/,$w >>test.out
search hit BOTTOM, continuing at TOP
"test.out" 9 lines, 58 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test14 = test61; then \
#	  if diff test.out test14.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test14.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test14.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test15.failed test.ok test.out X* viminfo
cp test15.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test15.in
[?1h="test15.in" 136 lines, 2246 charactersTests for :right on text with embedded TAB.
Also test formatting a paragraph.
Also test undo after ":%s" and formatting.

STARTTEST
:so small.vim
:set tw=65

:/^\s*test for :left/,/^\s*test for :center/ left
:/^\s*test for :center/,/^\s*test for :right/ center
:/^\s*test for :right/,/^xxx/-1 right
:set fo+=tcroql tw=72
/xxxxxxxx$
0gq6kk
:set nocp viminfo+=nviminfo
:" undo/redo here to make the next undo only work on the following changes
u^R
:map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq
/^aa
ggu
:?test for :left?,$w! test.out
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :right on text with embedded TAB./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 401 characters written:set ff& cpo+=A
/ENDTEST

:so! Xdotest
:so small.vim
:set tw=65

test for :left
:/^\s*test for :left/,/^\s*test for :center/ left
search hit BOTTOM, continuing at TOPtest for :left:/^\s*test for :center/,/^\s*test for :right/ center
:/^\s*test for :right/,/^xxx/-1 right
:set fo+=tcroql tw=72
/xxxxxxxx$
asxa;ofaaxxxoikeasdfaqweraxxxoikeaaxxxoikeyfaaxxxoikeydfaaxxxoikeysdfaaxxxoikeyasdfaaxxxoikeyxasdfaaxxxoikeyasxxdfaaxxxoikeyasxa;ofaaxxxoikeyasdfaqweraxxxoikey

xxxxx xx xxxxxx
xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xx
xxxxxxxxxxxxxxxxxx xxxxx xxxx, xxxx xxxx xxxx xxxx xxx xx xx
xx xxxxxxx. xxxx xxxx.

> xx xx, xxxx xxxx xxx xxxx xxx xxxxx xxx xxx xxxxxxx xxx xxxxx
> xxxxxx xxxxxxx: xxxx xxxxxxx, xx xxxxxx xxxx xxxxxxxxxx

aa aa aa aa
bb bb bb bb
cc cc cc cc

 xx xxxxxx xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xxxx xxxxxxx.
xxxx xxxx.xxxxxxx: xxxx xxxxxxx, xx xxxx xxxxxxx~
:set nocp viminfo+=nviminfo
:" undo/redo here to make the next undo only work on the following changes
1 more line; before #1  1 seconds ago0gq6kk
:set nocp viminfo+=nviminfo
:" undo/redo here to make the next undo only work on the following changes
u^R
:map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq
/^aa
ggu
:?test for :left?,$w! test.out
:qa!
ENDTESTtest for :leftaafaadfaasdfaaasdfaaxasdfaa
asxxdfaatest for :centeraafaafd asdf1 line less; after #1  1 seconds agotest for :lefta      afa    adfa      asdfaaasdfa           axasdfaa                test for :center  aa  fa        afd asdf
:map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq
/^aa
asxxdfaaxxxoikeasxa;ofaaxxxoikeasdfaqweraxxxoikeaaxxxoikeyfaaxxxoikeydfaaxxxoikeysdfaaxxxoikeyasdfaaxxxoikeyxasdfaaxxxoikeyasxxdfaaxxxoikeyasxa;ofaaxxxoikeyasdfaqweraxxxoikey

xxxxx xx xxxxxx xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xx
xxxxxxxxxxxxxxxxxx xxxxx xxxx, xxxx xxxx xxxx xxxx xxx xx xx xx xxxxxxx.
xxxx xxxx.

> xx xx, xxxx xxxx xxx xxxx xxx xxxxx xxx xxx xxxxxxx xxx xxxxx xxxxxx
> xxxxxxx: xxxx xxxxxxx, xx xxxxxx xxxx xxxxxxxxxx

aa aa aa aa
bb bb bb bb
cc cc cc cc


:.,.+2s/^/x/
3 substitutions on 3 linesxaa aa aa aa
xbb bb bb bb
xcc cc cc cc
:set tw=3



3 more lines
aaaaaa3 more lines
3 fewer lines; before #2  0 seconds agoaa aa aa aa
bb bb bb bb
cc cc cc cc~
:?test for :left?,$w! test.out
"test.out"[New] 111L, 2304C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test15 = test61; then \
#	  if diff test.out test15.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test15.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test15.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test19.failed test.ok test.out X* viminfo
cp test19.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test19.in
[?1h="test19.in" 33 lines, 692 charactersTests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set.
Also test that dv_ works correctly

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=^Vx7f t_kb=^Vx08
/some
r:set noexpandtab
/other
r
:" Test replacing with Tabs and then backspacing to undo it
0wR^H^H^H^[
:" Test replacing with Tabs
0wR^[
:" Test that copyindent works with expandtab set
:set expandtab smartindent copyindent ts=8 sw=8 sts=8
o{
x^[:set nosol
/Second line/
fwdv_:?^start?,$w! test.out
:qa!:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 19 lines, 447 characters written:set ff& cpo+=A
/ENDTEST
ENDTEST

:so! Xdotest
:so small.vim
:set smarttab expandtab ts=8 sw=4
:" make sure that backspace works, no matter what termcap is used
:set t_kD=^^? t_kb=^^H
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=^Vx7f t_kb=^Vx08
/some
r:set noexpandtab
/other
r
:" Test replacing with Tabs and then backspacing to undo it
0wR^H^H^H^[
:" Test replacing with Tabs
0wR^[
:" Test that copyindent works with expandtab set
:set expandtab smartindent copyindent ts=8 sw=8 sts=8
o{
x^[:set nosol
/Second line/
fwdv_:?^start?,$w! test.out
:qa!
ENDTEST

/some


start textsome test text    ome test text
:set noexpandtab
/other


test textother test text    ther test text
a cde
:" Test replacing with Tabs and then backspacing to undo it

    
f ghi
:" Test replacing with Tabs

         hi
test text
:" Test that copyindent works with expandtab set
:set expandtab smartindent copyindent ts=8 sw=8 sts=8


{x
:set nosol
/Second line/

Second line beginning with whitespace
  with whitespace
:?^start?,$w! test.out
"test.out" [New File] 10 lines, 121 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test19 = test61; then \
#	  if diff test.out test19.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test19.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test19.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test20.failed test.ok test.out X* viminfo
cp test20.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test20.in
[?1h="test20.in" 28 lines, 398 charactersTests Blockwise Visual when there are TABs before the text.
First test for undo working properly when executing commands from a register.
Also test this in an empty buffer.

STARTTEST
:so tiny.vim
G0"ay$k@au
:new
@auY:quit!
GP
/start here$
"by$^Vjjlld
/456$
^Vjj"bP
:/56$/,$-1w! test.out
:qa!
ENDTEST

123456
234567
345678

test text test tex start here:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests Blockwise Visual when there are TABs before the text./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 11 lines, 107 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so tiny.vim





some texttest text
test text

Ox^[jAy^[kddx
yy
Ox^[jAy^[kdd

2 changes; before #1  0 seconds ago
:new
~~~~~~~~~~
[No Name]                                                                       123456
234567
345678test text test tex start here
                some texttest
test textOx^[jAy^[kdd
test20.in                                                                       x[+]
y
~1 line less; before #1  0 seconds ago   :quit!
:so tiny.vim
G0"ay$k@au
:new
@auY:quit!
GP
/start here$
"by$^Vjjlld
/456$
^Vjj"bP
:/56$/,$-1w! test.out
:qa!
ENDTEST123456
234567
345678test text test tex start heresome
         test text
test textOx^[jAy^[kdd
Ox^[jAy^[kdd
/start here$
search hit BOTTOM, continuing at TOPset tat rt hereextex/456$
search hit BOTTOM, continuing at TOP4
2345
345start here56
234start here67
345start here78:/56$/,$-1w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 10 lines, 106 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test20 = test61; then \
#	  if diff test.out test20.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test20.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test20.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test22.failed test.ok test.out X* viminfo
cp test22.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test22.in
[?1h="test22.in" 13 lines, 197 charactersTests for file with some lines ending in CTRL-M, some not^M
^M
STARTTEST
:set ta tx
:e!
:$-3,$w! test.out
:qa!
ENDTEST

this lines ends in a^M
this one doesn't
this one does^M
and the last one doesn't
~
~
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for file with some lines ending in CTRL-M, some not^M/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 4 lines, 38 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:set ta tx
:e!
"test22.in" 13 lines, 197 characters:$-3,$w! test.out
"test.out" [New File] 4 lines, 79 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test22 = test61; then \
#	  if diff test.out test22.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test22.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test22.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test23.failed test.ok test.out X* viminfo
cp test23.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test23.in
[?1h="test23.in" 15 lines, 282 charactersTests for complicated + argument to :edit command

STARTTEST
:$-1w! Xfile1
:$w! Xfile2
:edit +1|s/|/PIPE/|w Xfile1| e Xfile2|1 | s/\//SLASH/|w
:w! test.out
:e Xfile1
:w >> test.out
:qa!
ENDTEST

The result should be in Xfile1: "fooPIPEbar", in Xfile2: "fooSLASHbar"
foo|bar
foo/bar
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for complicated + argument to :edit command/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 7 lines, 125 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:$-1w! Xfile1
"Xfile1" [New File] 1 line, 8 characters written:$w! Xfile2
"Xfile2" [New File] 1 line, 8 characters written:edit +1|s/|/PIPE/|w Xfile1| e Xfile2|1 | s/\//SLASH/|w
"Xfile1" 1 line, 8 characters

foo|bar

"Xfile1" 1 line, 11 characters written

"Xfile2" 1 line, 8 characters

foo/bar

"Xfile2" 1 line, 12 characters written

Press ENTER or type command to continue:w! test.out
"test.out" [New File] 1 line, 12 characters written

Press ENTER or type command to continue:e Xfile1
"Xfile1" 1 line, 11 charactersfooPIPEbar
~
~
~
~
~
~~~~~
~~~~"Xfile1" 1 line, 11 characters:w >> test.out
"test.out" 1 line, 11 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test23 = test61; then \
#	  if diff test.out test23.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test23.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test23.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test24.failed test.ok test.out X* viminfo
cp test24.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test24.in
[?1h="test24.in" 89 lines, 1301 charactersTests for regexp with backslash and other special characters inside []
Also test backslash for hex/octal numbered character.

STARTTEST
:set nocompatible viminfo+=nviminfo
/[\x]
x/[\t\]]
x/[]y]
x/[\]]
x/[y^]
x/[$y]
x/[\x61]
x/[\x60-\x64]
xj0/[\x785]
x/[\o143]
x/[\o140-\o144]
x/[\o417]
x/\%x42
x/\%o103
x/[\x00]
x
:s/[\x00-\x10]//g:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with backslash and other special characters inside []/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 51 lines, 519 characters written:set ff& cpo+=A
/ENDTEST:s/^\(\h\w*\%(->\|\.\)\=\)\+=/YY/

:s/aaa/xyz/

:s/~/bcd/

:s/~\+/BB/
:"
:?start?,$w! test.out
:qa!
ENDTEST

start
test \text test text
test    text test text
test text ]test text
test ]text test text
test text te^st text
test te$xt test text
test taext test text  x61
test tbext test text  x60-x64
test 5text test text  x78 5
:so! Xdotest
:set nocompatible viminfo+=nviminfo
/[\x]
text test text/[\t\]]
text test tex/[]y]
test text/[\]]
text test text/[y^]
st text/[$y]
xt test text/[\x61]
ext test text  x61/[\x60-\x64]
ext test text  x60-x64
/[\x785]
text test text  x78 5/[\o143]

testc text test text  o143 text test text  o143
/[\o140-\o144]

tesdt text test text  o140-o144t text test text  o140-o14
/[\o417]

test7 text test text  o41 7 text test text  o41 7
/\%x42

test text tBest text  \%x42est text  \%x42
/\%o103

test text teCst text  \%o103st text  \%o103
/[\x00]

test text ^@test text  [\x00]test text  [\x00]
test te^@xt t^Dest t^Pext  [\x00-\x10]
:s/[\x00-\x10]//g
3 substitutions on 1 linext test text  [\x00-\x10]
test \xyztext test text  [\x-z]
:s/[\x-z]\+//
text test text  [\x-z]
test text tev\uyst text  [\u-z]
:s/[\u-z]\{2,}//
st text  [\u-z]
xx aaaaa xx a
:s/\(a\)\+//
 xx 
xx aaaaa xx a
:s/\(a*\)\+//

xx aaaaa xx a
:s/\(a*\)*//

xx aaaaa xx
:s/\(a\)\{2,3}/A/
Aaa xx
xx aaaaa xx
:s/\(a\)\{-2,3}/A/
Aaaa x
xx aaa12aa xx
:s/\(a\)*\(12\)\@>/A/
Aaa xx
xx foobar xbar xx
:s/\(foo\)\@<!bar/A/
A xx
xx an file xx
:s/\(an\_s\+\)\@<=file/A/
A xx
x= 9;
:s/^\(\h\w*\%(->\|\.\)\=\)\+=/XX/
XX

hh= 77;
:s/^\(\h\w*\%(->\|\.\)\=\)\+=/YY/
YY 77;
aaa
:s/aaa/xyz/
xyz
 
xyz
:s/~/bcd/
bcd
 
bcdbcdbcd
:s/~\+/BB/
BB:"
:?start?,$w! test.out
"test.out" [New] 32L, 586C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test24 = test61; then \
#	  if diff test.out test24.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test24.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test24.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test26.failed test.ok test.out X* viminfo
cp test26.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test26.in
[?1h="test26.in" 44 lines, 750 charactersTest for :execute, :while and :if

STARTTEST
:so small.vim
mt:let i = 0
:while i < 12
:  let i = i + 1
:  if has("ebcdic")
:    execute "normal o" . i . "\047"
:  else
:    execute "normal o" . i . "\033"
:  endif
:  if i % 2
:    normal Ax^V^[
:    if i == 9
:      break
:    endif
:    if i == 5
:      continue
:    else
:      let j = 9
:      while j > 0
:if has("ebcdic"):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for :execute, :while and :if/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 39 lines, 696 characters written:set ff& cpo+=A
/ENDTEST:      let j = 9
:      while j > 0
:if has("ebcdic")
:execute "normal" j . "a" . j . "\x27"
:else
:execute "normal" j . "a" . j . "\x1b"
:endif
:let j = j - 1
:      endwhile
:    endif
:  endif
:  if i == 9
:    if has("ebcdic")
:      execute "normal Az\047"
:    else
:      execute "normal Az\033"
:    endif
:  endif
:endwhile
:unlet i j
:'t,$w! test.out
:qa!
ENDTEST


:so! Xdotest
:so small.vim
:let i = 0
:while i < 12

:  :  let i = i + 1

:  :  if has("ebcdic")

:    :    execute "normal o" . i . "\047"

:    :  else

:    :    execute "normal o" . i . "\033"

:    :  endif

:  :  if i % 2

:    :    normal Ax^^[

:    :    if i == 9

:      :      break

:      :    endif

:    :    if i == 5

:      :      continue

:      :    else

:      :      let j = 9

:      :      while j > 0

::        if has("ebcdic")

::          execute "normal" j . "a" . j . "\x27"

::        else

::          execute "normal" j . "a" . j . "\x1b"

::        endif

::        let j = j - 1

::      endwhile

:      :    endif

:    :  endif

:  :  if i == 9

:    :    if has("ebcdic")

:      :      execute "normal Az\047"

:      :    else

:      :      execute "normal Az\033"

:      :    endif

:    :  endif

:  :endwhile
:  endif
:  if i == 9
:    if has("ebcdic")
:      execute "normal Az\047"
:    else
:      execute "normal Az\033"
:    endif
:  endif
:endwhile
:unlet i j
:'t,$w! test.out
:qa!
ENDTEST

1x999999999888888887777777666666555554444333221
2
3x999999999888888887777777666666555554444333221
4
5x
6
7x999999999888888887777777666666555554444333221
8
9x
:unlet i j
:'t,$w! test.out
"test.out" [New File] 10 lines, 159 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test26 = test61; then \
#	  if diff test.out test26.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test26.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test26.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test28.failed test.ok test.out X* viminfo
cp test28.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test28.in
[?1h="test28.in" 23 lines, 364 charactersTest for sourcing a file with CTRL-V's at the end of the line

STARTTEST
:/firstline/+1,/lastline/-1w! Xtestfile
:so Xtestfile
Gmm__1^[^[__2^[__3^[^[__4^[__5^[:'m,$s/^@/0/g
:'m,$w! test.out
:qa!
ENDTEST

firstline
map __1 afirst
map __2 asecond
map __3 athird
map __4 afourth
map __5 afifth
map __1 asd^V
map __2 asd^V^V
map __3 asd^V^V
map __4 asd^V^V^V
map __5 asd^V^V^V
lastline:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for sourcing a file with CTRL-V's at the end of the line/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 114 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:/firstline/+1,/lastline/-1w! Xtestfile
"Xtestfile" [New File] 10 lines, 148 characters written:so Xtestfile

sd
map __2 asd^[secondd  sd^[^[  sd^@map __5 asd^@fifth
:'m,$s/^@/0/g
0map __5 asd0fifth:'m,$w! test.out
"test.out" [New File] 2 lines, 45 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test28 = test61; then \
#	  if diff test.out test28.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test28.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test28.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test29.failed test.ok test.out X* viminfo
cp test29.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test29.in
[?1h="test29.in" 230 lines, 4261 charactersTest for joining lines and marks in them
 in compatible and nocompatible modes
 and with 'joinspaces' set or not
 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+=jj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces
j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptionss+=j
j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible
j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjd/STARTTEST/-2
ENDTEST

firstline
asdfasdf.
asdf:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for joining lines and marks in them/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 11 lines, 478 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo
:set nojoinspaces
:set cpoptions-=j
/firstline/

/^STARTTEST/-1
+-1
37 fewer linesSTARTTEST
/^{/+1more linesasdfasdf.
asdfasdf
asdfasdf. asdf
asdfasdf. asdf
asdfasdf.       asdf
asdfasdf.       asdf
asdfasdf. asdf
asdfasdf. asdf
asdfasdff asdf
asdfasdf asdf
asdfasdf  asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
zx cvn.
zx cv


as dfg?
hjkl iop!
ert
hjkl i. as dfg? hjkl iop! ert
zx cvn.
as dfg?hjkl iop! ert er
zx cvrnnop:set cpoptions+=j

zx cv
hjkl i. as dfg? hjkl iop! ertSTARTTEST ert er
zx cvrnnop:set cpoptions-=j joinspaces



37 more linesasdfasdf.
asdf
asdfasdf.  asdf
asdfasdf.  asdf
asdfasdf.       asdf
asdfasdf.       asdf
asdfasdf. asdf
asdfasdf. asdf
asdfasdff asdf
asdfasdf asdf
asdfasdf  asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
zx cvn.
zx cv

as dfg?
hjkl iop!
hjkl i.  as dfg?  hjkl iop!  ert
zx cvn.
as dfg?  ert  e
zx cvennop


:set cpoptions+=j

zx cv
hjkl iop!
hjkl i.  as dfg? hjkl iop! ertSTARTTEST ert er
zx cvrnnop


:set cpoptions-=j nojoinspaces compatible



37 more linesasdfasdf.
asdf
asdfasdf.  asdf
asdfasdf.  asdf
asdfasdf.       asdf
asdfasdf.       asdf
asdfasdf. asdf
asdfasdf. asdf
asdfasdff asdf
asdfasdf asdf
asdfasdf  asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
asdfasdf asdf
zx cvn..  as dfg? hjkl iop! ertt  a
zx cvn.
/STARTTEST/-2
+-2
4 fewer lines/^STARTTEST

STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 12 lines, 147 characters written:set ff& cpo+=A

/ENDTEST











:set comments=s1:/*,mb:*,ex:*/,://
:set nojoinspaces fo=j
:set backspace=eol,start
:.,+3join
j4J
:.,+2join
j3J
:.,+2join
j3J
:.,+2join
jj3J
ENDTEST

:so! Xdotest
/^{/+1


{
:set comments=s1:/*,mb:*,ex:*/,://
:set nojoinspaces fo=j
:set backspace=eol,start
:.,+3join
/* Make sure the previous comment leader is not removed. */

/* Make sure the previous comment leader is not removed. */


:.,+2join
// Should the next comment leader be left alone? Yes.

// Should the next comment leader be left alone? Yes.


:.,+2join
/* 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.


:.,+2join
if (condition) // Remove the next comment leader! OK, I will.

action();
if (condition) // Remove the next comment leader! OK, I will.

action();

/^STARTTEST



}

STARTTEST
:" Test with backspace set to the non-compatible setting

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 17 lines, 347 characters written:set ff& cpo+=A

/ENDTEST:inoremap <c-u> <left><c-u>
Avim3^U^[
:iunmap <c-u>
Avim4^U^U^[
:" Test with backspace set to the compatible setting
:set backspace= visualbell
A vim5^[A^U^U^[
A vim6^[Azwei^Gu^U^[
:inoremap <c-u> <left><c-u>
A vim7^U^U^[
:set compatible novisualbell
ENDTEST
1 this shouldn't be deleted
2 this shouldn't be deleted
3 this shouldn't be deleted
4 this should be deleted
5 this shouldn't be deleted
6 this shouldn't be deleted
7 this shouldn't be deleted
8 this shouldn't be deleted (not touched yet)

STARTTEST
/^{/+1
:so! Xdotest
:" Test with backspace set to the non-compatible setting
/^\d\+ this
:set cp bs=2
d    vim2:set cpo-=<
:inoremap <c-u> <left><c-u>
d3:iunmap <c-u>

:" Test with backspace set to the compatible setting
:set backspace= visualbell
vim5d vim66    zwei:inoremap <c-u> <left><c-u>
vim7
:set compatible novisualbell
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 21 lines, 356 characters written:set ff& cpo+=A

/ENDTESTj3J
:.,+2join
j3J
:.,+2join
jj3J
j:.,+2join
jj3J
j:.,+5join
j6J
oSome code!^M// Make sure backspacing does not remove this comment leader.^[0i^HH^[
ENDTEST

{

/*
 * Make sure the previous comment leader is not removed.
 */

/*
 * Make sure the previous comment leader is not removed.
 */
:so! Xdotest
/^{/+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



/* Make sure the previous comment leader is not removed.  *//* List:
 * - item1
 *   foo bar baz



/* Make sure the previous comment leader is not removed.  */*   foo bar baz
 * - item2
 *   foo bar baz
:.,+8join
/* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz *//* List:- item1  foo bar baz
 * - item2
/* 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?
:.,+2join


Should the next comment leader be left alone?  Yes.


// Yes.
// Should the next comment leader be left alone?  Yes.* Here the comment leader should be left intact. */
// And so should this one.



:.,+2join
/* Here the comment leader should be left intact. */ // And so should this one.* Here the comment leader should be left intact. */
/* Here the comment leader should be left intact. */ // And so should this one.
:.,+2join
if (condition) // Remove the next comment leader!  OK, I will.

action();
if (condition) // Remove the next comment leader!  OK, I will.

action();


:.,+2join
int i = 7 /* foo *// 3 // comment

;
int i = 7 /* foo *// 3 // comment

;


:.,+5join
># Note that the last character of the ending comment leader (left angle bracket@


># Note that the last character of the ending comment leader (left angle brackett) 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 liness. This comment should retain its comment leader.
># Note that the last character of the ending comment leader (left angle bracket@


># Note that the last character of the ending comment leader (left angle brackett) 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 liness. This comment should retain its comment leader.


Some code!
// Make sure backspacing does not remove this comment leader.
// Make sure backspacing does not remove this comment leader.
}

/^STARTTEST


STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 61 characters written:set ff& cpo+=A

/ENDTEST
:?firstline?+1,$w! test.out

:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
74 fewer lines// 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 brackett) 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 liness. This comment should retain its comment leader.># Note that the last character of the ending comment leader (left angle brackett) 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 liness. This comment should retain its comment leader.

Some code!// Make sure backspacing does not remove this comment leader.
}:?firstline?+1,$w! test.out
"test.out" [New File] 97 lines, 3018 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test29 = test61; then \
#	  if diff test.out test29.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test29.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test29.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test31.failed test.ok test.out X* viminfo
cp test31.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test31.in
[?1h="test31.in" 95 lines, 1832 charactersTest for commands that close windows and/or buffers:
:quit
:close
:hide
:only
:sall
:all
:ball
:buf
:edit

STARTTEST
:so small.vim
GA 1^[:$w! Xtest1
$r2:$w! Xtest2
$r3:$w! Xtest3
:n! Xtest1 Xtest2
A 1^[:set hidden
:" test for working :n when hidden set; write "testtext 2"
:n
:w! test.out
:" test for failing :rew when hidden not set; write "testtext 2 2"
:set nohidden:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for commands that close windows and/or buffers:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 80 lines, 1697 characters written:set ff& cpo+=A
/ENDTEST:" test ":q!" and hidden buffer.
:bw! Xtest1 Xtest2 Xtest3 Xtest4
:sp Xtest1
:wincmd w
:bw!
:set modified
:bot sp Xtest2
:set modified
:bot sp Xtest3
:set modified
:wincmd t
:hide
:q!
:w >>test.out
:q!
:w >>test.out
:q!
:call append(line('$'), "Oh, Not finished yet.")
:w >>test.out
:qa!
ENDTEST

testtext


:so! Xdotest
:so small.vim

1:$w! Xtest1
"Xtest1" [New File] 1 line, 11 characters written2:$w! Xtest2
"Xtest2" [New File] 1 line, 11 characters written3:$w! Xtest3
"Xtest3" [New File] 1 line, 11 characters written:n! Xtest1 Xtest2
"Xtest1" 1 line, 11 characterstesttext 1~~~~~~~~~~~~~~~~~~~~
~~1:set hidden
:" test for working :n when hidden set; write "testtext 2"
:n
"Xtest2" 1 line, 11 characters2:w! test.out
"test.out" [New File] 1 line, 11 characters written:" test for failing :rew when hidden not set; write "testtext 2 2"
:set nohidden
2:rew
E37: No write since last change (add ! to override):w >>test.out
"test.out" 1 line, 13 characters appended:" test for working :rew when hidden set; write "testtext 1 1"
:set hidden
:rew
"Xtest1" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)1 1
:w >>test.out
"test.out" 1 line, 13 characters appended:" test for :all keeping a buffer when it's modified; write "testtext 1 1 1"
:set nohidden
1:sp
Xtest1 [+]                                                                      testtext 1 1 1Xtest1 [+]                                                                      :n Xtest2 Xtest3
"Xtest2" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)2 22:all
"Xtest3" 1 line, 11 characterstesttext 1 1 1
~
~
~
~
~
~
Xtest1 [+]                                                                      testtext 2 2
~
~
~
~
~
Xtest2 [+]                                                                      testtext 3
~
~
~
~
~
~
Xtest3                                                                          :1wincmd w
Xtest1 [+]                                                                      Xtest2 [+]                                                                      :w >>test.out
"test.out" 1 line, 15 characters appended:" test abandoning changed buffer, should be unloaded even when 'hidden' set
:" write "testtext 2 2" twice
:set hidden
1 1:q!
testtext 2 2
~
~
~
~
~
~
~
~
~
~
Xtest2 [+]                                                                      testtext 3
~
~
~
~
~
~
~
~
~
Xtest3                                                                          :w >>test.out
"test.out" 1 line, 13 characters appended:unhide
:w >>test.out
"test.out" 1 line, 13 characters appended:" test ":hide" hides anyway when 'hidden' not set; write "testtext 3"
:set nohidden
2:hide
3~~~:w >>test.out
"test.out" 1 line, 11 characters appended:" test ":edit" failing in modified buffer when 'hidden' not set
:" write "testtext 3 3"
3:e Xtest1
E37: No write since last change (add ! to override):w >>test.out
"test.out" 1 line, 13 characters appended:" test ":edit" working in modified buffer when 'hidden' set; write "testtext 1

"testtext 3 3:set hidden
:e Xtest1
"Xtest1" 1 line, 11 characters1:w >>test.out
"test.out" 1 line, 11 characters appended:" test ":close" not hiding when 'hidden' not set in modified buffer;
:" write "testtext 3 3 3"
:sp Xtest3
"Xtest3" [Modified] line 1 of 1 --100%-- col 1 (file 2 of 2)3 3Xtest3 [+]                                                                      testtext 1Xtest1                                                                          :set nohidden
3:close
E37: No write since last change (add ! to override):w >>test.out
"test.out" 1 line, 15 characters appended:" test ":close!" does hide when 'hidden' not set in modified buffer;
:" write "testtext 1"
3 3:close!
1~~~:w >>test.out
"test.out" 1 line, 11 characters appended:set nohidden
:" test ":all!" hides changed buffer; write "testtext 2 2 2"
:sp Xtest4
"Xtest4" [New File]Xtest4                                                                          testtext 1Xtest1                                                                           4[+]:all!
"Xtest2" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)

"Xtest3" [Modified] line 1 of 1 --100%-- col 1 (file 2 of 2)

Press ENTER or type command to continue:1wincmd w
testtext 2 2 2
~Xtest2 [+]                                                                      testtext 3 3 3 3~3 [+]:w >>test.out
"test.out" 1 line, 15 characters appended:"
:" test ":q!" and hidden buffer.
:bw! Xtest1 Xtest2 Xtest3 Xtest4
"test31.in"95 lines, 1832 characters

4 buffers wiped out

Press ENTER or type command to continue:sp Xtest1
"Xtest1" 1 line, 11 characterstesttext 1
~~
Xtest1                                                                          :w >>test.out
:q!
:w >>test.out
:q!
:call append(line('$'), "Oh, Not finished yet.")
:w >>test.out
:qa!
ENDTESTtesttext
test31.in "Xtest1" 1 line, 11 characters:wincmd w
Xtest1                                                                          test31.in                                                                       :bw!
~~~~~~~~~
~~~:set modified
:bot sp Xtest2
"Xtest2" 1 line, 11 charactersXtest1 [+]                                                                      testtext 2Xtest2                                                                          :set modified
[+]:bot sp Xtest3
"Xtest3" 1 line, 11 characterstesttext 1
~
~
~
~
~
~
Xtest1 [+]                                                                      testtext 2
~
~
~
~
~
Xtest2 [+]                                                                      testtext 3
~
~
~
~
~
~
Xtest3                                                                          :set modified
[+]:wincmd t
Xtest1 [+]                                                                      Xtest3 [+]                                                                      :hide
testtext 2
~
~
~
~
~
~
~
~
~
~
Xtest2 [+]                                                                      testtext 3
~
~
~
~
~
~
~
~
~
Xtest3 [+]                                                                      :q!
3~~~:w >>test.out
"test.out" 1 line, 11 characters appended:q!
E37: No write since last change

E162: No write since last change for buffer "Xtest1"

Press ENTER or type command to continue:w >>test.out
"test.out" 1 line, 11 characters appended

Press ENTER or type command to continue:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test31 = test61; then \
#	  if diff test.out test31.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test31.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test31.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test33.failed test.ok test.out X* viminfo
cp test33.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test33.in
[?1h="test33.in" 34 lines, 616 charactersTest for 'lisp'
If the lisp feature is not enabled, this will fail!

STARTTEST
:so small.vim
:set lisp
/^(defun
=G:/^(defun/,$w! test.out
:q!
ENDTEST

(defun html-file (base)
(format nil "~(~A~).html" base))

(defmacro page (name title &rest body)
(let ((ti (gensym)))
`(with-open-file (*standard-output*
(html-file ,name)
:direction :output
:if-exists :supersede)
(let ((,ti ,title))
(as title ,ti)
(with center:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for 'lisp'/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 5 lines, 63 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:set lisp
/^(defun
22 lines to indent...
23indented   (format nil "~(~A~).html" base))


  (let ((ti (gensym)))
       `(with-open-file (*standard-output*
                 (html-file ,name)
                  :direction :output
                         :if-exists :supersede)
                        (let ((,ti ,title))
              (as title ,ti)
            (with center:/^(defun/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 23 lines, 544 characters written:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test33 = test61; then \
#	  if diff test.out test33.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test33.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test33.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test34.failed test.ok test.out X* viminfo
cp test34.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test34.in
[?1h="test34.in" 87 lines, 1833 charactersTest for user functions.
Also test an <expr> mapping calling a function.
Also test that a builtin function cannot be replaced.
Also test for regression when calling arbitrary expression.

STARTTEST
:so small.vim
:function Table(title, ...)
:  let ret = a:title
:  let idx = 1
:  while idx <= a:0
:    exe "let ret = ret . a:" . idx
:    let idx = idx + 1
:  endwhile
:  return ret
:endfunction
:function Compute(n1, n2, divname)
:  if a:n2 == 0
:    return "fail"
:  endif
:  exe "let g:" . a:divname . " = ". a:n1 / a:n2
:  return "ok"
:endfunction:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for user functions./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 78 lines, 1621 characters written:set ff& cpo+=A
/ENDTEST:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?
:    " Second is here just to prove that this line is correct when not skipping
:    " rhs of &&.
:    $put =(0&&(function('tr'))(1, 2, 3))
:    $put =(1&&(function('tr'))(1, 2, 3))
:catch
:    $put ='!!! Unexpected exception:'
:    $put =v:exception
:endtry
:$-9,$w! test.out
:delfunc Table
:delfunc Compute
:delfunc Expr1
:delfunc Expr2
:delfunc ListItem
:delfunc ListReset
:unlet retval counter
:q!
ENDTEST

here


:so! Xdotest
:so small.vim
:function Table(title, ...)

:  :  let ret = a:title

:  :  let idx = 1

:  :  while idx <= a:0

:    :    exe "let ret = ret . a:" . idx

:    :    let idx = idx + 1

:    :  endwhile

:  :  return ret

:  :endfunction
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?
:    " Second is here just to prove that this line is correct when not skipping
:    " rhs of &&.
:    $put =(0&&(function('tr'))(1, 2, 3))
:    $put =(1&&(function('tr'))(1, 2, 3))
:catch

:function Compute(n1, n2, divname)

:  :  if a:n2 == 0

:    :    return "fail"

:    :  endif

:  :  exe "let g:" . a:divname . " = ". a:n1 / a:n2

:  :  return "ok"

:  :endfunction
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?
:    " Second is here just to prove that this line is correct when not skipping
:    " rhs of &&.
:    $put =(0&&(function('tr'))(1, 2, 3))

:func Expr1()

:  :  normal! v

:  :  return "111"

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:func Expr2()

:  :  call search('XX', 'b')

:  :  return "222"

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:func ListItem()

:  :  let g:counter += 1

:  :  return g:counter . '. '

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:func ListReset()

:  :  let g:counter = 0

:  :  return ''

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:func FuncWithRef(a)

:  :  unlet g:FuncRef

:  :  return a:a

:  :endfunc
:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?

:let g:FuncRef=function("FuncWithRef")
:let counter = 0
:inoremap <expr> ( ListItem()
:inoremap <expr> [ ListReset()
:imap <expr> + Expr1()
:imap <expr> * Expr2()
:let retval = "nop"
/^here
her$=Table("xxx", 4, "asdf")
=Compute(45, 0, "retval")
=retval
=Compute(45, 5, "retval")
=retval
=g:FuncRef(333)

Error detected while processing function Expr1:

line    1:

E523: Not allowed here

Press ENTER or type command to continue:    $put =(0&&(function('tr'))(1, 2, 3))
:    $put =(1&&(function('tr'))(1, 2, 3))
:catch
:    $put ='!!! Unexpected exception:'$put =v:exception
:endtry$-9,$w! test.outdelfunc Table
:delfunc Computedelfunc Expr1delfunc Expr2
:delfunc ListItemListReset
:unlet retval counter
:q!ENDTESTxxx4asdf fail nop ok 9 333
XX111-XX---222---
1. one2. two1. one again
:call append(line('$'), max([1, 2, 3]))
:call extend(g:, {'max': function('min')})
E704: Funcref variable name must start with a capital: max:call append(line('$'), max([1, 2, 3]))
:try

:  :    " Regression: the first line below used to throw ?E110: Missing ')'?

:  :    " Second is here just to prove that this line is correct when not skipp

ing

:  :    " rhs of &&.

:  :    $put =(0&&(function('tr'))(1, 2, 3))

:  :    $put =(1&&(function('tr'))(1, 2, 3))

:  :catch

:  :    $put ='!!! Unexpected exception:'

:  :    $put =v:exception

:  :endtry
:    $put =v:exception
:endtry
:$-9,$w! test.out
:delfunc Table
:delfunc Compute
:delfunc Expr1
:delfunc Expr2
:delfunc ListItem
:delfunc ListReset
:unlet retval counter
:q!ENDTESTxxx4asdf fail nop ok 9 333
XX111-XX
---222---
1. one
2. two1. one again
330
:$-9,$w! test.out
"test.out" [New File] 10 lines, 81 characters written:delfunc Table
:delfunc Compute
:delfunc Expr1
:delfunc Expr2
:delfunc ListItem
:delfunc ListReset
:unlet retval counter
:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test34 = test61; then \
#	  if diff test.out test34.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test34.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test34.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test36.failed test.ok test.out X* viminfo
cp test36.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test36.in
[?1h="test36.in" 108 lines, 2025 charactersTest character classes in regexp using regexpengine 0, 1, 2.

STARTTEST
/^start-here/+1
Y:s/\%#=0\d//g
p:s/\%#=1\d//g
p:s/\%#=2\d//g
p:s/\%#=0[0-9]//g
p:s/\%#=1[0-9]//g
p:s/\%#=2[0-9]//g
p:s/\%#=0\D//g
p:s/\%#=1\D//g
p:s/\%#=2\D//g
p:s/\%#=0[^0-9]//g
p:s/\%#=1[^0-9]//g
p:s/\%#=2[^0-9]//g
p:s/\%#=0\o//g
p:s/\%#=1\o//g
p:s/\%#=2\o//g
p:s/\%#=0[0-7]//g
p:s/\%#=1[0-7]//g
p:s/\%#=2[0-7]//g
p:s/\%#=0\O//g:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test character classes in regexp using regexpengine 0, 1, 2./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 101 lines, 1850 characters written:set ff& cpo+=A
/ENDTESTp:s/\%#=1[^a-z]//g
p:s/\%#=2[^a-z]//g
p:s/\%#=0\u//g
p:s/\%#=1\u//g
p:s/\%#=2\u//g
p:s/\%#=0[A-Z]//g
p:s/\%#=1[A-Z]//g
p:s/\%#=2[A-Z]//g
p:s/\%#=0\U//g
p:s/\%#=1\U//g
p:s/\%#=2\U//g
p:s/\%#=0[^A-Z]//g
p:s/\%#=1[^A-Z]//g
p:s/\%#=2[^A-Z]//g
p:s/\%#=0\%204l^\t...//g
p:s/\%#=1\%205l^\t...//g
p:s/\%#=2\%206l^\t...//g
:/^start-here/+1,$wq! test.out
ENDTEST













:s/\%#=0\D//g
72 substitutions on 1 line0123456789~

:s/\%#=1\D//g
72 substitutions on 1 line0123456789~

:s/\%#=2\D//g
72 substitutions on 1 line0123456789~

:s/\%#=0[^0-9]//g
72 substitutions on 1 line0123456789~

:s/\%#=1[^0-9]//g
72 substitutions on 1 line0123456789~

:s/\%#=2[^0-9]//g
72 substitutions on 1 line0123456789~





~



~



~



~



~


:s/\%#=0\O//g
74 substitutions on 1 line01234567~

~


:s/\%#=2\O//g
74 substitutions on 1 line01234567~

:s/\%#=1[^0-7]//g
74 substitutions on 1 line01234567~

:s/\%#=2[^0-7]//g
74 substitutions on 1 line01234567~





~



~


:s/\%#=0\X//g
60 substitutions on 1 line0123456789ABCDEFabcdef~

~


:s/\%#=2\X//g
60 substitutions on 1 line0123456789ABCDEFabcdef~

~


:s/\%#=1[^0-9A-Fa-f]//g
60 substitutions on 1 line0123456789ABCDEFabcdef~

~



~





:s/\%#=0\W//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1\W//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2\W//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=0[^0-9A-Za-z_]//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1[^0-9A-Za-z_]//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2[^0-9A-Za-z_]//g
46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz~







:s/\%#=0\H//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1\H//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2\H//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=0[^A-Za-z_]//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=1[^A-Za-z_]//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~

:s/\%#=2[^A-Za-z_]//g
56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz~







:s/\%#=0\A//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=1\A//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=2\A//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=0[^A-Za-z]//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=1[^A-Za-z]//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~

:s/\%#=2[^A-Za-z]//g
57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz~













:s/\%#=0\L//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=1\L//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=2\L//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=0[^a-z]//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=1[^a-z]//g
69 substitutions on 1 lineabcdefghiwxyz~

:s/\%#=2[^a-z]//g
69 substitutions on 1 lineabcdefghiwxyz~





~



~



~



~



~


:s/\%#=0\U//g
70 substitutions on 1 lineABCDEFGHIXYZ~

~


:s/\%#=2\U//g
70 substitutions on 1 lineABCDEFGHIXYZ~

:s/\%#=1[^A-Z]//g
70 substitutions on 1 lineABCDEFGHIXYZ~

:s/\%#=2[^A-Z]//g
70 substitutions on 1 lineABCDEFGHIXYZ~





~


# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test36 = test61; then \
#	  if diff test.out test36.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test36.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test36.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test37.failed test.ok test.out X* viminfo
cp test37.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test37.in
[?1h="test37.in" 116 lines, 3262 charactersTest for 'scrollbind'. <eralston@computer.org>   Do not add a line below!
STARTTEST
:so small.vim
:set noscrollbind
:set scrollopt=ver,jump
:set scrolloff=2
:set nowrap
:set noequalalways
:set splitbelow
:" TEST using two windows open to one buffer, one extra empty window
:split
:new
^Wt:
:resize 8
/^start of window 1$/
zt:
:set scrollbind
^Wj:
:resize 7
/^start of window 2$/
zt:
:set scrollbind
:" -- start of tests --:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for 'scrollbind'. <eralston@computer.org>   Do not add a line below!/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 72 lines, 1498 characters written:set ff& cpo+=A
/ENDTESTHk^WtH^WjHyy^Wbp^Wtyy^Wbp:
^Wt:set noscb
ggL^Wj:set noscb
ggL:set scb
^Wt:set scb
^WtG^WjG^Wt:syncbind
Hk^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:
^WtH3k^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:
:" ***** done with tests *****
:w! test.out" Write contents of this file
:qa!
ENDTEST


start of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03
. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08
:so! Xdotest
:so small.vim
:set noscrollbind
:set scrollopt=ver,jump
:set scrolloff=2
:set nowrap
:set noequalalways
:set splitbelow
:" TEST using two windows open to one buffer, one extra empty window
:split
^WtH3k^WtHyybp^Wt^Wjyy^Wbp:
:" ***** done with tests *****
:w! test.out    " Write contents of this file
:qa!ENDTESTstart of window 1. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02test37.in                                                                       Hk^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:
^WtH3k^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:
:" ***** done with tests *****
:w! test.out     " Write contents of this file
:qa!ENDTESTstart of window 11122
test37.in                                                                       :new
:w! test.out             " Write contents of this file
:qa!ENDTESTtest37.in                                                                       ~~~~
[No Name]test37.in                                                                       [No Name]                                                                       ::resize 8
:" ***** done with tests *****w! test.out             " Write contents of this file
:qa!ENDTESTstart of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
test37.in                                                                       :" ***** done with tests *****:w! test.out             " Write contents of this fileqa!ENDTESTstart of window 1/^start of window 1$/

. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02


. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03
. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05::set scrollbind
test37.in                                                                       test37.in                                                                       ::resize 7
/^start of window 2$/
end of window 1start of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04::set scrollbind
:" -- start of tests --
:" TEST scrolling down







. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08
. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09
. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10




. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08
. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09test37.in                                                                       [No Name]                                                                       
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05[+]0test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
1test37.in                                                                       [No Name] [+]                                                                   








. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15
end of window 1





. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15test37.in                                                                       [No Name] [+]                                                                   
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
2test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
3

::" TEST scrolling up
test37.in                                                                       [No Name] [+]                                                                   . line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08440505060607070808090900test37.in                                                                       test37.in                                                                       test37.in                                                                       test37.in                                                                       test37.in                                                                       [No Name] [+]                                                                   
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
4test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
5test37.in                                                                       [No Name] [+]                                                                   start of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03start of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
test37.in                                                                       test37.in                                                                       test37.in                                                                       test37.in                                                                       test37.in                                                                       [No Name] [+]                                                                   
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
6test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
7

::" TEST horizontal scrolling
:set scrollopt+=hor
05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
2 line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
3 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11



4 line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
5 line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
6 line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
7 line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
test37.in                                                                       [No Name] [+]                                                                    156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0256789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0356789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0556789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0656789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07 2UTSRQPONMLKJIHGREDCBA9876543210 01UTSRQPONMLKJIHGREDCBA9876543210 02UTSRQPONMLKJIHGREDCBA9876543210 03UTSRQPONMLKJIHGREDCBA9876543210 04UTSRQPONMLKJIHGREDCBA9876543210 05UTSRQPONMLKJIHGREDCBA9876543210 06test37.in                                                                       [No Name] [+]                                                                   56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   UTSRQPONMLKJIHGREDCBA9876543210 02


:test37.in                                                                       [No Name] [+]                                                                   56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09101112131415UTSRQPONMLKJIHGREDCBA9876543210 09101112131415. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09
. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15
end of window 1

. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09
. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15test37.in                                                                       [No Name] [+]                                                                   . line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
test37.in                                                                       [No Name] [+]                                                                   
test37.in                                                                       [No Name] [+]                                                                   . line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11


::set scrollopt-=hor
:" ****** tests using two different buffers *****
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       test37.in                                                                       ::close
start of window 20000000000::set noscrollbind
:/^start of window 2$/,/^end of window 2$/y
18 lines yanked:new
test37.in                                                                       ~~~~~~~
[No Name]test37.in                                                                       [No Name]                                                                       test37.in                                                                       [No Name]                                                                       4 more lines[+]


18 more linesstart of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02:test37.in                                                                       [No Name] [+]                                                                   /^start of window 1$/
search hit BOTTOM, continuing at TOPENDTESTstart of window 1010102020303
. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04::set scrollbind
test37.in                                                                       [No Name] [+]                                                                   :/^start of window 2$/
search hit BOTTOM, continuing at TOP


. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05::set scrollbind
:" -- start of tests --
:" TEST scrolling down








. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08
. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09




. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08
. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09
. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10[No Name] [+]                                                                   [No Name] [+]                                                                   
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
0test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
1test37.in                                                                       [No Name] [+]                                                                   







. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15





. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16test37.in                                                                       [No Name] [+]                                                                   
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
2[No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
3

::" TEST scrolling up
test37.in                                                                       [No Name] [+]                                                                   440505060607070808090900. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
4[No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
5[No Name] [+]                                                                   [No Name] [+]                                                                   start of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03start of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
6test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
7

::" TEST horizontal scrolling
:set scrollopt+=hor
05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
2 line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
3 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 113 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
46 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
56 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
6 line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
7 line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02

test37.in                                                                       [No Name] [+]                                                                    156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0256789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0356789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0556789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06 2UTSRQPONMLKJIHGREDCBA9876543210 01UTSRQPONMLKJIHGREDCBA9876543210 02UTSRQPONMLKJIHGREDCBA9876543210 03UTSRQPONMLKJIHGREDCBA9876543210 04UTSRQPONMLKJIHGREDCBA9876543210 05UTSRQPONMLKJIHGREDCBA9876543210 06UTSRQPONMLKJIHGREDCBA9876543210 07test37.in                                                                       [No Name] [+]                                                                   56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
[No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   UTSRQPONMLKJIHGREDCBA9876543210 02


:[No Name] [+]                                                                   [No Name] [+]                                                                   56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09101112131415

UTSRQPONMLKJIHGREDCBA9876543210 0910111213141516. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09
. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15

. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09
. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[No Name] [+]                                                                   [No Name] [+]                                                                   . line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
test37.in                                                                       [No Name] [+]                                                                   
test37.in                                                                       [No Name] [+]                                                                   . line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11


::set scrollopt-=hor
:" TEST syncbind
test37.in                                                                       [No Name] [+]                                                                   :set noscb
Test for 'scrollbind'. <eralston@computer.org>   Do not add a line below!
STARTTEST:so small.vim:set noscrollbind:set scrollopt=ver,jump:set scrolloff=2:set nowrap


test37.in                                                                       [No Name] [+]                                                                   :set noscb
start of window 201010202:set scb
test37.in                                                                       [No Name] [+]                                                                   :set scb
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
end of window 2end of test37.in (please don't delete this line)

end of window 2
~
~
~
~~~~zt::set scrollbind:" -- start of tests --:" TEST scrolling downL5jHyy^Wbpr0^WtHyy^Wbpr1^WtL6jHyy^Wbpr2^WkHyy^Wbpr3:
:" TEST scrolling up
^WtH4k^WjH^WtHyy^Wbpr4^WkHyy^Wbpr5^Wk3k^WtH^WjHyy^Wbpr6^WtHyy^Wbpr7:
test37.in                                                                       . line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[No Name] [+]                                                                   :syncbind
/^start of window 2$/. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
:set scrollbind


:test37.in                                                                       [No Name] [+]                                                                   :set noscb
Test for 'scrollbind'. <eralston@computer.org>   Do not add a line below!
STARTTEST
:so small.vimset noscrollbindset scrollopt=ver,jump
:set scrolloff=2set nowrap


test37.in                                                                       [No Name] [+]                                                                   :set noscb
start of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02:set scb
test37.in                                                                       [No Name] [+]                                                                   :set scb
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
end of window 2end of test37.in (please don't delete this line)

end of window 2
~
~
~
~~~~zt::set scrollbind:" -- start of tests --:" TEST scrolling downL5jHyy^Wbpr0^WtHyy^Wbpr1^WtL6jHyy^Wbpr2^WkHyy^Wbpr3:
:" TEST scrolling up
^WtH4k^WjH^WtHyy^Wbpr4^WkHyy^Wbpr5^Wk3k^WtH^WjHyy^Wbpr6^WtHyy^Wbpr7:
test37.in                                                                       . line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   :syncbind
/^start of window 2$/. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
:set scrollbind
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16


:test37.in                                                                       [No Name] [+]                                                                   zt:
:set scrollbind
^Wj:
:resize 7. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   
^Wj:
test37.in                                                                       [No Name] [+]                                                                   test37.in                                                                       [No Name] [+]                                                                   [No Name] [+]                                                                   [No Name] [+]                                                                   
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12


::" ***** done with tests *****
:w! test.out             " Write contents of this file
"test.out" [New File] 33 lines, 1329 characters writtentest.out     :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test37 = test61; then \
#	  if diff test.out test37.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test37.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test37.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test38.failed test.ok test.out X* viminfo
cp test38.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test38.in
[?1h="test38.in" 35 lines, 455 charactersTest Virtual replace mode.

STARTTEST
:so small.vim
:" make sure that backspace works, no matter what termcap is used
:set t_kD=^Vx7f t_kb=^Vx08
ggdGa
abcdefghi
jk      lmn
    opq rst
^Duvwxyz
^[gg:set ai
:set bs=2
gR0^D 1
A
BCDEFGHIJKL
MNO
PQR^[G:ka
o0^D
abcdefghi
jk      lmn:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 29 lines, 407 characters written:set ff& cpo+=A
/ENDTEST










opq rst
^Duvwxyz
^['ajgR0^D 1
A
BCDEFGHIJKL
MNO
PQR^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^[:$
iab     cdefghi jkl^[0gRAB......CDEFGHI.J^[o^[:
iabcdefghijklmnopqrst^[0gRAB    IJKLMNO QR^[:wq! test.out
ENDTEST

:so! Xdotest
:so small.vim
:" make sure that backspace works, no matter what termcap is used
:set t_kD=^^? t_kb=^^H
^[gg:set ai
:set bs=2
gR0^D 1
A
BCDEFGHIJKL
MNO
PQR^[G:ka
o0^D
abcdefghi
jk      lmn
    opq rst
^Duvwxyz
^['ajgR0^D 1
A
BCDEFGHIJKL
MNO
PQR^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^[:$
iab     cdefghi jkl^[0gRAB......CDEFGHI.J^[o^[:
iabcdefghijklmnopqrst^[0gRAB    IJKLMNO QR^[:wq! test.out
ENDTEST
Test Virtual replace mode.

STARTTEST
:so small.vim
:" make sure that backspace works, no matter what termcap is used
:set t_kD=^Vx7f t_kb=^Vx08
ggdGa
abcdefghi
jk      lmn
    opq rst
^Duvwxyz~
~~~~~~~~~~~~~
~~~~~~~~
--No lines in buffer--
abcdefghi
jk      lmn
    opq rst
uvwxyz:set ai
:set bs=2
 1
 A BCDEFGHIJ    KL        MNOPQR:ka
abcdefghi
jk      lmn
    opq rst
uvwxyz
 1:$
ab      cdefghi jkl
AB......CDEFGHI.J:abcdefghijklmnopqrst
AB      IJKLMNO QR:wq! test.out
"test.out" [New File] 13 lines, 107 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test38 = test61; then \
#	  if diff test.out test38.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test38.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test38.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test39.failed test.ok test.out X* viminfo
cp test39.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test39.in
[?1h="test39.in" 118 lines, 2435 charactersTest Visual block mode commands
And test "U" in Visual mode, also on German sharp S.

#define BO_ALL      0x0001
#define BO_BS0x0002
#define BO_CRSR     0x0004

STARTTEST
:so small.vim
:so mbyte.vim
:" This only works when 'encoding' is "latin1", don't depend on the environment
:set enc=latin1
/^abcde
:" Test shift-right of a block
jllll^Vjj>wll^Vjlll>
:" Test shift-left of a block
G$hhhh^Vkk<
:" Test block-insert
Gkl^VkkkIxyz^[
:" Test block-replace
Gllll^Vkkklllrq
:" Test block-change:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 75 lines, 2061 characters written:set ff& cpo+=A
/ENDTEST:exe ":norm! 2k\<C-V>$gj\<Esc>"
:let cpos=getpos("'>")
:$put ='col:'.cpos[2].' off:'.cpos[3]
:"
:" block_insert when replacing spaces in front of the block with tabs
:set ts=8 sts=4 sw=4
:4,7y
Gp
:exe ":norm! f0\<C-V>2jI\<tab>\<esc>"
:/^the/,$w >> test.out
:qa!
ENDTESTline1line2line3

aaaaaa
bbbbbb
cccccc
dddddd

xaaa
:so! Xdotest
:so small.vim
:so mbyte.vim
:" This only works when 'encoding' is "latin1", don't depend on the environment
:set enc=latin1
:exe ":norm! 2k\<C-V>$gj\<Esc>"
:let cpos=getpos("'>")
:$put ='col:'.cpos[2].' off:'.cpos[3]
:"
:" block_insert when replacing spaces in front of the block with tabs
:set ts=8 sts=4 sw=4
:4,7y
Gp
:exe ":norm! f0\<C-V>2jI\<tab>\<esc>"
:/^the/,$w >> test.out
:qa!
ENDTESTline1line2line3

aaaaaa
bbbbbb
cccccc
dddddd

xaaa/^abcde


















bbbb
cccc
dddd

yaaa
bbb

A23
4567

B23
4567

C23
4567

abcdefghijklm
:" Test shift-right of a block

abcdefghijklmabcd
e
abcdefghijklm
abcd
e
abcdefghijklm
abcd
3 lines >ed 1 time        efghijklm
abcd        efghijklm
abcd        efghijklm     efghgihji        ghijklm        ghijklm:" Test shift-left of a block

abcdefghijklmi 


3 lines <ed 1 timeef    efghijklmi:" Test block-insert

abbb
ab
ab
abxyzbcdefghijklm
axyzbcd
axyzbcd
axyzbcd
a:" Test block-replace



abcdebbbccfcddgd  hqqqq
axyzqqqq
axyzqqqq
abcdqqqq
axyz:" Test block-change


ji     ghijklef  gklmnomnomno:$-4,$w! test.out
"test.out" [New File] 5 lines, 108 characters written:" Test block-insert using cursor keys for movement
/^aaaa/
search hit BOTTOM, continuing at TOPaaaaaa
bbbbbb
cccccc
ddddddsearch hit BOTTOM, continuing at TOP:exe ":norm! l\<C-V>jjjlllI\<Right>\<Right>  \<Esc>"
  aaa
bbb  bbb
ccc  ccc
ddd  ddd:/^aa/,/^$/w >> test.out
search hit BOTTOM, continuing at TOP
"test.out" 5 lines, 37 characters appended/xaaa$/
:exe ":norm! \<C-V>jjjI<>\<Left>p\<Esc>"
<p>xaaa
<p>bbbb
<p>cccc
<p>dddd:/xaaa$/,/^$/w >> test.out
search hit BOTTOM, continuing at TOP
"test.out" 5 lines, 33 characters appended:" Test for Visual block was created with the last <C-v>$
/^A23$/
:exe ":norm! l\<C-V>j$Aab\<Esc>"
ab
4567ab:.,/^$/w >> test.out
"test.out" 3 lines, 14 characters appended:" Test for Visual block was created with the middle <C-v>$ (1)
/^B23$/
:exe ":norm! l\<C-V>j$hAab\<Esc>"
ab
4567ab:.,/^$/w >> test.out
"test.out" 3 lines, 15 characters appended:" Test for Visual block was created with the middle <C-v>$ (2)
/^C23$/
:exe ":norm! l\<C-V>j$hhAab\<Esc>"
ab
456ab7:.,/^$/w >> test.out
"test.out" 3 lines, 14 characters appended:" Test for Visual block insert when virtualedit=all and utf-8 encoding
:set ve=all enc=utf-8
aaa  aaa
bbb  bbb
ccc  ccc
ddd  ddd

<p>xaaa
<p>bbbb
<p>cccc
<p>dddd

yaaa
<bf><bf><bf>
bbb

A23ab
4567ab

B23 ab
4567ab

C23ab
456ab7


:/\t\tline
search hit BOTTOM, continuing at TOPline1line2line3search hit BOTTOM, continuing at TOP:exe ":norm! 07l\<C-V>jjIx\<Esc>"
xxx:.,/^$/w >> test.out
"test.out" 4 lines, 49 characters appended:" Test for Visual block append when virtualedit=all
:exe ":norm! 012l\<C-v>jjAx\<Esc>"
x   line1x   line2x   line3:set ve= enc=latin1
x     x   line1x     x   line2x     x   line3

aaa  aaa
bbb  bbb
ccc  ccc
ddd  ddd

<p>xaaa
<p>bbbb
<p>cccc
<p>dddd

yaaa
bbb

A23ab
4567ab

B23 ab








C23ab
456ab7

axyzbcdefghijklm
axyzqqqq   mnoghijklm
axyzqqqqef mnoghijklm
axyzqqqqefgmnoklm
abcdqqqqijklm
the 
:" VU must uppercase a whole line


:" same, when it's the last line in the buffer


:" Uppercase two lines

blah didoh dut
doh dut blah di t
BLAH DIDOH DUT
:" Uppercase part of two lines
~
333the youtUTUSSEUU END
333THE YOUTU

:" visual replace using Enter or NL




123456789
123456789
123456789
1234566789


789
12345
789



98765
98765
98765
987
987
98^M65
98^M65
98^M65
98



123456789
123456789
123456789
1234566789


789
12345
789



98765
98765
98765
987
987
98^@65
98^@65
98^@65


:"
:" Test cursor position. When ve=block and Visual block mode and $gj
:set ve=block
:exe ":norm! 2k\<C-V>$gj\<Esc>"
:let cpos=getpos("'>")
:$put ='col:'.cpos[2].' off:'.cpos[3]

col:4 off:0
:"
:" block_insert when replacing spaces in front of the block with tabs
:set ts=8 sts=4 sw=4
:4,7y
4 lines yanked
4 more lines
4 more lines
#define BO_ALL      0x0001
:exe ":norm! f0\<C-V>2jI\<tab>\<esc>"


    0x0001
#define BO_BS0x0002
#define BO_CRSR0x0004


:/^the/,$w >> test.out
search hit BOTTOM, continuing at TOP
"test.out" 31 lines, 322 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test39 = test61; then \
#	  if diff test.out test39.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test39.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test39.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test40.failed test.ok test.out X* viminfo
cp test40.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test40.in
[?1h="test40.in" 63 lines, 1536 charactersTest for "*Cmd" autocommands

STARTTEST
:so small.vim
:/^start/,$w! Xxx" write lines below to Xxx
:au BufReadCmd XtestA 0r Xxx|$del
:e XtestA" will read text of Xxd instead
:au BufWriteCmd XtestA call append(line("$"), "write")
:w" will append a line to the file
:r XtestA" should not read anything
:" now we have:
:" 1     start of Xxx
:" 2test40
:" 3     end of Xxx
:" 4     write
:au FileReadCmd XtestB '[r Xxx
:2r XtestB" will read Xxx below line 2 instead
:" 1     start of Xxx
:" 2test40
:" 3     start of Xxx
:" 4test40
:" 5     end of Xxx
:" 6     end of Xxx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for "*Cmd" autocommands/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 55 lines, 1455 characters written:set ff& cpo+=A
/ENDTEST:$w >>test.out" append "end of Xxx" to test.out
:au BufReadCmd XtestE 0r test.out|$del
:sp XtestE" split window with test.out
5Goasdf^[^W^W:"
:au BufWriteCmd XtestE w! test.out
:wall" will write other window to test.out
:" 1     start of Xxx
:" 2test40
:" 3     start of Xxx
:" 4test401
:" 5     end of Xxx
:" 6     asdf
:" 7     end of Xxx
:" 8     write
:" 9test401
:" 10    end of Xxx
:" 11    end of Xxx
:qa!
ENDTEST

start of Xxxtest40
end of Xxx
:so! Xdotest
:so small.vim
:/^start/,$w! Xxx^I^I" write lines below to Xxx
"Xxx" [New File] 3 lines, 32 characters written:au BufReadCmd XtestA 0r Xxx|$del
:e XtestA^I^I^I" will read text of Xxd instead
"Xxx" 3 lines, 32 charactersstart of Xxx        test40end of Xxx~~~~~~~~~~~~~~~~
~~~~:au BufWriteCmd XtestA call append(line("$"), "write")
:w^I^I^I^I" will append a line to the file
write:r XtestA^I^I^I" should not read anything
E484: Can't open file XtestA:^I^I^I^I" now we have:
:^I^I^I^I" 1^Istart of Xxx
:^I^I^I^I" 2^I^Itest40
:^I^I^I^I" 3^Iend of Xxx
:^I^I^I^I" 4^Iwrite
:au FileReadCmd XtestB '[r Xxx
:2r XtestB^I^I^I" will read Xxx below line 2 instead
"Xxx" 3 lines, 32 charactersstart of Xxxtest40
end of Xxx:^I^I^I^I" 1^Istart of Xxx
:^I^I^I^I" 2^I^Itest40
:^I^I^I^I" 3^Istart of Xxx
:^I^I^I^I" 4^I^Itest40
:^I^I^I^I" 5^Iend of Xxx
:^I^I^I^I" 6^Iend of Xxx
:^I^I^I^I" 7^Iwrite
:au FileWriteCmd XtestC '[,']copy $
test401:4,5w XtestC^I^I^I" will copy lines 4 and 5 to the end
 test401
end of Xxx
:r XtestC^I^I^I" should not read anything
E484: Can't open file XtestC:^I^I^I^I" 1^Istart of Xxx
:^I^I^I^I" 2^I^Itest40
:^I^I^I^I" 3^Istart of Xxx
:^I^I^I^I" 4^I^Itest401
:^I^I^I^I" 5^Iend of Xxx
:^I^I^I^I" 6^Iend of Xxx
:^I^I^I^I" 7^Iwrite
:^I^I^I^I" 8^I^Itest401
:^I^I^I^I" 9^Iend of Xxx
:au FILEAppendCmd XtestD '[,']w! test.out
:w >>XtestD^I^I^I" will write all lines to test.out
"test.out" [New File] 9 lines, 91 characters written:$r XtestD^I^I^I" should not read anything
E484: Can't open file XtestD:$w >>test.out^I^I^I" append "end of Xxx" to test.out
"test.out" 1 line, 11 characters appended:au BufReadCmd XtestE 0r test.out|$del
:sp XtestE^I^I^I" split window with test.out
"test.out" 10 lines, 102 charactersend of Xxx

XtestE                                                                          end of Xxx
write
 test401
end of XxxXtestA                                                                          asdf[+]XtestE [+]                                                                      XtestA                                                                          :"
:au BufWriteCmd XtestE w! test.out
:wall^I^I^I^I" will write other window to test.out
"test.out" 11 lines, 107 characters written   :^I^I^I^I" 1^Istart of Xxx
:^I^I^I^I" 2^I^Itest40
:^I^I^I^I" 3^Istart of Xxx
:^I^I^I^I" 4^I^Itest401
:^I^I^I^I" 5^Iend of Xxx
:^I^I^I^I" 6^Iasdf
:^I^I^I^I" 7^Iend of Xxx
:^I^I^I^I" 8^Iwrite
:^I^I^I^I" 9^I^Itest401
:^I^I^I^I" 10^Iend of Xxx
:^I^I^I^I" 11^Iend of Xxx
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test40 = test61; then \
#	  if diff test.out test40.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test40.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test40.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test41.failed test.ok test.out X* viminfo
cp test41.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test41.in
[?1h="test41.in" 24 lines, 421 charactersTest for writing and reading a file of over 100 Kbyte

1 line: "This is the start"
3001 lines: "This is the leader"
1 line: "This is the middle"
3001 lines: "This is the trailer"
1 line: "This is the end"

STARTTEST
:%d
aThis is the start
This is the leader
This is the middle
This is the trailer
This is the end^[kY3000p2GY3000p
:w! Xtest
:%d
:e! Xtest
:.w! test.out
3003G:.w >>test.out
6005G:.w >>test.out
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for writing and reading a file of over 100 Kbyte/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 13 lines, 196 characters written:set ff& cpo+=A
/ENDTEST

:so! Xdotest
:%d
~~~~~
~~~~~~~~~~~~~~~~
~
--No lines in buffer--This is the start
This is the leader
This is the middle
This is the trailer
This is the end3000 more linestrailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailerleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleader
:w! Xtest
"Xtest" [New File] 6005 lines, 117092 characters written:%d
~~~~~~~~~~~~~~~~~~~~~~
--No lines in buffer--:e! Xtest
"Xtest" 6005 lines, 117092 charactersThis is the start
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader:.w! test.out
"test.out" [New File] 1 line, 18 characters writtenThis is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the leader
This is the middle
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer:.w >>test.out
"test.out" 1 line, 19 characters appendedThis is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the trailer
This is the end

:.w >>test.out
"test.out" 1 line, 16 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test41 = test61; then \
#	  if diff test.out test41.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test41.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test41.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test42.failed test.ok test.out X* viminfo
cp test42.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test42.in
[?1h="test42.in" 130 lines, 2368 charactersTest for writing and reading a file starting with a BOM

STARTTEST
:so mbyte.vim
:set encoding=utf-8
:set fileencodings=ucs-bom,latin-1
:set ff=unix ffs=unix" This changes the file for DOS and MAC
:" --- Write the test files
:/^latin-1$/+1w! Xtest0
:/^utf-8$/+1w! Xtest1
:/^utf-8-err$/+1w! Xtest2
:/^ucs-2$/+1w! Xtest3
:/^ucs-2le$/+1w! Xtest4
:" Need to add a NUL byte after the NL byte
:set bin
:e! Xtest4" Ignore change from setting 'ff'
o^V^@^[:set noeol
:w
:set ffs& nobinary" Allow default test42.in format
:e #
:set ff=unix" Format for files to write
:/^ucs-4$/+1w! Xtest5
:/^ucs-4le$/+1w! Xtest6:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for writing and reading a file starting with a BOM/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 111 lines, 2116 characters written:set ff& cpo+=A
/ENDTEST:e! test.out
:$r Xtest0x
:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&" Write the file in default format
:w! test.out
:qa!
ENDTEST

latin-1
utf-8
utf-8
utf-8-err
utf-8~@err
ucs-2
ucs-2le
:so! Xdotest
:so mbyte.vim
:set encoding=utf-8
:e! test.out
:$r Xtest0x
:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&" Write the file in default format
:w! test.out
:qa!
ENDTEST

latin-1
<fe><fe>latin-1
utf-8
<feff>utf-8
utf-8-err
<feff>utf-8<80>err
ucs-2
<fe><ff>^@u^@c^@s^@-^@2^@
ucs-2le
<ff><fe>u^@c^@s^@-^@2^@l^@e^@:set fileencodings=ucs-bom,latin-1
:set ff=unix ffs=unix           " This changes the file for DOS and MAC
:" --- Write the test files
:/^latin-1$/+1w! Xtest0
"Xtest0" [New File] 1 line, 10 characters written:/^utf-8$/+1w! Xtest1
"Xtest1" [New File] 1 line, 9 characters written:/^utf-8-err$/+1w! Xtest2
"Xtest2" [New File] 1 line, 13 characters written:/^ucs-2$/+1w! Xtest3
"Xtest3" [New File] 1 line, 14 characters written:/^ucs-2le$/+1w! Xtest4
"Xtest4" [New File] 1 line, 17 characters written:" Need to add a NUL byte after the NL byte
:set bin
:e! Xtest4                      " Ignore change from setting 'ff'
"Xtest4" 1 line, 17 characters<ff><fe>u^@c^@s^@-^@2^@l^@e^@~~~~~~~~~~~
~~~~~~~~~~~
^@
:set noeol
:w
"Xtest4" [Incomplete last line] 2 lines, 18 characters written:set ffs& nobinary              " Allow default test42.in format
:e #
"test42.in" [converted] 130 lines, 2385 characters:$r Xtest0x:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&" Write the file in default format
:w! test.out
:qa!
ENDTESTlatin-1
þþlatin-1
utf-8
utf-8
utf-8-err
utf-8<80>err
ucs-2
þÿ^@u^@c^@s^@-^@2^@
ucs-2le
ÿþu^@c^@s^@-^@2^@l^@e^@
ucs-4:set ff=unix                    " Format for files to write
:/^ucs-4$/+1w! Xtest5
"Xtest5" [converted][New File] 1 line, 30 characters written:/^ucs-4le$/+1w! Xtest6
"Xtest6" [converted][New File] 1 line, 35 characters written:" Need to add three NUL bytes after the NL byte
:set bin
:e! Xtest6                      " ! for when setting 'ff' is a change
"Xtest6" 1 line, 33 characters<ff><fe>^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@l^@^@^@e^@^@^@~~~~~~~~~~
~~~~~~~~~~~~
~   
^@^@^@:set noeol
:w
"Xtest6" [Incomplete last line] 2 lines, 36 characters written:set nobin
:e #
"test42.in" [converted] 130 lines, 2385 characters:$r Xtest0x:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&" Write the file in default format
:w! test.out
:qa!
ENDTESTlatin-1
þþlatin-1
utf-8
utf-8
utf-8-err
utf-8<80>err
ucs-2
þÿ^@u^@c^@s^@-^@2^@
ucs-2le
ÿþu^@c^@s^@-^@2^@l^@e^@
ucs-4:"
:" --- Check that editing a latin-1 file doesn't see a BOM
:e! Xtest0
"Xtest0" [converted] 1 line, 12 charactersþþlatin-1~~~~~~~~~~
~~~~~~~~~~~~:redir! >test.out
:set fileencoding bomb?
  fileencoding=latin1

nobomb

Press ENTER or type command to continue:redir END
þþlatin-1
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 12 characters appended:set bomb fenc=latin-1
:w! Xtest0x
"Xtest0x" [converted][New File] 1 line, 12 characters written:"
:" --- Check utf-8
:e! Xtest1
"Xtest1" 1 line, 9 charactersutf-8:redir >>test.out
:set fileencoding bomb?
  fileencoding=utf-8

  bomb

Press ENTER or type command to continue:redir END
utf-8
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 6 characters appended:set fenc=utf-8
:w! Xtest1x
"Xtest1x" [New File] 1 line, 9 characters written:"
:" --- Check utf-8 with an error (will fall back to latin-1)
:e! Xtest2
"Xtest2" [converted] 1 line, 17 charactersutf-8<80>err
:redir >>test.out
:set fileencoding bomb?
  fileencoding=latin1

nobomb

Press ENTER or type command to continue:redir END
utf-8<80>err
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 17 characters appended:set fenc=utf-8
:w! Xtest2x
"Xtest2x" [New File] 1 line, 17 characters written:"
:" --- Check ucs-2
:e! Xtest3
"Xtest3" [converted] 1 line, 8 charactersucs-2:redir >>test.out
:set fileencoding bomb?
  fileencoding=utf-16

  bomb

Press ENTER or type command to continue:redir END
ucs-2
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 6 characters appended:set fenc=ucs-2
:w! Xtest3x
"Xtest3x" [converted][New File] 1 line, 8 characters written:"
:" --- Check ucs-2le
:e! Xtest4
"Xtest4" [converted] 1 line, 10 charactersle
:redir >>test.out
:set fileencoding bomb?
  fileencoding=utf-16le

  bomb

Press ENTER or type command to continue:redir END
ucs-2le
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 8 characters appended:set fenc=ucs-2le
:w! Xtest4x
"Xtest4x" [converted][New File] 1 line, 10 characters written:"
:" --- Check ucs-4
:e! Xtest5
"Xtest5" [converted] 1 line, 10 characters4:redir >>test.out
:set fileencoding bomb?
  fileencoding=ucs-4

  bomb

Press ENTER or type command to continue:redir END
ucs-4
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 6 characters appended:set fenc=ucs-4
:w! Xtest5x
"Xtest5x" [converted][New File] 1 line, 10 characters written:"
:" --- Check ucs-4le
:e! Xtest6
"Xtest6" [converted] 1 line, 12 charactersle
:redir >>test.out
:set fileencoding bomb?
  fileencoding=ucs-4le

  bomb

Press ENTER or type command to continue:redir END
ucs-4le
~:set fenc=latin-1
:w >>test.out
"test.out" [converted] 1 line, 8 characters appended:set fenc=ucs-4le
:w! Xtest6x
"Xtest6x" [converted][New File] 1 line, 12 characters written:"
:" --- Check the files written with BOM
:set bin
:e! test.out
"test.out" 35 lines, 275 characters  fileencoding=latin1
nobomb
<fe><fe>latin-1  fileencoding=utf-8
  bomb
utf-8  fileencoding=latin1
nobomb
<feff>utf-8<80>err  fileencoding=utf-16
  bomb
ucs-2  fileencoding=utf-16le:$r Xtest0x
"Xtest0x" 1 line, 10 characters












bomb
ucs-2lefileencoding=ucs-4
  bomb
ucs-4fileencoding=ucs-4le
  bomb
ucs-4le
<fe><fe>latin-1
:$r Xtest1x
"Xtest1x" 1 line, 9 characters
<feff>utf-8
:$r Xtest2x
"Xtest2x" 1 line, 17 characters
utf-8<80>err
:$r Xtest3x
"Xtest3x" 1 line, 14 characters
<fe><ff>^@u^@c^@s^@-^@2^@
:$r Xtest4x
"Xtest4x" [Incomplete last line] 2 lines, 18 characters
<ff><fe>u^@c^@s^@-^@2^@l^@e^@
:$r Xtest5x
"Xtest5x" 1 line, 28 characters

^@
^@^@<fe><ff>^@^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@
:$r Xtest6x
"Xtest6x" [Incomplete last line] 2 lines, 36 characters
<ff><fe>^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@l^@^@^@e^@^@^@
:set nobin ff&               " Write the file in default format
:w! test.out
"test.out" 44 lines, 409 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test42 = test61; then \
#	  if diff test.out test42.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test42.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test42.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test43.failed test.ok test.out X* viminfo
cp test43.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test43.in
[?1h="test43.in" 34 lines, 473 charactersTests for regexp with various magic settings.

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo
/^1
/a*b\{2}c\+/e
x/\Md\*e\{2}f\+/e
x:set nomagic
/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$
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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with various magic settings./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 19 lines, 268 characters written:set ff& cpo+=A
/ENDTEST

:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo
/^1

1 a aa abb abbccc
/a*b\{2}c\+/e
/\Md\*e\{2}f\+/e

2 d dd dee deefff
:set nomagic
/g\*h\{2}i\+/e

3 g gg ghh ghhiii
/\mj*k\{2}l\+/e

4 j jj jkk jkklll
/\vm*n{2}o+/e

5 m mm mnn mnnooo
/\V^aa$

6 x ^aa$ xaa$ x
:set magic
/\v(a)(b)\2\1\1/e

7 (a)(b) abbaa
/\V[ab]\(\[xy]\)\1

8 axx [ab]xxab]x
:$


9 foobar
:set undolevels=100
?bar?
~

1 more line; before #2  0 seconds agobar
9 foo
:"
:?^1?,$w! test.out
"test.out" [New] 11L, 137C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test43 = test61; then \
#	  if diff test.out test43.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test43.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test43.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test44.failed test.ok test.out X* viminfo
cp test44.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test44.in
[?1h="test44.in" 81 lines, 1492 charactersTests for regexp with multi-byte encoding and various magic settings.
Test matchstr() with a count and multi-byte chars.
See test99 for exactly the same test with re=2.

STARTTEST
:so mbyte.vim
:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
:set re=1
/^1
/a*b\{2}c\+/e
x/\Md\*e\{2}f\+/e
x:set nomagic
/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$
x:set magic
/\v(a)(b)\2\1\1/e
x/\V[ab]\(\[xy]\)\1
x:" Now search for multi-byte without composing char
/ม
x:" Now search for multi-byte with composing char
f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with multi-byte encoding and various magic settings./^STARTTEST

:new
:$put =['dog(a', 'cat(']
/(/e+
"ayn:bd!
:$put =''
G"ap
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
:new
:$put =['dog(a', 'cat(']
/(/e+
"ayn:bd!
:$put =''
G"ap
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
:" Test \%u, [\u] and friends
:" c
/\%u20ac

:" d
/[\u4f7f\u5929]\+

:" e
/\%U12345678

:" f
/[\U1234abcd\u1234\uabcd]

:" g
/\%d21879b

:" j Test backwards search from a multi-byte char
/x

:"
:" l Test what 7.3.192 fixed
/^l

2 d dd dee deeff
3 g gg ghh ghhii
4 j jj jkk jkkll
5 m mm mnn mnnoo
[No Name]                                                                       e y f z
g abb
test.out [+]                                                                    :$put =['dog(a', 'cat(']
dog(a
cat([+]/(/e+
/(/e+1
search hit BOTTOM, continuing at TOP:bd!
1 a aa abb abbcc
2 d dd dee deeff
3 g gg ghh ghhii
4 j jj jkk jkkll
5 m mm mnn mnnoo
6 x aa$ x
7 (a)(b) abba
8 axx ab]xx
e y
a
cat(

:w!
"test.out" 25L, 271C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test44 = test61; then \
#	  if diff test.out test44.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test44.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test44.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test45.failed test.ok test.out X* viminfo
cp test45.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test45.in
[?1h="test45.in" 90 lines, 1953 charactersTests for folding. vim: set ft=vim :

STARTTEST
:so small.vim
:" We also need the +syntax feature here.
:if !has("syntax")
   e! test.ok
   w! test.out
   qa!
:endif
:" basic test if a fold can be created, opened, moving to the end and closed
/^1
zf2j:call append("$", "manual " . getline(foldclosed(".")))
zo:call append("$", foldclosed("."))
]z:call append("$", getline("."))
zc:call append("$", getline(foldclosed(".")))
:" test folding with markers.
:set fdm=marker fdl=1 fdc=3
/^5
:call append("$", "marker " . foldlevel("."))
[z:call append("$", foldlevel("."))
jo{{ ^[r{jj:call append("$", foldlevel("."))
kYpj:call append("$", foldlevel(".")):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for folding. vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 73 lines, 1820 characters written:set ff& cpo+=A
/ENDTEST:new
iTest fdm=indent and :move bug END
line2Test fdm=indent STARTline3line4^[
:set fdm=indent
:1m1
2jzc:m0
:%w >> test.out
:qa!
ENDTEST

1 aa
2 bb
3 cc
4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg
8 hh
9 ii
a jj
:so! Xdotest
:so small.vim
:" We also need the +syntax feature here.
:if !has("syntax")

:     e! test.ok

:     w! test.out

:     qa!

:  :endif
:new
iTest fdm=indent and :move bug END
line2Test fdm=indent START:" basic test if a fold can be created, opened, moving to the end and closed
/^1
+--  3 lines: 1 aa--------------------------------------------------------------4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg8 hh9 ii
a jj
b kk
last:call append("$", "manual " . getline(foldclosed(".")))
1 aa2 bb3 cc4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg
8 hh
9 ii
a jj:call append("$", foldclosed("."))


:call append("$", getline("."))
+--  3 lines: 1 aa--------------------------------------------------------------4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg8 hh9 ii
a jj
b kk
last:call append("$", getline(foldclosed(".")))
:" test folding with markers.
:set fdm=marker fdl=1 fdc=3
   :new
   iTest fdm=indent and :move bug END
   line2
           Test fdm=indent START
           line3
           line4^[
   :set fdm=indent
   :1m1
   2jzc:m0
   :%w >> test.out
   :qa!
   ENDTEST
   
   1 aa   2 bb   3 cc-  4 dd {{{
|- 5 ee {{{ }}}
|  6 ff }}}
   7 gg
   8 hh
   9 ii
   a jj/^5
:call append("$", "marker " . foldlevel("."))
:call append("$", foldlevel("."))
{{ |  6 ff }}}-{|
|
|
|


:call append("$", foldlevel("."))
6 ff }}}
 7 gg
 8 hh:call append("$", foldlevel("."))
:" test folding with indent
:set fdm=indent sw=2
-+ +---  3 lines: Test fdm=indent START-----------------------------------------:set fdm=indent:1m12jzc:m0%w >> test.out:qa!ENDTEST1 aa2 bb3 cc4 dd {{{5 ee {{{ }}}
 {{{  6 ff }}}  6 ff }}}
  7 gg 8 hh9 iia jj/^2 b
search hit BOTTOM, continuing at TOP
-  2 bb
|-    3 cc:call append("$", "indent " . foldlevel("."))
:call append("$", foldlevel("."))
:" test syntax folding
:set fdm=syntax fdl=0
          Test fdm=indent START        line3        line4^[:set fdm=indent1m12jzc:m0:%w >> test.out:qa!ENDTEST
   1 aa  2 bb    3 cc4 dd {{{5 ee {{{ }}}{{{6 ff }}}6 ff }}}7 gg8 hh:syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3
+  +--  8 lines: 4 dd ----------------------------------------------------------a jjb kklastmanual 1 aa-13 cc:syn region Fd1 start="ee" end="ff" fold contained
:syn region Fd2 start="gg" end="hh" fold contained
:syn region Fd3 start="commentstart" end="commentend" fold contained







   1 aa
   marker 2
   1
   1
   0
   indent 2
   1:call append("$", "folding " . getline("."))
:call append("$", getline("."))

--4 dd {{{commentstart  ||5 ee {{{ }}}
||{{{||6 ff }}}
||6 ff }}}||7 gg
||8 hh
||9 ii
||a jj||b kk
||last
||manual 1 aa
||-1||3 cc commentend- 
|-

| 
  
  
  
  
  
  :set fdl=1
+ +---  3 lines: 5 ee --------------------------------------------------------- 6 ff }}}+ +---  2 lines: 7 gg----------------------------------------------------------9 ii  a jj
  b kk
 lastmanual 1 aa-13 cc1 aamarker 21:call append("$", getline("."))
:set fdl=0
+  +--  8 lines: 4 dd commentstart  commentend----------------------------------  a jj b kk  last manual 1 aa-13 cc1 aarker 2110indent
-4 dd {{{commentstart  commentend|-5 ee {{{ }}}
||{{{||6 ff }}}
|6 ff }}}|-7 gg
||8 hh
|9 iia jjb kklastmanual 1 aa-13 cc   :1m1
   2jzc:m0
   :%w >> test.out
   :qa!
   ENDTEST
   
   1 aa
     2 bb
       3 cc
-  4 dd {{{commentstart  commentend
|- 5 ee {{{ }}}
|| {{{
|| 6 ff }}}
|  6 ff }}}
|- 7 gg
|| 8 hh
|  9 ii
   a jj
   b kk
   last
   manual 1 aa
   -1
   3 cc:call append("$", getline("."))
:" test expression folding
:fun Flvl()

:    let l = getline(v:lnum)

:    if l =~ "bb$"

:        return 2

:      elseif l =~ "gg$"

:        return "s1"

:      elseif l =~ "ii$"

:        return ">2"

:      elseif l =~ "kk$"

:        return "0"

:      endif

:    return "="

:  endfun
   :1m1
   2jzc:m0
   :%w >> test.out
   :qa!
   ENDTEST
   
   1 aa
     2 bb
       3 cc
-  4 dd {{{commentstart  commentend
|- 5 ee {{{ }}}
|| {{{:set fdm=expr fde=Flvl()
+  +-- 11 lines: 2 bb-----------------------------------------------------------b kk last  manual 1 aa  -1  3 cc 1 aa  marker 2
  1 10indent 21+  +--  4 lines: folding 9 ii---------------------------------------------------~~/bb$
search hit BOTTOM, continuing at TOP--  2 bb||    3 cc
||4 dd {{{commentstart  commentend
||5 ee {{{ }}}
||{{{
||6 ff }}}
||6 ff }}}
||7 gg|8 hh
|+ +---  2 lines: 9 ii----------------------------------------------------------b kklastmanual 1 aa
 -13 cc1 aa:call append("$", "expr " . foldlevel("."))
/hh$
:call append("$", foldlevel("."))
/ii$
-9 ii||a jjb kklastmanual 1 aa-13 cc:call append("$", foldlevel("."))
/kk$
:call append("$", foldlevel("."))
:/^last/+1,$w! test.out
"test.out" [New File] 18 lines, 96 characters written:delfun Flvl
:new
  
  
  
  ~~~~~~~~~~
[No Name]                                                                       5 ee {{{ }}}{{{6 ff }}}|6 ff }}}|7 gg 8 hh
|-9 ii
||a jjb kklast
test45.in [+]                                                                   Test fdm=indent and :move bug ENDline2 Test fdm=indent START line3 line4[+]:set fdm=indent
+  +--  3 lines: Test fdm=indent START------------------------------------------~~:1m1
:m0
3 lines moved+  +--  3 lines: Test fdm=indent START------------------------------------------Test fdm=indent and :move bug END
 line2:%w >> test.out
"test.out" 5 lines, 77 characters appendedtest.out [+] :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test45 = test61; then \
#	  if diff test.out test45.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test45.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test45.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test48.failed test.ok test.out X* viminfo
cp test48.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test48.in
[?1h="test48.in" 83 lines, 1658 charactersThis is a test of 'virtualedit'.

STARTTEST
:so small.vim
:set noswf
:set ve=all
-dgg
:"
:"   Insert "keyword keyw", ESC, C CTRL-N, shows "keyword ykeyword".
:"    Repeating CTRL-N fixes it. (Mary Ellen Foster)
2/w
C^N^[
:"
:"   Using "C" then then <CR> moves the last remaining character to the next
:"    line.  (Mary Ellen Foster)
j^/are
C^Mare belong to vim^[
:"
:"   When past the end of a line that ends in a single character "b" skips
:"    that word.
^$15lbC7^[
:"
:"   Make sure 'i' works:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
This is a test of 'virtualedit'./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 61 lines, 1442 characters written:set ff& cpo+=A
/ENDTEST:set display=
:"
:"   Test for ^Y/^E due to bad w_virtcol value, reported by
:"   Roy <royl@netropolis.net>.
^O^[3li^E^[4li^E^[4li^E   <-- should show the name of a noted text editor^[
^o^[4li^Y^[4li^Y^[4li^Y   <-- and its version number^[-dd
:"
:" Test for yanking and pasting using the small delete register
gg/^foo
dewve"-p
:wq! test.out
ENDTEST
foo, bar
keyword keyw
all your base are belong to us
1 2 3 4 5 6
'i'
'C'
'a'
'A'
'D'
this is a test
this is a test
:so! Xdotest
:so small.vim
:set noswf
:set ve=all
65 fewer lines











this is a test
"r"
"r"
a^Vb^Msd
abcv6efi.him0kl


~
~
~
~
~65 fewer lines
:"
:"   Insert "keyword keyw", ESC, C CTRL-N, shows "keyword ykeyword".
:"    Repeating CTRL-N fixes it. (Mary Ellen Foster)
/w
$Scanning tags.
The only matchword:"
:"   Using "C" then then <CR> moves the last remaining character to the next
:"    line.  (Mary Ellen Foster)

/are
search hit BOTTOM, continuing at TOP$are belong to vim
1 2 3 4 5 6
'i
'C
'a
'A
'D'this is a test

"r"     
a^Vb^Msdabcv6efi.him0kl:"
:"   When past the end of a line that ends in a single character "b" skips
:"    that word.

$7:"
:"   Make sure 'i' works

'i'   <-- should be 3 ' ':"
:"   Make sure 'C' works

'C'   $<-- should be 3 ' ':"
:"   Make sure 'a' works

'a'    <-- should be 4 ' ':"
:"   Make sure 'A' works

'A'   <-- should be 0 ' ':"
:"   Make sure 'D' works

'D'   <-- 'D' should be intact:"
:"   Test for yank bug reported by Mark Waggoner.
:set ve=block

aaaaaablock of 4 lines yanked3 more linesa
a
a
 
:"
:" Test "r" beyond the end of the line
:set ve=all
/^"r"
search hit BOTTOM, continuing at TOP"r"    xx<-- should be 'x':"
:" Test "r" on a tab
:" Note that for this test, 'ts' must be 8 (the default).

"r"  xx  <-- should be '  x  ':"
:"   Test to make sure 'x' can delete control characters
:set display=uhex
<16>b<0d>sd
<16>b<0d>sdb<0d>sd<0d>sdsdd[This line should contain only the text between the brackets.]:set display=
:"
:"   Test for ^Y/^E due to bad w_virtcol value, reported by
:"   Roy <royl@netropolis.net>.

   vv   ii   m   <-- should show the name of a noted text editor
    66   ..   0   <-- and its version number

    :"
:" Test for yanking and pasting using the small delete register
/^foo
search hit BOTTOM, continuing at TOP, bar, bafoo
keyw:wq! test.out
"test.out" [New File] 23 lines, 479 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test48 = test61; then \
#	  if diff test.out test48.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test48.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test48.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test51.failed test.ok test.out X* viminfo
cp test51.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test51.in
[?1h="test51.in" 36 lines, 808 charactersTests for ":highlight". vim: set ft=vim :

STARTTEST
:so small.vim
:" basic test if ":highlight" doesn't crash
:highlight
:hi Search
:" test setting colors.
:" test clearing one color and all doesn't generate error or warning
:hi NewGroup term=bold cterm=italic ctermfg=DarkBlue ctermbg=Grey gui= guifg=#000ff00 guibg=Cyan
:hi Group2 term= cterm=
:hi Group3 term=underline cterm=bold
:redir! >test.out
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group2 NONE
:hi Group2
:hi clear:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for ":highlight". vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 31 lines, 746 characters written:set ff& cpo+=A
/ENDTEST












:hi Group3
:hi Crash term='asdf
:redir END
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
:%s/ctermfg=\d*/ctermfg=2/
:%s/ctermbg=\d*/ctermbg=3/
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
:" fix the fileformat
:set ff&
:wq!
ENDTEST

:so! Xdotest
:so small.vim
:" basic test if ":highlight" doesn't crash
:highlight

SpecialKey     xxx term=bold ctermfg=1 guifg=Blue

EndOfBuffer    xxx links to NonText

NonTextxxx term=bold ctermfg=9 gui=bold guifg=Blue

Directory      xxx term=bold ctermfg=1 guifg=Blue

ErrorMsgxxx term=standout ctermfg=15 ctermbg=4 guifg=White guibg=Red

IncSearch      xxx term=reverse cterm=reverse gui=reverse

Searchxxx term=reverse ctermfg=0 ctermbg=14 guibg=Yellow

MoreMsgxxx term=bold ctermfg=2 gui=bold guifg=SeaGreen

ModeMsgxxx term=bold cterm=bold gui=bold

LineNrxxx term=underline ctermfg=6 guifg=Brown

CursorLineNr   xxx term=bold ctermfg=6 gui=bold guifg=Brown

Questionxxx term=standout ctermfg=2 gui=bold guifg=SeaGreen

StatusLine     xxx term=bold,reverse cterm=bold,reverse gui=bold,reverse

StatusLineNC   xxx term=reverse cterm=reverse gui=reverse

VertSplit      xxx term=reverse cterm=reverse gui=reverse

Titlexxx term=bold ctermfg=5 gui=bold guifg=Magenta

Visualxxx term=reverse cterm=reverse guibg=LightGrey

VisualNOS      xxx term=bold,underline cterm=bold,underline gui=bold,underline

WarningMsg     xxx term=standout ctermfg=4 guifg=Red

WildMenuxxx term=standout ctermfg=0 ctermbg=14 guifg=Black guibg=Yellow

Foldedxxx term=standout ctermfg=1 ctermbg=7 guifg=DarkBlue

guibg=LightGrey

FoldColumn     xxx term=standout ctermfg=1 ctermbg=7 guifg=DarkBlue guibg=Grey

DiffAddxxx term=bold ctermbg=9 guibg=LightBlue

DiffChange     xxx term=bold ctermbg=13 guibg=LightMagenta

DiffDelete     xxx term=bold ctermfg=9 ctermbg=11 gui=bold guifg=Blue

guibg=LightCyan

DiffTextxxx term=reverse cterm=bold ctermbg=12 gui=bold guibg=Red

SignColumn     xxx term=standout ctermfg=1 ctermbg=7 guifg=DarkBlue guibg=Grey

Concealxxx ctermfg=7 ctermbg=8 guifg=LightGrey guibg=DarkGrey

SpellBadxxx term=reverse ctermbg=12 gui=undercurl guisp=Red

SpellCapxxx term=reverse ctermbg=9 gui=undercurl guisp=Blue

SpellRare      xxx term=reverse ctermbg=13 gui=undercurl guisp=Magenta

SpellLocal     xxx term=underline ctermbg=11 gui=undercurl guisp=DarkCyan

Pmenuxxx ctermfg=0 ctermbg=13 guibg=LightMagenta

PmenuSelxxx ctermfg=0 ctermbg=7 guibg=Grey

PmenuSbar      xxx ctermbg=7 guibg=Grey

PmenuThumb     xxx ctermbg=0 guibg=Black

TabLinexxx term=underline cterm=underline ctermfg=0 ctermbg=7

gui=underline guibg=LightGrey

TabLineSel     xxx term=bold cterm=bold gui=bold

TabLineFill    xxx term=reverse cterm=reverse gui=reverse

CursorColumn   xxx term=reverse ctermbg=7 guibg=Grey90

CursorLine     xxx term=underline cterm=underline guibg=Grey90

ColorColumn    xxx term=reverse ctermbg=12 guibg=LightRed

Cursorxxx guifg=bg guibg=fg

lCursorxxx guifg=bg guibg=fg

MatchParen     xxx term=reverse ctermbg=11 guibg=Cyan

Normalxxx cleared

Press ENTER or type command to continue:hi Search

Searchxxx term=reverse ctermfg=0 ctermbg=14 guibg=Yellow

Press ENTER or type command to continue:" test setting colors.
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group2 NONE
:hi Group2
:hi clear
:hi Group3
:hi Crash term='asdf
:redir END
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
:%s/ctermfg=\d*/ctermfg=2/
:%s/ctermbg=\d*/ctermbg=3/
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
:" fix the fileformat
:set ff&
:wq!
ENDTEST

:" test clearing one color and all doesn't generate error or warning
:hi NewGroup term=bold cterm=italic ctermfg=DarkBlue ctermbg=Grey gui= guifg=#0

0ff00 guibg=Cyan
E418: Illegal value: guifg=#00ff00Press ENTER or type command to continue:hi Group2 term= cterm=
E418: Illegal value: cterm=

Press ENTER or type command to continue:hi Group3 term=underline cterm=bold
:hi NewGroup
:hi Group2
:redir! >test.out
:hi NewGroup

NewGroupxxx term=bold cterm=italic ctermfg=1 ctermbg=7

Press ENTER or type command to continue:hi Group2

Group2xxx cleared

Press ENTER or type command to continue:hi Group3

Group3xxx term=underline cterm=bold

Press ENTER or type command to continue:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi NewGroup

NewGroupxxx cleared

Press ENTER or type command to continue:hi Group2

Group2xxx cleared

Press ENTER or type command to continue:hi Group2 NONE
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi Group2

Group2xxx cleared

Press ENTER or type command to continue:hi clear
:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group2 NONE
:hi Group2
:hi clear
:hi Group3
:hi Crash term='asdf
:redir END
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
:%s/ctermfg=\d*/ctermfg=2/
:%s/ctermbg=\d*/ctermbg=3/
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
:" fix the fileformat
:set ff&
:wq!
ENDTEST

:hi Group3

Group3xxx cleared

Press ENTER or type command to continue:hi Crash term='asdf
E475: Invalid argument: term='asdf

Press ENTER or type command to continue:redir END
:hi NewGroup
:hi Group2
:hi Group3
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
"test.out" 20 lines, 289 charactersNewGroup       xxx term=bold cterm=italic ctermfg=1 ctermbg=7Group2         xxx clearedGroup3         xxx term=underline cterm=boldNewGroup       xxx clearedGroup2         xxx clearedGroup2         xxx clearedGroup3         xxx clearedE475: Invalid argument: term='asdf~~
~:%s/ctermfg=\d*/ctermfg=2/
2
:%s/ctermbg=\d*/ctermbg=3/
3
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
term='asdf:" fix the fileformat
:set ff&
:wq!
"test.out" 20 lines, 271 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test51 = test61; then \
#	  if diff test.out test51.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test51.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test51.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test53.failed test.ok test.out X* viminfo
cp test53.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test53.in
[?1h="test53.in" 75 lines, 1763 charactersTests for string and html text objects. vim: set ft=vim :

Note that the end-of-line moves the cursor to the next test line.

Also test match() and matchstr()

STARTTEST
:so small.vim
/^start:/
da"
0va'a'rx
02f`da`
0fXdi"
03f'vi'ry
:set quoteescape=+*-
di`
$F"va"oha"i"rz
:"
/^<begin
jfXdit
0fXdit
fXdat
0fXdat:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for string and html text objects. vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 47 lines, 1237 characters written:set ff& cpo+=A
/ENDTEST:put =match('abc', '$', 4, 1) " -1
:put =match('abc', '\zs', 0, 1) " 0
:put =match('abc', '\zs', 0, 2) " 1
:put =match('abc', '\zs', 0, 3) " 2
:put =match('abc', '\zs', 0, 4) " 3
:put =match('abc', '\zs', 0, 5) " -1
:put =match('abc', '\zs', 1, 1) " 1
:put =match('abc', '\zs', 2, 1) " 2
:put =match('abc', '\zs', 3, 1) " 3
:put =match('abc', '\zs', 4, 1) " -1
:/^start:/,/^end:/wq! test.out
ENDTEST

start: "wo\"rd\\" foo
'foo' 'bar' 'piep'
bla bla `quote` blah
out " in "noXno"
"'" 'blah' rep 'buh'
bla `s*`d-`+++`l**` b`la
voo "nah" sdf " asdf" sdf " sdf" sd

<begin>
-<b>asdf<i>Xasdf</i>asdf</b>-
:so! Xdotest
:so small.vim
/^start:/
fo
'foo' 'bar'
xxxxxxxxxxxx

blah
"
' repyyyyy:set quoteescape=+*-
` b`la" sdf"" " asdf" sdf ah" sdf "
voo "zzzzzzzzzzzzzzzzzzzzzzzzzzzz
voo "
:"
/^<begin

</i>asdf</b>-
-<b>asdX<i>a<i />sdf</i>asdf</b>-
</b>-
-<b>asdf<i>Xasdf</i>asdf</b>-
-<b>asdf</b>-
-<b>asdX<i>as<b />df</i>asdf</b>-

--
-<b>
-<b></b>
</begin>
:"
:put =matchstr(\"abcd\", \".\", 0, 2) " b

b
:put =matchstr(\"abcd\", \"..\", 0, 2) " bc

bc
:put =matchstr(\"abcd\", \".\", 2, 0) " c (zero and negative -> first match)

c
:put =matchstr(\"abcd\", \".\", 0, -1) " a

a
:put =match(\"abcd\", \".\", 0, 5) " -1

-1
:put =match(\"abcd\", \".\", 0, -1) " 0

0
:put =match('abc', '.', 0, 1) " 0

0
:put =match('abc', '.', 0, 2) " 1

1
:put =match('abc', '.', 0, 3) " 2

2
:put =match('abc', '.', 0, 4) " -1

-1
:put =match('abc', '.', 1, 1) " 1

1
:put =match('abc', '.', 2, 1) " 2

2
:put =match('abc', '.', 3, 1) " -1

-1
:put =match('abc', '$', 0, 1) " 3

3
:put =match('abc', '$', 0, 2) " -1

-1
:put =match('abc', '$', 1, 1) " 3

3
:put =match('abc', '$', 2, 1) " 3

3
:put =match('abc', '$', 3, 1) " 3

3
:put =match('abc', '$', 4, 1) " -1

-1
:put =match('abc', '\zs', 0, 1) " 0

0
:put =match('abc', '\zs', 0, 2) " 1

1
:put =match('abc', '\zs', 0, 3) " 2

2
:put =match('abc', '\zs', 0, 4) " 3

3
:put =match('abc', '\zs', 0, 5) " -1

-1
:put =match('abc', '\zs', 1, 1) " 1

1
:put =match('abc', '\zs', 2, 1) " 2

2
:put =match('abc', '\zs', 3, 1) " 3

3
:put =match('abc', '\zs', 4, 1) " -1

-1
:/^start:/,/^end:/wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 45 lines, 284 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test53 = test61; then \
#	  if diff test.out test53.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test53.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test53.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test55.failed test.ok test.out X* viminfo
cp test55.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test55.in
[?1h="test55.in" 586 lines, 12256 charactersTests for List and Dictionary types.     vim: set ft=vim :

STARTTEST
:so small.vim
:fun Test(...)
:lang C
:" Creating List directly with different types
:let l = [1, 'as''d', [1, 2, function("strlen")], {'a': 1},]
:$put =string(l)
:$put =string(l[-1])
:$put =string(l[-4])
:try
:  $put =string(l[-5])
:catch
:  $put =v:exception[:14]
:endtry
:" List slices
:$put =string(l[:])
:$put =string(l[1:])
:$put =string(l[:-2])
:$put =string(l[0:8])
:$put =string(l[8:-1])
:":set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for List and Dictionary types.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 580 lines, 12170 characters written:set ff& cpo+=A
/ENDTEST:$put =string(l)
:endfun
:"
:call Test(1, 2, [3, 4], {5: 6})  " This may take a while
:"
:delfunc Test
: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^R=a^M^[:"
:lang C
:redir => a
:try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
:redir END
o^R=a^M^[:"
:"
:/^start:/,$wq! test.out
ENDTEST

start:


:so! Xdotest
:so small.vim
:fun Test(...)

:  :lang C

:  :" Creating List directly with different types

:  :let l = [1, 'as''d', [1, 2, function("strlen")], {'a': 1},]

:  :$put =string(l)

:  :$put =string(l[-1])

:  :$put =string(l[-4])

:  :try

:    :  $put =string(l[-5])

:    :catch

:    :  $put =v:exception[:14]

:    :endtry

:  :" List slices

:  :$put =string(l[:])

:  :$put =string(l[1:])

:  :$put =string(l[:-2])

:  :$put =string(l[0:8])

:  :$put =string(l[8:-1])

:  :"

:  :" List identity

:  :let ll = l

:  :let lx = copy(l)

:  :try

:    :  $put =(l == ll) . (l isnot ll) . (l is ll) . (l == lx) . (l is lx) . (l

isnot lx)

:    :catch

:    :  $put =v:exception

:    :endtry

:  :"

:  :" Creating Dictionary directly with different types

:  :let d = {001: 'asd', 'b': [1, 2, function('strlen')], -1: {'a': 1},}

:  :$put =string(d) . d.1

:  :$put =string(sort(keys(d)))

:  :$put =string (values(d))

:  :for [key, val] in items(d)

:    :  $put =key . ':' . string(val)

:    :  unlet key val

:    :endfor

:  :call extend  (d, {3:33, 1:99})

:  :call extend(d, {'b':'bbb', 'c':'ccc'}, "keep")

:  :try

:    :  call extend(d, {3:333,4:444}, "error")

:    :catch

:    :  $put =v:exception[:15] . v:exception[-1:-1]

:    :endtry

:  :$put =string(d)

:  :call filter(d, 'v:key =~ ''[ac391]''')

:  :$put =string(d)

:  :"

:  :" Dictionary identity

:  :let dd = d

:  :let dx = copy(d)

:  :try

:    :  $put =(d == dd) . (d isnot dd) . (d is dd) . (d == dx) . (d is dx) . (d

isnot dx)

:    :catch

:    :  $put =v:exception

:    :endtry

:  :"

:  :"

:  :" removing items with :unlet

:  :unlet l[2]

:  :$put =string(l)

:  :let l = range(8)

:  :try

:    :unlet l[:3]

:    :unlet l[1:]

:    :catch

:    :$put =v:exception

:    :endtry

:  :$put =string(l)

:  :"

:  :unlet d.c

:  :unlet d[-1]

:  :$put =string(d)

:  :"

:  :" removing items out of range: silently skip items that don't exist

:  let l = [0, 1, 2, 3]

:  :unlet l[2:1]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[2:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[2:3]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[2:4]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[2:5]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-1:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-2:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-3:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-4:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-5:2]

:  :$put =string(l)

:  let l = [0, 1, 2, 3]

:  :unlet l[-6:2]

:  :$put =string(l)

:  :"

:  :" assignment to a list

:  :let l = [0, 1, 2, 3]

:  :let [va, vb] = l[2:3]

:  :$put =va

:  :$put =vb

:  :try

:    :  let [va, vb] = l

:    :catch

:    :  $put =v:exception[:14]

:    :endtry

:  :try

:    :  let [va, vb] = l[1:1]

:    :catch

:    :  $put =v:exception[:14]

:    :endtry

:  :"

:  :" manipulating a big Dictionary (hashtable.c has a border of 1000 entries)

:  :let d = {}

:  :for i in range(1500)

:    : let d[i] = 3000 - i

:    :endfor

:  :$put =d[0] . ' ' . d[100] . ' ' . d[999] . ' ' . d[1400] . ' ' . d[1499]

:  :try

:    :  let n = d[1500]

:    :catch

:    :  $put =substitute(v:exception, '\v(.{14}).*( \d{4}).*', '\1\2', '')

:    :endtry

:  :" lookup each items

:  :for i in range(1500)

:    : if d[i] != 3000 - i

:      :  $put =d[i]

:      : endif

:    :endfor

:  : let i += 1

:  :" delete even items

:  :while i >= 2

:    : let i -= 2

:    : unlet d[i]

:    :endwhile

:  :$put =get(d, 1500 - 100, 'NONE') . ' ' . d[1]

:  :" delete odd items, checking value, one intentionally wrong

:  :let d[33] = 999

:  :let i = 1

:  :while i < 1500

:    : if d[i] != 3000 - i

:      :  $put =i . '=' . d[i]

:      : else

:      :  unlet d[i]

:      : endif

:    : let i += 2

:    :endwhile

:  :$put =string(d)  " must be almost empty now

:  :unlet d

:  :"

:  :" Dictionary function

:  :let dict = {}

:  :func dict.func(a) dict

:    :  $put =a:a . len(self.data)

:    :endfunc

:    :let dict.data = [1,2,3]

:    :call dict.func("len: ")

:    :let x = dict.func("again: ")

:    :let Fn = dict.func

:    :call Fn('xxx')

:    :" 

:    :" Function in script-local List or Dict

:    :let g:dict = {}

:    :function g:dict.func() dict

:      :  $put ='g:dict.func'.self.foo[1].self.foo[0]('asdf')

:      :endfunc

:      :let g:dict.foo = ['-', 2, 3]

:      :call insert(g:dict.foo, function('strlen'))

:      :call g:dict.func()

:      :" 

:      :" Nasty: remove func from Dict that's being called (works)

:      :let d = {1:1}

:      :func d.func(a)

::  return "a:". a:a

::endfunc

::$put =d.func(string(remove(d, 'func')))

::"

::" Nasty: deepcopy() dict that refers to itself (fails when noref used

)
::let d = {1:1, 2:2}

::let l = [4, d, 6]

::let d[3] = l

::let dc = deepcopy(d)

::try

::  let dc = deepcopy(d, 1)

::catch

::  $put =v:exception[:14]

::endtry

::let l2 = [0, l, l, 3]

::let l[1] = l2

::let l3 = deepcopy(l2)

::$put ='same list: ' . (l3[1] is l3[2])

::"

::" Locked variables

::for depth in range(5)

::  $put ='depth is ' . depth

::  for u in range(3)

::    unlet l

::    let l = [0, [1, [2, 3]], {4: 5, 6: {7: 8}}]

::    exe "lockvar " . depth . " l"

::    if u == 1

::      exe "unlockvar l"

::    elseif u == 2

::      exe "unlockvar " . depth . " l"

::    endif

::    let ps = islocked("l").islocked("l[1]").islocked("l[1][1]").i

slocked("l[1][1][0]").'-'.islocked("l[2]").islocked("l[2]['6']").islocked("l[2][

'6'][7]")

::    $put =ps

::    let ps = ''

::    try

::      let l[1][1][0] = 99

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[1][1] = [99]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[1] = [99]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[2]['6'][7] = 99

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[2][6] = {99: 99}

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l[2] = {99: 99}

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      let l = [99]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    $put =ps

::  endfor

::endfor

::"

::" Unletting locked variables

::$put ='Unletting:'

::for depth in range(5)

::  $put ='depth is ' . depth

::  for u in range(3)

::    unlet l

::    let l = [0, [1, [2, 3]], {4: 5, 6: {7: 8}}]

::    exe "lockvar " . depth . " l"

::    if u == 1

::      exe "unlockvar l"

::    elseif u == 2

::      exe "unlockvar " . depth . " l"

::    endif

::    let ps = islocked("l").islocked("l[1]").islocked("l[1][1]").i

slocked("l[1][1][0]").'-'.islocked("l[2]").islocked("l[2]['6']").islocked("l[2][

'6'][7]")

::    $put =ps

::    let ps = ''

::    try

::      unlet l[2]['6'][7]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[2][6]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[2]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[1][1][0]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[1][1]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l[1]

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    try

::      unlet l

::      let ps .= 'p'

::    catch

::      let ps .= 'F'

::    endtry

::    $put =ps

::  endfor

::endfor

::"

::" Locked variables and :unlet or list / dict functions

::$put ='Locks and commands or functions:'

::"

::$put ='No :unlet after lock on dict:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar 1 d

::try

::  unlet d.a

::  $put ='did :unlet'

::catch

::  $put =v:exception[:16]

::endtry

::$put =string(d)

::"

::$put =':unlet after lock on dict item:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar d.a

::try

::  unlet d.a

::  $put ='did :unlet'

::catch

::  $put =v:exception[:16]

::endtry

::$put =string(d)

::"

::$put ='filter() after lock on dict item:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar d.a

::try

::  call filter(d, 'v:key != "a"')

::  $put ='did filter()'

::catch

::  $put =v:exception[:16]

::endtry

::$put =string(d)

::"

::$put ='map() after lock on dict:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar 1 d

::try

::  call map(d, 'v:val + 200')

::  $put ='did map()'

::catch

::  $put =v:exception[:16]

::endtry

::$put =string(d)

::"

::$put ='No extend() after lock on dict item:'

::unlet! d

::let d = {'a': 99, 'b': 100}

::lockvar d.a

::try

::  $put =string(extend(d, {'a': 123}))

::  $put ='did extend()'

::catch

::  $put =v:exception[:14]

::endtry

::$put =string(d)

::"

::$put ='No remove() of write-protected scope-level variable:'

::fun! Tfunc(this_is_a_loooooooooong_parameter_name)

::  try

::    $put =string(remove(a:, 'this_is_a_loooooooooong_parameter_na

me'))

::    $put ='did remove()'

::  catch

::    $put =v:exception[:14]

::  endtry

::endfun

::call Tfunc('testval')

::"

::$put ='No extend() of write-protected scope-level variable:'

::fun! Tfunc(this_is_a_loooooooooong_parameter_name)

::  try

::    $put =string(extend(a:, {'this_is_a_loooooooooong_parameter

_name': 1234}))

::    $put ='did extend()'

::  catch

::    $put =v:exception[:14]

::  endtry

::endfun

::call Tfunc('testval')

::"

::$put ='No :unlet of variable in locked scope:'

::let b:testvar = 123

::lockvar 1 b:

::try

::  unlet b:testvar

::  $put ='b:testvar was :unlet: '. (!exists('b:testvar'))

::catch

::  $put =v:exception[:16]

::endtry

::unlockvar 1 b:

::unlet! b:testvar

::"

::$put ='No :let += of locked list variable:'

::let l = ['a', 'b', 3]

::lockvar 1 l

::try

::  let l += ['x']

::  $put ='did :let +='

::catch

::  $put =v:exception[:14]

::endtry

::$put =string(l)

::"

::unlet l

::let l = [1, 2, 3, 4]

::lockvar! l

::$put =string(l)

::unlockvar l[1]

::unlet l[0:1]

::$put =string(l)

::unlet l[1:2]

::$put =string(l)

::unlockvar l[1]

::let l[0:1] = [0, 1]

::$put =string(l)

::let l[1:2] = [0, 1]

::$put =string(l)

::unlet l

::" :lockvar/islocked() triggering script autoloading

::set rtp+=./sautest

::lockvar g:footest#x

::unlockvar g:footest#x

::$put ='locked g:footest#x:'.islocked('g:footest#x')

::$put ='exists g:footest#x:'.exists('g:footest#x')

::$put ='g:footest#x: '.g:footest#x

::"

::" a:000 function argument

::" first the tests that should fail

::try

::  let a:000 = [1, 2]

::catch

::  $put ='caught a:000'

::endtry

::try

::  let a:000[0] = 9

::catch

::  $put ='caught a:000[0]'

::endtry

::try

::  let a:000[2] = [9, 10]

::catch

::  $put ='caught a:000[2]'

::endtry

::try

::  let a:000[3] = {9: 10}

::catch

::  $put ='caught a:000[3]'

::endtry

::" now the tests that should pass

::try

::  let a:000[2][1] = 9

::  call extend(a:000[2], [5, 6])

::  let a:000[3][5] = 8

::  let a:000[3]['a'] = 12

::  $put =string(a:000)

::catch

::  $put ='caught ' . v:exception

::endtry

::"

::" reverse(), sort(), uniq()

::let l = ['-0', 'A11', 2, 2, 'xaaa', 4, 'foo', 'foo6', 'foo', [0, 

1, 2], 'x8', [0, 1, 2], 1.5]

::$put =string(uniq(copy(l)))

::$put =string(reverse(l))

::$put =string(reverse(reverse(l)))

::$put =string(sort(l))

::$put =string(reverse(sort(l)))

::$put =string(sort(reverse(sort(l))))

::$put =string(uniq(sort(l)))

::let l=[7, 9, 'one', 18, 12, 22, 'two', 10.0e-16, -1, 'three', 0xf

f, 0.22, 'four']

::$put =string(sort(copy(l), 'n'))

::let l=[7, 9, 18, 12, 22, 10.0e-16, -1, 0xff, 0, -0, 0.22, 'bar', 

'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', {}, []]

::$put =string(sort(copy(l), 1))

::$put =string(sort(copy(l), 'i'))

::$put =string(sort(copy(l)))

::"

::" splitting a string to a List

::$put =string(split('  aa  bb '))

::$put =string(split('  aa  bb  ', '\W\+', 0))

::$put =string(split('  aa  bb  ', '\W\+', 1))

::$put =string(split('  aa  bb  ', '\W', 1))

::$put =string(split(':aa::bb:', ':', 0))

::$put =string(split(':aa::bb:', ':', 1))

::$put =string(split('aa,,bb, cc,', ',\s*', 1))

::$put =string(split('abc', '\zs'))

::$put =string(split('abc', '\zs', 1))

::"

::" compare recursively linked list and dict

::let l = [1, 2, 3, 4]

::let d = {'1': 1, '2': l, '3': 3}

::let l[1] = d

::$put =(l == l)

::$put =(d == d)

::$put =(l != deepcopy(l))

::$put =(d != deepcopy(d))

::"

::" compare complex recursively linked list and dict

::let l = []

::call add(l, l)

::let dict4 = {"l": l}

::call add(dict4.l, dict4)

::let lcopy = deepcopy(l)

::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)

::"

::" test for range assign

::let l = [0]

::let l[:] = [1, 2]

::$put =string(l)

::endfun
:$put =string(l)
:endfun
:"
:call Test(1, 2, [3, 4], {5: 6})  " This may take a while
:"
:delfunc Test
: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^R=a^M^[:"
:lang C
:redir => a
:try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
:redir END
o^R=a^M^[:"
:"
:/^start:/,$wq! test.out
ENDTEST

start:

:"
:call Test(1, 2, [3, 4], {5: 6})  " This may take a while
Error detected while processing function Test:
line   76:

E684: list index out of range: 1

line   91:

E684: list index out of range: 2

line  271:

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

E108: No such variable: "l"

line  441:

E741: Value is locked: l[0:1]

line  443:

E741: Value is locked: l[1:2]

line  446:

E741: Value is locked: l[0:1] = [0, 1]

line  448:

E741: Value is locked: l[1:2] = [0, 1]

Press ENTER or type command to continue:"
['BAR', 'Bar', 'FOO', 'FOOBAR', 'Foo', 'bar', 'foo', -1, 0, 0, 0.22, 1.0e-15, 122, 18, 22, 255, 7, 9, [], {}]
['aa', 'bb']
['aa', 'bb']
['', 'aa', 'bb', '']
['', '', 'aa', '', 'bb', '', '']
['aa', '', 'bb']
['', 'aa', '', 'bb', '']
['aa', '', 'bb', 'cc', '']
['a', 'b', 'c']
['', 'a', '', 'b', '', 'c', '']
1
1
0
0
1
1
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
{'a': {'b': 'B'}}
Vim(call):E737: a
{'a': {'b': 'B'}}
[1, 2]
~

:delfunc Test
: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
=a
Vim(foldopen):E490::"
:lang C
:redir => a
:try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
Error detected while processing :
E492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*'

)|endtry

Press ENTER or type command to continue:redir END
['BAR', 'Bar', 'FOO', 'FOOBAR', 'Foo', 'bar', 'foo', -1, 0, 0, 0.22, 1.0e-15, 122, 18, 22, 255, 7, 9, [], {}]
['aa', 'bb']
=a





Error detected while processing :
E492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*'))|endtry

:"
:"
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 197 lines, 3821 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test55 = test61; then \
#	  if diff test.out test55.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test55.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test55.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test56.failed test.ok test.out X* viminfo
cp test56.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test56.in
[?1h="test56.in" 21 lines, 457 charactersTest for script-local function.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:set nocp viminfo+=nviminfo
:/^start:/+1,/^end:/-1w! Xtest.vim
:source Xtest.vim
_x
:$-1,$wq! test.out
ENDTEST

start:
fun <SID>DoLast()
  call append(line('$'), "last line")
endfun
fun s:DoNothing()
  call append(line('$'), "nothing line")
endfun
nnoremap <buffer> _x    :call <SID>DoNothing()<bar>call <SID>DoLast()<bar>delfunnc <SID>DoNothing<bar>delfunc <SID>DoLast<cr>
end:
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for script-local function.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 7 lines, 120 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:"
:set nocp viminfo+=nviminfo
:/^start:/+1,/^end:/-1w! Xtest.vim
"Xtest.vim" [New] 7L, 251C written:source Xtest.vim
:call <SNR>4_DoNothing()|call <SNR>4_DoLast()|delfunc <SNR>4_DoNothing|delfunc 

<SNR>4_DoLast
Press ENTER or type command to continueTest for script-local function.     vim: set ft=vim :nothing line:$-1,$wq! test.out
"test.out" [New] 2L, 23C written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test56 = test61; then \
#	  if diff test.out test56.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test56.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test56.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test57.failed test.ok test.out X* viminfo
cp test57.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test57.in
[?1h="test57.in" 545 lines, 4110 charactersTests for :sort command.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:/^t01:/+1,/^t02/-1sort
:/^t02:/+1,/^t03/-1sort n
:/^t03:/+1,/^t04/-1sort x
:/^t04:/+1,/^t05/-1sort u
:/^t05:/+1,/^t06/-1sort!
:/^t06:/+1,/^t07/-1sort! n
:/^t07:/+1,/^t08/-1sort! u
:/^t08:/+1,/^t09/-1sort o
:/^t09:/+1,/^t10/-1sort! x
:/^t10:/+1,/^t11/-1sort/./
:/^t11:/+1,/^t12/-1sort/../
:/^t12:/+1,/^t13/-1sort/../u
:/^t13:/+1,/^t14/-1sort/./n
:/^t14:/+1,/^t15/-1sort/./r
:/^t15:/+1,/^t16/-1sort/../r
:/^t16:/+1,/^t17/-1sort/./rn
:/^t17:/+1,/^t18/-1sort/\d/
:/^t18:/+1,/^t19/-1sort/\d/r:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :sort command.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 33 lines, 920 characters written:set ff& cpo+=A
/ENDTEST:/^t21:/+1,/^t22/-1sort/\d\d/
:/^t22:/+1,/^t23/-1sort/\d\d/n
:/^t23:/+1,/^t24/-1sort/\d\d/x
:/^t24:/+1,/^t25/-1sort/\d\d/r
:/^t25:/+1,/^t26/-1sort/\d\d/rn
:/^t26:/+1,/^t27/-1sort/\d\d/rx
:/^t27:/+1,/^t28/-1sort no
:/^t28:/+1,/^t29/-1sort b
:/^t29:/+1,/^t30/-1sort b
:/^t30:/+1,/^t31/-1sort f
:/^t01:/,$wq! test.out
ENDTEST

t01: alphebetical
abc
ab
a
a321
a123
a122
b321
b123
c123d
:so! Xdotest
:so small.vim
:"
:/^t01:/+1,/^t02/-1sort
 123b2
a123
a
ababc:/^t02:/+1,/^t03/-1sort n









b123
b321
b321
b321b
b322b
c123d
c321d
t02: numeric
abc
:/^t03:/+1,/^t04/-1sort x
a123
b123
c123d
 123b
a321
b321
c321d
b321
b321b
b322b
t03: hexadecimal


a
ab
abc
 123b
a122
a123
a321
b123
b321
b321:/^t04:/+1,/^t05/-1sort u






b321b
b322b
c123d
c321d
t04: alpha, unique
:/^t05:/+1,/^t06/-1sort!
a123
a321
ab
abc
b123
b321
b321b
b322b
c123d
c321d
t05: alpha, reverse
c321d
c123d
b322b
b321b
b321
b321
b123
abc
ab
a321
a123
a122:/^t06:/+1,/^t07/-1sort! n        






a
 123b


t06: numeric, reverse
b322b
:/^t07:/+1,/^t08/-1sort! u
123b
c123d
b123
a123
a122


a
ab
abc
t07: unique, reverse
c321d
c123d
b322b
b321b
b321
b123
abc
ab
a321
a123
a122
a:/^t08:/+1,/^t09/-1sort o         




123b

t08: octal
abc
:/^t09:/+1,/^t10/-1sort! x        
a123
b123
c123d
 123b
a321
b321
c321d
b321
b321b
b322b
t09: reverse, hexadecimal
c321d
c123d
b322b
b321b
b321
b321
b123
a321
a123
a122
 123b
abc:/^t10:/+1,/^t11/-1sort/./        






ab
a


t10: alpha, skip first character
a
:/^t11:/+1,/^t12/-1sort/../       
123b
c123d
a321
b321
b321
b321b
c321d
b322b
ab
abc
t11: alpha, skip first 2 characters
ab
a


a321
b321
b321
b321b
c321d
a122
b322b
a123:/^t12:/+1,/^t13/-1sort/../u






b123
 123b
c123d
abc
t12: alpha, unique, skip first 2 characters
ab
:/^t13:/+1,/^t14/-1sort/./n
b321
b321b
c321d
a122
b322b
a123
b123
 123b
c123d
abc
t13: numeric, skip first character
abc
ab
a


a122
a123
b123
c123d
 123b
a321
b321:/^t14:/+1,/^t15/-1sort/./r






c321d
b321
b321b
b322b
t14: alpha, sort on first character
:/^t15:/+1,/^t16/-1sort/../r
a321
a123
a122
b321
b123
b322b
b321
b321b
c123d
c321d
t15: alpha, sort on first 2 characters
a123b
a123
a122
a321
abc
ab
b123
b321
b322b:/^t16:/+1,/^t17/-1sort/./rn






b321
b321b
c123d
c321d
t16: numeric, sort on first character
abc
:/^t17:/+1,/^t18/-1sort/\d/
b321
b123
c123d
 123b
c321d
b322b
b321
b321b


t17: alpha, skip past first digit
abc
ab
a


a321
b321
b321
b321b
c321d
a122
b322b:/^t18:/+1,/^t19/-1sort/\d/r






a123
b123
 123b
c123d
t18: alpha, sort on first digit
abc
:/^t19:/+1,/^t20/-1sort/\d/n
a122
b123
c123d
 123b
a321
b321
c321d
b322b
b321
b321b
t19: numeric, skip past first digit
abc
ab
a


a321
b321
c321d
b321
b321b
a122
b322b:/^t20:/+1,/^t21/-1sort/\d/rn






a123
b123
c123d
 123b
t20: numeric, sort on first digit
abc
:/^t21:/+1,/^t22/-1sort/\d\d/
a122
b123
c123d
 123b
a321
b321
c321d
b322b
b321
b321b
t21: alpha, skip past first 2 digits
abc
ab
a


a321
b321
b321
b321b
c321d
a122
b322b:/^t22:/+1,/^t23/-1sort/\d\d/n






a123
b123
 123b
c123d
t22: numeric, skip past first 2 digits
abc
:/^t23:/+1,/^t24/-1sort/\d\d/x
b321
c321d
b321
b321b
a122
b322b
a123
b123
c123d
 123b
t23: hexadecimal, skip past first 2 digits
abc
ab
a


a321
b321
b321
a122
a123
b123
b321b:/^t24:/+1,/^t25/-1sort/\d\d/r






c321d
b322b
 123b
c123d
t24: alpha, sort on first 2 digits
abc
:/^t25:/+1,/^t26/-1sort/\d\d/rn
a122
b123
c123d
 123b
a321
b321
c321d
b322b
b321
b321b
t25: numeric, sort on first 2 digits
abc
ab
a


a123
a122
b123
c123d
 123b
a321
b321:/^t26:/+1,/^t27/-1sort/\d\d/rx






c321d
b322b
b321
b321b
t26: hexadecimal, sort on first 2 digits
abc
:/^t27:/+1,/^t28/-1sort no
E474: Invalid argument:/^t28:/+1,/^t29/-1sort b
b321
b123
c123d
 123b
c321d
b322b
b321
b321b


t28: binary


0b000000
0b001000
0b010000
0b100000
0b100010
0b100010
0b100100
0b101000
0b101000
0b101001:/^t29:/+1,/^t30/-1sort b






0b101001
0b101010
0b101100
0b111000
t29: binary with leading characters
:/^t30:/+1,/^t31/-1sort f
a0b001000
0b010000
ab0b100000
0b100010
0b100010
 0b100100
0b101000
0b101000
 0b101001
a0b101001
0b101010
b0b101100
b0b111000
t30: float


-1.1e3
-1.01e3
1.15e-6
0.88
1.234
123.456
t31: done:/^t01:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 501 lines, 3105 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test57 = test61; then \
#	  if diff test.out test57.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test57.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test57.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test60.failed test.ok test.out X* viminfo
cp test60.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test60.in
[?1h="test60.in" 601 lines, 13116 charactersTests for the exists() and has() functions.  vim: set ft=vim ts=8 sw=2 :

STARTTEST
:so small.vim
:function! RunTest(str, result)
    if exists(a:str) == a:resultecho "OK"
    elseecho "FAILED: Checking for " . a:str
    endif
endfunction
:function! TestExists()
    augroup myagroupautocmd! BufEnter*.my     echo "myfile edited"autocmd! FuncUndefined  UndefFun exec "fu UndefFun()\nendfu"
    augroup END
    set rtp+=./sautestlet test_cases = []" valid autocmd group
    let test_cases += [['#myagroup', 1]]
    " valid autocmd group with garbage:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for the exists() and has() functions.  vim: set ft=vim ts=8 sw=2 :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 596 lines, 13023 characters written:set ff& cpo+=A
/ENDTESTendif
    endfunctioncall TestFuncArg("arg1", "arg2")echo ' g:footest#x =' g:footest#x
    echo '   footest#F()' footest#F()
    echo 'UndefFun()' UndefFun()redir END
endfunction
:call TestExists()
:"
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
:while getchar(1) | call getchar() | endwhile
ENDTEST


:so! Xdotest
:so small.vim
:function! RunTest(str, result)

:      if exists(a:str) == a:result

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED: Checking for " . a:str

:        endif

:  endfunction
endif
    endfunctioncall TestFuncArg("arg1", "arg2")echo ' g:footest#x =' g:footest#x
:function! TestExists()

:      augroup myagroup

:  ^Iautocmd! BufEnter       *.my     echo "myfile edited"

:  ^Iautocmd! FuncUndefined  UndefFun exec "fu UndefFun()\nendfu"

:      augroup END

:      set rtp+=./sautest

:  

:      let test_cases = []

:  

:      " valid autocmd group

:      let test_cases += [['#myagroup', 1]]

:      " valid autocmd group with garbage

:      let test_cases += [['#myagroup+b', 0]]

:      " Valid autocmd group and event

:      let test_cases += [['#myagroup#BufEnter', 1]]

:      " Valid autocmd group, event and pattern

:      let test_cases += [['#myagroup#BufEnter#*.my', 1]]

:      " Valid autocmd event

:      let test_cases += [['#BufEnter', 1]]

:      " Valid autocmd event and pattern

:      let test_cases += [['#BufEnter#*.my', 1]]

:      " Non-existing autocmd group or event

:      let test_cases += [['#xyzagroup', 0]]

:      " Non-existing autocmd group and valid autocmd event

:      let test_cases += [['#xyzagroup#BufEnter', 0]]

:      " Valid autocmd group and event with no matching pattern

:      let test_cases += [['#myagroup#CmdwinEnter', 0]]

:      " Valid autocmd group and non-existing autocmd event

:      let test_cases += [['#myagroup#xyzacmd', 0]]

:      " Valid autocmd group and event and non-matching pattern

:      let test_cases += [['#myagroup#BufEnter#xyzpat', 0]]

:      " Valid autocmd event and non-matching pattern

:      let test_cases += [['#BufEnter#xyzpat', 0]]

:      " Empty autocmd group, event and pattern

:      let test_cases += [['###', 0]]

:      " Empty autocmd group and event or empty event and pattern

:      let test_cases += [['##', 0]]

:      " Valid autocmd event

:      let test_cases += [['##FileReadCmd', 1]]

:      " Non-existing autocmd event

:      let test_cases += [['##MySpecialCmd', 0]]

:  

:      " Existing and working option (long form)

:      let test_cases += [['&textwidth', 1]]

:      " Existing and working option (short form)

:      let test_cases += [['&tw', 1]]

:      " Existing and working option with garbage

:      let test_cases += [['&tw-', 0]]

:      " Global option

:      let test_cases += [['&g:errorformat', 1]]

:      " Local option

:      let test_cases += [['&l:errorformat', 1]]

:      " Negative form of existing and working option (long form)

:      let test_cases += [['&nojoinspaces', 0]]

:      " Negative form of existing and working option (short form)

:      let test_cases += [['&nojs', 0]]

:      " Non-existing option

:      let test_cases += [['&myxyzoption', 0]]

:  

:      " Existing and working option (long form)

:      let test_cases += [['+incsearch', 1]]

:      " Existing and working option with garbage

:      let test_cases += [['+incsearch!1', 0]]

:      " Existing and working option (short form)

:      let test_cases += [['+is', 1]]

:      " Existing option that is hidden.

:      let test_cases += [['+autoprint', 0]]

:  

:      " Existing environment variable

:      let $EDITOR_NAME = 'Vim Editor'

:      let test_cases += [['$EDITOR_NAME', 1]]

:      " Non-existing environment variable

:      let test_cases += [['$NON_ENV_VAR', 0]]

:  

:      " Valid internal function

:      let test_cases += [['*bufnr', 1]]

:      " Valid internal function with ()

:      let test_cases += [['*bufnr()', 1]]

:      " Non-existing internal function

:      let test_cases += [['*myxyzfunc', 0]]

:      " Valid internal function with garbage

:      let test_cases += [['*bufnr&6', 0]]

:  

:      " Valid user defined function

:      let test_cases += [['*TestExists', 1]]

:      " Non-existing user defined function

:      let test_cases += [['*MyxyzFunc', 0]]

:  

:      " Function that may be created by FuncUndefined event

:      let test_cases += [['*UndefFun', 0]]

:      " Function that may be created by script autoloading

:      let test_cases += [['*footest#F', 0]]

:  

:      redir! > test.out

:  

:      for [test_case, result] in test_cases

:            echo test_case . ": " . result

:            call RunTest(test_case, result)

:        endfor

:  

:      " Valid internal command (full match)

:      echo ':edit: 2'

:      if exists(':edit') == 2

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid internal command (full match) with garbage

:      echo ':edit/a: 0'

:      if exists(':edit/a') == 0

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid internal command (partial match)

:      echo ':q: 1'

:      if exists(':q') == 1

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing internal command

:      echo ':invalidcmd: 0'

:      if !exists(':invalidcmd')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " User defined command (full match)

:      command! MyCmd :echo 'My command'

:      echo ':MyCmd: 2'

:      if exists(':MyCmd') == 2

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " User defined command (partial match)

:      command! MyOtherCmd :echo 'Another command'

:      echo ':My: 3'

:      if exists(':My') == 3

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Command modifier

:      echo ':rightbelow: 2'

:      if exists(':rightbelow') == 2

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing user defined command (full match)

:      delcommand MyCmd

:  

:      echo ':MyCmd: 0'

:      if !exists(':MyCmd')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing user defined command (partial match)

:      delcommand MyOtherCmd

:  

:      echo ':My: 0'

:      if !exists(':My')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local variable

:      let local_var = 1

:      echo 'local_var: 1'

:      if exists('local_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local variable with garbage

:      let local_var = 1

:      echo 'local_var%n: 0'

:      if !exists('local_var%n')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing local variable

:      unlet local_var

:      echo 'local_var: 0'

:      if !exists('local_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing autoload variable that may be autoloaded

:      echo 'footest#x: 0'

:      if !exists('footest#x')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local list

:      let local_list = ["blue", "orange"]

:      echo 'local_list: 1'

:      if exists('local_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local list item

:      echo 'local_list[1]: 1'

:      if exists('local_list[1]')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local list item with garbage

:      echo 'local_list[1]+5: 0'

:      if !exists('local_list[1]+5')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Invalid local list item

:      echo 'local_list[2]: 0'

:      if !exists('local_list[2]')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing local list

:      unlet local_list

:      echo 'local_list: 0'

:      if !exists('local_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Valid local dictionary

:      let local_dict = {"xcord":100, "ycord":2}

:      echo 'local_dict: 1'

:      if exists('local_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing local dictionary

:      unlet local_dict

:      echo 'local_dict: 0'

:      if !exists('local_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing local curly-brace variable

:      let str = "local"

:      let curly_{str}_var = 1

:      echo 'curly_' . str . '_var: 1'

:      if exists('curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing local curly-brace variable

:      unlet curly_{str}_var

:      echo 'curly_' . str . '_var: 0'

:      if !exists('curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:  

:      " Existing global variable

:      let g:global_var = 1

:      echo 'g:global_var: 1'

:      if exists('g:global_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing global variable with garbage

:      echo 'g:global_var-n: 1'

:      if !exists('g:global_var-n')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing global variable

:      unlet g:global_var

:      echo 'g:global_var: 0'

:      if !exists('g:global_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing global list

:      let g:global_list = ["blue", "orange"]

:      echo 'g:global_list: 1'

:      if exists('g:global_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing global list

:      unlet g:global_list

:      echo 'g:global_list: 0'

:      if !exists('g:global_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing global dictionary

:      let g:global_dict = {"xcord":100, "ycord":2}

:      echo 'g:global_dict: 1'

:      if exists('g:global_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing global dictionary

:      unlet g:global_dict

:      echo 'g:global_dict: 0'

:      if !exists('g:global_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing global curly-brace variable

:      let str = "global"

:      let g:curly_{str}_var = 1

:      echo 'g:curly_' . str . '_var: 1'

:      if exists('g:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing global curly-brace variable

:      unlet g:curly_{str}_var

:      echo 'g:curly_' . str . '_var: 0'

:      if !exists('g:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing window variable

:      echo 'w:window_var: 1'

:      let w:window_var = 1

:      if exists('w:window_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing window variable

:      unlet w:window_var

:      echo 'w:window_var: 0'

:      if !exists('w:window_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing window list

:      let w:window_list = ["blue", "orange"]

:      echo 'w:window_list: 1'

:      if exists('w:window_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing window list

:      unlet w:window_list

:      echo 'w:window_list: 0'

:      if !exists('w:window_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing window dictionary

:      let w:window_dict = {"xcord":100, "ycord":2}

:      echo 'w:window_dict: 1'

:      if exists('w:window_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing window dictionary

:      unlet w:window_dict

:      echo 'w:window_dict: 0'

:      if !exists('w:window_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing window curly-brace variable

:      let str = "window"

:      let w:curly_{str}_var = 1

:      echo 'w:curly_' . str . '_var: 1'

:      if exists('w:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing window curly-brace variable

:      unlet w:curly_{str}_var

:      echo 'w:curly_' . str . '_var: 0'

:      if !exists('w:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing buffer variable

:      echo 'b:buffer_var: 1'

:      let b:buffer_var = 1

:      if exists('b:buffer_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing buffer variable

:      unlet b:buffer_var

:      echo 'b:buffer_var: 0'

:      if !exists('b:buffer_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing buffer list

:      let b:buffer_list = ["blue", "orange"]

:      echo 'b:buffer_list: 1'

:      if exists('b:buffer_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing buffer list

:      unlet b:buffer_list

:      echo 'b:buffer_list: 0'

:      if !exists('b:buffer_list')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing buffer dictionary

:      let b:buffer_dict = {"xcord":100, "ycord":2}

:      echo 'b:buffer_dict: 1'

:      if exists('b:buffer_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing buffer dictionary

:      unlet b:buffer_dict

:      echo 'b:buffer_dict: 0'

:      if !exists('b:buffer_dict')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Existing buffer curly-brace variable

:      let str = "buffer"

:      let b:curly_{str}_var = 1

:      echo 'b:curly_' . str . '_var: 1'

:      if exists('b:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing buffer curly-brace variable

:      unlet b:curly_{str}_var

:      echo 'b:curly_' . str . '_var: 0'

:      if !exists('b:curly_{str}_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Script-local tests

:      source test60.vim

:  

:      " Existing Vim internal variable

:      echo 'v:version: 1'

:      if exists('v:version')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Non-existing Vim internal variable

:      echo 'v:non_exists_var: 0'

:      if !exists('v:non_exists_var')

:    ^Iecho "OK"

:        else

:    ^Iecho "FAILED"

:        endif

:  

:      " Function arguments

:      function TestFuncArg(func_arg, ...)

:            echo 'a:func_arg: 1'

:            if exists('a:func_arg')

:                  echo "OK"

:              else

:                  echo "FAILED"

:              endif

:    

:            echo 'a:non_exists_arg: 0'

:            if !exists('a:non_exists_arg')

:                  echo "OK"

:              else

:                  echo "FAILED"

:              endif

:    

:            echo 'a:1: 1'

:            if exists('a:1')

:                  echo "OK"

:              else

:                  echo "FAILED"

:              endif

:    

:            echo 'a:2: 0'

:            if !exists('a:2')

:                  echo "OK"

:              else

:                  echo "FAILED"

:              endif

:        endfunction

:    

:        call TestFuncArg("arg1", "arg2")

:    

:        echo ' g:footest#x =' g:footest#x

:        echo '   footest#F()' footest#F()

:        echo 'UndefFun()' UndefFun()

:    

:        redir END

:    endfunction
endif
    endfunctioncall TestFuncArg("arg1", "arg2")echo ' g:footest#x =' g:footest#x
    echo '   footest#F()' footest#F()
    echo 'UndefFun()' UndefFun()redir END
endfunction
:call TestExists()
:"
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
:while getchar(1) | call getchar() | endwhile
ENDTEST

:call TestExists()
#myagroup: 1
OK

#myagroup+b: 0

OK

#myagroup#BufEnter: 1

OK

#myagroup#BufEnter#*.my: 1

OK

#BufEnter: 1

OK

#BufEnter#*.my: 1

OK

#xyzagroup: 0

OK

#xyzagroup#BufEnter: 0

OK

#myagroup#CmdwinEnter: 0

OK

#myagroup#xyzacmd: 0

OK

#myagroup#BufEnter#xyzpat: 0

OK

#BufEnter#xyzpat: 0

OK

###: 0

OK

##: 0

OK

##FileReadCmd: 1

OK

##MySpecialCmd: 0

OK

&textwidth: 1

OK

&tw: 1

OK

&tw-: 0

OK

&g:errorformat: 1

OK

&l:errorformat: 1

OK

&nojoinspaces: 0

OK

&nojs: 0

OK

&myxyzoption: 0

OK

+incsearch: 1

OK

+incsearch!1: 0

OK

+is: 1

OK

+autoprint: 0

OK

$EDITOR_NAME: 1

OK

$NON_ENV_VAR: 0

OK

*bufnr: 1

OK

*bufnr(): 1

OK

*myxyzfunc: 0

OK

*bufnr&6: 0

OK

*TestExists: 1

OK

*MyxyzFunc: 0

OK

*UndefFun: 0

OK

*footest#F: 0

OK

:edit: 2

OK

:edit/a: 0

OK

:q: 1

OK

:invalidcmd: 0

OK

:MyCmd: 2

OK

:My: 3

OK

:rightbelow: 2

OK

:MyCmd: 0

OK

:My: 0

OK

local_var: 1

OK

local_var%n: 0

OK

local_var: 0

OK

footest#x: 0

OK

local_list: 1

OK

local_list[1]: 1

OK

local_list[1]+5: 0

OK

local_list[2]: 0

OK

local_list: 0

OK

local_dict: 1

OK

local_dict: 0

OK

curly_local_var: 1

OK

curly_local_var: 0

OK

g:global_var: 1

OK

g:global_var-n: 1

OK

g:global_var: 0

OK

g:global_list: 1

OK

g:global_list: 0

OK

g:global_dict: 1

OK

g:global_dict: 0

OK

g:curly_global_var: 1

OK

g:curly_global_var: 0

OK

w:window_var: 1

OK

w:window_var: 0

OK

w:window_list: 1

OK

w:window_list: 0

OK

w:window_dict: 1

OK

w:window_dict: 0

OK

w:curly_window_var: 1

OK

w:curly_window_var: 0

OK

b:buffer_var: 1

OK

b:buffer_var: 0

OK

b:buffer_list: 1

OK

b:buffer_list: 0

OK

b:buffer_dict: 1

OK

b:buffer_dict: 0

OK

b:curly_buffer_var: 1

OK

b:curly_buffer_var: 0

OK

s:script_var: 1

OK

s:script_var: 0

OK

s:script_list: 1

OK

s:script_list: 0

OK

s:script_dict: 1

OK

s:script_dict: 0

OK

s:curly_script_var: 1

OK

s:curly_script_var: 0

OK

*s:my_script_func: 1

OK

*s:my_script_func: 0

OK

v:version: 1

OK

v:non_exists_var: 0

OK

a:func_arg: 1

OK

a:non_exists_arg: 0

OK

a:1: 1

OK

a:2: 0

OK

 g:footest#x = 1

   footest#F() 0

UndefFun() 0

Press ENTER or type command to continue:"
endif
    endfunctioncall TestFuncArg("arg1", "arg2")echo ' g:footest#x =' g:footest#x
    echo '   footest#F()' footest#F()
    echo 'UndefFun()' UndefFun()redir END
endfunction
:call TestExists()
:"
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
:while getchar(1) | call getchar() | endwhile
ENDTEST

:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
"test.out" [Incomplete last line] 206 lines, 1940 characters#myagroup: 1OK
#myagroup+b: 0OK
#myagroup#BufEnter: 1OK#myagroup#BufEnter#*.my: 1OK
#BufEnter: 1OK#BufEnter#*.my: 1OK
#xyzagroup: 0OK#xyzagroup#BufEnter: 0
OK#myagroup#CmdwinEnter: 0
OK
#myagroup#xyzacmd: 0
OK#myagroup#BufEnter#xyzpat: 0
OK:set ff=unix
:w
"test.out" 206 lines, 1941 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test60 = test61; then \
#	  if diff test.out test60.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test60.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test60.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test64.failed test.ok test.out X* viminfo
cp test64.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test64.in
[?1h="test64.in" 654 lines, 27565 charactersTest for regexp patterns without multi-byte support.
See test95 for multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:":set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for regexp patterns without multi-byte support./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 621 lines, 27090 characters written:set ff& cpo+=A
/ENDTEST:for pat in [' \ze*', ' \zs*']
:  try
:    let l = matchlist('x x', pat)
:    $put ='E888 NOT detected for ' . pat
:  catch
:    $put ='E888 detected for ' . pat
:  endtry
:endfor
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
ENDTEST

Substitute here:
<T="">Ta 5</Title>
<T="">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
:so! Xdotest
:so small.vim
:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
:call add(tl, [2, 'ab', 'aab', 'ab'])
:call add(tl, [2, 'b', 'abcdef', 'b'])
:call add(tl, [2, 'bc*', 'abccccdef', 'bcccc'])
:call add(tl, [2, 'bc\{-}', 'abccccdef', 'b'])
:call add(tl, [2, 'bc\{-}\(d\)', 'abccccdef', 'bccccd', 'd'])
:call add(tl, [2, 'bc*', 'abbdef', 'b'])
:call add(tl, [2, 'c*', 'ccc', 'ccc'])
:call add(tl, [2, 'bc*', 'abdef', 'b'])
:call add(tl, [2, 'c*', 'abdef', ''])
:call add(tl, [2, 'bc\+', 'abccccdef', 'bcccc'])
:call add(tl, [2, 'bc\+', 'abdef']) "no match
:"
:"operator \|
:call add(tl, [2, 'a\|ab', 'cabd', 'a']) "alternation is ordered
:"
:call add(tl, [2, 'c\?', 'ccb', 'c'])
:call add(tl, [2, 'bc\?', 'abd', 'b'])
:call add(tl, [2, 'bc\?', 'abccd', 'bc'])
:"
:call add(tl, [2, '\va{1}', 'ab', 'a'])
:"
:call add(tl, [2, '\va{2}', 'aa', 'aa'])
:call add(tl, [2, '\va{2}', 'caad', 'aa'])
:call add(tl, [2, '\va{2}', 'aba'])
:call add(tl, [2, '\va{2}', 'ab'])
:call add(tl, [2, '\va{2}', 'abaa', 'aa'])
:call add(tl, [2, '\va{2}', 'aaa', 'aa'])
:"
:call add(tl, [2, '\vb{1}', 'abca', 'b'])
:call add(tl, [2, '\vba{2}', 'abaa', 'baa'])
:call add(tl, [2, '\vba{3}', 'aabaac'])
:"
:call add(tl, [2, '\v(ab){1}', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(ab){1}', 'dabc', 'ab', 'ab'])
:call add(tl, [2, '\v(ab){1}', 'acb'])
:"
:call add(tl, [2, '\v(ab){0,2}', 'acb', "", ""])
:call add(tl, [2, '\v(ab){0,2}', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(ab){1,2}', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(ab){1,2}', 'ababc', 'abab', 'ab'])
:call add(tl, [2, '\v(ab){2,4}', 'ababcab', 'abab', 'ab'])
:call add(tl, [2, '\v(ab){2,4}', 'abcababa', 'abab', 'ab'])
:"
:call add(tl, [2, '\v(ab){2}', 'abab', 'abab', 'ab'])
:call add(tl, [2, '\v(ab){2}', 'cdababe', 'abab', 'ab'])
:call add(tl, [2, '\v(ab){2}', 'abac'])
:call add(tl, [2, '\v(ab){2}', 'abacabab', 'abab', 'ab'])
:call add(tl, [2, '\v((ab){2}){2}', 'abababab', 'abababab', 'abab', 'ab'])
:call add(tl, [2, '\v((ab){2}){2}', 'abacabababab', 'abababab', 'abab', 'ab'])
:"
:call add(tl, [2, '\v(a{1}){1}', 'a', 'a', 'a'])
:call add(tl, [2, '\v(a{2}){1}', 'aa', 'aa', 'aa'])
:call add(tl, [2, '\v(a{2}){1}', 'aaac', 'aa', 'aa'])
:call add(tl, [2, '\v(a{2}){1}', 'daaac', 'aa', 'aa'])
:call add(tl, [2, '\v(a{1}){2}', 'daaac', 'aa', 'a'])
:call add(tl, [2, '\v(a{1}){2}', 'aaa', 'aa', 'a'])
:call add(tl, [2, '\v(a{2})+', 'adaac', 'aa', 'aa'])
:call add(tl, [2, '\v(a{2})+', 'aa', 'aa', 'aa'])
:call add(tl, [2, '\v(a{2}){1}', 'aa', 'aa', 'aa'])
:call add(tl, [2, '\v(a{1}){2}', 'aa', 'aa', 'a'])
:call add(tl, [2, '\v(a{1}){1}', 'a', 'a', 'a'])
:call add(tl, [2, '\v(a{2}){2}', 'aaaa', 'aaaa', 'aa'])
:call add(tl, [2, '\v(a{2}){2}', 'aaabaaaa', 'aaaa', 'aa'])
:"
:call add(tl, [2, '\v(a+){2}', 'dadaac', 'aa', 'a'])
:call add(tl, [2, '\v(a{3}){2}', 'aaaaaaa', 'aaaaaa', 'aaa'])
:"
:call add(tl, [2, '\v(a{1,2}){2}', 'daaac', 'aaa', 'a'])
:call add(tl, [2, '\v(a{1,3}){2}', 'daaaac', 'aaaa', 'a'])
:call add(tl, [2, '\v(a{1,3}){2}', 'daaaaac', 'aaaaa', 'aa'])
:call add(tl, [2, '\v(a{1,3}){3}', 'daac'])
:call add(tl, [2, '\v(a{1,2}){2}', 'dac'])
:call add(tl, [2, '\v(a+)+', 'daac', 'aa', 'aa'])
:call add(tl, [2, '\v(a+)+', 'aaa', 'aaa', 'aaa'])
:call add(tl, [2, '\v(a+){1,2}', 'aaa', 'aaa', 'aaa'])
:call add(tl, [2, '\v(a+)(a+)', 'aaa', 'aaa', 'aa', 'a'])
:call add(tl, [2, '\v(a{3})+', 'daaaac', 'aaa', 'aaa'])
:call add(tl, [2, '\v(a|b|c)+', 'aacb', 'aacb', 'b'])
:call add(tl, [2, '\v(a|b|c){2}', 'abcb', 'ab', 'b'])
:call add(tl, [2, '\v(abc){2}', 'abcabd', ])
:call add(tl, [2, '\v(abc){2}', 'abdabcabc','abcabc', 'abc'])
:"
:call add(tl, [2, 'a*', 'cc', ''])
:call add(tl, [2, '\v(a*)+', 'cc', ''])
:call add(tl, [2, '\v((ab)+)+', 'ab', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(((ab)+)+)+', 'ab', 'ab', 'ab', 'ab', 'ab'])
:call add(tl, [2, '\v(((ab)+)+)+', 'dababc', 'abab', 'abab', 'abab', 'ab'])
:call add(tl, [2, '\v(a{0,2})+', 'cc', ''])
:call add(tl, [2, '\v(a*)+', '', ''])
:call add(tl, [2, '\v((a*)+)+', '', ''])
:call add(tl, [2, '\v((ab)*)+', '', ''])
:call add(tl, [2, '\va{1,3}', 'aab', 'aa'])
:call add(tl, [2, '\va{2,3}', 'abaa', 'aa'])
:"
:call add(tl, [2, '\v((ab)+|c*)+', 'abcccaba', 'abcccab', '', 'ab'])
:call add(tl, [2, '\v(a{2})|(b{3})', 'bbabbbb', 'bbb', '', 'bbb'])
:call add(tl, [2, '\va{2}|b{2}', 'abab'])
:call add(tl, [2, '\v(a)+|(c)+', 'bbacbaacbbb', 'a', 'a'])
:call add(tl, [2, '\vab{2,3}c', 'aabbccccccccccccc', 'abbc'])
:call add(tl, [2, '\vab{2,3}c', 'aabbbccccccccccccc', 'abbbc'])
:call add(tl, [2, '\vab{2,3}cd{2,3}e', 'aabbbcddee', 'abbbcdde'])
:call add(tl, [2, '\va(bc){2}d', 'aabcbfbc' ])
:call add(tl, [2, '\va*a{2}', 'a', ])
:call add(tl, [2, '\va*a{2}', 'aa', 'aa' ])
:call add(tl, [2, '\va*a{2}', 'aaa', 'aaa' ])
:call add(tl, [2, '\va*a{2}', 'bbbabcc', ])
:call add(tl, [2, '\va*b*|a*c*', 'a', 'a'])
:call add(tl, [2, '\va{1}b{1}|a{1}b{1}', ''])
:"
:"submatches
:call add(tl, [2, '\v(a)', 'ab', 'a', 'a'])
:call add(tl, [2, '\v(a)(b)', 'ab', 'ab', 'a', 'b'])
:call add(tl, [2, '\v(ab)(b)(c)', 'abbc', 'abbc', 'ab', 'b', 'c'])
:call add(tl, [2, '\v((a)(b))', 'ab', 'ab', 'ab', 'a', 'b'])
:call add(tl, [2, '\v(a)|(b)', 'ab', 'a', 'a'])
:"
:call add(tl, [2, '\v(a*)+', 'aaaa', 'aaaa', ''])
:call add(tl, [2, 'x', 'abcdef'])
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:""""" Simple tests """""""""""""""""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
:" Search single groups
:call add(tl, [2, 'ab', 'aab', 'ab'])
:call add(tl, [2, 'ab', 'baced'])
:call add(tl, [2, 'ab', '                    ab           ', 'ab'])
:"
:" Search multi-modifiers
:call add(tl, [2, 'x*', 'xcd', 'x'])
:call add(tl, [2, 'x*', 'xxxxxxxxxxxxxxxxsofijiojgf', 'xxxxxxxxxxxxxxxx'])
:" empty match is good
:call add(tl, [2, 'x*', 'abcdoij', ''])
:" no match here
:call add(tl, [2, 'x\+', 'abcdoin'])
:call add(tl, [2, 'x\+', 'abcdeoijdfxxiuhfij', 'xx'])
:call add(tl, [2, 'x\+', 'xxxxx', 'xxxxx'])
:call add(tl, [2, 'x\+', 'abc x siufhiush xxxxxxxxx', 'x'])
:call add(tl, [2, 'x\=', 'x sdfoij', 'x'])
:call add(tl, [2, 'x\=', 'abc sfoij', '']) " empty match is good
:call add(tl, [2, 'x\=', 'xxxxxxxxx c', 'x'])
:call add(tl, [2, 'x\?', 'x sdfoij', 'x'])
:" empty match is good
:call add(tl, [2, 'x\?', 'abc sfoij', ''])
:call add(tl, [2, 'x\?', 'xxxxxxxxxx c', 'x'])
:"
:call add(tl, [2, 'a\{0,0}', 'abcdfdoij', ''])
:" same thing as 'a?'
:call add(tl, [2, 'a\{0,1}', 'asiubid axxxaaa', 'a'])
:" same thing as 'a\{0,1}'
:call add(tl, [2, 'a\{1,0}', 'asiubid axxxaaa', 'a'])
:call add(tl, [2, 'a\{3,6}', 'aa siofuh'])
:call add(tl, [2, 'a\{3,6}', 'aaaaa asfoij afaa', 'aaaaa'])
:call add(tl, [2, 'a\{3,6}', 'aaaaaaaa', 'aaaaaa'])
:call add(tl, [2, 'a\{0}', 'asoiuj', ''])
:call add(tl, [2, 'a\{2}', 'aaaa', 'aa'])
:call add(tl, [2, 'a\{2}', 'iuash fiusahfliusah fiushfilushfi uhsaifuh askfj na

sfvius afg aaaa sfiuhuhiushf', 'aa'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, 'a\{2}', 'abcdefghijklmnopqrestuvwxyz1234567890'])
:" same thing as 'a*'
:call add(tl, [2, 'a\{0,}', 'oij sdigfusnf', ''])
:call add(tl, [2, 'a\{0,}', 'aaaaa aa', 'aaaaa'])
:call add(tl, [2, 'a\{2,}', 'sdfiougjdsafg'])
:call add(tl, [2, 'a\{2,}', 'aaaaasfoij ', 'aaaaa'])
:call add(tl, [2, 'a\{5,}', 'xxaaaaxxx '])
:call add(tl, [2, 'a\{5,}', 'xxaaaaaxxx ', 'aaaaa'])
:call add(tl, [2, 'a\{,0}', 'oidfguih iuhi hiu aaaa', ''])
:call add(tl, [2, 'a\{,5}', 'abcd', 'a'])
:call add(tl, [2, 'a\{,5}', 'aaaaaaaaaa', 'aaaaa'])
:" leading star as normal char when \{} follows
:call add(tl, [2, '^*\{4,}$', '***'])
:call add(tl, [2, '^*\{4,}$', '****', '****'])
:call add(tl, [2, '^*\{4,}$', '*****', '*****'])
:" same thing as 'a*'
:call add(tl, [2, 'a\{}', 'bbbcddiuhfcd', ''])
:call add(tl, [2, 'a\{}', 'aaaaioudfh coisf jda', 'aaaa'])
:"
:call add(tl, [2, 'a\{-0,0}', 'abcdfdoij', ''])
:" anti-greedy version of 'a?'
:call add(tl, [2, 'a\{-0,1}', 'asiubid axxxaaa', ''])
:call add(tl, [2, 'a\{-3,6}', 'aa siofuh'])
:call add(tl, [2, 'a\{-3,6}', 'aaaaa asfoij afaa', 'aaa'])
:call add(tl, [2, 'a\{-3,6}', 'aaaaaaaa', 'aaa'])
:call add(tl, [2, 'a\{-0}', 'asoiuj', ''])
:call add(tl, [2, 'a\{-2}', 'aaaa', 'aa'])
:call add(tl, [2, 'a\{-2}', 'abcdefghijklmnopqrestuvwxyz1234567890'])
:call add(tl, [2, 'a\{-0,}', 'oij sdigfusnf', ''])
:call add(tl, [2, 'a\{-0,}', 'aaaaa aa', ''])
:call add(tl, [2, 'a\{-2,}', 'sdfiougjdsafg'])
:call add(tl, [2, 'a\{-2,}', 'aaaaasfoij ', 'aa'])
:call add(tl, [2, 'a\{-,0}', 'oidfguih iuhi hiu aaaa', ''])
:call add(tl, [2, 'a\{-,5}', 'abcd', ''])
:call add(tl, [2, 'a\{-,5}', 'aaaaaaaaaa', ''])
:" anti-greedy version of 'a*'
:call add(tl, [2, 'a\{-}', 'bbbcddiuhfcd', ''])
:call add(tl, [2, 'a\{-}', 'aaaaioudfh coisf jda', ''])
:"
:" Test groups of characters and submatches
:call add(tl, [2, '\(abc\)*', 'abcabcabc', 'abcabcabc', 'abc'])
:call add(tl, [2, '\(ab\)\+', 'abababaaaaa', 'ababab', 'ab'])
:call add(tl, [2, '\(abaaaaa\)*cd', 'cd', 'cd', ''])
:call add(tl, [2, '\(test1\)\? \(test2\)\?', 'test1 test3', 'test1 ', 'test1', 

''])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(test1\)\= \(test2\) \(test4443\)\=', ' test2 test4443 yupi

iiiiiiiiii', ' test2 test4443', '', 'test2', 'test4443'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(\(sub1\) hello \(sub 2\)\)', 'asterix sub1 hello sub 2 obe

lix', 'sub1 hello sub 2', 'sub1 hello sub 2', 'sub1', 'sub 2'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(\(\(yyxxzz\)\)\)', 'abcdddsfiusfyyzzxxyyxxzz', 'yyxxzz', '

yyxxzz', 'yyxxzz', 'yyxxzz'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\v((ab)+|c+)+', 'abcccaba', 'abcccab', 'ab', 'ab'])
:call add(tl, [2, '\v((ab)|c*)+', 'abcccaba', 'abcccab', '', 'ab'])
:call add(tl, [2, '\v(a(c*)+b)+', 'acbababaaa', 'acbabab', 'ab', ''])
:call add(tl, [2, '\v(a|b*)+', 'aaaa', 'aaaa', ''])
:call add(tl, [2, '\p*', 'aá ^I', 'aá '])
:"
:" Test greedy-ness and lazy-ness
:call add(tl, [2, 'a\{-2,7}','aaaaaaaaaaaaa', 'aa'])
:call add(tl, [2, 'a\{-2,7}x','aaaaaaaaax', 'aaaaaaax'])
:call add(tl, [2, 'a\{2,7}','aaaaaaaaaaaaaaaaaaaa', 'aaaaaaa'])
:call add(tl, [2, 'a\{2,7}x','aaaaaaaaax', 'aaaaaaax'])
:call add(tl, [2, '\vx(.{-,8})yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz','ayxa

','xayzxayz'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\vx(.*)yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz', 'ayxayzx

ayzxa',''])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\v(a{1,2}){-2,3}','aaaaaaa','aaaa','aa'])
:call add(tl, [2, '\v(a{-1,3})+', 'aa', 'aa', 'a'])
:call add(tl, [2, '^\s\{-}\zs\( x\|x$\)', ' x', ' x', ' x'])
:call add(tl, [2, '^\s\{-}\zs\(x\| x$\)', ' x', ' x', ' x'])
:call add(tl, [2, '^\s\{-}\ze\(x\| x$\)', ' x', '', ' x'])
:call add(tl, [2, '^\(\s\{-}\)\(x\| x$\)', ' x', ' x', '', ' x'])
:"
:" Test Character classes
:call add(tl, [2, '\d\+e\d\d','test 10e23 fd','10e23'])
:"
:" Test collections and character range []
:call add(tl, [2, '\v[a]', 'abcd', 'a'])
:call add(tl, [2, 'a[bcd]', 'abcd', 'ab'])
:call add(tl, [2, 'a[b-d]', 'acbd', 'ac'])
:call add(tl, [2, '[a-d][e-f][x-x]d', 'cexdxx', 'cexd'])
:call add(tl, [2, '\v[[:alpha:]]+', 'abcdefghijklmnopqrstuvwxyz6','abcdefghijkl

mnopqrstuvwxyz'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '[[:alpha:]\+]', '6x8','x'])
:call add(tl, [2, '[^abc]\+','abcabcabc'])
:call add(tl, [2, '[^abc]','defghiasijvoinasoiunbvb','d'])
:call add(tl, [2, '[^abc]\+','ddddddda','ddddddd'])
:call add(tl, [2, '[^a-d]\+','aaaAAAZIHFNCddd','AAAZIHFNC'])
:call add(tl, [2, '[a-f]*','iiiiiiii',''])
:call add(tl, [2, '[a-f]*','abcdefgh','abcdef'])
:call add(tl, [2, '[^a-f]\+','abcdefgh','gh'])
:call add(tl, [2, '[a-c]\{-3,6}','abcabc','abc'])
:call add(tl, [2, '[^[:alpha:]]\+','abcccadfoij7787ysf287yrnccdu','7787'])
:call add(tl, [2, '[-a]', '-', '-'])
:call add(tl, [2, '[a-]', '-', '-'])
:call add(tl, [2, '[a-f]*\c','ABCDEFGH','ABCDEF'])
:call add(tl, [2, '[abc][xyz]\c','-af-AF-BY--','BY'])
:" filename regexp
:call add(tl, [2, '[-./[:alnum:]_~]\+', 'log13.file', 'log13.file'])
:" special chars
:call add(tl, [2, '[\]\^\-\\]\+', '\^\\\-\---^', '\^\\\-\---^'])
:" collation elem
:call add(tl, [2, '[[.a.]]\+', 'aa', 'aa'])
:" middle of regexp
:call add(tl, [2, 'abc[0-9]*ddd', 'siuhabc ii'])
:call add(tl, [2, 'abc[0-9]*ddd', 'adf abc44482ddd oijs', 'abc44482ddd'])
:call add(tl, [2, '\_[0-9]\+', 'asfi9888u', '9888'])
:call add(tl, [2, '[0-9\n]\+', 'asfi9888u', '9888'])
:call add(tl, [2, '\_[0-9]\+', "asfi\n9888u", "\n9888"])
:call add(tl, [2, '\_f', "  \na ", "\n"])
:call add(tl, [2, '\_f\+', "  \na ", "\na"])
:call add(tl, [2, '[0-9A-Za-z-_.]\+', " @0_a.A-{ ", "0_a.A-"])
:"
:"""" Test start/end of line, start/end of file
:call add(tl, [2, '^a.', "a_\nb ", "a_"])
:call add(tl, [2, '^a.', "b a \na_"])
:call add(tl, [2, '.a$', " a\n "])
:call add(tl, [2, '.a$', " a b\n_a", "_a"])
:call add(tl, [2, '\%^a.', "a a\na", "a "])
:call add(tl, [2, '\%^a', " a \na "])
:call add(tl, [2, '.a\%$', " a\n "])
:call add(tl, [2, '.a\%$', " a\n_a", "_a"])
:"
:"""" Test recognition of character classes
:call add(tl, [2, '[0-7]\+', 'x0123456789x', '01234567'])
:call add(tl, [2, '[^0-7]\+', '0a;X+% 897', 'a;X+% 89'])
:call add(tl, [2, '[0-9]\+', 'x0123456789x', '0123456789'])
:call add(tl, [2, '[^0-9]\+', '0a;X+% 9', 'a;X+% '])
:call add(tl, [2, '[0-9a-fA-F]\+', 'x0189abcdefg', '0189abcdef'])
:call add(tl, [2, '[^0-9A-Fa-f]\+', '0189g;X+% ab', 'g;X+% '])
:call add(tl, [2, '[a-z_A-Z0-9]\+', ';+aso_SfOij ', 'aso_SfOij'])
:call add(tl, [2, '[^a-z_A-Z0-9]\+', 'aSo_;+% sfOij', ';+% '])
:call add(tl, [2, '[a-z_A-Z]\+', '0abyz_ABYZ;', 'abyz_ABYZ'])
:call add(tl, [2, '[^a-z_A-Z]\+', 'abAB_09;+% yzYZ', '09;+% '])
:call add(tl, [2, '[a-z]\+', '0abcxyz1', 'abcxyz'])
:call add(tl, [2, '[a-z]\+', 'AabxyzZ', 'abxyz'])
:call add(tl, [2, '[^a-z]\+', 'a;X09+% x', ';X09+% '])
:call add(tl, [2, '[^a-z]\+', 'abX0;%yz', 'X0;%'])
:call add(tl, [2, '[a-zA-Z]\+', '0abABxzXZ9', 'abABxzXZ'])
:call add(tl, [2, '[^a-zA-Z]\+', 'ab09_;+ XZ', '09_;+ '])
:call add(tl, [2, '[A-Z]\+', 'aABXYZz', 'ABXYZ'])
:call add(tl, [2, '[^A-Z]\+', 'ABx0;%YZ', 'x0;%'])
:call add(tl, [2, '[a-z]\+\c', '0abxyzABXYZ;', 'abxyzABXYZ'])
:call add(tl, [2, '[A-Z]\+\c', '0abABxzXZ9', 'abABxzXZ'])
:call add(tl, [2, '\c[^a-z]\+', 'ab09_;+ XZ', '09_;+ '])
:call add(tl, [2, '\c[^A-Z]\+', 'ab09_;+ XZ', '09_;+ '])
:call add(tl, [2, '\C[^A-Z]\+', 'ABCOIJDEOIFNSD jsfoij sa', ' jsfoij sa'])
:"
:"""" Tests for \z features
:" match ends at \ze
:call add(tl, [2, 'xx \ze test', 'xx '])
:call add(tl, [2, 'abc\zeend', 'oij abcend', 'abc'])
:call add(tl, [2, 'aa\zebb\|aaxx', ' aabb ', 'aa'])
:call add(tl, [2, 'aa\zebb\|aaxx', ' aaxx ', 'aaxx'])
:call add(tl, [2, 'aabb\|aa\zebb', ' aabb ', 'aabb'])
:call add(tl, [2, 'aa\zebb\|aaebb', ' aabb ', 'aa'])
:" match starts at \zs
:call add(tl, [2, 'abc\zsdd', 'ddabcddxyzt', 'dd'])
:call add(tl, [2, 'aa \zsax', ' ax'])
:call add(tl, [2, 'abc \zsmatch\ze abc', 'abc abc abc match abc abc', 'match'])
:call add(tl, [2, '\v(a \zsif .*){2}', 'a if then a if last', 'if last', 'a if 

last'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\>\zs.', 'aword. ', '.'])
:call add(tl, [2, '\s\+\ze\[/\|\s\zs\s\+', 'is   [a t', '  '])
:"
:"""" Tests for \@= and \& features
:call add(tl, [2, 'abc\@=', 'abc', 'ab'])
:call add(tl, [2, 'abc\@=cd', 'abcd', 'abcd'])
:call add(tl, [2, 'abc\@=', 'ababc', 'ab'])
:" will never match, no matter the input text
:call add(tl, [2, 'abcd\@=e', 'abcd'])
:" will never match
:call add(tl, [2, 'abcd\@=e', 'any text in here ... '])
:call add(tl, [2, '\v(abc)@=..', 'xabcd', 'ab', 'abc'])
:call add(tl, [2, '\(.*John\)\@=.*Bob', 'here is John, and here is B'])
:call add(tl, [2, '\(John.*\)\@=.*Bob', 'John is Bobs friend', 'John is Bob', '

John is Bobs friend'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\<\S\+\())\)\@=', '$((i=i+1))', 'i=i+1', '))'])
:call add(tl, [2, '.*John\&.*Bob', 'here is John, and here is B'])
:call add(tl, [2, '.*John\&.*Bob', 'John is Bobs friend', 'John is Bob'])
:call add(tl, [2, '\v(test1)@=.*yep', 'this is a test1, yep it is', 'test1, yep

', 'test1'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, 'foo\(bar\)\@!', 'foobar'])
:call add(tl, [2, 'foo\(bar\)\@!', 'foo bar', 'foo'])
:call add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if then else'])
:call add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if else ', 'if else ', ' '])
:call add(tl, [2, '\(foo\)\@!bar', 'foobar', 'bar'])
:call add(tl, [2, '\(foo\)\@!...bar', 'foobar'])
:call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' bar foo '])
:call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo bar '])
:call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo xxx ', 'foo'])
:call add(tl, [2, '[ ]\@!\p\%([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:']

):for pat in [' \ze*', ' \zs*']:call add(tl, [2, '[ ]\@!\p\([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:', 

's'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, 'm\k\+_\@=\%(_\@!\k\)\@<=\k\+e', 'mx__xe', 'mx__xe'])
:call add(tl, [2, '\%(\U\@<=S\k*\|S\l\)R', 'SuR', 'SuR'])
:"
:"""" Combining different tests and features
:call add(tl, [2, '[[:alpha:]]\{-2,6}', '787abcdiuhsasiuhb4', 'ab'])
:call add(tl, [2, '', 'abcd', ''])
:call add(tl, [2, '\v(())', 'any possible text', ''])
:call add(tl, [2, '\v%(ab(xyz)c)', '   abxyzc ', 'abxyzc', 'xyz'])
:call add(tl, [2, '\v(test|)empty', 'tesempty', 'empty', ''])
:call add(tl, [2, '\v(a|aa)(a|aa)', 'aaa', 'aa', 'a', 'a'])
:"
:"""" \%u and friends
:call add(tl, [2, '\%d32', 'yes no', ' '])
:call add(tl, [2, '\%o40', 'yes no', ' '])
:call add(tl, [2, '\%x20', 'yes no', ' '])
:call add(tl, [2, '\%u0020', 'yes no', ' '])
:call add(tl, [2, '\%U00000020', 'yes no', ' '])
:call add(tl, [2, '\%d0', "yes\x0ano", "\x0a"])
:"
:""""" \%[abc]
:call add(tl, [2, 'foo\%[bar]', 'fobar'])
:call add(tl, [2, 'foo\%[bar]', 'foobar', 'foobar'])
:call add(tl, [2, 'foo\%[bar]', 'fooxx', 'foo'])
:call add(tl, [2, 'foo\%[bar]', 'foobxx', 'foob'])
:call add(tl, [2, 'foo\%[bar]', 'foobaxx', 'fooba'])
:call add(tl, [2, 'foo\%[bar]', 'foobarxx', 'foobar'])
:call add(tl, [2, 'foo\%[bar]x', 'foobxx', 'foobx'])
:call add(tl, [2, 'foo\%[bar]x', 'foobarxx', 'foobarx'])
:call add(tl, [2, '\%[bar]x', 'barxx', 'barx'])
:call add(tl, [2, '\%[bar]x', 'bxx', 'bx'])
:call add(tl, [2, '\%[bar]x', 'xxx', 'x'])
:call add(tl, [2, 'b\%[[ao]r]', 'bar bor', 'bar'])
:call add(tl, [2, 'b\%[[]]r]', 'b]r bor', 'b]r'])
:call add(tl, [2, '@\%[\w\-]*', '<http://john.net/pandoc/>[@pandoc]', '@pandoc'

]):for pat in [' \ze*', ' \zs*']:"
:"""" Alternatives, must use first longest match
:call add(tl, [2, 'goo\|go', 'google', 'goo'])
:call add(tl, [2, '\<goo\|\<go', 'google', 'goo'])
:call add(tl, [2, '\<goo\|go', 'google', 'goo'])
:"
:"""" Back references
:call add(tl, [2, '\(\i\+\) \1', ' abc abc', 'abc abc', 'abc'])
:call add(tl, [2, '\(\i\+\) \1', 'xgoo goox', 'goo goo', 'goo'])
:call add(tl, [2, '\(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7

\8\9', 'xabcddefghiabcddefghix', 'abcddefghiabcddefghi', 'a', 'b', 'c', 'dd', 'e

', 'f', 'g', 'h', 'i'])
:for pat in [' \ze*', ' \zs*']
:  try:call add(tl, [2, '\(\d*\)a \1b', ' a b ', 'a b', ''])
:call add(tl, [2, '^.\(.\).\_..\1.', "aaa\naaa\nb", "aaa\naaa", 'a'])
:call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.com', 'foo.bat/foo

.com', 'bat'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.bat'])
:call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<=$', 'foo.bat/foo.bat', 'foo.bat/foo

.bat', 'bat', 'bat'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}', '2013-06-27${0}', '$

{0}', '0'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '^\(a*\)\1$', 'aaaaaaaa', 'aaaaaaaa', 'aaaa'])
:call add(tl, [2, '^\(a\{-2,}\)\1\+$', 'aaaaaaaaa', 'aaaaaaaaa', 'aaa'])
:"
:"""" Look-behind with limit
:call add(tl, [2, '<\@<=span.', 'xxspanxx<spanyyy', 'spany'])
:call add(tl, [2, '<\@1<=span.', 'xxspanxx<spanyyy', 'spany'])
:call add(tl, [2, '<\@2<=span.', 'xxspanxx<spanyyy', 'spany'])
:call add(tl, [2, '\(<<\)\@<=span.', 'xxspanxxxx<spanxx<<spanyyy', 'spany', '<<

'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(<<\)\@1<=span.', 'xxspanxxxx<spanxx<<spanyyy'])
:call add(tl, [2, '\(<<\)\@2<=span.', 'xxspanxxxx<spanxx<<spanyyy', 'spany', '<

<'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(foo\)\@<!bar.', 'xx foobar1 xbar2 xx', 'bar2'])
:"
:" look-behind match in front of a zero-width item
:call add(tl, [2, '\v\C%(<Last Changed:\s+)@<=.*$', '" test header'])
:call add(tl, [2, '\v\C%(<Last Changed:\s+)@<=.*$', '" Last Changed: 1970', '19

70'])
:for pat in [' \ze*', ' \zs*']:call add(tl, [2, '\(foo\)\@<=\>', 'foobar'])
:call add(tl, [2, '\(foo\)\@<=\>', 'barfoo', '', 'foo'])
:call add(tl, [2, '\(foo\)\@<=.*', 'foobar', 'bar', 'foo'])
:"
:" complicated look-behind match
:call add(tl, [2, '\(r\@<=\|\w\@<!\)\/', 'x = /word/;', '/'])
:call add(tl, [2, '^[a-z]\+\ze \&\(asdf\)\@<!', 'foo bar', 'foo'])
:"
:""""" \@>
:call add(tl, [2, '\(a*\)\@>a', 'aaaa'])
:call add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa'])
:call add(tl, [2, '^\(.\{-}b\)\@>.', '  abcbd', '  abc', '  ab'])
:call add(tl, [2, '\(.\{-}\)\(\)\@>$', 'abc', 'abc', 'abc', ''])
:" TODO: BT engine does not restore submatch after failure
:call add(tl, [1, '\(a*\)\@>a\|a\+', 'aaaa', 'aaaa'])
:"
:"""" "\_" prepended negated collection matches EOL
:call add(tl, [2, '\_[^8-9]\+', "asfi\n9888", "asfi\n"])
:call add(tl, [2, '\_[^a]\+', "asfi\n9888", "sfi\n9888"])
:"
:"""" Requiring lots of states.
:call add(tl, [2, '[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}', "

12345678-1234-1234-1234-123456789012 ", "12345678-1234-1234-1234-123456789012",

"1234-"])
:for pat in [' \ze*', ' \zs*']
:  try:"
:"""" Skip adding state twice
:call add(tl, [2, '^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=', "#if FOO", 

"#if", ' FOO'])
:for pat in [' \ze*', ' \zs*']:"
:""" Test \%V atom
:call add(tl, [2, '\%>70vGesamt', 'Jean-Michel Charlier & Victor Hubinon\Gesamt

ausgabe [Salleck]    Buck Danny {Jean-Michel Charlier & Victor Hubinon}\Gesamtau

sgabe', 'Gesamt'])
:for pat in [' \ze*', ' \zs*']
:  try:"
:"""" Run the tests
:"
:for t in tl

:  :  let re = t[0]

:  :  let pat = t[1]

:  :  let text = t[2]

:  :  let matchidx = 3

:  :  for engine in [0, 1, 2]

:    :    if engine == 2 && re == 0 || engine == 1 && re == 1

:      :      continue

:      :    endif

:    :    let &regexpengine = engine

:    :    try

:      :      let l = matchlist(text, pat)

:      :    catch

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", caused an exception: \"' . v:exception . '\"'

:      :    endtry

:    :" check the match itself

:    :    if len(l) == 0 && len(t) > matchidx

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", did not match, expected: \"' . t[matchidx] . '\"'

:      :    elseif len(l) > 0 && len(t) == matchidx

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", match: \"' . l[0] . '\", expected no match'

:      :    elseif len(t) > matchidx && l[0] != t[matchidx]

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te
t . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"'

:      :    else

:      :      $put ='OK ' . engine . ' - ' . pat

:      :    endif

:    :    if len(l) > 0

:      :"   check all the nine submatches

:      :      for i in range(1, 9)

::        if len(t) <= matchidx + i

::          let e = ''

::        else

::          let e = t[matchidx + i]

::        endif

::        if l[i] != e

::          $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: 
"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"'

::        endif

::      endfor

:      :      unlet i

:      :    endif

:    :  endfor

:  :endfor
OK 0 - ^\(.\{-}b\)\@>.
OK 1 - ^\(.\{-}b\)\@>.
OK 2 - ^\(.\{-}b\)\@>.
OK 0 - \(.\{-}\)\(\)\@>$
OK 1 - \(.\{-}\)\(\)\@>$
OK 2 - \(.\{-}\)\(\)\@>$
OK 0 - \(a*\)\@>a\|a\+
OK 2 - \(a*\)\@>a\|a\+
OK 0 - \_[^8-9]\+
OK 1 - \_[^8-9]\+
OK 2 - \_[^8-9]\+
OK 0 - \_[^a]\+
OK 1 - \_[^a]\+
OK 2 - \_[^a]\+
OK 0 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
OK 1 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
OK 2 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
OK 0 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
OK 1 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
OK 2 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
OK 0 - \%>70vGesamt
OK 1 - \%>70vGesamt
OK 2 - \%>70vGesamt

:unlet t tl e l
:"
:"""""" multi-line tests """"""""""""""""""""
:let tl = []
:"
:"""" back references
:call add(tl, [2, '^.\(.\).\_..\1.', ['aaa', 'aaa', 'b'], ['XX', 'b']])
:call add(tl, [2, '\v.*\/(.*)\n.*\/\1$', ['./Dir1/Dir2/zyxwvuts.txt', './Dir1/D

ir2/abcdefgh.bat', '', './Dir1/Dir2/file1.txt', './OtherDir1/OtherDir2/file1.txt

'], ['./Dir1/Dir2/zyxwvuts.txt', './Dir1/Dir2/abcdefgh.bat', '', 'XX']])
OK 0 - ^\(.\{-}b\)\@>.
OK 1 - ^\(.\{-}b\)\@>.
:"
:"""" line breaks
:call add(tl, [2, '\S.*\nx', ['abc', 'def', 'ghi', 'xjk', 'lmn'], ['abc', 'def'

, 'XXjk', 'lmn']])
OK 0 - ^\(.\{-}b\)\@>.
:"
:" Check that \_[0-9] matching EOL does not break a following \>
:call add(tl, [2, '\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)

\.\)\{3\}\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>', ['', 'loca

lnet/192.168.0.1', ''], ['', 'localnet/XX', '']])
OK 0 - ^\(.\{-}b\)\@>.
OK 1 - ^\(.\{-}b\)\@>.
:"
:" Check a pattern with a line break and ^ and $
:call add(tl, [2, 'a\n^b$\n^c', ['a', 'b', 'c'], ['XX']])
:"
:call add(tl, [2, '\(^.\+\n\)\1', [' dog', ' dog', 'asdf'], ['XXasdf']])
:"
:"""" Run the multi-line tests
:"
:$put ='multi-line tests'

multi-line tests
:for t in tl

:  :  let re = t[0]

:  :  let pat = t[1]

:  :  let before = t[2]

:  :  let after = t[3]

:  :  for engine in [0, 1, 2]

:    :    if engine == 2 && re == 0 || engine == 1 && re ==1

:      :      continue

:      :    endif

:    :    let &regexpengine = engine

:    :    new

:    :    call setline(1, before)

:    :    exe '%s/' . pat . '/XX/'

:    :    let result = getline(1, '$')

:    :    q!

:    :    if result != after

:      :      $put ='ERROR: pat: \"' . pat . '\", text: \"' . string(before) . 

'\", expected: \"' . string(after) . '\", got: \"' . string(result) . '\"'

:      :    else

:      :      $put ='OK ' . engine . ' - ' . pat

:      :    endif

:    :  endfor

:  :endfor
OK 2 - \%>70vGesamt
multi-line tests
OK 0 - ^.\(.\).\_..\1.
OK 1 - ^.\(.\).\_..\1.
OK 2 - ^.\(.\).\_..\1.
OK 0 - \v.*\/(.*)\n.*\/\1$
OK 1 - \v.*\/(.*)\n.*\/\1$
OK 2 - \v.*\/(.*)\n.*\/\1$
OK 0 - \S.*\nx
OK 1 - \S.*\nx
OK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

:unlet t tl
:"
:" Check that using a pattern on two lines doesn't get messed up by using
:" matchstr() with \ze in between.
:set re=0
/^Substitute here
search hit BOTTOM, continuing at TOP:    let l = matchlist('x x', pat)
:    $put ='E888 NOT detected for ' . pat
:  catch
:    $put ='E888 detected for ' . pat
:  endtry
:endfor
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
ENDTEST

Substitute here:
<T="">Ta 5</Title>
<T="">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

search hit BOTTOM, continuing at TOP:.+1,.+2s/""/\='"'.matchstr(getline("."), '\d\+\ze<').'"'
5">Ta 5</Title>
<T="7">Ac 7</Title>
/^Substitute here
search hit BOTTOM, continuing at TOP:.+1,.+2yank
OK 2 - \%>70vGesamt
multi-line tests
OK 0 - ^.\(.\).\_..\1.
OK 1 - ^.\(.\).\_..\1.
OK 2 - ^.\(.\).\_..\1.
OK 0 - \v.*\/(.*)\n.*\/\1$
OK 1 - \v.*\/(.*)\n.*\/\1$
OK 2 - \v.*\/(.*)\n.*\/\1$
OK 0 - \S.*\nx
OK 1 - \S.*\nx
OK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1


<T="5">Ta 5</Title>

:"
:"
:" Check a pattern with a look beind crossing a line boundary
/^Behind:
search hit BOTTOM, continuing at TOP:  endtry
:endfor
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
ENDTEST

Substitute here:
<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

Visual:
thexe the thexethe
andaxand andaxand
oooxofor foroxooo
search hit BOTTOM, continuing at TOP/\(<\_[xy]\+\)\@3<=start
:.yank
OK 1 - ^.\(.\).\_..\1.
OK 2 - ^.\(.\).\_..\1.
OK 0 - \v.*\/(.*)\n.*\/\1$
OK 1 - \v.*\/(.*)\n.*\/\1$
OK 2 - \v.*\/(.*)\n.*\/\1$
OK 0 - \S.*\nx
OK 1 - \S.*\nx
OK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>


xxstart3

:"
:"
:" Check matching Visual area
/^Visual:
search hit BOTTOM, continuing at TOP<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

Visual:
thexe the thexethe
andaxand andaxand
oooxofor foroxooo
oooxofor foroxooo

Marks:
asdfSasdfsadfEasdf
asdfSas
dfsadfEasdf

Results of test64:
search hit BOTTOM, continuing at TOP
thexe the the:'<,'>s/\%Ve/E/g
3 substitutions on 1 linexE thE thE

andaxand andaxand 
:'<,'>s/\%Va/A/g
6 substitutions on 1 lineAndAxAnd AndAxAnd
oooxofor forox
oooxofor foro:'<,'>s/\%Vo/O/g
8 substitutions on 2 linesxOfOr fOrOx
oooxOfOr fOrO
:/^Visual/+1,/^Visual/+4yank
search hit BOTTOM, continuing at TOP
4 lines yankedOK 0 - \v.*\/(.*)\n.*\/\1$
OK 1 - \v.*\/(.*)\n.*\/\1$
OK 2 - \v.*\/(.*)\n.*\/\1$
OK 0 - \S.*\nx
OK 1 - \S.*\nx
OK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3


4 more lines
thexE thE thExethe4 more lines:"
:"
:" Check matching marks
/^Marks:
search hit BOTTOM, continuing at TOPasdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

Visual:
thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxooo

Marks:
asdfSasdfsadfEasdf
asdfSas
dfsadfEasdf

Results of test64:
OK 0 - ab
OK 1 - ab
OK 2 - ab
OK 0 - b
OK 1 - b
OK 2 - b
search hit BOTTOM, continuing at TOP
asdf:.-4,.+6s/.\%>'s.*\%<'e../here/
hereasdf
asdf
dfsa
dfsadf:.-4,.+6s/.\%>'s\_.*\%<'e../again/

asdfagainasdfOK 0 - bc*:/^Marks:/+1,/^Marks:/+3yank
search hit BOTTOM, continuing at TOP
3 lines yankedOK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3

thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxooo


3 more lines

asdfhereasdf
asdfagainasdf3 more lines:"
:"
:" Check patterns matching cursor position.
:func! Postest()

:   new

:   call setline(1, ['ffooooo', 'boboooo', 'zoooooo', 'koooooo', 'moooooo', "\t

\t\tfoo", 'abababababababfoo', 'bababababababafoo', '********_', '        xxxxxx

xxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxx xx xxxx

xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxx xxxxxxxxxx

xxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxx xxxxxxxxxxx

x xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx xxxxxxxxx xxxx

xxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxx xxx xxx xx

xxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx xxxxxxxxxxxx x

xxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxxxxx

xxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx'])

:   call setpos('.', [0, 1, 0, 0])

:   s/\%>3c.//g

:   call setpos('.', [0, 2, 4, 0])

:   s/\%#.*$//g

:   call setpos('.', [0, 3, 0, 0])

:   s/\%<3c./_/g

:   %s/\%4l\%>5c./_/g

:   %s/\%6l\%>25v./_/g

:   %s/\%>6l\%3c./!/g

:   %s/\%>7l\%12c./?/g

:   %s/\%>7l\%<9l\%>5v\%<8v./#/g

:   $s/\%(|\u.*\)\@<=[^|\t]\+$//ge

:   1,$yank

:   quit!

:  endfunc
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3

thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxooo

asdfhereasdf
asdfagainasdf255\
OK 0 - a\n^b$\n^cOK 1 - a\n^b$\n^c2
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2<T="5">Ta 5</Title>
<T="7">Ac 7</Title>xxstart3thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooooooxOfOr fOrOxoooasdfhereasdfasdfagainasdf~
-0-
:set re=0
:call Postest()
4 substitutions on 4 lines

10 lines yanked

Press ENTER or type command to continue:put
10 more lines

Press ENTER or type command to continueoooxOfOr fOrOxooo

asdfhereasdf
asdfagainasdf-0-ffobob__ooooo
koooo__moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
-1-
:set re=1
:call Postest()
4 substitutions on 4 lines

10 lines yanked

Press ENTER or type command to continue:put
10 more lines

Press ENTER or type command to continue-1-
ffo
bob
__ooooo
koooo__
moooooo
   f__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxx xxxx xx xxxxxxxx xxx xxxxxxx~~~~~-2-:set re=2
:call Postest()
4 substitutions on 4 lines

10 lines yanked

Press ENTER or type command to continue:put
10 more lines

Press ENTER or type command to continue:"
-2-
ffo
bob~:" start and end of buffer
/\%^
search hit BOTTOM, continuing at TOPTest for regexp patterns without multi-byte support.
See test95 for multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
search hit BOTTOM, continuing at TOP-2-
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
~
~
~
~
~Test:"
OK 2 - \v(a*)+
OK 0 - \v((ab)+)+
OK 1 - \v((ab)+)+
OK 2 - \v((ab)+)+
OK 0 - \v(((ab)+)+)+
OK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(((ab)+)+)+
OK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(a{0,2})+
OK 1 - \v(a{0,2})+
OK 2 - \v(a{0,2})+
OK 0 - \v(a*)+
OK 1 - \v(a*)+
OK 2 - \v(a*)+
OK 0 - \v((a*)+)+
OK 1 - \v((a*)+)+
OK 2 - \v((a*)+)+
OK 0 - \v((ab)*)+
OK 1 - \v((ab)*)+
OK 2 - \v((ab)*)+
OK 0 - \va{1,3}/\%^..
search hit BOTTOM, continuing at TOPTest for regexp patterns without multi-byte support.
See test95 for multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
search hit BOTTOM, continuing at TOP-2-
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
Test
~
~
~
~Testt END:"
OK 0 - \v((ab)+)+
OK 1 - \v((ab)+)+
OK 2 - \v((ab)+)+
OK 0 - \v(((ab)+)+)+
OK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(((ab)+)+)+
OK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(a{0,2})+
OK 1 - \v(a{0,2})+
OK 2 - \v(a{0,2})+
OK 0 - \v(a*)+
OK 1 - \v(a*)+
OK 2 - \v(a*)+
OK 0 - \v((a*)+)+
OK 1 - \v((a*)+)+
OK 2 - \v((a*)+)+
OK 0 - \v((ab)*)+
OK 1 - \v((ab)*)+
OK 2 - \v((ab)*)+
OK 0 - \va{1,3}
OK 1 - \va{1,3}/\%$
-2-
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
Test
Test END
~
~
~:" tl is a List of Lists with:
:"    regexp engine
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:"
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"""" Previously written tests """"""""""""""""""""""""""""""""
:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:"
:call add(tl, [2, 'ab', 'aab', 'ab'])
:call add(tl, [2, 'b', 'abcdef', 'b'])
:call add(tl, [2, 'bc*', 'abccccdef', 'bcccc'])
:call add(tl, [2, 'bc\{-}', 'abccccdef', 'b'])
:call add(tl, [2, 'bc\{-}\(d\)', 'abccccdef', 'bccccd', 'd'])
:call add(tl, [2, 'bc*', 'abbdef', 'b'])
:call add(tl, [2, 'c*', 'ccc', 'ccc'])
:call add(tl, [2, 'bc*', 'abdef', 'b'])/..\%$
-2-
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx  xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx xxx xxx xxxxxxxx xxxxxxx  xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx  xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx
Test
Test END
~
~
~
ENE

:"
:"
:" Check for detecting error
:set regexpengine=2
:for pat in [' \ze*', ' \zs*']

:  :  try

:    :    let l = matchlist('x x', pat)

:    :    $put ='E888 NOT detected for ' . pat

:    :  catch

:    :    $put ='E888 detected for ' . pat

:    :  endtry

:  :endfor
ffo
bob
__ooooo
koooo__
moooooof__
ab!babababababfoo
ba!ab##abab?ba
**!*****_  !     xxx?xxxxxxxx    xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxxx xx xxxx xxxxxxxxxxxxx xxx xxxxxxx xxxxxxxxx  xxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx  xxx xxxxxxx xxxx xxx xxxx xxx xxx xxxxxx x xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx  xxxxxxxxx xxxxxxx x x xx xxxxxx xxxxxxx  xxxxxxxxxx xxxxxxxxx xxx xxx xxxxxxxx   xxxx xxx xxxxxx xxxxx xxxxx xx   xxxxxxxxxxxx xxxx xxxxxxxxx xxxxx xxxxx xx xxxxxxxxx xxxxxxxxxx  xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxTestEND
EN888 detected for  \ze*
E888 detected for  \zs*
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 1107 lines, 22167 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test64 = test61; then \
#	  if diff test.out test64.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test64.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test64.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test65.failed test.ok test.out X* viminfo
cp test65.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test65.in
[?1h="test65.in" 95 lines, 2153 charactersTest for floating point and logical operators.

STARTTEST
:so small.vim
:if !has("float")
:  e! test.ok
:  wq! test.out
:endif
:"
:$put =printf('%f', 123.456)
:$put =printf('%e', 123.456)
:$put =printf('%g', 123.456)
:" check we don't crash on division by zero
:echo 1.0 / 0.0
:$put ='+='
:let v = 1.234
:let v += 6.543
:$put =printf('%g', v)
:let v = 1.234
:let v += 5
:$put =printf('%g', v)
:let a = 5
:let a += 3.333:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for floating point and logical operators./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 89 lines, 2067 characters written:set ff& cpo+=A
/ENDTEST:$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

Results of test65:


:so! Xdotest
:so small.vim
:if !has("float")

:  :  e! test.ok

:  :  wq! test.out

:  :endif
:$put =float2nr(123.456)
:$put =float2nr(-123.456)
:$put ='AND'

:"
:$put =printf('%f', 123.456)

123.456000
:$put =printf('%e', 123.456)

1.234560e+02
:$put =printf('%g', 123.456)

123.456
:" check we don't crash on division by zero
:echo 1.0 / 0.0
inf:$put ='+='

+=
:let v = 1.234
:let v += 6.543
:$put =printf('%g', v)

7.777
:let v = 1.234
:let v += 5
:$put =printf('%g', v)

6.234
:let a = 5
:let a += 3.333
:$put =string(a)

8.333
:$put ='=='

==
:let v = 1.234
:$put =v == 1.234

1
:$put =v == 1.2341

0
:$put ='add-subtract'

add-subtract
:$put =printf('%g', 4 + 1.234)

5.234
:$put =printf('%g', 1.234 - 8)

-6.766
:$put ='mult-div'

mult-div
:$put =printf('%g', 4 * 1.234)

4.936
:$put =printf('%g', 4.0 / 1234)

0.003241
:$put ='dict'

dict
:$put =string({'x': 1.234, 'y': -2.0e20})

{'x': 1.234, 'y': -2.0e20}
:$put ='list'

list
:$put =string([-123.4, 2.0e-20])

[-123.4, 2.0e-20]
:$put ='abs'

abs
:$put =printf('%d', abs(1456))

1456
:$put =printf('%d', abs(-4))

4
:$put =printf('%d', abs([1, 2, 3]))
E745: Using a List as a Number
-1
:$put =printf('%g', abs(14.56))

14.56
:$put =printf('%g', abs(-54.32))

54.32
:$put ='ceil'

ceil
:$put =printf('%g', ceil(1.456))

2.0
:$put =printf('%g', ceil(-5.456))

-5.0
:$put =printf('%g', ceil(-4.000))

-4.0
:$put ='floor'

floor
:$put =printf('%g', floor(1.856))

1.0
:$put =printf('%g', floor(-5.456))

-6.0
:$put =printf('%g', floor(4.0))

4.0
:$put ='log10'

log10
:$put =printf('%g', log10(1000))

3.0
:$put =printf('%g', log10(0.01000))

-2.0
:$put ='pow'

pow
:$put =printf('%g', pow(3, 3.0))

27.0
:$put =printf('%g', pow(2, 16))

65536.0
:$put ='round'

round
:$put =printf('%g', round(0.456))

0.0
:$put =printf('%g', round(4.5))

5.0
:$put =printf('%g', round(-4.50))

-5.0
:$put ='sqrt'

sqrt
:$put =printf('%g', sqrt(100))

10.0
:echo sqrt(-4.01)
nan:$put ='str2float'

str2float
:$put =printf('%g', str2float('1e40'))

1.0e40
:$put ='trunc'

trunc
:$put =printf('%g', trunc(1.456))

1.0
:$put =printf('%g', trunc(-5.456))

-5.0
:$put =printf('%g', trunc(4.000))

4.0
:$put ='float2nr'

float2nr
:$put =float2nr(123.456)

123
:$put =float2nr(-123.456)

-123
:$put ='AND'

AND
:$put =and(127, 127)

127
:$put =and(127, 16)

16
:$put =and(127, 128)

0
:$put ='OR'

OR
:$put =or(16, 7)

23
:$put =or(8, 7)

15
:$put =or(0, 123)

123
:$put ='XOR'

XOR
:$put =xor(127, 127)

0
:$put =xor(127, 16)

111
:$put =xor(127, 128)

255
:$put ='invert'

invert
:$put =and(invert(127), 65535)

65408
:$put =and(invert(16), 65535)

65519
:$put =and(invert(128), 65535)

65407
:$put =invert(1.0)
E805: Using a Float as a Number
0
:/^Results/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 73 lines, 430 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test65 = test61; then \
#	  if diff test.out test65.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test65.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test65.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test66.failed test.ok test.out X* viminfo
cp test66.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test66.in
[?1h="test66.in" 33 lines, 509 charactersTest for visual block shift and tab characters.

STARTTEST
:so small.vim
/^one
fe^V4jR^[ugvr1:'<,'>w! test.out
/^abcdefgh
^V4jI    ^[j<<11|D
7|a^[
7|a^[
7|a^[4k13|^V4j<
:$-5,$w >> test.out
:$-4,$s/\s\+//g
^V4kI    ^[j<<
7|a^[
7|a^[
7|a^[4k13|^V4j3<
:$-4,$w >> test.out
:qa!
ENDTEST

one two three:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 16 lines, 234 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^one
on



e
one two three
one two three
one two three
one two three
4 fewer linesabcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyzmore lines; before #1  0 seconds agoone two three
one two three
one two threeone two threeone two threee
one
one
one
on1
on1
on1
on1
on1:'<,'>w! test.out
"test.out" [New File] 5 lines, 70 characters written/^abcdefgh


abcdefghijklmnopqrstuvwxyz



a
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
a
a
a
a    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyzc         defghijklmnopqrstuvwxyzc            defghijklmnopqrstuvwxyzc         defghijklmnopqrstuvwxyzi  
5 lines <ed 1 timeidefghijklmnopqrstuvwxyzdefghijklmnopqrstuvwxyzdefghijklmnopqrstuvwxyz:$-5,$w >> test.out
"test.out"6 lines, 151 characters appended:$-4,$s/\s\+//g
7 substitutions on 4 linesabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyza
a
a
a
a
a
a
a    abcdefghijklmnopqrstuvwxyz
    abcdefghij
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
abcdefghij
    abc         defghijklmnopqrstuvwxyzc                       defghijklmnopqrstuvwxyzc                 defghijklmnopqrstuvwxyzi  
5 lines <ed 3 timesidefghijklmnopqrstuvwxyz    defghijklmnopqrstuvwxyzdefghijklmnopqrstuvwxyz:$-4,$w >> test.out
"test.out"5 lines, 147 characters appended:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test66 = test61; then \
#	  if diff test.out test66.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test66.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test66.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test67.failed test.ok test.out X* viminfo
cp test67.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test67.in
[?1h="test67.in" 33 lines, 1109 charactersTest that groups and patterns are tested correctly when calling exists() for
autocommands.

STARTTEST
:so small.vim
:let results=[]
:augroup auexists
:augroup END
:call add(results, "##BufEnter: " . exists("##BufEnter"))
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:au BufEnter * let g:entered=1
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:augroup auexists
:au BufEnter * let g:entered=1
:augroup END
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:au BufEnter *.test let g:entered=1
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:edit testfile.test
:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:au BufEnter <buffer> let g:entered=1:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test that groups and patterns are tested correctly when calling exists() for/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 27 lines, 998 characters written:set ff& cpo+=A
/ENDTEST








:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:edit testfile2.test
:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:e test.out
:call append(0, results)
:$d
:w
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:let results=[]
:augroup auexists
:augroup END
:call add(results, "##BufEnter: " . exists("##BufEnter"))
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:au BufEnter * let g:entered=1
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:augroup auexists
:au BufEnter * let g:entered=1
:augroup END
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:au BufEnter *.test let g:entered=1
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:edit testfile.test
"testfile.test" [New File]~~~~~~~~~~~~~~~~~~~~~
~:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:au BufEnter <buffer> let g:entered=1
:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:edit testfile2.test
"testfile2.test" [New File]:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:e test.out
"test.out" [New File]:call append(0, results)
##BufEnter: 1
#BufEnter: 0
#BufEnter: 1
#auexists#BufEnter: 0
#auexists#BufEnter: 1
#BufEnter#*.test: 0
#BufEnter#*.test: 1
#BufEnter#<buffer>: 0
#BufEnter#<buffer>: 1
#BufEnter#<buffer>: 0:$d
~:w
"test.out" [New File] 10 lines, 190 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test67 = test61; then \
#	  if diff test.out test67.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test67.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test67.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test68.failed test.ok test.out X* viminfo
cp test68.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test68.in
[?1h="test68.in" 131 lines, 1004 charactersTest for text formatting.

Results of test68:

STARTTEST
:so small.vim
/^{/+1
:set noai tw=2 fo=t
gRa b^[
ENDTEST

{


}

STARTTEST
/^{/+1
:set ai tw=2 fo=tw
gqgqjjllab^[
ENDTEST

{:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for text formatting./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 4 lines, 48 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^{/+1
:set noai tw=2 fo=t
a
b
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 38 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
/^{/+1

a  b
:set ai tw=2 fo=tw

b

aa 
b
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 4 lines, 34 characters written:set ff& cpo+=A

/ENDTEST



:set tw=3 fo=t
gqgqo
a ^V^A^[
ENDTEST

:so! Xdotest
/^{/+1


{
a ^A
:set tw=3 fo=t

^A


a
^A

}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 58 characters written:set ff& cpo+=A

/ENDTEST




:set tw=2 fo=tcq1 comments=:#
gqgqjgqgqo
a b
#a b^[
ENDTEST

:so! Xdotest
/^{/+1


{
a b
:set tw=2 fo=tcq1 comments=:#

#a b


a b
#a b
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 46 characters written:set ff& cpo+=A

/ENDTEST


:set tw=5 fo=tcn comments=:#
A b^[jA b^[
ENDTEST

:so! Xdotest
/^{/+1


{
  1 a
:set tw=5 fo=tcn comments=:#

b
# 1 a
#   b
}
/^STARTTEST


STARTTEST
/^{/+3

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 35 characters written:set ff& cpo+=A

/ENDTEST


:set tw=5 fo=t2a si
i  ^[A_^[
ENDTEST

:so! Xdotest
/^{/+3




{

  x a
  b
:set tw=5 fo=t2a si
    b b_
c
/^STARTTEST




}

STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 40 characters written:set ff& cpo+=A

/ENDTEST


:set tw=5 fo=qn comments=:#
gwap
ENDTEST

:so! Xdotest
/^{/+1


{
# 1 a b
:set tw=5 fo=qn comments=:#

#   b
/^STARTTEST



}

STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 40 characters written:set ff& cpo+=A

/ENDTEST


:set tw=5 fo=q2 comments=:#
gwap
ENDTEST

:so! Xdotest
/^{/+1


{
# x
:set tw=5 fo=q2 comments=:#
# x a

#   b
/^STARTTEST



}

STARTTEST
/^{/+2

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 26 characters written:set ff& cpo+=A

/ENDTEST


:set tw& fo=a
I^^^[
ENDTEST

:so! Xdotest
/^{/+2



{
   1aa
   2bb
:set tw& fo=a
1aa ^^2bb }STARTTEST
/^STARTTEST

/mno pqr/
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 69 characters written:set ff& cpo+=A

/ENDTEST


:setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/
A vwx yz^[
ENDTEST

:so! Xdotest
/mno pqr/


/* abc def ghi jkl
 *    mno pqr stu
:setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/

*    vwx yz
*/
/^STARTTEST


STARTTEST
/^#/

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 47 characters written:set ff& cpo+=A

/ENDTEST


:setl tw=12 fo=tqnc comments=:#
A foobar^[
ENDTEST

:so! Xdotest
/^#/

# 1 xxxxx
:setl tw=12 fo=tqnc comments=:#

#   foobar

/^STARTTEST

STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2 lines, 56 characters written:set ff& cpo+=A

/ENDTEST
:1;/^Results/,$wq! test.out

:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
63 fewer lines# 1 a#   b}{
# x a#   b}{ 1aa ^^2bb }/* abc def ghi jkl
 *    mno pqr stu
 *    vwx yz
 */# 1 xxxxx
#   foobar:1;/^Results/,$wq! test.out
"test.out" [New File] 77 lines, 281 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test68 = test61; then \
#	  if diff test.out test68.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test68.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test68.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test69.failed test.ok test.out X* viminfo
cp test69.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test69.in
[?1h="test69.in" 192 lines, 2185 charactersTest for multi-byte text formatting.
Also test, that 'mps' with multibyte chars works.
And test "ra" on multi-byte characters.
Also test byteidx() and byteidxcomp()

STARTTEST
:so mbyte.vim
:set encoding=utf-8
ENDTEST

Results of test69:

STARTTEST
/^{/+1
:set tw=2 fo=t
gqgqjgqgqo
XYZ
abc XYZ^[
ENDTEST

{
XYZ
abc XYZ:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for multi-byte text formatting./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 2 lines, 34 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so mbyte.vim
:set encoding=utf-8
Test for multi-byte text formatting.
Also test, that 'mps' with multibyte chars works.
And test "ra" on multi-byte characters.
Also test byteidx() and byteidxcomp()

STARTTEST
:so mbyte.vim
:set encoding=utf-8
ENDTEST

Results of test69:

STARTTEST
/^{/+1
:set tw=2 fo=t
gqgqjgqgqo
XYZ
abc XYZ^[
ENDTEST

{
XYZ
abc XYZ/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 58 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
/^{/+1
:set tw=2 fo=t


XYZ

XY
Z
abc 
XYZ
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 8 lines, 80 characters written:set ff& cpo+=A

/ENDTEST







:set tw=1 fo=tm
gqgqjgqgqjgqgqjgqgqjgqgqo
X
Xa
X a
XY
X Y^[
ENDTEST

:so! Xdotest
/^{/+1


{
X
:set tw=1 fo=tm

Xa
a
X a

a
XY

Y

X Y

Y



X


X
a


X
a
X

Y
X 
Y

}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 13 lines, 140 characters written:set ff& cpo+=A

/ENDTESTgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
X
Xa
X a
XY
X Y
aX
abX
abcX
abX c
abXY^[
ENDTEST

{
X
Xa
X a
XY
X Y
aX
abX
abcX
abX c
:so! Xdotest
/^{/+1
:set tw=2 fo=tm

a
a
Y

Y 

aX

X

abX

X

abcX

X

abX c


X
c
abXY


X
Y



X


X
a


X
a
X

Y
X 

Y
a

X
ab

X
abc

X
ab


X
c
ab
X
Y

}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 47 characters written:set ff& cpo+=A

/ENDTEST




:set ai tw=2 fo=tm
gqgqjgqgqo
X
Xa^[
ENDTEST

:so! Xdotest
/^{/+1


{
  X
:set ai tw=2 fo=tm
  
Xa
a


X
  
X
  a
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 53 characters written:set ff& cpo+=A

/ENDTEST




:set noai tw=2 fo=tm
gqgqjgqgqo
  X
  Xa^[
ENDTEST

:so! Xdotest
/^{/+1


{
  X
:set noai tw=2 fo=tm
  
Xa
a


X
  
X
a
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 13 lines, 169 characters written:set ff& cpo+=A

/ENDTESTgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
X
Xa
XaY
XY
XYZ
X Y
X YZ
XX
XXa
XXY^[
ENDTEST

{
X
Xa
XaY
XY
XYZ
X Y
X YZ
XX
XXa
:so! Xdotest
/^{/+1
:set tw=2 fo=cqm comments=n:X


XY

XZ



X Z

XX

XXa

XXY



X

Xa
Xa

XY
X
Y
XY

XZ
X 
Y
X Y

X Z
X
X
X
Xa
XXY
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 30 characters written:set ff& cpo+=A

/ENDTEST


:set tw=2 fo=tm
RXa^[
ENDTEST

:so! Xdotest
/^{/+1


{
:set tw=2 fo=tm

X
a
}
/^STARTTEST


STARTTEST
/^{/+1

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 34 characters written:set ff& cpo+=A

/ENDTEST


:set mps+=^Vu2018:^Vu2019
d%
ENDTEST

:so! Xdotest
/^{/+1


{
‘two three ’four
:set mps+=^‘:^’
 four
}
/^STARTTEST

STARTTEST
/^ra test

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2 lines, 16 characters written:set ff& cpo+=A

/ENDTEST

jVjra
ENDTEST

:so! Xdotest
/^ra test

ra test
abba
bba 

a
aab 
aaaaaaa 

/^STARTTEST


STARTTEST
:set whichwrap+=h

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 4 lines, 43 characters written:set ff& cpo+=A

/ENDTEST



/^x
dh
:set whichwrap-=h
ENDTEST

:so! Xdotest
:set whichwrap+=h
/^x


áxx

:set whichwrap-=h
/^STARTTEST

STARTTEST
:let a = '.é.' " one char of two bytes

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 9 lines, 548 characters written:set ff& cpo+=A

/ENDTEST












:let b = '.é.' " normal e with composing char
/^byteidx
:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)])
:put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])
/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)])
:let b = '.é.'
:put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])
ENDTEST

:so! Xdotest
:let a = '.é.' " one char of two bytes
:let b = '.eé.' " normal e with composing char
/^byteidx

byteidx
:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), bytei

dx(a, 4)])
:set whichwrap-=h
ENDTESTáxSTARTTEST
:let a = '.é.' " one char of two bytesb = '.é.' " normal e with composing char
/^byteidx:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)]):put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)]):let b = '.é.'put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])ENDTESTbyteidx
[0, 1, 3, 4, -1]
:put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), bytei

dx(b, 4)])
ENDTESTáxSTARTTEST
:let a = '.é.' " one char of two bytesb = '.é.' " normal e with composing char
/^byteidx:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)]):put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)]):let b = '.é.'put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])ENDTESTbyteidx
[0, 1, 3, 4, -1]4, 5
/^byteidxcomp

byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxc

omp(a, 3), byteidxcomp(a, 4)])
áxSTARTTEST
:let a = '.é.' " one char of two bytesb = '.é.' " normal e with composing char
/^byteidx:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)]):put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)]):let b = '.é.'put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])ENDTESTbyteidx
[0, 1, 3, 4, -1]4, 5
byteidxcomp[0, 1, 3, 4, -1]
:let b = '.eé.'
:put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxc

omp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])
STARTTEST
:let a = '.é.' " one char of two bytesb = '.é.' " normal e with composing char
/^byteidx:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteiddx(a, 4)]):put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteiddx(b, 4)])/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoomp(a, 3), byteidxcomp(a, 4)]):let b = '.é.'put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])ENDTESTbyteidx
[0, 1, 3, 4, -1]4, 5
byteidxcomp[0, 1, 3, 4, -1]2, 4, 5, -1]
/^STARTTEST


STARTTEST
/^substitute

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2 lines, 75 characters written:set ff& cpo+=A

/ENDTEST

:let y = substitute('123', '\zs', 'a', 'g')    | put =y
ENDTEST

substitute

:so! Xdotest
/^substitute
:let y = substitute('123', '\zs', 'a', 'g')    | put =y


a1a2a3a

/^STARTTEST

STARTTEST

:g/^STARTTEST/.,/^ENDTEST/d
:1;/^Results/,$wq! test.out

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 2 lines, 56 characters written:set ff& cpo+=A


/ENDTEST
:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
104 fewer lines{ four}ra test
aaaaaaaáxbyteidx[0, 1, 3, 4, -1]
[0, 1, 4, 5, -1]byteidxcomp
[0, 1, 3, 4, -1]
[0, 1, 2, 4, 5, -1]substitute
a1a2a3a:1;/^Results/,$wq! test.out
"test.out" [New File] 166 lines, 730 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test69 = test61; then \
#	  if diff test.out test69.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test69.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test69.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test70.failed test.ok test.out X* viminfo
cp test70.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test70.in
[?1h="test70.in" 63 lines, 1501 charactersSmoke test for MzScheme interface and mzeval() function

STARTTEST
:so mzscheme.vim
:set nocompatible viminfo+=nviminfo
:function! MzRequire()
:redir => l:mzversion
:mz (version)
:redir END
:if strpart(l:mzversion, 1, 1) < "4"
:" MzScheme versions < 4.x:
:mz (require (prefix vim- vimext))
:else
:" newer versions:
:mz (require (prefix-in vim- 'vimext))
:mz (require r5rs)
:endif
:endfunction
:silent call MzRequire()
:mz (define l '("item0" "dictionary with list OK" "item2"))
:mz (define h (make-hash))
:mz (hash-set! h "list" l)
/^1:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Smoke test for MzScheme interface and mzeval() function/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 55 lines, 1398 characters written:set ff& cpo+=A
/ENDTEST:if l2[2] == l2
:let res = "OK"
:else
:let res = "FAILED: " . l2[2]
:endif
:call setline(search("^3"), "circular test " . res)
:" funcrefs
:mz (define vim:max (vim-eval "function('max')"))
:mz (define m (vim:max '(1 100 8)))
:let m = mzeval('m')
:if m == 100
:let fref_res = "OK"
:else
:let fref_res = "FAILED: " . m
:end
:call append(line('$'), 'funcrefs '. fref_res)
:?^1?,$w! test.out
:qa!
ENDTEST

1 line 1
2 line 2
3 line 3
:so! Xdotest
:so mzscheme.vim
"test.ok" 6 lines, 94 characters

"test.out" [New File] 6 lines, 94 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test70 = test61; then \
#	  if diff test.out test70.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test70.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test70.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test73.failed test.ok test.out X* viminfo
cp test73.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test73.in
[?1h="test73.in" 169 lines, 3647 charactersTests for find completion.

STARTTEST
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xfind directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a stale "Xfind" directory may exist, remove it so that
:" we start from a clean state.
:call delete("Xfind", "rf")
:new
:let cwd=getcwd()
:let test_out = cwd . '/test.out'
:call mkdir('Xfind')
:cd Xfind
:set path=
:find
:exec "w! " . test_out
:close:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for find completion./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 164 lines, 3600 characters written:set ff& cpo+=A
/ENDTEST:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file
:e in/file.txt
:exec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu
:exec "w >>" . test_out
:q
:exec "cd " . cwd
:call delete("Xfind", "rf")
:qa!
ENDTEST


:so! Xdotest
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xfind directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a stale "Xfind" directory may exist, remove it so that
:" we start from a clean state.
:call delete("Xfind", "rf")
:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTESTtest73.in                                                                       :let cwd=getcwd()
:let test_out = cwd . '/test.out'
:call mkdir('Xfind')
:cd Xfind
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfind/<<PKGBUILDDIR>>/src/vim-athena/testdir/test73.in:set path=
:find ...
E345: Can't find file "" in path:exec "w! " . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
</vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/test.out" [New] 0L, 0C written/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out:close
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTEST/<<PKGBUILDDIR>>/src/vim-athena/testdir/test73.in                 :set path=.
:find ...
E32: No file name:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out" 0L, 0C appended:close
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTEST/<<PKGBUILDDIR>>/src/vim-athena/testdir/test73.in                 :set path=.,,
:find ...
E32: No file name:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out" 0L, 0C appended:close
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTEST/<<PKGBUILDDIR>>/src/vim-athena/testdir/test73.in                 :set path=./**
:find ...
E32: No file name:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out" 0L, 0C appended:close
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:new
~~~~~~~~~~
[No Name]                                                                       xec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwd
:call delete("Xfind", "rf")
:qa!ENDTEST/<<PKGBUILDDIR>>/src/vim-athena/testdir/test73.in                 :" We shouldn't find any file at this point, test.out must be empty.
:call mkdir('in')
:cd in
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfind/in:call mkdir('path')
:exec "cd " . cwd
/<<PKGBUILDDIR>>/src/vim-athena/testdirtest73.in                                                      :e Xfind/file.txt
"Xfind/file.txt" [New File]Xfind/file.txt-- INSERT --Holy Grail[+]:w
"Xfind/file.txt" [New] 1L, 11C written   :e Xfind/in/file.txt
"Xfind/in/file.txt" [New File]in/file.txt-- INSERT --Jimmy Hoffa[+]:w
"Xfind/in/file.txt" [New] 1L, 12C written   :e Xfind/in/stuff.txt
"Xfind/in/stuff.txt" [New File]stuff.txt-- INSERT --Another Holy Grail[+]:w
"Xfind/in/stuff.txt" [New] 1L, 19C written   :e Xfind/in/path/file.txt
"Xfind/in/path/file.txt" [New File]path/file.txt-- INSERT --E.T.[+]:w
"Xfind/in/path/file.txt" [New] 1L, 5C written   :set path=Xfind/**
:find file..../Xfind/file.txt
"Xfind/file.txt" 1L, 11CHoly Grailfile.txt        :exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/test.out" 1L, 11C appended:find file..../Xfind/file.txt...in/file.txt
"Xfind/in/file.txt" 1L, 12CJimmy Hoffain/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/test.out" 1L, 12C appended:find file..../Xfind/file.txt...in/file.txt...path/file.txt
"Xfind/in/path/file.txt" 1L, 5CE.T.path/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out" 1L, 5C appended:" Rerun the previous three find completions, using fullpath in 'path'
:exec "set path=" . cwd . "/Xfind/**"
:find file..../Xfind/file.txt
"Xfind/file.txt" 1L, 11CHoly Grailfile.txt        :exec "w >>" .  test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/test.out" 1L, 11C appended:find file..../Xfind/file.txt...in/file.txt
"Xfind/in/file.txt" 1L, 12CJimmy Hoffain/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/test.out" 1L, 12C appended:find file..../Xfind/file.txt...in/file.txt...path/file.txt
"Xfind/in/path/file.txt" 1L, 5CE.T.path/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out" 1L, 5C appended:" Same steps again, using relative and fullpath items that point to the same
:" recursive location.
:" This is to test that there are no duplicates in the completion list.
:exec "set path+=Xfind/**"
:find file..../Xfind/file.txt
"Xfind/file.txt" 1L, 11CHoly Grailfile.txt        :exec "w >>" .  test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/test.out" 1L, 11C appended:find file..../Xfind/file.txt...in/file.txt
"Xfind/in/file.txt" 1L, 12CJimmy Hoffain/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/test.out" 1L, 12C appended:find file..../Xfind/file.txt...in/file.txt...path/file.txt
"Xfind/in/path/file.txt" 1L, 5CE.T.path/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out" 1L, 5C appended:find file..../Xfind/file.txt...in/file.txt
"Xfind/in/file.txt" 1L, 12CJimmy Hoffafile.txt     :" Test find completion for directory of current buffer, which at this point
:" is Xfind/in/file.txt.
:set path=.
:find st...uff.txt
"Xfind/in/stuff.txt" 1L, 19CAnother Holy Grailstuff.txt:exec "w >>" .  test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/test.out" 1L, 19C appended:" Test find completion for empty path item ",," which is the current directory
:cd Xfind
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfindin/stuff.txt      /<<PKGBUILDDIR>>/src/vim-athena/testdir/test73.in:set path=,,
:find f...ile.txt...
"file.txt" 1L, 11CHoly Grailfile.txt    :exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/test.out" 1L, 11C appended:" Test shortening of
:"
:"    foo/x/bar/voyager.txt
:"    foo/y/bar/voyager.txt
:"
:" When current directory is above foo/ they should be shortened to (in order
:" of appearance):
:"
:"    x/bar/voyager.txt
:"    y/bar/voyager.txt
:call mkdir('foo')
:cd foo
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfind/foo/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfind/file.txt:call mkdir('x')
:call mkdir('y')
:cd x
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfind/foo/x:call mkdir('bar')
:cd ..
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfind/foo:cd y
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfind/foo/y:call mkdir('bar')
:cd ..
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfind/foo:cd ..
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfindfile.txt                                                            :" We should now be in the Xfind directory
:e foo/x/bar/voyager.txt
"foo/x/bar/voyager.txt" [New File]oo/x/bar/voyager.txt-- INSERT --Voyager 1[+]:w
"foo/x/bar/voyager.txt" [New] 1L, 10C written   :e foo/y/bar/voyager.txt
"foo/y/bar/voyager.txt" [New File]y-- INSERT --Voyager 2[+]:w
"foo/y/bar/voyager.txt" [New] 1L, 10C written   :exec "set path=" . cwd . "/Xfind/**"
:find voyager...x/bar/voyager.txt
"foo/x/bar/voyager.txt" 1L, 10C1x:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/test.out" 1L, 10C appended:find voyager...x/bar/voyager.txt...y
"foo/y/bar/voyager.txt" 1L, 10C2y:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/test.out" 1L, 10C appended:"
:" When current directory is .../foo/y/bar they should be shortened to (in
:" order of appearance):
:"
:"    ./voyager.txt
:"    x/bar/voyager.txt
:cd foo
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfind/fooy/bar/voyager.txt    :cd y
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfind/foo/ybar/voyager.txt  :cd bar
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfind/foo/y/barvoyager.txt    :find voyager..../voyager.txt
"voyager.txt" 1L, 10C:exec "w >> " . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/test.out" 1L, 10C appended:find voyager..../voyager.txt...x/bar/voyager.txt
<d/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/Xfind/foo/x/bar/voyager.txt"
<FPoUg/vim-8.0.0022/src/vim-athena/testdir/Xfind/foo/x/bar/voyager.txt" 1L, 10C1<ild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/Xfind/foo/x/bar/voyager.txt:exec "w >> " . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/test.out" 1L, 10C appended:" Check the opposite too:
:cd ..
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfind/foo/y:cd ..
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfind/foox/bar/voyager.txt                                                              :cd x
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfind/foo/xbar/voyager.txt  :cd bar
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfind/foo/x/barvoyager.txt    :find voyager..../voyager.txt
"voyager.txt" 1L, 10C:exec "w >> " . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/test.out" 1L, 10C appended:find voyager..../voyager.txt...y/bar/voyager.txt
<d/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/Xfind/foo/y/bar/voyager.txt"
<FPoUg/vim-8.0.0022/src/vim-athena/testdir/Xfind/foo/y/bar/voyager.txt" 1L, 10C2<ild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/Xfind/foo/y/bar/voyager.txt:exec "w >> " . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/test.out" 1L, 10C appended:" Check for correct handling of shorten_fname()'s behavior on windows
:exec "cd " . cwd . "/Xfind/in"
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfind/in:find file..../file.txt
"file.txt" 1L, 12CJimmy Hoffafile.txt                                                                       :exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/test.out" 1L, 12C appended:" Test for relative to current buffer 'path' item
:exec "cd " . cwd . "/Xfind/"
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xfindin/file.txt:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
"in/file.txt" 1L, 12C:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file...txt
"in/path/file.txt" 1L, 5CE.T.path/file.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out" 1L, 5C appended:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file
:e in/file.txt
"in/file.txt" 1L, 12CJimmy Hoffafile.txt     :exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/test.out" 1L, 12C appended:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu...ff.txt
"in/stuff.txt" 1L, 19CAnother Holy Grailstuff.txt:exec "w >>" . test_out
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test.out"
<uild/vim-XFPoUg/vim-8.0.0022/src/vim-athena/testdir/test.out" 1L, 19C appended:q
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       exec "w >>" . test_out
:qexec "cd " . cwdcall delete("Xfind", "rf")
:qa!ENDTEST:exec "cd " . cwd
/<<PKGBUILDDIR>>/src/vim-athena/testdir:call delete("Xfind", "rf")
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test73 = test61; then \
#	  if diff test.out test73.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test73.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test73.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test75.failed test.ok test.out X* viminfo
cp test75.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test75.in
[?1h="test75.in" 41 lines, 1000 charactersTests for maparg().
Also test utf8 map with a 0x80 byte.

STARTTEST
:so small.vim
:so mbyte.vim
:set cpo-=<
:set encoding=utf8
:" Test maparg() with a string result
:map foo<C-V> is<F4>foo
:vnoremap <script> <buffer> <expr> <silent> bar isbar
:call append('$', maparg('foo<C-V>'))
:call append('$', string(maparg('foo<C-V>', '', 0, 1)))
:call append('$', string(maparg('bar', '', 0, 1)))
:map <buffer> <nowait> foo bar
:call append('$', string(maparg('foo', '', 0, 1)))
:"
:map abc x<char-114>x
:call append('$', maparg('abc'))
:map abc y<S-char-114>y
:call append('$', maparg('abc'))
:"
Go^[:":set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for maparg()./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 34 lines, 919 characters written:set ff& cpo+=A
/ENDTEST















:" Outside of the range, minimum
:inoremap <Char-0x1040> a
:execute "normal a\u1040\<Esc>"
:" Inside of the range, minimum
:inoremap <Char-0x103f> b
:execute "normal a\u103f\<Esc>"
:" Inside of the range, maximum
:inoremap <Char-0xf03f> c
:execute "normal a\uf03f\<Esc>"
:" Outside of the range, maximum
:inoremap <Char-0xf040> d
:execute "normal a\uf040\<Esc>"
:"
:/^eof/+1,$w! test.out
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:so mbyte.vim
:set cpo-=<
:set encoding=utf8
:map abc x<char-114>x
:call append('$', maparg('abc'))
:map abc y<S-char-114>y
:call append('$', maparg('abc'))
:"
Go^[:"
:" Outside of the range, minimum
:inoremap <Char-0x1040> a
:execute "normal a\u1040\<Esc>"
:" Inside of the range, minimum
:inoremap <Char-0x103f> b
:execute "normal a\u103f\<Esc>"
:" Inside of the range, maximum
:inoremap <Char-0xf03f> c
:execute "normal a\uf03f\<Esc>"
:" Outside of the range, maximum
:inoremap <Char-0xf040> d
:execute "normal a\uf040\<Esc>"
:"
:/^eof/+1,$w! test.out
:qa!
ENDTEST

:" Test maparg() with a string result
:map foo<C-V> is<F4>foo
:vnoremap <script> <buffer> <expr> <silent> bar isbar
:call append('$', maparg('foo<C-V>'))
:call append('$', string(maparg('foo<C-V>', '', 0, 1)))
:call append('$', string(maparg('bar', '', 0, 1)))
:map <buffer> <nowait> foo bar
:call append('$', string(maparg('foo', '', 0, 1)))
:"
:map abc x<char-114>x
:call append('$', maparg('abc'))
:map abc y<S-char-114>y
:call append('$', maparg('abc'))
:"










eof
is<F4>foo
{'silent': 0, 'noremap': 0, 'lhs': 'foo<C-V>', 'mode': ' ', 'nowait': 0, 'expr':: 0, 'sid': 0, 'rhs': 'is<F4>foo', 'buffer': 0}
{'silent': 1, 'noremap': 1, 'lhs': 'bar', 'mode': 'v', 'nowait': 0, 'expr': 1, ''sid': 0, 'rhs': 'isbar', 'buffer': 1}
{'silent': 0, 'noremap': 0, 'lhs': 'foo', 'mode': ' ', 'nowait': 1, 'expr': 0, ''sid': 0, 'rhs': 'bar', 'buffer': 1}
xrx
yRy

:"
:" Outside of the range, minimum
:inoremap <Char-0x1040> a
:execute "normal a\u1040\<Esc>"
a:" Inside of the range, minimum
:inoremap <Char-0x103f> b
:execute "normal a\u103f\<Esc>"
b:" Inside of the range, maximum
:inoremap <Char-0xf03f> c
:execute "normal a\uf03f\<Esc>"
c:" Outside of the range, maximum
:inoremap <Char-0xf040> d
:execute "normal a\uf040\<Esc>"
d:"
:/^eof/+1,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 7 lines, 384 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test75 = test61; then \
#	  if diff test.out test75.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test75.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test75.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test76.failed test.ok test.out X* viminfo
cp test76.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test76.in
[?1h="test76.in" 46 lines, 899 charactersTests for completefunc/omnifunc. vim: set ft=vim :

STARTTEST
:"Test that nothing happens if the 'completefunc' opens
:"a new window (no completion, no crash)
:so small.vim
:function! DummyCompleteOne(findstart, base)
:  if a:findstart
:    return 0
:  else
:    wincmd n
:    return ['onedef', 'oneDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteOne
/^one
A^X^U^N^[:q!
:function! DummyCompleteTwo(findstart, base)
:  if a:findstart
:    wincmd n
:    return 0
:  else
:    return ['twodef', 'twoDEF']:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for completefunc/omnifunc. vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 37 lines, 810 characters written:set ff& cpo+=A
/ENDTEST

















:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)
:  if a:findstart
:    return 0
:  else
:    return ['threedef', 'threeDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteThree
/^three
A^X^U^N^[:/^+++/,/^three/w! test.out
:qa!
ENDTEST

:so! Xdotest
:"Test that nothing happens if the 'completefunc' opens
:"a new window (no completion, no crash)
:so small.vim
:function! DummyCompleteOne(findstart, base)

:  :  if a:findstart

:    :    return 0

:    :  else

:    :    wincmd n

:    :    return ['onedef', 'oneDEF']

:    :  endif

:  :endfunction
:    wincmd n
:    return 0
:  else
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
:setlocal completefunc=DummyCompleteOne
/^one


+++
one
E839: Completion function changed window

Pattern not found

Press ENTER or type command to continuePress ENTER or type command to continueone
~~~~~~~~~~
[No Name] [+]                                                                   endifendfunction
:setlocal completefunc=DummyCompleteThree
/^threeA^X^U^N^[:/^+++/,/^three/w! test.out
:qa!ENDTEST+++test76.in [+]                                                                   :q!
:  else
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)
:  if a:findstart
:    return 0
:  else  return ['threedef', 'threeDEF']
:  endifendfunction:setlocal completefunc=DummyCompleteThree
/^threeA^X^U^N^[:/^+++/,/^three/w! test.out
:qa!ENDTEST+++:function! DummyCompleteTwo(findstart, base)

:  :  if a:findstart

:    :    wincmd n

:    :    return 0

:    :  else

:    :    return ['twodef', 'twoDEF']

:    :  endif

:  :endfunction
:  else
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:setlocal completefunc=DummyCompleteTwo
/^two

two
E839: Completion function changed window

E764: Option 'completefunc' is not set

Press ENTER or type command to continue~~~~~~~~~~
[No Name]                                                                       endfunction
:setlocal completefunc=DummyCompleteThree
/^threeA^X^U^N^[:/^+++/,/^three/w! test.out
:qa!ENDTEST+++two
test76.in [+]                                                                   :q!
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)
:  if a:findstart
:    return 0
:  else
:    return ['threedef', 'threeDEF']  endifendfunction:setlocal completefunc=DummyCompleteThree
/^threeA^X^U^N^[:/^+++/,/^three/w! test.out
:qa!ENDTEST+++two:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)

:  :  if a:findstart

:    :    return 0

:    :  else

:    :    return ['threedef', 'threeDEF']

:    :  endif

:  :endfunction
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A^X^U^N^[:q!
:setlocal completefunc=DummyCompleteThree
/^three

three
match 1 of 22DEF
:/^+++/,/^three/w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 4 lines, 18 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test76 = test61; then \
#	  if diff test.out test76.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test76.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test76.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test77.failed test.ok test.out X* viminfo
cp test77.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test77.in
[?1h="test77.in" 30 lines, 719 charactersInserts 2 million lines with consecutive integers starting from 1
(essentially, the output of GNU's seq 1 2000000), writes them to Xtest
and writes its cksum to test.out.

We need 2 million lines to trigger a call to mf_hash_grow().  If it would mess
up the lines the checksum would differ.

cksum is part of POSIX and so should be available on most Unixes.
If it isn't available then the test will be skipped.

STARTTEST
:so small.vim
:if !executable("cksum")
: e! test.ok
: w! test.out
: qa!
:endif
:set fileformat=unix undolevels=-1
ggdG
:let i = 1
:while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhileggdd
:w! Xtest:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Inserts 2 million lines with consecutive integers starting from 1/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 288 characters written:set ff& cpo+=A
/ENDTEST





:r !cksum Xtest
:s/\s/ /g
:set fileformat&
:.w! test.out
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:if !executable("cksum")

:  : e! test.ok

:  : w! test.out

:  : qa!

:  :endif
cksum is part of POSIX and so should be available on most Unixes.
If it isn't available then the test will be skipped.

STARTTEST
:set fileformat=unix undolevels=-1
Inserts 2 million lines with consecutive integers starting from 1
(essentially, the output of GNU's seq 1 2000000), writes them to Xtest
and writes its cksum to test.out.

We need 2 million lines to trigger a call to mf_hash_grow().  If it would mess
up the lines the checksum would differ.~~
~~~
~~~
~~~~~~~~~~~~~~
--No lines in buffer--:let i = 1
:while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhil

e1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
:w! Xtest
"Xtest" [New File] 2000000 lines, 14888896 characters written:r !cksum Xtest
1
2
3678979763 14888896 Xtest
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22:s/\s/ /g
:set fileformat&
:.w! test.out
"test.out" [New File] 1 line, 26 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test77 = test61; then \
#	  if diff test.out test77.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test77.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test77.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test79.failed test.ok test.out X* viminfo
cp test79.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test79.in
[?1h="test79.in" 255 lines, 3381 charactersTest for *sub-replace-special* and *sub-replace-expression* on :substitute.
Test for submatch() on :substitue.
Test for *:s%* on :substitute.
Test for :s replacing \n with  line break.

STARTTEST
:so small.vim
ENDTEST

Results of test71:

STARTTEST
:set magic
:set cpo&
/^TEST/
j:s/A/&&/
j:s/B/\&/
j:s/C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/
j:s/D/d/
j:s/E/~/
j:s/F/\~/
j:s/G/\ugg/
j:s/H/\Uh\Eh/:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for *sub-replace-special* and *sub-replace-expression* on :substitute./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1 line, 14 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 25 lines, 347 characters written:set ff& cpo+=A
/ENDTESTj:s/L/^V^M/
j:s/M/\r/
j:s/N/\^V^M/
j:s/O/\n/
j:s/P/\b/
j:s/Q/\t/
j:s/R/\\/
j:s/S/\c/
j:s/T/^V^@/
j:s/U/\L\uuUu\l\EU/
j:s/V/\U\lVvV\u\Ev/
ENDTEST

TEST_1:
A
B
C123456789
D
E
F
G
H
I
:so! Xdotest
:set magic
:set cpo&
/^TEST/

:s/A/&&/
A

:s/B/\&/
&
:s/C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/
987654321

:s/D/d/
d
:s/E/~/
d
:s/F/\~/
~
:s/G/\ugg/
g

:s/H/\Uh\Eh/
h

:s/I/\lII/
iI

J
:s/J/\LJ\EJ/
jJ

K
:s/K/\Uk\ek/
k

lLl
:s/L/^^M/

l
mMm

:s/M/\r/

m
nNn

:s/N/\^^M/
^Mn

oOo
:s/O/\n/
^@o

pPp
:s/P/\b/
^Hp

qQq
:s/Q/\t/
       q

rRr
:s/R/\\/
\

sSs
:s/S/\c/
c

tTt
:s/T/^^@/
^@t

U
:s/U/\L\uuUu\l\EU/
uuU

V
:s/V/\U\lVvV\u\Ev/
vVVv
/^STARTTEST


STARTTEST
:set nomagic

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 25 lines, 351 characters written:set ff& cpo+=A

/ENDTESTj:s/L/^V^M/
j:s/M/\r/
j:s/N/\^V^M/
j:s/O/\n/
j:s/P/\b/
j:s/Q/\t/
j:s/R/\\/
j:s/S/\c/
j:s/T/^V^@/
j:s/U/\L\uuUu\l\EU/
j:s/V/\U\lVvV\u\Ev/
ENDTEST

TEST_2:
A
B
C123456789
D
E
F
G
H
I
:so! Xdotest
:set nomagic
:set cpo&
/^TEST/

:s/A/&&/
&&

:s/B/\&/

:s/\mC\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/
987654321

:s/D/d/
d
:s/E/~/
~
:s/F/\~/
~
:s/G/\ugg/
g

:s/H/\Uh\Eh/
h

:s/I/\lII/
iI

J
:s/J/\LJ\EJ/
jJ

K
:s/K/\Uk\ek/
k

lLl
:s/L/^^M/

l
mMm

:s/M/\r/

m
nNn

:s/N/\^^M/
^Mn

oOo
:s/O/\n/
^@o

pPp
:s/P/\b/
^Hp

qQq
:s/Q/\t/
       q

rRr
:s/R/\\/
\

sSs
:s/S/\c/
c

tTt
:s/T/^^@/
^@t

U
:s/U/\L\uuUu\l\EU/
uuU

V
:s/V/\U\lVvV\u\Ev/
vVVv
/^STARTTEST


STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 15 lines, 203 characters written:set ff& cpo+=A

/ENDTESTj:s/B/\='\\'/
j:s/C/\='^V^M'/
j:s/D/\='\^V^M'/
j:s/E/\='\\^V^M'/
j:s/F/\='\r'/
j:s/G/\='^V^@'/
j:s/H/\='\^V^@'/
j:s/I/\='\\^V^@'/
j:s/J/\='\n'/
j:s/K/\="\r"/
j:s/L/\="\n"/
ENDTEST

TEST_3:
aAa
bBb
cCc
dDd
eEe
fFf
gGg
hHh
iIi
:so! Xdotest
:set magic&
:set cpo&
/^TEST/

:s/A/\='\'/
\

:s/B/\='\\'/
\\b

:s/C/\='^^M'/
c
:s/D/\='\^^M'/
\d



:s/E/\='\\^^M'/
\\
efFf
:s/F/\='\r'/
\rf

gGg
:s/G/\='^^@'/

g
hHh

:s/H/\='\^^@'/

\h
iIi

:s/I/\='\\^^@'/

\\
i
jJj

:s/J/\='\n'/
\nj

kKk
:s/K/\="\r"/

k
lLl

:s/L/\="\n"/

l
/^STARTTEST


STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 15 lines, 611 characters written:set ff& cpo+=A

/ENDTESTj:s/B/\=substitute(submatch(0), '.', '\\', '')/
j:s/C/\=substitute(submatch(0), '.', '^V^M', '')/
j:s/D/\=substitute(submatch(0), '.', '\^V^M', '')/
j:s/E/\=substitute(submatch(0), '.', '\\^V^M', '')/
j:s/F/\=substitute(submatch(0), '.', '\r', '')/
j:s/G/\=substitute(submatch(0), '.', '^V^@', '')/
j:s/H/\=substitute(submatch(0), '.', '\^V^@', '')/
j:s/I/\=substitute(submatch(0), '.', '\\^V^@', '')/
j:s/J/\=substitute(submatch(0), '.', '\n', '')/
j:s/K/\=substitute(submatch(0), '.', "\r", '')/
j:s/L/\=substitute(submatch(0), '.', "\n", '')/
ENDTEST

TEST_4:
aAa
bBb
cCc
dDd
eEe
fFf
gGg
hHh
iIi
:so! Xdotest
:set magic&
:set cpo&
/^TEST/

:s/A/\=substitute(submatch(0), '.', '\', '')/
\

:s/B/\=substitute(submatch(0), '.', '\\', '')/
\

:s/C/\=substitute(submatch(0), '.', '^^M', '')/
c
:s/D/\=substitute(submatch(0), '.', '\^^M', '')/
d



:s/E/\=substitute(submatch(0), '.', '\\^^M', '')/
\efFf
:s/F/\=substitute(submatch(0), '.', '\r', '')/

f
gGg

:s/G/\=substitute(submatch(0), '.', '^^@', '')/

g
hHh

:s/H/\=substitute(submatch(0), '.', '\^^@', '')/

h
iIi

:s/I/\=substitute(submatch(0), '.', '\\^^@', '')/

\i
jJj

:s/J/\=substitute(submatch(0), '.', '\n', '')/

j
kKk

:s/K/\=substitute(submatch(0), '.', "\r", '')/

k
lLl

:s/L/\=substitute(submatch(0), '.', "\n", '')/

l
/^STARTTEST


STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 5 lines, 445 characters written:set ff& cpo+=A

/ENDTEST








:set cpo&
/^TEST/
j:s/A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=submatch(0) . submatch(9) .. submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch((3) . submatch(2) . submatch(1)/
j:s/B\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=string([submatch(0, 1), subbmatch(9, 1), submatch(8, 1), submatch(7, 1), submatch(6, 1), submatch(5, 1), subbmatch(4, 1), submatch(3, 1), submatch(2, 1), submatch(1, 1)])/
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
/^TEST/

TEST_5:
A123456789

:s/A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=submatch(0) . submatch(9) .

submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch(

3) . submatch(2) . submatch(1)/
i\
i987654321
B123456789

:s/B\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=string([submatch(0, 1), sub

match(9, 1), submatch(8, 1), submatch(7, 1), submatch(6, 1), submatch(5, 1), sub

match(4, 1), submatch(3, 1), submatch(2, 1), submatch(1, 1)])/
i
j[['B123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]
/^STARTTEST


STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 8 lines, 80 characters written:set ff& cpo+=A

/ENDTEST







/^TEST/
:set cpo+=/
j:s/A/a/
j:s/B/%/
:set cpo-=/
j:s/C/c/
j:s/D/%/
ENDTEST

:so! Xdotest
:set magic&
/^TEST/



TEST_6:
A
B


:set cpo+=/

:s/A/a/
a
:s/B/%/
a:set cpo-=/



C
D


:s/C/c/
c
:s/D/%/
%/^STARTTEST

STARTTEST
:set magic&

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 11 lines, 303 characters written:set ff& cpo+=A

/ENDTEST










:set cpo&
/^TEST_7/
j:s/A./\=submatch(0)/
j:s/B./\=submatch(0)/
j:s/C./\=strtrans(string(submatch(0, 1)))/
j:s/D.\nD/\=strtrans(string(submatch(0, 1)))/
j:s/E\_.\{-}E/\=strtrans(string(submatch(0, 1)))/
/^Q$
:s/Q[^\n]Q/\=submatch(0)."foobar"/
:" Avoid :s error breaks dotest map on Windows.
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
/^TEST_7/

TEST_7:
A^MA

:s/A./\=submatch(0)/

A
B^@B

:s/B./\=submatch(0)/

B
C^@C

:s/C./\=strtrans(string(submatch(0, 1)))/
['C^@']C

D^@
:s/D.\nD/\=strtrans(string(submatch(0, 1)))/
['D^@', 'D']

E^@
:s/E\_.\{-}E/\=strtrans(string(submatch(0, 1)))/
['E^@', '^@', '^@', '^@', '^@E']
/^Q$

Q
:s/Q[^\n]Q/\=submatch(0)."foobar"/
E486: Pattern not found: Q[^\n]Q:" Avoid :s error breaks dotest map on Windows.
/^STARTTEST



Q

STARTTEST
:function! TitleString()

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 8 lines, 177 characters written:set ff& cpo+=A

/ENDTEST







let check = 'foo' =~ 'bar'
  return ""
endfunction
:set titlestring=%{TitleString()}
:/^test_one/s/.*/\="foo\nbar"/
:/^test_two/s/.*/\="foo\nbar"/c
y
ENDTEST

:so! Xdotest
:function! TitleString()

:    let check = 'foo' =~ 'bar'

:    return ""

:  endfunction
TEST_7:
A
:set titlestring=%{TitleString()}
:/^test_one/s/.*/\="foo\nbar"/


foo
bar
:/^test_two/s/.*/\="foo\nbar"/c

test_tworeplace with \="foo\nbar" (y/n/a/q/l/^E/^Y)?
foobar


/^STARTTEST

STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 3 lines, 72 characters written:set ff& cpo+=A

/ENDTEST
:1;/^Results/,$wq! test.out

:so! Xdotest
:g/^STARTTEST/.,/^ENDTEST/d
136 fewer linesaa
c
%TEST_7:AABB['C^@']C['D^@', 'D']
['E^@', '^@', '^@', '^@', '^@E']
Q
Qfoo
bar
foobar:1;/^Results/,$wq! test.out
"test.out" [New File] 134 lines, 574 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test79 = test61; then \
#	  if diff test.out test79.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test79.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test79.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test80.failed test.ok test.out X* viminfo
cp test80.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test80.in
[?1h="test80.in" 201 lines, 6298 charactersTest for *sub-replace-special* and *sub-replace-expression* on substitute().
Test for submatch() on substitute().
Test for *:s%* on :substitute.

STARTTEST
:so small.vim
ENDTEST

TEST_1:

STARTTEST
:set magic
:set cpo&
:$put =\"\n\nTEST_1:\"
:$put =substitute('A', 'A', '&&', '')
:$put =substitute('B', 'B', '\&', '')
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\0\9\8\7\6\5\4\3\2\1', '')
:$put =substitute('D', 'D', 'd', '')
:$put =substitute('E', 'E', '~', '')
:$put =substitute('F', 'F', '\~', '')
:$put =substitute('G', 'G', '\ugg', '')
:$put =substitute('H', 'H', '\Uh\Eh', ''):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for *sub-replace-special* and *sub-replace-expression* on substitute()./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1 line, 14 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 29 lines, 1142 characters written:set ff& cpo+=A
/ENDTEST:$put =substitute('pPp', 'P', '\b', '')
:$put =substitute('qQq', 'Q', '\t', '')
:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('xXx', 'X', \"\r\", '')
:$put =substitute('Y', 'Y', '\L\uyYy\l\EY', '')
:$put =substitute('Z', 'Z', '\U\lZzZ\u\Ez', '')
/^TEST_2
ENDTEST

TEST_2:

STARTTEST
:set nomagic
:set cpo&
:$put =\"\n\nTEST_2:\"
:$put =substitute('A', 'A', '&&', '')
:$put =substitute('B', 'B', '\&', '')
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\0\9\8\7\6\5\4\3\2\1', '')
:so! Xdotest
:set magic
:set cpo&
:$put =\"\n\nTEST_1:\"
3 more lines:set cpo&
:$put =\"\n\nTEST_10:\"
:let y = substitute('123', '\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\zs.', 'a', 'g')| $put =y
:let y = substitute('123', '.\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\ze', 'a', 'g')| $put =y
:let y = substitute('123', '\ze.', 'a', 'g')| $put =y
:let y = substitute('123', '.\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\|\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y
/^TEST_11
ENDTEST

TEST_11:

STARTTEST
:/^Results/,$wq! test.out
ENDTEST

Results of test72:


TEST_1:
3 more lines:$put =substitute('A', 'A', '&&', '')

AA
:$put =substitute('B', 'B', '\&', '')

&
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)

', '\0\9\8\7\6\5\4\3\2\1', '')
:let y = substitute('123', '\zs.', 'a', 'g')| $put =y.\zs\ze', 'a', 'g') .', 'a', 'g').\ze1\|\ze', 'a', 'g')zs\|[23]', 'a', 'g')
/^TEST_11ENDTESTTEST_11:STARTTEST
:/^Results/,$wq! test.out
ENDTESTResults of test72:TEST_1:
AA&C123456789987654321
:$put =substitute('D', 'D', 'd', '')

d
:$put =substitute('E', 'E', '~', '')

~
:$put =substitute('F', 'F', '\~', '')

~
:$put =substitute('G', 'G', '\ugg', '')

Gg
:$put =substitute('H', 'H', '\Uh\Eh', '')

Hh
:$put =substitute('I', 'I', '\lII', '')

iI
:$put =substitute('J', 'J', '\LJ\EJ', '')

jJ
:$put =substitute('K', 'K', '\Uk\ek', '')

Kk
:$put =substitute('lLl', 'L', '^^M', '')

l^Ml
:$put =substitute('mMm', 'M', '\r', '')

m^Mm
:$put =substitute('nNn', 'N', '\^^M', '')

n^Mn
:$put =substitute('oOo', 'O', '\n', '')


o
o
:$put =substitute('pPp', 'P', '\b', '')

p^Hp
:$put =substitute('qQq', 'Q', '\t', '')

qq
:$put =substitute('rRr', 'R', '\\', '')

r\r
:$put =substitute('sSs', 'S', '\c', '')

scs
:$put =substitute('uUu', 'U', \"\n\", '')


u
u
:$put =substitute('vVv', 'V', \"\b\", '')

v^Hv
:$put =substitute('wWw', 'W', \"\\\", '')

w\w
:$put =substitute('xXx', 'X', \"\r\", '')

x^Mx
:$put =substitute('Y', 'Y', '\L\uyYy\l\EY', '')

YyyY
:$put =substitute('Z', 'Z', '\U\lZzZ\u\Ez', '')

zZZz
/^TEST_2
search hit BOTTOM, continuing at TOP:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('xXx', 'X', \"\r\", '')
:$put =substitute('Y', 'Y', '\L\uyYy\l\EY', '')
:$put =substitute('Z', 'Z', '\U\lZzZ\u\Ez', '')
/^TEST_2
ENDTEST

TEST_2:

STARTTEST
:set nomagic
:set cpo&
:$put =\"\n\nTEST_2:\"
:$put =substitute('A', 'A', '&&', '')
:$put =substitute('B', 'B', '\&', '')
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\0\9\8\7\6\5\4\3\2\1', '')
:$put =substitute('D', 'D', 'd', '')
:$put =substitute('E', 'E', '~', '')
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 29 lines, 1144 characters written:set ff& cpo+=A
/ENDTEST:$put =substitute('pPp', 'P', '\b', '')
:$put =substitute('qQq', 'Q', '\t', '')
:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('tTt', 'T', \"\r\", '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('X', 'X', '\L\uxXx\l\EX', '')
:$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')
/^TEST_3
ENDTEST

TEST_3:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_3:\"
:let y = substitute('aAa', 'A', '\="\\"', '')| $put =y
:let y = substitute('bBb', 'B', '\="\\\\"', '')| $put =y
:let y = substitute('cCc', 'C', '\="^V^M"', '')| $put =y
:let y = substitute('dDd', 'D', '\="\\^V^M"', '')| $put =y
:so! Xdotest
:set nomagic
:set cpo&
:$put =\"\n\nTEST_2:\"
3 more linesHh
iI
jJ
Kk
l^Ml
m^Mm
n^Mn
o
o
p^Hp
qq
r\r
scs
u
u
v^Hv
w\w
x^Mx
YyyY
zZZz


TEST_2:
3 more lines:$put =substitute('A', 'A', '&&', '')

AA
:$put =substitute('B', 'B', '\&', '')

&
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)

', '\0\9\8\7\6\5\4\3\2\1', '')
Kk
l^Ml
mm
nn
op^Hp
q       q
r\rscs
uv^Hv
w\wx^Mx
YyyY
zZZzTEST_2:
AA&C123456789987654321
:$put =substitute('D', 'D', 'd', '')

d
:$put =substitute('E', 'E', '~', '')

~
:$put =substitute('F', 'F', '\~', '')

~
:$put =substitute('G', 'G', '\ugg', '')

Gg
:$put =substitute('H', 'H', '\Uh\Eh', '')

Hh
:$put =substitute('I', 'I', '\lII', '')

iI
:$put =substitute('J', 'J', '\LJ\EJ', '')

jJ
:$put =substitute('K', 'K', '\Uk\ek', '')

Kk
:$put =substitute('lLl', 'L', '^^M', '')

l^Ml
:$put =substitute('mMm', 'M', '\r', '')

m^Mm
:$put =substitute('nNn', 'N', '\^^M', '')

n^Mn
:$put =substitute('oOo', 'O', '\n', '')


o
o
:$put =substitute('pPp', 'P', '\b', '')

p^Hp
:$put =substitute('qQq', 'Q', '\t', '')

qq
:$put =substitute('rRr', 'R', '\\', '')

r\r
:$put =substitute('sSs', 'S', '\c', '')

scs
:$put =substitute('tTt', 'T', \"\r\", '')

t^Mt
:$put =substitute('uUu', 'U', \"\n\", '')


u
u
:$put =substitute('vVv', 'V', \"\b\", '')

v^Hv
:$put =substitute('wWw', 'W', \"\\\", '')

w\w
:$put =substitute('X', 'X', '\L\uxXx\l\EX', '')

XxxX
:$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')

yYYy
/^TEST_3
search hit BOTTOM, continuing at TOP:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('tTt', 'T', \"\r\", '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('X', 'X', '\L\uxXx\l\EX', '')
:$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')
/^TEST_3
ENDTEST

TEST_3:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_3:\"
:let y = substitute('aAa', 'A', '\="\\"', '')| $put =y
:let y = substitute('bBb', 'B', '\="\\\\"', '')| $put =y
:let y = substitute('cCc', 'C', '\="^V^M"', '')| $put =y
:let y = substitute('dDd', 'D', '\="\\^V^M"', '')| $put =y
:let y = substitute('eEe', 'E', '\="\\\\^V^M"', '')     | $put =y
:let y = substitute('fFf', 'F', '\="\\r"', '')| $put =y
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 13 lines, 642 characters written:set ff& cpo+=A
/ENDTEST




:let y = substitute('jJj', 'J', '\="\\n"', '')| $put =y
:let y = substitute('kKk', 'K', '\="\r"', '')| $put =y
:let y = substitute('lLl', 'L', '\="\n"', '')| $put =y
/^TEST_4
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_3:\"
3 more linesHh
iI
jJ
Kk
l^Ml
m^Mm
n^Mn
o
o
p^Hp
qq
r\r
scs
t^Mt
u
u
v^Hv
w\w
XxxX
yYYy


TEST_3:
3 more lines:let y = substitute('aAa', 'A', '\="\\"', '')           | $put =y

a\a
:let y = substitute('bBb', 'B', '\="\\\\"', '')         | $put =y

b\\b
:let y = substitute('cCc', 'C', '\="^^M"', '')         | $put =y

c^Mc
:let y = substitute('dDd', 'D', '\="\\^^M"', '')       | $put =y

d\^Md
:let y = substitute('eEe', 'E', '\="\\\\^^M"', '')     | $put =y

e\\^Me
:let y = substitute('fFf', 'F', '\="\\r"', '')          | $put =y

f\rf
:let y = substitute('jJj', 'J', '\="\\n"', '')          | $put =y

j\nj
:let y = substitute('kKk', 'K', '\="\r"', '')           | $put =y

k^Mk
:let y = substitute('lLl', 'L', '\="\n"', '')           | $put =y


l
l
/^TEST_4
search hit BOTTOM, continuing at TOP:let y = substitute('bBb', 'B', '\="\\\\"', '')| $put =y
:let y = substitute('cCc', 'C', '\="^V^M"', '')| $put =y
:let y = substitute('dDd', 'D', '\="\\^V^M"', '')| $put =y
:let y = substitute('eEe', 'E', '\="\\\\^V^M"', '')     | $put =y
:let y = substitute('fFf', 'F', '\="\\r"', '')| $put =y
:let y = substitute('jJj', 'J', '\="\\n"', '')| $put =y
:let y = substitute('kKk', 'K', '\="\r"', '')| $put =y
:let y = substitute('lLl', 'L', '\="\n"', '')| $put =y
/^TEST_4
ENDTEST

TEST_4:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_4:\"
:let y = substitute('aAa', 'A', '\=substitute(submatch(0), ".", "\\", "")', '')        | $put =y
:let y = substitute('bBb', 'B', '\=substitute(submatch(0), ".", "\\\\", "")', ''')     | $put =y
:let y = substitute('cCc', 'C', '\=substitute(submatch(0), ".", "^V^M", "")', ''')     | $put =y
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 13 lines, 912 characters written:set ff& cpo+=A
/ENDTEST













:let y = substitute('dDd', 'D', '\=substitute(submatch(0), ".", "\\^V^M", "")',  '')   | $put =y
:let y = substitute('eEe', 'E', '\=substitute(submatch(0), ".", "\\\\^V^M", "")'', '') | $put =y
:let y = substitute('fFf', 'F', '\=substitute(submatch(0), ".", "\\r", "")', ''))      | $put =y
:let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', ''))      | $put =y
:let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')        | $put =y
:let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')        | $put =y
/^TEST_5
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_4:\"
3 more linest^Mt
u
u
v^Hv
w\w
XxxX
yYYy


TEST_3:
a\a
b\\b
c^Mc
d\^Md
e\\^Me
f\rf
j\nj
k^Mk
l
l


TEST_4:
3 more lines:let y = substitute('aAa', 'A', '\=substitute(submatch(0), ".", "\\", "")', '')

      | $put =y
u

v^Hv
w\wXxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\a
:let y = substitute('bBb', 'B', '\=substitute(submatch(0), ".", "\\\\", "")', '

')     | $put =y
u
v^Hv
w\wXxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
:let y = substitute('cCc', 'C', '\=substitute(submatch(0), ".", "^^M", "")', '')

    | $put =y
v^Hv
w\wXxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
:let y = substitute('dDd', 'D', '\=substitute(submatch(0), ".", "\\^^M", "")', '

')   | $put =y
w\w
XxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
:let y = substitute('eEe', 'E', '\=substitute(submatch(0), ".", "\\\\^^M", "")',

'') | $put =y
XxxX
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
:let y = substitute('fFf', 'F', '\=substitute(submatch(0), ".", "\\r", "")', ''

)      | $put =y
yYYyTEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
f^Mf
:let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', ''

)      | $put =y
TEST_3:
a\a
b\\bc^Mc
d\^Md
e\\^Me
f\rfj\njk^Mk
llTEST_4:
a\a
b\bc^Mc
d^Md
e\^Me
ff
jj
:let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')

      | $put =y
TEST_3:
a\ab\\b
c^Mc
d\^Md
e\\^Me
f\rfj\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
f^Mfjk^Mk
:let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')

      | $put =y
b\\b
c^Mc
d\^Md
e\\^Me
f\rfj\njk^Mk
llTEST_4:
a\a
b\bc^Mc
d^Md
e\^Me
ff
jjk^Mk
l
l
/^TEST_5
search hit BOTTOM, continuing at TOP:let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', ''))      | $put =y
:let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')        | $put =y
:let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')        | $put =y
/^TEST_5
ENDTEST

TEST_5:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_5:\"
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submaatch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)', '')
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\=string([submatch(0, 1), submatch(9, 1), submatch(8, 1), submatch(7, 1), subbmatch(6, 1), submatch(5, 1), submatch(4, 1), submatch(3, 1), submatch(2, 1), subbmatch(1, 1)])', '')
/^TEST_6
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 6 lines, 543 characters written:set ff& cpo+=A
/ENDTEST

ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_5:\"
3 more linese\\^Me
f\rf
j\nj
k^Mk
l
l


TEST_4:
a\a
b\b
c^Mc
d^Md
e\^Me
f^Mf
j
j
k^Mk
l
l


TEST_5:
3 more lines:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)

', '\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . subm

atch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)', '')
f\rf
j\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
f^Mfjk^Mk
lTEST_5:
A123456789987654321
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)

', '\=string([submatch(0, 1), submatch(9, 1), submatch(8, 1), submatch(7, 1), su

bmatch(6, 1), submatch(5, 1), submatch(4, 1), submatch(3, 1), submatch(2, 1), su

bmatch(1, 1)])', '')
j\nj
k^Mk
lTEST_4:
a\ab\b
c^Mc
dd
e\^Me
f^Mfjk^Mk
lTEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]
/^TEST_6
search hit BOTTOM, continuing at TOP:$put =\"\n\nTEST_5:\"
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submaatch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)', '')
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'', '\=string([submatch(0, 1), submatch(9, 1), submatch(8, 1), submatch(7, 1), subbmatch(6, 1), submatch(5, 1), submatch(4, 1), submatch(3, 1), submatch(2, 1), subbmatch(1, 1)])', '')
/^TEST_6
ENDTEST

TEST_6:

STARTTEST
:set magic&
:$put =\"\n\nTEST_6:\"
:set cpo+=/
:$put =substitute('A', 'A', 'a', '')
:$put =substitute('B', 'B', '%', '')
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')
:$put =substitute('D', 'D', '%', '')
/^TEST_7
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 9 lines, 216 characters written:set ff& cpo+=A
/ENDTEST
ENDTEST


TEST_7:


:so! Xdotest
:set magic&
:$put =\"\n\nTEST_6:\"
3 more linesl


TEST_4:
a\a
b\b
c^Mc
d^Md
e\^Me
f^Mf
j
j
k^Mk
l
l


TEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]


TEST_6:
3 more lines:set cpo+=/
:$put =substitute('A', 'A', 'a', '')

a
:$put =substitute('B', 'B', '%', '')

%
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')

c
:$put =substitute('D', 'D', '%', '')

%
/^TEST_7
search hit BOTTOM, continuing at TOP:set magic&
:$put =\"\n\nTEST_6:\"
:set cpo+=/
:$put =substitute('A', 'A', 'a', '')
:$put =substitute('B', 'B', '%', '')
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')
:$put =substitute('D', 'D', '%', '')
/^TEST_7
ENDTEST

TEST_7:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
:$put =substitute('A^V^MA', 'A.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=string(submatch(0, 1))', '')
:$put =substitute('-bb', '\zeb', 'a', 'g')
:$put =substitute('-bb', '\ze', 'c', 'g')
/^TEST_8
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 9 lines, 313 characters written:set ff& cpo+=A
/ENDTEST
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
3 more linesd^Md
e\^Me
f^Mf
j
j
k^Mk
l
l


TEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]


TEST_6:
a
%
c
%


TEST_7:
3 more lines:$put =substitute('A^^MA', 'A.', '\=submatch(0)', '')

A^MA
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')


B
B
:$put =substitute(\"B\nB\", 'B.', '\=string(submatch(0, 1))', '')


['B
']B
:$put =substitute('-bb', '\zeb', 'a', 'g')

-abab
:$put =substitute('-bb', '\ze', 'c', 'g')

c-cbcbc
/^TEST_8
search hit BOTTOM, continuing at TOP:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
:$put =substitute('A^V^MA', 'A.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=string(submatch(0, 1))', '')
:$put =substitute('-bb', '\zeb', 'a', 'g')
:$put =substitute('-bb', '\ze', 'c', 'g')
/^TEST_8
ENDTEST

TEST_8:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_8:\"
:$put =',,X'
:s/\(^\|,\)\ze\(,\|X\)/\1N/g
:$put =',,Y'
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
a:$put =',,Z'
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 10 lines, 186 characters written:set ff& cpo+=A
/ENDTEST

yy/^TEST_9:
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_8:\"
3 more linesTEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]


TEST_6:
a
%
c
%


TEST_7:
A^MA
B
B
['B
']B
-abab
c-cbcbc


TEST_8:
3 more lines:$put =',,X'

,,X
:s/\(^\|,\)\ze\(,\|X\)/\1N/g
N,,NX
:$put =',,Y'

,,Y
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
,
replace with \1N (y/n/a/q/l/^E/^Y)?N,,NY

:$put =',,Z'

,,Z
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
,
replace with \1N (y/n/a/q/l/^E/^Y)?N,,Z
replace with \1N (y/n/a/q/l/^E/^Y)?,NZ

/^TEST_9:
search hit BOTTOM, continuing at TOP:set cpo&
:$put =\"\n\nTEST_8:\"
:$put =',,X'
:s/\(^\|,\)\ze\(,\|X\)/\1N/g
:$put =',,Y'
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
a:$put =',,Z'
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
yy/^TEST_9:
ENDTEST

TEST_9:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_9:\"
:$put ='xxx'
:s/x/X/gc
yyq/^TEST_10:
ENDTEST

TEST_10:
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 6 lines, 82 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_9:\"
3 more linesa
%
c
%


TEST_7:
A^MA
B
B
['B
']B
-abab
c-cbcbc


TEST_8:
N,,NX
N,,NY
N,,NZ


TEST_9:
3 more lines:$put ='xxx'

xxx
:s/x/X/gc
x
replace with X (y/n/a/q/l/^E/^Y)?Xx
replace with X (y/n/a/q/l/^E/^Y)?Xx
replace with X (y/n/a/q/l/^E/^Y)?x
/^TEST_10:
search hit BOTTOM, continuing at TOPTEST_9:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_9:\"
:$put ='xxx'
:s/x/X/gc
yyq/^TEST_10:
ENDTEST

TEST_10:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_10:\"
:let y = substitute('123', '\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\zs.', 'a', 'g')| $put =y
:let y = substitute('123', '.\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\ze', 'a', 'g')| $put =y
:let y = substitute('123', '\ze.', 'a', 'g')| $put =y
:let y = substitute('123', '.\ze', 'a', 'g')| $put =y
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 12 lines, 584 characters written:set ff& cpo+=A
/ENDTEST



:let y = substitute('123', '1\|\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y
/^TEST_11
ENDTEST

:so! Xdotest
:set magic&
:set cpo&
:$put =\"\n\nTEST_10:\"
3 more linesTEST_7:
A^MA
B
B
['B
']B
-abab
c-cbcbc


TEST_8:
N,,NX
N,,NY
N,,NZ


TEST_9:
XXx


TEST_10:
3 more lines:let y = substitute('123', '\zs', 'a', 'g')             | $put =y

a1a2a3a
:let y = substitute('123', '\zs.', 'a', 'g')            | $put =y

aaa
:let y = substitute('123', '.\zs', 'a', 'g')            | $put =y

1a2a3a
:let y = substitute('123', '\ze', 'a', 'g')             | $put =y

a1a2a3a
:let y = substitute('123', '\ze.', 'a', 'g')            | $put =y

a1a2a3
:let y = substitute('123', '.\ze', 'a', 'g')            | $put =y

aaa
:let y = substitute('123', '1\|\ze', 'a', 'g')          | $put =y

aa2a3a
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y

1aaa
/^TEST_11
search hit BOTTOM, continuing at TOP:let y = substitute('123', '\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\zs.', 'a', 'g')| $put =y
:let y = substitute('123', '.\zs', 'a', 'g')| $put =y
:let y = substitute('123', '\ze', 'a', 'g')| $put =y
:let y = substitute('123', '\ze.', 'a', 'g')| $put =y
:let y = substitute('123', '.\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\|\ze', 'a', 'g')| $put =y
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y
/^TEST_11
ENDTEST

TEST_11:

STARTTEST
:/^Results/,$wq! test.out
ENDTEST

Results of test72:


TEST_1:
AA
&
search hit BOTTOM, continuing at TOP/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 1 line, 26 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:/^Results/,$wq! test.out
"test.out" [New File] 131 lines, 617 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test80 = test61; then \
#	  if diff test.out test80.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test80.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test80.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test82.failed test.ok test.out X* viminfo
cp test82.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test82.in
[?1h="test82.in" 103 lines, 3166 charactersTests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)
Also test "g~ap".

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, aa:b, a:expected))
:  else
:    let b:passed += 1
:  endif
:endfunction
:
:function! Chk(a, b, result):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 97 lines, 3055 characters written:set ff& cpo+=A
/ENDTEST: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%.22X', n)) | endfor
:for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ\xc2\x%.2XuVw', n)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ\xc2\x%.2XuVw', n)) | endfor
:call append(0, printf('%d checks passed', b:passed))
:"
:" test that g~ap changes one paragraph only.
:new
iabcd

defg^[gg0g~ap:let lns = getline(1,3)
:q!
:call append(line('$'), lns)
:"
:wq! test.out
ENDTEST

~
~



:so! Xdotest
:so small.vim
:if !has("multi_byte")

:  : e! test.ok

:  : w! test.out

:  : qa!

:  :endif
: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%.22X', n)) | endfor


:set enc=utf8
: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%.22X', n)) | endfor
:for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ\xc2\x%.2XuVw', n)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ\xc2\x%.2XuVw', n)) | endfor
:call append(0, printf('%d checks passed', b:passed))
:"
:" test that g~ap changes one paragraph only.
:new
iabcd

defg^[gg0g~ap:let lns = getline(1,3)
:q!
:call append(line('$'), lns)
:"
:wq! test.out
ENDTEST

~
~Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)
Also test "g~ap".

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, aa:b, a:expected))
:  else
:    let b:passed += 1
:  endif
:endfunction
:
:function! Chk(a, b, result)~
~~~~~~~~~~
~~~~~~~~~
~~
--No lines in buffer--:::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\x

aakk\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 cha

racter
: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('Xy

Z\xc2\x%.2XuVw', n)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('Xy

Z\xc2\x%.2XuVw', n)) | endfor
:call append(0, printf('%d checks passed', b:passed))
3732 checks passed:"
:" test that g~ap changes one paragraph only.
:new
~[No Name]                                                                       3732 checks passedtest82.in [+]                                                                   abcddefg[+]ABCD
:let lns = getline(1,3)
:q!
3732 checks passed~~~
~~:call append(line('$'), lns)
ABCDdefg:"
:wq! test.out
"test.out" [New File] 5 lines, 31 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test82 = test61; then \
#	  if diff test.out test82.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test82.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test82.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test84.failed test.ok test.out X* viminfo
cp test84.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test84.in
[?1h="test84.in" 35 lines, 786 charactersTests 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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for curswant not changing when setting an option/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 25 lines, 637 characters written:set ff& cpo+=A
/ENDTEST





:put =map(copy(result), 'join(v:val, '' '')')
:1 delete _
:write test.out
:
:qall!
ENDTEST

:so! Xdotest
:so small.vim
:/^start target options$/+1,/^end target options$/-1 yank
3 lines yanked: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
:  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
~~~~~
~~~~~
[No Name]                                                                       endfornew
:put =map(copy(result), 'join(v:val, '' '')')
:1 delete _write test.outqall!
ENDTESTtest84.in                                                                       :put =['1234567890', '12345']
1234567890
12345[+]:1 delete _

~:let result = []
:for option_name in target_option_names

:  :  call add(result, TestCurswant(option_name))

:  :endfor
1234567890
12345::new
~
~
~
~
~
~
[No Name]                                                                       1234567890
12345
~
~
~
~
~
[No Name] [+]                                                                   :1 delete _
:write test.out
:
:qall!
ENDTEST

test84.in                                                                       :put =map(copy(result), 'join(v:val, '' '')')
3 more linestabstop 7 4
timeoutlen 7 7
ttimeoutlen 7 7[+]:1 delete _

~:write test.out
"test.out" [New File] 3 lines, 43 characters writtentest.out     ::qall!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test84 = test61; then \
#	  if diff test.out test84.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test84.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test84.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test88.failed test.ok test.out X* viminfo
cp test88.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test88.in
[?1h="test88.in" 99 lines, 1449 charactersvim: set ft=vim

Tests for correct display (cursor column position) with +conceal and
tabulators.

STARTTEST
:so small.vim
:if !has('conceal')
   e! test.ok
   wq! test.out
:endif
:" Conceal settings.
:set conceallevel=2
:set concealcursor=nc
:syntax match test /|/ conceal
:" Save current cursor position. Only works in <expr> mode, can't be used
:" with :normal because it moves the cursor to the command line. Thanks to ZyX
:" <zyx.vim@gmail.com> for the idea to use an <expr> mapping.
:let positions = []
:nnoremap <expr> GG ":let positions += ['".screenrow().":".screencol()."']\n"
:" Start test.
/^start:
:normal ztj:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
vim: set ft=vim/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 82 lines, 1216 characters written:set ff& cpo+=A
/ENDTEST:normal W
GGk
:normal W
GGk
:normal W
GGk
:normal $
GGk
:" Display result.
:call append('$', 'end:')
:call append('$', positions)
:/^end/,$wq! test.out
ENDTEST

start:
.concealed.     text
|concealed|     text.concealed.     text|concealed|     text

.a.     .b.     .c.     .d.
|a|     |b|     |c|     |d|
:so! Xdotest
:so small.vim
:if !has('conceal')

:     e! test.ok

:     wq! test.out

:  :endif
:normal W
GGk
:normal W:" Conceal settings.
:set conceallevel=2
:set concealcursor=nc
:syntax match test /|/ conceal
concealed  concealed  


a       b       c       d:" Save current cursor position. Only works in <expr> mode, can't be used
:" with :normal because it moves the cursor to the command line. Thanks to ZyX
:" <zyx.vim@gmail.com> for the idea to use an <expr> mapping.
:let positions = []
:nnoremap <expr> GG ":let positions += ['".screenrow().":".screencol()."']\n"
:" Start test.
/^start:
:normal ztj














~
~
~
~
~
~
~
~
~
~
~
~
~
~:let positions += ['2:1']
:" We should end up in the same column when running these commands on the two
:" lines.
:normal ft
:let positions += ['2:17']
:normal $
:let positions += ['2:20']
:normal 0j
:let positions += ['3:1']
:normal ft
:let positions += ['3:17']
:normal $
:let positions += ['3:20']
:normal 0j0j
:let positions += ['5:8']
:" Same for next test block.
:normal ft
:let positions += ['5:25']
:normal $
:let positions += ['5:28']
:normal 0j
:let positions += ['6:8']
:normal ft
:let positions += ['6:25']
:normal $
:let positions += ['6:28']
:normal 0j0j
:let positions += ['8:1']
:" And check W with multiple tabs and conceals in a line.
:normal W
:let positions += ['8:9']
:normal W
:let positions += ['8:17']
:normal W
:let positions += ['8:25']
:normal $
:let positions += ['8:27']
:normal 0j
:let positions += ['9:1']
:normal W
:let positions += ['9:9']
:normal W
:let positions += ['9:17']
:normal W
:let positions += ['9:25']
:normal $
:let positions += ['9:26']
:set lbr
:normal $
:let positions += ['9:26']
:set list listchars=tab:>-
>------

>------->----
>------->------>----.b.>----.c.>----
a>------b>------c>------:normal 0
:let positions += ['9:1']
:normal W
:let positions += ['9:9']
:normal W
:let positions += ['9:17']
:normal W
:let positions += ['9:25']
:normal $
:let positions += ['9:26']
:" Display result.
:call append('$', 'end:')
end::call append('$', positions)
2:1
2:17
2:20
3:1
3:17
3:20
5:8
5:25
5:28
6:8
6:25
6:28
8:1:/^end/,$wq! test.out
"test.out" [New File] 29 lines, 135 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test88 = test61; then \
#	  if diff test.out test88.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test88.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test88.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test90.failed test.ok test.out X* viminfo
cp test90.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test90.in
[?1h="test90.in" 53 lines, 1204 charactersTests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :

STARTTEST
:so small.vim
:if !has('cryptv') || !exists('*sha256')
   e! test.ok
   wq! test.out
:endif
:"
:let testcase='test for empty string: '
:if sha256("") ==# 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b78522b855'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:let testcase='test for 1 char: '
:if sha256("a") ==# 'ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afeee48bb'
: let res='ok'
:else:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 47 lines, 1114 characters written:set ff& cpo+=A
/ENDTEST:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc39ed110ca776'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:let testcase='test for contains non-ascii char: '
:if sha256("\xde\xad\xbe\xef") ==# '5f78c33274e43fa9de5659265c1d917e25c03722dcb00b8d27db8d5feaa813953'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:/^start:/,$wq! test.out
ENDTEST

start:


:so! Xdotest
:so small.vim
:if !has('cryptv') || !exists('*sha256')

:     e! test.ok

:     wq! test.out

:  :endif
:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc3

:"
:let testcase='test for empty string: '
:if sha256("") ==# 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b785

2b855'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc39ed110ca776'

:$put =testcase.res

test for empty string: ok
:"
:let testcase='test for 1 char: '
:if sha256("a") ==# 'ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785af

ee48bb'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc39ed110ca776'
: let res='ok'
:$put =testcase.res

test for 1 char: ok
:"
:let testcase='test for 3 chars: '
:if sha256("abc") ==# 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61

f20015ad'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc39ed110ca776'
: let res='ok'
:else
:$put =testcase.res


test for 3 chars: ok
~

:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8c

c39ed110ca776'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
: let res='ok'
:else
: let res='ng'
:endif

:$put =testcase.res
test for contains meta char: ok
:"
:let testcase='test for contains non-ascii char: '
:if sha256("\xde\xad\xbe\xef") ==# '5f78c33274e43fa9de5659265c1d917e25c03722dcb

0b8d27db8d5feaa813953'
:  : let res='ok'

:  :else

:  : let res='ng'

:  :endif
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res

test for contains non-ascii char: ok
:"
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 6 lines, 143 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test90 = test61; then \
#	  if diff test.out test90.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test90.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test90.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test91.failed test.ok test.out X* viminfo
cp test91.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test91.in
[?1h="test91.in" 116 lines, 3240 charactersTests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar().
vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Use strings to test for memory leaks.
:" First, check that in an empty window, gettabvar() returns the correct value
:let t:testvar='abcd'
:$put =string(gettabvar(1,'testvar'))
:$put =string(gettabvar(1,'testvar'))
:" Test for getbufvar()
:let b:var_num = '1234'
:let def_num = '5678'
:$put =string(getbufvar(1, 'var_num'))
:$put =string(getbufvar(1, 'var_num', def_num))
:$put =string(getbufvar(1, ''))
:$put =string(getbufvar(1, '', def_num))
:unlet b:var_num
:$put =string(getbufvar(1, 'var_num', def_num))
:$put =string(getbufvar(1, ''))
:$put =string(getbufvar(1, '', def_num)):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar()./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 109 lines, 3127 characters written:set ff& cpo+=A
/ENDTEST:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:tabnext
:3wincmd w
:unlet w:var_dict
:tabrewind
:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:$put =string(gettabwinvar(2, 9, ''))
:$put =string(gettabwinvar(2, 9, '', def_dict))
:$put =string(gettabwinvar(9, 3, ''))
:$put =string(gettabwinvar(9, 3, '', def_dict))
:unlet def_dict
:$put =string(gettabwinvar(2, 3, '&nux'))
:$put =string(gettabwinvar(2, 3, '&nux', 1))
:tabonly
:"
:/^start/,$wq! test.out
ENDTEST

start:


:so! Xdotest
:so small.vim
:so mbyte.vim
:"
:" Use strings to test for memory leaks.
:" First, check that in an empty window, gettabvar() returns the correct value
:let t:testvar='abcd'
:$put =string(gettabvar(1,'testvar'))

'abcd'
:$put =string(gettabvar(1,'testvar'))

'abcd'
:" Test for getbufvar()
:let b:var_num = '1234'
:let def_num = '5678'
:$put =string(getbufvar(1, 'var_num'))

'1234'
:$put =string(getbufvar(1, 'var_num', def_num))

'1234'
:$put =string(getbufvar(1, ''))

{'var_num': '1234'}
:$put =string(getbufvar(1, '', def_num))

{'var_num': '1234'}
:unlet b:var_num
:$put =string(getbufvar(1, 'var_num', def_num))

'5678'
:$put =string(getbufvar(1, ''))

{}
:$put =string(getbufvar(1, '', def_num))

{}
:$put =string(getbufvar(9, ''))

''
:$put =string(getbufvar(9, '', def_num))

'5678'
:unlet def_num
:$put =string(getbufvar(1, '&autoindent'))

0
:$put =string(getbufvar(1, '&autoindent', 1))

0
:"
:" Open new window with forced option values
:set fileformats=unix,dos
:new ++ff=dos ++bin ++enc=iso-8859-2
~~~~~~~
~~~
[No Name]                                                                       {'var_num': '1234'}

'5678'{}''
'5678'
0test91.in [+]                                                                   :let otherff = getbufvar(bufnr('%'), '&fileformat')
:let otherbin = getbufvar(bufnr('%'), '&bin')
:let otherfenc = getbufvar(bufnr('%'), '&fenc')
:close
:$put =string(gettabwinvar(9, 3, '', def_dict))
:unlet def_dict
:$put =string(gettabwinvar(2, 3, '&nux'))
:$put =string(gettabwinvar(2, 3, '&nux', 1))
:tabonly
:"
:/^start/,$wq! test.out
ENDTESTstart:
'abcd'
'abcd''1234'{'var_num': '1234'}
'5678'

{}
'''5678'

0:$put =otherff

dos
:$put =string(otherbin)

1
:$put =otherfenc

iso-8859-2
:unlet otherff otherbin otherfenc
:" test for getwinvar()
:let w:var_str = "Dance"
:let def_str = "Chance"
:$put =string(getwinvar(1, 'var_str'))

'Dance'
:$put =string(getwinvar(1, 'var_str', def_str))

'Dance'
:$put =string(getwinvar(1, ''))

{'var_str': 'Dance'}
:$put =string(getwinvar(1, '', def_str))

{'var_str': 'Dance'}
:unlet w:var_str
:$put =string(getwinvar(1, 'var_str', def_str))

'Chance'
:$put =string(getwinvar(1, ''))

{}
:$put =string(getwinvar(1, '', def_str))

{}
:$put =string(getwinvar(9, ''))

''
:$put =string(getwinvar(9, '', def_str))

'Chance'
:$put =string(getwinvar(1, '&nu'))

0
:$put =string(getwinvar(1, '&nu',  1))

0
:unlet def_str
:"
:" test for gettabvar()
:tabnew
 + test91.in | [No Name] _______________________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:tabnew
 + test91.in | [No Name] | [No Name] ___________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:let t:var_list = [1, 2, 3]
:let t:other = 777
:let def_list = [4, 5, 6, 7]
:tabrewind
 + test91.in | [No Name] | [No Name] ___________________________________________X{'var_num': '1234'}
'5678'
{}
{}
''
'5678'
0
0
dos
1
iso-8859-2
'Dance'
'Dance'
{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
:$put =string(gettabvar(3, 'var_list'))

[1, 2, 3]
:$put =string(gettabvar(3, 'var_list', def_list))

[1, 2, 3]
:$put =string(gettabvar(3, ''))

{'var_list': [1, 2, 3], 'other': 777}
:$put =string(gettabvar(3, '', def_list))

{'var_list': [1, 2, 3], 'other': 777}
:tablast
 + test91.in | [No Name] | [No Name] ___________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:unlet t:var_list
:tabrewind
 + test91.in | [No Name] | [No Name] ___________________________________________X''
'5678'
0
0
dos
1
iso-8859-2
'Dance'
'Dance'
{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
[1, 2, 3]
[1, 2, 3]
{'var_list': [1, 2, 3], 'other': 777}
{'var_list': [1, 2, 3], 'other': 777}

:$put =string(gettabvar(3, 'var_list', def_list))

[4, 5, 6, 7]
:$put =string(gettabvar(9, ''))

''
:$put =string(gettabvar(9, '', def_list))

[4, 5, 6, 7]
:$put =string(gettabvar(3, '&nu'))

''
:$put =string(gettabvar(3, '&nu', def_list))

[4, 5, 6, 7]
:unlet def_list
:tabonly
dos:"
:" test for gettabwinvar()
:tabnew
 + test91.in | [No Name] _______________________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:tabnew
 + test91.in | [No Name] | [No Name] ___________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:tabprev
 + test91.in | [No Name] | [No Name] ___________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:split
2 [No Name] | [No Name] _X[No Name]                                                                       [No Name]                                                                       :split
 + test91.in | 3 [No Name] | [No Name] _________________________________________X~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :wincmd w
[No Name]                                                                       [No Name]                                                                       _X:vert split
4_X||||||                                       
~                                       
~                                       
~                                       
~                                       ~~~~~[No Name]                              :wincmd w
[No Name]                                [No Name]                              _X:let w:var_dict = {'dict': 'tabwin'}
:let def_dict = {'dict2': 'newval'}
:wincmd b
[No Name]                              [No Name]                                                                       _X:tabrewind
 + test91.in | 4 [No Name] | [No Name] _________________________________________X1
iso-8859-2
'Dance'
'Dance'
{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
[1, 2, 3]
[1, 2, 3]
{'var_list': [1, 2, 3], 'other': 777}
{'var_list': [1, 2, 3], 'other': 777}
[4, 5, 6, 7]
''
[4, 5, 6, 7]
''
[4, 5, 6, 7]

:$put =string(gettabwinvar(2, 3, 'var_dict'))

{'dict': 'tabwin'}
:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))

{'dict': 'tabwin'}
:$put =string(gettabwinvar(2, 3, ''))

{'var_dict': {'dict': 'tabwin'}}
:$put =string(gettabwinvar(2, 3, '', def_dict))

{'var_dict': {'dict': 'tabwin'}}
:tabnext
 + test91.in | 4 [No Name] | [No Name] _________________________________________X~
~
~
~
~
~
[No Name]                                                                       ||||||~                                       
~                                       
~                                       
~                                       
~                                       
[No Name]                                ~~~~~[No Name]                              ~
~
~
~
~
[No Name]                                                                       :3wincmd w
[No Name]                              [No Name]                                                                       _X:unlet w:var_dict
:tabrewind
 + test91.in | 4 [No Name] | [No Name] _________________________________________X{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
[1, 2, 3]
[1, 2, 3]
{'var_list': [1, 2, 3], 'other': 777}
{'var_list': [1, 2, 3], 'other': 777}
[4, 5, 6, 7]
''
[4, 5, 6, 7]
''
[4, 5, 6, 7]
{'dict': 'tabwin'}
{'dict': 'tabwin'}
{'var_dict': {'dict': 'tabwin'}}
{'var_dict': {'dict': 'tabwin'}}

:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))

{'dict2': 'newval'}
:$put =string(gettabwinvar(2, 3, ''))

{}
:$put =string(gettabwinvar(2, 3, '', def_dict))

{}
:$put =string(gettabwinvar(2, 9, ''))

''
:$put =string(gettabwinvar(2, 9, '', def_dict))

{'dict2': 'newval'}
:$put =string(gettabwinvar(9, 3, ''))

''
:$put =string(gettabwinvar(9, 3, '', def_dict))

{'dict2': 'newval'}
:unlet def_dict
:$put =string(gettabwinvar(2, 3, '&nux'))

''
:$put =string(gettabwinvar(2, 3, '&nux', 1))

1
:tabonly
0:"
:/^start/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 50 lines, 530 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test91 = test61; then \
#	  if diff test.out test91.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test91.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test91.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test92.failed test.ok test.out X* viminfo
cp test92.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test92.in
[?1h="test92.in" 48 lines, 852 charactersvim: set ft=vim fenc=utf-8:

Tests if :mksession saves cursor columns correctly in presence of tab and
multibyte characters when fileencoding=utf-8.

STARTTEST
:so mbyte.vim
:if !has('mksession')
:  e! test.ok
:  wq! test.out
:endif
:set sessionoptions=buffers splitbelow fileencoding=utf-8
/^start:
:vsplit
j16|:split
j16|:split
j16|:split
j8|:split
j8|:split
j16|:split
j16|:split
j16|:wincmd l
/^start::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
vim: set ft=vim fenc=utf-8:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 31 lines, 467 characters written:set ff& cpo+=A
/ENDTESTj016|3zl:split
j016|3zl:split
j08|3zl:split
j08|3zl:split
j016|3zl:split
j016|3zl:split
j016|3zl:split
:mksession! test.out
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!
ENDTEST

start:
no multibyte chAracterone leaDing tab
    four leadinG spaces
twoconsecutive tabs
two     tabs    in one line
:so! Xdotest
:so mbyte.vim
:if !has('mksession')

:  :  e! test.ok

:  :  wq! test.out

:  :endif
j016|3zl:split
j016|3zl:split
j08|3zl:split:set sessionoptions=buffers splitbelow fileencoding=utf-8
/^start:
:vsplit
|
j08|3zl:split ||
j016|3zl:split|||
:mksession! test.out|
:new test.out       |
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d  |
:w! test.out                            |
:qa!        |
ENDTEST|
       |
start:|
no multibyte chAracter|
        one leaDing tab|
    four leadinG spaces|
two             consecutive tabs|tabs    in one line     |
:split
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out 
:qa!         
ENDTEST       
              
start:        
no multibyte chAracter
        one leaDing tab
    four leadinG spaces               
two             consecutive tabs
test92.in [+]                           
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!                  
ENDTEST                
                       
start:                
no multibyte chAracter     
        one leaDing tab    
    four leadinG spaces               
two             consecutive tabs        :split
:qa!|
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
:w! test.out|
:qa!|
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
ENDTEST                                 
                                        
start:                                  
no multibyte chAracter                  
        one leaDing tab                 
                                        
    four leadinG spaces

:split
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|

:split
ENDTEST||
start:|
no multibyte chAracter|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
two     tabs    in one line|

:split
|
start:|
no multibyte chAracter|
test92.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |
test92.in [+]                            !TESTrt:multibyte chAracterone leaDing tabfour leadinG spacestest92.in [+]                          TESTrt:multibyte chAracterone leaDing tabfour leadinG spacestest92.in [+]                          test.out!TESTrt:multibyte chAracterone leaDing tabtest92.in [+]                          !                                      TEST                                                                          rt:                                    multibyte chAracter                         one leaDing tab                                                          four leadinG spaces:qa!ENDTESTstart:no multibyte chAracter   one leaDing tab   four leadinG spaces!TESrt:multibyte chAracterone leaDing tabfour leadinG spaces

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |
test92.in [+]                            TESTrt:multibyte chAracterone leaDing tabtest92.in [+]                          TESTrt:multibyte chAracterone leaDing tabtest92.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacestest92.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacesconsecutive tabstest92.in [+]                          start:no multibyte chAracter   one leaDing tab   four leadinG spacestwo   consecutive tabsrt:multibyte chAracterone leaDing tabfour leadinG spaces   consecutive tabs

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |
test92.in [+]                            TESTrt:multibyte chAractertest92.in [+]                          rt:multibyte chAracterone leaDing tabtest92.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacestest92.in [+]                          one leaDing tabfour leadinG spacesconsecutive tabstest92.in [+]                          one leaDing tabfour leadinG spacesconsecutive tabstabs    in one linetest92.in [+]                             one leaDing tab   four leadinG spacestwo   consecutive tabstwo     tabs    in one lineone leaDing tabfour leadinG spaces   consecutive tabs     tabs    in one line

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:split
start:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:mksession! test.out
:new test.out
"test.out" 282 lines, 5888 charactersstart:|
no multibyte chAracter|
test92.in [+]                           |
no multibyte chAracter|one leaDing tab|
test92.in [+]                           |one leaDing tab|
    four leadinG spaces|
test92.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test92.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test92.in [+]                           |
two     tabs    in one line|
test92.in [+]                           |
test92.in [+]                           |

:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
256 fewer lines  normal! 016|[+]:w! test.out
"test.out" 26 lines, 611 characters written   :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test92 = test61; then \
#	  if diff test.out test92.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test92.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test92.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test93.failed test.ok test.out X* viminfo
cp test93.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test93.in
[?1h="test93.in" 48 lines, 843 charactersvim: set ft=vim fenc=latin1:

Tests if :mksession saves cursor columns correctly in presence of tab and
multibyte characters when fileencoding=latin1.

STARTTEST
:so mbyte.vim
:if !has('mksession')
:  e! test.ok
:  wq! test.out
:endif
:set sessionoptions=buffers splitbelow fileencoding=latin1
/^start:
:vsplit
j16|:split
j16|:split
j16|:split
j8|:split
j8|:split
j16|:split
j16|:split
j16|:wincmd l
/^start::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
vim: set ft=vim fenc=latin1:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 31 lines, 468 characters written:set ff& cpo+=A
/ENDTESTj016|3zl:split
j016|3zl:split
j08|3zl:split
j08|3zl:split
j016|3zl:split
j016|3zl:split
j016|3zl:split
:mksession! test.out
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!
ENDTEST

start:
no multibyte chAracterone leaDing tab
    four leadinG spaces
twoconsecutive tabs
two     tabs    in one line
:so! Xdotest
:so mbyte.vim
:if !has('mksession')

:  :  e! test.ok

:  :  wq! test.out

:  :endif
j016|3zl:split
j016|3zl:split
j08|3zl:split:set sessionoptions=buffers splitbelow fileencoding=latin1
/^start:
:vsplit
|
j08|3zl:split ||
j016|3zl:split|||
:mksession! test.out|
:new test.out       |
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d  |
:w! test.out                            |
:qa!        |
ENDTEST|
       |
start:|
no multibyte chAracter|
        one leaDing tab|
    four leadinG spaces|
two             consecutive tabs|tabs    in one line     |
:split
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out 
:qa!         
ENDTEST       
              
start:        
no multibyte chAracter
        one leaDing tab
    four leadinG spaces               
two             consecutive tabs
test93.in [+]                           
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!                  
ENDTEST                
                       
start:                
no multibyte chAracter     
        one leaDing tab 
    four leadinG spaces       
two             consecutive tab:split
:qa!|
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
:w! test.out|
:qa!|
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
ENDTEST                                 
                                        
start:                                  
no multibyte chAracter                  
        one leaDing tab                 
                                        
    four leadinG spaces

:split
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |
ENDTEST||
start:|
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|

:split
ENDTEST||
start:|
no multibyte chAracter|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
two     tabs    in one line|

:split
|
start:|
no multibyte chAracter|
test93.in [+]                           |
start:|
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |
test93.in [+]                            !TESTrt:multibyte chAracterone leaDing tabfour leadinG spacestest93.in [+]                          TESTrt:multibyte chAracterone leaDing tabfour leadinG spacestest93.in [+]                          test.out!TESTrt:multibyte chAracterone leaDing tabtest93.in [+]                          !                                      TEST                                                                          rt:                                    multibyte chAracter                         one leaDing tab                                                          four leadinG spaces:qa!ENDTESTstart:no multibyte chAracter   one leaDing tab   four leadinG spaces!TESrt:multibyte chAracterone leaDing tabfour leadinG spaces

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |
test93.in [+]                            TESTrt:multibyte chAracterone leaDing tabtest93.in [+]                          TESTrt:multibyte chAracterone leaDing tabtest93.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacestest93.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacesconsecutive tabstest93.in [+]                          start:no multibyte chAracter   one leaDing tab   four leadinG spacestwo   consecutive tabsrt:multibyte chAracterone leaDing tabfour leadinG spaces   consecutive tabs

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |
test93.in [+]                            TESTrt:multibyte chAractertest93.in [+]                          rt:multibyte chAracterone leaDing tabtest93.in [+]                          rt:multibyte chAracterone leaDing tabfour leadinG spacestest93.in [+]                          one leaDing tabfour leadinG spacesconsecutive tabstest93.in [+]                          one leaDing tabfour leadinG spacesconsecutive tabstabs    in one linetest93.in [+]                             one leaDing tab   four leadinG spacestwo   consecutive tabstwo     tabs    in one lineone leaDing tabfour leadinG spaces   consecutive tabs     tabs    in one line

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:split
start:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:mksession! test.out
:new test.out
"test.out" 282 lines, 5888 charactersstart:|
no multibyte chAracter|
test93.in [+]                           |
no multibyte chAracter|one leaDing tab|
test93.in [+]                           |one leaDing tab|
    four leadinG spaces|
test93.in [+]                           |
    four leadinG spaces|
twoconsecutive tabs|
test93.in [+]                           |
twoconsecutive tabs|
two     tabs    in one line|
test93.in [+]                           |
two     tabs    in one line|
test93.in [+]                           |
test93.in [+]                           |

:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
256 fewer lines  normal! 016|[+]:w! test.out
"test.out" 26 lines, 611 characters written   :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test93 = test61; then \
#	  if diff test.out test93.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test93.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test93.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test94.failed test.ok test.out X* viminfo
cp test94.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test94.in
[?1h="test94.in" 256 lines, 4824 charactersTest for Visual mode and operators

Tests for the two kinds of operations: Those executed with Visual mode
followed by an operator and those executed via Operator-pending mode. Also
part of the test are mappings, counts, and repetition with the . command.

Test cases:
- Visual modes (v V CTRL-V) followed by an operator; count; repeating
- Visual mode maps; count; repeating
  - Simple
  - With an Ex command (custom text object)
- Operator-pending mode maps
  - Simple
  - With Ex command moving the cursor
  - With Ex command and Visual selection (custom text object)
- Patch 7.3.879: Properly abort Ex command in Operator-pending mode

STARTTEST
:so small.vim
:set enc=utf-8 nocp viminfo+=nviminfo
:
:" User functions
:function MoveToCap():set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for Visual mode and operators/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 211 lines, 3837 characters written:set ff& cpo+=A
/ENDTESTkv3lyjv3lpgvcxxx^[
:$put ='---'
:
:$put =''
:$put ='gv in exclusive select mode without operation'
:$put ='zzz '
:set selection=exclusive
0v3l^[gvcxxx^[
:$put ='---'
:/^start:/+2,$w! test.out
:q!
ENDTEST

start:

apple banana cherry

line 1 line 1
line 2 line 2
line 3 line 3
line 4 line 4
line 5 line 5
line 6 line 6
:so! Xdotest
:so small.vim
:set enc=utf-8 nocp viminfo+=nviminfo
kv3lyjv3lpgvcxxx^[
:$put ='---'
:
:$put =''
:$put ='gv in exclusive select mode without operation'
:$put ='zzz '
:set selection=exclusive
0v3l^[gvcxxx^[
:$put ='---'
:/^start:/+2,$w! test.out
:q!
ENDTEST

start:

apple banana cherry

line 1 line 1
line 2 line 2
line 3 line 3
line 4 line 4
line 5 line 5
line 6 line 6::" User functions
:function MoveToCap()

:  :  call search('\u', 'W')

:  :endfunction
kv3lyjv3lpgvcxxx^[
:$put ='---':function SelectInCaps()

:  :  let [line1, col1] = searchpos('\u', 'bcnW')

:  :  let [line2, col2] = searchpos('.\u', 'nW')

:  :  call setpos("'<", [0, line1, col1, 0])

:  :  call setpos("'>", [0, line2, col2, 0])

:  :  normal! gv

:  :endfunction
kv3lyjv3lpgvcxxx^[
:$put ='---'
:
:$put =''
:$put ='gv in exclusive select mode without operation'
:$put ='zzz '::" Visual modes followed by operator
/^apple
a-- VISUAL --ple banana cherry banana cherry banan-- VISUAL --
a  cherryy:/^line 1
line 1 line 1 -- VISUAL LINE --INSERT --newline-- INSERT --newline
line 3 line 3 
line 4 line 4 


-- VISUAL LINE --line 5 line 5line 6 line 6xxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxx:/^xxxx



-- VISUAL BLOCK --x
x
xINSERT --  
   


-- INSERT --  
     
xxxx
    xxxx
xxxxxxxx
xxxxxxxxxxxxx
-- VISUAL BLOCK --
-- INSERT ------
    ----
xxxx----
xxxx------- INSERT ------------------:::" Visual mode maps (movement and text object)
:vnoremap W /\u/s-1<CR>
:vnoremap iW :<C-U>call SelectInCaps()<CR>
/^Kiwi


KiwiRaspberryDateWatermelonPeach
-- VISUAL --/\u/s-1
Kiw
-- INSERT --NoRaspberryDateWatermelonPeacho
-- INSERT --NoberryDateWatermelonPeachoberryDateWat
-- VISUAL --rmelonPeachach
:/^Jambu

JambuRambutanBananaTangerineMangoJa
-- VISUAL --:'<,'>call SelectInCaps()
Jamb
-- INSERT ---RambutanBananaTangerineMango-
-- INSERT ---tanBananaTangerineMango-tanBanana
-- VISUAL --
--angerineMangoago
:::" Operator-pending mode maps (movement and text object)
:onoremap W /\u/<CR>
:onoremap <Leader>W :<C-U>call MoveToCap()<CR>
:onoremap iW :<C-U>call SelectInCaps()<CR>
/^Pineapple


PineappleQuinceLoganberryOrangeGrapefruitKiwiZ
/\u/
-QuinceLoganberryOrangeGrapefruitKiwiZ-
/\u/
-- INSERT ---LoganberryOrangeGrapefruitKiwiZ-
/\u/
-- INSERT ---GrapefruitKiwiZ-
/\u/
-- INSERT ---Z
:/^Juniper

JuniperDurianZ
:call MoveToCap()
Whavcre
:call MoveToCap()
Qhevna:/^Lemon

LemonNectarineZ
:call SelectInCaps()
LemonLemonNectarineZ
Lemon:call SelectInCaps()
NewNectarineZwNecta
:call SelectInCaps()
wZ
:::" Patch 7.3.879: Properly abort Operator-pending mode for "dv:<Esc>" etc.
/^zzzz


zzzz
:::set noma | let v:errmsg = ''
:E21: Cannot make changes, 'modifiable' is off:set ma | put = v:errmsg =~# '^E21' ? 'ok' : 'failed'

ok
:
:
:set noma | let v:errmsg = ''
:
:set ma | put = v:errmsg =~# '^E21' ? 'failed' : 'ok'

ok
::$put =''


:$put ='characterwise visual mode: replace last line'

characterwise visual mode: replace last line
:$put ='a'

a
:let @" = 'x'
:let v:errmsg = ''

-- VISUAL --ax
:$put ='---'

---
:$put ='v:errmsg='.v:errmsg

v:errmsg=
::$put =''


:$put ='characterwise visual mode: delete middle line'

characterwise visual mode: delete middle line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c


-- VISUAL --ab
c
~


:$put ='---'
---
::$put =''


:$put ='characterwise visual mode: delete middle two line'

characterwise visual mode: delete middle two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c


-- VISUAL --a 
bc~
~


:$put ='---'
---
::$put =''
:$put ='characterwise visual mode: delete last line'

characterwise visual mode: delete last line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c
-- VISUAL --c
:$put ='---'

---
::$put =''


:$put ='characterwise visual mode: delete last two line'

characterwise visual mode: delete last two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c

-- VISUAL --b 
c~

:$put ='---'
---
::" Select mode maps
:snoremap <lt>End> <End>
:snoremap <lt>Down> <Down>
:snoremap <lt>Del> <Del>
::$put =''


:$put ='characterwise select mode: delete middle line'

characterwise select mode: delete middle line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c


-- SELECT --ab
c
~


:$put ='---'
---
::$put =''


:$put ='characterwise select mode: delete middle two line'

characterwise select mode: delete middle two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c


-- SELECT --a 
bc~
~


:$put ='---'
---
::$put =''
:$put ='characterwise select mode: delete last line'

characterwise select mode: delete last line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c
-- SELECT --c
:$put ='---'

---
::$put =''


:$put ='characterwise select mode: delete last two line'

characterwise select mode: delete last two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

c

-- SELECT --b 
c~

:$put ='---'
---
::$put =''


:$put ='linewise select mode: delete middle line'

linewise select mode: delete middle line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

ca 


-- SELECT LINE --bc
~


:$put ='---'
---
::$put =''


:$put ='linewise select mode: delete middle two line'

linewise select mode: delete middle two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

ca 


-- SELECT LINE --a
b 
c~
~


:$put ='---'
---
::$put =''
:$put ='linewise select mode: delete last line'

linewise select mode: delete last line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

cc 
-- SELECT LINE --~

:$put ='---'
---
::$put =''


:$put ='linewise select mode: delete last two line'

linewise select mode: delete last two line
:$put ='a'

a
:$put ='b'

b
:$put ='c'

cb 

-- SELECT LINE --b
c 
~~


:$put ='---'
---
::$put =''
:$put ='v_p: replace last character with line register at middle line'

v_p: replace last character with line register at middle line
:$put ='aaa'

aaa
:$put ='bbb'

bbb
:$put ='ccc'

ccc
:-2yank
bb

-- VISUAL --aaa

:$put ='---'


ccc
---
::$put =''


:$put ='v_p: replace last character with line register at middle line selecting

newline'
linewise select mode: delete middle two line
c---linewise select mode: delete last line
ab
---linewise select mode: delete last two line
a---v_p: replace last character with line register at middle line
aaabbaaaccc
---v_p: replace last character with line register at middle line selecting newline
:$put ='aaa'

aaa
:$put ='bbb'

bbb
:$put ='ccc'

ccc
:-2yank
bb

-- VISUAL --baaa
ccc

:$put ='---'

---
::$put =''


:$put ='v_p: replace last character with line register at last line'

v_p: replace last character with line register at last line
:$put ='aaa'

aaa
:$put ='bbb'

bbb
:$put ='ccc'

ccc
:-2yank
cc
-- VISUAL --
aaa

:$put ='---'

---
::$put =''


:$put ='v_p: replace last character with line register at last line selecting n

ewline'
aaa
bbaaaccc
---v_p: replace last character with line register at middle line selecting newline
aaabbaaa
ccc
---v_p: replace last character with line register at last line
aaabbb
ccaaa---v_p: replace last character with line register at last line selecting newline
:$put ='aaa'

aaa
:$put ='bbb'

bbb
:$put ='ccc'

ccc
:-2yank
cc
-- VISUAL --c
aaa

:$put ='---'

---
::$put =''


:$put ='gv in exclusive select mode after operation'

gv in exclusive select mode after operation
:$put ='zzz '

zzz
:$put ='äà '

äÃ
:set selection=exclusive


-- VISUAL --zzz
zzz

-- VISUAL --äÃ
zzz
-- VISUAL --zzzINSERTxxx
:$put ='---'

---
::$put =''


:$put ='gv in exclusive select mode without operation'

gv in exclusive select mode without operation
:$put ='zzz '

zzz
:set selection=exclusive

-- VISUAL --zzz
zzz
-- VISUAL --zzzINSERTxxx
:$put ='---'

---
:/^start:/+2,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New] 123L, 1328C written:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test94 = test61; then \
#	  if diff test.out test94.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test94.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test94.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test95.failed test.ok test.out X* viminfo
cp test95.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test95.in
[?1h="test95.in" 141 lines, 5827 charactersTest for regexp patterns with multi-byte support, using utf-8.
See test64 for the non-multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:so mbyte.vim
:set nocp encoding=utf-8 viminfo+=nviminfo nomore
:" tl is a List of Lists with:
:"    2: test auto/old/new  0: test auto/old  1: test auto/new
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
:
:"""" Multi-byte character tests. These will fail unless vim is compiled
:"""" with Multibyte (FEAT_MBYTE) or BIG/HUGE features.:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for regexp patterns with multi-byte support, using utf-8./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 131 lines, 5590 characters written:set ff& cpo+=A
/ENDTEST:endif
:      endfor
:      unlet i
:    endif
:  endfor
:endfor
:unlet t tl e l
:
:" check that 'ambiwidth' does not change the meaning of \p
:set regexpengine=1 ambiwidth=single
:$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=1 ambiwidth=double
:$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=single
:$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=double
:$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')
:
:/\%#=1^Results/,$wq! test.out
ENDTEST

Results of test95:
~



:so! Xdotest
:so small.vim
:so mbyte.vim
:set nocp encoding=utf-8 viminfo+=nviminfo nomore
:endif
:      endfor
:      unlet i
:    endif
:  endfor
:endfor
:unlet t tl e l
:
:" check that 'ambiwidth' does not change the meaning of \p
:set regexpengine=1 ambiwidth=single
:$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=1 ambiwidth=double
:$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=single
:$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=double
:$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')
:
:/\%#=1^Results/,$wq! test.out
ENDTEST

Results of test95:
~


:" tl is a List of Lists with:
:"    2: test auto/old/new  0: test auto/old  1: test auto/new
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []
::"""" Multi-byte character tests. These will fail unless vim is compiled
:"""" with Multibyte (FEAT_MBYTE) or BIG/HUGE features.
:call add(tl, [2, '[[:alpha:][=a=]]\+', '879 aiaãâaiuvna ', 'aiaãâaiuvna'])
:call add(tl, [2, '[[=a=]]\+', 'ddaãâbcd', 'aãâ'])^I^I^I^I^I^I^I^I" equivalence

classes
:endif


:call add(tl, [2, '[^ม ]\+', 'มม oijasoifjos ifjoisj f osij j มมมมม abcd', 'oij

asoifjos'])
:endif


:call add(tl, [2, ' [^ ]\+', 'start มabcdม ', ' มabcdม'])
:call add(tl, [2, '[ม[:alpha:][=a=]]\+', '879 aiaãมâมaiuvna ', 'aiaãมâมaiuvna']

):endif


::" this is not a normal "i" but 0xec
:call add(tl, [2, '\p\+', 'ìa', 'ìa'])
:call add(tl, [2, '\p*', 'aあ', 'aあ'])
::"""" Test recognition of some character classes
:call add(tl, [2, '\i\+', '&*¨xx ', 'xx'])
:call add(tl, [2, '\f\+', '&*<9f>fname ', 'fname'])
::"""" Test composing character matching
:call add(tl, [2, '.ม', 'xมม่x yมy', 'yม'])
:call add(tl, [2, '.มม่', 'xมม่x yมy', 'xมม่'])
:call add(tl, [2, "\u05b9", " x\u05b9 ", "x\u05b9"])
:call add(tl, [2, ".\u05b9", " x\u05b9 ", "x\u05b9"])
:call add(tl, [2, "\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, ".\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, "\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, ".\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, "\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])
:call add(tl, [2, ".\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])
:call add(tl, [2, "\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])
:call add(tl, [2, ".\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])
:call add(tl, [1, "\u05b9\u05bb", " y\u05b9 x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, ".\u05b9\u05bb", " y\u05bb x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, "a", "ca\u0300t"])
:call add(tl, [2, "ca", "ca\u0300t"])
:call add(tl, [2, "a\u0300", "ca\u0300t", "a\u0300"])
:call add(tl, [2, 'a\%C', "ca\u0300t", "a\u0300"])
:call add(tl, [2, 'ca\%C', "ca\u0300t", "ca\u0300"])
:call add(tl, [2, 'ca\%Ct', "ca\u0300t", "ca\u0300t"])
:::"""" Test \Z
:call add(tl, [2, 'ú\Z', 'x'])
:call add(tl, [2, 'יהוה\Z', 'יהוה', 'יהוה'])
:call add(tl, [2, 'ייְהווָה\Z', 'יהוה', 'יהוה'])
:call add(tl, [2, 'יהוה\Z', 'ייְהווָה', 'ייְהווָה'])
:call add(tl, [2, 'ייְהווָה\Z', 'ייְהווָה', 'ייְהווָה'])
:call add(tl, [2, 'ייְ\Z', 'ווְייַ', 'ייַ'])
:call add(tl, [2, "ק\u200d\u05b9x\\Z", "xק\u200d\u05b9xy", "ק\u200d\u05b9x"])
:call add(tl, [2, "ק\u200d\u05b9x\\Z", "xק\u200dxy", "ק\u200dx"])
:call add(tl, [2, "ק\u200dx\\Z", "xק\u200d\u05b9xy", "ק\u200d\u05b9x"])
:call add(tl, [2, "ק\u200dx\\Z", "xק\u200dxy", "ק\u200dx"])
:call add(tl, [2, "\u05b9\\Z", "xyz"])
:call add(tl, [2, "\\Z\u05b9", "xyz"])
:call add(tl, [2, "\u05b9\\Z", "xy\u05b9z", "y\u05b9"])
:call add(tl, [2, "\\Z\u05b9", "xy\u05b9z", "y\u05b9"])
:call add(tl, [1, "\u05b9\\+\\Z", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])
:call add(tl, [1, "\\Z\u05b9\\+", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])
::"""" Combining different tests and features
:call add(tl, [2, '[^[=a=]]\+', 'ddaãâbcd', 'dd'])
::"""" Run the tests
::"
:for t in tl

:  :  let re = t[0]

:  :  let pat = t[1]

:  :  let text = t[2]

:  :  let matchidx = 3

:  :  for engine in [0, 1, 2]

:    :    if engine == 2 && re == 0 || engine == 1 && re == 1

:      :      continue

:      :    endif

:    :    let &regexpengine = engine

:    :    try

:      :      let l = matchlist(text, pat)

:      :    catch

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", caused an exception: \"' . v:exception . '\"'

:      :    endtry

:    :" check the match itself

:    :    if len(l) == 0 && len(t) > matchidx

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", did not match, expected: \"' . t[matchidx] . '\"'

:      :    elseif len(l) > 0 && len(t) == matchidx

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te

xt . '\", match: \"' . l[0] . '\", expected no match'

:      :    elseif len(t) > matchidx && l[0] != t[matchidx]

:      :      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te
t . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"'

:      :    else

:      :      $put ='OK ' . engine . ' - ' . pat

:      :    endif

:    :    if len(l) > 0

:      :"   check all the nine submatches

:      :      for i in range(1, 9)

::        if len(t) <= matchidx + i

::          let e = ''

::        else

::          let e = t[matchidx + i]

::        endif

::        if l[i] != e

::          $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: 
"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"'

::        endif

::      endfor

:      :      unlet i

:      :    endif

:    :  endfor

:  :endfor
OK 2 - ק<200d>x\Z
OK 0 - ק<200d>x\Z
OK 1 - ק<200d>x\Z
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+

:unlet t tl e l
::" check that 'ambiwidth' does not change the meaning of \p
:set regexpengine=1 ambiwidth=single
OK 2 - ק<200d>x\Z
OK 0 - ק<200d>x\Z
OK 1 - ק<200d>x\Z
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+

:$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')

eng 1 ambi single: 0
:set regexpengine=1 ambiwidth=double
OK 0 - ק<200d>x\Z
OK 1 - ק<200d>x\Z
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+
eng 1 ambi single: 0

:$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')

eng 1 ambi double: 0
:set regexpengine=2 ambiwidth=single
OK 1 - ק<200d>x\Z
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+
eng 1 ambi single: 0
eng 1 ambi double: 0

:$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')

eng 2 ambi single: 0
:set regexpengine=2 ambiwidth=double
OK 2 - ק<200d>x\Z
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\Z
OK 1 - ֹ\Z
OK 2 - ֹ\Z
OK 0 - \Zֹ
OK 1 - \Zֹ
OK 2 - \Zֹ
OK 0 - ֹ\+\Z
OK 2 - ֹ\+\Z
OK 0 - \Zֹ\+
OK 2 - \Zֹ\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+
eng 1 ambi single: 0
eng 1 ambi double: 0
eng 2 ambi single: 0

:$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')

eng 2 ambi double: 0
::/\%#=1^Results/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New] 140L, 2022C written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test95 = test61; then \
#	  if diff test.out test95.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test95.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test95.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test98.failed test.ok test.out X* viminfo
cp test98.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test98.in
[?1h="test98.in" 43 lines, 908 charactersTest for 'scrollbind' causing an unexpected scroll of one of the windows.
STARTTEST
:so small.vim
:" We don't want the status line to cause problems:
:set laststatus=0
:let g:totalLines = &lines * 20
:let middle = g:totalLines / 2
:wincmd n
:wincmd o
:for i in range(1, g:totalLines)
:    call setline(i, 'LINE ' . i)
:endfor
:exe string(middle)
:normal zt
:normal M
:aboveleft vert new
:for i in range(1, g:totalLines)
:    call setline(i, 'line ' . i)
:endfor
:exe string(middle)
:normal zt
:normal M
:" Execute the following two command at once to reproduce the problem.:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for 'scrollbind' causing an unexpected scroll of one of the windows./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 35 lines, 791 characters written:set ff& cpo+=A
/ENDTEST















:setl scb | wincmd p
:setl scb
:wincmd w
:let topLineLeft = line('w0')
:wincmd p
:let topLineRight = line('w0')
:setl noscrollbind
:wincmd p
:setl noscrollbind
:q!
:%del _
:call setline(1, 'Difference between the top lines (left - right): ' . string(toopLineLeft - topLineRight))
:w! test.out
:brewind
ENDTEST

:so! Xdotest
:so small.vim
:" We don't want the status line to cause problems:
:set laststatus=0
:let g:totalLines = &lines * 20
:let middle = g:totalLines / 2
:wincmd n
~~~~~~~~~~
[No Name]                                                                       :wincmd o
~~~~~~~~~~~
~:for i in range(1, g:totalLines)

:  :    call setline(i, 'LINE ' . i)

:  :endfor
LINE 1
LINE 2
LINE 3
LINE 4
LINE 5
LINE 6
LINE 7
LINE 8
LINE 9
LINE 10
LINE 11
LINE 12
LINE 13
LINE 14
LINE 15
LINE 16
LINE 17
LINE 18
LINE 19
LINE 20
LINE 21
LINE 22
LINE 23:exe string(middle)
LINE 229
LINE 230
LINE 231
LINE 232
LINE 233
LINE 234
LINE 235
LINE 236
LINE 237
LINE 238
LINE 239
LINE 240
LINE 241
LINE 242
LINE 243
LINE 244
LINE 245
LINE 246
LINE 247
LINE 248
LINE 249
LINE 250
LINE 251:normal zt











LINE 252
LINE 253
LINE 254
LINE 255
LINE 256
LINE 257
LINE 258
LINE 259
LINE 260
LINE 261
LINE 262:normal M
:aboveleft vert new
        |||||||||||||||||||||||~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       LINE 240LINE 241LINE 242LINE 243LINE 244LINE 245LINE 246LINE 247LINE 248LINE 249LINE 250LINE 251LINE 252LINE 253LINE 254LINE 255LINE 256LINE 257LINE 258LINE 259LINE 260LINE 261LINE 262:for i in range(1, g:totalLines)

:  :    call setline(i, 'line ' . i)

:  :endfor
line 1|
line 2|
line 3                                  
line 4                                  
line 5                                  
line 6                                  
line 7                                  
line 8                                  
line 9                                  
line 10                                 
line 11                                 
line 12                                 
line 13                                 
line 14                                 
line 15                                 
line 16                                 
line 17                                 
line 18                                 
line 19                                 
line 20                                 
line 21                                 
line 22                                 
line 23                                 LINE 240LINE 241:exe string(middle)
2293023123223323423523623723823924024124224324424524624748495051:normal zt
line 240                                
line 241                                
line 242                                
line 243                                
line 244                                
line 245                                
line 246                                
line 247                                
line 248                                
line 249                                
line 250                                
line 251                                
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        line 252
line 253
line 254
line 255
line 256
line 257
line 258
line 259
line 260
line 261
line 262:normal M
:" Execute the following two command at once to reproduce the problem.
:setl scb | wincmd p
:setl scb
:wincmd w
:let topLineLeft = line('w0')
:wincmd p
:let topLineRight = line('w0')
:setl noscrollbind
:wincmd p
:setl noscrollbind
:q!
LINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINELINE:%del _
~~~~~~~~~~~~~~~~~~~~~~
--No lines in buffer--:call setline(1, 'Difference between the top lines (left - right): ' . string(t

opLineLeft - topLineRight))
Difference between the top lines (left - right): 0:w! test.out
"test.out" [New File] 1 line, 51 characters written:brewind
"test98.in" 43 lines, 908 characters:normal M:" Execute the following two command at once to reproduce the problem.
:setl scb | wincmd p
:setl scb
:wincmd w
:let topLineLeft = line('w0')
:wincmd p
:let topLineRight = line('w0')
:setl noscrollbind
:wincmd p
:setl noscrollbind
:q!
:%del _
:call setline(1, 'Difference between the top lines (left - right): ' . string(toopLineLeft - topLineRight))
:w! test.out
:brewind
ENDTESTSTARTTEST
:qa!
ENDTEST/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 1 line, 5 characters written:set ff& cpo+=A



/ENDTEST
:so! Xdotest
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test98 = test61; then \
#	  if diff test.out test98.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test98.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test98.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test99.failed test.ok test.out X* viminfo
cp test99.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test99.in
[?1h="test99.in" 69 lines, 1400 charactersTests for regexp with multi-byte encoding and various magic settings.
Test matchstr() with a count and multi-byte chars.
See test44 for exactly the same test with re=1.

STARTTEST
:so mbyte.vim
:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
:set re=2
/^1
/a*b\{2}c\+/e
x/\Md\*e\{2}f\+/e
x:set nomagic
/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$
x:set magic
/\v(a)(b)\2\1\1/e
x/\V[ab]\(\[xy]\)\1
x:" Now search for multi-byte without composing char
/ม
x:" Now search for multi-byte with composing char
f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for regexp with multi-byte encoding and various magic settings./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 43 lines, 931 characters written:set ff& cpo+=A
/ENDTEST:" l Test what 7.3.192 fixed
/^l
:s/ \?/ /g
:?^1?,$w! test.out
:e! test.out
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
:so! Xdotest
:so mbyte.vim
:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
:" l Test what 7.3.192 fixed
/^l
:s/ \?/ /g
:?^1?,$w! test.out
:e! test.out
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
:" Test \%u, [\u] and friends
/\%u20ac

/[\u4f7f\u5929]\+

/\%U12345678

/[\U1234abcd\u1234\uabcd]

/\%d21879b

:" Test backwards search from a multi-byte char
/x

:"
:" l Test what 7.3.192 fixed
/^l

2 d dd dee deeff
3 g gg ghh ghhii
4 j jj jkk jkkll
5 m mm mnn mnnoo
#@/bin/sh -c "if test -f test.out -a test99 = test61; then \
#	  if diff test.out test99.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test99.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test99.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test103.failed test.ok test.out X* viminfo
cp test103.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test103.in
[?1h="test103.in" 37 lines, 823 charactersTest for visual mode not being reset causing E315 error.
STARTTEST
:so small.vim
:enew
:let g:msg="Everything's fine."
:function! TriggerTheProblem()
:" At this point there is no visual selection because :call reset it.
:" Let's restore the selection:
:normal gv
:'<,'>del _
:try
:exe "normal \<Esc>"
:catch /^Vim\%((\a\+)\)\=:E315/
:echom 'Snap! E315 error!'
:let g:msg='Snap! E315 error!'
:endtry
:endfunction
:enew
:setl buftype=nofile
:call append(line('$'), 'Delete this line.')
:"
:"
:" NOTE: this has to be done by a call to a function because executing :del the:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for visual mode not being reset causing E315 error./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 29 lines, 723 characters written:set ff& cpo+=A
/ENDTEST









:"ex-way will require the colon operator which resets the visual mode thuus
:"preventing the problem:
:"
GV:call TriggerTheProblem()
:%del _
:call append(line('$'), g:msg)
:w! test.out
:brewind
ENDTEST

:so! Xdotest
:so small.vim
:enew
~~~~~~~~~~~~
~~~~~~~~~
~:let g:msg="Everything's fine."
:function! TriggerTheProblem()

:  :^I" At this point there is no visual selection because :call reset it.

:  :^I" Let's restore the selection:

:  :^Inormal gv

:  :^I'<,'>del _

:  :^Itry

:    :^I^Iexe "normal \<Esc>"

:    :^Icatch /^Vim\%((\a\+)\)\=:E315/

:    :^I^Iechom 'Snap! E315 error!'

:    :^I^Ilet g:msg='Snap! E315 error!'

:    :^Iendtry

:  :endfunction
~
~
~
~
~
~
~
~
~
~:enew
:setl buftype=nofile
:call append(line('$'), 'Delete this line.')
Delete this line.:"
:"
:" NOTE: this has to be done by a call to a function because executing :del the
:"       ex-way will require the colon operator which resets the visual mode th

us:"       preventing the problem:
:"

Delete this line. 
:'<,'>call TriggerTheProblem()
~:%del _
--No lines in buffer--:call append(line('$'), g:msg)
Everything's fine.:w! test.out
"test.out" [New File] 2 lines, 20 characters written:brewind
"test103.in" 37 lines, 823 characters:endtry
:endfunction:enew
:setl buftype=nofile
:call append(line('$'), 'Delete this line.')
:"
:"
:" NOTE: this has to be done by a call to a function because executing :del the
:"ex-way will require the colon operator which resets the visual mode thuus
:"preventing the problem:
:"
GV:call TriggerTheProblem()
:%del _
:call append(line('$'), g:msg)
:w! test.out
:brewind
ENDTESTSTARTTEST
:qa!
ENDTEST/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 1 line, 5 characters written:set ff& cpo+=A



/ENDTEST
:so! Xdotest
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test103 = test61; then \
#	  if diff test.out test103.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test103.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test103.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test104.failed test.ok test.out X* viminfo
cp test104.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test104.in
[?1h="test104.in" 30 lines, 698 charactersTests for :let.  vim: set ft=vim ts=8 :

STARTTEST
:so small.vim
:set runtimepath+=./sautest
:" Test to not autoload when assigning.  It causes internal error.
:try
:  let Test104#numvar = function('tr')
:  $put ='OK: ' . string(Test104#numvar)
:catch
:  $put ='FAIL: ' . v:exception
:endtry
:let a = 1
:let b = 2
:for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0  == 1 ? "a" : "b"}']
:  try
:    redir => messages
:    execute 'let' letargs
:    redir END
:    $put ='OK:'
:    $put =split(substitute(messages, '\n', '\0  ', 'g'), '\n')
:  catch:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :let.  vim: set ft=vim ts=8 :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 24 lines, 618 characters written:set ff& cpo+=A
/ENDTEST





:    $put ='FAIL: ' . v:exception
:    redir END
:  endtry
:endfor
:/^Results/,$wq! test.out
ENDTEST

:so! Xdotest
:so small.vim
:set runtimepath+=./sautest
:" Test to not autoload when assigning.  It causes internal error.
:try

:  :  let Test104#numvar = function('tr')

:  :  $put ='OK: ' . string(Test104#numvar)

:  :catch

:  :  $put ='FAIL: ' . v:exception

:  :endtry
:catch
:  $put ='FAIL: ' . v:exception
:endtry
:let a = 1
:let b = 2
:for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0  == 1 ? "a" : "b"}']
:  try:    redir => messages
:    execute 'let' letargsEND$put ='OK:'$put =split(substitute(messages, '\n', '\0  ', 'g'), '\n')
:  catch'FAIL: ' . v:exception  redir END
:  endtryendfor/^Results/,$wq! test.out
ENDTESTResults of test104:
OK: function('tr')
:let a = 1
:let b = 2
:for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0

== 1 ? "a" : "b"}']
:  :  try

:    :    redir => messages

:    :    execute 'let' letargs

a#1

b#2

:    :    redir END

:    :    $put ='OK:'

:    :    $put =split(substitute(messages, '\n', '\0  ', 'g'), '\n')

:    :  catch

:    :    $put ='FAIL: ' . v:exception

:    :    redir END

:    :  endtry

:  :endfor

b#2

b#2

a#1

a#1

b#2

Press ENTER or type command to continue:/^Results/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 13 lines, 244 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test104 = test61; then \
#	  if diff test.out test104.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test104.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test104.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test107.failed test.ok test.out X* viminfo
cp test107.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test107.in
[?1h="test107.in" 38 lines, 717 charactersTests for adjusting window and contents     vim: set ft=vim :

STARTTEST
:so small.vim
:new
:call setline(1, range(1,256))
:let r=[]
:func! GetScreenStr(row)
:   let str = ""
:   for c in range(1,3)
:let str .= nr2char(screenchar(a:row, c))
:   endfor
:   return str
:endfunc
:
:exe ":norm! \<C-W>t\<C-W>=1Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p
:call add(r, [line("w0"), s3])
:
:exe ":norm! \<C-W>t\<C-W>=50Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for adjusting window and contents     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 32 lines, 628 characters written:set ff& cpo+=A
/ENDTEST












:call add(r, [line("w0"), s3])
:
:exe ":norm! \<C-W>t\<C-W>=59Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
::wincmd p
:call add(r, [line("w0"), s3])
:
:bwipeout!
:$put=r
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
ENDTEST

:so! Xdotest
:so small.vim
:new
~~~~
~~~~~
~
[No Name]                                                                       :wincmd pcall add(r, [line("w0"), s3])bwipeout!
:$put=rcall garbagecollect(1)
:"/^start:/,$wq! test.out
ENDTESTtest107.in                                                                      :call setline(1, range(1,256))
1
2
3
4
5
6
7
8
9
10
11[+]:let r=[]
:func! GetScreenStr(row)

:  :   let str = ""

:  :   for c in range(1,3)

:    :       let str .= nr2char(screenchar(a:row, c))

:    :   endfor

:  :   return str

:  :endfunc
1
2
3
4
5
6::exe ":norm! \<C-W>t\<C-W>=1Gzt\<C-W>w\<C-W>+"
[No Name] [+]                                                                   :let s3=GetScreenStr(1)test107.in                                                                      :let s3=GetScreenStr(1)
:wincmd p
[No Name] [+]                                                                   test107.in                                                                      :call add(r, [line("w0"), s3])
::exe ":norm! \<C-W>t\<C-W>=50Gzt\<C-W>w\<C-W>+"
50
51
52
53
54
55
56
57
58
59
[No Name] [+]                                                                   :let s3=GetScreenStr(1)
::wincmd p
:call add(r, [line("w0"), s3])
:
:bwipeout!
:$put=r
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
ENDTEST

test107.in                                                                      

:let s3=GetScreenStr(1)
:wincmd p
[No Name] [+]                                                                   test107.in                                                                      :call add(r, [line("w0"), s3])
::exe ":norm! \<C-W>t\<C-W>=59Gzt\<C-W>w\<C-W>+"
59
60
61
62
63
64
65
66
67
68
[No Name] [+]                                                                   :let s3=GetScreenStr(1)
::wincmd p
:call add(r, [line("w0"), s3])
:
:bwipeout!
:$put=r
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
ENDTEST

test107.in                                                                      

:let s3=GetScreenStr(1)
::wincmd p
[No Name] [+]                                                                   test107.in                                                                      :call add(r, [line("w0"), s3])
::bwipeout!
::exe ":norm! \<C-W>t\<C-W>=1Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p
:call add(r, [line("w0"), s3])
::exe ":norm! \<C-W>t\<C-W>=50Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p
:call add(r, [line("w0"), s3])
:exe ":norm! \<C-W>t\<C-W>=59Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
::wincmd pcall add(r, [line("w0"), s3])bwipeout!
:$put=rcall garbagecollect(1)
:":/^start:/,$wq! test.out
ENDTEST:$put=r
3 more lines



start:
[1, '1  ']
[50, '50 ']
[59, '59 ']3 more lines:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 4 lines, 42 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test107 = test61; then \
#	  if diff test.out test107.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test107.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test107.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test108.failed test.ok test.out X* viminfo
cp test108.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test108.in
[?1h="test108.in" 88 lines, 1329 charactersTests for backtrace debug commands.     vim: set ft=vim :

STARTTEST
:so small.vim
:lang mess C
:function! Foo()
:   let var1 = 1
:   let var2 = Bar(var1) + 9
:   return var2
:endfunction
:
:function! Bar(var)
:    let var1 = 2 + a:var
:    let var2 = Bazz(var1) + 4
:    return var2
:endfunction
:
:function! Bazz(var)
:    let var1 = 3 + a:var
:    let var3 = "another var"
:    return var1
:endfunction
:new:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for backtrace debug commands.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 83 lines, 1251 characters written:set ff& cpo+=A
/ENDTESTup
b
echo "fil is not frame or finish, it is file"
fil
echo "\n- relative backtrace movement\n"
fr -1
frame
fra +1
fram
echo "\n- go beyond limits does not crash\n"
fr 100
fra
frame -40
fram
echo "\n- final result 19:"
cont
:0debuggreedy
:redir END
:$put =out
:w! test.out
:qa!
ENDTEST


:so! Xdotest
:so small.vim
:lang mess C
:function! Foo()

:  :   let var1 = 1

:  :   let var2 = Bar(var1) + 9

:  :   return var2

:  :endfunction
up
b
echo "fil is not frame or finish, it is file"
fil
::function! Bar(var)

:  :    let var1 = 2 + a:var

:  :    let var2 = Bazz(var1) + 4

:  :    return var2

:  :endfunction
up
b
echo "fil is not frame or finish, it is file"
fil
::function! Bazz(var)

:  :    let var1 = 3 + a:var

:  :    let var3 = "another var"

:  :    return var1

:  :endfunction
up
b
echo "fil is not frame or finish, it is file"
fil
:new
~~~~~~~~~~
[No Name]                                                                       echo "\n- final result 19:"
cont:0debuggreedy
:redir END$put =out
:w! test.out
:qa!ENDTESTtest108.in                                                                      :debuggreedy
:redir => out
:debug echo Foo()
Entering Debug mode.  Type "cont" to continue.

cmd: echo Foo()

>step

function Foo

line 1: let var1 = 1

>step

function Foo

line 2: let var2 = Bar(var1) + 9

>step

function Foo[2]..Bar

line 1: let var1 = 2 + a:var

>step

function Foo[2]..Bar

line 2: let var2 = Bazz(var1) + 4

>step

function Foo[2]..Bar[2]..Bazz

line 1: let var1 = 3 + a:var

>step

function Foo[2]..Bar[2]..Bazz

line 2: let var3 = "another var"

>echo "- show backtrace:\n"

- show backtrace:

>backtrace

  2 function Foo[2]

  1 Bar[2]

->0 Bazz

line 2: let var3 = "another var"

>echo "\nshow variables on different levels:\n"


show variables on different levels:

>echo var1

6
>up

>back

  2 function Foo[2]

->1 Bar[2]

  0 Bazz

line 2: let var3 = "another var"

>echo var1

3
>u

>bt

->2 function Foo[2]

  1 Bar[2]

  0 Bazz

line 2: let var3 = "another var"

>echo var1

1
>echo "\n- undefined vars:\n"


- undefined vars:

>step

function Foo[2]..Bar[2]..Bazz

line 3: return var1

>frame 2

>echo "undefined var3 on former level:"

undefined var3 on former level:

>echo var3

Error detected while processing function Foo[2]..Bar[2]..Bazz:

line    3:

E121: Undefined variable: var3

E15: Invalid expression: var3

>fr 0

>echo "here var3 is defined with \"another var\":"

here var3 is defined with "another var":

>echo var3

another var

>step

function Foo[2]..Bar[2]..Bazz

line 3: End of function

>step

function Foo[2]..Bar

line 3: return var2

>step

function Foo[2]..Bar

line 3: End of function

>up

>echo "\nundefined var2 on former level"


undefined var2 on former level

>echo var2

Error detected while processing function Foo[2]..Bar:

line    3:

E121: Undefined variable: var2

E15: Invalid expression: var2

>down

>echo "here var2 is defined with 10:"

here var2 is defined with 10:

>echo var2

10

>echo "\n- backtrace movements:\n"


- backtrace movements:

>b

  1 function Foo[2]

->0 Bar

line 3: End of function

>echo "\nnext command cannot go down, we are on bottom\n"


next command cannot go down, we are on bottom

>down

frame is zero

>up

>echo "\nnext command cannot go up, we are on top\n"


next command cannot go up, we are on top

>up

frame at highest level: 1

>b

->1 function Foo[2]

  0 Bar

line 3: End of function

>echo "fil is not frame or finish, it is file"

fil is not frame or finish, it is file

>fil

"[No Name]" --No lines in buffer--

>echo "\n- relative backtrace movement\n"


- relative backtrace movement

>fr -1

>frame

  1 function Foo[2]

->0 Bar

line 3: End of function

>fra +1

>fram

->1 function Foo[2]

  0 Bar

line 3: End of function

>echo "\n- go beyond limits does not crash\n"


- go beyond limits does not crash

>fr 100

frame at highest level: 1

>fra

->1 function Foo[2]

  0 Bar

line 3: End of function

>frame -40

frame is zero

>fram

  1 function Foo[2]

->0 Bar

line 3: End of function

>echo "\n- final result 19:"


- final result 19:

>cont

19

Press ENTER or type command to continue:0debuggreedy
~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       fram
echo "\n- final result 19:"
cont
:0debuggreedy
:redir END
:$put =out
:w! test.out
:qa!
ENDTEST

test108.in                                                                      :redir END
:$put =out
83 more lines->1 function Foo[2]
  0 Bar
line 3: End of function
frame is zero
  1 function Foo[2]
->0 Bar
line 3: End of function- final result 19:
19[+]:w! test.out
"test.out" [New File] 84 lines, 1390 characters writtentest.out     :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test108 = test61; then \
#	  if diff test.out test108.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test108.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test108.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_autocmd_option.failed test.ok test.out X* viminfo
cp test_autocmd_option.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autocmd_option.in
[?1h="test_autocmd_option.in" 77 lines, 2954 charactersTest for option autocommand

STARTTEST
:so small.vim
:if !has("eval") || !has("autocmd") || !exists("+autochdir") | e! test.ok | w! ttest.out | qa! | endif
:fu! AutoCommand(match)
:let c=g:testcase
:let item=remove(g:options, 0)
:let c.=printf("Expected: Name: <%s>, Oldval: <%s>, NewVal: <%s>, Scope:  <%s>\n", item[0], item[1], item[2], item[3])
:let c.=printf("Autocmd Option: <%s>,", a:match)
:let c.=printf(" OldVal: <%s>,", v:option_old)
:let c.=printf(" NewVal: <%s>,", v:option_new)
:let c.=printf(" Scope: <%s>\n", v:option_type)
:call setreg('r', printf("%s\n%s", getreg('r'), c))
:endfu
:au OptionSet * :call AutoCommand(expand("<amatch>"))
:let g:testcase="1: Setting number option\n"
:let g:options=[['number', 0, 1, 'global']]
:set nu
:let g:testcase="2: Setting local number option\n"
:let g:options=[['number', 1, 0, 'local']]:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for option autocommand/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 72 lines, 2896 characters written:set ff& cpo+=A
/ENDTEST:let g:testcase="13: Setting option backspace through setbufvar()\n"
:let g:options=[['backup', '', '1', 'local']]
: "try twice, first time, shouldn't trigger because option name is invalid, secoond time, it should trigger
:call setbufvar(1, '&l:bk', 1)
: "should trigger, use correct option name
:call setbufvar(1, '&backup', 1)
:let g:testcase="14: Setting number option using setwinvar\n"
:let g:options=[['number', 0, 1, 'local']]
:call setwinvar(0, '&number', 1)
:" Write register now, because next test shouldn't output anything.
:$put r
:let @r=''
:let g:testcase="\n15: Setting key option, shouldn't trigger\n"
:let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
:setlocal key=blah
:setlocal key=
:$put =g:testcase
:$put r
:/^dummy text/,$w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
:if !has("eval") || !has("autocmd") || !exists("+autochdir") | e! test.ok | w! 

test.out | qa! | endif
:let g:testcase="13: Setting option backspace through setbufvar()\n"
:fu! AutoCommand(match)

:  :^Ilet c=g:testcase

:  :       let item=remove(g:options, 0)

:  :       let c.=printf("Expected: Name: <%s>, Oldval: <%s>, NewVal: <%s>, Sco

pe: <%s>\n", item[0], item[1], item[2], item[3])

:  :       let c.=printf("Autocmd Option: <%s>,", a:match)

:  :       let c.=printf(" OldVal: <%s>,", v:option_old)

:  :       let c.=printf(" NewVal: <%s>,", v:option_new)

:  :       let c.=printf(" Scope: <%s>\n", v:option_type)

:  :       call setreg('r', printf("%s\n%s", getreg('r'), c))

:  :endfu
:let g:testcase="13: Setting option backspace through setbufvar()\n"
:let g:options=[['backup', '', '1', 'local']]
: "try twice, first time, shouldn't trigger because option name is invalid, secoond time, it should trigger
:call setbufvar(1, '&l:bk', 1)
: "should trigger, use correct option name
:call setbufvar(1, '&backup', 1)
:let g:testcase="14: Setting number option using setwinvar\n"
:let g:options=[['number', 0, 1, 'local']]
:call setwinvar(0, '&number', 1)
:au OptionSet * :call AutoCommand(expand("<amatch>"))
:let g:testcase="1: Setting number option\n"
:let g:options=[['number', 0, 1, 'global']]
:set nu
     56 :let g:testcase="13: Setting option backspace through setbufvar()\n"
     57 :let g:options=[['backup', '', '1', 'local']]
     58 : "try twice, first time, shouldn't trigger because option name is invallid, second time, it should trigger
     59 :call setbufvar(1, '&l:bk', 1)
     60 : "should trigger, use correct option name
     61 :call setbufvar(1, '&backup', 1)
     62 :let g:testcase="14: Setting number option using setwinvar\n"
     63 :let g:options=[['number', 0, 1, 'local']]
     64 :call setwinvar(0, '&number', 1)
     65 :" Write register now, because next test shouldn't output anything.
     66 :$put r
     67 :let @r=''
     68 :let g:testcase="\n15: Setting key option, shouldn't trigger\n"
     69 :let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
     70 :setlocal key=blah
     71 :setlocal key=
     72 :$put =g:testcase
     73 :$put r
     74 :/^dummy text/,$w! test.out
     75 :qa!
     76 ENDTEST
     77 dummy text:let g:testcase="2: Setting local number option\n"
:let g:options=[['number', 1, 0, 'local']]
:setlocal nonu
:let g:testcase="13: Setting option backspace through setbufvar()\n":let g:options=[['backup', '', '1', 'local']]: "try twice, first time, shouldn't trigger because option name is invalid, secoond time, it should trigger:call setbufvar(1, '&l:bk', 1): "should trigger, use correct option name:call setbufvar(1, '&backup', 1):let g:testcase="14: Setting number option using setwinvar\n":let g:options=[['number', 0, 1, 'local']]:call setwinvar(0, '&number', 1):" Write register now, because next test shouldn't output anything.:$put r:let @r='':let g:testcase="\n15: Setting key option, shouldn't trigger\n":let g:options=[['key', 'invalid', 'invalid1', 'invalid']]:setlocal key=blah:setlocal key=:$put =g:testcase:$put r:/^dummy text/,$w! test.out:qa!ENDTESTdummy text:let g:testcase="3: Setting global number option\n"
:let g:options=[['number', 1, 0, 'global']]
:setglobal nonu
:let g:testcase="4: Setting local autoindent option\n"
:let g:options=[['autoindent', 0, 1, 'local']]
:setlocal ai
:let g:testcase="5: Setting global autoindent option\n"
:let g:options=[['autoindent', 0, 1, 'global']]
:setglobal ai
:let g:testcase="6: Setting global autoindent option\n"
:let g:options=[['autoindent', 1, 0, 'global']]
:set ai!
: Should not print anything, use :noa
E492: Not an editor command: Should not print anything, use :noa:noa :set nonu
:let g:testcase="7: Setting several global list and number option\n"
:let g:options=[['list', 0, 1, 'global'], ['number', 0, 1, 'global']]
:set list nu
     56 :let g:testcase="13: Setting option backspace through setbufvar()\n"$
     57 :let g:options=[['backup', '', '1', 'local']]$
     58 : "try twice, first time, shouldn't trigger because option name is invallid, second time, it should trigger$
     59 :call setbufvar(1, '&l:bk', 1)$
     60 : "should trigger, use correct option name$
     61 :call setbufvar(1, '&backup', 1)$
     62 :let g:testcase="14: Setting number option using setwinvar\n"$
     63 :let g:options=[['number', 0, 1, 'local']]$
     64 :call setwinvar(0, '&number', 1)$
     65 :" Write register now, because next test shouldn't output anything.$
     66 :$put r$
     67 :let @r=''$
     68 :let g:testcase="\n15: Setting key option, shouldn't trigger\n"$
     69 :let g:options=[['key', 'invalid', 'invalid1', 'invalid']]$
     70 :setlocal key=blah$
     71 :setlocal key=$
     72 :$put =g:testcase$
     73 :$put r$
     74 :/^dummy text/,$w! test.out$
     75 :qa!$
     76 ENDTEST$
     77 dummy text$:noa set nolist nonu
:let g:testcase="13: Setting option backspace through setbufvar()\n":let g:options=[['backup', '', '1', 'local']]: "try twice, first time, shouldn't trigger because option name is invalid, secoond time, it should trigger:call setbufvar(1, '&l:bk', 1): "should trigger, use correct option name:call setbufvar(1, '&backup', 1):let g:testcase="14: Setting number option using setwinvar\n":let g:options=[['number', 0, 1, 'local']]:call setwinvar(0, '&number', 1):" Write register now, because next test shouldn't output anything.:$put r:let @r='':let g:testcase="\n15: Setting key option, shouldn't trigger\n":let g:options=[['key', 'invalid', 'invalid1', 'invalid']]:setlocal key=blah:setlocal key=:$put =g:testcase:$put r:/^dummy text/,$w! test.out:qa!ENDTESTdummy text:let g:testcase="8: Setting global acd\n"
:let g:options=[['autochdir', 0, 1, 'global']]
:setlocal acd
:let g:testcase="9: Setting global autoread\n"
:let g:options=[['autoread', 0, 1, 'global']]
:set ar
:let g:testcase="10: Setting local autoread\n"
:let g:options=[['autoread', 0, 1, 'local']]
:setlocal ar
:let g:testcase="11: Setting global autoread\n"
:let g:options=[['autoread', 1, 0, 'global']]
:setglobal invar
:let g:testcase="12: Setting option backspace through :let\n"
:let g:options=[['backspace', '', 'eol,indent,start', 'global']]
:let &bs="eol,indent,start"
:let g:testcase="13: Setting option backspace through setbufvar()\n"
:let g:options=[['backup', '', '1', 'local']]
: "try twice, first time, shouldn't trigger because option name is invalid, sec

ond time, it should trigger
:let g:testcase="13: Setting option backspace through setbufvar()\n"
:call setbufvar(1, '&l:bk', 1)
E355: Unknown option: l:bk: "should trigger, use correct option name
:call setbufvar(1, '&backup', 1)
:let g:testcase="14: Setting number option using setwinvar\n"
:let g:options=[['number', 0, 1, 'local']]
:call setwinvar(0, '&number', 1)
     56 :let g:testcase="13: Setting option backspace through setbufvar()\n"
     57 :let g:options=[['backup', '', '1', 'local']]
     58 : "try twice, first time, shouldn't trigger because option name is invallid, second time, it should trigger
     59 :call setbufvar(1, '&l:bk', 1)
     60 : "should trigger, use correct option name
     61 :call setbufvar(1, '&backup', 1)
     62 :let g:testcase="14: Setting number option using setwinvar\n"
     63 :let g:options=[['number', 0, 1, 'local']]
     64 :call setwinvar(0, '&number', 1)
     65 :" Write register now, because next test shouldn't output anything.
     66 :$put r
     67 :let @r=''
     68 :let g:testcase="\n15: Setting key option, shouldn't trigger\n"
     69 :let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
     70 :setlocal key=blah
     71 :setlocal key=
     72 :$put =g:testcase
     73 :$put r
     74 :/^dummy text/,$w! test.out
     75 :qa!
     76 ENDTEST
     77 dummy text:" Write register now, because next test shouldn't output anything.
:$put r
60 more lines117Autocmd Option: <autoread>, OldVal: <0>, NewVal: <1>, Scope: <global>11811910: Setting local autoread    120 Expected: Name: <autoread>, Oldval: <0>, NewVal: <1>, Scope: <local>121Autocmd Option: <autoread>, OldVal: <1>, NewVal: <1>, Scope: <local>12212311: Setting global autoread124Expected: Name: <autoread>, Oldval: <1>, NewVal: <0>, Scope: <global>125Autocmd Option: <autoread>, OldVal: <1>, NewVal: <0>, Scope: <global>12612712: Setting option backspace through :let128Expected: Name: <backspace>, Oldval: <>, NewVal: <eol,indent,start>, Scoope: <global>129Autocmd Option: <backspace>, OldVal: <>, NewVal: <eol,indent,start>, Scoope: <global>131313: Setting option backspace through setbufvar()13Expected: Name: <backup>, Oldval: <>, NewVal: <1>, Scope: <local>13Autocmd Option: <backup>, OldVal: <0>, NewVal: <1>, Scope: <local>131314: Setting number option using setwinvar13xpected: Name: <number>, Oldval: <0>, NewVal: <1>, Scope: <local>13Autocmd Option: <number>, OldVal: <0>, NewVal: <1>, Scope: <local>:let @r=''
:let g:testcase="\n15: Setting key option, shouldn't trigger\n"
:let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
:setlocal key=blah
:setlocal key=
:$put =g:testcase


    138 
    139 15: Setting key option, shouldn't trigger
:$put r

    140 
:/^dummy text/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 64 lines, 2700 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_autocmd_option = test61; then \
#	  if diff test.out test_autocmd_option.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_autocmd_option.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autocmd_option.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_autoformat_join.failed test.ok test.out X* viminfo
cp test_autoformat_join.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autoformat_join.in
[?1h="test_autoformat_join.in" 23 lines, 524 charactersTests for setting the '[,'] marks when joining lines.

STARTTEST
:so small.vim
:/^\t\t/
0gqj:
:let a=string(getpos("'[")).'/'.string(getpos("']"))
:/^This line/;'}-join
:let b=string(getpos("'[")).'/'.string(getpos("']"))
:$put ='First test: Start/End '.string(a)
:$put ='Second test: Start/End '.string(b)
:/^\t\t/,$wq! test.out
ENDTESTO sodales, ludite, vos qui
attamen consulite per voster honur. Tua pulchra facies me fay planszer milies

This line.
Should be joined with the next line
and with this line

Results::set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for setting the '[,'] marks when joining lines./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 9 lines, 265 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:/^\t\t/
attamen consulite per voster honur.
Tua pulchra facies me fay planszer milies::let a=string(getpos("'[")).'/'.string(getpos("']"))
:/^This line/;'}-join


This line.  Should be joined with the next line and with this line


~
~:let b=string(getpos("'[")).'/'.string(getpos("']"))
:$put ='First test: Start/End '.string(a)
First test: Start/End '[0, 16, 1, 0]/[0, 17, 1, 0]'
:$put ='Second test: Start/End '.string(b)
Second test: Start/End '[0, 19, 11, 0]/[0, 19, 67, 0]'
:/^\t\t/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 8 lines, 292 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_autoformat_join = test61; then \
#	  if diff test.out test_autoformat_join.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_autoformat_join.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_autoformat_join.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_breakindent.failed test.ok test.out X* viminfo
cp test_breakindent.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_breakindent.in
[?1h="test_breakindent.in" 122 lines, 3678 charactersTest for breakindent

STARTTEST
:so small.vim
:if !exists("+breakindent") | e! test.ok | w! test.out | qa! | endif
:10new|:vsp|:vert resize 20
:put =\"\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP\"
:set ts=4 sw=4 sts=4 breakindent
:fu! ScreenChar(line, width)
:let c=''
:for i in range(1,a:width)
:let c.=nr2char(screenchar(a:line, i))
:endfor
:let c.="\n"
:for i in range(1,a:width)
:let c.=nr2char(screenchar(a:line+1, i))
:endfor
:let c.="\n"
:for i in range(1,a:width)
:let c.=nr2char(screenchar(a:line+2, i))
:endfor
:return c
:endfu:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for breakindent/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 117 lines, 3627 characters written:set ff& cpo+=A
/ENDTEST:$put =line2
:"
:let g:test="Test 14: breakindent + visual blockwise delete #1"
:set all& breakindent viminfo+=nviminfo
:30vnew
:normal! 3a1234567890
:normal! a    abcde
:exec "normal! 0\<C-V>tex"
:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
:"
:let g:test="Test 15: breakindent + visual blockwise delete #2"
:%d
:normal! 4a1234567890
:exec "normal! >>\<C-V>3f0x"
:let line1=ScreenChar(line('.'),20)
:call DoRecordScreen()
:quit!
:"
:%w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
:if !exists("+breakindent") | e! test.ok | w! test.out | qa! | endif
:10new|:vsp|:vert resize 20
            ||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            ~~~~~~~~~[No Name]                                                  %dnormal! 4a1234567890
:exec "normal! >>\<C-V>3f0x"
:let line1=ScreenChar(line('.'),20)
:call DoRecordScreen()quit!"%w! test.out
:qaENDTEST
dummy text
test_breakindent.in                                                             :put =\"\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP\"
        abcdefghijkl
mnopqrstuvwxyzABCDEF
GHIJKLMNOP          [+] abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP[+]:set ts=4 sw=4 sts=4 breakindent
abcdefghijklmnop
qrstuvwxyzABCDEFGHIJ
KLMNOP    abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP:fu! ScreenChar(line, width)

:  :^Ilet c=''

:  :^Ifor i in range(1,a:width)

:    :^I^Ilet c.=nr2char(screenchar(a:line, i))

:    :^Iendfor

:  :       let c.="\n"

:  :^Ifor i in range(1,a:width)

:    :^I^Ilet c.=nr2char(screenchar(a:line+1, i))

:    :^Iendfor

:  :       let c.="\n"

:  :^Ifor i in range(1,a:width)

:    :^I^Ilet c.=nr2char(screenchar(a:line+2, i))

:    :^Iendfor

:  :^Ireturn c

:  :endfu
|
    abcdefghijklmnop|
qrstuvwxyzABCDEFGHIJ|
KLMNOP|||||||~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP~~~~~~~~[No Name] [+]                                              :%d
:normal! 4a1234567890
:exec "normal! >>\<C-V>3f0x":fu DoRecordScreen()

:  :^Iwincmd l

:  :^I$put =printf(\"\n%s\", g:test)

:  :^I$put =g:line1

:  :^Iwincmd p

:  :endfu
|
    abcdefghijklmnop|
qrstuvwxyzABCDEFGHIJ|
KLMNOP||
~                   abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP~~~:set briopt=min:0
    qrstuvwxyzABCDEF
    GHIJKLMNOP:let g:test="Test 1: Simple breakindent"
:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                    
Test 1: Simple break
indent              
    abcd            
    qrst            
    GHIJ            Test 1: Simple breakindent    abcd    qrst    GHIJ:let g:test="Test 2: Simple breakindent + sbr=>>"
:set sbr=>>
>>qrstuvwxyzABCD
    >>EFGHIJKLMNOP


>>indent:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                           Test 1: Simple breakindent                                     abcd                                                       qrst                                                       GHIJ                                                   ~                                                          ~                                                          ~                                                                                                                                                                                Test 2: Simple breakindent + sbr=>>    abcd>>qr>>EF3 more lines:let g:test ="Test 3: Simple breakindent + briopt:sbr"
:set briopt=sbr,min:0 sbr=++
++  qrstuvwxyzABCDEF
++  GHIJKLMNOP    


++:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                           Test 2: Simple breakindent + sbr=>>                            abcd                                                       >>qr                                                       >>EF                                                                                                                                                                                                                                                                                                                                                          Test 3: Simple breakindent + briopt:sbrabcd++  qrst++  GHIJ3 more lines:let g:test ="Test 4: Simple breakindent + min width: 18"
:set sbr= briopt=min:18
  qrstuvwxyzABCDEFGH
  IJKLMNOP    


indent  :let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                           Test 3: Simple breakindent + briopt:sbr                        abcd                                                   ++  qrst                                                   ++  GHIJ                                                                                                                                                                                                                                                                                                                                                          Test 4: Simple breakindent + min width: 18abcdqrstuvIJKLMN3 more lines:let g:test =" Test 5: Simple breakindent + shift by 2"
:set briopt=shift:2,min:0
    qrstuvwxyzABCD
      EFGHIJKLMNOP


  indent:let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                           Test 4: Simple breakindent + min width: 18                     abcd                                                     qrstuv                                                     IJKLMN                                                                                                                                                                                                                                                                                                                                                          Test 5: Simple breakindent + shift by 2abcdqrEF3 more lines:let g:test=" Test 6: Simple breakindent + shift by -1"
:set briopt=shift:-1,min:0
qrstuvwxyzABCDEFG
   HIJKLMNOP      


indent  :let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more lines                                                            Test 5: Simple breakindent + shift by 2                       abcd                                                         qr                                                         EF                                                                                                                                                                                                                                                                                                                                                          Test 6: Simple breakindent + shift by -1abcdqrstuHIJKL3 more lines:let g:test=" Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr"
:set briopt=shift:1,sbr,min:0 nu sbr=? nuw=4
  1 
  2     abcdefghijkl
?        mnopqrstuvw
?        xyzABCDEFGH
?IJKLMNOP
  3                 
  4 Test 1: Simple b
?    reakindent
  5     abcd
  6     qrst:let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
3 more lines                                                            Test 6: Simple breakindent + shift by -1                      abcd                                                      qrstu                                                      HIJKL                                                                                                                                                                                                                                                                                                                                                          Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr2     ab?m?x3 more lines:let g:test=" Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr"
:set briopt=shift:1,sbr,min:0 nu sbr=# list
$^Iabcdefghijklmn
#      opqrstuvwxyzA
#      BCDEFGHIJKLMN
#      OP$       $

#$$$:let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
3 more lines                                                            Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr   2     ab                                                 ?        m                                                 ?        x                                                                                                                                                                                                                                                                                                                                                        Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr2 ^Iabcd#      opq#      BCD3 more lines:let g:test=" Test 9: breakindent + shift by +1 + 'nu' + sbr=# list"
:set briopt-=sbr
       #opqrstuvwxyz
       #ABCDEFGHIJKL
       #MNOP$


     #reakindent$:let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
3 more lines                                                            Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr  2 ^Iabcd                                                 #      opq                                                 #      BCD                                                                                                                                                                                                                                                                                                                                                        Test 9: breakindent + shift by +1 + 'nu' + sbr=# list2 ^Iabcd#op#AB3 more lines:let g:test=" Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n"
:set cpo+=n sbr=~ nu nuw=4 nolist briopt=sbr,min:0
     abcdefghijkl
~       mnopqrstuvwx
~       yzABCDEFGHIJ
~       KLMNOP 

~   reakindent     :let line1=ScreenChar(line('.'),10)
:call DoRecordScreen()
3 more lines                                                            Test 9: breakindent + shift by +1 + 'nu' + sbr=# list       2 ^Iabcd                                                        #op                                                        #AB                                                                                                                                                                                                                                                                                                                                                        Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n2     ab~mn~yz3 more lines:wincmd p
[No Name] [+]        [No Name] [+]                                              :let g:test="\n Test 11: strdisplaywidth when breakindent is on"
:set cpo-=n sbr=>> nu nuw=4 nolist briopt= ts=4
    >>
    >>
    >>


    >>reakindent 44  Test 9: breakindent + shift by +1 + 'nu' + sbr=# list 45   2 ^Iabcd 46        #op 47        #AB 48  49  Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+    >>=n 50   2     ab 51 ~       mn 52 ~       yz:let text=getline(2) "skip leading tab when calculating text width
:let width = strlen(text[1:])+indent(2)*4+strlen(&sbr)*3 " text wraps 3 times
:$put =g:test
 46        #op                                              47        #AB                                              48                                                         49  Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+    >>=n                                                    50   2     ab                                              51 ~       mn                                              52 ~       yz                                                                                                                                                                    53  54  Test 11: strdisplaywidth when breakindent is on:$put =printf(\"strdisplaywidth: %d == calculated: %d\", strdisplaywidth(text),

width)
  1 | 47 #AB89Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+  >>=n50  2     ab1~       mn2yz34Test 11: strdisplaywidth when breakindent is on5strdisplaywidth: 46 == calculated: 64:let g:str="\t\t\t\t\t{"
:let g:test=" Test 12: breakindent + long indent"
:wincmd p
[No Name] [+]        [No Name] [+]                                              :set all& breakindent linebreak briopt=min:10 nu numberwidth=3 ts=4
 1 |
 2 |abcdefghijklm|nopqrstuvwxyz|ABCDEFGHIJKLM|NOP|
 3 |
 4 Test 1: Simple   |
   breakindent      |
 5     abcd|
[No Name]             47 #AB 48  49  Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n 50   2     ab 51 ~mn 52 ~yz 53  54  Test 11: strdisplaywidth when breakindent is on 55 strdisplaywidth: 46 == calculated: 64[No Name]                                                  :%d
:normal! 4a1234567890
:exec "normal! >>\<C-V>3f0x"
:let line1=ScreenChar(line('.'),20)
:call DoRecordScreen()
:quit!
:"
:%w! test.out
:qa!
ENDTEST
dummy text
test_breakindent.in                                                             :$put =g:str
54Test 11:
    strdisplaywidth
    when            
    breakindent is  
    on              
55 strdisplaywidth:
   46 ==
   calculated: 64
56            
             {[+][+]56                  
             {      
                    
                    
                    
                    
                    
                    
                    
                    ~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   :let line1=ScreenChar(1,10)
:wincmd p
[No Name] [+]        [No Name] [+]                                              :call DoRecordScreen()
3 more lines57                  
58  Test 12:        
    breakindent +   
    long indent     
59 56               
60                  
61 ~                

[No Name] [+]         52 ~       yz                                              53                                                         54  Test 11: strdisplaywidth when breakindent is on        55 strdisplaywidth: 46 == calculated: 64                                                                                                                                                                                                                                                                                                                                                                                     56 { 57  58  Test 12: breakindent + long indent 59 56 60  61 ~[No Name] [+]                                              3 more lines:"
:" Test, that the string "    a\tb\tc\td\te" is correctly
:" displayed in a 20 column wide window (see bug report
:" https://groups.google.com/d/msg/vim_dev/ZOdg2mc9c9Y/TT8EhFjEy0IJ
:only
   {57 8Test 12: breakindent + long indent956       60           61 ~         ~~~~~~~~~~~~~~~~:vert 20new
 1||||||||||||||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            56 {57 58  Test 12: breakindent + long indent59 5660 61 ~~~~~~~~~~~~~~~~~[No Name] [+]                                              :set all& nocp breakindent briopt=min:10
||||||||||||||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            56 {57 58  Test 12: breakindent + long indent59 5660 61 ~~~~~~~~~~~~~~~~~[No Name] [+]                                              :call setline(1, ["    a\tb\tc\td\te", "    z   y       x       w       v"])
a   bc
        d   e       
    z   y       x   
        w       v   [+]:/^\s*a
search hit BOTTOM, continuing at TOPa   :let line1 = @0
:?^\s*z
search hit TOP, continuing at BOTTOMz   :let line2 = @0
:quit!
56              {57 58  Test 12: breakindent + long indent59 56    60           61 ~         ~:$put ='Test 13: breakindent with wrapping Tab'
62 Test 13: breakindent with wrapping Tab:$put =line1
63 d:$put =line2
64 w:"
:let g:test="Test 14: breakindent + visual blockwise delete #1"
:set all& breakindent viminfo+=nviminfo
{

 Test 12: breakindent + long indent
56

~
Test 13: breakindent with wrapping Tab
d
w
~
~
~
~
~
~
~
~
~
~
~
~
~
~:30vnew
||||||||||||||||||||||~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
~                             
[No Name]                       { Test 12: breakindent + long indent56~Test 13: breakindent with wrapping Tabdw~~~~~~~~~~~~~[No Name]                                        :normal! 3a1234567890
123456789012345678901234567890[+]:normal! a    abcde
    abcde                     :exec "normal! 0\<C-V>tex"
e                             
~                             :let line1=ScreenChar(line('.'),8)
:call DoRecordScreen()
3 more linesTest 14: breakindent + visual blockwise delete #1e~~[+]:"
:let g:test="Test 15: breakindent + visual blockwise delete #2"
:%d
 --No lines in buffer--:normal! 4a1234567890
123456789012345678901234567890
1234567890                    :exec "normal! >>\<C-V>3f0x"
        1234567890            
~                             :let line1=ScreenChar(line('.'),20)
:call DoRecordScreen()
3 more linesTest 15: breakindent + visual blockwise delete #2 1234567890~~:quit!
strdisplaywidth: 46 == calculated: 64                               { Test 12: breakindent + long indent
56                  ~         Test 13: breakindent with wrapping Tab
dwTest 14: breakindent + visual blockwise delete #1
e       ~       ~       Test 15: breakindent + visual blockwise delete #2
        1234567890  ~                   ~                   ~:"
:%w! test.out
"test.out" [New] 74L, 1210C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_breakindent = test61; then \
#	  if diff test.out test_breakindent.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_breakindent.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_breakindent.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_changelist.failed test.ok test.out X* viminfo
cp test_changelist.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_changelist.in
[?1h="test_changelist.in" 22 lines, 288 charactersTest changelist position after splitting window
Set 'undolevels' to make changelist for sourced file

STARTTEST
:so small.vim
Gkylp:set ul=100
Gylp:set ul=100
gg
:vsplit
:try
:  normal g;
:  normal ggVGcpass^[
:catch
:  normal ggVGcfail^[
:finally
:  %w! test.out
:endtry
:qa!
ENDTEST

1
2
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test changelist position after splitting window/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 14 lines, 163 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim


11:set ul=100

22:set ul=100

:vsplit
|
 window                                 |
Set 'undolevels' to make changelist for |
sourced file|
             |
STARTTEST       |
:so small.vim  |
Gkylp:set ul=100|
Gylp:set ul=100|
gg  |
:vsplit     |
:try                 |
:  normal g;|pass|
:catch  |
:  normal ggVGcfail^[|
:finally|
:  %w! test.out|
:endtry|
:qa!|
ENDTEST|
  |
test_changelist.in [+]                   Test changelist position after splitting windowSet 'undolevels' to make changelist forsourced fileSTARTTEST:so small.vimGkylp:set ul=100Gylp:set ul=100gg:vsplit:try:  normal g;:  normal ggVGcpass^[:catch:  normal ggVGcfail^[:finally:  %w! test.out:endtry:qa!ENDTESTtest_changelist.in [+]                 :try

:  :  normal g;

:  :  normal ggVGcpass
21 fewer lines
:  

:  :catch

:  :  normal ggVGcfail

:  

:  :finally

:  :  %w! test.out

"test.out" [New File] 1 line, 5 characters written

:  :endtry
pass||||||||||~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                          pass~~~~~~~~~~~~~~~~~~~~~   :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_changelist = test61; then \
#	  if diff test.out test_changelist.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_changelist.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_changelist.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_close_count.failed test.ok test.out X* viminfo
cp test_close_count.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_close_count.in
[?1h="test_close_count.in" 153 lines, 2665 charactersTests for :[count]close! and :[count]hide     vim: set ft=vim :

STARTTEST
:so small.vim
:let tests = []
:for i in range(5)
:new
:endfor
:4wincmd w
:close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:$close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
:2close!:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for :[count]close! and :[count]hide     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 41 lines, 749 characters written:set ff& cpo+=A
/ENDTEST:call add(tests, buffers)
:2wincmd w
:+1close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(0, map(copy(tests), 'join(v:val, " ")'))
:w
:only!
:b1
ENDTEST

STARTTEST
:let tests = []
:for i in range(5)
:new
:endfor
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:4wincmd w
:.hide
:so! Xdotest
:so small.vim
:let tests = []
:for i in range(5)

:  :new

:  :endfor
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ENDTEST

test_close_count.in                                                             :4wincmd w
[No Name]                                                                       [No Name]                                                                       :close!
~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :b1
ENDTEST

test_close_count.in                                                             :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       test_close_count.in                                                             :call add(tests, buffers)
:1close!
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :only!
:b1
ENDTEST

STARTTEST
test_close_count.in                                                             


:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:$close!
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :2close!
~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :new
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :new
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :2wincmd w
[No Name]                                                                       [No Name]                                                                       :-1close!
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:2wincmd w
[No Name]                                                                       [No Name]                                                                       :+1close!
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
"test.out" [New File]test.out :call append(0, map(copy(tests), 'join(v:val, " ")'))
6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5[+]:w
"test.out" [New File] 7 lines, 39 characters written   :only!
6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5~~~~~~~
~~:b1
"test_close_count.in" 153 lines, 2665 characters:2wincmd w
:+1close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(0, map(copy(tests), 'join(v:val, " ")'))
:w
:only!
:b1
ENDTESTSTARTTEST
:let tests = []
:for i in range(5)
:new
:endfor
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:4wincmd w
:.hide
:let buffers = []/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 44 lines, 815 characters written:set ff& cpo+=A
/ENDTEST:2wincmd w
:+hide
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
Go^[
:w
:only!
:b1
ENDTEST

STARTTEST
:let tests = []
:set hidden
:for i in range(5)
:new
:endfor
:1wincmd w
:$ hide
:let buffers = []
:windo call add(buffers, bufnr('%'))
:so! Xdotest
:let tests = []
:for i in range(5)

:  :new

:  :endfor
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ENDTEST

test_close_count.in                                                             :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       test_close_count.in                                                             :call add(tests, buffers)
:4wincmd w
[No Name]                                                                       test_close_count.in                                                             :.hide
~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :b1
ENDTEST

test_close_count.in                                                             :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       test_close_count.in                                                             :call add(tests, buffers)
:1hide
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :only!
:b1
ENDTEST

STARTTEST
test_close_count.in                                                             


:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:$hide
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :2hide
~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :new
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :new
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :3wincmd w
[No Name]                                                                       [No Name]                                                                       :-hide
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:2wincmd w
[No Name]                                                                       [No Name]                                                                       :+hide
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
"test.out" 7 lines, 39 characters6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5test.out :call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
13 12 11 10 9 1
13 12 11 9 1
12 11 9 1
12 11 9[+]


12 9
15 12 9
15 12


:w
"test.out" 15 lines, 106 characters written   :only!
6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 513 12 11 10 9 1
13 12 11 9 1
12 11 9 1
12 11 912 915 12 9
15 12~~~~~~
~~:b1
:+hide:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
Go^[
:w:only!:b1ENDTESTSTARTTEST
:let tests = []
:set hidden
:for i in range(5)
:new
:endfor
:1wincmd w
:$ hide
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
"test_close_count.in" line 93 of 153 --60%-- col 1/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 25 lines, 448 characters written:set ff& cpo+=A
/ENDTEST:1wincmd w
:.+close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
Go^[
:w
:only!
:b1
ENDTEST

STARTTEST
:let tests = []
:set hidden
:for i in range(5)
:new
:endfor
:4wincmd w
^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:so! Xdotest
:let tests = []
:set hidden
:for i in range(5)

:  :new

:  :endfor
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ENDTEST

test_close_count.in                                                             :1wincmd w
:$ hide
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:$-1 close!
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       :.+close!
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:e! test.out
"test.out" 15 lines, 106 characters6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5
test.out :call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
[+]15 12 915 120 19 18 17 16
20 19 18 16
20 18 16



:w
"test.out" 19 lines, 143 characters written   :only!
6 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 5

13 12 11 10 9 1
13 12 11 9 1
12 11 9 1
12 11 9
12 9
15 12 9
15 12

20 19 18 17 16
20 19 18 16
20 18 16

~
~
~
~:b1
:.+close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
Go^[
:w:only!:b1ENDTESTSTARTTEST
:let tests = []
:set hidden
:for i in range(5)
:new:endfor:4wincmd w
^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
"test_close_count.in" line 121 of 153 --79%-- col 1/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 28 lines, 511 characters written:set ff& cpo+=A
/ENDTEST


















1^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
9^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
2^Wc
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:only!
:e! test.out
:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
:w
:qa!
ENDTEST

:so! Xdotest
:let tests = []
:set hidden
:for i in range(5)

:  :new

:  :endfor
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ENDTEST

test_close_count.in                                                             :4wincmd w
[No Name]                                                                       [No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :qa!
ENDTEST

test_close_count.in                                                             :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       test_close_count.in                                                             :call add(tests, buffers)
~
~
~
~
[No Name]                                                                       ~
~
~
~
[No Name]                                                                       ~
~
~
[No Name]                                                                       :call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
:w
:qa!
ENDTEST

test_close_count.in                                                             


:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
:1wincmd w
[No Name]                                                                       [No Name]                                                                       ~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       ~
~
~
~
~
~
~
~
~
[No Name]                                                                       :let buffers = []
:windo call add(buffers, bufnr('%'))
[No Name]                                                                       [No Name]                                                                       :call add(tests, buffers)
:only!
~
~~:e! test.out
"test.out" line 19 of 19 --100%-- col 16 5 4 2 1
5 4 2 1
5 4 2
5 2
7 5 2
7 513 12 11 10 9 1
13 12 11 9 1
12 11 9 1
12 11 9
12 9
15 12 9
15 1220 19 18 17 16
20 19 18 16
20 18 16:call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
25 24 23 21 1
24 23 21 1
24 23 21
24 21:w
"test.out" 23 lines, 183 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_close_count = test61; then \
#	  if diff test.out test_close_count.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_close_count.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_close_count.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_comparators.failed test.ok test.out X* viminfo
cp test_comparators.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_comparators.in
[?1h="test_comparators.in" 21 lines, 283 characters" Test for expression comparators.   vim: set ft=vim :


STARTTEST
:so small.vim
:try
:  let oldisident=&isident
:  set isident+=#
:  if 1 is#1
:    $put ='ok'
:  else
:    $put ='ng'
:  endif
:finally
:  let &isident=oldisident
:endtry
:"
:/^marker/+1,$wq! test.out
ENDTEST

marker
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
" Test for expression comparators.   vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 14 lines, 200 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:try

:  :  let oldisident=&isident

:  :  set isident+=#

:  :  if 1 is#1

:    :    $put ='ok'

:    :  else

:    :    $put ='ng'

:    :  endif

:  :finally

:  :  let &isident=oldisident

:  :endtry
" Test for expression comparators.   vim: set ft=vim :


STARTTEST
:so small.vim
:try
:  let oldisident=&isident
:  set isident+=#
:  if 1 is#1
:    $put ='ok'ok

:"
:/^marker/+1,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 1 line, 3 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_comparators = test61; then \
#	  if diff test.out test_comparators.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_comparators.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_comparators.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_erasebackword.failed test.ok test.out X* viminfo
cp test_erasebackword.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_erasebackword.in
[?1h="test_erasebackword.in" 19 lines, 427 charactersTest for erasing backword

STARTTEST
:so small.vim
:so mbyte.vim
:set encoding=utf-8
G
:/^test/,$w! test.out
:qa!
ENDTEST

test starts here:

~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for erasing backword/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 12 lines, 362 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:so mbyte.vim
:set encoding=utf-8
Test for erasing backword

STARTTEST
:so small.vim
:so mbyte.vim
:set encoding=utf-8
G
o wwwこんにちわ世界ワールドvim ^W^[
o wwwこんにちわ世界ワールドvim ^W^W^[
o wwwこんにちわ世界ワールドvim ^W^W^W^[
o wwwこんにちわ世界ワールドvim ^W^W^W^W^[
o wwwこんにちわ世界ワールドvim ^W^W^W^W^W^[
o wwwこんにちわ世界ワールドvim ^W^W^W^W^W^W^[
:/^test/,$w! test.out
:qa!
ENDTEST

test starts here:

~
~
~
~


 wwwこんにちわ世界ワールド
 wwwこんにちわ世界ワール
 wwwこんにちわ世界ワール
 wwwこんにちわ世界ワール
wwwこんにちわ世界ワール
wwwこんにちわ世界ワール
:/^test/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 8 lines, 111 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_erasebackword = test61; then \
#	  if diff test.out test_erasebackword.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_erasebackword.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_erasebackword.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_eval.failed test.ok test.out X* viminfo
cp test_eval.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_eval.in
[?1h="test_eval.in" 247 lines, 6201 charactersTest for various eval features.   vim: set ft=vim :

Note: system clipboard is saved, changed and restored.

clipboard contents
something else

STARTTEST
:so small.vim
:set encoding=latin1
:set noswapfile
:lang C
:fun AppendRegContents(reg)
  call AppendRegParts(a:reg, getregtype(a:reg), getreg(a:reg), string(getreg(a:rreg, 0, 1)), getreg(a:reg, 1), string(getreg(a:reg, 1, 1)))
:endfun
:fun AppendRegParts(reg, type, cont, strcont, cont1, strcont1)
  call append('$', printf('%s: type %s; value: %s (%s), expr: %s (%s)', a:reg, aa:type, a:cont, a:strcont, a:cont1, a:strcont1))
endfun
:command -nargs=? AR :call AppendRegContents(<q-args>)
:fun SetReg(...)
    call call('setreg', a:000):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for various eval features.   vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 233 lines, 6010 characters written:set ff& cpo+=A
/ENDTEST:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]
:unlet nn
:let b:nn = 4
:$put =str[b:nn:]
:$put =str[:b:nn]
:$put =str[b:nn:b:nn]
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start:
:so! Xdotest
:so small.vim
:set encoding=latin1
:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]
:unlet nn
:let b:nn = 4
:$put =str[b:nn:]
:$put =str[:b:nn]
:$put =str[b:nn:b:nn]
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start::set noswapfile
:lang C
:fun AppendRegContents(reg)

:    call AppendRegParts(a:reg, getregtype(a:reg), getreg(a:reg), string(getreg

(a:reg, 0, 1)), getreg(a:reg, 1), string(getreg(a:reg, 1, 1)))

:  :endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n:fun AppendRegParts(reg, type, cont, strcont, cont1, strcont1)

:    call append('$', printf('%s: type %s; value: %s (%s), expr: %s (%s)', a:re

g, a:type, a:cont, a:strcont, a:cont1, a:strcont1))

:  endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n:command -nargs=? AR :call AppendRegContents(<q-args>)
:fun SetReg(...)

:      call call('setreg', a:000)

:      call append('$', printf('{{{2 setreg(%s)', string(a:000)[1:-2]))

:      call AppendRegContents(a:1)

:      if a:1 isnot# '='

:            execute "silent normal! Go==\n==\e\"".a:1."P"

:        endif

:  endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]:fun ErrExe(str)

:      call append('$', 'Executing '.a:str)

:      try

:            execute a:str

:        catch

:            $put =v:exception

:        endtry

:  endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]:fun Test()

:  $put ='{{{1 let tests'

:  let @" = 'abc'

:  AR "

:  let @" = "abc\n"

:  AR "

:  let @" = "abc\<C-m>"

:  AR "

:  let @= = '"abc"'

:  AR =

:  

:  $put ='{{{1 Basic setreg tests'

:  call SetReg('a', 'abcA', 'c')

:  call SetReg('b', 'abcB', 'v')

:  call SetReg('c', 'abcC', 'l')

:  call SetReg('d', 'abcD', 'V')

:  call SetReg('e', 'abcE', 'b')

:  call SetReg('f', 'abcF', "\<C-v>")

:  call SetReg('g', 'abcG', 'b10')

:  call SetReg('h', 'abcH', "\<C-v>10")

:  call SetReg('I', 'abcI')

:  

:  $put ='{{{1 Appending single lines with setreg()'

:  call SetReg('A', 'abcAc', 'c')

:  call SetReg('A', 'abcAl', 'l')

:  call SetReg('A', 'abcAc2','c')

:  call SetReg('b', 'abcBc', 'ca')

:  call SetReg('b', 'abcBb', 'ba')

:  call SetReg('b', 'abcBc2','ca')

:  call SetReg('b', 'abcBb2','b50a')

:  

:  call SetReg('C', 'abcCl', 'l')

:  call SetReg('C', 'abcCc', 'c')

:  call SetReg('D', 'abcDb', 'b')

:  

:  call SetReg('E', 'abcEb', 'b')

:  call SetReg('E', 'abcEl', 'l')

:  call SetReg('F', 'abcFc', 'c')

:  

:  $put ='{{{1 Appending NL with setreg()'

:  call setreg('a', 'abcA2', 'c')

:  call setreg('b', 'abcB2', 'v')

:  call setreg('c', 'abcC2', 'l')

:  call setreg('d', 'abcD2', 'V')

:  call setreg('e', 'abcE2', 'b')

:  call setreg('f', 'abcF2', "\<C-v>")

:  call setreg('g', 'abcG2', 'b10')

:  call setreg('h', 'abcH2', "\<C-v>10")

:  call setreg('I', 'abcI2')

:  

:  call SetReg('A', "\n")

:  call SetReg('B', "\n", 'c')

:  call SetReg('C', "\n")

:  call SetReg('D', "\n", 'l')

:  call SetReg('E', "\n")

:  call SetReg('F', "\n", 'b')

:  

:  $put ='{{{1 Setting lists with setreg()'

:  call SetReg('a', ['abcA3'], 'c')

:  call SetReg('b', ['abcB3'], 'l')

:  call SetReg('c', ['abcC3'], 'b')

:  call SetReg('d', ['abcD3'])

:  call SetReg('e', [1, 2, 'abc', 3])

:  call SetReg('f', [1, 2, 3])

:  

:  $put ='{{{1 Appending lists with setreg()'

:  call SetReg('A', ['abcA3c'], 'c')

:  call SetReg('b', ['abcB3l'], 'la')

:  call SetReg('C', ['abcC3b'], 'lb')

:  call SetReg('D', ['abcD32'])

:  

:  call SetReg('A', ['abcA32'])

:  call SetReg('B', ['abcB3c'], 'c')

:  call SetReg('C', ['abcC3l'], 'l')

:  call SetReg('D', ['abcD3b'], 'b')

:  

:  $put ='{{{1 Appending lists with NL with setreg()'

:  call SetReg('A', ["\n", 'abcA3l2'], 'l')

:  call SetReg('B', ["\n", 'abcB3c2'], 'c')

:  call SetReg('C', ["\n", 'abcC3b2'], 'b')

:  call SetReg('D', ["\n", 'abcD3b50'],'b50')

:  

:  $put ='{{{1 Setting lists with NLs with setreg()'

:  call SetReg('a', ['abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4

-4-2"])

:  call SetReg('b', ['abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\na

bcB4c-4-2"], 'c')

:  call SetReg('c', ['abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\na

bcC4l-4-2"], 'l')

:  call SetReg('d', ['abcD4b-0', "\n", "abcD4b-2\n", "\nabcD4b-3", "abcD4b-4\na

bcD4b-4-2"], 'b')

:  call SetReg('e', ['abcE4b10-0', "\n", "abcE4b10-2\n", "\nabcE4b10-3", "abcE4

b10-4\nabcE4b10-4-2"], 'b10')

:  

:  $put ='{{{1 Search and expressions'

:  call SetReg('/', ['abc/'])

:  call SetReg('/', ["abc/\n"])

:  call SetReg('=', ['"abc/"'])

:  call SetReg('=', ["\"abc/\n\""])

:  $put ='{{{1 System clipboard'

:  if has('clipboard')

:    " Save and restore system clipboard.

:    " If no connection to X-Server is possible, test should succeed.

:    let _clipreg = ['*', getreg('*'), getregtype('*')]

:    let _clipopt = &cb

:    let &cb='unnamed'

:    5y

:    AR *

:    tabdo :windo :echo "hi"

:    6y

:    AR *

:    let &cb=_clipopt

:    call call('setreg', _clipreg)

:    else

:      call AppendRegParts('*', 'V', "clipboard contents\n", "['clipboard conte

nts']", "clipboard contents\n", "['clipboard contents']")

:      call AppendRegParts('*', 'V', "something else\n", "['something else']", 

"something else\n", "['something else']")

:    endif

:  $put ='{{{1 Errors'

:  call ErrExe('call setreg()')

:  call ErrExe('call setreg(1)')

:  call ErrExe('call setreg(1, 2, 3, 4)')

:  call ErrExe('call setreg([], 2)')

:  call ErrExe('call setreg(1, {})')

:  call ErrExe('call setreg(1, 2, [])')

:  call ErrExe('call setreg("/", ["1", "2"])')

:  call ErrExe('call setreg("=", ["1", "2"])')

:  call ErrExe('call setreg(1, ["", "", [], ""])')

:  endfun
:$put =str[:n]
:$put =str[n:n]
:unlet n
:let nn = 3
:$put =str[nn:]
:$put =str[:nn]
:$put =str[nn:nn]
:unlet nn
:let b:nn = 4
:$put =str[b:nn:]
:$put =str[:b:nn]
:$put =str[b:nn:b:nn]
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start::"
:call Test()
hi*: type V; value: something else^@ (['something else']), expr: something else^@  (['something else'])
{{{1 Errors
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)
Vim(call):E118: Too many arguments for function: setreg
Executing call setreg([], 2)
Vim(call):E730: using List as a String
Executing call setreg(1, {})
Vim(call):E731: using Dictionary as a String
Executing call setreg(1, 2, [])
Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore lines
Executing call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a String
:"
:delfunction SetReg
:delfunction AppendRegContents
:delfunction ErrExe
:delfunction Test
:delcommand AR
:call garbagecollect(1)
:"
:" function name not starting with capital
:try

:  :func! g:test()

:  :echo "test"

:  :endfunc

:  :catch

:  :$put =v:exception

:  :endtry
{{{1 Errors
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)8: Too many arguments for function: setreg[], 2)730: using List as a String1, {}1Dictionary as a String2, [])0List as a String"/", ["1", "2"])883: search pattern and expression register may not contain two or moore linesExecuting call setreg("=", ["1", "2"])Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg(1, ["", "", [], ""])Vim(call):E730: using List as a String
Vim(function):E128: Function name must start with a capital or "s:": g:test()~

:"
:" function name includes a colon
:try

:  :func! b:test()

:  :echo "test"

:  :endfunc

:  :catch

:  :$put =v:exception

:  :endtry
{{{1 Errors
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)Vim(function):E128: Function name must start with a capital or "s:": b:test()
:"
:" function name folowed by #
:try

:  :func! test2() "#

:  :echo "test2"

:  :endfunc

:  :catch

:  :$put =v:exception

:  :endtry
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)
Vim(call):E118: Too many arguments for function: setreg
Executing call setreg([], 2)Vim(call):E730: using List as a String
Executing call setreg(1, {})Vim(call):E731: using Dictionary as a String
Executing call setreg(1, 2, [])Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a Stringfunction):E128: Function name must start with a capital or "s:": g:test()btest2() "#
:"
:" function name starting with/without "g:", buffer-local funcref.
:function! g:Foo(n)

:  :  $put ='called Foo(' . a:n . ')'

:  :endfunction
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
:let b:my_func = function('Foo')
:call b:my_func(1)

called Foo(1)
:echo g:Foo(2)
0
called Foo(2)
:echo Foo(3)
0
called Foo(3)
:"
:" script-local function used in Funcref must exist.
:so test_eval_func.vim




s:Testje exists: 0
func s:Testje exists: 1
Bar exists: 1
func Bar exists: 1
:"
:" Using $ instead of '$' must give an error
:try

:  : call append($, 'foobar')

:  :catch

:  :$put =v:exception

:  :endtry
Executing call setreg(1, {})
Vim(call):E731: using Dictionary as a String
Executing call setreg(1, 2, [])
Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore linesExecuting call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a Stringfunction):E128: Function name must start with a capital or "s:": g:test()btest2() "#
called Foo(123
s:Testje exists: 0
func s:Testje exists: 1
Bar exists: 1func Bar exists: 1
Vim(call):E116: Invalid arguments for function append
:"
:$put ='{{{1 getcurpos/setpos'

{{{1 getcurpos/setpos
/^012345678
search hit BOTTOM, continuing at TOP:let b:nn = 4
:$put =str[b:nn:]
:$put =str[:b:nn]
:$put =str[b:nn:b:nn]
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start:
{{{1 let tests
": type v; value: abc (['abc']), expr: abc (['abc'])
": type V; value: abc^@ (['abc']), expr: abc^@ (['abc'])
": type V; value: abc^M^@ (['abc^M']), expr: abc^M^@ (['abc^M'])
=: type v; value: abc (['abc']), expr: "abc" (['"abc"'])
{{{1 Basic setreg tests
{{{2 setreg('a', 'abcA', 'c')
a: type v; value: abcA (['abcA']), expr: abcA (['abcA'])
search hit BOTTOM, continuing at TOP012345:let sp = getcurpos()

:call setpos('.', sp)
:$put
Executing call setreg(1, 2, [])
Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore lines
Executing call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moore lines
Executing call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a String
Vim(function):E128: Function name must start with a capital or "s:": g:test()
Vim(function):E128: Function name must start with a capital or "s:": b:test()
Vim(function):E128: Function name must start with a capital or "s:": test2() "#
called Foo(1)
called Foo(2)
called Foo(3)
s:Testje exists: 0
func s:Testje exists: 1
Bar exists: 1
func Bar exists: 1
Vim(call):E116: Invalid arguments for function append
{{{1 getcurpos/setpos
6
:"
:" substring and variable name
:let str = 'abcdef'
:let n = 3
:$put =str[n:]

def
:$put =str[:n]

abcd
:$put =str[n:n]

d
:unlet n
:let nn = 3
:$put =str[nn:]


def
~

:$put =str[:nn]
abcd
:$put =str[nn:nn]

d
:unlet nn
:let b:nn = 4
:$put =str[b:nn:]


ef
~

:$put =str[:b:nn]
abcde
:$put =str[b:nn:b:nn]

e
:unlet b:nn
:"
:/^start:/+1,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 362 lines, 11279 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_eval = test61; then \
#	  if diff test.out test_eval.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_eval.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_eval.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_fixeol.failed test.ok test.out X* viminfo
cp test_fixeol.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_fixeol.in
[?1h="test_fixeol.in" 40 lines, 780 charactersTests for 'fixeol'vim: set ft=vim :

STARTTEST
:" use Unix fileformat for consistency
:set ff=unix
:enew!
awith eol^[:w! XXEol
:enew!
:set noeol nofixeol
awithout eol^[:w! XXNoEol
:set eol fixeol
:bwipe XXEol XXNoEol
:"
:" try editing files with 'fixeol' disabled
:e! XXEol
ostays eol^[:set nofixeol
:w! XXTestEol
:e! XXNoEol
ostays without^[:set nofixeol
:w! XXTestNoEol
:bwipe XXEol XXNoEol XXTestEol XXTestNoEol
:set fixeol:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for 'fixeol'vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 35 lines, 698 characters written:set ff& cpo+=A
/ENDTEST















:"
:" Append "END" to each file so that we can see what the last written char was.
ggdGaEND^[:w >>XXEol
:w >>XXNoEol
:w >>XXTestEol
:w >>XXTestNoEol
:"
:" Concatenate the results
:e! test.out
a0^[:$r XXEol
:$r XXNoEol
Go1^[:$r XXTestEol
:$r XXTestNoEol
:w
:qa!
ENDTEST

~with eol:w! XXEol
"XXEol" [New File] 1 line, 9 characters written:enew!
:set noeol nofixeol
without eol:w! XXNoEol
"XXNoEol" [New File][Incomplete last line] 1 line, 11 characters written:set eol fixeol
:bwipe XXEol XXNoEol
"test_fixeol.in" 40 lines, 780 characters

2 buffers wiped out

Press ENTER or type command to continue:"
:w! XXTestEol
:e! XXNoEol
ostays without^[:set nofixeol
:w! XXTestNoEol
:bwipe XXEol XXNoEol XXTestEol XXTestNoEol
:set fixeol
:"
:" Append "END" to each file so that we can see what the last written char was.
ggdGaEND^[:w >>XXEol
:w >>XXNoEol
:w >>XXTestEol
:w >>XXTestNoEol
:"
:" Concatenate the results
:e! test.out
a0^[:$r XXEol
:$r XXNoEol
Go1^[:$r XXTestEol
:$r XXTestNoEol
:w
:qa!
ENDTEST
:" try editing files with 'fixeol' disabled
:e! XXEol
"XXEol" 1 line, 9 characterswith eol~~~~~~~~~~~~~~~~~~~~~
~
stays eol:set nofixeol
:w! XXTestEol
"XXTestEol" [New File] 2 lines, 19 characters written:e! XXNoEol
"XXNoEol" [Incomplete last line] 1 line, 11 charactersout eol~
stays without:set nofixeol
:w! XXTestNoEol
"XXTestNoEol" [New File][Incomplete last line] 2 lines, 25 characters written:bwipe XXEol XXNoEol XXTestEol XXTestNoEol
"test_fixeol.in" 40 lines, 780 characters

4 buffers wiped out

Press ENTER or type command to continue:set fixeol
:w! XXTestEol
:e! XXNoEol
ostays without^[:set nofixeol
:w! XXTestNoEol
:bwipe XXEol XXNoEol XXTestEol XXTestNoEol
:set fixeol
:"
:" Append "END" to each file so that we can see what the last written char was.
ggdGaEND^[:w >>XXEol
:w >>XXNoEol
:w >>XXTestEol
:w >>XXTestNoEol
:"
:" Concatenate the results
:e! test.out
a0^[:$r XXEol
:$r XXNoEol
Go1^[:$r XXTestEol
:$r XXTestNoEol
:w
:qa!
ENDTEST
:"
:" Append "END" to each file so that we can see what the last written char was.
Tests for 'fixeol'vim: set ft=vim :

STARTTEST
:" use Unix fileformat for consistency
:set ff=unix
:enew!
awith eol^[:w! XXEol
:enew!
:set noeol nofixeol
awithout eol^[:w! XXNoEol
:set eol fixeol
:bwipe XXEol XXNoEol
:"
:" try editing files with 'fixeol' disabled
:e! XXEol
ostays eol^[:set nofixeol~~~~~~~~~~~~~~~~~~~~~~
--No lines in buffer--END:w >>XXEol
"XXEol" 1 line, 4 characters appended:w >>XXNoEol
"XXNoEol" 1 line, 4 characters appended:w >>XXTestEol
"XXTestEol" 1 line, 4 characters appended:w >>XXTestNoEol
"XXTestNoEol" 1 line, 4 characters appended:"
:" Concatenate the results
:e! test.out
"test.out" [New File]0:$r XXEol
"XXEol" 2 lines, 13 characterswith eol
END:$r XXNoEol
"XXNoEol" 1 line, 15 characterswithout eolEND

1:$r XXTestEol
"XXTestEol" 3 lines, 23 characterswith eol
stays eol
END:$r XXTestNoEol
"XXTestNoEol" 2 lines, 29 characterswithout eol
stays withoutEND:w
"test.out" [New File] 10 lines, 84 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_fixeol = test61; then \
#	  if diff test.out test_fixeol.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_fixeol.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_fixeol.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_getcwd.failed test.ok test.out X* viminfo
cp test_getcwd.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_getcwd.in
[?1h="test_getcwd.in" 96 lines, 2374 charactersTests for getcwd(), haslocaldir(), and :lcdvim: set ft=vim :

STARTTEST
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xtopdir directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a swapfile in Xtopdir prevents it from being cleaned up.
:set noswapfile
:"
:function! GetCwdInfo(win, tab)
: let tab_changed = 0
: let mod = ":t"
: if a:tab > 0 && a:tab != tabpagenr()
:   let tab_changed = 1
:   exec "tabnext " . a:tab
: endif
: let bufname = fnamemodify(bufname(winbufnr(a:win)), mod)
: if tab_changed:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for getcwd(), haslocaldir(), and :lcdvim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 90 lines, 2273 characters written:set ff& cpo+=A
/ENDTEST:wincmd W
:lcd Xdir2
:call add(r, GetCwdInfo(0, 0))
:wincmd W
:lcd Xdir3
:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("x"), 0))
:call add(r, GetCwdInfo(bufwinnr("y"), 0))
:call add(r, GetCwdInfo(bufwinnr("z"), 0))
:let tp_nr = tabpagenr()
:tabrewind
:call add(r, GetCwdInfo(3, tp_nr))
:call add(r, GetCwdInfo(2, tp_nr))
:call add(r, GetCwdInfo(1, tp_nr))
:"
:call writefile(r, test_out, "a")
:q
:exec "cd " . cwd
:call delete("Xtopdir", "rf")
:qa!
ENDTEST



:so! Xdotest
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xtopdir directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a swapfile in Xtopdir prevents it from being cleaned up.
:set noswapfile
:"
:function! GetCwdInfo(win, tab)

:  : let tab_changed = 0

:  : let mod = ":t"

:  : if a:tab > 0 && a:tab != tabpagenr()

:    :   let tab_changed = 1

:    :   exec "tabnext " . a:tab

:    : endif

:  : let bufname = fnamemodify(bufname(winbufnr(a:win)), mod)

:  : if tab_changed

:    :   tabprevious

:    : endif

:  : if a:win == 0 && a:tab == 0

:    :   let dirname = fnamemodify(getcwd(), mod)

:    :   let lflag = haslocaldir()

:    : elseif a:tab == 0

:    :   let dirname = fnamemodify(getcwd(a:win), mod)

:    :   let lflag = haslocaldir(a:win)

:    : else

:    :   let dirname = fnamemodify(getcwd(a:win, a:tab), mod)

:    :   let lflag = haslocaldir(a:win, a:tab)

:    : endif

:  : return bufname . ' ' . dirname . ' ' . lflag

:  :endfunction
:wincmd W
:lcd Xdir2
:call add(r, GetCwdInfo(0, 0))
:wincmd W
:lcd Xdir3
:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("x"), 0))
:call add(r, GetCwdInfo(bufwinnr("y"), 0))
:call add(r, GetCwdInfo(bufwinnr("z"), 0))
:let tp_nr = tabpagenr()
:tabrewind
:call add(r, GetCwdInfo(3, tp_nr))
:call add(r, GetCwdInfo(2, tp_nr))
:call add(r, GetCwdInfo(1, tp_nr))
:"
:call writefile(r, test_out, "a")
:q
:exec "cd " . cwd
:call delete("Xtopdir", "rf")
:qa!
ENDTEST


:" On windows a stale "Xtopdir" directory may exist, remove it so that
:" we start from a clean state.
:call delete("Xtopdir", "rf")
:let r=[]
:new
~~~~~~~~~~
[No Name]                                                                       test_getcwd.in                                                                  :let cwd=getcwd()
:let test_out = cwd . '/test.out'
:call mkdir('Xtopdir')
:cd Xtopdir
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtopdir/<<PKGBUILDDIR>>/src/vim-athena/testdir/test_getcwd.in:call mkdir('Xdir1')
:call mkdir('Xdir2')
:call mkdir('Xdir3')
:new a
"a" [New File]~
~
~
~
~
~
a                                                                               ~
~
~
~
~
~
[No Name]                                                                       :q
:exec "cd " . cwd
:call delete("Xtopdir", "rf")
:qa!
ENDTEST

/<<PKGBUILDDIR>>/src/vim-athena/testdir/test_getcwd.in            :new b
"b" [New File]~
~
~
~
b                                                                               ~
~
~
~
a                                                                               ~
~
~
~
[No Name]                                                                       :call delete("Xtopdir", "rf")
:qa!
ENDTEST

/<<PKGBUILDDIR>>/src/vim-athena/testdir/test_getcwd.in            :new c
"c" [New File]~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       :qa!
ENDTEST

/<<PKGBUILDDIR>>/src/vim-athena/testdir/test_getcwd.in            :3wincmd w
c                                                                               a                                                                               :lcd Xdir1
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtopdir/Xdir1/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtopdir/c/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtopdir/b/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtopdir/a:call add(r, GetCwdInfo(0, 0))
:wincmd W
c                                                              b                                                                               a                                                                               :call add(r, GetCwdInfo(0, 0))
:wincmd W
c                                                                               b                                                                               :lcd Xdir3
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtopdir/Xdir3/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtopdir/c/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtopdir/b/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtopdir/a:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("a"), 0))
:call add(r, GetCwdInfo(bufwinnr("b"), 0))
:call add(r, GetCwdInfo(bufwinnr("c"), 0))
:wincmd W
c                                                                               b                                                              a                                                              /<<PKGBUILDDIR>>/src/vim-athena/testdir/test_getcwd.in            :call add(r, GetCwdInfo(bufwinnr("a"), tabpagenr()))
:call add(r, GetCwdInfo(bufwinnr("b"), tabpagenr()))
:call add(r, GetCwdInfo(bufwinnr("c"), tabpagenr()))
:"
:tabnew x
"x" [New File] 5 /b/v/v/s/v/t/test_getcwd.in | x _____________________________________________X~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:new y
"y" [New File]2 y _Xy                                                                               x                                                                               :new z
"z" [New File] 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
~
~
~
z                                                                               ~
~
~
~
~
y                                                                               ~
~
~
~
~
x                                                                               :3wincmd w
z                                                                               x                                                                               x_X:call add(r, GetCwdInfo(0, 0))
:wincmd W
y                                                                               x                                                                               y_X:lcd Xdir2
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtopdir/Xdir2/b/v/v/s/v/t/X/y _X/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtopdir/z/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtopdir/y/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtopdir/x:call add(r, GetCwdInfo(0, 0))
:wincmd W
z ________________Xz                                                                               y                                                                               x                                                              :lcd Xdir3
/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtopdir/Xdir3/b/v/v/s/v/t/X/z _X/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtopdir/z/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtopdir/y/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtopdir/x:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("x"), 0))
:call add(r, GetCwdInfo(bufwinnr("y"), 0))
:call add(r, GetCwdInfo(bufwinnr("z"), 0))
:let tp_nr = tabpagenr()
:tabrewind
 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       ENDTEST

/<<PKGBUILDDIR>>/src/vim-athena/testdir/test_getcwd.in            

:call add(r, GetCwdInfo(3, tp_nr))
 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       ENDTEST

/<<PKGBUILDDIR>>/src/vim-athena/testdir/test_getcwd.in            

:call add(r, GetCwdInfo(2, tp_nr))
 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       ENDTEST

/<<PKGBUILDDIR>>/src/vim-athena/testdir/test_getcwd.in            

:call add(r, GetCwdInfo(1, tp_nr))
 5 /b/v/v/s/v/t/test_getcwd.in | 3 z ___________________________________________X~
~
~
c                                                                               ~
~
~
b                                                                               ~
~
a                                                                               ~
~
~
[No Name]                                                                       ENDTEST

/<<PKGBUILDDIR>>/src/vim-athena/testdir/test_getcwd.in            

:"
:call writefile(r, test_out, "a")
:q
 4 [No Name] | 3 z _____________________________________________________________X~
~
~
c                                                                               ~
~
~
~
b                                                                               ~
~
~
a                                                                               ~
~
~
~
[No Name]                                                                       :exec "cd " . cwd
/<<PKGBUILDDIR>>/src/vim-athena/testdirX/z _XXtopdir/cXtopdir/bXtopdir/a
:call delete("Xtopdir", "rf")
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_getcwd = test61; then \
#	  if diff test.out test_getcwd.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_getcwd.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_getcwd.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_insertcount.failed test.ok test.out X* viminfo
cp test_insertcount.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_insertcount.in
[?1h="test_insertcount.in" 14 lines, 204 charactersTests for repeating insert and replace.

STARTTEST
:so small.vim
:/Second
4gro
:/^First/,$wq! test.out
:" get here when failed and in Insert mode
^[:.wq! test.out
ENDTEST

First line
Second line
Last line
~
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for repeating insert and replace./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 6 lines, 111 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:/Second
ooooecond line
ooo
Las:/^First/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 3 lines, 36 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_insertcount = test61; then \
#	  if diff test.out test_insertcount.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_insertcount.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_insertcount.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_listchars.failed test.ok test.out X* viminfo
cp test_listchars.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listchars.in
[?1h="test_listchars.in" 54 lines, 705 charactersTests for 'listchars' display with 'list' and :list

STARTTEST
:so small.vim
:set ff=unix
:let g:lines = []
:function GetScreenCharsForLine(lnum)
:  return join(map(range(1, virtcol('$')), 'nr2char(screenchar(a:lnum, v:val))')), '')
:endfunction
:nnoremap <expr> GG ":call add(g:lines, GetScreenCharsForLine(".screenrow()."))\\<CR>"
:set listchars+=tab:>-,space:.,trail:<
:set list
:
/^start:/
:normal! jzt
GG
GG
GG
GG
GGH:
:set listchars-=trail:<:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for 'listchars' display with 'list' and :list/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 25 lines, 431 characters written:set ff& cpo+=A
/ENDTEST








GG
GG
GG
GG
GG:
:put =g:lines
:'[,']w! test.out
ENDTEST

:so! Xdotest
:so small.vim
:set ff=unix
:let g:lines = []
:function GetScreenCharsForLine(lnum)

:  :  return join(map(range(1, virtcol('$')), 'nr2char(screenchar(a:lnum, v:val

))'), '')

:  :endfunction
:endfunction
:nnoremap <expr> GG ":call add(g:lines, GetScreenCharsForLine(".screenrow()."))\\<CR>"
:nnoremap <expr> GG ":call add(g:lines, GetScreenCharsForLine(".screenrow()."))

\<CR>"
:endfunction
:set listchars+=tab:>-,space:.,trail:<
:set list
$.<expr>.GG.":call..\\<CR>"$
:set.$
:set.list$
:$$.jzt$
GG$
GG$
GG$
GG$
GGH:$
:set.$
GG$
GG$
GG$
GG$
GG:$
:put.$.$$
$:/^start:/

start:$
:normal! jzt
>-------aa>-----$
..bb>---<<$
...cccc><$
dd........ee<<>-$
<$
$
$
STARTTEST$
:set.listchars+=trail:<$
:set.nolist$
:$
/^start:/$
:redir!.>>.test.out$
:+1,$list$
:redir.END$
:q!$
ENDTEST$
$
start:$
..fff>--<<$
>-------gg>-----$
.....h>-$
iii<<<<><<$:call add(g:lines, GetScreenCharsForLine(1))

:call add(g:lines, GetScreenCharsForLine(2))

:call add(g:lines, GetScreenCharsForLine(3))

:call add(g:lines, GetScreenCharsForLine(4))

:call add(g:lines, GetScreenCharsForLine(5))
::set listchars-=trail:<
.....
.......>..:call add(g:lines, GetScreenCharsForLine(1))
:call add(g:lines, GetScreenCharsForLine(2))
:call add(g:lines, GetScreenCharsForLine(3))
:call add(g:lines, GetScreenCharsForLine(4))

:call add(g:lines, GetScreenCharsForLine(5))
::put =g:lines
10 more >-------aa>-----$$
..bb>---<<$$
...cccc><$$
dd........ee<<>-$$
<$$
>-------aa>-----$$
..bb>---..$$
...cccc>.$$
dd........ee..>-$$
.$$10 more lines:'[,']w! test.out
"test.out" [New File] 10 lines, 124 characters written/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 8 lines, 93 characters written:set ff& cpo+=A
/ENDTEST



:+1,$list$
:redir.END$
:q!$
ENDTEST$
$
:so! Xdotest
:set listchars+=trail:<
:set nolist
   >>  :/^start:/

start:
:redir! >> test.out
:+1,$list
..fff>--<<$

>-------gg>-----$

.....h>-$

iii<<<<><<$

Press ENTER or type command to continue:redir END
>-------aa>-----$
..bb>---..$
...cccc>.$
dd........ee..>-$
.$STARTTEST:set listchars+=trail:<
:set nolist
:
/^start:/
:redir! >> test.out+1,$listredir END
:q!ENDTESTstart:  fff
        ggh
iii   
:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_listchars = test61; then \
#	  if diff test.out test_listchars.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_listchars.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listchars.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_listlbr.failed test.ok test.out X* viminfo
cp test_listlbr.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr.in
[?1h="test_listlbr.in" 119 lines, 2868 charactersTest for linebreak and list option (non-utf8)

STARTTEST
:so small.vim
:if !exists("+linebreak") || !has("conceal") | e! test.ok | w! test.out | qa! |  endif
:10new|:vsp|:vert resize 20
:put =\"\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \"
:norm! zt
:set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
:fu! ScreenChar(width)
:let c=''
:for j in range(1,4)
:for i in range(1,a:width)
:let c.=nr2char(screenchar(j, i))
:endfor
:let c.="\n"
:endfor
:return c
:endfu
:fu! DoRecordScreen()
:wincmd l
:$put =printf(\"\n%s\", g:test):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for linebreak and list option (non-utf8)/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 114 lines, 2792 characters written:set ff& cpo+=A
/ENDTESTabcd{ef
ghijklm
no}pqrs^[2k0f{^V^Vc%^[
:"
:let g:test ="Test 11: using block replace mode after wrapping"
:$put =g:test
:set linebreak wrap
Go^[150aa^[yypk147|^Vjr0
:"
:let g:test ="Test 12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$":set list listchars=space:_,trail:-,tab:>-,eol:$
:$put =g:test
:let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
:if !exists("+linebreak") || !has("conceal") | e! test.ok | w! test.out | qa! |

endif
abcd{ef
:10new|:vsp|:vert resize 20
       ||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            ~~~~~~~~~[No Name]                                                  let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =linenorm! zt
:redraw!let line=ScreenChar(winwidth(0))
:call DoRecordScreen()%w! test.outqaENDTEST
dummy text
test_listlbr.in                                                                 :put =\"\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \"
        abcdef hijkl
mn  pqrstuvwxyz_1060
ABCDEFGHIJKLMNOP    [+] abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP[+]:norm! zt
        abcdef hijkl
mn  pqrstuvwxyz_1060
ABCDEFGHIJKLMNOP    
~                   
~                   
~                   
~                   
~                   
~                   
                    
~                   :set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
abcdef          
+hijklmn            
+pqrstuvwxyz_1060ABC
+DEFGHIJKLMNOP      abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP :fu! ScreenChar(width)

:  :^Ilet c=''

:  :^Ifor j in range(1,4)

:    :^I    for i in range(1,a:width)

:      :^I    ^Ilet c.=nr2char(screenchar(j, i))

:      :^I    endfor

:    :           let c.="\n"

:    :^Iendfor

:  :^Ireturn c

:  :endfu
abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      ||||||~                   
~                   
~                   
~                   
~                   abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP~~~~~~~:fu! DoRecordScreen()

:  :^Iwincmd l

:  :^I$put =printf(\"\n%s\", g:test)

:  :^I$put =g:line

:  :^Iwincmd p

:  :endfu
abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      ||
~                   abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP~~~:"
:let g:test="Test 1: set linebreak"
:redraw!
abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      |||||||~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP~~~~~~~~[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines                    
Test 1: set         
+linebreak          
    abcdef          
+hijklmn            
+pqrstuvwxyz_1060ABCTest 1: set linebreak    abcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP:"
:let g:test="Test 2: set linebreak + set list"
:set linebreak list listchars=
^Iabcdef hijklmn^I  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP      
              
Test 1: set
+linebreak 
    abcdef
+hijklmn  
+pqrstuvwxyz_1060ABC
+DEFGHIJKLMNOP      :redraw!
^Iabcdef hijklmn^I  |
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      ||
Test 1: set|
+linebreak|
    abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      |
[No Name] [+]        abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOPTest 1: set linebreakabcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP~~[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines    abcdef                                                 +hijklmn                                                   +pqrstuvwxyz_1060ABC                                       +DEFGHIJKLMNOP                                             ~                                                          ~                                                                                                                                                                                                                                                                                                      Test 2: set linebreak + set list^Iabcdef hijklmn^I+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP4 more lines:"
:let g:test ="Test 3: set linebreak nolist"
:set nolist linebreak
    abcdef          hijklmn            pqrstuvwxyz_1060ABC
+DEFGHIJKLMNOP
           
Test 1: set
+linebreak
    abcdef
+hijklmn            
+pqrstuvwxyz_1060ABC:redraw!
abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
+DEFGHIJKLMNOP      ||
Test 1: set|
+linebreak|
    abcdef|
+hijklmn|
+pqrstuvwxyz_1060ABC|
[No Name] [+]        abcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOPTest 2: set linebreak + set list^Iabcdef hijklmn^I+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines^Iabcdef hijklmn^I                                         +pqrstuvwxyz_1060ABC                                       +DEFGHIJKLMNOP                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Test 3: set linebreak nolistabcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP4 more lines:"
:let g:test ="Test 4: set linebreak with tab and 1 line as long as screen: shou

ld break!"
abcdef|^Iabcdef hijklmn^I:set nolist linebreak ts=8
    abcdef:let line="1\t".repeat('a', winwidth(0)-2)
:$put =line
      
        
Test 3: set         linebreak nolist
    abcdef
+hijklmn   
+pqrstuvwxyz_1060ABC
+DEFGHIJKLMNOP
1       
+aaaaaaaaaaaaaaaaaa :$
:norm! zt
1                   
+aaaaaaaaaaaaaaaaaa 
                    
                    
                    
                    
                    
                    
                    
                    ~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   :redraw!
1|
+aaaaaaaaaaaaaaaaaa |||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        ^Iabcdef hijklmn^I+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOPTest 3: set linebreak nolistabcdef+hijklmn+pqrstuvwxyz_1060ABC+DEFGHIJKLMNOP[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines                    
Test 4: set         
+linebreak with tab 
+and 1 line as long 
+as screen: should  
+break!             
1                   
+aaaaaaaaaaaaaaaaaa +pqrstuvwxyz_1060ABC                                       +DEFGHIJKLMNOP                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     1aaaaaaaaaaaaaaaaaaTest 4: set linebreak with tab and 1 line as long as screen+: should break!1+aaaaaaaaaaaaaaaaaa~~4 more lines:let line="_S_\t bla"
:$put =line
Test 4: set         
+linebreak with tab 
+and 1 line as long 
+as screen: should  
+break!             
1                   
+aaaaaaaaaaaaaaaaaa 
                    
                    
                    ~
~
_S_      bla:$
:norm! zt
_S_      bla        
                    
                    
                    
                    
                    
                    
                    
                    
                    ~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   :"
:let g:test ="Test 5: set linebreak with conceal and set list and tab displayed

by different char (line may not be truncated)"
_S_      bla|+pqrstuvwxyz_1060ABC:set cpo&vim list linebreak conceallevel=2 concealcursor=nv listchars=tab:ab
abbbb:syn match ConcealVar contained /_/ conceal
:syn match All /.*/ contains=ConcealVar
Sabb:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines                    
Test 5: set         
+linebreak with     
+conceal and set    
+list and tab       
+displayed by       
+different char     
+(line may not be   
+truncated)         ~                                                          ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  _S_      blaTest 5: set linebreak with conceal and set list and tab dis+played by different char (line may not be truncated)Sabbbbbb bla~~~4 more lines:set cpo&vim linebreak
:"
:let g:test ="Test 6: set linebreak with visual block mode"
:let line="REMOVE: this not"
:$put =g:test
abbbbbb
~
~          
~              
Test 6: set     nebreak withvisual block mode
~                   
~                   
~                   :$put =line
REMOVE: this not    :let line="REMOVE: aaaaaaaaaaaaa"
:$put =line
REMOVE:             
+aaaaaaaaaaaaa      :1/^REMOVE:
REMOVE: 
REMOVE:this not        
aaaaaaaaaaaaa
~                   :$put
~                   
~                   
~                   
Test 6: set         
+linebreak with     
+visual block mode  
this not            
aaaaaaaaaaaaa       
~                   
                    REMOVE:             
REMOVE::set cpo&vim linebreak
:"
:let g:test ="Test 7: set linebreak with visual block mode and v_b_A"
:$put =g:test
this not            
aaaaaaaaaaaaa       
REMOVE:             
REMOVE:             
                    
                    
                    
                    
                    
                    Test 7: set
+linebreak with
+visual block mode
+and vbA
~                   
~                   long line:           foobar
+foobar foobar      @                   
@                           
             
       
       
           
               
                  
        
                    
                    +foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar foobar
+foobar+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar foobar      
+foobar             
                    TARGET at
+end:exe "norm! $3B\<C-v>eAx\<Esc>"
x at:set cpo&vim linebreak sbr=
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar foobar 
foobar TARGETx at 
end played by different char (line may not be truncated):"
:let g:test ="Test 8: set linebreak with visual char mode and changing block"
:$put =g:test
Test 8: set  
linebreak with
visual char mode
and changing block
~                   
~                   
~                   
~                   
~                   
~                   1111-1111-1111-11-  
1111-1111-1111      11122222222:"
:let g:test ="Test 9: using redo after block visual mode"
:$put =g:test
Test 9: using redo  
after block visual  
mode                1111-2222-1111-11-  
1111-2222-1111      
Test 9: using redo  
after block visual  
mode                
~                   
                    
                    
                    
                                        
aaa
aaa
a
~                   a
a3 lines changedA
A
AA
AaA:"
:let g:test ="Test 10: using normal commands after block-visual"
:$put =g:test
Test 9: using redo  
after block visual  
mode                
                    
AaA                 
AaA                 
A                   
~                   
                    
                    Test 10: using      
normal commands
after block-visual:set linebreak
AaA                 
AaA                 
A                   
Test 10: using      
normal commands     
after block-visual  
                    
                    
                    
                    abcd{ef
ghijklm
no}pqrspqrs
~                   
~                   :"
:let g:test ="Test 11: using block replace mode after wrapping"
:$put =g:test
AaA                 
A                   
Test 10: using      
normal commands     
after block-visual  
                    
abcdpqrs            
~                   
~                   
                    Test 11: using      
block replace mode  
after wrapping:set linebreak wrap
A                   
Test 10: using      
normal commands     
after block-visual  
                    
abcdpqrs            
Test 11: using      
block replace mode  
after wrapping      
                    aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaa        
~                   
~                   aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa@                   
@                   @                   
@                   
                    
                    
                    
                    
                    
                    
                    
                    aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaa
~                   
~                   0
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa@                   
@                   @                   
@                   
                    
                    
                    
                    
                    
                    
                    
                    aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaa0aaa
~                   
~                   :"
:let g:test ="Test 12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$

"aaaaaaaaaaaaaaaaaaaa|~:set list listchars=space:_,trail:-,tab:>-,eol:$
$:$put =g:test
Test_12:_set_       
linebreak_list_     
listchars=space:,   
tab:>-,tail:-,eol:$$
~                   
~                   
~                   
~                   :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
a_                  
aaaaaaaaaaaaaaaaaaaa
aa>-----a-$         :$
:norm! zt
a_                  
aaaaaaaaaaaaaaaaaaaa
aa>-----a-$         
~                   
~                   
~                   
                    
                    
                    
                    ~                   
~                   
~                   
~                   :redraw!
a_|
aaaaaaaaaaaaaaaaaaaa|
aa>-----a-$||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        ~~_S_      blaTest 5: set linebreak with conceal and set list and tab displayed by different char (line may not be truncated)Sabbbbbb bla~~~[No Name] [+]                                              :let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr.in                                                                 :let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
4 more lines$                   
Test_12:_set_       
linebreak_list_     
listchars=space:,   
tab:>-,tail:-,eol:$$
a------------------ 
$                   Test 12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$a aaaaaaaaaaaaaaaaaaaaaaa12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$a_          aaaaaaaaaaaaaaaaaaaaaa>-----a-$:%w! test.out
"test.out" [New File] 62 lines, 2030 characters writtentest.out     test.out     :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_listlbr = test61; then \
#	  if diff test.out test_listlbr.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_listlbr.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_search_mbyte.failed test.ok test.out X* viminfo
cp test_search_mbyte.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_search_mbyte.in
[?1h="test_search_mbyte.in" 15 lines, 226 charactersTest for search('multi-byte char', 'bce')

STARTTEST
:source small.vim
:source mbyte.vim
:set encoding=utf-8
:/^Test bce:/+1
:$put =search('A', 'bce', line('.'))
:1;/^Results:/,$wq! test.out
ENDTEST

Results:

Test bce:
A
~
~
~
~
~
~
~
~:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for search('multi-byte char', 'bce')/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 6 lines, 140 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:source small.vim
:source mbyte.vim
:set encoding=utf-8
Test for search('multi-byte char', 'bce')

STARTTEST
:source small.vim
:source mbyte.vim
:set encoding=utf-8
:/^Test bce:/+1
:$put =search('A', 'bce', line('.'))
:1;/^Results:/,$wq! test.out
ENDTEST

Results:

Test bce:
A
~
~
~
~
~
~
~
~:/^Test bce:/+1
:$put =search('A', 'bce', line('.'))
15
:1;/^Results:/,$wq! test.out
"test.out" [New File] 5 lines, 27 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_search_mbyte = test61; then \
#	  if diff test.out test_search_mbyte.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_search_mbyte.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_search_mbyte.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_utf8.failed test.ok test.out X* viminfo
cp test_utf8.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_utf8.in
[?1h="test_utf8.in" 46 lines, 1245 charactersTests for Unicode manipulationsvim: set ft=vim :

STARTTEST
:so small.vim
:set encoding=utf-8
:"
:" Visual block Insert adjusts for multi-byte char
:new
:exe ":norm! gg0l\<C-V>jjIx\<Esc>"
:let r = getline(1, '$')
:"
:bwipeout!
:$put=r
:"
:" Test for built-in function strchars()
:$put=strchars(str)
:$put=strchars(str, 0)
:$put=strchars(str, 1)
:endfor
:"
:" Test for customlist completion:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for Unicode manipulationsvim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 40 lines, 1151 characters written:set ff& cpo+=A
/ENDTEST:"
:" Test for customlist completion
:function! CustomComplete1(lead, line, pos)
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
:call feedkeys(":Test1 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete2(lead, line, pos)
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
:call feedkeys(":Test2 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete3(lead, line, pos)
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:call garbagecollect(1)
:/^start:/,$wq! test.out
ENDTEST


:so! Xdotest
:so small.vim
:set encoding=utf-8
:" Test for customlist completion
:function! CustomComplete1(lead, line, pos)
:return ['あ', 'い']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
:call feedkeys(":Test1 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete2(lead, line, pos)
:return ['あたし', 'あたま', 'あたりめ']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
:call feedkeys(":Test2 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete3(lead, line, pos)
:return ['Nこ', 'Nん', 'Nぶ']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:call garbagecollect(1)
:/^start:/,$wq! test.out
ENDTEST

:"
:" Visual block Insert adjusts for multi-byte char
:new
~~~~~~~~~~
[No Name]                                                                       function! CustomComplete3(lead, line, pos)
:       return ['Nこ', 'Nん', 'Nぶ']endfunctioncommand -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')"call garbagecollect(1)
:/^start:/,$wq! test.out
ENDTEST test_utf8.in                                                                    :call setline(1, ["aaa", "あああ", "bbb"])
aaa
あああ
bbb[+]:exe ":norm! gg0l\<C-V>jjIx\<Esc>"
xaa
xあああ
bxbb:let r = getline(1, '$')
:"
:bwipeout!
:" Test for customlist completion
:function! CustomComplete1(lead, line, pos)
:       return ['あ', 'い']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
:call feedkeys(":Test1 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"
:function! CustomComplete2(lead, line, pos)
:return ['あたし', 'あたま', 'あたりめ']
:endfunction
:command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
:call feedkeys(":Test2 \<C-L>'\<C-B>$put='\<CR>", 'it')"function! CustomComplete3(lead, line, pos)
:       return ['Nこ', 'Nん', 'Nぶ']
:endfunctionommand -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')
:"call garbagecollect(1):/^start:/,$wq! test.out
ENDTEST
 :$put=r
3 more lines



start:
axaa
xあああ
bxbb3 more lines:"
:" Test for built-in function strchars()
:for str in ["a", "あいa", "A\u20dd", "A\u20dd\u20dd", "\u20dd"]

:  :^I$put=strchars(str)

:  :^I$put=strchars(str, 0)

:  :^I$put=strchars(str, 1)

:  :endfor
:call garbagecollect(1)
:/^start:/,$wq! test.out
ENDTEST

start:axaaxあああbxbb11133322133
1111
:"
:" Test for customlist completion
:function! CustomComplete1(lead, line, pos)

:  :^Ireturn ['あ', 'い']

:  :endfunction
:call garbagecollect(1)
:/^start:/,$wq! test.out
:command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
:call feedkeys(":Test1 \<C-L>'\<C-B>$put='\<CR>", 'it')
:Test1 ...'
:$Test1 '
:$pTest1 '
:$puTest1 '
:$putTest1 '
:$put=Test1 ''Test1 '

Test1
:"
:function! CustomComplete2(lead, line, pos)

:  :^Ireturn ['あたし', 'あたま', 'あたりめ']

:  :endfunction
:/^start:/,$wq! test.out
ENDTEST
:command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
:call feedkeys(":Test2 \<C-L>'\<C-B>$put='\<CR>", 'it')
:Test2 ...あた'
:$Test2 あた'
:$pTest2 あた'
:$puTest2 あた'
:$putTest2 あた'
:$put=Test2 あた''Test2 あた'

Test2 あた
:"
:function! CustomComplete3(lead, line, pos)

:  :^Ireturn ['Nこ', 'Nん', 'Nぶ']

:  :endfunction
ENDTEST
:command -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')
:Test3 ...N'
:$Test3 N'
:$pTest3 N'
:$puTest3 N'
:$putTest3 N'
:$put=Test3 N''Test3 N'

Test3 N
:"
:call garbagecollect(1)
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 22 lines, 86 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_utf8 = test61; then \
#	  if diff test.out test_utf8.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_utf8.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_utf8.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_wordcount.failed test.ok test.out X* viminfo
cp test_wordcount.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_wordcount.in
[?1h="test_wordcount.in" 126 lines, 2815 charactersTest for wordcount() function

STARTTEST
:so small.vim
:so mbyte.vim
:set enc=utf8
:set selection=inclusive fileformat=unix fileformats=unix
:new
:fu DoRecordWin(...)
:wincmd k
:if exists("a:1")
:call cursor(a:1)
:endif
:let result=[]
:call add(result, g:test)
:call add(result, getline(1, '$'))
:call add(result, wordcount())
:wincmd j
:return result
:endfu
:fu PutInWindow(args)
:wincmd k
:%d _:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for wordcount() function/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 121 lines, 2753 characters written:set ff& cpo+=A
/ENDTEST:0
v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])
:let log[2]=g:visual_stat
:call Log()
:"
:let g:test="Test 11: visual mode, single line"
:wincmd k
:set ls=2 stl=%{STL()}
:" start visual mode quickly and select complete buffer
:2
0v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])
:let log[2]=g:visual_stat
:call Log()
:"
:/^RESULT test/,$w! test.out
:qa!
ENDTEST
RESULT test:

:so! Xdotest
:so small.vim
:so mbyte.vim
:set enc=utf8
:0
v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])
:let log[2]=g:visual_stat
:call Log()
:"
:let g:test="Test 11: visual mode, single line"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
:wincmd k
:set ls=2 stl=%{STL()}
:" start visual mode quickly and select complete buffer
:2
0v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])
:let log[2]=g:visual_stat
:call Log()
:"
:/^RESULT test/,$w! test.out
:qa!
ENDTEST
RESULT test:

:set selection=inclusive fileformat=unix fileformats=unix
:new
~~~~~~~~~~
[No Name]                                                                       0v$y
:set stl= ls=1
:let log=DoRecordWin([3,99,0])[2]=g:visual_statcall Log()"/^RESULT test/,$w! test.out
:qa!ENDTEST
RESULT test:
test_wordcount.in                                                               :fu DoRecordWin(...)

:  :^Iwincmd k

:  :       if exists("a:1")

:    :           call cursor(a:1)

:    :       endif

:  :       let result=[]

:  :       call add(result, g:test)

:  :       call add(result, getline(1, '$'))

:  :       call add(result, wordcount())

:  :^Iwincmd j

:  :       return result

:  :endfu
~
~
~
~
~
~
~
~
~
~:fu PutInWindow(args)

:  :       wincmd k

:  :       %d _

:  :       call append(1, a:args)

:  :^Iwincmd j

:  :endfu
~
~
~
~:fu Log()

:  :   $put ='----'

:  :   $put =remove(g:log,0)

:  :   $put =string(g:log)

:  :endfu
~
~
~:fu! STL()

:  :    if mode() =~? 'V'

:    :       let g:visual_stat=wordcount()

:    :    endif

:  :    return string(wordcount())

:  :endfu
~
~
~
~:let g:test="Test 1: empty window"
:let log=DoRecordWin()
[No Name]                                                                       test_wordcount.in                                                               :call Log()




----
Test 1: empty window
[[''], {'chars': 0, 'cursor_chars': 0, 'words': 0, 'cursor_words': 0, 'bytes': 00, 'cursor_bytes': 0}][+]


:"
:let g:test="Test 2: some words, cursor at start"
:call PutInWindow('one two three')
one two three[+]:let log=DoRecordWin([1,1,0])
:call Log()




----
Test 2: some words, cursor at start
[['', 'one two three'], {'chars': 15, 'cursor_chars': 1, 'words': 3, 'cursor_worrds': 0, 'bytes': 15, 'cursor_bytes': 1}]


:"
:let g:test="Test 3: some words, cursor at end"
:call PutInWindow('one two three')
--No lines in buffer--:let log=DoRecordWin([2,99,0])
:call Log()




----
Test 3: some words, cursor at end
[['', 'one two three'], {'chars': 15, 'cursor_chars': 14, 'words': 3, 'cursor_woords': 3, 'bytes': 15, 'cursor_bytes': 14}]


:"
:let g:test="Test 4: some words, cursor at end, ve=all"
:set ve=all
:call PutInWindow('one two three')
--No lines in buffer--:let log=DoRecordWin([2,99,0])
:call Log()




----
Test 4: some words, cursor at end, ve=all
[['', 'one two three'], {'chars': 15, 'cursor_chars': 15, 'words': 3, 'cursor_woords': 3, 'bytes': 15, 'cursor_bytes': 15}]


:set ve=
:"
:let g:test="Test 5: several lines with words"
:call PutInWindow(['one two three', 'one two three', 'one two three'])
one two three
one two three--No lines in buffer--:let log=DoRecordWin([4,99,0])
:call Log()




----
Test 5: several lines with words
[['', 'one two three', 'one two three', 'one two three'], {'chars': 43, 'cursor__chars': 42, 'words': 9, 'cursor_words': 9, 'bytes': 43, 'cursor_bytes': 42}]


:"
:let g:test="Test 6: one line with BOM set"
:call PutInWindow('one two three')
~~--No lines in buffer--:wincmd k
[No Name] [+]                                                                   test_wordcount.in [+]                                                           :set bomb
:w! Xtest
"Xtest" [New File] 2 lines, 18 characters writtenXtest        :wincmd j
Xtest                                                                           test_wordcount.in [+]                                                           :let log=DoRecordWin([2,99,0])
:call Log()




----
Test 6: one line with BOM set
[['', 'one two three'], {'chars': 15, 'cursor_chars': 14, 'words': 3, 'cursor_woords': 3, 'bytes': 18, 'cursor_bytes': 14}]


:wincmd k
Xtest                                                                           test_wordcount.in [+]                                                           :set nobomb
[+]:w!
"Xtest" 2 lines, 15 characters written   :wincmd j
Xtest                                                                           test_wordcount.in [+]                                                           :"
:let g:test="Test 7: one line with multibyte words"
:call PutInWindow(['Äne M¤ne Müh'])
Äne M¤ne Müh[+]--No lines in buffer--:let log=DoRecordWin([2,99,0])
:call Log()




----
Test 7: one line with multibyte words
[['', 'Äne M¤ne Müh'], {'chars': 14, 'cursor_chars': 13, 'words': 3, 'cursor_worrds': 3, 'bytes': 17, 'cursor_bytes': 16}]


:"
:let g:test="Test 8: several lines with multibyte words"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
und raus bist dü!--No lines in buffer--:let log=DoRecordWin([3,99,0])
:call Log()




----
Test 8: several lines with multibyte words
[['', 'Äne M¤ne Müh', 'und raus bist dü!'], {'chars': 32, 'cursor_chars': 31, 'wwords': 7, 'cursor_words': 7, 'bytes': 36, 'cursor_bytes': 35}]


:"
:let g:test="Test 9: visual mode, complete buffer"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
--No lines in buffer--:wincmd k
Xtest [+]                                                                       test_wordcount.in [+]                                                           :set ls=2 stl=%{STL()}
<ursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor_bytes': 1}<: 3985, 'words': 579, 'cursor_words': 560, 'bytes': 4153, 'cursor_bytes': 4007}:" start visual mode quickly and select complete buffer
:0
ords': 7, 'bytes': 36, 'visual_chars': 1, 'visual_words': 0, 'visual 
Äne M¤ne Müh 
und raus bist dü! ds': 7, 'bytes': 36, 'visual_chars': 32, 'visual_words': 7, 'visual_bytes': 36Äne M¤ne Mühnd raus bist dü!3 lines yankedursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor_bytes': 1213:set stl= ls=1
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log=DoRecordWin([3,99,0])
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log[2]=g:visual_stat
:call Log()




----
Test 9: visual mode, complete buffer
[['', 'Äne M¤ne Müh', 'und raus bist dü!'], {'chars': 32, 'words': 7, 'bytes': 336, 'visual_chars': 32, 'visual_words': 7, 'visual_bytes': 36}]


:"
:let g:test="Test 10: visual mode (empty)"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
--No lines in buffer--:wincmd k
Xtest [+]                                                                       test_wordcount.in [+]                                                           :set ls=2 stl=%{STL()}
<ursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor_bytes': 1}<: 4170, 'words': 606, 'cursor_words': 587, 'bytes': 4342, 'cursor_bytes': 4196}:" start visual mode quickly and select complete buffer
:0
ords': 7, 'bytes': 36, 'visual_chars': 1, 'visual_words': 0, 'visualursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor213:set stl= ls=1
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log=DoRecordWin([3,99,0])
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log[2]=g:visual_stat
:call Log()




----
Test 10: visual mode (empty)
[['', 'Äne M¤ne Müh', 'und raus bist dü!'], {'chars': 32, 'words': 7, 'bytes': 336, 'visual_chars': 1, 'visual_words': 0, 'visual_bytes': 1}]


:"
:let g:test="Test 11: visual mode, single line"
:call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!'])
--No lines in buffer--:wincmd k
Xtest [+]                                                                       test_wordcount.in [+]                                                           :set ls=2 stl=%{STL()}
<ursor_chars': 1, 'words': 7, 'cursor_words': 0, 'bytes': 36, 'cursor_bytes': 1}<: 4347, 'words': 632, 'cursor_words': 613, 'bytes': 4521, 'cursor_bytes': 4377}:" start visual mode quickly and select complete buffer
:2
213ords': 7, 'bytes': 36, 'visual_chars': 1, 'visual_words': 1, 'visual2Äne M¤ne Mühds': 7, 'bytes': 36, 'visual_chars': 13, 'visual_words': 3, 'visual_bytes': 16
Äne M¤ne Mühursor_chars': 2, 'words': 7, 'cursor_words': 1, 'bytes': 36, 'cursor_bytes': 3sor_chars': 15, 'words': 7, 'cursor_words': 4, 'bytes': 36, 'cursor_bytes': 18:set stl= ls=1
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log=DoRecordWin([3,99,0])
Xtest [+]                                                                       test_wordcount.in [+]                                                           :let log[2]=g:visual_stat
:call Log()




----
Test 11: visual mode, single line
[['', 'Äne M¤ne Müh', 'und raus bist dü!'], {'chars': 32, 'words': 7, 'bytes': 336, 'visual_chars': 13, 'visual_words': 3, 'visual_bytes': 16}]


:"
:/^RESULT test/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 34 lines, 1905 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_wordcount = test61; then \
#	  if diff test.out test_wordcount.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_wordcount.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_wordcount.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test11.failed test.ok test.out X* viminfo
cp test11.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test11.in
[?1h="test11.in" 84 lines, 3366 charactersTests for autocommands:
- FileWritePrewriting a compressed file
- FileReadPostreading a compressed file
- BufNewFilereading a file template
- BufReadPredecompressing the file to be read
- FilterReadPresubstituting characters in the temp file
- FilterReadPostsubstituting characters after filtering
- FileReadPreset options for decompression
- FileReadPostdecompress the file

Note: This test is skipped if "gzip" is not available.
$GZIP is made empty, "-v" would cause trouble.
Use a FileChangedShell autocommand to avoid a prompt for "Xtestfile.gz" being
modified outside of Vim (noticed on Solaris).

STARTTEST
:so small.vim
:" drop out when there is no gzip program
:if !executable("gzip")
: e! test.ok
: w! test.out
: qa!
:endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for autocommands:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 48 lines, 2298 characters written:set ff& cpo+=A
/ENDTEST:au! FileReadPre    *.gz   exe 'silent !gzip -d ' . shellescape(expand("<afile>""))
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/
:$r Xtestfile.gz" Read compressed file
:w" write it, after filtering
:au!" remove all autocommands
:e" Edit test.out again
:set nobin ff&   " use the default fileformat for writing
:w
:qa!
ENDTEST

startstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 4  Abcdefghijklmnopqrstuvwxyz
line 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 6  Abcdefghijklmnopqrstuvwxyz
line 7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 8  Abcdefghijklmnopqrstuvwxyz
line 9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
:so! Xdotest
:so small.vim
:" drop out when there is no gzip program
:if !executable("gzip")

:  : e! test.ok

:  : w! test.out

:  : qa!

:  :endif
:au! FileReadPre    *.gz   exe 'silent !gzip -d ' . shellescape(expand("<afile>""))
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/:let $GZIP = ""
:au FileChangedShell * echo "caught FileChangedShell"
:set bin
:au FileWritePre    *.gz   '[,']!gzip
:au FileWritePost   *.gz   undo
:/^start of testfile/,/^end of testfile/w! Xtestfile.gz
11 lines filtered
"Xtestfile.gz" [New File][Incomplete last line] 1 line, 111 characters written

10 more lines; before #1  0 seconds ago

Press ENTER or type command to continue:au FileReadPost    *.gz   '[,']!gzip -d
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/
:$r Xtestfile.gz" Read compressed file
:w                           " write it, after filtering
:au!             " remove all autocommandse" Edit test.out againset nobin ff&   " use the default fileformat for writing
:wqa!ENDTESTstartstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx45678910
end of testfile
:$r Xtestfile.gz                " Read and decompress the testfile
"Xtestfile.gz" [Incomplete last line] 1 line, 111 characters







start of test.c
/*
 * Here is a new .c file
 */
end of test.c
start of testfile
:?startstart?,$w! test.out      " Write contents of this file
"test.out" [New File] 29 lines, 788 characters written:au BufNewFile      *.c    read Xtest.c
:/^start of test.c/+1,/^end of test.c/-1w! Xtest.c
search hit BOTTOM, continuing at TOP"Xtest.c" [New File] 3 lines, 32 characters written:e! foo.c                       " Will load Xtest.c
"foo.c" [New File]
"Xtest.c" 3 lines, 32 characters

Press ENTER or type command to continue:au FileAppendPre   *.out  '[,']s/new/NEW/
/*
 * Here is a new .c file
 */~~~~~~~~~~~~
~~~~~~~:au FileAppendPost  *.out  !cat Xtest.c >>test.out
:w>>test.out                    " Append it to the output file
"test.out" 4 lines, 33 characters appended

:!cat Xtest.c >>test.out


Press ENTER or type command to continue:au! FileAppendPre
/*
 * Here is a NEW .c file
 */
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:" setup autocommands to decompress before reading and re-compress afterwards
:au BufReadPre      *.gz   exe '!gzip -d ' . shellescape(expand("<afile>"))
:au BufReadPre      *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au BufReadPost     *.gz   call rename(expand("<afile>"), expand("<afile>:r"))
:au BufReadPost     *.gz   exe '!gzip ' . shellescape(expand("<afile>:r"))
:e! Xtestfile.gz                " Edit compressed file
:!gzip -d 'Xtestfile.gz'

"Xtestfile.gz""Xtestfile.gz" 11 lines, 357 characters:!gzip 'Xtestfile'

caught FileChangedShell

Press ENTER or type command to continue:w>>test.out                    " Append it to the output file
"test.out" 11 lines, 357 characters appended

:!cat Xtest.c >>test.out


Press ENTER or type command to continue:set shelltemp                  " need temp files here
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 4  Abcdefghijklmnopqrstuvwxyz
line 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 6  Abcdefghijklmnopqrstuvwxyz
line 7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 8  Abcdefghijklmnopqrstuvwxyz
line 9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 10 Abcdefghijklmnopqrstuvwxyz
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~:au FilterReadPre   *.out  call rename(expand("<afile>"), expand("<afile>") . "

.t")
start of testfile:au FilterReadPre   *.out  exe 'silent !sed s/e/E/ ' . shellescape(expand("<afi

le>")) . ".t >" . shellescape(expand("<afile>"))
start of testfile:au FilterReadPre   *.out  exe 'silent !rm ' . shellescape(expand("<afile>")) .

'.t'
start of testfile:au FilterReadPost  *.out  '[,']s/x/X/g
:e! test.out                    " Edit the output file
"test.out" 50 lines, 1242 charactersstarstart of testfile2  Abcdefghijklmnopqrstuvwxyz3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4  Abcdefghijklmnopqrstuvwxyz5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx6  Abcdefghijklmnopqrstuvwxyz7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8  Abcdefghijklmnopqrstuvwxyz9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 10 Abcdefghijklmnopqrstuvwxyz
end of testfilestart of test.c
/*
 * Here is a new .c file
 */
end of test.c
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 4  Abcdefghijklmnopqrstuvwxyz
line 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:23,$!cat
218 substitutions on 15 lines

28 lines filtered

Press ENTER or type command to continue:23,$s/\r$//                 " remove CR for when sed adds them
E486: Pattern not found: \r$
Press ENTER or type command to continue:au! FileReadPre    *.gz   exe 'silent !gzip -d ' . shellescape(expand("<afile>

"))
startstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE 5  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/
:$r Xtestfile.gz             " Read compressed file
"Xtestfile.gz" 11 lines, 357 characters

11 substitutions on 11 lines

Press ENTER or type command to continue:w                           " write it, after filtering
"test.out"61 lines, 1599 characters written

Press ENTER or type command to continue:au!             " remove all autocommands
E216: No such group or event: " remove all autocommands

Press ENTER or type command to continue:e               " Edit test.out again
"test.out"61 lines, 1599 charactersstartstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"test.out" 61 lines, 1599 characters:set nobin ff&   " use the default fileformat for writing
:w
"test.out" 61 lines, 1599 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test11 = test61; then \
#	  if diff test.out test11.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test11.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test11.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test52.failed test.ok test.out X* viminfo
cp test52.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test52.in
[?1h="test52.in" 65 lines, 1645 charactersTests for reading and writing files with conversion for Win32.

STARTTEST
:so mbyte.vim
:" make this a dummy test for non-Win32 systems
:if !has("win32") | e! test.ok | wq! test.out | endif
:"
:" write tests:
:" combine three values for 'encoding' with three values for 'fileencoding'
:" also write files for read tests
/^1
:set encoding=utf-8
:.w! ++enc=utf-8 test.out
:.w ++enc=cp1251 >>test.out
:.w ++enc=cp866 >>test.out
:.w! ++enc=utf-8 Xutf8
/^2
:set encoding=cp1251
:.w ++enc=utf-8 >>test.out
:.w ++enc=cp1251 >>test.out
:.w ++enc=cp866 >>test.out
:.w! ++enc=cp1251 Xcp1251
/^3:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for reading and writing files with conversion for Win32./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 57 lines, 1333 characters written:set ff& cpo+=A
/ENDTEST:e Xcp1251
:.w ++enc=cp1251 >>test.out
:set fencs=utf-8,cp866
:e Xcp866
:.w ++enc=cp1251 >>test.out
:"
:" read three 'fileencoding's with cp866 'encoding'
:set encoding=cp866 fencs=utf-8,cp1251
:e Xutf8
:.w ++enc=cp866 >>test.out
:e Xcp1251
:.w ++enc=cp866 >>test.out
:set fencs=utf-8,cp866
:e Xcp866
:.w ++enc=cp866 >>test.out
:"
:qa!
ENDTEST

:so! Xdotest
:so mbyte.vim
:" make this a dummy test for non-Win32 systems
:if !has("win32") | e! test.ok | wq! test.out | endif
"test.ok" 18 lines, 1374 characters

"test.out" [New File] 18 lines, 1374 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test52 = test61; then \
#	  if diff test.out test52.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test52.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test52.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test85.failed test.ok test.out X* viminfo
cp test85.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test85.in
[?1h="test85.in" 85 lines, 1868 charactersTest 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):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for Lua interface and luaeval() function/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 77 lines, 1775 characters written:set ff& cpo+=A
/ENDTEST:lua d = vim.eval("d")
:lua d[0] = 123
:lua d[1] = "abc"
:lua d[2] = vim.eval("[1, 2, 3]")
:lua d[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
:lua d[4] = d[0]
:lua d[5] = d[1]
:lua d[6] = d[2]
:lua d[7] = d[3]
:lua d[3] = nil
:lua d[2] = nil
:lua d[1] = nil
:lua d[0] = nil
:lua d = nil
:$put =string(d)

:?^1?,$w! test.out
:qa!
ENDTEST

1 line 1
2 line 2
3 line 3
:so! Xdotest
: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"
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
:lua d = vim.eval("d")
:lua d[0] = 123
:lua d[1] = "abc"
:lua d[2] = vim.eval("[1, 2, 3]")


:call append(search("^1"), "scalar test " . scalar_res)
scalar test OK
2 line 2:" dictionary containing a list
:let tmp = luaeval("h").list[1]
:/^2/put =tmp

dictionary with list OK
:" 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
:lua d[0] = 123
:lua d[1] = "abc"
:lua d[2] = vim.eval("[1, 2, 3]")
:lua d[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
:call setline(search("^3"), "circular test " . res)

circular test OK
:let l = []
:lua l = vim.eval("l")
:lua l:add(123)
:lua l:add("abc")
:lua l:add(vim.eval("[1, 2, 3]"))
:lua l:add(vim.eval("{'a':1, 'b':2, 'c':3}"))
:lua l:insert(123)
:lua l:insert("abc")
:lua l:insert(vim.eval("[1, 2, 3]"))
:lua l:insert(vim.eval("{'a':1, 'b':2, 'c':3}"))
:lua l[0] = l[0]
:lua l[1] = l[1]
:lua l[2] = l[2]
:lua l[3] = l[3]
:lua l[0] = 123
:lua l[1] = "abc"
:lua l[2] = vim.eval("[1, 2, 3]")
:lua l[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
:lua l[3] = nil
:lua l[2] = nil
:lua l[1] = nil
:lua l[0] = nil
:lua l = nil
:$put =string(l)

[123.0, 'abc', [1, 2, 3], {'a': 1, 'b': 2, 'c': 3}]
:let d = {}
:lua d = vim.eval("d")
:lua d[0] = 123
:lua d[1] = "abc"
:lua d[2] = vim.eval("[1, 2, 3]")
:lua d[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
:lua d[4] = d[0]
:lua d[5] = d[1]
:lua d[6] = d[2]
:lua d[7] = d[3]
:lua d[3] = nil
:lua d[2] = nil
:lua d[1] = nil
:lua d[0] = nil
:lua d = nil
:$put =string(d)

{'4': 123.0, '5': 'abc', '6': [1, 2, 3], '7': {'a': 1, 'b': 2, 'c': 3}}
:?^1?,$w! test.out
"test.out" [New] 7L, 206C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test85 = test61; then \
#	  if diff test.out test85.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test85.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test85.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test86.failed test.ok test.out X* viminfo
cp test86.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test86.in
[?1h="test86.in" 1711 lines, 48481 charactersTests for various python features.     vim: set ft=vim :

NOTE: This will cause errors when run under valgrind.
This would require recompiling Python with:
  ./configure --without-pymalloc
See http://svn.python.org/view/python/trunk/Misc/README.valgrind?view=markup

STARTTEST
:so small.vim
:set encoding=latin1
:set noswapfile
:if !has('python') | e! test.ok | wq! test.out | endif
:lang C
:fun Test()
:py import vim
:py cb = vim.current.buffer
: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]):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for various python features.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1700 lines, 48188 characters written:set ff& cpo+=A
/ENDTEST:   endif
:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:" vim: et ts=4 isk-=\:
:while getchar(0) isnot 0|endwhile
ENDTEST

start:


:so! Xdotest
:so small.vim
:set encoding=latin1
:   endif
:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:" vim: et ts=4 isk-=\:
:while getchar(0) isnot 0|endwhile
ENDTEST

start:

:set noswapfile
:if !has('python') | e! test.ok | wq! test.out | endif
"test.ok" 1445 lines, 67439 characters

"test.out" [New File] 1445 lines, 67439 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test86 = test61; then \
#	  if diff test.out test86.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test86.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test86.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test87.failed test.ok test.out X* viminfo
cp test87.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test87.in
[?1h="test87.in" 1707 lines, 49069 charactersTests for various python features.     vim: set ft=vim :

STARTTEST
:so small.vim
:set noswapfile
:if !has('python3') | e! test.ok | wq! test.out | endif
:lang C
:fun Test()
:py3 import vim
:py3 cb = vim.current.buffer
: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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for various python features.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 1701 lines, 48985 characters written:set ff& cpo+=A
/ENDTEST:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:/^start:/,$w! test.out
:" vim: et ts=4 isk-=\:
:while getchar(0) isnot 0|endwhile
ENDTEST

start:


:so! Xdotest
:so small.vim
:set noswapfile
:if !has('python3') | e! test.ok | wq! test.out | endif
:lang C
:fun Test()

:  :py3 import vim

:  :py3 cb = vim.current.buffer

:  :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 = {}

:  :fun d.f()

:    :  return 1

:    :endfun

:    py3 << EOF

:    d=vim.bindeval('d')

:    d['1']='asd'

:    d.update()  # Must not do anything, including throwing errors

:    d.update(b=[1, 2, f])

:    d.update((('-1', {'a': 1}),))

:    d.update({'0': -1})

:    dk = d.keys()

:    dv = d.values()

:    di = d.items()

:    dk.sort(key=repr)

:    dv.sort(key=repr)

:    di.sort(key=repr)

:    EOF

:    :$put =py3eval('d[''f''](self={})')

:    :$put =py3eval('repr(dk)')

:    :$put =substitute(py3eval('repr(dv)'),'0x\x\+','','g')

:    :$put =substitute(py3eval('repr(di)'),'0x\x\+','','g')

:    :for [key, Val] in sort(items(d))

:      :  $put =string(key) . ' : ' . string(Val)

:      :  unlet key Val

:      :endfor

:    :py3 del dk

:    :py3 del di

:    :py3 del dv

:    :"

:    :" 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']

:    :py3 del d['f']

:    :$put =string(py3eval('d.get(''b'', 1)'))

:    :$put =string(py3eval('d.pop(''b'')'))

:    :$put =string(py3eval('d.get(''b'', 1)'))

:    :$put =string(py3eval('d.pop(''1'', 2)'))

:    :$put =string(py3eval('d.pop(''1'', 2)'))

:    :$put =py3eval('repr(d.has_key(''0''))')

:    :$put =py3eval('repr(d.has_key(''1''))')

:    :$put =py3eval('repr(''0'' in d)')

:    :$put =py3eval('repr(''1'' in d)')

:    :$put =py3eval('repr(list(iter(d)))')

:    :$put =string(d)

:    :$put =py3eval('repr(d.popitem())')

:    :$put =py3eval('repr(d.get(''0''))')

:    :$put =py3eval('repr(list(iter(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)

:    :let l = [0, 1, 2, 3]

:    :py3 l=vim.bindeval('l')

:    :py3 del l[::2]

:    :$put =string(l)

:    :let l = [0, 1, 2, 3]

:    :py3 l=vim.bindeval('l')

:    :py3 del l[3:0:-2]

:    :$put =string(l)

:    :let l = [0, 1, 2, 3]

:    :py3 l=vim.bindeval('l')

:    :py3 del l[2:4:-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)

:    :let l = range(8)

:    :py3 l=vim.bindeval('l')

:    :py3 l[2:6:2] = [10, 20]

:    :$put =string(l)

:    :let l = range(8)

:    :py3 l=vim.bindeval('l')

:    :py3 l[6:2:-2] = [10, 20]

:    :$put =string(l)

:    :let l = range(8)

:    :py3 l=vim.bindeval('l')

:    :py3 l[6:2] = ()

:    :$put =string(l)

:    :let l = range(8)

:    :py3 l=vim.bindeval('l')

:    :py3 l[6:2:1] = ()

:    :$put =string(l)

:    :let l = range(8)

:    :py3 l=vim.bindeval('l')

:    :py3 l[2:2:1] = ()

:    :$put =string(l)

:    :"

:    :" Locked variables

:    :let l = [0, 1, 2, 3]

:    :py3 l=vim.bindeval('l')

:    :lockvar! l

:    py3 << EOF

:    def emsg(ei):

:        return ei[0].__name__ + ':' + repr(ei[1].args)

:    

:    try:

:        l[2]='i'

:    except vim.error:

:        cb.append('l[2] threw vim.error: ' + emsg(sys.exc_info()))

:    EOF

:    :$put =string(l)

:    :unlockvar! l

:    :"

:    :" Function calls

:    py3 << EOF

:    import sys

:    import re

:    

:    py33_type_error_pattern = re.compile('^__call__\(\) takes (\d+) positional

argument but (\d+) were given$')

:    

:    def ee(expr, g=globals(), l=locals()):

:        cb = vim.current.buffer

:        try:

:            try:

:                exec(expr, g, l)

:            except Exception as e:

:                if sys.version_info >= (3, 3) and e.__class__ is AttributeErro

r and str(e).find('has no attribute')>=0 and not str(e).startswith("'vim."):

:                    cb.append(expr + ':' + repr((e.__class__, AttributeError(s

tr(e)[str(e).rfind(" '") + 2:-1]))))

:                elif sys.version_info >= (3, 3) and e.__class__ is ImportError

and str(e).find('No module named \'') >= 0:

:                    cb.append(expr + ':' + repr((e.__class__, ImportError(str(

e).replace("'", '')))))

:                elif sys.version_info >= (3, 3) and e.__class__ is TypeError:

:                    m = py33_type_error_pattern.search(str(e))

:                    if m:

:                        msg = '__call__() takes exactly {0} positional argumen

t ({1} given)'.format(m.group(1), m.group(2))

:                        cb.append(expr + ':' + repr((e.__class__, TypeError(ms

g))))

:                    else:

:                        cb.append(expr + ':' + repr((e.__class__, e)))

:                elif sys.version_info >= (3, 5) and e.__class__ is ValueError 

and str(e) == 'embedded null byte':

:                    cb.append(expr + ':' + repr((TypeError, TypeError('expecte

d bytes with no null'))))

:                else:

:                    msg = repr((e.__class__, e))

:                    # Some Python versions say can't, others cannot.

:                    if msg.find('can\'t') > -1:

:                        msg = msg.replace('can\'t', 'cannot')

:                    # Some Python versions use single quote, some double quote

:                    if msg.find('"cannot ') > -1:

:                        msg = msg.replace('"cannot ', '\'cannot ')

:                    if msg.find(' attributes"') > -1:

:                        msg = msg.replace(' attributes"', ' attributes\'')

:                    cb.append(expr + ':' + msg)

:            else:

:                cb.append(expr + ':NOT FAILED')

:        except Exception as e:

:            cb.append(expr + '::' + repr((e.__class__, e)))

:    EOF

:    :fun New(...)

:      :   return ['NewStart']+a:000+['NewEnd']

:      :endfun

:      :fun DictNew(...) dict

::   return ['DictNewStart']+a:000+['DictNewEnd', self]

::endfun

::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)

::py3 ee('l[1](1, 2, 3)')

::py3 f=l[0]

::delfunction New

::py3 ee('f(1, 2, 3)')

::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

::let messages=[]

::delfunction DictNew

:py3 <<EOF

:import sys

:d=vim.bindeval('{}')

:m=vim.bindeval('messages')

:def em(expr, g=globals(), l=locals()):

:    try:

:        exec(expr, g, l)

:    except Exception as e:

:        if sys.version_info >= (3, 5) and e.__class__ is ValueError an

d str(e) == 'embedded null byte':

:            m.extend([TypeError.__name__])

:        else:

:            m.extend([e.__class__.__name__])

:

:em('d["abc1"]')

:em('d["abc1"]="\\0"')

:em('d["abc1"]=vim')

:em('d[""]=1')

:em('d["a\\0b"]=1')

:em('d[b"a\\0b"]=1')

:

:em('d.pop("abc1")')

:em('d.popitem()')

:del em

:del m

:EOF

::$put =messages

::unlet messages

::" locked and scope attributes

::let d={} | let dl={} | lockvar dl

::for s in split("d dl v: g:")

::    let name=tr(s, ':', 's')

::    execute 'py3 '.name.'=vim.bindeval("'.s.'")'

::    let toput=s.' : '.join(map(['locked', 'scope'], 'v:val.":".py3e

val(name.".".v:val)'), ';')

::    $put =toput

::endfor

::silent! let d.abc2=1

::silent! let dl.abc3=1

::py3 d.locked=True

::py3 dl.locked=False

::silent! let d.def=1

::silent! let dl.def=1

::put ='d:'.string(d)

::put ='dl:'.string(dl)

::unlet d dl

::

::let l=[] | let ll=[] | lockvar ll

::for s in split("l ll")

::    let name=tr(s, ':', 's')

::    execute 'py3 '.name.'=vim.bindeval("'.s.'")'

::    let toput=s.' : locked:'.py3eval(name.'.locked')

::    $put =toput

::endfor

::silent! call extend(l, [0])

::silent! call extend(ll, [0])

::py3 l.locked=True

::py3 ll.locked=False

::silent! call extend(l, [1])

::silent! call extend(ll, [1])

::put ='l:'.string(l)

::put ='ll:'.string(ll)

::unlet l ll

::"

::" py3eval()

::let l=py3eval('[0, 1, 2]')

::$put =string(l)

::let d=py3eval('{"a": "b", "c": 1, "d": ["e"]}')

::$put =sort(items(d))

::let v:errmsg = ''

::$put ='py3eval(\"None\") = ' . py3eval('None') . v:errmsg

::if has('float')

::   let f=py3eval('0.0')

::   $put =string(f)

::else

::   $put ='0.0'

::endif

::" Invalid values:

::for e in ['"\0"', '{"\0": 1}', 'undefined_name', 'vim']

::   try

::      let v=py3eval(e)

::   catch

::      let toput=e.":\t".v:exception[:13]

::      $put =toput

::   endtry

::endfor

::"

::" threading

::let l = [0]

::py3 l=vim.bindeval('l')

:py3 <<EOF

:import threading

:import time

:

:class T(threading.Thread):

:    def __init__(self):

:        threading.Thread.__init__(self)

:        self.t = 0

:        self.running = True

:

:    def run(self):

:        while self.running:

:            self.t += 1

:            time.sleep(0.1)

:

:t = T()

:del T

:t.start()

:EOF

::sleep 1

::py3 t.running = False

::py3 t.join()

::" Check if the background thread is working.  Count should be 10, but

on a

::" busy system (AppVeyor) it can be much lower.

::py3 l[0] = t.t > 4

::py3 del time

::py3 del threading

::py3 del t

::$put =string(l)

::"

::" settrace

::let l = []

::py3 l=vim.bindeval('l')

:py3 <<EOF

:import sys

:

:def traceit(frame, event, arg):

:    global l

:    if event == "line":

:        l += [frame.f_lineno]

:    return traceit

:

:def trace_main():

:    for i in range(5):

:        pass

:EOF

::py3 sys.settrace(traceit)

::py3 trace_main()

::py3 sys.settrace(None)

::py3 del traceit

::py3 del trace_main

::$put =string(l)

::"

::" Slice

::py3 ll = vim.bindeval('[0, 1, 2, 3, 4, 5]')

::py3 l = ll[:4]

::$put =string(py3eval('l'))

::py3 l = ll[2:]

::$put =string(py3eval('l'))

::py3 l = ll[:-4]

::$put =string(py3eval('l'))

::py3 l = ll[-2:]

::$put =string(py3eval('l'))

::py3 l = ll[2:4]

::$put =string(py3eval('l'))

::py3 l = ll[4:2]

::$put =string(py3eval('l'))

::py3 l = ll[-4:-2]

::$put =string(py3eval('l'))

::py3 l = ll[-2:-4]

::$put =string(py3eval('l'))

::py3 l = ll[:]

::$put =string(py3eval('l'))

::py3 l = ll[0:6]

::$put =string(py3eval('l'))

::py3 l = ll[-10:10]

::$put =string(py3eval('l'))

::py3 l = ll[4:2:-1]

::$put =string(py3eval('l'))

::py3 l = ll[::2]

::$put =string(py3eval('l'))

::py3 l = ll[4:2:1]

::$put =string(py3eval('l'))

::py3 del l

::"

::" Vars

::let g:foo = 'bac'

::let w:abc3 = 'def'

::let b:baz = 'bar'

::let t:bar = 'jkl'

::try

::  throw "Abc"

::catch

::  put =py3eval('vim.vvars[''exception'']')

::endtry

::put =py3eval('vim.vars[''foo'']')

::put =py3eval('vim.current.window.vars[''abc3'']')

::put =py3eval('vim.current.buffer.vars[''baz'']')

::put =py3eval('vim.current.tabpage.vars[''bar'']')

::"

::" Options

::" paste:          boolean, global

::" previewheight   number,  global

::" operatorfunc:   string,  global

::" number:         boolean, window-local

::" numberwidth:    number,  window-local

::" colorcolumn:    string,  window-local

::" statusline:     string,  window-local/global

::" autoindent:     boolean, buffer-local

::" shiftwidth:     number,  buffer-local

::" omnifunc:       string,  buffer-local

::" preserveindent: boolean, buffer-local/global

::" path:           string,  buffer-local/global

::let g:bufs=[bufnr('%')]

::new

::let g:bufs+=[bufnr('%')]

::vnew

::let g:bufs+=[bufnr('%')]

::wincmd j

::vnew

::let g:bufs+=[bufnr('%')]

::wincmd l

::fun RecVars(opt)

::  let gval =string(eval('&g:'.a:opt))

::  let wvals=join(map(range(1, 4),  'v:val.":".string(getwinvar(v:va

l, "&".a:opt))'))

::  let bvals=join(map(copy(g:bufs), 'v:val.":".string(getbufvar(v:va

l, "&".a:opt))'))

::  put ='  G: '.gval

::  put ='  W: '.wvals

::  put ='  B: '.wvals

::endfun

:py3 << EOF

:def e(s, g=globals(), l=locals()):

:    try:

:        exec(s, g, l)

:    except Exception as e:

:        vim.command('return ' + repr(e.__class__.__name__))

:

:def ev(s, g=globals(), l=locals()):

:    try:

:        return eval(s, g, l)

:    except Exception as e:

:        vim.command('let exc=' + repr(e.__class__.__name__))

:        return 0

:EOF

::fun E(s)

::   python3 e(vim.eval('a:s'))

::endfun

::fun Ev(s)

::   let r=py3eval('ev(vim.eval("a:s"))')

::   if exists('exc')

::       throw exc

::   endif

::   return r

::endfun

::py3 gopts1=vim.options

::py3 wopts1=vim.windows[2].options

::py3 wopts2=vim.windows[0].options

::py3 wopts3=vim.windows[1].options

::py3 bopts1=vim.buffers[vim.bindeval("g:bufs")[2]].options

::py3 bopts2=vim.buffers[vim.bindeval("g:bufs")[1]].options

::py3 bopts3=vim.buffers[vim.bindeval("g:bufs")[0]].options

::$put ='wopts iters equal: '.py3eval('list(wopts1) == list(wopts

2)')

::$put ='bopts iters equal: '.py3eval('list(bopts1) == list(bopts

2)')

::py3 gset=set(iter(gopts1))

::py3 wset=set(iter(wopts1))

::py3 bset=set(iter(bopts1))

::set path=.,..,,

::let lst=[]

::let lst+=[['paste',          1,     0,     1,     2,      1,   

1,      0    ]]

::let lst+=[['previewheight',  5,     1,     6,     'a',    0,   

1,      0    ]]

::let lst+=[['operatorfunc',   'A',   'B',   'C',   2,      0,   

1,      0    ]]

::let lst+=[['number',         0,     1,     1,     0,      1,   

0,      1    ]]

::let lst+=[['numberwidth',    2,     3,     5,     -100,   0,   

0,      1    ]]

::let lst+=[['colorcolumn',    '+1',  '+2',  '+3',  'abc4',  0,  

 0,      1    ]]

::let lst+=[['statusline',     '1',   '2',   '4',   0,      0,   

1,      1    ]]

::let lst+=[['autoindent',     0,     1,     1,     2,      1,   

0,      2    ]]

::let lst+=[['shiftwidth',     0,     2,     1,     3,      0,   

0,      2    ]]

::let lst+=[['omnifunc',       'A',   'B',   'C',   1,      0,   

0,      2    ]]

::let lst+=[['preserveindent', 0,     1,     1,     2,      1,   

1,      2    ]]

::let lst+=[['path',           '.,,', ',,',  '.',   0,      0,   

1,      2    ]]

::for       [oname,            oval1, oval2, oval3, invval, bool,

global, local] in lst

::   py3 oname=vim.eval('oname')

::   py3 oval1=vim.bindeval('oval1')

::   py3 oval2=vim.bindeval('oval2')

::   py3 oval3=vim.bindeval('oval3')

::   if invval is 0 || invval is 1

::       py3 invval=bool(vim.bindeval('invval'))

::   else

::       py3 invval=vim.bindeval('invval')

::   endif

::   if bool

::       py3 oval1=bool(oval1)

::       py3 oval2=bool(oval2)

::       py3 oval3=bool(oval3)

::   endif

::   put ='>>> '.oname

::   $put ='  g/w/b:'.py3eval('oname in gset').'/'.py3eval('ona

me in wset').'/'.py3eval('oname in bset')

::   $put ='  g/w/b (in):'.py3eval('oname in gopts1').'/'.py3ev

al('oname in wopts1').'/'.py3eval('oname in bopts1')

::   for v in ['gopts1', 'wopts1', 'bopts1']

::       try

::           put ='  p/'.v.': '.Ev('repr('.v.'['''.oname.''

'])')

::       catch

::           put ='  p/'.v.'! '.v:exception

::       endtry

::       let r=E(v.'['''.oname.''']=invval')

::       if r isnot 0

::           put ='  inv: '.string(invval).'! '.r

::       endif

::       for vv in (v is# 'gopts1' ? [v] : [v, v[:-2].'2', v[

:-2].'3'])

::           let val=substitute(vv, '^.opts', 'oval', '')

::           let r=E(vv.'['''.oname.''']='.val)

::           if r isnot 0

::               put ='  '.vv.'! '.r

::           endif

::       endfor

::   endfor

::   call RecVars(oname)

::   for v in ['wopts3', 'bopts3']

::       let r=E('del '.v.'["'.oname.'"]')

::       if r isnot 0

::           put ='  del '.v.'! '.r

::       endif

::   endfor

::   call RecVars(oname)

::endfor

::delfunction RecVars

::delfunction E

::delfunction Ev

::py3 del ev

::py3 del e

::only

::for buf in g:bufs[1:]

::   execute 'bwipeout!' buf

::endfor

::py3 del gopts1

::py3 del wopts1

::py3 del wopts2

::py3 del wopts3

::py3 del bopts1

::py3 del bopts2

::py3 del bopts3

::py3 del oval1

::py3 del oval2

::py3 del oval3

::py3 del oname

::py3 del invval

::"

::" Test buffer object

::vnew

::put ='First line'

::put ='Second line'

::put ='Third line'

::1 delete _

::py3 b=vim.current.buffer

::wincmd w

::mark a

::augroup BUFS

::   autocmd BufFilePost * python3 cb.append(vim.eval('expand("<a

buf>")') + ':BufFilePost:' + vim.eval('bufnr("%")'))

::   autocmd BufFilePre * python3 cb.append(vim.eval('expand("<ab

uf>")') + ':BufFilePre:' + vim.eval('bufnr("%")'))

::augroup END

:py3 << EOF

:# Tests BufferAppend and BufferItem

:cb.append(b[0])

:# Tests BufferSlice and BufferAssSlice

:cb.append('abc5') # Will be overwritten

:cb[-1:] = b[:-2]

:# Test BufferLength and BufferAssSlice

:cb.append('def') # Will not be overwritten

:cb[len(cb):] = b[:]

:# Test BufferAssItem and BufferMark

:cb.append('ghi') # Will be overwritten

:cb[-1] = repr((len(cb) - cb.mark('a')[0], cb.mark('a')[1]))

:# Test BufferRepr

:cb.append(repr(cb) + repr(b))

:# Modify foreign buffer

:b.append('foo')

:b[0]='bar'

:b[0:0]=['baz']

:vim.command('call append("$", getbufline(%i, 1, "$"))' % b.numbe

r)
:# Test assigning to name property

:import os

:old_name = cb.name

:cb.name = 'foo'

:cb.append(cb.name[-11:].replace(os.path.sep, '/'))

:b.name = 'bar'

:cb.append(b.name[-11:].replace(os.path.sep, '/'))

:cb.name = old_name

:cb.append(cb.name[-17:].replace(os.path.sep, '/'))

:del old_name

:# Test CheckBuffer

:for _b in vim.buffers:

:    if _b is not cb:

:        vim.command('bwipeout! ' + str(_b.number))

:del _b

:cb.append('valid: b:%s, cb:%s' % (repr(b.valid), repr(cb.valid))

)
:for expr in ('b[1]','b[:] = ["A", "B"]','b[:]','b.append("abc6")

'):

:    try:

:        exec(expr)

:    except vim.error:

:        pass

:    else:

:        # Usually a SEGV here

:        # Should not happen in any case

:        cb.append('No exception for ' + expr)

:vim.command('cd .')

:del b

:EOF

::"

::" Test vim.buffers object

::set hidden

::edit a

::buffer #

::edit b

::buffer #

::edit c

::buffer #

:py3 << EOF

:# Check GCing iterator that was not fully exhausted

:i = iter(vim.buffers)

:cb.append('i:' + str(next(i)))

:# and also check creating more than one iterator at a time

:i2 = iter(vim.buffers)

:cb.append('i2:' + str(next(i2)))

:cb.append('i:' + str(next(i)))

:# The following should trigger GC and not cause any problems

:del i

:del i2

:i3 = iter(vim.buffers)

:cb.append('i3:' + str(next(i3)))

:del i3

:

:prevnum = 0

:for b in vim.buffers:

:    # Check buffer order

:    if prevnum >= b.number:

:        cb.append('!!! Buffer numbers not in strictly ascending 

order')

:    # Check indexing: vim.buffers[number].number == number

:    cb.append(str(b.number) + ':' + repr(vim.buffers[b.number]) 

+ '=' + repr(b))

:    prevnum = b.number

:del prevnum

:

:cb.append(str(len(vim.buffers)))

:

:bnums = list(map(lambda b: b.number, vim.buffers))[1:]

:

:# Test wiping out buffer with existing iterator

:i4 = iter(vim.buffers)

:cb.append('i4:' + str(next(i4)))

:vim.command('bwipeout! ' + str(bnums.pop(0)))

:try:

:    next(i4)

:except vim.error:

:    pass

:else:

:    cb.append('!!!! No vim.error')

:i4 = iter(vim.buffers)

:vim.command('bwipeout! ' + str(bnums.pop(-1)))

:vim.command('bwipeout! ' + str(bnums.pop(-1)))

:cb.append('i4:' + str(next(i4)))

:try:

:    next(i4)

:except StopIteration:

:    cb.append('StopIteration')

:del i4

:del bnums

:EOF

::"

::" Test vim.{tabpage,window}list and vim.{tabpage,window} object

s
::tabnew 0

::tabnew 1

::vnew a.1

::tabnew 2

::vnew a.2

::vnew b.2

::vnew c.2

:py3 << EOF

:cb.append('Number of tabs: ' + str(len(vim.tabpages)))

:cb.append('Current tab pages:')

:

:def W(w):

:    if '(unknown)' in repr(w):

:        return '<window object (unknown)>'

:    else:

:        return repr(w)

:

:def Cursor(w, start=len(cb)):

:    if w.buffer is cb:

:        return repr((start - w.cursor[0], w.cursor[1]))

:    else:

:        return repr(w.cursor)

:

:for t in vim.tabpages:

:    cb.append('  ' + repr(t) + '(' + str(t.number) + ')' + ': ' 

+ str(len(t.windows)) + ' windows, current is ' + W(t.window))

:    cb.append('  Windows:')

:    for w in t.windows:

:        cb.append('    ' + W(w) + '(' + str(w.number) + ')' + ':

displays buffer ' + repr(w.buffer) + '; cursor is at ' + Cursor(w))

:        # Other values depend on the size of the terminal, so th

ey are checked partly:

:        for attr in ('height', 'row', 'width', 'col'):

:            try:

:                aval = getattr(w, attr)

:                if type(aval) is not int:

:                    raise TypeError

:                if aval < 0:

:                    raise ValueError

:            except Exception as e:

:                cb.append('!!!!!! Error while getting attribute 

' + attr + ': ' + e.__class__.__name__)

:        del aval

:        del attr

:        w.cursor = (len(w.buffer), 0)

:del W

:del Cursor

:cb.append('Number of windows in current tab page: ' + str(len(vi

m.windows)))

:if list(vim.windows) != list(vim.current.tabpage.windows):

:    cb.append('!!!!!! Windows differ')

:EOF

::"

::" Test vim.current

:py3 << EOF

:def H(o):

:    return repr(o)

:cb.append('Current tab page: ' + repr(vim.current.tabpage))

:cb.append('Current window: ' + repr(vim.current.window) + ': ' +

H(vim.current.window) + ' is ' + H(vim.current.tabpage.window))

:cb.append('Current buffer: ' + repr(vim.current.buffer) + ': ' +

H(vim.current.buffer) + ' is ' + H(vim.current.window.buffer)+ ' is ' + H(vim.c

urrent.tabpage.window.buffer))

:del H

:# Assigning: fails

:try:

:    vim.current.window = vim.tabpages[0].window

:except ValueError:

:    cb.append('ValueError at assigning foreign tab window')

:

:for attr in ('window', 'tabpage', 'buffer'):

:    try:

:        setattr(vim.current, attr, None)

:    except TypeError:

:        cb.append('Type error at assigning None to vim.current.'

+ attr)

:del attr

:

:# Assigning: success

:vim.current.tabpage = vim.tabpages[-2]

:vim.current.buffer = cb

:vim.current.window = vim.windows[0]

:vim.current.window.cursor = (len(vim.current.buffer), 0)

:cb.append('Current tab page: ' + repr(vim.current.tabpage))

:cb.append('Current window: ' + repr(vim.current.window))

:cb.append('Current buffer: ' + repr(vim.current.buffer))

:cb.append('Current line: ' + repr(vim.current.line))

:ws = list(vim.windows)

:ts = list(vim.tabpages)

:for b in vim.buffers:

:    if b is not cb:

:        vim.command('bwipeout! ' + str(b.number))

:del b

:cb.append('w.valid: ' + repr([w.valid for w in ws]))

:cb.append('t.valid: ' + repr([t.valid for t in ts]))

:del w

:del t

:del ts

:del ws

:EOF

::tabonly!

::only!

::"

::" Test types

:py3 << EOF

:for expr, attr in (

:    ('vim.vars',                         'Dictionary'),

:    ('vim.options',                      'Options'),

:    ('vim.bindeval("{}")',               'Dictionary'),

:    ('vim.bindeval("[]")',               'List'),

:    ('vim.bindeval("function(\'tr\')")', 'Function'),

:    ('vim.current.buffer',               'Buffer'),

:    ('vim.current.range',                'Range'),

:    ('vim.current.window',               'Window'),

:    ('vim.current.tabpage',              'TabPage'),

:):

:    cb.append(expr + ':' + attr + ':' + repr(type(eval(expr)) is

getattr(vim, attr)))

:del expr

:del attr

:EOF

::"

::" Test __dir__() method

:py3 << EOF

:for name, o in (

:        ('current',    vim.current),

:        ('buffer',     vim.current.buffer),

:        ('window',     vim.current.window),

:        ('tabpage',    vim.current.tabpage),

:        ('range',      vim.current.range),

:        ('dictionary', vim.bindeval('{}')),

:        ('list',       vim.bindeval('[]')),

:        ('function',   vim.bindeval('function("tr")')),

:        ('output',     sys.stdout),

:    ):

:    cb.append(name + ':' + ','.join(dir(o)))

:del name

:del o

:EOF

::"

::" Test vim.*.__new__

::$put =string(py3eval('vim.Dictionary({})'))

::$put =string(py3eval('vim.Dictionary(a=1)'))

::$put =string(py3eval('vim.Dictionary(((''a'', 1),))'))

::$put =string(py3eval('vim.List()'))

::$put =string(py3eval('vim.List(iter(''abc7''))'))

::$put =string(py3eval('vim.Function(''tr'')'))

::$put =string(py3eval('vim.Function(''tr'', args=[123, 3, 4])'))

::$put =string(py3eval('vim.Function(''tr'', args=[])'))

::$put =string(py3eval('vim.Function(''tr'', self={})'))

::$put =string(py3eval('vim.Function(''tr'', args=[123, 3, 4], se

lf={})'))

::$put ='auto_rebind'

::$put =string(py3eval('vim.Function(''tr'', auto_rebind=False)')

)
::$put =string(py3eval('vim.Function(''tr'', args=[123, 3, 4], au

to_rebind=False)'))

::$put =string(py3eval('vim.Function(''tr'', args=[], auto_rebind

=False)'))

::$put =string(py3eval('vim.Function(''tr'', self={}, auto_rebind

=False)'))

::$put =string(py3eval('vim.Function(''tr'', args=[123, 3, 4], se

lf={}, auto_rebind=False)'))

::"

::" Test vim.Function

::function Args(...)

::   return a:000

::endfunction

::function SelfArgs(...) dict

::   return [a:000, self]

::endfunction

::" The following four lines should not crash

::let Pt = function('tr', [[]], {'l': []})

::py3 Pt = vim.bindeval('Pt')

::unlet Pt

::py3 del Pt

:py3 << EOF

:def ecall(out_prefix, func, *args, **kwargs):

:    line = out_prefix + ': '

:    try:

:        ret = func(*args, **kwargs)

:    except Exception:

:        line += '!exception: ' + emsg(sys.exc_info())

:    else:

:        line += '!result: ' + str(vim.Function('string')(ret

), 'utf-8')

:    cb.append(line)

:a = vim.Function('Args')

:pa1 = vim.Function('Args', args=['abcArgsPA1'])

:pa2 = vim.Function('Args', args=[])

:pa3 = vim.Function('Args', args=['abcArgsPA3'], self={'abcSe

lfPA3': 'abcSelfPA3Val'})

:pa4 = vim.Function('Args', self={'abcSelfPA4': 'abcSelfPA4Va

l'})

:cb.append('a: ' + repr(a))

:cb.append('pa1: ' + repr(pa1))

:cb.append('pa2: ' + repr(pa2))

:cb.append('pa3: ' + repr(pa3))

:cb.append('pa4: ' + repr(pa4))

:sa = vim.Function('SelfArgs')

:psa1 = vim.Function('SelfArgs', args=['abcArgsPSA1'])

:psa2 = vim.Function('SelfArgs', args=[])

:psa3 = vim.Function('SelfArgs', args=['abcArgsPSA3'], self={

'abcSelfPSA3': 'abcSelfPSA3Val'})

:psa4 = vim.Function('SelfArgs', self={'abcSelfPSA4': 'abcSel

fPSA4Val'})

:psa5 = vim.Function('SelfArgs', self={'abcSelfPSA5': 'abcSel

fPSA5Val'}, auto_rebind=0)

:psa6 = vim.Function('SelfArgs', args=['abcArgsPSA6'], self={

'abcSelfPSA6': 'abcSelfPSA6Val'}, auto_rebind=())

:psa7 = vim.Function('SelfArgs', args=['abcArgsPSA7'], auto_r

ebind=[])

:psa8 = vim.Function('SelfArgs', auto_rebind=False)

:psa9 = vim.Function('SelfArgs', self={'abcSelfPSA9': 'abcSel

fPSA9Val'}, auto_rebind=True)

:psaA = vim.Function('SelfArgs', args=['abcArgsPSAA'], self={

'abcSelfPSAA': 'abcSelfPSAAVal'}, auto_rebind=1)

:psaB = vim.Function('SelfArgs', args=['abcArgsPSAB'], auto_r

ebind={'abcARPSAB': 'abcARPSABVal'})

:psaC = vim.Function('SelfArgs', auto_rebind=['abcARPSAC'])

:cb.append('sa: ' + repr(sa))

:cb.append('psa1: ' + repr(psa1))

:cb.append('psa2: ' + repr(psa2))

:cb.append('psa3: ' + repr(psa3))

:cb.append('psa4: ' + repr(psa4))

:cb.append('psa5: ' + repr(psa5))

:cb.append('psa6: ' + repr(psa6))

:cb.append('psa7: ' + repr(psa7))

:cb.append('psa8: ' + repr(psa8))

:cb.append('psa9: ' + repr(psa9))

:cb.append('psaA: ' + repr(psaA))

:cb.append('psaB: ' + repr(psaB))

:cb.append('psaC: ' + repr(psaC))

:

:psar = vim.Function('SelfArgs', args=[{'abcArgsPSAr': 'abcAr

gsPSArVal'}], self={'abcSelfPSAr': 'abcSelfPSArVal'})

:psar.args[0]['abcArgsPSAr2'] = [psar.self, psar.args[0]]

:psar.self['rec'] = psar

:psar.self['self'] = psar.self

:psar.self['args'] = psar.args

:

:try:

:    cb.append('psar: ' + repr(psar))

:except Exception:

:    cb.append('!!!!!!!! Caught exception: ' + emsg(sys.exc_i

nfo()))

:EOF

::$put ='s(a): '.string(py3eval('a'))

::$put ='s(pa1): '.string(py3eval('pa1'))

::$put ='s(pa2): '.string(py3eval('pa2'))

::$put ='s(pa3): '.string(py3eval('pa3'))

::$put ='s(pa4): '.string(py3eval('pa4'))

::$put ='s(sa): '.string(py3eval('sa'))

::$put ='s(psa1): '.string(py3eval('psa1'))

::$put ='s(psa2): '.string(py3eval('psa2'))

::$put ='s(psa3): '.string(py3eval('psa3'))

::$put ='s(psa4): '.string(py3eval('psa4'))

::$put ='s(psa5): '.string(py3eval('psa5'))

::$put ='s(psa6): '.string(py3eval('psa6'))

::$put ='s(psa7): '.string(py3eval('psa7'))

::$put ='s(psa8): '.string(py3eval('psa8'))

::$put ='s(psa9): '.string(py3eval('psa9'))

::$put ='s(psaA): '.string(py3eval('psaA'))

::$put ='s(psaB): '.string(py3eval('psaB'))

::$put ='s(psaC): '.string(py3eval('psaC'))

::

::for v in ['sa', 'psa1', 'psa2', 'psa3', 'psa4', 'psa5', 'ps

a6', 'psa7', 'psa8', 'psa9', 'psaA', 'psaB', 'psaC']

::   let d = {'f': py3eval(v)}

::   $put ='d.'.v.'(): '.string(d.f())

::endfor

::

::py3 ecall('a()', a, )

::py3 ecall('pa1()', pa1, )

::py3 ecall('pa2()', pa2, )

::py3 ecall('pa3()', pa3, )

::py3 ecall('pa4()', pa4, )

::py3 ecall('sa()', sa, )

::py3 ecall('psa1()', psa1, )

::py3 ecall('psa2()', psa2, )

::py3 ecall('psa3()', psa3, )

::py3 ecall('psa4()', psa4, )

::

::py3 ecall('a(42, 43)', a, 42, 43)

::py3 ecall('pa1(42, 43)', pa1, 42, 43)

::py3 ecall('pa2(42, 43)', pa2, 42, 43)

::py3 ecall('pa3(42, 43)', pa3, 42, 43)

::py3 ecall('pa4(42, 43)', pa4, 42, 43)

::py3 ecall('sa(42, 43)', sa, 42, 43)

::py3 ecall('psa1(42, 43)', psa1, 42, 43)

::py3 ecall('psa2(42, 43)', psa2, 42, 43)

::py3 ecall('psa3(42, 43)', psa3, 42, 43)

::py3 ecall('psa4(42, 43)', psa4, 42, 43)

::

::py3 ecall('a(42, self={"20": 1})', a, 42, self={'20': 1})

::py3 ecall('pa1(42, self={"20": 1})', pa1, 42, self={'20': 1

})
::py3 ecall('pa2(42, self={"20": 1})', pa2, 42, self={'20': 1

})
::py3 ecall('pa3(42, self={"20": 1})', pa3, 42, self={'20': 1

})
::py3 ecall('pa4(42, self={"20": 1})', pa4, 42, self={'20': 1

})
::py3 ecall('sa(42, self={"20": 1})', sa, 42, self={'20': 1})

::py3 ecall('psa1(42, self={"20": 1})', psa1, 42, self={'20':

1})

::py3 ecall('psa2(42, self={"20": 1})', psa2, 42, self={'20':

1})

::py3 ecall('psa3(42, self={"20": 1})', psa3, 42, self={'20':

1})

::py3 ecall('psa4(42, self={"20": 1})', psa4, 42, self={'20':

1})

::

::py3 ecall('a(self={"20": 1})', a, self={'20': 1})

::py3 ecall('pa1(self={"20": 1})', pa1, self={'20': 1})

::py3 ecall('pa2(self={"20": 1})', pa2, self={'20': 1})

::py3 ecall('pa3(self={"20": 1})', pa3, self={'20': 1})

::py3 ecall('pa4(self={"20": 1})', pa4, self={'20': 1})

::py3 ecall('sa(self={"20": 1})', sa, self={'20': 1})

::py3 ecall('psa1(self={"20": 1})', psa1, self={'20': 1})

::py3 ecall('psa2(self={"20": 1})', psa2, self={'20': 1})

::py3 ecall('psa3(self={"20": 1})', psa3, self={'20': 1})

::py3 ecall('psa4(self={"20": 1})', psa4, self={'20': 1})

:py3 << EOF

:def s(v):

:    if v is None:

:        return repr(v)

:    else:

:        return str(vim.Function('string')(v), 'utf-8')

:

:cb.append('a.args: ' + s(a.args))

:cb.append('pa1.args: ' + s(pa1.args))

:cb.append('pa2.args: ' + s(pa2.args))

:cb.append('pa3.args: ' + s(pa3.args))

:cb.append('pa4.args: ' + s(pa4.args))

:cb.append('sa.args: ' + s(sa.args))

:cb.append('psa1.args: ' + s(psa1.args))

:cb.append('psa2.args: ' + s(psa2.args))

:cb.append('psa3.args: ' + s(psa3.args))

:cb.append('psa4.args: ' + s(psa4.args))

:

:cb.append('a.self: ' + s(a.self))

:cb.append('pa1.self: ' + s(pa1.self))

:cb.append('pa2.self: ' + s(pa2.self))

:cb.append('pa3.self: ' + s(pa3.self))

:cb.append('pa4.self: ' + s(pa4.self))

:cb.append('sa.self: ' + s(sa.self))

:cb.append('psa1.self: ' + s(psa1.self))

:cb.append('psa2.self: ' + s(psa2.self))

:cb.append('psa3.self: ' + s(psa3.self))

:cb.append('psa4.self: ' + s(psa4.self))

:

:cb.append('a.name: ' + s(a.name))

:cb.append('pa1.name: ' + s(pa1.name))

:cb.append('pa2.name: ' + s(pa2.name))

:cb.append('pa3.name: ' + s(pa3.name))

:cb.append('pa4.name: ' + s(pa4.name))

:cb.append('sa.name: ' + s(sa.name))

:cb.append('psa1.name: ' + s(psa1.name))

:cb.append('psa2.name: ' + s(psa2.name))

:cb.append('psa3.name: ' + s(psa3.name))

:cb.append('psa4.name: ' + s(psa4.name))

:

:cb.append('a.auto_rebind: ' + s(a.auto_rebind))

:cb.append('pa1.auto_rebind: ' + s(pa1.auto_rebind))

:cb.append('pa2.auto_rebind: ' + s(pa2.auto_rebind))

:cb.append('pa3.auto_rebind: ' + s(pa3.auto_rebind))

:cb.append('pa4.auto_rebind: ' + s(pa4.auto_rebind))

:cb.append('sa.auto_rebind: ' + s(sa.auto_rebind))

:cb.append('psa1.auto_rebind: ' + s(psa1.auto_rebind))

:cb.append('psa2.auto_rebind: ' + s(psa2.auto_rebind))

:cb.append('psa3.auto_rebind: ' + s(psa3.auto_rebind))

:cb.append('psa4.auto_rebind: ' + s(psa4.auto_rebind))

:cb.append('psa5.auto_rebind: ' + s(psa5.auto_rebind))

:cb.append('psa6.auto_rebind: ' + s(psa6.auto_rebind))

:cb.append('psa7.auto_rebind: ' + s(psa7.auto_rebind))

:cb.append('psa8.auto_rebind: ' + s(psa8.auto_rebind))

:cb.append('psa9.auto_rebind: ' + s(psa9.auto_rebind))

:cb.append('psaA.auto_rebind: ' + s(psaA.auto_rebind))

:cb.append('psaB.auto_rebind: ' + s(psaB.auto_rebind))

:cb.append('psaC.auto_rebind: ' + s(psaC.auto_rebind))

:

:del s

:

:del a

:del pa1

:del pa2

:del pa3

:del pa4

:del sa

:del psa1

:del psa2

:del psa3

:del psa4

:del psa5

:del psa6

:del psa7

:del psa8

:del psa9

:del psaA

:del psaB

:del psaC

:del psar

:

:del ecall

:EOF

::"

::" Test stdout/stderr

::redir => messages

::py3 sys.stdout.write('abc8') ; sys.stdout.write('def')

::py3 sys.stderr.write('abc9') ; sys.stderr.write('def')

::py3 sys.stdout.writelines(iter('abcA'))

::py3 sys.stderr.writelines(iter('abcB'))

::redir END

::$put =string(substitute(messages, '\d\+', '', 'g'))

::" Test subclassing

::fun Put(...)

::   $put =string(a:000)

::   return a:000

::endfun

:py3 << EOF

:class DupDict(vim.Dictionary):

:    def __setitem__(self, key, value):

:        super(DupDict, self).__setitem__(key, value)

:        super(DupDict, self).__setitem__('dup_' + key, val

ue)

:dd = DupDict()

:dd['a'] = 'b'

:

:class DupList(vim.List):

:    def __getitem__(self, idx):

:        return [super(DupList, self).__getitem__(idx)] * 2

:

:dl = DupList()

:dl2 = DupList(iter('abcC'))

:dl.extend(dl2[0])

:

:class DupFun(vim.Function):

:    def __call__(self, arg):

:        return super(DupFun, self).__call__(arg, arg)

:

:df = DupFun('Put')

:EOF

::$put =string(sort(keys(py3eval('dd'))))

::$put =string(py3eval('dl'))

::$put =string(py3eval('dl2'))

::$put =string(py3eval('df(2)'))

::$put =string(py3eval('dl') is# py3eval('dl'))

::$put =string(py3eval('dd') is# py3eval('dd'))

::$put =string(py3eval('df'))

::delfunction Put

:py3 << EOF

:del DupDict

:del DupList

:del DupFun

:del dd

:del dl

:del dl2

:del df

:EOF

::"

::" Test chdir

:py3 << EOF

:import os

:fnamemodify = vim.Function('fnamemodify')

:cb.append(str(fnamemodify('.', ':p:h:t')))

:cb.append(vim.eval('@%'))

:os.chdir('..')

:path = fnamemodify('.', ':p:h:t')

:if path != b'src':

:  # Running tests from a shadow directory, so move up anot

her level

:  # This will result in @% looking like shadow/testdir/tes

t87.in, hence the

:  # slicing to remove the leading path and path separator

:  os.chdir('..')

:  cb.append(str(fnamemodify('.', ':p:h:t')))

:  cb.append(vim.eval('@%')[len(path)+1:].replace(os.path.s

ep, '/'))

:  os.chdir(path)

:else:

:  cb.append(str(fnamemodify('.', ':p:h:t')))

:  cb.append(vim.eval('@%').replace(os.path.sep, '/'))

:del path

:os.chdir('testdir')

:cb.append(str(fnamemodify('.', ':p:h:t')))

:cb.append(vim.eval('@%'))

:del fnamemodify

:EOF

::"

::" Test errors

::fun F() dict

::endfun

::fun D()

::endfun

:py3 << EOF

:d = vim.Dictionary()

:ned = vim.Dictionary(foo='bar', baz='abcD')

:dl = vim.Dictionary(a=1)

:dl.locked = True

:l = vim.List()

:ll = vim.List('abcE')

:ll.locked = True

:nel = vim.List('abcO')

:f = vim.Function('string')

:fd = vim.Function('F')

:fdel = vim.Function('D')

:vim.command('delfunction D')

:

:def subexpr_test(expr, name, subexprs):

:    cb.append('>>> Testing %s using %s' % (name, expr)

)
:    for subexpr in subexprs:

:        ee(expr % subexpr)

:    cb.append('<<< Finished')

:

:def stringtochars_test(expr):

:    return subexpr_test(expr, 'StringToChars', (

:        '1',       # Fail type checks

:        'b"\\0"',  # Fail PyString_AsStringAndSize(obj

ect, , NULL) check

:        '"\\0"',   # Fail PyString_AsStringAndSize(byt

es, , NULL) check

:    ))

:

:class Mapping(object):

:    def __init__(self, d):

:        self.d = d

:

:    def __getitem__(self, key):

:        return self.d[key]

:

:    def keys(self):

:        return self.d.keys()

:

:    def items(self):

:        return self.d.items()

:

:def convertfrompyobject_test(expr, recurse=True):

:    # pydict_to_tv

:    stringtochars_test(expr % '{%s : 1}')

:    if recurse:

:        convertfrompyobject_test(expr % '{"abcF" : %s}

', False)

:    # pymap_to_tv

:    stringtochars_test(expr % 'Mapping({%s : 1})')

:    if recurse:

:        convertfrompyobject_test(expr % 'Mapping({"abc

G" : %s})', False)

:    # pyseq_to_tv

:    iter_test(expr)

:    return subexpr_test(expr, 'ConvertFromPyObject', (

:        'None',                 # Not conversible

:        '{b"": 1}',             # Empty key not allowe

d
:        '{"": 1}',              # Same, but with unico

de object

:        'FailingMapping()',     #

:        'FailingMappingKey()',  #

:        'FailingNumber()',      #

:    ))

:

:def convertfrompymapping_test(expr):

:    convertfrompyobject_test(expr)

:    return subexpr_test(expr, 'ConvertFromPyMapping', 

(
:        '[]',

:    ))

:

:def iter_test(expr):

:    return subexpr_test(expr, '*Iter*', (

:        'FailingIter()',

:        'FailingIterNext()',

:    ))

:

:def number_test(expr, natural=False, unsigned=False):

:    if natural:

:        unsigned = True

:    return subexpr_test(expr, 'NumberToLong', (

:        '[]',

:        'None',

:    ) + (('-1',) if unsigned else ())

:    + (('0',) if natural else ()))

:

:class FailingTrue(object):

:    def __bool__(self):

:        raise NotImplementedError('bool')

:

:class FailingIter(object):

:    def __iter__(self):

:        raise NotImplementedError('iter')

:

:class FailingIterNext(object):

:    def __iter__(self):

:        return self

:

:    def __next__(self):

:        raise NotImplementedError('next')

:

:class FailingIterNextN(object):

:    def __init__(self, n):

:        self.n = n

:

:    def __iter__(self):

:        return self

:

:    def __next__(self):

:        if self.n:

:            self.n -= 1

:            return 1

:        else:

:            raise NotImplementedError('next N')

:

:class FailingMappingKey(object):

:    def __getitem__(self, item):

:        raise NotImplementedError('getitem:mappingkey'

)
:

:    def keys(self):

:        return list("abcH")

:

:class FailingMapping(object):

:    def __getitem__(self):

:        raise NotImplementedError('getitem:mapping')

:

:    def keys(self):

:        raise NotImplementedError('keys')

:

:class FailingList(list):

:    def __getitem__(self, idx):

:        if i == 2:

:            raise NotImplementedError('getitem:list')

:        else:

:            return super(FailingList, self).__getitem_

_(idx)

:

:class NoArgsCall(object):

:    def __call__(self):

:        pass

:

:class FailingCall(object):

:    def __call__(self, path):

:        raise NotImplementedError('call')

:

:class FailingNumber(object):

:    def __int__(self):

:        raise NotImplementedError('int')

:

:cb.append("> Output")

:cb.append(">> OutputSetattr")

:ee('del sys.stdout.softspace')

:number_test('sys.stdout.softspace = %s', unsigned=True

)
:number_test('sys.stderr.softspace = %s', unsigned=True

)
:ee('assert sys.stdout.isatty()==False')

:ee('assert sys.stdout.seekable()==False')

:ee('sys.stdout.close()')

:ee('sys.stdout.flush()')

:ee('assert sys.stderr.isatty()==False')

:ee('assert sys.stderr.seekable()==False')

:ee('sys.stderr.close()')

:ee('sys.stderr.flush()')

:ee('sys.stdout.attr = None')

:cb.append(">> OutputWrite")

:ee('assert sys.stdout.writable()==True')

:ee('assert sys.stdout.readable()==False')

:ee('assert sys.stderr.writable()==True')

:ee('assert sys.stderr.readable()==False')

:ee('assert sys.stdout.closed()==False')

:ee('assert sys.stderr.closed()==False')

:ee('assert sys.stdout.errors=="strict"')

:ee('assert sys.stderr.errors=="strict"')

:ee('assert sys.stdout.encoding==sys.stderr.encoding')

:ee('sys.stdout.write(None)')

:cb.append(">> OutputWriteLines")

:ee('sys.stdout.writelines(None)')

:ee('sys.stdout.writelines([1])')

:iter_test('sys.stdout.writelines(%s)')

:cb.append("> VimCommand")

:stringtochars_test('vim.command(%s)')

:ee('vim.command("", 2)')

:#! Not checked: vim->python exceptions translating: ch

ecked later

:cb.append("> VimToPython")

:#! Not checked: everything: needs errors in internal p

ython functions

:cb.append("> VimEval")

:stringtochars_test('vim.eval(%s)')

:ee('vim.eval("", FailingTrue())')

:#! Not checked: everything: needs errors in internal p

ython functions

:cb.append("> VimEvalPy")

:stringtochars_test('vim.bindeval(%s)')

:ee('vim.eval("", 2)')

:#! Not checked: vim->python exceptions translating: ch

ecked later

:cb.append("> VimStrwidth")

:stringtochars_test('vim.strwidth(%s)')

:cb.append("> VimForeachRTP")

:ee('vim.foreach_rtp(None)')

:ee('vim.foreach_rtp(NoArgsCall())')

:ee('vim.foreach_rtp(FailingCall())')

:ee('vim.foreach_rtp(int, 2)')

:cb.append('> import')

:old_rtp = vim.options['rtp']

:vim.options['rtp'] = os.getcwd().replace('\\', '\\\\')

.replace(',', '\\,')

:ee('import xxx_no_such_module_xxx')

:ee('import failing_import')

:ee('import failing')

:vim.options['rtp'] = old_rtp

:del old_rtp

:cb.append("> Options")

:cb.append(">> OptionsItem")

:ee('vim.options["abcQ"]')

:ee('vim.options[""]')

:stringtochars_test('vim.options[%s]')

:cb.append(">> OptionsContains")

:stringtochars_test('%s in vim.options')

:cb.append("> Dictionary")

:cb.append(">> DictionaryConstructor")

:ee('vim.Dictionary("abcI")')

:##! Not checked: py_dict_alloc failure

:cb.append(">> DictionarySetattr")

:ee('del d.locked')

:ee('d.locked = FailingTrue()')

:ee('vim.vvars.locked = False')

:ee('d.scope = True')

:ee('d.xxx = True')

:cb.append(">> _DictionaryItem")

:ee('d.get("a", 2, 3)')

:stringtochars_test('d.get(%s)')

:ee('d.pop("a")')

:ee('dl.pop("a")')

:cb.append(">> DictionaryContains")

:ee('"" in d')

:ee('0 in d')

:cb.append(">> DictionaryIterNext")

:ee('for i in ned: ned["a"] = 1')

:del i

:cb.append(">> DictionaryAssItem")

:ee('dl["b"] = 1')

:stringtochars_test('d[%s] = 1')

:convertfrompyobject_test('d["a"] = %s')

:cb.append(">> DictionaryUpdate")

:cb.append(">>> kwargs")

:cb.append(">>> iter")

:ee('d.update(FailingMapping())')

:ee('d.update([FailingIterNext()])')

:ee('d.update([FailingIterNextN(1)])')

:iter_test('d.update(%s)')

:convertfrompyobject_test('d.update(%s)')

:stringtochars_test('d.update(((%s, 0),))')

:convertfrompyobject_test('d.update((("a", %s),))')

:cb.append(">> DictionaryPopItem")

:ee('d.popitem(1, 2)')

:cb.append(">> DictionaryHasKey")

:ee('d.has_key()')

:cb.append("> List")

:cb.append(">> ListConstructor")

:ee('vim.List(1, 2)')

:ee('vim.List(a=1)')

:iter_test('vim.List(%s)')

:convertfrompyobject_test('vim.List([%s])')

:cb.append(">> ListItem")

:ee('l[1000]')

:cb.append(">> ListAssItem")

:ee('ll[1] = 2')

:ee('l[1000] = 3')

:cb.append(">> ListAssSlice")

:ee('ll[1:100] = "abcJ"')

:iter_test('l[:] = %s')

:ee('nel[1:10:2]  = "abcK"')

:cb.append(repr(tuple(nel)))

:ee('nel[1:10:2]  = "a"')

:cb.append(repr(tuple(nel)))

:ee('nel[1:1:-1]  = "a"')

:cb.append(repr(tuple(nel)))

:ee('nel[:] = FailingIterNextN(2)')

:cb.append(repr(tuple(nel)))

:convertfrompyobject_test('l[:] = [%s]')

:cb.append(">> ListConcatInPlace")

:iter_test('l.extend(%s)')

:convertfrompyobject_test('l.extend([%s])')

:cb.append(">> ListSetattr")

:ee('del l.locked')

:ee('l.locked = FailingTrue()')

:ee('l.xxx = True')

:cb.append("> Function")

:cb.append(">> FunctionConstructor")

:cb.append(">>> FunctionConstructor")

:ee('vim.Function("123")')

:ee('vim.Function("xxx_non_existent_function_xxx")')

:ee('vim.Function("xxx#non#existent#function#xxx")')

:ee('vim.Function("xxx_non_existent_function_xxx2", arg

s=[])')

:ee('vim.Function("xxx_non_existent_function_xxx3", sel

f={})')

:ee('vim.Function("xxx_non_existent_function_xxx4", arg

s=[], self={})')

:cb.append(">>> FunctionNew")

:ee('vim.Function("tr", self="abcFuncSelf")')

:ee('vim.Function("tr", args=427423)')

:ee('vim.Function("tr", self="abcFuncSelf2", args="abcF

uncArgs2")')

:ee('vim.Function(self="abcFuncSelf2", args="abcFuncArg

s2")')

:ee('vim.Function("tr", "", self="abcFuncSelf2", args="

abcFuncArgs2")')

:ee('vim.Function("tr", "")')

:cb.append(">> FunctionCall")

:convertfrompyobject_test('f(%s)')

:convertfrompymapping_test('fd(self=%s)')

:cb.append("> TabPage")

:cb.append(">> TabPageAttr")

:ee('vim.current.tabpage.xxx')

:cb.append("> TabList")

:cb.append(">> TabListItem")

:ee('vim.tabpages[1000]')

:cb.append("> Window")

:cb.append(">> WindowAttr")

:ee('vim.current.window.xxx')

:cb.append(">> WindowSetattr")

:ee('vim.current.window.buffer = 0')

:ee('vim.current.window.cursor = (100000000, 100000000)

')
:ee('vim.current.window.cursor = True')

:number_test('vim.current.window.height = %s', unsigned

=True)

:number_test('vim.current.window.width = %s', unsigned=

True)

:ee('vim.current.window.xxxxxx = True')

:cb.append("> WinList")

:cb.append(">> WinListItem")

:ee('vim.windows[1000]')

:cb.append("> Buffer")

:cb.append(">> StringToLine (indirect)")

:ee('vim.current.buffer[0] = "\\na"')

:ee('vim.current.buffer[0] = b"\\na"')

:cb.append(">> SetBufferLine (indirect)")

:ee('vim.current.buffer[0] = True')

:cb.append(">> SetBufferLineList (indirect)")

:ee('vim.current.buffer[:] = True')

:ee('vim.current.buffer[:] = ["\\na", "bc"]')

:cb.append(">> InsertBufferLines (indirect)")

:ee('vim.current.buffer.append(None)')

:ee('vim.current.buffer.append(["\\na", "bc"])')

:ee('vim.current.buffer.append("\\nbc")')

:cb.append(">> RBItem")

:ee('vim.current.buffer[100000000]')

:cb.append(">> RBAsItem")

:ee('vim.current.buffer[100000000] = ""')

:cb.append(">> BufferAttr")

:ee('vim.current.buffer.xxx')

:cb.append(">> BufferSetattr")

:ee('vim.current.buffer.name = True')

:ee('vim.current.buffer.xxx = True')

:cb.append(">> BufferMark")

:ee('vim.current.buffer.mark(0)')

:ee('vim.current.buffer.mark("abcM")')

:ee('vim.current.buffer.mark("!")')

:cb.append(">> BufferRange")

:ee('vim.current.buffer.range(1, 2, 3)')

:cb.append("> BufMap")

:cb.append(">> BufMapItem")

:ee('vim.buffers[100000000]')

:number_test('vim.buffers[%s]', natural=True)

:cb.append("> Current")

:cb.append(">> CurrentGetattr")

:ee('vim.current.xxx')

:cb.append(">> CurrentSetattr")

:ee('vim.current.line = True')

:ee('vim.current.buffer = True')

:ee('vim.current.window = True')

:ee('vim.current.tabpage = True')

:ee('vim.current.xxx = True')

:del d

:del ned

:del dl

:del l

:del ll

:del nel

:del f

:del fd

:del fdel

:del subexpr_test

:del stringtochars_test

:del Mapping

:del convertfrompyobject_test

:del convertfrompymapping_test

:del iter_test

:del number_test

:del FailingTrue

:del FailingIter

:del FailingIterNext

:del FailingIterNextN

:del FailingMapping

:del FailingMappingKey

:del FailingList

:del NoArgsCall

:del FailingCall

:del FailingNumber

:EOF

::delfunction F

::"

::" Test import

:py3 << EOF

:sys.path.insert(0, os.path.join(os.getcwd(), 'python_b

efore'))

:sys.path.append(os.path.join(os.getcwd(), 'python_afte

r'))

:vim.options['rtp'] = os.getcwd().replace(',', '\\,').r

eplace('\\', '\\\\')

:l = []

:def callback(path):

:    l.append(os.path.relpath(path))

:vim.foreach_rtp(callback)

:cb.append(repr(l))

:del l

:def callback(path):

:    return os.path.relpath(path)

:cb.append(repr(vim.foreach_rtp(callback)))

:del callback

:from module import dir as d

:from modulex import ddir

:cb.append(d + ',' + ddir)

:import before

:cb.append(before.dir)

:import after

:cb.append(after.dir)

:import topmodule as tm

:import topmodule.submodule as tms

:import topmodule.submodule.subsubmodule.subsubsubmodul

e as tmsss

:cb.append(tm.__file__.replace(os.path.sep, '/')[-len('

modulex/topmodule/__init__.py'):])

:cb.append(tms.__file__.replace(os.path.sep, '/')[-len(

'modulex/topmodule/submodule/__init__.py'):])

:cb.append(tmsss.__file__.replace(os.path.sep, '/')[-le

n('modulex/topmodule/submodule/subsubmodule/subsubsubmodule.py'):])

:del before

:del after

:del d

:del ddir

:del tm

:del tms

:del tmsss

:EOF

::"

::" Test exceptions

::fun Exe(e)

::   execute a:e

::endfun

:py3 << EOF

:Exe = vim.bindeval('function("Exe")')

:ee('vim.command("throw \'abcN\'")')

:ee('Exe("throw \'def\'")')

:ee('vim.eval("Exe(\'throw \'\'ghi\'\'\')")')

:ee('vim.eval("Exe(\'echoerr \'\'jkl\'\'\')")')

:ee('vim.eval("Exe(\'xxx_non_existent_command_xxx\')"

)')

:ee('vim.eval("xxx_unknown_function_xxx()")')

:ee('vim.bindeval("Exe(\'xxx_non_existent_command_xxx

\')")')

:del Exe

:EOF

::delfunction Exe

::"

::" Regression: interrupting vim.command propagates t

o next vim.command

:py3 << EOF

:def test_keyboard_interrupt():

:    try:

:        vim.command('while 1 | endwhile')

:    except KeyboardInterrupt:

:        cb.append('Caught KeyboardInterrupt')

:    except Exception:

:        cb.append('!!!!!!!! Caught exception: ' + em

sg(sys.exc_info()))

:    else:

:        cb.append('!!!!!!!! No exception')

:    try:

:        vim.command('$ put =\'Running :put\'')

:    except KeyboardInterrupt:

:        cb.append('!!!!!!!! Caught KeyboardInterrupt

')
:    except Exception:

:        cb.append('!!!!!!!! Caught exception: ' + em

sg(sys.exc_info()))

:    else:

:        cb.append('No exception')

:EOF

::debuggreedy

::call inputsave()

::call feedkeys("s\ns\ns\ns\nq\n")

::redir => output

::debug silent! py3 test_keyboard_interrupt()

::redir END

::0 debuggreedy

::call inputrestore()

::silent $put =output

::unlet output

::py3 del test_keyboard_interrupt

::"

::" Cleanup

:py3 << EOF

:del cb

:del ee

:del emsg

:del sys

:del os

:del vim

:EOF

::endfun
:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:/^start:/,$w! test.out
:" vim: et ts=4 isk-=\:
:while getchar(0) isnot 0|endwhile
ENDTEST

start:

:"
:fun RunTest()

:  :let checkrefs = !empty($PYTHONDUMPREFS)

:  :let start = getline(1, '$')

:  :for i in range(checkrefs ? 10 : 1)

:    :   if i != 0

:      :       %d _

:      :       call setline(1, start)

:      :   endif

:    :   call Test()

:    :   if i == 0

:      :       let result = getline(1, '$')

:      :   endif

:    :endfor

:  :if checkrefs

:    :   %d _

:    :   call setline(1, result)

:    :endif

:  :endfun
:   call Test()
:   if i == 0
:let result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out

:"
:call RunTest()
8 more lin
3 more lines

"a" [New File]

"b" [New File]

"c" [New File]

"0" [New File]

"1" [New File]

"a.1" [New File]

"2" [New File]

"a.2" [New File]

"b.2" [New File]

"c.2" [New File]

Already only one window

abc8def

Error detected while processing function RunTest[8]..Test:

line 1106:

abc9def

abcA

line 1108:

abcB

8 more lines

Entering Debug mode.  Type "cont" to continue.

function RunTest[8]..Test

line 1650: py3 test_keyboard_interrupt()

>s

function RunTest[8]..Test

line 1650: while 1 | endwhile

>s

function RunTest[8]..Test

line 1650: endwhile

>s

function RunTest[8]..Test

line 1650: while 1 | endwhile

>s

function RunTest[8]..Test

line 1650: endwhile

>q
['.']
'.'
3,xx
before
after
pythonx/topmodule/__init__.py
pythonx/topmodule/submodule/__init__.py
pythonx/topmodule/submodule/subsubmodule/subsubsubmodule.py
vim.command("throw 'abcN'"):(<class 'vim.error'>, error('abcN',))
Exe("throw 'def'"):(<class 'vim.error'>, error('def',))
vim.eval("Exe('throw ''ghi''')"):(<class 'vim.error'>, error('ghi',))
vim.eval("Exe('echoerr ''jkl''')"):(<class 'vim.error'>, error('Vim(echoerr):jkll',))
vim.eval("Exe('xxx_non_existent_command_xxx')"):(<class 'vim.error'>, error('Vimm:E492: Not an editor command: xxx_non_existent_command_xxx',))
vim.eval("xxx_unknown_function_xxx()"):(<class 'vim.error'>, error('Vim:E117: Unnknown function: xxx_unknown_function_xxx',))
vim.bindeval("Exe('xxx_non_existent_command_xxx')"):(<class 'vim.error'>, error(('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',))
Caught KeyboardInterrupt
Running :put
No exception

"test87.in" [Modified][Not edited] line 3151 of 3151 --100%-- col 1:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New File] 1445 lines, 77744 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test87 = test61; then \
#	  if diff test.out test87.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test87.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test87.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test12.failed test.ok test.out X* viminfo
cp test12.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test12.in
[?1h="test12.in" 52 lines, 1199 charactersTests for 'directory' option.
- ".", in same dir as file
- "./dir", in directory relative to file
- "dir", in directory relative to current dir

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo
:set dir=.,~
:/start of testfile/,/end of testfile/w! Xtest1
:" do an ls of the current dir to find the swap file (should not be there)
:if has("unix")
:  !ls .X*.swp >test.out
:else
:  r !ls X*.swp >test.out
:endif
:!echo first line >>test.out
:e Xtest1
:if has("unix")
:" Do an ls of the current dir to find the swap file, remove the leading dot
:" to make the result the same for all systems.
:  r!ls .X*.swp
:  s/\.*X/X/:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for 'directory' option./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 40 lines, 965 characters written:set ff& cpo+=A
/ENDTEST:!mkdir Xtest2
:set dir=./Xtest2,.,~
:e Xtest1
:!ls X*.swp >>test.out
:!echo under under >>test.out
:!ls Xtest2 >>test.out
:!echo under Xtest1.swp >>test.out
:!mkdir Xtest.je
:/start of testfile/,/end of testfile/w! Xtest2/Xtest3
:set dir=Xtest.je,~
:e Xtest2/Xtest3
:swap
:!ls Xtest2 >>test.out
:!echo under Xtest3 >>test.out
:!ls Xtest.je >>test.out
:!echo under Xtest3.swp >>test.out
:qa!
ENDTEST

start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
:so! Xdotest
:so small.vim
:set nocompatible viminfo+=nviminfo
:set dir=.,~
:/start of testfile/,/end of testfile/w! Xtest1
"Xtest1" [New] 4L, 70C written:" do an ls of the current dir to find the swap file (should not be there)
:if has("unix")

:  :  !ls .X*.swp >test.out

:!ls .X*.swp >test.out[?1l>
ls: cannot access '.X*.swp': No such file or directory

shell returned 2

[?1h=:  :else

:  :  r !ls X*.swp >test.out

:  :endif
:!mkdir Xtest2
:set dir=./Xtest2,.,~
:e Xtest1
:!ls X*.swp >>test.out
:!echo under under >>test.out
:!ls Xtest2 >>test.out
:!echo under Xtest1.swp >>test.out
:!mkdir Xtest.je
:/start of testfile/,/end of testfile/w! Xtest2/Xtest3
:set dir=Xtest.je,~
:e Xtest2/Xtest3
:swap
:!ls Xtest2 >>test.out
:!echo under Xtest3 >>test.out
:!ls Xtest.je >>test.out
:!echo under Xtest3.swp >>test.out
:qa!
ENDTEST

start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile:!echo first line >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:e Xtest1
"Xtest1" 4L, 70Cstart of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"Xtest1" 4L, 70C:if has("unix")

:  :" Do an ls of the current dir to find the swap file, remove the leading dot

:  :" to make the result the same for all systems.

:  :  r!ls .X*.swp

:  :  s/\.*X/X/

:  :  .w >>test.out
"test.out" 1L, 11C appended

:  :  undo

1 line less; before #1  0 seconds ago

:  :else

:  :  !ls X*.swp >>test.out

:  :endif
start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:!echo under Xtest1.swp >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir Xtest2
[?1l>
[?1h=
Press ENTER or type command to continue:set dir=./Xtest2,.,~
start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:e Xtest1
"Xtest1" 4L, 70C:!ls X*.swp >>test.out
[?1l>
ls: cannot access 'X*.swp': No such file or directory

shell returned 2

[?1h=
Press ENTER or type command to continue:!echo under under >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!ls Xtest2 >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!echo under Xtest1.swp >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir Xtest.je
[?1l>
[?1h=
Press ENTER or type command to continue:/start of testfile/,/end of testfile/w! Xtest2/Xtest3
search hit BOTTOM, continuing at TOP"Xtest2/Xtest3" [New] 4L, 70C written

Press ENTER or type command to continue:set dir=Xtest.je,~
start of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:e Xtest2/Xtest3
"Xtest2/Xtest3" 4L, 70C:swap
Xtest.je/Xtest3.swp:!ls Xtest2 >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!echo under Xtest3 >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!ls Xtest.je >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:!echo under Xtest3.swp >>test.out
[?1l>
[?1h=
Press ENTER or type command to continue:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test12 = test61; then \
#	  if diff test.out test12.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test12.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test12.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test25.failed test.ok test.out X* viminfo
cp test25.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test25.in
[?1h="test25.in" 31 lines, 840 charactersTest for jumping to a tag with 'hidden' set, with symbolic link in path of tag.
This only works for Unix, because of the symbolic link.

STARTTEST
:so small.vim
:set hidden
:" Create a link from test25.dir to the current directory.
:!rm -f test25.dir
:!ln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line
:r !pwd
d$/test
hP:.w! tags.test
:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.test
G^] x:.w! test.out
:!rm -f test25.dir tags.test
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for jumping to a tag with 'hidden' set, with symbolic link in path of tag./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 540 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:set hidden
:" Create a link from test25.dir to the current directory.
:!rm -f test25.dir
[?1l>
[?1h=
Press ENTER or type command to continue:!ln -s . test25.dir
[?1l>
[?1h=
Press ENTER or type command to continue:" Create tags.text, with the current directory name inserted.
Test for jumping to a tag with 'hidden' set, with symbolic link in path of tag.
This only works for Unix, because of the symbolic link.

STARTTEST
:so small.vim
:set hidden
:" Create a link from test25.dir to the current directory.
:!rm -f test25.dir
:!ln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line
:r !pwd
d$/test
hP:.w! tags.test
:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.test
G^] x:.w! test.out
:!rm -f test25.dir tags.test
:qa!
ENDTEST

/tags line
his only works for Unix, because of the symbolic link.STARTTEST
:so small.vim
:set hidden" Create a link from test25.dir to the current directory.
:!rm -f test25.dirln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line:r !pwdd$/test
hP:.w! tags.test
:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.testG^] x:.w! test.out:!rm -f test25.dir tags.test
:qa!ENDTESTtags line:
:r !pwd
STARTTEST
:so small.vim
:set hidden
:" Create a link from test25.dir to the current directory.
:!rm -f test25.dir
:!ln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line
:r !pwd
d$/test
hP:.w! tags.test
:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.test
G^] x:.w! test.out
:!rm -f test25.dir tags.test
:qa!
ENDTEST

tags line:
/<<PKGBUILDDIR>>/src/vim-athena/testdir

/test

SECTION_OFF     /test25.dir/test25.in   /^#define  SECTION_OFF  3$//<<PKGBUILDDIR>>/src/vim-athena/testdir/test25.dir@
SECTION_OFF     /<<PKGBUILDDIR>>/src/vim-athena/testdir/test25.dirr/test25.in      /^#define  SECTION_OFF  3$/

:.w! tags.test
"tags.test" [New File] 1 line, 115 characters written:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.test






/*tx.c*/
#define  SECTION_OFF  3
#define  NUM_SECTIONS 3

SECTION_OFF#efine  SECTION_OFF  3:.w! test.out
"test.out" [New File] 1 line, 23 characters written:!rm -f test25.dir tags.test
[?1l>
[No write since last change]

[?1h=
Press ENTER or type command to continue:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test25 = test61; then \
#	  if diff test.out test25.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test25.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test25.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test49.failed test.ok test.out X* viminfo
cp test49.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test49.in
[?1h="test49.in" 32 lines, 705 charactersThis is a test of the script language.

If after adding a new test, the test output doesn't appear properly in
test49.failed, try to add one or more "G"s at the line ending in "test.out"

STARTTEST
:so small.vim
:se nocp nomore viminfo+=nviminfo
:lang mess C
:so test49.vim
:" Go back to this file and append the results from register r.
:buf test49.in
G"rp:/^Results/,$w! test.out
:"
:" make valgrind happy
:redir => funclist
:silent func
:redir END
:for line in split(funclist, "\n")
:  let name = matchstr(line, 'function \zs[A-Z]\w*\ze(')
:  if name != ''
:    exe "delfunc " . name
:  endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
This is a test of the script language./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 23 lines, 475 characters written:set ff& cpo+=A
/ENDTEST






:endfor
:for v in keys(g:)
:  silent! exe "unlet " . v
:endfor
:unlet v
:qa!
ENDTEST

:so! Xdotest
:so small.vim
:se nocp nomore viminfo+=nviminfo
:lang mess C
:so test49.vim
Error detected while processing function F:

line    5:

E583: multiple :else:     else^I^I

Error detected while processing function G:

line    5:

E584: :elseif after :else:     elseif 1^I^I" aborts function

Error detected while processing function H:

line    7:

E583: multiple :else:     else^I^I

Error detected while processing function I:

line    7:

E584: :elseif after :else:     elseif 1^I^I" aborts function

*** Test  16: OK (8722)

Error detected while processing function F:

line   18:

E171: Missing :endif:     endwhile^I

E171: Missing :endif:     endwhile^I

line   34:

E171: Missing :endif:     endwhile^I

E171: Missing :endif:     endwhile^I

E171: Missing :endif:     endwhile^I

line   47:

E580: :endif without :if: ^Iendif^I

E580: :endif without :if: ^Iendif^I

E580: :endif without :if: ^Iendif^I

Error detected while processing /<<PKGBUILDDIR>>/src/vim-athena/t

estdir/test49.vim:

line  784:

E171: Missing :endif: endwhile 

*** Test  17: OK (285127993)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"/tmp/vOV0G7d/0" [New] 53L, 1582C written14L, 358C appended26L, 824C appended34L, 986C appended

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/1[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/1" 16L, 304C appended17L, 326C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/2[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/2"' -c 'breakad

dfile 8 /tmp/vOV0G7d/1' -S /tmp/vOV0G7d/1[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/2" 3L, 6C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/3[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/3" 6L, 127C appended7L, 149C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/4[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/4"' -c 'breakad

dfile 4 /tmp/vOV0G7d/3' -S /tmp/vOV0G7d/3[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/4" 1L, 5C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/5[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/5" 21L, 486C appended22L, 508C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/6[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/6"' -c 'breakad

dfunc 7 F' -S /tmp/vOV0G7d/5[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/6" 3L, 18C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/7[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/7" 13L, 364C appended14L, 386C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/8[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/8"' -c 'breakad

dfunc 3 G' -S /tmp/vOV0G7d/7[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/8" 1L, 9C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  18: OK (67224583)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/9[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/9" 12L, 201C appended13L, 223C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/10[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/10"' -S /tmp/vOV0G

7d/9[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/10" 2L, 4C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/11[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/11" 12L, 205C appended13L, 227C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/12[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/12"' -S /tmp/vOV0G

7d/11[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/12" 2L, 7C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/13[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/13" 6L, 122C appended7L, 144C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/14[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/14"' -S /tmp/vOV0G

7d/13[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/14" 1L, 5C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/15[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/15" 8L, 176C appended9L, 198C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/16[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/16"' -S /tmp/vOV0G

7d/15[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/16" 1L, 6C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/17[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/17" 10L, 215C appended11L, 237C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/18[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/18"' -S /tmp/vOV0G

7d/17[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/18" 1L, 8C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/19[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/19" 7L, 149C appended8L, 171C8L, 170C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/20[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/20"' -S /tmp/vOV0G

7d/19[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/20" 1L, 9C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  19: OK (69275973)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/21[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/21" 9L, 135C appended10L, 157C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/22[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/22"' -S /tmp/vOV0G

7d/21[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/22" 2L, 4C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/23[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/23" 10L, 155C appended11L, 177C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/24[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/24"' -S /tmp/vOV0G

7d/23[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/24" 3L, 8C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/25[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/25" 12L, 204C appended13L, 226C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/26[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/26"' -S /tmp/vOV0G

7d/25[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/26" 4L, 18C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/27[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/27" 12L, 214C appended13L, 236C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/28[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/28"' -S /tmp/vOV0G

7d/27[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/28" 4L, 22C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/29[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/29" 12L, 211C appended13L, 233C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/30[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/30"' -S /tmp/vOV0G

7d/29[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/30" 3L, 22C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/31[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/31" 14L, 263C appended15L, 285C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/32[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/32"' -S /tmp/vOV0G

7d/31[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/32" 4L, 34C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/33[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/33" 14L, 277C appended15L, 299C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/34[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/34"' -S /tmp/vOV0G

7d/33[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/34" 4L, 40C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  20: OK (1874575085)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/35[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/35" 58L, 1022C appended59L, 1044C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/36[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/36"' -S /tmp/vOV0G

7d/35[?1l>
[?1h="/tmp/vOV0G7d/36" 9L, 56C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  21: OK (147932225)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/37[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/37" 23L, 418C appended24L, 440C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/38[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/38"' -S /tmp/vOV0G

7d/37[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/38" 1L, 2C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/39[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/39" 23L, 437C appended24L, 459C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/40[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/40"' -c 'breaka

dd func 2 Interrupt' -S /tmp/vOV0G7d/39[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/40" 1L, 3C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/41[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/41" 21L, 386C appended22L, 408C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/42[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/42"' -S /tmp/vOV0G

7d/41[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/42" 1L, 5C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  22: OK (4161)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/43[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/43" 25L, 432C appended26L, 454C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/44[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/44"' -S /tmp/vOV0G

7d/43[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/44" 3L, 8C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  23: OK (49)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/45[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/45" 16L, 392C appended17L, 414C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/46[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/46"' -S /tmp/vOV0G

7d/45[?1l>
[?1h="/tmp/vOV0G7d/46" 3L, 7C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  24: OK (41)

*** Test  25: OK (260177811)

*** Test  26: OK (1681500476)

*** Test  27: OK (1996459)

   function F()

1      try

2Xpath 1" X: 1

3try

4Xpath 2" X: 2

5return

6Xpath 4" X: 0

7finally

8Xpath 8" X: 8

9endtry

10Xpath 16" X: 0

11     finally

12Xpath 32" X: 32

13     endtry

14     Xpath 64" X: 0

   endfunction"/tmp/vOV0G7d/47"[noeol] 17L, 552C
14 substitutions on 14 lines
Pattern not found: ^\s*$
"/tmp/vOV0G7d/47" 14L, 502C written
"test49.in" 32L, 705C
   function G()
1      try
2Xpath 128" X: 128
3return
4Xpath 256" X: 0
5      finally
6Xpath 512" X: 512
7call F()
8Xpath 1024" X: 1024
9      endtry
10     Xpath 2048" X: 0
   endfunction"/tmp/vOV0G7d/48"[noeol] 13L, 406C
10 substitutions on 10 lines
Pattern not found: ^\s*$
"/tmp/vOV0G7d/48" 10L, 378C written
"test49.in" 32L, 705C
   function H()
1      try
2Xpath 4096" X: 4096
3call G()
4Xpath 8192" X: 8192
5      finally
6Xpath 16384" X: 16384
7return
8Xpath 32768" X: 0
9      endtry

10     Xpath 65536" X: 0

   endfunction"/tmp/vOV0G7d/49"[noeol] 13L, 409C
10 substitutions on 10 lines
Pattern not found: ^\s*$
"/tmp/vOV0G7d/49" 10L, 381C written
"test49.in" 32L, 705C
*** Test  28: OK (1996459)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/50[?1l>[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/50" 39L, 721C appended40L, 743C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/51[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/51"' -S /tmp/vOV0G

7d/50[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/51" 6L, 21C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/52[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/52" 23L, 509C appended24L, 531C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/53[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/53"' -S /tmp/vOV0G

7d/52[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/53" 4L, 34C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  29: OK (170428555)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/54[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/54" 60L, 1101C appended61L, 1123C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/55[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nv

iminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/55"' -

c'breakadd func 3 F' -c 'breakadd file 19 /tmp/vOV0G7d/54' -c 'breakadd file 31

/tmp/vOV0G7d/54' -S /tmp/vOV0G7d/54[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/55" 16L, 89C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  30: OK (190905173)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/56[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/56" 60L, 1122C appended61L, 1144C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/57[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/57"' -S /tmp/vOV0G

7d/56[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/57" 16L, 89C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  31: OK (190905173)

*** Test  32: OK (354833067)

*** Test  33: OK (1216907538)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/58[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/58" 63L, 1288C appended64L, 1310C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/59[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi

minfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G

7d/59"' -c 'breakadd func 16 C' -S /tmp/vOV0G7d/58[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/59" 17L, 127C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  34: OK (2146584868)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/60[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/60" 63L, 1285C appended64L, 1307C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/61[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi

minfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G

7d/61"' -c 'breakadd func 16 B' -S /tmp/vOV0G7d/60[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/61" 17L, 127C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  35: OK (2146584868)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/62[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/62" 66L, 1430C appended67L, 1452C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/63[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vimin

fo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/

63"' -c 'breakadd func 16 R' -S /tmp/vOV0G7d/62[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/63" 9L, 81C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  36: OK (1071644672)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/64[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/64" 73L, 1488C appended74L, 1510C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/65[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/65"' -c 'breakadd

func 16 F' -S /tmp/vOV0G7d/64[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/65" 9L, 81C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  37: OK (1071644672)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/66[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/66" 82L, 1519C appended83L, 1541C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/67[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi

minfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G

7d/67"' -c 'breakadd func 16 E' -S /tmp/vOV0G7d/66[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/67" 8L, 63C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  38: OK (357908480)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/68[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/68" 83L, 1538C appended84L, 1560C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/69[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -

c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVi

mResult = "/tmp/vOV0G7d/69"' -c 'breakadd func 16 I' -c 'breakadd func 22 I' -S

/tmp/vOV0G7d/68[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/69" 8L, 63C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  39: OK (357908480)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/70[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/70" 82L, 1519C appended83L, 1541C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/71[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi

minfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G

7d/71"' -c 'breakadd func 16 T' -S /tmp/vOV0G7d/70[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/71" 8L, 63C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  40: OK (357908480)

*** Test  41: OK (3076095)

*** Test  42: OK (1505155949)

*** Test  43: OK (1157763329)

*** Test  44: OK (1031761407)

*** Test  45: OK (1157763329)

*** Test  46: OK (739407)

*** Test  47: OK (371213935)

*** Test  48: OK (756255461)

*** Test  49: OK (179000669)

   function C()

1      try

2Xpath 1" X: 1

3throw "arrgh"

4Xpath 2" X: 0

5      catch /arrgh/

6Xpath 4" X: 4

7      endtry

8      Xpath 8" X: 8

   endfunction"/tmp/vOV0G7d/72"[noeol] 11L, 334C
8 substitutions on 8 lines
Pattern not found: ^\s*$
"/tmp/vOV0G7d/72" 8L, 295C written
"test49.in" 32L, 705C
   function T1()
1      XloopNEXT
2      try
3Xloop 1" X: 16 + 16*16
4throw "arrgh"
5Xloop 2" X: 0
6      finally

7Xloop 4" X: 64 + 64*16

8      endtry

9      Xloop 8" X: 0

   endfunction"/tmp/vOV0G7d/73"[noeol] 12L, 364C
9 substitutions on 9 lines
Pattern not found: ^\s*$
"/tmp/vOV0G7d/73" 9L, 323C written
"test49.in" 32L, 705C
   function T2()
1      try
2Xpath 4096" X: 4096
3call T1()
4Xpath 8192" X: 0
5      finally
6Xpath 16384" X: 16384
7      endtry

8      Xpath 32768" X: 0

   endfunction"/tmp/vOV0G7d/74"[noeol] 11L, 332C
8 substitutions on 8 lines
Pattern not found: ^\s*$
"/tmp/vOV0G7d/74" 8L, 305C written
"test49.in" 32L, 705C
*** Test  50: OK (363550045)
*** Test  51: OK (40744667)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/76[?1l>[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/76" 2L, 41C appended3L, 63C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/77[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/77"' -S /tmp/vOV0G7d/76[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/77" 1L, 2C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/75" 8L, 182C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/78[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/78" 7L, 115C appended8L, 137C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/79[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/79"' -S /tmp/vOV0G7d/78[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/79" 1L, 2C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/75" 8L, 181C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/80[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/80" 12L, 180C appended13L, 202C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/81[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/81"' -S /tmp/vOV0G7d/80[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/81" 2L, 8C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/75" 10L, 209C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/82[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/82" 8L, 139C appended9L, 161C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/83[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/83"' -S /tmp/vOV0G7d/82[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/83" 2L, 11C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/75" 10L, 217C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/84[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/84" 5L, 87C appended6L, 109C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/85[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir!

>/tmp/vOV0G7d/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin =

1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/85"' -c 'breakadd file 4 /tmp/vOV0G7d

/84' -S /tmp/vOV0G7d/84[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/85" 1L, 7C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/75" [noeol] 9L, 202C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/86[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/86" 7L, 189C appended8L, 211C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/87[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/87"' -S /tmp/vOV0G7d/86[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/87" 1L, 8C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/75" 9L, 252C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/88[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/88" 7L, 199C appended8L, 221C8L, 220C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/89[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/75' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/89"' -S /tmp/vOV0G7d/88[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/89" 1L, 10C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/75" 9L, 214C
"test49.in" 32L, 705C

*** Test  52: OK (1247112011)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/91[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/91" 1L, 10C appended2L, 32C2L, 31C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/92[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/92"' -S /tmp/vOV0G7d/91[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/92" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/90" 6L, 154C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/93[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/93" 3L, 39C appended4L, 61C

3 substitutions on 3 lines
"/tmp/vOV0G7d/93" 4L, 58C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/94[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/94"' -S /tmp/vOV0G7d/93[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/94" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/90" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/95[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/95" 4L, 45C appended5L, 67C

4 substitutions on 4 lines
"/tmp/vOV0G7d/95" 5L, 63C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/96[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/96"' -S /tmp/vOV0G7d/95[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/96" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/90" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/97[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/97" 3L, 33C appended4L, 55C

3 substitutions on 3 lines
"/tmp/vOV0G7d/97" 4L, 52C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/98[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/98"' -S /tmp/vOV0G7d/97[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/98" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/90" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/99[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/99" 5L, 65C appended6L, 87C

5 substitutions on 5 lines
"/tmp/vOV0G7d/99" 6L, 82C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/100[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/100"' -S /tmp/vOV0G7d/99[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/100" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/90" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/101[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/101" 1L, 9C appended2L, 31C2L, 30C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/102[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/102"' -S /tmp/vOV0G7d/101[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/102" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/90" 6L, 153C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/103[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/103" 3L, 38C appended4L, 60C

3 substitutions on 3 lines
"/tmp/vOV0G7d/103"4L, 57C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/104[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/104"' -S /tmp/vOV0G7d/103[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/104" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/105[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/105" 4L, 44C appended5L, 66C

4 substitutions on 4 lines
"/tmp/vOV0G7d/105"5L, 62C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/106[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/106"' -S /tmp/vOV0G7d/105[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/106" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/107[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/107" 3L, 32C appended4L, 54C

3 substitutions on 3 lines
"/tmp/vOV0G7d/107"4L, 51C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/108[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/108"' -S /tmp/vOV0G7d/107[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/108" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/109[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/109" 5L, 64C appended6L, 86C

5 substitutions on 5 lines
"/tmp/vOV0G7d/109"6L, 81C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/110[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/110"' -S /tmp/vOV0G7d/109[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/110" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/111[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/111" 1L, 11C appended2L, 33C2L, 32C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/112[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/112"' -S /tmp/vOV0G7d/111[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/112" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/90" 6L, 157C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/113[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/113" 3L, 40C appended4L, 62C

3 substitutions on 3 lines
"/tmp/vOV0G7d/113"4L, 59C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/114[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/114"' -S /tmp/vOV0G7d/113[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/114" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/90" 6L, 161C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/115[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/115" 4L, 46C appended5L, 68C

4 substitutions on 4 lines
"/tmp/vOV0G7d/115"5L, 64C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/116[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/116"' -S /tmp/vOV0G7d/115[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/116" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/90" 6L, 161C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/117[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/117" 3L, 34C appended4L, 56C

3 substitutions on 3 lines
"/tmp/vOV0G7d/117"4L, 53C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/118[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/118"' -S /tmp/vOV0G7d/117[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/118" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/90" 6L, 161C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/119[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/119" 5L, 66C appended6L, 88C

5 substitutions on 5 lines
"/tmp/vOV0G7d/119"6L, 83C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/120[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/120"' -S /tmp/vOV0G7d/119[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/120" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/90" 6L, 161C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/121[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/121" 4L, 37C appended5L, 59C

4 substitutions on 4 lines
"/tmp/vOV0G7d/121"5L, 55C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/122[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/122"' -S /tmp/vOV0G7d/121[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/122" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/90" 6L, 150C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/123[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/123" 4L, 41C appended5L, 63C

4 substitutions on 4 lines
"/tmp/vOV0G7d/123"5L, 59C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/124[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/90' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'

-c 'let ExtraVimResult = "/tmp/vOV0G7d/124"' -S /tmp/vOV0G7d/123[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/124" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/90" 6L, 159C
"test49.in" 32L, 705C

*** Test  53: OK (131071)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/126[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/126" 1L, 13C appended2L, 35C2L, 34C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/127[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/127"' -S /tmp/vOV0G7d/126[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/127" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/125" 6L, 164C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/128[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/128" 3L, 36C appended4L, 58C

3 substitutions on 3 lines
"/tmp/vOV0G7d/128"4L, 55C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/129[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/129"' -S /tmp/vOV0G7d/128[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/129" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/125" 6L, 168C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/130[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/130" 3L, 38C appended4L, 60C

3 substitutions on 3 lines
"/tmp/vOV0G7d/130"4L, 57C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/131[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/131"' -S /tmp/vOV0G7d/130[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/131" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/125" 6L, 154C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/132[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/132" 4L, 48C appended5L, 70C

4 substitutions on 4 lines
"/tmp/vOV0G7d/132"5L, 66C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/133[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/133"' -S /tmp/vOV0G7d/132[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/133" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/125" 6L, 168C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/134[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/134" 4L, 53C appended5L, 75C

4 substitutions on 4 lines
"/tmp/vOV0G7d/134"5L, 71C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/135[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/135"' -S /tmp/vOV0G7d/134[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/135" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/125" 6L, 155C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/136[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/136" 5L, 62C appended6L, 84C

5 substitutions on 5 lines
"/tmp/vOV0G7d/136"6L, 79C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/137[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/137"' -S /tmp/vOV0G7d/136[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/137" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/125" 6L, 155C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/138[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/138" 5L, 64C appended6L, 86C

5 substitutions on 5 lines
"/tmp/vOV0G7d/138"6L, 81C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/139[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/139"' -S /tmp/vOV0G7d/138[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/139" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/125" 6L, 154C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/140[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/140" 3L, 36C appended4L, 58C

3 substitutions on 3 lines
"/tmp/vOV0G7d/140"4L, 55C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/141[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/141"' -S /tmp/vOV0G7d/140[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/141" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/125" 6L, 168C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/142[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/142" 5L, 67C appended6L, 89C

5 substitutions on 5 lines
"/tmp/vOV0G7d/142"6L, 84C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/143[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/143"' -S /tmp/vOV0G7d/142[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/143" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/125" 6L, 167C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/144[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/144" 5L, 68C appended6L, 90C

5 substitutions on 5 lines
"/tmp/vOV0G7d/144"6L, 85C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/145[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/145"' -S /tmp/vOV0G7d/144[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/145" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/125" 6L, 168C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/146[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/146" 7L, 95C appended8L, 117C

7 substitutions on 7 lines
"/tmp/vOV0G7d/146"8L, 110C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/147[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/125' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/147"' -S /tmp/vOV0G7d/146[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/147" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/125" 6L, 167C
"test49.in" 32L, 705C

*** Test  54: OK (2047)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/149[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/149" 1L, 13C appended2L, 35C2L, 34C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/150[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/150"' -S /tmp/vOV0G7d/149[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/150" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/148" 6L, 172C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/151[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/151" 3L, 36C appended4L, 58C

3 substitutions on 3 lines
"/tmp/vOV0G7d/151"4L, 55C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/152[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/152"' -S /tmp/vOV0G7d/151[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/152" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/148" 6L, 176C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/153[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/153" 4L, 48C appended5L, 70C

4 substitutions on 4 lines
"/tmp/vOV0G7d/153"5L, 66C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/154[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/154"' -S /tmp/vOV0G7d/153[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/154" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/148" 6L, 176C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/155[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/155" 3L, 36C appended4L, 58C

3 substitutions on 3 lines
"/tmp/vOV0G7d/155"4L, 55C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/156[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/156"' -S /tmp/vOV0G7d/155[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/156" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/148" 6L, 176C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/157[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/157" 5L, 68C appended6L, 90C

5 substitutions on 5 lines
"/tmp/vOV0G7d/157"6L, 85C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/158[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/158"' -S /tmp/vOV0G7d/157[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/158" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/148" 6L, 176C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/159[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/159" 1L, 10C appended2L, 32C2L, 31C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/160[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/160"' -S /tmp/vOV0G7d/159[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/160" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/148" 6L, 166C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/161[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/161" 3L, 33C appended4L, 55C

3 substitutions on 3 lines
"/tmp/vOV0G7d/161"4L, 52C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/162[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/162"' -S /tmp/vOV0G7d/161[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/162" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/148" 6L, 170C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/163[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/163" 4L, 45C appended5L, 67C

4 substitutions on 4 lines
"/tmp/vOV0G7d/163"5L, 63C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/164[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/164"' -S /tmp/vOV0G7d/163[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/164" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/148" 6L, 170C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/165[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/165" 3L, 33C appended4L, 55C

3 substitutions on 3 lines
"/tmp/vOV0G7d/165"4L, 52C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/166[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/166"' -S /tmp/vOV0G7d/165[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/166" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/148" 6L, 170C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/167[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/167" 5L, 65C appended6L, 87C

5 substitutions on 5 lines
"/tmp/vOV0G7d/167"6L, 82C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/168[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/148' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/168"' -S /tmp/vOV0G7d/167[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/168" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/148" 6L, 170C
"test49.in" 32L, 705C

*** Test  55: OK (1023)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/170[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/170" 1L, 11C appended2L, 33C2L, 32C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/171[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/171"' -S /tmp/vOV0G7d/170[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/171" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/169" 6L, 158C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/172[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/172" 3L, 34C appended4L, 56C

3 substitutions on 3 lines
"/tmp/vOV0G7d/172"4L, 53C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/173[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/173"' -S /tmp/vOV0G7d/172[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/173" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/169" 6L, 162C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/174[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/174" 3L, 40C appended4L, 62C

3 substitutions on 3 lines
"/tmp/vOV0G7d/174"4L, 59C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/175[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/175"' -S /tmp/vOV0G7d/174[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/175" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/169" 6L, 162C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/176[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/176" 3L, 32C appended4L, 54C

3 substitutions on 3 lines
"/tmp/vOV0G7d/176"4L, 51C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/177[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/177"' -S /tmp/vOV0G7d/176[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/177" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/169" 6L, 152C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/178[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/178" 3L, 35C appended4L, 57C

3 substitutions on 3 lines
"/tmp/vOV0G7d/178"4L, 54C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/179[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/179"' -S /tmp/vOV0G7d/178[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/179" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/169" 6L, 155C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/180[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/180" 4L, 44C appended5L, 66C

4 substitutions on 4 lines
"/tmp/vOV0G7d/180"5L, 62C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/181[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/181"' -S /tmp/vOV0G7d/180[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/181" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/169" 6L, 152C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/182[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/182" 4L, 47C appended5L, 69C

4 substitutions on 4 lines
"/tmp/vOV0G7d/182"5L, 65C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/183[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/183"' -S /tmp/vOV0G7d/182[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/183" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/169" 6L, 155C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/184[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/184" 5L, 64C appended6L, 86C

5 substitutions on 5 lines
"/tmp/vOV0G7d/184"6L, 81C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/185[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/185"' -S /tmp/vOV0G7d/184[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/185" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/169" 6L, 152C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/186[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/186" 5L, 67C appended6L, 89C

5 substitutions on 5 lines
"/tmp/vOV0G7d/186"6L, 84C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/187[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t

mp/vOV0G7d/169' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1

'-c 'let ExtraVimResult = "/tmp/vOV0G7d/187"' -S /tmp/vOV0G7d/186[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/187" 0L, 0C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/tmp/vOV0G7d/169" 6L, 155C
"test49.in" 32L, 705C

*** Test  56: OK (511)

   function FuncException()

1      let g:exception = v:exception

   endfunction"/tmp/vOV0G7d/188" [noeol] 4L, 80C
Pattern not found: ^\s*$
"/tmp/vOV0G7d/188"1L, 36C written
"test49.in" 32L, 705C
   function FuncThrowpoint()

1      let g:throwpoint = v:throwpoint

   endfunction"/tmp/vOV0G7d/189" [noeol] 4L, 83C
Pattern not found: ^\s*$
"/tmp/vOV0G7d/189"1L, 38C written
"test49.in" 32L, 705C
   function T(arg, line)

1      if a:line == 2

2throw a:arg" in line 2

3      elseif a:line == 4

4throw a:arg" in line 4

5      elseif a:line == 6

6throw a:arg" in line 6

7      elseif a:line == 8

8throw a:arg" in line 8

9      endif

   endfunction"/tmp/vOV0G7d/190"[noeol] 12L, 341C
9 substitutions on 9 lines
8 substitutions on 8 lines
Pattern not found: ^\s*$
"/tmp/vOV0G7d/190"9L, 292C written
"test49.in" 32L, 705C
   function G(arg, line)
1      call T(a:arg, a:line)
   endfunction"/tmp/vOV0G7d/191"[noeol] 4L, 69C
Pattern not found: ^\s*$
"/tmp/vOV0G7d/191"1L, 30C written
"test49.in" 32L, 705C
   function F(arg, line)
1      call G(a:arg, a:line)
   endfunction"/tmp/vOV0G7d/192"[noeol] 4L, 69C
Pattern not found: ^\s*$
"/tmp/vOV0G7d/192"1L, 30C written
"test49.in" 32L, 705C
*** Test  57: OK (2147450880)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/193[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/193" 87L, 1700C appended88L, 1722C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/194[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/194"' -c 'break

add func 4 T' -S /tmp/vOV0G7d/193[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/194" 8L, 36C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  58: OK (624945)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/195[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/195" 293L, 5789C appended294L, 5811C

3 substitutions on 3 lines
"/tmp/vOV0G7d/195"294L, 5808C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/196[?1l>
[?1h=:!echo 'q^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo

'-c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/196"' -c 'br

eakadd file 115 /tmp/vOV0G7d/195' -c 'breakadd file 225 /tmp/vOV0G7d/195' -S /tm

p/vOV0G7d/195[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/196" 28L, 162C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  59: OK (2038431743)
"/n/o/n/w/r/i/t/a/b/l/e/_/f/i/l/e"
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/197[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/197" 33L, 765C appended34L, 787C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/198[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/198"' -c 'break

add file 7 /tmp/vOV0G7d/197' -S /tmp/vOV0G7d/197[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/198" 3L, 27C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  60: OK (311511339)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/199[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/199" 115L, 2272C appended116L, 2294C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/200[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vimin

fo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/

200"' -c 'breakadd file 8 /tmp/vOV0G7d/199' -c 'breakadd file 36 /tmp/vOV0G7d/19

9' -c 'breakadd file 40 /tmp/vOV0G7d/199' -c 'breakadd file 69 /tmp/vOV0G7d/199'

-c 'breakadd file 95 /tmp/vOV0G7d/199' -c 'breakadd file 97 /tmp/vOV0G7d/199' -

S/tmp/vOV0G7d/199[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/200" 14L, 81C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  61: OK (374889517)

   function F()

1      while 1

2      " Missing :endwhile

   endfunction"/tmp/vOV0G7d/201"[noeol] 5L, 73C
Pattern not found: ^\s*$
"/tmp/vOV0G7d/201"2L, 40C written
"test49.in" 32L, 705C
*** Test  62: OK (286331153)
"/i/m/p/o/s/s/i/b/l/e" line 5500:

"/i/m/p/o/s/s/i/b/l/e" E212: Can't open file for writing

*** Test  63: OK (236978127)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/202[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/202" 149L, 2828C appended150L, 2850C

6 substitutions on 6 lines
"/tmp/vOV0G7d/202"150L, 2844C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/203[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/203"' -c 'break

add file 63 /tmp/vOV0G7d/202' -S /tmp/vOV0G7d/202[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/203" 16L, 97C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  64: OK (1499645335)

*** Test  65: OK (70187)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/204[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/204" 78L, 1520C appended79L, 1542C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/205[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/205"' -c 'break

add func 8 F' -S /tmp/vOV0G7d/204[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/205" 6L, 22C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  66: OK (5464)

*** Test  67: OK (212514423)

*** Test  68: OK (212514423)

*** Test  69: OK (8995471)

*** Test  70: OK (69544277)

*** Test  71: OK (34886997)

*** Test  72: OK (1789569365)

   function F0()

   endfunction

   function F1()

   endfunction

*** Test  73: OK (9032615)
"/tmp/vOV0G7d/206" [New File]
"test49.in" 32L, 705C
"/tmp/vOV0G7d/207" [New File]
"test49.in" 32L, 705C

*** Test  74: OK (224907669)

*** Test  75: OK (2000403408)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/208[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/208" 253L, 6369C appended254L, 6391C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/209[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|

set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp

/vOV0G7d/209"' -c 'breakadd func 2 INT' -S /tmp/vOV0G7d/208[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/209" 28L, 167C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  76: OK (1610087935)

Error detected while processing function ERR:

line    2:

E492: Not an editor command:     asdf

E492: Not an editor command:     asdf

E492: Not an editor command:     asdf

*** Test  77: OK (1388671)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/210[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/210" 161L, 4543C appended162L, 4565C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/211[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/211"' -S /tmp/vOV0

G7d/210[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/211" 1L, 10C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  78: OK (134217728)

Error detected while processing function NEXT:

line    1:

E121: Undefined variable: novar

E15: Invalid expression: novar | Xloop 1

E121: Undefined variable: novar

E488: Trailing characters

E108: No such variable: "novar"

E488: Trailing characters

E121: Undefined variable: novar

E15: Invalid expression: novar

E475: Invalid argument: {novar} | Xloop 1

E121: Undefined variable: novar

E15: Invalid expression:  novar

E475: Invalid argument: { novar} | Xloop 1

*** Test  79: OK (70288929)

Error detected while processing /<<PKGBUILDDIR>>/src/vim-athena/t

estdir/test49.vim:

line 7985:

E584: :elseif after :else: elseif 1 ||| 2

line 7995:

E584: :elseif after :else: elseif 1 ||| 2

line 8003:

E582: :elseif without :if: elseif 1 ||| 2

line 8011:

E582: :elseif without :if:     elseif 1 ||| 2

*** Test  80: OK (17895765)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/212[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/212" 15L, 272C appended16L, 294C16L, 293C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/213[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/213"' -S /tmp/vOV0

G7d/212[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/213" 2L, 4C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/214[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/214" 12L, 227C appended13L, 249C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/215[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/215"' -c 'break

add file 8 /tmp/vOV0G7d/214' -S /tmp/vOV0G7d/214[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/215" 2L, 8C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  81: OK (387)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/216[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/216" 20L, 417C appended21L, 439C21L, 438C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/217[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/217"' -S /tmp/vOV0

G7d/216[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/217" 1L, 2C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/218[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/218" 24L, 480C appended25L, 502C25L, 501C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/219[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/219"' -S /tmp/vOV0

G7d/218[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/219" 1L, 4C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/220[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/220" 17L, 390C appended18L, 412C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/221[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/221"' -c 'break

add file 7 /tmp/vOV0G7d/220' -S /tmp/vOV0G7d/220[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/221" 1L, 6C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/222[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/222" 21L, 444C appended22L, 466C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/223[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/223"' -c 'break

add func 6 I' -S /tmp/vOV0G7d/222[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/223" 1L, 8C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  82: OK (8454401)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/224[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/224" 17L, 307C appended18L, 329C18L, 328C written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/225[?1l>
[?1h=:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '

let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/225"' -S /tmp/vOV0

G7d/224[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/225" 3L, 7C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/226[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/226" 14L, 266C appended15L, 288C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/227[?1l>
[?1h=:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -

c'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/227"' -c 'break

add file 8 /tmp/vOV0G7d/226' -S /tmp/vOV0G7d/226[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/227" 3L, 13C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  83: OK (2835)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/228[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/228" 154L, 3580C appended155L, 3602C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/229[?1l>
[?1h=:!echo 'q^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo

'-c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/229"' -c 'br

eakadd func 1 INT' -S /tmp/vOV0G7d/228[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/229" 18L, 118C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"test49.in" 32L, 705C

*** Test  84: OK (934782101)

TMP
"/tmp/vOV0G7d/230" [noeol] 2L, 6C/  
"test49.in" 32L, 705C
"/n/o/n/e/x/i/s/t/e/n/t"

"/tmp/vOV0G7d/232" 1L, 1C
"test49.in" 32L, 705C

:!echo XYZ >/tmp/vOV0G7d/233[?1l>
[?1h="/tmp/vOV0G7d/234" [New File]
"test49.in" 32L, 705C

*** Test  85: OK (198689)

line 8769:

E123: Undefined function: F

Make_all.mak
"Make_all.mak" line 1 of 202 --0%-- col 1

line 8772:

E926: Current location list was changed

line 8773:

E193: :endfunction not inside a function

Error detected while processing function ExecAsScript[2]..MakeScript:

line    3:

E123: Undefined function: F
"/tmp/vOV0G7d/235" [noeol] 4L, 109C

search hit BOTTOM, continuing at TOP
line   10:
E486: Pattern not found: .*F(.*)

search hit BOTTOM, continuing at TOP
line   11:
E486: Pattern not found: ^\d*\s*endfunction\>

4 substitutions on 4 lines
"/tmp/vOV0G7d/235"3L, 109C written
"Make_all.mak" 202L, 3684C

Error detected while processing /tmp/vOV0G7d/235:

line    1:

E492: Not an editor command: Error detected while processing function ExecAsScr

ipt[2]..MakeScript:

line    2:

E492: Not an editor command: line    3:

line    3:

E492: Not an editor command: E123: Undefined function: F

Error detected while processing /<<PKGBUILDDIR>>/src/vim-athena/t

estdir/test49.vim:

line 8779:

E130: Unknown function: F

*** Test  86: OK (0)

5
*** Test  87: OK (0)
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!echo 'source /tmp/vOV0G7d/0' >/tmp/vOV0G7d/236[?1l>
[?1h=/^\s*if\s\+ExtraVim(.*)/+
1
"/tmp/vOV0G7d/236" 151L, 3929C appended152L, 3951C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C

:!>/tmp/vOV0G7d/237[?1l>
[?1h=:!echo 'q^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nvimi

nfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vOV0G7d/237"' -c

'breakadd func 5 ThrowOnInterrupt' -S /tmp/vOV0G7d/236[?1l>

shell returned 1

[?1h="/tmp/vOV0G7d/237" 16L, 281C
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/test49.vim"
<PoUg/vim-8.0.0022/src/vim-athena/testdir/test49.vim" [readonly] 9009L, 206880C
"Make_all.mak" 202L, 3684C

*** Test  88: OK (50443995)

Press ENTER or type command to continue:" Go back to this file and append the results from register r.
#
# Common Makefile, defines the list of tests to run.
#

NO_PLUGIN = -U NONE --noplugin --not-a-term

# The first script creates small.vim.
SCRIPTS_FIRST = \test1.out

# Tests that run on all systems.
SCRIPTS_ALL = \test3.out \test4.out \test5.out \test7.out \test8.out \test9.out \test14.out \test15.out \test19.out \test20.out \test22.out \:buf test49.in
"test49.in" 32L, 705C:so test49.vim
:" Go back to this file and append the results from register r.
:buf test49.in
G"rp:/^Results/,$w! test.out
:":" make valgrind happy
:redir => funclis:silent func:redir END:for line in split(funclist, "\n")
:  let name = matchstr(line, 'function \zs[A-Z]\w*\ze(')
:  if name != ''
:    exe "delfunc " . name
:  endif:endfor:for v in keys(g:):  silent! exe "unlet " . v
:endfor:unlet v:qa!ENDTESTResults of test49.vim:

83 more lines
*** Test  16: OK (8722)83 more lines:/^Results/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New] 84L, 2484C written:"
:" make valgrind happy
:redir => funclist
:silent func
:redir END
:for line in split(funclist, "\n")

:  :  let name = matchstr(line, 'function \zs[A-Z]\w*\ze(')

:  :  if name != ''

:    :    exe "delfunc " . name

:    :  endif

:  :endfor
:" Go back to this file and append the results from register r.
:buf test49.in
G"rp:/^Results/,$w! test.out
:"
:" make valgrind happy
:for v in keys(g:)

:  :  silent! exe "unlet " . v

:  :endfor
:" Go back to this file and append the results from register r.
:buf test49.in
:unlet v
:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test49 = test61; then \
#	  if diff test.out test49.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test49.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test49.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test97.failed test.ok test.out X* viminfo
cp test97.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test97.in
[?1h="test97.in" 23 lines, 483 charactersTest whether glob()/globpath() return correct results with certain escaped
characters.

STARTTEST
:so small.vim
:" make sure glob() doesn't use the shell
:set shell=doesnotexist
:" consistent sorting of file names
:set nofileignorecase
:e test.out
:$put =glob('Xxx\{')
:$put =glob('Xxx\$')
:w! Xxx{
:w! Xxx\$
:$put =glob('Xxx\{')
:$put =glob('Xxx\$')
:"
:$put =string(globpath('sautest/autoload', '*.vim'))
:$put =string(globpath('sautest/autoload', '*.vim', 0, 1))
:w
:qa!
ENDTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test whether glob()/globpath() return correct results with certain escaped/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 17 lines, 376 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:" make sure glob() doesn't use the shell
:set shell=doesnotexist
:" consistent sorting of file names
:set nofileignorecase
:e test.out
"test.out" [New File]~
~~~~~~~~~~~~~~~~~~~~
~:$put =glob('Xxx\{')
:$put =glob('Xxx\$')
:w! Xxx{

Cannot execute shell doesnotexist


E79: Cannot expand wildcards

"Xxx{" [New File] 3 lines, 3 characters written

Press ENTER or type command to continue:w! Xxx\$
"Xxx$" [New File] 3 lines, 3 characters written

Press ENTER or type command to continue:$put =glob('Xxx\{')
Xxx{
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:$put =glob('Xxx\$')
Xxx$
:"
:$put =string(globpath('sautest/autoload', '*.vim'))
'sautest/autoload/Test104.vim
sautest/autoload/footest.vim'
:$put =string(globpath('sautest/autoload', '*.vim', 0, 1))
['sautest/autoload/Test104.vim', 'sautest/autoload/footest.vim']
:w
"test.out" [New File] 8 lines, 138 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test97 = test61; then \
#	  if diff test.out test97.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test97.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test97.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_listlbr_utf8.failed test.ok test.out X* viminfo
cp test_listlbr_utf8.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr_utf8.in
[?1h="test_listlbr_utf8.in" 134 lines, 4027 charactersTest for linebreak and list option in utf-8 mode

STARTTEST
:so small.vim
:if !exists("+linebreak") || !has("conceal") || !has("signs") | e! test.ok | w!  test.out | qa! | endif
:so mbyte.vim
:set encoding=utf8
:if &enc !=? 'utf-8'|:e! test.ok|:w! test.out|qa!|endif
:10new|:vsp|:vert resize 20
:put =\"\tabcdef hijklmn\tpqrstuvwxyz\u00a01060ABCDEFGHIJKLMNOP \"
:norm! zt
:set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
:fu! ScreenChar(width, lines)
:let c=''
:for j in range(1,a:lines)
:for i in range(1,a:width)
:let c.=nr2char(screenchar(j, i))
:endfor
:let c.="\n"
:endfor
:return c
:endfu:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for linebreak and list option in utf-8 mode/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 129 lines, 3948 characters written:set ff& cpo+=A
/ENDTEST:set list nolinebreak cc=3
:sign define foo text=^Vuff0b
:sign place 1 name=foo line=50 buffer=2
:norm! 2kztj
:let line1=line('.')
0GGlGGlGGlGGl
:let line2=line('.')
:let attr2=attr
:let attr=[]
0GGlGGlGGlGGl
:redraw!
:let line=ScreenChar(winwidth(0),3)
:call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text

:so! Xdotest
:so small.vim
:if !exists("+linebreak") || !has("conceal") || !has("signs") | e! test.ok | w!

test.out | qa! | endif
:set list nolinebreak cc=3
:so mbyte.vim
:set encoding=utf8
:set list nolinebreak cc=3
:sign define foo text=^Vuff0b
:sign place 1 name=foo line=50 buffer=2
:norm! 2kztj
:let line1=line('.')
0GGlGGlGGlGGl
:let line2=line('.')
:let attr2=attr
:let attr=[]
0GGlGGlGGlGGl
:redraw!
:let line=ScreenChar(winwidth(0),3)
:call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text

:if &enc !=? 'utf-8'|:e! test.ok|:w! test.out|qa!|endif
:10new|:vsp|:vert resize 20
                    ||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name]            ~~~~~~~~~[No Name]                                                  call DoRecordScreen()" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")else   call append('$', "Screen attributes are the same!")
:endif%w! test.out
:qaENDTEST
dummy text
test_listlbr_utf8.in                                                            :put =\"\tabcdef hijklmn\tpqrstuvwxyz\u00a01060ABCDEFGHIJKLMNOP \"
        abcdef hijkl
mn  pqrstuvwxyz 1060
ABCDEFGHIJKLMNOP    [+] abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP[+]:norm! zt
        abcdef hijkl
mn  pqrstuvwxyz 1060
ABCDEFGHIJKLMNOP    
~                   
~                   
~                   
~                   
~                   
~                   
                    
~                   :set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
abcdef          
+hijklmn            
+pqrstuvwxyz 1060ABC
+DEFGHIJKLMNOP      abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP :fu! ScreenChar(width, lines)

:  :^Ilet c=''

:  :^Ifor j in range(1,a:lines)

:    :^I    for i in range(1,a:width)

:      :^I    ^Ilet c.=nr2char(screenchar(j, i))

:      :^I    endfor

:    :           let c.="\n"

:    :^Iendfor

:  :^Ireturn c

:  :endfu
abcdef|
+hijklmn|
+pqrstuvwxyz 1060ABC|
+DEFGHIJKLMNOP      ||||||~                   
~                   
~                   
~                   
~                   abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP~~~~~~~:fu! DoRecordScreen()

:  :^Iwincmd l

:  :^I$put =printf(\"\n%s\", g:test)

:  :^I$put =g:line

:  :^Iwincmd p

:  :endfu
abcdef|
+hijklmn|
+pqrstuvwxyz 1060ABC|
+DEFGHIJKLMNOP      ||
~                   abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP~~~:"
:let g:test ="Test 1: set linebreak + set list + fancy listchars"
:exe "set linebreak list listchars=nbsp:\u2423,tab:\u2595\u2014,trail:\u02d1,eo

l:\ub6"
▕———abcdef|▕———␣ˑ¶:redraw!
▕———abcdef|
+hijklmn▕———|
+pqrstuvwxyz␣1060ABC|
+DEFGHIJKLMNOPˑ¶|||||||~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOP~~~~~~~~[No Name] [+]                                              :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),4)
:call DoRecordScreen()
4 more lines¶                   
Test 1: set         
+linebreak + set    
+list + fancy       
+listchars¶         
▕———abcdefˑˑˑˑˑˑˑˑˑˑ
@                   Test 1: set linebreak + set list + fancy listchars▕———abcdef+hijklmn▕———+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶:"
:let g:test ="Test 2: set nolinebreak list"
:set list nolinebreak
hijklmn▕—pqrstuvwxyz␣1060ABCDEFGHIJKLMNOPˑ¶    
¶               
Test 1: set linebrea
+k + set list + fancy listchars¶   
▕———abcdefˑˑˑˑˑˑˑˑˑˑ
+¶         
+hijklmn▕———ˑˑˑˑˑˑˑˑ
@                   :redraw!
▕———abcdef hijklmn▕—|
+pqrstuvwxyz␣1060ABC|
+DEFGHIJKLMNOPˑ¶|
¶|
Test 1: set linebrea|
+k + set list + fanc|
+y listchars¶|
▕———abcdefˑˑˑˑˑˑˑˑˑˑ|
+¶|
+hijklmn▕———ˑˑˑˑˑˑˑˑ|
@                   
[No Name] [+]        abcdef hijklmn  pqrstuvwxyz 1060ABCDEFGHIJKLMNOPTest 1: set linebreak + set list + fancy listchars▕———abcdef+hijklmn▕———+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶~~[No Name] [+]                                              :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            +hijklmn▕———ˑˑˑˑˑˑˑˑ
@                   :let line=ScreenChar(winwidth(0),4)
:call DoRecordScreen()
4 more lines▕———abcdef                                                 +hijklmn▕———                                               +pqrstuvwxyz␣1060ABC                                       +DEFGHIJKLMNOPˑ¶                                           ~                                                          ~                                                                                                                                                                                                                                                                                                      Test 2: set nolinebreak list▕———abcdef hijklmn▕—+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶4 more lines:"
:let g:test ="Test 3: set linebreak nolist"
:$put =\"\t*mask = nil;\"
▕———▕—¶                  
+pqrstuvwxyz␣1060ABC
+¶+DEFGHIJKLMNOPˑ¶ˑˑˑˑ
+¶                 
¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ
+¶                  
▕———*mask = nil;¶~:$
:norm! zt
▕———*mask = nil;¶   
~                   
                    
                    
                    
                    
                    
                    
                    
                    ~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   :set nolist linebreak
     
    :redraw!
*mask = nil;    ||||||||||~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
[No Name] [+]        ▕———abcdef+hijklmn▕———+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶Test 2: set nolinebreak list▕———abcdef hijklmn▕—+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶[No Name] [+]                                              :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),4)
:call DoRecordScreen()
4 more lines                    
Test 3: set         
+linebreak nolist   
    *mask = nil;    
~                   
~                   
~                   +pqrstuvwxyz␣1060ABC                                       +DEFGHIJKLMNOPˑ¶                                           ¶                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       *mask = nil;Test 3: set linebreak nolist*mask = nil;~~~4 more lines:"
:let g:test ="Test 4: set linebreak list listchars and concealing"
:let c_defines=['#define ABCDE^I^I1','#define ABCDEF^I^I1','#define ABCDEFG^I^I

1','#define ABCDEFGH^I1', '#define MSG_MODE_FILE^I^I^I1','#define MSG_MODE_CONSO

LE^I^I2','#define MSG_MODE_FILE_AND_CONSOLE^I3','#define MSG_MODE_FILE_THEN_CONS

OLE^I4']
*mask = nil;    ||
Test 3: set|+pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶:call append('$', c_defines)
#define             
+ABCDE      1       :vert resize 40
                    |                    |linebreak nolist|
    *mask = nil;                        |
~                    |                    |                    |
#define ABCDE1 |ABCDEF      1 |
#define ABCDEFG     1 |                    +pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶*mask = nil;Test 3: set linebreak nolist*mask = nil;~~~[No Name] [+]:$-7
:norm! zt
#define ABCDE       1                   
#define ABCDEF      1                   
#define ABCDEFG     1                   
                                        
                                        
                                        
                                        
                                        
                                        
                                        #define ABCDEFGH    1
#define MSG_MODE_FILE1
#define MSG_MODE_CONSOLE2
#define MSG_MODE_FILE_AND_CONSOLE   3
#define MSG_MODE_FILE_THEN_CONSOLE  4
~                                       
~                                       :set list linebreak listchars=tab:>- cole=1
>-->--->->--->>--->--->-->--->--->--->--->-->-:syn match Conceal conceal cchar=>'AB\|MSG_MODE'
>CDEF>->CDEFG>->CDEFGH>->_FILE>------->_CONSOLE>------->_FILE_AND_CONSOLE>------->_FILE_THEN_CONSOLE>-------:redraw!
#define ABCDE>-->---1|
#define >CDEF>-->---1|
#define >CDEFG>->---1|
#define >CDEFGH>----1|
#define >_FILE>--------->--->---1|
#define >_CONSOLE>---------->---2|
#define >_FILE_AND_CONSOLE>---------3   |
#define >_FILE_THEN_CONSOLE>--------4   |||~                                       
~                                       
[No Name] [+]                            +pqrstuvwxyz␣1060ABC+DEFGHIJKLMNOPˑ¶¶*mask = nil;Test 3: set linebreak nolist*mask = nil;~~~[No Name] [+]                          :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),7)
:call DoRecordScreen()
>CDE>-7 more lines                                        
Test 4: set linebreak list listchars    
@                                       #define >CDEFG>->---1+ #define >CDEFGH>----1+#define >_FILE>--------->--->---1+ #define >_CONSOLE>---------->---2+#define >_FILE_AND_CONSOLE>---------3+ABCDE>
:"
:let g:test ="Test 5: set linebreak list listchars and concealing part2"
:let c_defines=['bbeeeeee^I^I;^Isome text']
:call append('$', c_defines)
:$
@                                       
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        Test 4: set linebreak list listchars    
+and concealing
#define >CDE>-->---1
#define >CDEF>-->---1
#define >CDEFG>->---1
#define >CDEFGH>----1
#define >_FILE>--------->--->---1
#define >_CONSOLE>---------->---2
#define >_FILE_AND_CONSOLE>---------3
bbeeeeee>--->---;>--some text:norm! zt
bbeeeeee>--->---;>--some text           
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        ~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       :set nowrap ts=2 list linebreak listchars=tab:>- cole=2 concealcursor=n
>;>some text      :syn clear
:syn match meaning    /;\s*\zs.*/
:syn match hasword    /^\x\{8}/    contains=word
:syn match word       /\<\x\{8}\>/ contains=beginword,endword contained
:syn match beginword  /\<\x\x/     contained conceal
eeeeee>--:syn match endword    /\x\{6}\>/   contained
:hi meaning   guibg=blue
:hi beginword guibg=green
:hi endword   guibg=red
:redraw!
eeeeee>--->-;>some text||||||||||~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
[No Name] [+]                            #define >CDEFG>->---1+#define >CDEFGH>----1+#define >_FILE>--------->--->---1+#define >_CONSOLE>---------->---2+#define >_FILE_AND_CONSOLE>---------3+[No Name] [+]                          :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),1)
:call DoRecordScreen()
                                        
Test 5: set linebreak list listchars and
eeeeee>--->-;>some text                 #define >_CONSOLE>---------->---2      +                                      #define >_FILE_AND_CONSOLE>---------3  +                                                                                                                                                                                                                                                                                bbeeeeee    ; some textTest 5: set linebreak list listchars an+d concealing part2eeeeee>--->-;>some text+:"
:let g:test ="Test 6: Screenattributes for comment"
:$put =g:test
Test 6: Screenattributes for comment    :call append('$', ' /*^I^I and some more */')
 /*>>- and some more */                 :exe "set ft=c ts=7 linebreak list listchars=nbsp:\u2423,tab:\u2595\u2014,trail

:\u02d1,eol:\ub6"
eeeeee▕———————▕——————;▕—————some text¶|
¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ¶▕———▕—————— and some more */¶#define >_CONSOLE>---------->---2         ;      some text:syntax on
bbeeeeee▕56for
 /* and some more */#define >_CONSOLE>---------->---2       #define >_FILE_AND_CONSOLE>---------3   5:hi SpecialKey term=underline ctermfg=red guifg=red
▕—————▕——————▕—————ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ▕———▕——————:let attr=[]
:nnoremap <expr> GG ":let attr += ['".screenattr(screenrow(),screencol())."']\n

"bbeeeeee▕—————▕——————;▕—————some text¶|#define >_CONSOLE>---------->---2      :$
:norm! zt0
 /*▕———▕—————— and some more */¶        
~                                       
~                                       
~                                       
~                                       
                                        
                                        
                                        
                                        
                                        ~                                       
~                                       
~                                       
~                                       
~                                       :let attr += ['0']
:let attr += ['2']
:let attr += ['2']
:let attr += ['8']
:let attr += ['8']
:let attr += ['2']
:let attr += ['2']
:let attr += ['2']
:let attr += ['2']
:let attr += ['2']
:call append('$', ['ScreenAttributes for test6:'])
ScreenAttributes for test6:¶            :if attr[0] != attr[1] && attr[1] != attr[3] && attr[3] != attr[5]

:  :   call append('$', "Attribut 0 and 1 and 3 and 5 are different!")

:  :else

:  :   call append('$', "Not all attributes are different")

:  :endif
/*▕———▕—————— and some more */¶|
ScreenAttributes for test6:¶|
Attribut 0 and 1 and 3 and 5 are differe||
~                                       #define >_CONSOLE>---------->---2      + #define >_FILE_AND_CONSOLE>---------3  + :set cpo&vim linebreak selection=exclusive
:"
:let g:test ="Test 8: set linebreak with visual block mode and v_b_A and select

ion=exclusive and multibyte char"
/*▕———▕—————— and some more */¶|#define >_CONSOLE>---------->---2      :$put =g:test
Test 8: set linebreak with visual block long line:ˑ¶                            ¶                               
¶                           
¶                                       
¶                                      
oobar foobar foobar foobar foobarˑ¶
foobar foobar TARGET¶              Ã' at end¶:exe "norm! $3B\<C-v>eAx\<Esc>"
x' at end¶:"
:let g:test ="Test 9: a multibyte sign and colorcolumn"
:let attr=[]
:let attr2=[]
:$put =''
 /*▕———▕—————— and some more */¶ScreenAttributes for test6:¶Attribut 0 and 1 and 3 and 5 are differe
Test 8: set linebreak with visual block
long line: foobar foobar foobar foobar f
¶                                       :$put ='a b c'
a b c¶                                  :$put ='a b c'
a b c¶                                  :set list nolinebreak cc=3
*
Scr
Att
Tesn 
a b
a b:sign define foo text=^+
:sign place 1 name=foo line=50 buffer=2
   /*▕—▕—— and some more */¶  ScreenAttributes for test6:¶  Attribut 0 and 1 and 3 and 5 are diff
  Test 8: set linebreak with visual bloc
  long line: foobar foobar foobar foobar
  ¶ 
+a b c¶  a b c¶  
  ~~  #define >_CONSOLE>-->---2  +     #define >_FILE_AND_CONSOLE>--3  +     bbeeeeee  ;      some text    Test 5: set linebreak list listchars   +and concealing part2  eeeeee>--->-;>some text  +:norm! 2kztj
  ¶                                     
+a b c¶                                
  a b c¶                                
  ~                                     
  ~                                     
                                        
                                        
                                        
                                        
                                          
  
  
  
  ~                                     ~                                     ~                                     ~                                     ~                                     :let line1=line('.')
:let attr += ['0']
:let attr += ['0']
:let attr += ['1']
:let attr += ['0']
:let line2=line('.')
:let attr2=attr
:let attr=[]
:let attr += ['0']
:let attr += ['0']
:let attr += ['1']
:let attr += ['0']
:redraw!
  ¶ |
+a b c¶|
  a b c¶||||||||  
  
  
  
  
  
  ~                                     ~                                     ~                                     ~                                     ~                                     ~                                     ~                                     
[No Name] [+]                              #define >_CONSOLE>---------->---2      +     #define >_FILE_AND_CONSOLE>---------3  +     bbeeeeee;      some text    Test 5: set linebreak list listchars  +and concealing part2  eeeeee>--->-;>some text  +[No Name] [+]                          :call DoRecordScreen()
:" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]
:   call append('$', "Screen attributes are different!")
:else
:   call append('$', "Screen attributes are the same!")
:endif
:%w! test.out
:qa!
ENDTEST
dummy text
test_listlbr_utf8.in                                                            :let line=ScreenChar(winwidth(0),3)
:call DoRecordScreen()
3 more lines¶                                     Test 9: a multibyte sign and colorcolu  ¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ+a b c¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑ  a b c¶ˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑˑa b cTest 9: a multibyte sign and colorcolumn  ¶                     ++a b c¶                                 a b c¶               :" expected: attr[2] is different because of colorcolumn
:if attr[0] != attr2[0] || attr[1] != attr2[1] || attr[2] != attr2[2]

:  :   call append('$', "Screen attributes are different!")

:  :else

:  :   call append('$', "Screen attributes are the same!")

:  :endif
  ¶ |
+a b c¶|
  a b c¶|
  ¶ |Screen attributes are the same!¶        a b c    Test 9: a multibyte sign and colorcol  +umn:%w! test.out
"test.out" [New File] 57 lines, 1882 characters writtentest.out     test.out     :qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test_listlbr_utf8 = test61; then \
#	  if diff test.out test_listlbr_utf8.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test_listlbr_utf8.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test_listlbr_utf8.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test54.failed test.ok test.out X* viminfo
cp test54.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test54.in
[?1h="test54.in" 22 lines, 658 charactersSome tests for buffer-local autocommands

STARTTEST
:so small.vim
:e xx
:if has("vms")
: !del test.out.*
: au BufLeave <buffer> :!write sys$output "buffer-local autommand in %" > test.oout
:else
: !rm -f test.out
: au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
:endif
:e somefile" here, autocommand for xx shall write test.out
:" but autocommand shall not apply to buffer named <buffer>:bwipe xx" here, autocommand shall be auto-deleted
:e xx" nothing shall be written
:e somefile" nothing shall be written
:qa!
ENDTEST

start of test file xx
end of test file xx:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Some tests for buffer-local autocommands/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 15 lines, 555 characters written:set ff& cpo+=A
/ENDTEST
:so! Xdotest
:so small.vim
:e xx
"xx" [New File]~~~~~~~~~~~~~~~~~~~
~~~:if has("vms")

:  : !del test.out.*

:  : au BufLeave <buffer> :!write sys$output "buffer-local autommand in %" > te

st.out

:  :else

:  : !rm -f test.out

:!rm -f test.out[?1l>
[?1h=:  : au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out

:  :endif
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:e somefile           " here, autocommand for xx shall write test.out 
:!echo buffer-local autommand in xx>> test.out

"somefile" [New File]

Press ENTER or type command to continue:                     " but autocommand shall not apply to buffer named <buffer

>~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:bwipe xx             " here, autocommand shall be auto-deleted
:e xx                 " nothing shall be written
"xx" [New File]:e somefile           " nothing shall be written
"somefile" [New File]:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test54 = test61; then \
#	  if diff test.out test54.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test54.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test54.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test17.failed test.ok test.out X* viminfo
cp test17.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test17.in
[?1h="test17.in" 135 lines, 2431 charactersTests for:
- "gf" on ${VAR},
- ":checkpath!" with various 'include' settings.

STARTTEST
:so small.vim
:if has("ebcdic")
: set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,}
:else
: set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,}
:endif
:"
:if has("unix")
:let $CDIR = "."
/CDIR
:else
:if has("amiga")
:let $TDIR = "/testdir"
:else
:let $TDIR = "."
:endif
/TDIR
:endif:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 27 lines, 564 characters written:set ff& cpo+=A
/ENDTEST









:" Dummy writing for making that sure gf doesn't fail even if the current
:" file is modified. It can be occurred when executing the following command
:" directly on Windows without fixing the 'fileformat':
:"  > nmake -f Make_dos.mak test17.out
:w! test.out
gf
:set ff=unix
:w! test.out
:brewind
ENDTEST

:so! Xdotest
:so small.vim
:if has("ebcdic")

:  : set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,}

:  :else

:  : set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,}

:  :endif
:"
:if has("unix")
:let $CDIR = "."
/CDIR
:"
:if has("unix")

:  :let $CDIR = "."

:  /CDIR

:  :else

:  :if has("amiga")

:    :let $TDIR = "/testdir"

:    :else

:    :let $TDIR = "."

:    :endif

:  /TDIR

:  :endif
:if has("unix")
:let $CDIR = "."
/CDIR
:else
:if has("amiga")
:let $TDIR = "/testdir"
:else
:let $TDIR = "."
:endif
/TDIR
:endif
:" Dummy writing for making that sure gf doesn't fail even if the current
:" file is modified. It can be occurred when executing the following command
:" directly on Windows without fixing the 'fileformat': > nmake -f Make_dos.mak test17.outw! test.outgf:set ff=unix
:w! test.out
:brewindENDTEST${CDIR}/test17a.in
:" Dummy writing for making that sure gf doesn't fail even if the current
:" file is modified. It can be occurred when executing the following command
:" directly on Windows without fixing the 'fileformat':
:"  > nmake -f Make_dos.mak test17.out
:w! test.out
"test.out" [New File] 135 lines, 2431 characters written
"/<<PKGBUILDDIR>>/src/vim-athena/testdir/./test17a.in" 3 lines, 8

8characters

Press ENTER or type command to continueThis file is just to test "gf" in test 17.
The contents is not important.
Just testing!~~~~~~~~~~~~~~~~~~
~~:set ff=unix
:w! test.out
"test.out" 3 lines, 88 characters written:brewind
"test17.in" 135 lines, 2431 characters:" Dummy writing for making that sure gf doesn't fail even if the current
:" file is modified. It can be occurred when executing the following command
:" directly on Windows without fixing the 'fileformat':
:"  > nmake -f Make_dos.mak test17.out
:w! test.out
gf
:set ff=unix
:w! test.out
:brewind
ENDTEST ${CDIR}/test17a.in
 $TDIR/test17a.inSTARTTEST
:" check for 'include' without \zs or \ze
:lang C
:call delete("./Xbase.a")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:e! Xdir1/dir2/foo.a
i#include   "bar.a"^[:/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 23 lines, 396 characters written:set ff& cpo+=A
/ENDTEST: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
:call delete("./Xbase.b")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*/\zs[^/]\+\ze'
:function! DotsToSlashes()
:  return substitute(v:fname, '\.', '/', 'g') . '.b'
:endfunction
:so! Xdotest
:" check for 'include' without \zs or \ze
:lang C
:call delete("./Xbase.a")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir "Xdir1/dir2"
[?1l>
[?1h=
Press ENTER or type command to continue:e! Xdir1/dir2/foo.a
"Xdir1/dir2/foo.a" [New File]~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~#include   "bar.a"::w
"Xdir1/dir2/foo.a" [New File] 1 line, 19 characters written:e Xdir1/dir2/bar.a
"Xdir1/dir2/bar.a" [New File]#include      "baz.a"::w
"Xdir1/dir2/bar.a" [New File] 1 line, 22 characters written:e Xdir1/dir2/baz.a
"Xdir1/dir2/baz.a" [New File]#include"foo.a"::w
"Xdir1/dir2/baz.a" [New File] 1 line, 28 characters written:e Xbase.a
"Xbase.a" [New File]:set path=Xdir1/dir2
#include    <foo.a>::w
"Xbase.a" [New File] 1 line, 20 characters written:redir! >>test.out
:checkpath!
--- 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)

Press ENTER or type command to continue:redir END
#include    <foo.a>
~
~
~
~
~
~
~:brewind
"test17.in" 135 lines, 2431 charactersi#include            "foo.a"^[:
:w
:e Xbase.a
:set path=Xdir1/dir2
i#include    <foo.a>^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
ENDTESTSTARTTEST
:" check for 'include' with \zs and \ze
:call delete("./Xbase.b")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*/\zs[^/]\+\ze'
:function! DotsToSlashes()
:  return substitute(v:fname, '\.', '/', 'g') . '.b'
:endfunction
:let &includeexpr='DotsToSlashes()'/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 27 lines, 532 characters written:set ff& cpo+=A
/ENDTEST: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
:call delete("./Xbase.c")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
:function! StripNewlineChar()
:  if v:fname =~ '\n$'
:    return v:fname[:-2]
:so! Xdotest
:" check for 'include' with \zs and \ze
:call delete("./Xbase.b")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir "Xdir1/dir2"
[?1l>
[?1h=
Press ENTER or type command to continue:let &include='^\s*%inc\s*/\zs[^/]\+\ze'
: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
:call delete("./Xbase.c")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
:function! StripNewlineChar()
:  if v:fname =~ '\n$'
:    return v:fname[:-2]:function! DotsToSlashes()

:  :  return substitute(v:fname, '\.', '/', 'g') . '.b'

:  :endfunction
:e Xdir1/dir2/baz.b
i%inc/foo/^[::let &includeexpr='DotsToSlashes()'
:e! Xdir1/dir2/foo.b
"Xdir1/dir2/foo.b" [New File]~~~~~~~~~~~
~~~~~~~~~~~%inc   /bar/::w
"Xdir1/dir2/foo.b" [New File] 1 line, 13 characters written:e Xdir1/dir2/bar.b
"Xdir1/dir2/bar.b" [New File]%inc      /baz/::w
"Xdir1/dir2/bar.b" [New File] 1 line, 16 characters written:e Xdir1/dir2/baz.b
"Xdir1/dir2/baz.b" [New File]%inc/foo/::w
"Xdir1/dir2/baz.b" [New File] 1 line, 22 characters written:e Xbase.b
"Xbase.b" [New File]:set path=Xdir1/dir2
%inc    /foo/::w
"Xbase.b" [New File] 1 line, 14 characters written:redir! >>test.out
:checkpath!
--- 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)

Press ENTER or type command to continue:redir END
%inc    /foo/
~
~
~
~
~
~
~:brewind
"test17.in" 135 lines, 2431 charactersi%inc            /foo/^[:
:w
:e Xbase.b
:set path=Xdir1/dir2
i%inc    /foo/^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
ENDTESTSTARTTEST
:" check for 'include' with \zs and no \ze
:call delete("./Xbase.c")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
:!mkdir "Xdir1/dir2"
:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
:function! StripNewlineChar()
:  if v:fname =~ '\n$'
:    return v:fname[:-2]
:  endif/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" 39 lines, 745 characters written:set ff& cpo+=A
/ENDTEST:w
:e Xdir1/dir2/baz.c
i%incfoo.c^[:
:w
:e Xdir1/dir2/FALSE.c
i%incfoo.c^[:
:w
:e Xbase.c
:set path=Xdir1/dir2
i%inc    FALSE.c foo.c^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
:" change "\" to "/" for Windows and fix 'fileformat'
:e test.out
:%s#\\#/#g
:set ff&
:w
:q
ENDTEST


:so! Xdotest
:" check for 'include' with \zs and no \ze
:call delete("./Xbase.c")
:call delete("Xdir1", "rf")
:!mkdir Xdir1
[?1l>
[?1h=
Press ENTER or type command to continue:!mkdir "Xdir1/dir2"
[?1l>
[?1h=
Press ENTER or type command to continue:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
:w
:e Xdir1/dir2/baz.c
i%incfoo.c^[:
:w
:e Xdir1/dir2/FALSE.c
i%incfoo.c^[:
:w
:e Xbase.c
:set path=Xdir1/dir2
i%inc    FALSE.c foo.c^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
:" change "\" to "/" for Windows and fix 'fileformat'
:e test.out
:%s#\\#/#g
:set ff&
:w
:q
ENDTEST

:function! StripNewlineChar()

:  :  if v:fname =~ '\n$'

:    :    return v:fname[:-2]

:    :  endif

:  :  return v:fname

:  :endfunction
:w
:e Xdir1/dir2/baz.c
i%incfoo.c^[:
:w
:e Xdir1/dir2/FALSE.c
:let &includeexpr='StripNewlineChar()'
:e! Xdir1/dir2/foo.c
"Xdir1/dir2/foo.c" [New File]~~~~~~~~~~~~~~~~~~~~~
~%inc   bar.c::w
"Xdir1/dir2/foo.c" [New File] 1 line, 13 characters written:e Xdir1/dir2/bar.c
"Xdir1/dir2/bar.c" [New File]%inc      baz.c::w
"Xdir1/dir2/bar.c" [New File] 1 line, 16 characters written:e Xdir1/dir2/baz.c
"Xdir1/dir2/baz.c" [New File]%incfoo.c::w
"Xdir1/dir2/baz.c" [New File] 1 line, 22 characters written:e Xdir1/dir2/FALSE.c
"Xdir1/dir2/FALSE.c" [New File]%incfoo.c::w
"Xdir1/dir2/FALSE.c" [New File] 1 line, 22 characters written:e Xbase.c
"Xbase.c" [New File]:set path=Xdir1/dir2
%inc    FALSE.c foo.c::w
"Xbase.c" [New File] 1 line, 22 characters written:redir! >>test.out
:checkpath!
--- 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)

Press ENTER or type command to continue:redir END
%inc    FALSE.c foo.c
~
~
~
~
~
~
~:brewind
"test17.in" 135 lines, 2431 characters:w:e Xdir1/dir2/baz.c
i%incfoo.c^[:
:w
:e Xdir1/dir2/FALSE.c
i%incfoo.c^[:
:w
:e Xbase.c
:set path=Xdir1/dir2
i%inc    FALSE.c foo.c^[:
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
:" change "\" to "/" for Windows and fix 'fileformat'
:e test.out
:%s#\\#/#g
:set ff&
:w
:q
ENDTEST:" change "\" to "/" for Windows and fix 'fileformat'
:e test.out
"test.out" 33 lines, 655 charactersThis 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):%s#\\#/#g
E486: Pattern not found: \\:set ff&
:w
"test.out" 33 lines, 655 characters written:q
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test17 = test61; then \
#	  if diff test.out test17.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test17.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test17.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test30.failed test.ok test.out X* viminfo
cp test30.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test30.in
[?1h="test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' option

Note: This test will fail if "cat" is not available.

STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for a lot of variations of the 'fileformats' option/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 221 lines, 3592 characters written:set ff& cpo+=A
/ENDTEST:$r XXtt64
Go7^[:$r XXtt71
:$r XXtt72
Go8^[:$r XXtt81
:$r XXtt82
Go9^[:$r XXtt91
:$r XXtt92
:$r XXtt93
Go10^[:$r XXUnix
:set nobinary ff&
:w
:qa!
ENDTEST

unix
unix
eof

dos^M
dos^M
eof

mac^Mmac^M
:so! Xdotest
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
"XXUnix" [New File] 2 lines, 10 characters written:/^dos/;/eof/-1w! XXDos
"XXDos" [New File] 2 lines, 10 characters written:set bin noeol
:$w! XXMac
"XXMac" [New File][Incomplete last line] 1 line, 8 characters written
noeol
:$w! XXEol
"XXEol" [New File][Incomplete last line] 1 line, 5 characters written:set nobin eol
:enew!
~~~~~~~~~~~
~~~~
~~~~
~~~:bwipe XXUnix XXDos XXMac
3 buffers wiped out:" create mixed format files
:if has("vms")

:  : !copy XXUnix,XXDos XXUxDs.

:  : !copy XXUnix,XXMac XXUxMac.

:  : !copy XXDos,XXMac  XXDosMac.

:  : !copy XXMac,XXEol  XXMacEol.

:  : !copy XXUnix,XXDos,XXMac XXUxDsMc.

:  :elseif has("win32")

:  : !copy /b XXUnix+XXDos XXUxDs

:  : !copy /b XXUnix+XXMac XXUxMac

:  : !copy /b XXDos+XXMac XXDosMac

:  : !copy /b XXMac+XXEol XXMacEol

:  : !copy /b XXUnix+XXDos+XXMac XXUxDsMc

:  :else

:  : !cat XXUnix XXDos >XXUxDs

:!cat XXUnix XXDos >XXUxDs[?1l>
[?1h=:  : !cat XXUnix XXMac >XXUxMac

:!cat XXUnix XXMac >XXUxMac[?1l>
[?1h=:  : !cat XXDos XXMac >XXDosMac

:!cat XXDos XXMac >XXDosMac[?1l>
[?1h=:  : !cat XXMac XXEol >XXMacEol

:!cat XXMac XXEol >XXMacEol[?1l>
[?1h=:  : !cat XXUnix XXDos XXMac >XXUxDsMc

:!cat XXUnix XXDos XXMac >XXUxDsMc[?1l>
[?1h=:  :endif
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:"
:" try reading and writing with 'fileformats' empty
:set fileformat=unix
:e! XXUnix
"XXUnix" 2 lines, 10 charactersunix
unix:w! test.out
"test.out" [New File] 2 lines, 10 characters written:e! XXDos
"XXDos" 2 lines, 10 charactersdos^M
dos^M:w! XXtt01
"XXtt01" [New File] 2 lines, 10 characters written:e! XXMac
"XXMac" [Incomplete last line] 1 line, 8 charactersmacmac^M~:w! XXtt02
"XXtt02" [New File] 1 line, 9 characters written:bwipe XXUnix XXDos XXMac
"test30.in" 237 lines, 3762 characters

3 buffers wiped out

Press ENTER or type command to continue:set fileformat=dos
:$r XXtt64
Go7^[:$r XXtt71
:$r XXtt72
Go8^[:$r XXtt81
:$r XXtt82
Go9^[:$r XXtt91
:$r XXtt92
:$r XXtt93
Go10^[:$r XXUnix
:set nobinary ff&
:w
:qa!
ENDTESTunix
unix
eofdos^M
dos^M
eofmac^Mmac^M
:e! XXUnix
"XXUnix" [CR missing][dos format] 2 lines, 10 charactersunixunix~~~~~~~~~~~
~~~~
~~~~
~~:w! XXtt11
"XXtt11" [New File][dos format] 2 lines, 12 characters written:e! XXDos
"XXDos" [dos format] 2 lines, 10 charactersdosdos:w! XXtt12
"XXtt12" [New File][dos format] 2 lines, 10 characters written:e! XXMac
"XXMac" [Incomplete last line][dos format] 1 line, 8 charactersmac^Mmac^M~:w! XXtt13
"XXtt13" [New File][dos format] 1 line, 10 characters written:bwipe XXUnix XXDos XXMac
"test30.in" [CR missing][dos format] 237 lines, 3762 characters

3 buffers wiped out

Press ENTER or type command to continue:set fileformat=mac
:$r XXtt64
Go7^[:$r XXtt71
:$r XXtt72
Go8^[:$r XXtt81
:$r XXtt82
Go9^[:$r XXtt91
:$r XXtt92
:$r XXtt93
Go10^[:$r XXUnix
:set nobinary ff&
:w
:qa!
ENDTESTunix
unix
eofdos
dos
eofmac^Jmac
:e! XXUnix
"XXUnix" [Incomplete last line][mac format] 1 line, 10 charactersunix^Junix^J~~~~~~~~~~~~
~~~~
~~~~
~~:w! XXtt21
"XXtt21" [New File][mac format] 1 line, 11 characters written:e! XXDos
"XXDos" [Incomplete last line][mac format] 3 lines, 10 charactersdos^Jdos
^J:w! XXtt22
"XXtt22" [New File][mac format] 3 lines, 11 characters written:e! XXMac
"XXMac" [mac format] 2 lines, 8 charactersmac
mac~:w! XXtt23
"XXtt23" [New File][mac format] 2 lines, 8 characters written:bwipe XXUnix XXDos XXMac
"test30.in" [Incomplete last line][mac format] 5 lines, 3762 characters

3 buffers wiped out

Press ENTER or type command to continue:"
^Jdos
^Jeof^J^Jmac
mac
^J:" try reading and writing with 'fileformats' set to one format
:set fileformats=unix
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunixdos^M
dos^M
mac^Mmac^M:w! XXtt31
"XXtt31" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=dos
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line][CR missing][dos format] 5 lines, 28 character

s
Press ENTER or type command to continue:w! XXtt32
"XXtt32" [New File][dos format] 5 lines, 32 characters written

Press ENTER or type command to continue:bwipe XXUxDsMc
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' option

Note: This test will fail if "cat" is not available."test30.in" [CR missing][dos format] 237 lines, 3762 characters:set fileformats=mac
:e! XXUxDsMc
"XXUxDsMc" [mac format] 4 lines, 28 charactersunix^Junix^Jdos^Jdos
^Jmacmac~~~~~~~~~~~~~~~~~~~:w! XXtt33
"XXtt33" [New File][mac format] 4 lines, 28 characters written:bwipe XXUxDsMc
"test30.in" [Incomplete last line][mac format] 5 lines, 3762 characters^Jdoseof^J^Jmac
mac^J:"
:" try reading and writing with 'fileformats' set to two formats
:set fileformats=unix,dos
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunixdos^M
dos^M
mac^Mmac^M:w! XXtt41
"XXtt41" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXUxMac
"XXUxMac" [Incomplete last line] 3 lines, 18 charactersunixunix
mac^Mmac^M~~~~~~~~~~~~~~~~~~~~:w! XXtt42
"XXtt42" [New File] 3 lines, 19 characters written:bwipe XXUxMac
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXDosMac
"XXDosMac" [Incomplete last line][dos format] 3 lines, 18 charactersdodos
mac^Mmac^M~~~~~~~~~~~~~~~~~~~~:w! XXtt43
"XXtt43" [New File][dos format] 3 lines, 20 characters written:bwipe XXDosMac
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=unix,mac
:e! XXUxDs
"XXUxDs" 4 lines, 20 charactersunixunix
dos^Mdos^M~~~~~~~~~~~~~~~~~~~:w! XXtt51
"XXtt51" [New File] 4 lines, 20 characters written:bwipe XXUxDs
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt52
"XXtt52" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXDosMac
"XXDosMac" [mac format] 4 lines, 18 charactersdo^Jdos
^Jmacmac~~~~~~~~~~~~~~~~~~~:w! XXtt53
"XXtt53" [New File][mac format] 4 lines, 18 characters written:bwipe XXDosMac
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXEol
"XXEol" [Incomplete last line] 1 line, 5 charactersnoeol~~
~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
unix,mac:unix:w! XXtt54
"XXtt54" [New File] 2 lines, 20 characters written:bwipe XXEol
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=dos,mac
:e! XXUxDs
"XXUxDs" [CR missing][dos format] 4 lines, 20 charactersunixunix
dosdos~~~~~~~~~~~~~~~~~~~:w! XXtt61
"XXtt61" [New File][dos format] 4 lines, 22 characters written:bwipe XXUxDs
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXUxMac
"XXUxMac" [Incomplete last line][CR missing][dos format] 3 lines, 18 charactersunixunix
mac^Mmac^M~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
dos,mac:dos:w! XXtt62
"XXtt62" [New File][dos format] 4 lines, 35 characters written:bwipe XXUxMac
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line][CR missing][dos format] 5 lines, 28 character

s
Press ENTER or type command to continue:w! XXtt63
"XXtt63" [New File][dos format] 5 lines, 32 characters written

Press ENTER or type command to continue:bwipe XXUxDsMc
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' option

Note: This test will fail if "cat" is not available."test30.in" [CR missing][dos format] 237 lines, 3762 characters:e! XXMacEol
"XXMacEol" [Incomplete last line][mac format] 3 lines, 13 charactersmacmac
noeol~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
dos,mac:mac:w! XXtt64
"XXtt64" [New File][mac format] 4 lines, 26 characters written:bwipe XXMacEol
"test30.in" [CR missing][dos format] 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:"
:" try reading and writing with 'fileformats' set to three formats
:set fileformats=unix,dos,mac
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt71
"XXtt71" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXEol
"XXEol" [Incomplete last line] 1 line, 5 charactersnoeol~~
~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
unix,dos,mac:unix:w! XXtt72
"XXtt72" [New File] 2 lines, 24 characters written:bwipe XXEol
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=mac,dos,unix
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt81
"XXtt81" [New File] 5 lines, 29 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:e! XXEol
"XXEol" [Incomplete last line][mac format] 1 line, 5 charactersnoeol~~
~~~~~~~~~~~~~~~~~~~~=&ffs
=&ff
mac,dos,unix:mac:w! XXtt82
"XXtt82" [New File][mac format] 2 lines, 23 characters written:bwipe XXEol
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST
:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:" try with 'binary' set
:set fileformats=mac,unix,dos
:set binary
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt91
"XXtt91" [New File][Incomplete last line] 5 lines, 28 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=mac
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt92
"XXtt92" [New File][Incomplete last line] 5 lines, 28 characters written:bwipe XXUxDsMc
"test30.in" 237 lines, 3762 charactersTest for a lot of variations of the 'fileformats' optionNote: This test will fail if "cat" is not available.STARTTEST:so small.vim
:" first write three test files, one in each format
:set fileformat=unix
:set fileformats=
:/^unix/;/eof/-1w! XXUnix
:/^dos/;/eof/-1w! XXDos
:set bin noeol
:$w! XXMac
Gonoeol^[
:$w! XXEol
:set nobin eol
:enew!
:bwipe XXUnix XXDos XXMac
:" create mixed format files
:if has("vms")
: !copy XXUnix,XXDos XXUxDs.
: !copy XXUnix,XXMac XXUxMac.
: !copy XXDos,XXMac  XXDosMac.:set fileformats=dos
:e! XXUxDsMc
"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix
dos^Mdos^M
mac^Mmac^M~~~~~~~~~~~~~~~~~~:w! XXtt93
"XXtt93" [New File][Incomplete last line] 5 lines, 28 characters written:"
:" Append "END" to each file so that we can see what the last written char was.
:set fileformat=unix nobin
~~~~--No lines in buffer--END:w >>XXtt01
"XXtt01" 1 line, 4 characters appended:w >>XXtt02
"XXtt02" 1 line, 4 characters appended:w >>XXtt11
"XXtt11" 1 line, 4 characters appended:w >>XXtt12
"XXtt12" 1 line, 4 characters appended:w >>XXtt13
"XXtt13" 1 line, 4 characters appended:w >>XXtt21
"XXtt21" 1 line, 4 characters appended:w >>XXtt22
"XXtt22" 1 line, 4 characters appended:w >>XXtt23
"XXtt23" 1 line, 4 characters appended:w >>XXtt31
"XXtt31" 1 line, 4 characters appended:w >>XXtt32
"XXtt32" 1 line, 4 characters appended:w >>XXtt33
"XXtt33" 1 line, 4 characters appended:w >>XXtt41
"XXtt41" 1 line, 4 characters appended:w >>XXtt42
"XXtt42" 1 line, 4 characters appended:w >>XXtt43
"XXtt43" 1 line, 4 characters appended:w >>XXtt51
"XXtt51" 1 line, 4 characters appended:w >>XXtt52
"XXtt52" 1 line, 4 characters appended:w >>XXtt53
"XXtt53" 1 line, 4 characters appended:w >>XXtt54
"XXtt54" 1 line, 4 characters appended:w >>XXtt61
"XXtt61" 1 line, 4 characters appended:w >>XXtt62
"XXtt62" 1 line, 4 characters appended:w >>XXtt63
"XXtt63" 1 line, 4 characters appended:w >>XXtt64
"XXtt64" 1 line, 4 characters appended:w >>XXtt71
"XXtt71" 1 line, 4 characters appended:w >>XXtt72
"XXtt72" 1 line, 4 characters appended:w >>XXtt81
"XXtt81" 1 line, 4 characters appended:w >>XXtt82
"XXtt82" 1 line, 4 characters appended:w >>XXtt91
"XXtt91" 1 line, 4 characters appended:w >>XXtt92
"XXtt92" 1 line, 4 characters appended:w >>XXtt93
"XXtt93" 1 line, 4 characters appended:"
:" Concatenate the results.
:" Make fileformat of test.out the native fileformat.
:" Add a newline at the end.
:set binary
:e! test.out
"test.out" 2 lines, 10 charactersunix
unix:$r XXtt01
"XXtt01" 3 lines, 14 charactersdos^M
dos^M
END:$r XXtt02
"XXtt02" 2 lines, 13 charactersmac^Mmac^M
END

1:$r XXtt11
"XXtt11" 3 lines, 16 charactersunix^M
unix^M
END:$r XXtt12
"XXtt12" 3 lines, 14 charactersdos^M
dos^M
END:$r XXtt13
"XXtt13" 2 lines, 14 charactersmac^Mmac^M^M
END

2:$r XXtt21
"XXtt21" 3 lines, 15 charactersunix
unix
^MEND:$r XXtt22
"XXtt22" 3 lines, 15 charactersdos^M
dos^M
^MEND:$r XXtt23
"XXtt23" 1 line, 12 characters
mac^Mmac^MEND
3
:$r XXtt31
"XXtt31" 6 lines, 33 characters
unix
:$r XXtt32
"XXtt32" 6 lines, 36 characters





unix
dos^M
dos^M
mac^Mmac^M
END
unix^M
:$r XXtt33
"XXtt33" 5 lines, 32 characters





unix^M
dos^M
dos^M
mac^Mmac^M^M
END
unix



unix
dos^M
dos^M
mac^Mmac^MEND

4
:$r XXtt41
"XXtt41" 6 lines, 33 characters
unix
:$r XXtt42
"XXtt42" 4 lines, 23 characters





unix
dos^M
dos^M
mac^Mmac^M
END
unix
:$r XXtt43
"XXtt43" 4 lines, 24 characters



unix
mac^Mmac^M
END
dos^M


dos^M
mac^Mmac^M^M
END

5
:$r XXtt51
"XXtt51" 5 lines, 24 characters
unix
:$r XXtt52
"XXtt52" 6 lines, 33 characters




unix
dos^M
dos^M
END
unix
:$r XXtt53
"XXtt53" 3 lines, 22 characters





unix
dos^M
dos^M
mac^Mmac^M
END
dos^M
:$r XXtt54
"XXtt54" 3 lines, 24 characters


dos^M
mac^Mmac^MEND
unix,mac:unix

noeol
END

6
:$r XXtt61
"XXtt61" 5 lines, 26 characters
unix^M
:$r XXtt62
"XXtt62" 5 lines, 39 characters




unix^M
dos^M
dos^M
END
dos,mac:dos^M
:$r XXtt63
"XXtt63" 6 lines, 36 characters




unix^M
unix^M
mac^Mmac^M^M
END
unix^M
:$r XXtt64
"XXtt64" 1 line, 30 characters





unix^M
dos^M
dos^M
mac^Mmac^M^M
END
dos,mac:mac^Mmac^Mmac^Mnoeol^MEND
7
:$r XXtt71
"XXtt71" 6 lines, 33 characters
unix
:$r XXtt72
"XXtt72" 3 lines, 28 characters





unix
dos^M
dos^M
mac^Mmac^M
END
unix,dos,mac:unix

noeol
END

8
:$r XXtt81
"XXtt81" 6 lines, 33 characters
unix
:$r XXtt82
"XXtt82" 1 line, 27 characters





unix
dos^M
dos^M
mac^Mmac^M
END
mac,dos,unix:mac^Mnoeol^MEND
9
:$r XXtt91
"XXtt91" 5 lines, 32 characters
unix
:$r XXtt92
"XXtt92" 5 lines, 32 characters




unix
dos^M
dos^M
mac^Mmac^MEND
unix
:$r XXtt93
"XXtt93" 5 lines, 32 characters




unix
dos^M
dos^M
mac^Mmac^MEND
unix



unix
dos^M
dos^M
mac^Mmac^MEND

10
:$r XXUnix
"XXUnix" 2 lines, 10 characters
unix
:set nobinary ff&
:w
"test.out" 130 lines, 786 characters written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test30 = test61; then \
#	  if diff test.out test30.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test30.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test30.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test32.failed test.ok test.out X* viminfo
cp test32.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test32.in
[?1h="test32.in" 60 lines, 1391 charactersTest for insert expansion

:se cpt=.,w
* add-expands (word from next line) from other window
* add-expands (current buffer first)
* Local expansion, ends in an empty line (unless it becomes a global expansion)
* starts Local and switches to global add-expansion
:se cpt=.,w,i
* i-add-expands and switches to local
* add-expands lines (it would end in an empty line if it didn't ignored it self):se cpt=kXtestfile
* checks k-expansion, and file expansion (use Xtest11 instead of test11,
* because TEST11.OUT may match first on DOS)
:se cpt=w
* checks make_cyclic in other window
:se cpt=u nohid
* checks unloaded buffer expansion
* checks adding mode abortion
:se cpt=t,d
* tag expansion, define add-expansion interrupted
* t-expansion

STARTTEST:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Test for insert expansion/^STARTTEST

:so small.vim
:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 27 lines, 533 characters written:set ff& cpo+=A

/ENDTESTO^N^[IX^[A^X^F^N^[
:" use CTRL-X CTRL-F to complete Xtest11.one, remove it and then use
:" CTRL-X CTRL-F again to verify this doesn't cause trouble.
OX^X^F^H^H^H^H^H^H^H^H^X^F^[ddk
:se cpt=w
OST^N^P^P^P^P^[
:se cpt=u nohid
^WoOEN^N
unl^N^X^X^P^[
:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
O^X^]^X^D^X^D^X^X^D^X^D^X^D^X^D
a^N^[
:wq! test.out
ENDTEST

start of testfile
run1
run2
end of testfile

test11  36Gepeto/Tag/
asd     test11file      36G
Makefileto      run
:so! Xdotest
:so small.vim
:se nocp viminfo+=nviminfo cpt=.,w ff=unix | $-2,$w!Xtestfile | set ff&
"Xtestfile" [New] 3L, 57C written:se cot=
~~~~~~~~~~
[No Name]                                                                       unl^N^X^X^P^[
:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
O^X^]^X^D^X^D^X^X^D^X^D^X^D^X^D
a^N^[:wq! test.out
ENDTESTstart of testfile
run1run2test32.in                                                                       -- INSERT --
-- Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) match 1 of 4match in file test32.in-- Keyword completion (^N^P) match 2 of 4-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Adding Keyword completion (^N^P) Word from other line#include "Xtestfile"
run1 run2[+]-- Adding Keyword completion (^N^P) Word from other line-- INSERT --3
-- INSERT --
-- Keyword completion (^N^P) -- Searching...
Scanning: test32.in-- Keyword completion (^N^P) match 1 of 115-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.in-- Adding Keyword completion (^N^P) Word from other line-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword Local completion (^N^P) -- Searching...match 1 of 4 match 2 of 4 match 3 of 4 match 4 of 4 Back at original-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword Local completion (^N^P) -- Searching...match 1 of 4 match 2 of 4-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning: test32.in-- Keyword completion (^N^P) The only match-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.in-- Adding Keyword completion (^N^P) match 1 of 2match in file test32.in-- Adding Keyword completion (^N^P) Word from other linerun3 run3

run1 run2-- Adding Keyword completion (^N^P) Word from other line-- INSERT --
:se cpt=.,w,i
-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning: test32.in included file: Xtestfile
match in file test32.in-- Keyword completion (^N^P) The only match-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.in included file: Xtestfile
match in file test32.in-- Adding Keyword completion (^N^P) The only match-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Adding Keyword completion (^N^P) -- Searching...
Scanning: test32.in included file: Xtestfile
match in file test32.in-- Adding Keyword completion (^N^P) The only match-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword Local completion (^N^P) -- Searching...match 1 of 3-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- Whole line completion (^L^N^P) -- Searching...
Scanning: test32.in-- Whole line completion (^L^N^P) match 1 of 57INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) match 1 of 57Adding Whole line completion (^L^N^P) -- Searching...
Scanning: test32.in-- Adding Whole line completion (^L^N^P) The only match Back at original The only matchMakefileto      run3
Makefileto      run3
Makefileto      run3-- INSERT --:se cpt=kXtestfile
:w Xtest11.one
"Xtest11.one" [New] 9L, 104C writtenXtest11.one  :w Xtest11.two
"Xtest11.two" [New] 9L, 104C written-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning dictionary: Xtestfilematch in file Xtestfile-- Keyword completion (^N^P) match 1 of 9test11[+]I -- Keyword completion (^N^P) match 1 of 9-- INSERT ---- INSERT --Xtest11
-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- File name completion (^F^N^P) -- Searching...match 1 of 2 match 2 of 2.two-- INSERT --:" use CTRL-X CTRL-F to complete Xtest11.one, remove it and then use
:" CTRL-X CTRL-F again to verify this doesn't cause trouble.
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- File name completion (^F^N^P) -- Searching...match 1 of 4INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- File name completion (^F^N^P) -- Searching...match 1 of 443
Make_all.mak
run1 run2d -- INSERT --
run1 run2~
:se cpt=w
-- INSERT --
-- Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) The only match Back at originalmatch in file test32.in-- Keyword completion (^N^P) The only match Back at originalmatch in file test32.in-- Keyword completion (^N^P) The only match
STARTTEST
run1 run2-- Keyword completion (^N^P) The only match-- INSERT --:se cpt=u nohid
~~~~~~~
~~~~~-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) The only match-- INSERT --
-- Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) match 1 of 3-- INSERT --
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- INSERT --Keyword completion (^N^P) -- Searching...
Scanning: test32.inmatch in file test32.in
-- Keyword completion (^N^P) The only matchENDTEST
unless-- Keyword completion (^N^P) The only match-- INSERT --:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- Tag completion (^]^N^P) -- Searching...match 1 of 3INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) match 1 of 3Definition completion (^D^N^P) -- Searching...Scanning included file: Xtestfilematch in file Xtestfile-- Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- Adding Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Adding Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
-- Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- Adding Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Adding Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- Adding Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Adding Definition completion (^D^N^P) The only matchINSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match
-- Adding Definition completion (^D^N^P) -- Searching...
Scanning included file: Xtestfilematch in file Xtestfile-- Adding Definition completion (^D^N^P) Word from other lineINSERT ---- Keyword completion (^N^P) -- Searching...
Scanning tags.included file: Xtestfile
-- Keyword completion (^N^P) The only matchtest11file      36Gepeto/Tag/ asd
asd-- Keyword completion (^N^P) The only match-- INSERT --
ru:wq! test.out
"test.out" [New] 15L, 175C written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test32 = test61; then \
#	  if diff test.out test32.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test32.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test32.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test58.failed test.ok test.out X* viminfo
cp test58.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test58.in
[?1h="test58.in" 656 lines, 11024 charactersTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for spell checking.     vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 111 lines, 2591 characters written:set ff& cpo+=A
/ENDTEST:"
:" NOSLITSUGS
:call TestOne('8', '8')
:" Numbers
:call TestOne('9', '9')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1


:so! Xdotest
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:"
:" NOSLITSUGS
:call TestOne('8', '8')
:" Numbers
:call TestOne('9', '9')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1


:"Don't want to depend on the locale from the environment
:set enc=latin1e!"Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spelliasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=$put =''
  $put ='test '. a:aff . '-' . a:dic  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest  " use that spell file:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
vim

STARTTESTlatin1maxmem
iasdaff/.dic
:func TestOne(aff, dicspellfilea:affa:dicspldic and .aff
  exea:aff . 'affstarta:aff . 'affend/-1w! Xtest.aff
  exea:dic . 'dicstarta:dic . 'dicend/-1w! Xtest.dic
  mkspell! Xtest XtestasdTests for spell checking.     vim: set ft=vim :Change "asdTests" to:

 1 "Acid tests"

 2 "Attests"

 3 "Ass Tests"

 4 "As Tests"

 5 "Sad Tests"

 6 "Ads Tests"

 7 "As tests"

 8 "As detests"

 9 "Add Tests"

10 "Aid Tests"

11 "Ash Tests"

12 "Ad Tests"

13 "And Tests"

14 "Ask Tests"

15 "Asp Tests"

16 "USD Tests"

17 "Astutest"

18 "Autotests"

19 "Sadists"

20 "Asst Tests"

21 "Assad Tests"

22 "SSD Tests"

Type number and <Enter> or click with mouse (empty cancels): :"
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)

:    set spellfile=

:    $put =''

:    $put ='test '. a:aff . '-' . a:dic

:    " Generate a .spl file from a .dic and .aff file.

:    exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'

:    exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'

:    mkspell! Xtest Xtest

:    " use that spell file

:    set spl=Xtest.latin1.spl spell

:    " list all valid words

:    spelldump

:    %yank

:    quit

:    $put

:    $put ='-------'

:    " find all bad words and suggestions for them

:    exe '1;/^' . a:aff . 'good:'

:    normal 0f:]s

:    let prevbad = ''

:    while 1

:        let [bad, a] = spellbadword()

:        if bad == '' || bad == prevbad || bad == 'badend'

:            break

:          endif

:        let prevbad = bad

:        let lst = spellsuggest(bad, 3)

:        normal mm

:        $put =bad

:        $put =string(lst)

:        normal `m]s

:      endwhile

:  endfunc
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:"
:call TestOne('1', '1')
"Xtest.aff" [New File] 46 lines, 754 characters written

"Xtest.dic" [New File] 11 lines, 71 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 29 of 127 nodes; 98 (77%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 490 bytes

Reading back spell file...

Performing soundfolding...

Total number of words: 16

Number of words after soundfolding: 16

Compressing word tree...

Compressed 39 of 104 nodes; 65 (62%) remaining

Writing suggestion file Xtest.latin1.sug ...

Estimated runtime memory use: 357 bytes

17 lines yanked

17 more lines

Press ENTER or type command to continue:$put =soundfold('goobledygoook')
the end
uk
wrong
-------
bad
['put', 'uk', 'OK']
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']th['put', 'uk', 'test']gebletegek
kepereneven
:$put =soundfold('oeverloos gezwets edale')

everles gesvets etele
:"
:"
:" and now with SAL instead of SOFO items; test automatic reloading
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^affstart_sal/+1,/^affend_sal/-1w! Xtest.aff
"Xtest.aff" 151 lines, 3412 characters written:mkspell! Xtest Xtest
Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 29 of 127 nodes; 98 (77%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 490 bytes

Performing soundfolding...

Total number of words: 16

Number of words after soundfolding: 15

Compressing word tree...

Compressed 33 of 75 nodes; 42 (56%) remaining

Writing suggestion file Xtest.latin1.sug ...

Estimated runtime memory use: 241 bytes

Press ENTER or type command to continue:$put =soundfold('goobledygoook')
-------
bad
['put', 'uk', 'OK']
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end['put', 'uk', 'test']
the['put', 'uk', 'test']gebletegekkepereneveneverles gesvet etelekbltykk
kprnfn
:$put =soundfold('oeverloos gezwets edale')

*fls kswts tl
:"
:" also use an addition file
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^addstart/+1,/^addend/-1w! Xtest.latin1.add
"Xtest.latin1.add" [New File] 3 lines, 38 characters written:mkspell! Xtest.latin1.add.spl Xtest.latin1.add
Reading word file Xtest.latin1.add ...
Compressing word tree...

Compressed 0 of 29 nodes; 29 (100%) remaining

Writing spell file Xtest.latin1.add.spl ...

Done!

Estimated runtime memory use: 145 bytes

Press ENTER or type command to continue:set spellfile=Xtest.latin1.add
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment/^test2:
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent

:set spl=Xtest_us.latin1.spl
/^test2:
search hit BOTTOM, continuing at TOP2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend
search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint

:set spl=Xtest_gb.latin1.spl
elequint
/^test2:
search hit BOTTOM, continuing at TOP2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend
search hit BOTTOM, continuing at TOP:let [str, a] = spellbadword()
:$put =str
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent

:set spl=Xtest_nz.latin1.spl
elequint
elekwint
elekwint
/^test2:
search hit BOTTOM, continuing at TOP2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend
search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent

:set spl=Xtest_ca.latin1.spl
elequint
elekwint
elekwint

elequint
/^test2:
search hit BOTTOM, continuing at TOP2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend
search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
2good: puts
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:let [str, a] = spellbadword()
:$put =str
test
['Test', 'testn', 'testen']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
elekwint

:unlet str a
:"
:" Postponed prefixes
:call TestOne('2', '1')
"Xtest.aff" 44 lines, 447 characters written

"Xtest.dic" 11 lines, 71 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 10 of 98 nodes; 88 (89%) remaining

Compressed 0 of 13 nodes; 13 (100%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 505 bytes

17 lines yanked

17 more lines

2affend

2good: puts
badendaddstar
/regions=usgbnz
elequ/2/3
addendtest2:test elekwint test elekwent asdf:" Compound words
:call TestOne('3', '3')
"Xtest.aff" 5 lines, 60 characters written

"Xtest.dic" 5 lines, 29 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 6 of 29 nodes; 23 (79%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 115 bytes

3 lines yanked

3 more lines

Press ENTER or type command to continue:call TestOne('4', '4')
"Xtest.aff" 45 lines, 559 characters written

"Xtest.dic" 8 lines, 59 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - word
Compressing word tree...
Compressed 2 of 91 nodes; 89 (97%) remaining

Compressed 0 of 15 nodes; 15 (100%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 520 bytes

12 lines yanked

12 more lines

Press ENTER or type command to continue:call TestOne('5', '5')
"Xtest.aff" 25 lines, 237 characters written

"Xtest.dic" 6 lines, 57 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 19 of 105 nodes; 86 (81%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 440 bytes

10 lines yanked

10 more lines

Press ENTER or type command to continue:call TestOne('6', '6')
"Xtest.aff" 23 lines, 211 characters written

"Xtest.dic" 6 lines, 53 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - mee
Compressing word tree...
Compressed 19 of 87 nodes; 68 (78%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 350 bytes

9 lines yanked

9 more lines

Press ENTER or type command to continue:call TestOne('7', '7')
"Xtest.aff" 22 lines, 223 characters written

"Xtest.dic" 6 lines, 67 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - mee
Compressing word tree...
Compressed 19 of 89 nodes; 70 (78%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 360 bytes

9 lines yanked

9 more lines

Press ENTER or type command to continue:"
1234
mee/391,111,9999
bar/17,61003,123
lead/2
tail/123
middle/77,1
7dicend

bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar
badend

Test NOSLITSUGS

8affstart
SET ISO8859-1

NOSPLITSUGS
8affend

8dicstart:" NOSLITSUGS
:call TestOne('8', '8')
"Xtest.aff" 3 lines, 27 characters written

"Xtest.dic" 4 lines, 20 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 8 of 26 nodes; 18 (69%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 90 bytes

4 lines yanked

4 more lines

Press ENTER or type command to continue:" Numbers
NOSPLITSUGS
8affend

8dicstart
1234
foo
bar
faabar
8dicend

8good: foo bar faabar
bad: foobar barfooTest Numbers9affstart9affend9dicstart
1234
foo:call TestOne('9', '9')
Error detected while processing function TestOne:

line    5:

E493: Backwards range given: 1;/^9affstart/+1,/^9affend/-1w! Xtest.aff

"Xtest.dic" 3 lines, 13 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 2 of 15 nodes; 13 (86%) remaining

Writing spell file Xtest.latin1.spl ...

Done!

Estimated runtime memory use: 65 bytes

3 lines yanked

3 more lines

Press ENTER or type command to continue:"
Test Numbers

9affstart
9affend

9dicstart
1234
foo
bar
9dicend

9good: 0b1011 0777 1234 0x01ff
badend


test output:

test 1-1# ile: Xtest.latin1.spl
Comment
input:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
Test Numbers

9affstart
9affend

9dicstart
1234
foo
bar
9dicend

9good: 0b1011 0777 1234 0x01ff
badend


test output:

test 1-1
# file: Xtest.latin1.spl
Comment
deol
input:"
asdTests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasd^[z=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^test output:/,$wq! test.out
"test.out" [New File] 289 lines, 3844 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test58 = test61; then \
#	  if diff test.out test58.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test58.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test58.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test59.failed test.ok test.out X* viminfo
cp test59.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test59.in
[?1h="test59.in" 626 lines, 10897 charactersTests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 106 lines, 2520 characters written:set ff& cpo+=A
/ENDTEST:call TestOne('3', '3')
:call TestOne('4', '4')
:call TestOne('5', '5')
:call TestOne('6', '6')
:call TestOne('7', '7')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1


:so! Xdotest
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:call TestOne('3', '3')
:call TestOne('4', '4')
:call TestOne('5', '5')
:call TestOne('6', '6')
:call TestOne('7', '7')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1


:" text is in latin1, the test text is utf-8.enc=latin1e!
:set enc=utf-8:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=$put =''
  $put ='test '. a:aff . '-' . a:dic  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest  " use that spell file:set enc=utf-8
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)

:    set spellfile=

:    $put =''

:    $put ='test '. a:aff . '-' . a:dic

:    " Generate a .spl file from a .dic and .aff file.

:    exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'

:    exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'

:    mkspell! Xtest Xtest

:    " use that spell file

:    set spl=Xtest.utf-8.spl spell

:    " list all valid words

:    spelldump

:    %yank

:    quit

:    $put

:    $put ='-------'

:    " find all bad words and suggestions for them

:    exe '1;/^' . a:aff . 'good:'

:    normal 0f:]s

:    let prevbad = ''

:    while 1

:        let [bad, a] = spellbadword()

:        if bad == '' || bad == prevbad || bad == 'badend'

:            break

:          endif

:        let prevbad = bad

:        let lst = spellsuggest(bad, 3)

:        normal mm

:        $put =bad

:        $put =string(lst)

:        normal `m]s

:      endwhile

:  endfunc
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:"
:call TestOne('1', '1')
"Xtest.aff" [New File] 48 lines, 768 characters written

"Xtest.dic" [New File] 11 lines, 71 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 29 of 131 nodes; 102 (77%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 510 bytes

Reading back spell file...

Performing soundfolding...

Total number of words: 16

Number of words after soundfolding: 16

Compressing word tree...

Compressed 39 of 104 nodes; 65 (62%) remaining

Writing suggestion file Xtest.utf-8.sug ...

Estimated runtime memory use: 357 bytes

17 lines yanked

17 more lines

Press ENTER or type command to continue:$put =soundfold('goobledygoook')
the end
uk
wrong
-------
bad
['put', 'uk', 'OK']
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']the['put', 'uk', 'test']gebletegek
:$put =soundfold('kóopërÿnôven')

kepereneven
:$put =soundfold('oeverloos gezwets edale')

everles gesvets etele
:"
:"
:" and now with SAL instead of SOFO items; test automatic reloading
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^affstart_sal/+1,/^affend_sal/-1w! Xtest.aff
"Xtest.aff" 153 lines, 3426 characters written:mkspell! Xtest Xtest
Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 29 of 131 nodes; 102 (77%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 510 bytes

Performing soundfolding...

Total number of words: 16

Number of words after soundfolding: 15

Compressing word tree...

Compressed 33 of 75 nodes; 42 (56%) remaining

Writing suggestion file Xtest.utf-8.sug ...

Estimated runtime memory use: 241 bytes

Press ENTER or type command to continue:$put =soundfold('goobledygoook')
-------
bad
['put', 'uk', 'OK']
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end['put', 'uk', 'test']
the['put', 'uk', 'test']gebletegekkepereneveneverles gesvet etelekbltykk
:$put =soundfold('kóopërÿnôven')

kprnfn
:$put =soundfold('oeverloos gezwets edale')

*fls kswts tl
:"
:" also use an addition file
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^addstart/+1,/^addend/-1w! Xtest.utf-8.add
"Xtest.utf-8.add" [New File] 3 lines, 38 characters written:mkspell! Xtest.utf-8.add.spl Xtest.utf-8.add
Reading word file Xtest.utf-8.add ...
Compressing word tree...

Compressed 0 of 29 nodes; 29 (100%) remaining

Writing spell file Xtest.utf-8.add.spl ...

Done!

Estimated runtime memory use: 145 bytes

Press ENTER or type command to continue:set spellfile=Xtest.utf-8.add
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"/^test2:
tomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!:let [str, a] = spellbadword()
:$put =str
inputs
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent

:set spl=Xtest_us.utf-8.spl
/^test2:
search hit BOTTOM, continuing at TOPtomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['input', 'puts', 'outputs']
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
startwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

COMPOUNDRULE ssmm*ee:let [str, a] = spellbadword()
:$put =str
comment
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint

:set spl=Xtest_gb.utf-8.spl
elequint
/^test2:
search hit BOTTOM, continuing at TOPtomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

search hit BOTTOM, continuing at TOP:let [str, a] = spellbadword()
:$put =str
['Comment', 'outtest', 'the end']
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
startwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

COMPOUNDRULE ssmm*ee:let [str, a] = spellbadword()
:$put =str
ok
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent

:set spl=Xtest_nz.utf-8.spl
elequint
elekwint
elekwint
/^test2:
search hit BOTTOM, continuing at TOPtomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['OK', 'uk', 'put']
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
startwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

COMPOUNDRULE ssmm*ee:let [str, a] = spellbadword()
:$put =str
Ok
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent

:set spl=Xtest_ca.utf-8.spl
elequint
elekwint
elekwint

elequint
/^test2:
search hit BOTTOM, continuing at TOPtomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

search hit BOTTOM, continuing at TOP
:let [str, a] = spellbadword()
:$put =str
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
startwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork  preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork  startnouword
badend

test2:
elequint test elekwint test elekwent asdf

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

COMPOUNDRULE ssmm*ee:let [str, a] = spellbadword()
:$put =str
test
['Test', 'testn', 'testen']
déôl
['deol', 'déôr', 'test']
end
['put', 'uk', 'test']
the
['put', 'uk', 'test']
gebletegek
kepereneven
everles gesvets etele
kbltykk
kprnfn
*fls kswts tl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
elekwint

:unlet str a
:"
:" Postponed prefixes
:call TestOne('2', '1')
"Xtest.aff" 46 lines, 461 characters written

"Xtest.dic" 11 lines, 71 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - test
Compressing word tree...
Compressed 10 of 102 nodes; 92 (90%) remaining

Compressed 0 of 13 nodes; 13 (100%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 525 bytes

17 lines yanked

17 more lines

Press ENTER or type command to continue:"
addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

1good: wrong OK puts. Test the end
bad:  inputs comment ok Ok. test déôl end the
badend

2good: puts
bad: inputs comment ok Ok end the. test déôl
badendTest rules for compounding.3affstart
SET ISO8859-1COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend:" Compound words
:call TestOne('3', '3')
"Xtest.aff" 5 lines, 60 characters written

"Xtest.dic" 5 lines, 29 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 6 of 31 nodes; 25 (80%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 125 bytes

3 lines yanked

3 more lines

Press ENTER or type command to continue:call TestOne('4', '4')
"Xtest.aff" 45 lines, 559 characters written

"Xtest.dic" 8 lines, 59 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - word
Compressing word tree...
Compressed 2 of 91 nodes; 89 (97%) remaining

Compressed 0 of 15 nodes; 15 (100%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 520 bytes

12 lines yanked

12 more lines

Press ENTER or type command to continue:call TestOne('5', '5')
"Xtest.aff" 25 lines, 237 characters written

"Xtest.dic" 6 lines, 57 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - foo
Compressing word tree...
Compressed 19 of 107 nodes; 88 (82%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 440 bytes

10 lines yanked

10 more lines

Press ENTER or type command to continue:call TestOne('6', '6')
"Xtest.aff" 23 lines, 211 characters written

"Xtest.dic" 6 lines, 53 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - mee
Compressing word tree...
Compressed 19 of 89 nodes; 70 (78%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 350 bytes

9 lines yanked

9 more lines

Press ENTER or type command to continue:call TestOne('7', '7')
"Xtest.aff" 26 lines, 338 characters written

"Xtest.dic" 6 lines, 67 characters written

Reading affix file Xtest.aff ...

Reading dictionary file Xtest.dic ...

line      2, word      0 - mee
Compressing word tree...
Compressed 19 of 91 nodes; 72 (79%) remaining

Writing spell file Xtest.utf-8.spl ...

Done!

Estimated runtime memory use: 360 bytes

9 lines yanked

9 more lines

Press ENTER or type command to continue:"
1234
mee/391,111,9999
bar/17,61003,123
lead/2
tail/123
middle/77,1
7dicend

7good: meea1 meeaébar prebar barmeat prebarmeat  leadprebarlead tail leadtail  leadmiddletail
bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar
badend

test output:

test 1-1
# file: Xtest.utf-8.spl
Comment
deol
déôr
input
OK:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
1234
mee/391,111,9999
bar/17,61003,123
lead/2
tail/123
middle/77,1
7dicend

7good: meea1 meeaé bar prebar barmeat prebarmeat  leadprebarlead tail leadtail  leadmiddletail
bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar
badend

test output:

test 1-1
# file: Xtest.utf-8.spl
Comment
deol
déôr
input
OK:"
Tests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Don't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.
:set enc=latin1
:e!
:set enc=utf-8
:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file:/^test output:/,$wq! test.out
"test.out" [New File] 270 lines, 3685 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test59 = test61; then \
#	  if diff test.out test59.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test59.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test59.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test72.failed test.ok test.out X* viminfo
cp test72.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test72.in
[?1h="test72.in" 146 lines, 2110 charactersTests for undo file.
Since this script is sourced we need to explicitly break changes up in
undo-able pieces.  Do that by setting 'undolevels'.

STARTTEST
:so small.vim
:"
:" Test 'undofile': first a simple one-line change.
:set nocompatible viminfo+=nviminfo visualbell
:set ul=100 undofile nomore
:e! Xtestfile
ggdGithis is one line^[:set ul=100
:s/one/ONE/
:set ul=100
:w
:bwipe!
:e Xtestfile
u:.w! test.out
:"
:" Test 'undofile', change in original file fails check
:set noundofile
:e! Xtestfile
:s/line/Line/:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for undo file./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 135 lines, 1913 characters written:set ff& cpo+=A
/ENDTEST:bwipe!
:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST

1111 -----
2222 -----

123456789
:so! Xdotest
:so small.vim
:"
:" Test 'undofile': first a simple one-line change.
:set nocompatible viminfo+=nviminfo visualbell
:set ul=100 undofile nomore
:e! Xtestfile
"Xtestfile" [New File]~~~~~~~~~~~~~~~~~
~~~
~~-- INSERT --this is one line:set ul=100
:s/one/ONE/
ONE
:set ul=100
:w
"Xtestfile" [New] 1L, 17C written:bwipe!
"test72.in" 146L, 2110C:bwipe!:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 1L, 17Cthis is ONE line~~~~~~~~~~~~~~~~~
~~~
~~1 change; before #2  0 seconds agoone
:.w! test.out
"test.out" [New] 1L, 17C written:"
:" Test 'undofile', change in original file fails check
:set noundofile
:e! Xtestfile
"Xtestfile" 1L, 17CONE
:s/line/Line/
L
:w
"Xtestfile" 1L, 17C written:set undofile
:bwipe!
"test72.in" 146L, 2110C:bwipe!:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 1L, 17Cthis is ONE Line~~~~~~~~~~~~~~~~~
~~~
~~:" TODO: this beeps
Already at oldest change:.w >>test.out
"test.out" 1L, 17C appended:"
:" Test 'undofile', add 10 lines, delete 6 lines, undo 3
:set undofile
--No lines in buffer---- INSERT --one
two
three
four
five
six
seven
eight
nine
ten:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100
:w
"Xtestfile" 4L, 17C written:bwipe!
"test72.in" 146L, 2110C:bwipe!
:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 4L, 17Conetwonineten~~~~~~~~~~~~~~
~~~
~~1 more line; before #7  0 seconds agoeight1 more line; before #6  0 seconds agoseven1 more line; before #5  0 seconds agosix:w >>test.out
"test.out" 7L, 33C appended:"
:" Test that reading the undofiles when setting undofile works
:set noundofile ul=0
-- INSERT --six
us1 line less; before #8  0 seconds ago
~:e! Xtestfile
"Xtestfile" 4L, 17Cnine
ten~~~:set undofile ul=100
1 more line; before #7  0 seconds agoeight1 more line; before #6  0 seconds agoseven1 more line; before #5  0 seconds agosix1 more line; before #4  0 seconds agofive1 more line; before #3  0 seconds agofour1 more line; before #2  0 seconds agothree:w >>test.out
"test.out" 10L, 49C appended:" And now with encryption, cryptmethod=zip
:e! Xtestfile
"Xtestfile" 4L, 17Cninten~~~~~~:set undofile cm=zip
~~~--No lines in buffer---- INSERT --monday
tuesday
wednesday
thursday
friday:set ul=100

~:set ul=100

~:set ul=100

~:set ul=100
:X
Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

Enter same key again: ******

monday
friday
~:w!
"Xtestfile" [crypted] 2L, 14C written:bwipe!
"test72.in" 146L, 2110C:bwipe!
:e Xtestfile
foo2bar
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 
Need encryption key for "Xtestfile"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtestfile" [crypted] 2L, 14Cmonday
friday
~~~~~~~~~~~~~~~~
~~~
~~"Xtestfile" [crypted] 2L, 14C:set key=
1 more line; before #11  0 seconds agothursday1 more line; before #10  0 seconds agowednesday:w >>test.out
"test.out" 4L, 33C appended:"
:"
:" With encryption, cryptmethod=blowfish
:e! Xtestfile
"Xtestfile" Need encryption key for "Xtestfile"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: *******

~
~~"Xtestfile" [noeol][crypted] 1L, 14C:set undofile cm=blowfish ff&
--No lines in buffer---- INSERT --jan
feb
mar
apr
jun:set ul=100

-- INSERT --foo mar:set ul=100

~:set ul=100
-- INSERT --bar apr:set ul=100
:X
Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

Enter same key again: ******

jan
feb
bar apr:w!
"Xtestfile" [blowfish] 4L, 20C written:bwipe!
"test72.in" 146L, 2110C:bwipe!
:e Xtestfile
foo2ba
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 
Need encryption key for "Xtestfile"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtestfile" [blowfish] 4L, 20Cjan
feb
bar apr
jun~~~~~~~~~~~~~~
~~~
~~"Xtestfile" [blowfish] 4L, 20C:set key=
/bar
:.w >>test.out
"test.out" 1L, 8C appended1 change; before #15  1 seconds agoap:.w >>test.out
"test.out" 1L, 4C appended1 more line; before #14  1 seconds agofoo mar:.w >>test.out
"test.out" 1L, 8C appended1 change; before #13  1 seconds agomar:.w >>test.out
"test.out" 1L, 4C appended:"
:" With encryption, cryptmethod=blowfish2
:e! Xtestfile
"Xtestfile" Need encryption key for "Xtestfile"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: *******

~
~~~"Xtestfile" [noeol][blowfish] 1L, 20C:set undofile cm=blowfish2 ff&
--No lines in buffer---- INSERT --jan
feb
mar
apr
jun:set ul=100

-- INSERT --foo mar:set ul=100

~:set ul=100
-- INSERT --bar apr:set ul=100
:X
Enter encryption key: *******

Enter same key again: *******

jan
feb:w!
"Xtestfile" [blowfish2] 4L, 20C written:bwipe!
"test72.in" 146L, 2110C:bwipe!
:e Xtestfile
foo2ba
:set key=
/bar
:.w >>test.out
u:.w >>test.out
u:.w >>test.out
u:.w >>test.out
:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST1111 -----
2222 -----123456789:e Xtestfile
"Xtestfile" 
Need encryption key for "Xtestfile"

Enter encryption key: *******

"Xtestfile" [blowfish2] 4L, 20Cjan
feb
bar ap
jun~~~~~~~~~~~~~~
~~~
~~"Xtestfile" [blowfish2] 4L, 20C:set key=
/bar
:.w >>test.out
"test.out" 1L, 8C appended1 change; before #19  1 seconds agoap:.w >>test.out
"test.out" 1L, 4C appended1 more line; before #18  1 seconds agofoo mar:.w >>test.out
"test.out" 1L, 8C appended1 change; before #17  1 seconds agomar:.w >>test.out
"test.out" 1L, 4C appended:"
:" Rename the undo file so that it gets cleaned up.
:if has("vms")

:  : call rename("_un_Xtestfile", "Xtestundo")

:  :else

:  : call rename(".Xtestfile.un~", "Xtestundo")

:  :endif
jan
feb
mar
apr:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test72 = test61; then \
#	  if diff test.out test72.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test72.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test72.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test78.failed test.ok test.out X* viminfo
cp test78.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test78.in
[?1h="test78.in" 46 lines, 1464 charactersInserts 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 viminfo+=nviminfo
:e! Xtest
ggdG
:let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01223456789abcdefghijklmnoparstuvwxyz0123456789"
: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', ''):set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Inserts 10000 lines with text to fill the swap file with two levels of pointer/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 37 lines, 1208 characters written:set ff& cpo+=A
/ENDTEST: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 linnecount = linedollar | endif
:let i = 1
:while i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call appendd(line('$'), i . ' differs') | exe 'wincmd w' | endif | let i += 1 | endwhile
:q!
:call append(line('$'), 'recovery end')
:w! test.out
:qa!
ENDTEST


:so! Xdotest
:so small.vim
:set nocp fileformat=unix undolevels=-1 viminfo+=nviminfo
:e! Xtest
"Xtest" [New File]~~~~~~~~~~~~~~~~~~~~~
~:let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01

23456789abcdefghijklmnoparstuvwxyz0123456789"
:let i = 1
:let linecount = 10000
:while i <= linecount | call append(i - 1, i . text) | let i += 1 | endwhile
9990    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9991    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9992    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9993    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9994    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9995    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9996    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9997    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9998    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9999    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
10000   abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789:preserve
File preserved:" get the name of the swap file
:redir => swapname
:swapname
.Xtest.swp:redir END
:let swapname = substitute(swapname, '[[:blank:][:cntrl:]]*\(.\{-}\)[[:blank:][

:cntrl:]]*$', '\1', '')
9990    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899a
999899a
999999a
1000099a~
Xtest [+]                                                                       :w! Xswap
"Xswap" [New][noeol] 611L, 1224704C written:echo swapname
.Xtest.sw:set nobin
:new
~
~
~
~
~
~
10000   abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789

~
Xtest [+]                                                                       :only!
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~:bwipe! Xtest
:call rename('Xswap', swapname)
:recover Xtest
Using swap file ".Xtest.swp"

Original file "/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtest"

"/<<PKGBUILDDIR>>/src/vim-athena/testdir/Xtest" [New File]Recovery completed. You should check if everything is OK.

(You might want to write out this file under another name

and run diff with the original file to check for changes)

You may want to delete the .swp file now.



Press ENTER or type command to continue:call delete(swapname)
1abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
2abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
3abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
4abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
5abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
6abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
7abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
8abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
9abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
10      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
11      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899abcdefghijklmnoparstuvwxyz0123456789
12      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@:new
~~~~~~~~~~
[No Name]                                                                       199a
299a
399a
4 99a
5 99a
Xtest [+]                                                                       :call append(0, 'recovery start')
recovery start[+]:wincmd w
[No Name] [+]                                                                   Xtest [+]                                                                       :let linedollar = line('$')
:if linedollar < linecount | exe 'wincmd w' | call append(line('$'), "expected 

" . linecount . " lines but found only " . linedollar) | exe 'wincmd w' | let li

necount = linedollar | endif
recovery start:let i = 1
:while i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call appen

d(line('$'), i . ' differs') | exe 'wincmd w' | endif | let i += 1 | endwhile
recovery start:q!
~~~~~~~~~~~~:call append(line('$'), 'recovery end')
recovery end:w! test.out
"test.out" [New] 3L, 29C written:qa!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test78 = test61; then \
#	  if diff test.out test78.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test78.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test78.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test83.failed test.ok test.out X* viminfo
cp test83.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test83.in
[?1h="test83.in" 76 lines, 1273 charactersTests for tag search with !_TAG_FILE_ENCODING.

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
:/^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:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
Tests for tag search with !_TAG_FILE_ENCODING./^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 58 lines, 1021 characters written:set ff& cpo+=A
/ENDTEST: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
:so! Xdotest
:so mbyte.vim
:set enc=utf8
: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:if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"

:  : e! test.ok

:  : w! test.out

:  : qa!

:  :endif
:tag abc50
:if v:errmsg =~ 'E426:' || getline('.') != 'ABC'
: close
: put ='case3: failed'::/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt
"Xtags1.txt" [New File] 2 lines, 35 characters written:/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt
"Xtags2.txt" [New File] 2 lines, 25 characters written:/^text for tags3$/,/^text for tags3$/+1w! Xtags3.txt
"Xtags3.txt" [New File] 2 lines, 25 characters written:/^tags1$/+1,/^tags1-end$/-1w! Xtags1
"Xtags1" [New File] 2 lines, 81 characters written:Tests for tag search with !_TAG_FILE_ENCODING.

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
:/^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~~~~~~~~~
~~~~~
~~
~~
~~~~
--No lines in buffer--:::call setline('.', 'Results of test83')
Results of test83
::" case1:
:new
[No Name]                                                                       Results of test83test83.in [+]                                                                   :set tags=Xtags1
:let v:errmsg = ''
:tag abcdefghijklmnopqrs
"Xtags1.txt" 2 lines, 35 characterstext for tags1
abcdefghijklmnopqrsXtags1.txt:if v:errmsg =~ 'E426:' || getline('.') != 'abcdefghijklmnopqrs'

:  : close

:  : put ='case1: failed'

:  :else

:  : close

:  : put ='case1: ok'

:  :endif
Results of test83
case1: ok
~
~
~
~~~~::" case2:
:new
~[No Name]                                                                       Results of test83
case1: oktest83.in [+]                                                                   :set tags=test83-tags2
:let v:errmsg = ''
:tag /.BC
"Xtags2.txt" 2 lines, 25 characterstext for tags2
ABCXtags2.txt:if v:errmsg =~ 'E426:' || getline('.') != 'ABC'

:  : close

:  : put ='case2: failed'

:  :else

:  : close

:  : put ='case2: ok'

:  :endif
Results of test83
case1: ok
case2: ok
~
~
~~~~~::" case3:
:new
~~[No Name]                                                                       case1: ok
case2: oktest83.in [+]                                                                   :set tags=test83-tags3
:let v:errmsg = ''
:tag abc50
"Xtags3.txt" 2 lines, 25 characterstext for tags3
ABCXtags3.txt:if v:errmsg =~ 'E426:' || getline('.') != 'ABC'

:  : close

:  : put ='case3: failed'

:  :else

:  : close

:  : put ='case3: ok'

:  :endif
Results of test83
case1: ok
case2: ok
case3: ok
~
~~~~~:close
E37: No write since last change (add ! to override)::wq! test.out
"test.out" [New File] 4 lines, 48 characters written
[?1l>
# For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test83 = test61; then \
#	  if diff test.out test83.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test83.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test83.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test89.failed test.ok test.out X* viminfo
cp test89.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test89.in
[?1h="test89.in" 71 lines, 1514 characters- Some tests for setting 'number' and 'relativenumber'
  This is not all that useful now that the options are no longer reset when
  setting the other.
- Some tests for findfile() function

STARTTEST
:so small.vim
:set hidden nocp nu rnu viminfo+=nviminfo
:redir @a | set nu? rnu? | redir END
:e! xx
:redir @b | set nu? rnu? | redir END
:e! #
:$put ='results:'
:$put a
:$put b
:"
:set nonu nornu
:setglobal nu
:setlocal rnu
:redir @c | setglobal nu? | redir END
:set nonu nornu
:setglobal rnu
:setlocal nu:set cp
:map dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set f

f& cpo+=A^^Mnj0:so! Xdotest^^Mdotest
- Some tests for setting 'number' and 'relativenumber'/^STARTTEST

:set ff=unix cpo-=A
:.,/ENDTEST/-1w! Xdotest
"Xdotest" [New File] 63 lines, 1305 characters written:set ff& cpo+=A
/ENDTEST:$put =':set MUST reset the other global value'
:$put g
:$put h
:"
:let cwd=getcwd()
:cd ..
:" Tests may be run from a shadow directory, so an extra cd needs to be done to
:" get above src/
:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
:$put =''
:$put ='Testing findfile'
:$put =''
:set ssl
:$put =findfile('test19.in','src/test*')
:exe "cd" cwd
:cd ..
:$put =findfile('test19.in','test*')
:$put =findfile('test19.in','testdir')
:exe "cd" cwd
:/^results/,$w! test.out
:q!
ENDTEST


:so! Xdotest
:so small.vim
:set hidden nocp nu rnu viminfo+=nviminfo
 21 :$put g 20 :$put h
 19 :" 18 :let cwd=getcwd()
 17 :cd .. 16 :" Tests may be run from a shadow directory, so an extra cd needs to be donee     to 15 :" get above src/
 14 :if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
 13 :$put =''
 12 :$put ='Testing findfile'
 11 :$put =''
 10 :set ssl
  9 :$put =findfile('test19.in','src/test*')
  8 :exe "cd" cwd
  7 :cd ..
  6 :$put =findfile('test19.in','test*')
  5 :$put =findfile('test19.in','testdir')
  4 :exe "cd" cwd
  3 :/^results/,$w! test.out
  2 :q!
  1 ENDTEST
71  :redir @a | set nu? rnu? | redir END
  number

  relativenumber

Press ENTER or type command to continue:e! xx
"xx" [New File]1   
~~~~~~~~~~~~~~~~~~~~~~:redir @b | set nu? rnu? | redir END
  number

  relativenumber

Press ENTER or type command to continue:e! #
"test89.in" line 71 of 71 --100%-- col 1 21 :$put g
 20 :$put h
 19 :"
 18 :let cwd=getcwd()
 17 :cd ..
 16 :" Tests may be run from a shadow directory, so an extra cd needs to be donee     to
 15 :" get above src/
 14 :if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
 13 :$put =''
 12 :$put ='Testing findfile'
 11 :$put =''
 10 :set ssl
  9 :$put =findfile('test19.in','src/test*')
  8 :exe "cd" cwd
  7 :cd ..
  6 :$put =findfile('test19.in','test*')
  5 :$put =findfile('test19.in','testdir')
  4 :exe "cd" cwd
  3 :/^results/,$w! test.out
  2 :q!
  1 ENDTEST
71  "test89.in" line 71 of 71 --100%-- col 1:$put ='results:'

1
 20
 19
 18
 17ee 
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
72  results:
:$put a
3 more lines


21
 20ee 
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3 
  2 
  1   number
75    relativenumber3 more lines:$put b
3 more lines


22
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3 
  2 
  1   number
78    relativenumber3 more lines:"
:set nonu nornu
:" get above src/:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif:$put ='':$put ='Testing findfile':$put ='':set ssl:$put =findfile('test19.in','src/test*'):exe "cd" cwd:cd ..:$put =findfile('test19.in','test*'):$put =findfile('test19.in','testdir'):exe "cd" cwd:/^results/,$w! test.ou:q!ENDTESTresults:  number  relativenumber  number  relativenumber:setglobal nu
:setlocal rnu
 22 :" get above src/
 21 :if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
 20 :$put =''
 19 :$put ='Testing findfile'
 18 :$put =''
 17 :set ssl
 16 :$put =findfile('test19.in','src/test*')
 15 :exe "cd" cwd
 14 :cd ..
 13 :$put =findfile('test19.in','test*')
 12 :$put =findfile('test19.in','testdir')
 11 :exe "cd" cwd
 10 :/^results/,$w! test.out
  9 :q!
  8 ENDTEST
  7 
  6 results:
  5 
  4   number
  3   relativenumber
  2 
  1   number
  0   relativenumber:redir @c | setglobal nu? | redir END
  number:set nonu nornu
:" get above src/:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif:$put ='':$put ='Testing findfile':$put ='':set ssl:$put =findfile('test19.in','src/test*'):exe "cd" cwd:cd ..:$put =findfile('test19.in','test*'):$put =findfile('test19.in','testdir'):exe "cd" cwd:/^results/,$w! test.ou:q!ENDTESTresults:  number  relativenumber  number  relativenumber:setglobal rnu
:setlocal nu
 56 :" get above src/
 57 :if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
 58 :$put =''
 59 :$put ='Testing findfile'
 60 :$put =''
 61 :set ssl
 62 :$put =findfile('test19.in','src/test*')
 63 :exe "cd" cwd
 64 :cd ..
 65 :$put =findfile('test19.in','test*')
 66 :$put =findfile('test19.in','testdir')
 67 :exe "cd" cwd
 68 :/^results/,$w! test.out
 69 :q!
 70 ENDTEST
 71 
 72 results:
 73 
 74   number
 75   relativenumber
 76 
 77   number
 78   relativenumber:redir @d | setglobal rnu? | redir END
  relativenumber:$put =':setlocal must NOT reset the other global value'

 79 :setlocal must NOT reset the other global value
:$put c


 80 
 81   number
:$put d


 82 
 83   relativenumber
:"
:set nonu nornu
:set ssl:$put =findfile('test19.in','src/test*'):exe "cd" cwd:cd ..:$put =findfile('test19.in','test*'):$put =findfile('test19.in','testdir'):exe "cd" cwd:/^results/,$w! test.ou:q!ENDTESTresults:  number  relativenumber  number  relativenumber:setlocal must NOT reset the other global value  number  relativenumber:setglobal nu
:setglobal rnu
:redir @e | setglobal nu? | redir END
  number:set nonu nornu
:setglobal rnu
:setglobal nu
:redir @f | setglobal rnu? | redir END
  relativenumber:$put =':setglobal MUST reset the other global value'

:setglobal MUST reset the other global value
:$put e


number
:$put f


relativenumber
:"
:set nonu nornu
:set nu
 66 :$put =findfile('test19.in','testdir')
 67 :exe "cd" cwd
 68 :/^results/,$w! test.out
 69 :q!
 70 ENDTEST
 71 
 72 results:
 73 
 74   number
 75   relativenumber
 76 
 77   number
 78   relativenumber
 79 :setlocal must NOT reset the other global value
 80 
 81   number
 82 
 83   relativenumber
 84 :setglobal MUST reset the other global value
 85 
 86   number
 87 
 88   relativenumber:set rnu
22
 21
 20
 1
 18
 17
 16
 15
 1
 13
 12
 11
 10
  
  8
  7
  6
  5
  
  3
  2
  1
88    :redir @g | setglobal nu? | redir END
  number:set nonu nornu
:$put =findfile('test19.in','testdir'):exe "cd" cwd:/^results/,$w! test.ou:q!ENDTESTresults:  number  relativenumber  number  relativenumber:setlocal must NOT reset the other global value  number  relativenumber:setglobal MUST reset the other global value  number  relativenumber:set rnu
 22 :$put =findfile('test19.in','testdir')
 21 :exe "cd" cwd
 20 :/^results/,$w! test.out
 19 :q!
 18 ENDTEST
 17 
 16 results:
 15 
 14   number
 13   relativenumber
 12 
 11   number
 10   relativenumber
  9 :setlocal must NOT reset the other global value
  8 
  7   number
  6 
  5   relativenumber
  4 :setglobal MUST reset the other global value
  3 
  2   number
  1 
  0   relativenumber:set nu
88    :redir @h | setglobal rnu? | redir END
  relativenumber:$put =':set MUST reset the other global value'

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
89  :set MUST reset the other global value
:$put g


2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2 
  1 
91    number
:$put h


2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2 
  1 
93    relativenumber
:"
:let cwd=getcwd()
:cd ..
/<<PKGBUILDDIR>>/src/vim-athena:" Tests may be run from a shadow directory, so an extra cd needs to be done to
:" get above src/
:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
/<<PKGBUILDDIR>>:$put =''

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
94  
:$put ='Testing findfile'

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
95  Testing findfile
:$put =''

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
96  
:set ssl
:$put =findfile('test19.in','src/test*')

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
97  src/testdir/test19.in
:exe "cd" cwd
/<<PKGBUILDDIR>>/src/vim-athena/testdir:cd ..
/<<PKGBUILDDIR>>/src/vim-athena:$put =findfile('test19.in','test*')

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
98  testdir/test19.in
:$put =findfile('test19.in','testdir')

2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
99  testdir/test19.in
:exe "cd" cwd
/<<PKGBUILDDIR>>/src/vim-athena/testdir:/^results/,$w! test.out
search hit BOTTOM, continuing at TOP
"test.out" [New] 28L, 356C written:q!
[?1l># For flaky tests retry one time.  No tests at the moment.
#@/bin/sh -c "if test -f test.out -a test89 = test61; then \
#	  if diff test.out test89.ok; \
#	  then echo flaky test ok first time; \
#	  else rm -rf test89.failed test.out X* viminfo; \
#		VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -s dotest.in test89.in; \
#	  fi \
#	fi"
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_arglist.vim
[?1h="test_arglist.vim" 318 lines, 6653 characters

Executing Test_argadd()
"a" [New File]bababababd

Executing Test_argc()
"a" [New File]
Executing Test_argdelete()
"a" [New File]a" [New File]
"bb

Executing Test_argedit()
"a" [New File]ba

"c" [New File]
"x

"y" [New File]

Executing Test_argidx()
"a" [New File]cabc

Executing Test_arglist_autocmd()
"Xxx1" 1L, 15C
"Xxx21L, 15C1L, 15C
"Xxx1" line 1 of 1 --100%-- col 1 ((3) of 2)
"Xxx21 of 2)
3 buffers wiped out

Executing Test_arglistid()
"a" [New File]
Executing Test_argpos()
"a" [New File]d

"c" [New File]
"ba

"d" [New File]
"a

Executing Test_argument()
"d" [New File]cbafile] --No lines in buffer-- (1 of 4)
"c3

a b [c] d
"c" [New File]

"x" [New File]
"z

Executing Test_argv()
"a" [New file] --No lines in buffer--

Executing Test_zero_argadd()
"b" [New file] --No lines in buffer-- (2 of 4)
"aFbedited" [New File]
"a" [New File]test_arglist.res" [New File][New] 0L, 0C written

Executed 11 tests
"messages" [New File][New] 15L, 326C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_assert.vim
[?1h="test_assert.vim" 125 lines, 2880 characters

Executing Test_assert_equal()

Executing Test_assert_exception()

Executing Test_assert_fail_fails()

Executing Test_assert_false()

Executing Test_assert_inrange()

Executing Test_assert_notequal()

Executing Test_assert_true()

Executing Test_compare_fail()

Executing Test_match()

Executing Test_notmatch()

Executing Test_user_is_happy()


oooo$$$$$$$$$$$$oooo

oo$$$$$$$$$$$$$$$$$$$$$$$$o

oo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$oo$   $$ o$

     o $ ooo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o$$ $$ $$o$

  oo $ $ "$      o$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$o$$$o$$o$

  "$$$$$$o$     o$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$o    $$$$$$$$

    $$$$$$$    $$$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$

    $$$$$$$$$$$$$$$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$$$$$$  """$$$

     "$$$""""$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$

      $$$   o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$o

     o$$"   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o

     $$$    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" "$$$$$$ooooo$$$$o

    o$$$oooo$$$$$  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$   o$$$$$$$$$$$$$$$$$

    $$$$$$$$"$$$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     $$$$""""""""

   """"$$$$    "$$$$$$$$$$$$$$$$$$$$$$$$$$$$"      o$$$

"$$$o     """$$$$$$$$$$$$$$$$$$"$$"$$$

$$$o"$$""$$$$$$""""o$$$

$$$$oo$$$"

"$$$$o      o$$$$$$o"$$$$oo$$$$

"$$$$$oo     ""$$$$o$$$$$o   o$$$$""

""$$$$$oooo  "$$$o$$$$$$$$$"""

""$$$$$$$oo $$$$$$$$$$

""""$$$$$$$$$$$

$$$$$$$$$$$$

$$$$$$$$$$"

"$$$""""

Executing Test_wrong_error_type()
"test_assert.res" [New File][New] 0L, 0C written

Executed 12 tests
"messages" 15L, 326C30L, 734C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_autochdir.vim
[?1h="test_autochdir.vim" 17 lines, 332 characters

Executing Test_set_filename()
"samples/Xtest" [New] 0L, 0C written
"test_autochdir.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"30L, 734C34L, 806C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_backspace_opt.vim
[?1h="test_backspace_opt.vim" 59 lines, 1673 characters

Executing Test_backspace_option()
"test_backspace_opt.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"34L, 806C38L, 886C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_bufwintabinfo.vim
[?1h="test_bufwintabinfo.vim" 116 lines, 3459 characters

Executing Test_get_buf_options()

Executing Test_get_win_options()

Executing Test_getbufwintabinfo()
"Xtestfile1" [New File]212

Already only one window
"test_bufwintabinfo.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"38L, 886C44L, 1033C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_cdo.vim
[?1h="test_cdo.vim" 205 lines, 5116 characters

Executing Test_cdo()
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile1" 3L, 18C33L, 18C

(1 of 1): Line3
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2

(7 of 8): Line2
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile2" 3L, 18C

(5 of 8): Line2

(5 of 8): Line2

(1 of 1): Line2

Executing Test_ldo()
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile1" 3L, 18C

(2 of 6): Line1
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2

(4 of 6): Line2
"Xtestfile3" 3L, 18C

(6 of 6): Line3
"Xtestfile2" 3L, 18C

(4 of 6): Line2
"Xtestfile1" 3L, 18C33L, 18C

(1 of 1): Line3
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2

(7 of 8): Line2
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile1" 3L, 18C

(2 of 8): Line1
"Xtestfile2" 3L, 18C

(5 of 8): Line2
"Xtestfile3" 3L, 18C

(7 of 8): Line2
"Xtestfile2" 3L, 18C

(5 of 8): Line2

(5 of 8): Line2

(1 of 1): Line2
"test_cdo.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"44L, 1033C49L, 1112C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_channel.vim
[?1h="test_channel.vim" 1528 lines, 43719 characters
"test_channel.res" [New File][New] 0L, 0C written

Executed 0 test
"messages"49L, 1112C52L, 1152C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_charsearch.vim
[?1h="test_charsearch.vim" 62 lines, 1475 characters

Executing Test_charsearch()

Executing Test_search_cmds()
"test_charsearch.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"52L, 1152C57L, 1253C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_cmdline.vim
[?1h="test_cmdline.vim" 191 lines, 5876 characters

Executing Test_complete_list():e test

test1.intest84.ok

test1.oktest84.out

test1.outtest85.in

test103.intest85.ok

test103.oktest85.out

test103.outtest86.in

test104.intest86.ok

test104.oktest86.out

test104.outtest87.in

test107.intest87.ok

test107.oktest87.out

test107.outtest88.in

test108.intest88.ok

test108.oktest88.out

test108.outtest89.in

test11.intest89.ok

test11.oktest89.out

test11.outtest9.in

test12.intest9.ok

test12.oktest9.out

test12.outtest90.in

test14.intest90.ok

test14.oktest90.out

test14.outtest91.in

test15.intest91.ok

test15.oktest91.out

test15.outtest92.in

test17.intest92.ok

test17.oktest92.out

test17.outtest93.in

test17a.intest93.ok

test19.intest93.out

test19.oktest94.in

test19.outtest94.ok

test20.intest94.out

test20.oktest95.in

test20.outtest95.ok

test22.intest95.out

test22.oktest97.in

test22.outtest97.ok

test23.intest97.out

test23.oktest98.in

test23.outtest98.ok

test24.intest98.out

test24.oktest99.in

test24.outtest99.ok

test25.intest99.out

test25.oktest_alot.vim

test25.outtest_alot_latin.vim

test26.intest_alot_utf8.vim

test26.oktest_arglist.res

test26.outtest_arglist.vim

test28.intest_assert.res

test28.oktest_assert.vim

test28.outtest_assign.vim

test29.intest_autochdir.res

test29.oktest_autochdir.vim

test29.outtest_autocmd.vim

test3.intest_autocmd_option.in

test3.oktest_autocmd_option.ok

test3.outtest_autocmd_option.out

test30.intest_autoformat_join.in

test30.oktest_autoformat_join.ok

test30.outtest_autoformat_join.out

test31.intest_backspace_opt.res

test31.oktest_backspace_opt.vim

test31.outtest_breakindent.in

test32.intest_breakindent.ok

test32.oktest_breakindent.out

test32.outtest_bufwintabinfo.res

test33.intest_bufwintabinfo.vim

test33.oktest_cdo.res

test33.outtest_cdo.vim

test34.intest_changelist.in

test34.oktest_changelist.ok

test34.outtest_changelist.out

test36.intest_channel.py

test36.oktest_channel.res

test36.outtest_channel.vim

test37.intest_channel_pipe.py

test37.oktest_charsearch.res

test37.outtest_charsearch.vim

test38.intest_close_count.in

test38.oktest_close_count.ok

test38.outtest_close_count.out

test39.intest_cmdline.vim

test39.oktest_command_count.vim

test39.outtest_comparators.in

test4.intest_comparators.ok

test4.oktest_comparators.out

test4.outtest_crypt.vim

test40.intest_cscope.vim

test40.oktest_cursor_func.vim

test40.outtest_delete.vim

test41.intest_diffmode.vim

test41.oktest_digraph.vim

test41.outtest_erasebackword.in

test42.intest_erasebackword.ok

test42.oktest_erasebackword.out

test42.outtest_eval.in

test43.intest_eval.ok

test43.oktest_eval.out

test43.outtest_eval_func.vim

test44.intest_ex_undo.vim

test44.oktest_execute_func.vim

test44.outtest_expand.vim

test45.intest_expand_dllpath.vim

test45.oktest_expr.vim

test45.outtest_expr_utf8.vim

test48.intest_farsi.vim

test48.oktest_feedkeys.vim

test48.outtest_file_perm.vim

test49.intest_filter_cmd.vim

test49.oktest_filter_map.vim

test49.outtest_fixeol.in

test49.vimtest_fixeol.ok

test5.intest_fixeol.out

test5.oktest_fnameescape.vim

test5.outtest_fnamemodify.vim

test50.intest_getcwd.in

test50.oktest_getcwd.ok

test51.intest_getcwd.out

test51.oktest_gf.vim

test51.outtest_glob2regpat.vim

test52.intest_gn.vim

test52.oktest_goto.vim

test52.outtest_gui.vim

test53.intest_hardcopy.vim

test53.oktest_help_tagjump.vim

test53.outtest_history.vim

test54.intest_hlsearch.vim

test54.oktest_increment.vim

test54.outtest_increment_dbcs.vim

test55.intest_insertcount.in

test55.oktest_insertcount.ok

test55.outtest_insertcount.out

test56.intest_job_fails.vim

test56.oktest_join.vim

test56.outtest_json.vim

test57.intest_jumps.vim

test57.oktest_lambda.vim

test57.outtest_langmap.vim

test58.intest_largefile.vim

test58.oktest_lispwords.vim

test58.outtest_listchars.in

test59.intest_listchars.ok

test59.oktest_listchars.out

test59.outtest_listlbr.in

test60.intest_listlbr.ok

test60.oktest_listlbr.out

test60.outtest_listlbr_utf8.in

test60.vimtest_listlbr_utf8.ok

test64.intest_listlbr_utf8.out

test64.oktest_man.vim

test64.outtest_mapping.vim

test65.intest_marks.vim

test65.oktest_match.vim

test65.outtest_matchadd_conceal.vim

test66.intest_matchadd_conceal_utf8.vim

test66.oktest_menu.vim

test66.outtest_messages.vim

test67.intest_nested_function.vim

test67.oktest_netbeans.py

test67.outtest_netbeans.vim

test68.intest_normal.vim

test68.oktest_options.vim

test68.outtest_packadd.vim

test69.intest_partial.vim

test69.oktest_perl.vim

test69.outtest_popup.vim

test7.intest_quickfix.vim

test7.oktest_regexp_latin.vim

test7.outtest_regexp_utf8.vim

test70.intest_reltime.vim

test70.oktest_ruby.vim

test70.outtest_search.vim

test72.intest_search_mbyte.in

test72.oktest_search_mbyte.ok

test72.outtest_search_mbyte.out

test73.intest_searchpos.vim

test73.oktest_set.vim

test73.outtest_signs.vim

test75.intest_smartindent.vim

test75.oktest_sort.vim

test75.outtest_source_utf8.vim

test76.intest_startup.vim

test76.oktest_startup_utf8.vim

test76.outtest_stat.vim

test77.intest_statusline.vim

test77.oktest_substitute.vim

test77.outtest_syn_attr.vim

test77a.intest_syntax.vim

test77a.oktest_tabline.vim

test78.intest_tabpage.vim

test78.oktest_tagcase.vim

test78.outtest_tagjump.vim

test79.intest_textobjects.vim

test79.oktest_timers.vim

test79.outtest_true_false.vim

test8.intest_undo.vim

test8.oktest_unlet.vim

test8.outtest_usercommands.vim

test80.intest_utf8.in

test80.oktest_utf8.ok

test80.outtest_utf8.out

test82.intest_viminfo.vim

test82.oktest_viml.vim

test82.outtest_visual.vim

test83-tags2test_window_cmd.vim

test83-tags3test_window_id.vim

test83.intest_wordcount.in

test83.oktest_wordcount.ok

test83.outtest_wordcount.out

test84.intest_writefile.vim

:e test
"test" [New File]

Executing Test_complete_tab():e Xtest...file
"Xtestfile" 1L, 9C

Executing Test_complete_wildmenu():e Xtest...file1...

Xtestfile1  Xtestfile2  
Xtestfile1                                                        :e Xtest...Xtestfile1
Xtestfile1file1...Xtestfile1Xtestfile22:e Xtestfile2"Xtestfile2" 1L, 10C
Executing Test_expand_star_star():find **/fileXname...a/b/fileXname
"a/b/fileXname" 1L, 9C
"Xtestfile2" [New File]

Executing Test_getcompletion():cscope find 

a  c  d  e  f  g  i  s  t

:cscope find :sign list 

Testing

:sign list "test_cmdline.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"57L, 1253C65L, 1455C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_crypt.vim
[?1h="test_crypt.vim" 83 lines, 2590 characters

Executing Test_crypt_blowfish()
"Xtest.txt" [New File]:X

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

Enter same key again: ******

"Xtest.txt" [New][blowfish] 3L, 98C written
:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [blowfish] 3L, 98C

Executing Test_crypt_blowfish2()
"Xtest.txt" [New File]:X
Enter encryption key: ******
Enter same key again: ******

"Xtest.txt" [New][blowfish2] 3L, 98C written
:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Enter encryption key: ******

"Xtest.txt" [blowfish2] 3L, 98C

Executing Test_crypt_zip()
"Xtest.txt" [New File]:X

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

Enter same key again: ******

"Xtest.txt" [New][crypted] 3L, 98C written
:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [crypted] 3L, 98C

Executing Test_head_only_2()
"Xtest.txt" [New File][New] 1L, 16C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [readonly] 1L, 16C

Executing Test_head_only_3()
"Xtest.txt" [New File][New] 1L, 16C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Enter encryption key: ******

"Xtest.txt" [readonly] 1L, 16C

Executing Test_uncrypt_blowfish()
"Xtest.txt" [New File][converted][New][noeol] 1L, 80C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [blowfish] 2L, 27C

Executing Test_uncrypt_blowfish2()
"Xtest.txt" [New File][converted][New][noeol] 1L, 103C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Enter encryption key: *******

"Xtest.txt" [blowfish2] 2L, 44C

Executing Test_uncrypt_zip()
"Xtest.txt" [New File][converted][New][noeol] 1L, 45C written:split Xtest.txt
"Xtest.txt" Need encryption key for "Xtest.txt"

Warning: Using a weak encryption method; see :help 'cm'

Enter encryption key: ******

"Xtest.txt" [converted][crypted] 2L, 26C"test_crypt.res" [New File][converted][New] 0L, 0C written
Executed 8 tests
"messages"65L, 1455C76L, 1742C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_cscope.vim
[?1h="test_cscope.vim" 279 lines, 10568 characters
"test_cscope.res" [New File][New] 0L, 0C written

Executed 0 test
"messages"76L, 1742C79L, 1781C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_diffmode.vim
[?1h="test_diffmode.vim" 220 lines, 4746 characters

Executing Test_diff_fold_sync()

Executing Test_diffget_diffput()

Executing Test_diffoff()  -------------------------------------|
  -------------------------------------|
  Two|
  Three|||||||||||||||||||  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    ~                                    
[No Name] [+]                             One                                                                             Two  Three                                    ~~~~~~~~~~~~~~~~~~[No Name] [+]                           Two                                    
Three                                  
~                                      
~                                      
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  
~  OneTwoThree~~~~~~~~~~~~~~~~~~

Executing Test_filler_lines()

7 more lines

10 more lines

Executing Test_vert_split()
"Xtest" [New] 5L, 25C written"Xtest2" [New] 6L, 29C written

"Nop" [Modified][Not edited] line 4 of 6 --66%-- col 3"Xtest" 5L, 25C2" 6L, 29C
"test_diffmode.vim" 220L, 4746Cres" [New File][New] 0L, 0C written

Executed 5 tests
"messages"79L, 1781C87L, 1971C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_digraph.vim
[?1h="test_digraph.vim" 461 lines, 14928 characters

Executing Test_digraph_cmndline()
Executing T

Executing Test_digraphs()
Executing Test_digraphs_option()
Executing Test_digraphs_output()

Executing Test_loadkeymap()"test_digraph.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"87L, 1971C95L, 2166C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_farsi.vim
[?1h="test_farsi.vim" 84 lines, 2881 characters

Executed 2 tests
"messages"[converted] 95L, 2166C[converted] 100L, 2262C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_fnameescape.vim
[?1h="test_fnameescape.vim" 21 lines, 467 characters

Executing Test_fnameescape()
"Xspa ce"[New] 21L, 467C written
"Xemark![New] 21L, 467C written
"test_fnameescape.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"100L, 2262C104L, 2335C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_gf.vim
[?1h="test_gf.vim" 33 lines, 1138 characters

Executing Test_gf_url()
"test_gf.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"104L, 2335C108L, 2394C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_gn.vim
[?1h="test_gn.vim" 93 lines, 2821 characters

Executing Test_gn_command()/[u]niquepattern/s
/a:0\@!\zs\d\+
"test_gn.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"108L, 2394C112L, 2457C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_gui.vim
[?1h="test_gui.vim" 36 lines, 838 characters
"test_gui.res" [New File][New] 0L, 0C written

Executed 0 test
"messages"112L, 2457C115L, 2493C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_hardcopy.vim
[?1h="test_hardcopy.vim" 62 lines, 2001 characters

Executing Test_printheader_parsing()

Executing Test_printmbfont_parsing()

Executing Test_printoptions_parsing()

Executing Test_with_syntax()Printing page 1 (0%)Printed: test_hardcopy.vim
"test_hardcopy.res" [New File][New] 0L, 0C written

Executed 4 tests
"messages"115L, 2493C122L, 2676C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_history.vim
[?1h="test_history.vim" 65 lines, 1978 characters

Executing Test_History()

"test_history.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"122L, 2676C126L, 2741C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_hlsearch.vim
[?1h="test_hlsearch.vim" 34 lines, 1013 characters

Executing Test_hlsearch()/aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
~
[No Name] [+]                                                                   " Test for v:hlsearch

function! Test_hlsearch()
  new
  call setline(1, repeat(['aaa'], 10))
  set hlsearch nolazyredraw
  let r=[]
  " redraw is needed to make hlsearch highlight the matches
  exe "normal! /aaa\<CR>" | redraw
  let r1 = screenattr(1, 1)
test_hlsearch.vim                                                               aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaa


/aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaaaaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaa//aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaa//aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaaaaaaaa


"test_hlsearch.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"126L, 2741C130L, 2808C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_increment.vim
[?1h="test_increment.vim" 760 lines, 19011 characters

Executing Test_normal_increment_01()
"dummy" [New File]
Executing Test_normal_increment_02()
"dummy" [New File]
Executing Test_normal_increment_03()
"dummy" [New File]
Executing Test_visual_increment_01()
"dummy" [New File]
Executing Test_visual_increment_02()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_03()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_04()
"dummy" [New File]
Executing Test_visual_increment_05()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_06()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_07()
"dummy" [New File]5 lines changed
Executing Test_visual_increment_08()
"dummy" [New File]
Executing Test_visual_increment_09()
"dummy" [New File]
Executing Test_visual_increment_10()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_11()
"dummy" [New File]3 lines changed
Executing Test_visual_increment_12()
"dummy" [New File]3 lines changed
Executing Test_visual_increment_13()
"dummy" [New File]3 lines changed
Executing Test_visual_increment_14()
"dummy" [New File]
Executing Test_visual_increment_15()
"dummy" [New File]
Executing Test_visual_increment_16()
"dummy" [New File]3 lines changed
Executing Test_visual_increment_17()
"dummy" [New File]
Executing Test_visual_increment_18()
"dummy" [New File]4 lines changed
Executing Test_visual_increment_19()
"dummy" [New File]
Executing Test_visual_increment_20()
"dummy" [New File]
Executing Test_visual_increment_21()
"dummy" [New File]
Executing Test_visual_increment_22()
"dummy" [New File]
Executing Test_visual_increment_23()
"dummy" [New File]
Executing Test_visual_increment_24()
"dummy" [New File]
Executing Test_visual_increment_25()
"dummy" [New File]
Executing Test_visual_increment_26()
"dummy" [New File]
Executing Test_visual_increment_27()
"dummy" [New File]
Executing Test_visual_increment_28()
"dummy" [New File]
Executing Test_visual_increment_29()
"dummy" [New File]
Executing Test_visual_increment_30()
"dummy" [New File]
Executing Test_visual_increment_31()
"dummy" [New File]
Executing Test_visual_increment_32()
"dummy" [New File]_31" [New File]

Executing Test_visual_increment_33()
"dummy" [New File]
Executing Test_visual_increment_34()
"dummy" [New File]
Executing Test_visual_increment_35()
"dummy" [New File]
Executing Test_visual_increment_36()
"dummy" [New File]
Executing Test_visual_increment_37()
"dummy" [New File]
Executing Test_visual_increment_38()
"dummy" [New File]"test_increment.res" [New File][New] 0L, 0C written

Executed 41 tests
"messages" 130L, 2808C174L, 4369C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_increment_dbcs.vim
[?1h="test_increment_dbcs.vim" 30 lines, 604 characters

Executing Test_increment_dbcs_1()
"test_increment_dbcs.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"[converted] 174L, 4369C[converted] 178L, 4450C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_job_fails.vim
[?1h="test_job_fails.vim" 19 lines, 598 characters

Executing Test_job_start_fails()
"test_job_fails.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"178L, 4450C182L, 4525C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_json.vim
[?1h="test_json.vim" 281 lines, 10366 characters

Executing Test_js_decode()

Executing Test_js_encode()

Executing Test_json_decode()

Executing Test_json_encode()

"test_json.res" [New File][New] 0L, 0C written

Executed 4 tests
"messages"182L, 4525C189L, 4675C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_langmap.vim
[?1h="test_langmap.vim" 28 lines, 628 characters

Executing Test_langmap()
"test_langmap.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"189L, 4675C193L, 4740C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_man.vim
[?1h="test_man.vim" 60 lines, 1358 characters

Executing Test_g_ft_man_open_mode()


Cannot find a 'vim'.

Executing Test_nomodifiable()


Cannot find a 'vim'.
"test_man.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"193L, 4740C198L, 4843C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_marks.vim
[?1h="test_marks.vim" 26 lines, 775 characters

Executing Test_Incr_Marks()

Executing Test_Restore_DelMark()1 more line; before #2  0 seconds ago
1 line less; after #2  0 seconds agomore line; before #2  0 seconds ago
"test_marks.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"198L, 4843C203L, 4943C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_matchadd_conceal.vim
[?1h="test_matchadd_conceal.vim" 266 lines, 8378 characters[?1l>Executing Test_clearmatches()# This is a Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       #ZThisZisZaZTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_default_conceal_char()# This is a Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       #+This+is+a+Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_matchadd_and_conceallevel_3()#ThisisaTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       #Thisisa Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_matchadd_repeat_conceal_with_syntax_off()TARGET_TARGETTARGET" Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term
endif

function! s:(lnum)t_ttsimple_matchadd()# This is a Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_simple_matchadd_and_conceal()#XThisXisXaXTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_syn_and_match_conceal()#ZThisZisZaZTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       #*This*is*a*Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       Executing Test_using_matchaddpos()#Pis a Test
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " Test for matchadd() and conceal feature
if !has('conceal')
  finish
endif

if !has('gui_running') && has('unix')
  set term=ansi
endif

function! s:screenline(lnum) abort
test_matchadd_conceal.vim                                                       "test.log" [New File][New] 8L, 363C written

Executed 8 tests

2 FAILED:
"messages" 203L, 4943C220L, 5654C written

VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_nested_function.vim
[?1h="test_nested_function.vim" 32 lines, 622 characters

Executing Test_nested_functions()
"test_nested_function.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"220L, 5654C224L, 5736C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_netbeans.vim
[?1h="test_netbeans.vim" 79 lines, 2100 characters
"test_netbeans.res" [New File][New] 0L, 0C written

Executed 0 test
"messages"224L, 5736C227L, 5777C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_normal.vim
[?1h="test_normal.vim" 2209 lines, 57349 characters

Executing Test_normal00_optrans()
Executing Test_normal01_keymodel()
4 lines yankedExecuting Test_normal02_selectmode()10 fewer lines
Executing Test_normal02_selectmode2():set im
:set noim

Executing Test_normal03_join()

Executing Test_normal04_filter():.!sed -e 's/^/|    /'
[?1l>one
[?1h=:.!sed -e 's/^/|    /'
:.!
:!echo one
[?1l>
[No write since last change]

one
[?1h=:.!!

Executing Test_normal05_formatexpr()

Executing Test_normal05_formatexpr_newbuf()
"another" [New File]
Executing Test_normal05_formatexpr_setopt()

Executing Test_normal06_formatprg():.,$!./Xsed_format.sh
7 lines filtered
Executing Test_normal07_internalfmt()
7 fewer lin
Executing Test_normal08_fold()

Executing Test_normal09_operatorfunc()

11 substitutions on 11 lines

Executing Test_normal10_expand()

Executing Test_normal11_showcmd()
Executing Test_normal12_nv_error()

Executing Test_normal13_help()
"help.txt" [readonly] 225L, 8437C

Executing Test_normal14_page()

Executing Test_normal14_page_eol()
Executing Test_normal15_z_scroll_vert()

Executing Test_normal16_z_scroll_hor()

Executing Test_normal17_z_scroll_hor2()

Executing Test_normal18_z_fold()

Executing Test_normal19_z_spell()
Word 'goood' added to ./Xspellfile.add
search hit BOTTOM, continuing at TOPWord 'goood' added to ./Xspellfile.add2 goood' added to ./Xspellfile.add/tmp/vOVkqAR/9removed from /tmp/vOVkqAR/9goood' added to /tmp/vOVkqAR/9removed from /tmp/vOVkqAR/9added to ./Xspellfile.addremoved from ./Xspellfile.add2 goood' added to ./Xspellfile.addremoved from ./Xspellfile.addgoood' added to ./Xspellfile2.add
Executing Test_normal20_exmode()

Executing Test_normal21_nv_hat()
"Xfoobar" [New File]ile2" [New File]
Executing Test_normal22_zet()

Executing Test_normal23_K()
"version8.txt" [readonly] 14510L, 546213Cline 1 of 14510 --0%-- col 1
:! man --pager=cat 'man'[?1l>
[No write since last change]

stdin not open for reading!

shell returned 2

[?1h=
Executing Test_normal24_rot13()

Executing Test_normal25_tag()
"help.txt" [readonly] 225L, 8437C
"change.txt" [readonly] 1829L, 74755C
"help.txt" [readonly] 225L, 8437C
"change.txt" [readonly] 1829L, 74755C
"help.txt" [readonly] 225L, 8437C
"insert.txt" [readonly] 2003L, 82815Cline 49 of 2003 --2%-- col 7-49

Executing Test_normal26_put()

Executing Test_normal27_bracket()

21 substitutions on 21 lines

Executing Test_normal28_parenthesis()

Executing Test_normal29_brace()
17 fewer lines4 fewer lines3
Executing Test_normal30_changecase()

Executing Test_normal31_r_cmd()
Executing Test_normal32_g_cmd1()
/x_foo?abc
Executing Test_normal33_g_cmd2()/[1-8]
search hit BOTTOM, continuing at TOP
9 substitutions on 9 linesblock of 3 lines yanked5
Executing Test_normal34_g_cmd3()

Executing Test_normal35_g_cmd4()

Executing Test_normal36_g_cmd5()

Executing Test_normal37_g_cmd6()
"1.txt" [New File]23

Executing Test_normal38_nvhome()

Executing Test_normal39_cw()
Executing Test_normal40_ctrl_bsl()
Executing Test_normal41_insert_reg()=a
=a
=a

Executing Test_normal42_halfpage()

Executing Test_normal43_textobject1()

Executing Test_normal44_textobjects2()

Executing Test_normal45_drop()

Executing Test_normal46_ignore()

Executing Test_normal47_autocmd()

Executing Test_normal47_visual_buf_wipe()

Executing Test_normal48_wincmd()

Executing Test_normal49_counts()

Executing Test_normal50_commandline()q:  :xxx
~
~
~
~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       :set im
:set noim
:.!sed -e 's/^/|    /'
:.!
:!echo one
:.!!
:
[Command Line]                                                                  :^M   

Executing Test_normal51_FileChangedRO()
"Xreadonly.log" 1L, 4C
Error detected while processing ...[9]..Test_normal51_FileChangedRO:
line    8:W10: Warning: Changing a readonly file
Executing Test_normal52_rl()3_digraph()

Executing Test_normal54_Ctrl_bsl()
"test_normal.res" [New File][New] 0L, 0C written

Executed 60 tests
"messages" 227L, 5777C294L, 8101C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_packadd.vim
[?1h="test_packadd.vim" 238 lines, 8288 characters

Executing Test_colorscheme()

Executing Test_colorscheme_completion():colorscheme ...one')
:ccolorscheme one')
:cacolorscheme one')
:calcolorscheme one')
:callcolorscheme one')
:call colorscheme one')acolorscheme one')dcolorscheme one')dcolorscheme one')(colorscheme one')lcolorscheme one')icolorscheme one'),colorscheme one') colorscheme one')'colorscheme one')
:colorscheme ...one...three')
:ccolorscheme three')
:cacolorscheme three')
:calcolorscheme three')
:callcolorscheme three')
:call colorscheme three')acolorscheme three')dcolorscheme three')dcolorscheme three')(colorscheme three')lcolorscheme three')icolorscheme three'),colorscheme three') colorscheme three')'colorscheme three')
:colorscheme ...one...three...wo')
:ccolorscheme two')
:cacolorscheme two')
:calcolorscheme two')
:callcolorscheme two')
:call colorscheme two')acolorscheme two')dcolorscheme two')dcolorscheme two')(colorscheme two')lcolorscheme two')icolorscheme two'),colorscheme two') colorscheme two')'colorscheme two')
:colorscheme ...one...three...wo...')
:ccolorscheme ')
:cacolorscheme ')
:calcolorscheme ')
:callcolorscheme ')
:call colorscheme ')acolorscheme ')dcolorscheme ')dcolorscheme ')(colorscheme ')lcolorscheme ')icolorscheme '),colorscheme ') colorscheme ')'colorscheme ')

Executing Test_helptags()

Executing Test_packadd()
"./Xdir/pack/mine/opt/mytest/plugin/test.vim" [New File][New] 1L, 24C writtenalso/loaded.vim" [New File][New] 1L, 29C writtenftdetect/test.vim" [New File[New] 1L, 26C written

Executing Test_packadd_completion():packadd ...pluginA')
:cpackadd pluginA')
:capackadd pluginA')
:calpackadd pluginA')
:callpackadd pluginA')
:call packadd pluginA')apackadd pluginA')dpackadd pluginA')dpackadd pluginA')(packadd pluginA')lpackadd pluginA')ipackadd pluginA'),packadd pluginA') packadd pluginA')'packadd pluginA')
:packadd ...pluginA...B')
:cpackadd pluginB')
:capackadd pluginB')
:calpackadd pluginB')
:callpackadd pluginB')
:call packadd pluginB')apackadd pluginB')dpackadd pluginB')dpackadd pluginB')(packadd pluginB')lpackadd pluginB')ipackadd pluginB'),packadd pluginB') packadd pluginB')'packadd pluginB')
:packadd ...pluginA...B...C')
:cpackadd pluginC')
:capackadd pluginC')
:calpackadd pluginC')
:callpackadd pluginC')
:call packadd pluginC')apackadd pluginC')dpackadd pluginC')dpackadd pluginC')(packadd pluginC')lpackadd pluginC')ipackadd pluginC'),packadd pluginC') packadd pluginC')'packadd pluginC')
:packadd ...pluginA...B...C...')
:cpackadd ')
:capackadd ')
:calpackadd ')
:callpackadd ')
:call packadd ')apackadd ')dpackadd ')dpackadd ')(packadd ')lpackadd ')ipackadd '),packadd ') packadd ')'packadd ')

Executing Test_packadd_noload()
"./Xdir/pack/mine/opt/mytest/plugin/test.vim" [New File][New] 1L, 24C written

Executing Test_packloadall()

Executing Test_runtime()
"test_packadd.res" [New File][New] 0L, 0C written

Executed 8 tests
"messages"294L, 8101C305L, 8384C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_perl.vim
[?1h="test_perl.vim" 123 lines, 3037 characters

Executing Test_SvREFCNT()
"t" [New File]
Executing Test_VIM_package()

Executing Test_change_buffer()/^1

Executing Test_evaluate_list()/^2
search hit BOTTOM, continuing at TOP

Executing Test_perldo()
"__TEST__" [New File]test_perl.vim"123L, 3037C

Executing Test_perleval()

Executing Test_stdio()

&VIM::Msg

STDOUT

STDERR
"test_perl.res" [New File][New] 0L, 0C written

Executed 7 tests
"messages"305L, 8384C315L, 8612C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_quickfix.vim
[?1h="test_quickfix.vim" 1594 lines, 44709 characters

Executing Test_Autocmd()
"F1" [New File]
(1 of 1): Line 10
"F2" [New File]
(1 of 2): Line 10

Executing Test_adjust_lnum()

Already only one window
"Xqftestfilec" 20L, 131C

9 fewer lines

Already only one window
"Xqftestfilel" 20L, 131C

9 fewer lines

Executing Test_browse()
"Xqftestfile1" 20L, 131C

(1 of 4): Line5

"Xqftestfile2" 20L, 131C

(3 of 4): Line10
"Xqftestfile1" 20L, 131C

(2 of 4): Line6
"Xqftestfile2" 20L, 131C

(4 of 4): Line11

"Xqftestfile1" 20L, 131C

(1 of 4): Line5

(1 of 4): Line5

"Xqftestfile2" 20L, 131C

(3 of 4): Line10
"Xqftestfile1" 20L, 131C

(2 of 4): Line6
"Xqftestfile2" 20L, 131C

(4 of 4): Line11

"Xqftestfile1" 20L, 131C

(1 of 4): Line5

Executing Test_caddbuffer_to_empty()
"autocmd.txt" [readonly] 1486L, 61530C

(1 of 475): |QuickFixCmdPre|^Ibefore a quickfix command is run

(2 of 1486):

Executing Test_cage()

error list 9 of 10; 1 errors      :cgetexpr ['Xtestfile2:2:2:Line2']

error list 10 of 10; 1 errors     :cgetexpr ['Xtestfile3:3:1:Line3']

error list 8 of 10; 1 errors      :cgetexpr ['Xtestfile1:1:3:Line1']

error list 10 of 10; 1 errors     :cgetexpr ['Xtestfile3:3:1:Line3']

error list 6 of 7; 1 errors:lgetexpr ['Xtestfile2:2:2:Line2']

error list 7 of 7; 1 errors:lgetexpr ['Xtestfile3:3:1:Line3']

error list 5 of 7; 1 errors:lgetexpr ['Xtestfile1:1:3:Line1']

error list 7 of 7; 1 errors:lgetexpr ['Xtestfile3:3:1:Line3']

Executing Test_cbottom()

Executing Test_cbuffer()
"Xtestfile7" [New File]
(1 of 2): Line 700
"Xtestfile7" [New File]

(1 of 2): Line 700

Executing Test_cexpr()

Executing Test_cfile()
"Xtestfile1" [New File]

(1 of 2): Line 700

"Xtestfile1" [New File]

(1 of 2): Line 700

Executing Test_cgetexpr_works()

Executing Test_clist()

 2 Xtestfile1:1 col 3: Line1

 4 Xtestfile2:2 col 2: Line2

 6 Xtestfile3:3 col 1: Line3

 1: non-error 1

 2 Xtestfile1:1 col 3: Line1

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 5: non-error 3

 6 Xtestfile3:3 col 1: Line3

 4 Xtestfile2:2 col 2: Line2

 6 Xtestfile3:3 col 1: Line3

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 2 Xtestfile1:1 col 3: Line1

 2 Xtestfile1:1 col 3: Line1

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 2 Xtestfile1:1 col 3: Line1

 4 Xtestfile2:2 col 2: Line2

 6 Xtestfile3:3 col 1: Line3

 1: non-error 1

 2 Xtestfile1:1 col 3: Line1

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 5: non-error 3

 6 Xtestfile3:3 col 1: Line3

 4 Xtestfile2:2 col 2: Line2

 6 Xtestfile3:3 col 1: Line3

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

 2 Xtestfile1:1 col 3: Line1

 2 Xtestfile1:1 col 3: Line1

 3: non-error 2

 4 Xtestfile2:2 col 2: Line2

Executing Test_cwindow()~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       Xtestfile1|1 col 3| Line1                                                       Xtestfile2|2 col 2| Line2
Xtestfile3|3 col 1| Line3
~
~
~
~
~
~
~
[Quickfix List]                                                                 ~
~
~
~
~
~
~
~
~
~
[No Name]                                                                       Xtestfile1|1 col 3| Line1                                                       Xtestfile2|2 col 2| Line2
Xtestfile3|3 col 1| Line3
~
~
~
~
~
~
~
[Location List]                                                                 Executing Test_duplicate_buf()
"DoesNotExist" [New File]2" [New File]

Xgrepthis
"Xgrepthis" line 1 of 2 --50%-- col 1

(1 of 2): this one

Xgrepthis
(1 of 2): this one

Executing Test_efm()

Executing Test_efm1()
"Xtestfile" 21L, 903C

(1 of 20): 1506-045 (S) Undeclared identifier fd_set.

(20 of 20): What is the title of the quickfix window?

Executing Test_efm2()
"Xtestfile" [New File]

Executing Test_efm_dirstack()

Executing Test_errortitle()

Executing Test_grep()

Already only one window[?1l>test_quickfix.vim:1379:  " Grep_Test_Text: Match 1
test_quickfix.vim:1380:  " Grep_Test_Text: Match 2
test_quickfix.vim:1385:  silent Xgrep Grep_Test_Text: test_quickfix.vim
[?1h=[?1l>test_quickfix.vim:1381:  " GrepAdd_Test_Text: Match 1
test_quickfix.vim:1382:  " GrepAdd_Test_Text: Match 2
test_quickfix.vim:1392:  silent Xgrepadd GrepAdd_Test_Text: test_quickfix.vim
[?1h=Already only one window[?1l>test_quickfix.vim:1379:  " Grep_Test_Text: Match 1
test_quickfix.vim:1380:  " Grep_Test_Text: Match 2
test_quickfix.vim:1385:  silent Xgrep Grep_Test_Text: test_quickfix.vim
[?1h=[?1l>test_quickfix.vim:1381:  " GrepAdd_Test_Text: Match 1
test_quickfix.vim:1382:  " GrepAdd_Test_Text: Match 2
test_quickfix.vim:1392:  silent Xgrepadd GrepAdd_Test_Text: test_quickfix.vim
[?1h=Executing Test_helpgrep()
"autocmd.txt" [readonly] 1486L, 61530C

(1 of 475): |QuickFixCmdPre|^Ibefore a quickfix command is run
"autocmd.txt" [readonly] line 1 of 1486 --0%-- col 1
(1 of 475): |QuickFixCmdPre|^Ibefore a quickfix command is run

Executing Test_history()

error list 1 of 10; 21 errors     :cf Xerrorfile1

error list 1 of 2; 21 errors      :cf Xerrorfile1

error list 1 of 2; 13 errors      :lexpr ""

error list 1 of 2; 13 errors      :lexpr ""

Executing Test_invalid_efm()

Executing Test_locationlist()

No matching autocommands

(1 of 7): file foo.txt
No matching autocommands

No matching autocommands

No matching autocommands

No matching autocommands

No matching autocommands

No matching autocommands

(1 of 7): file foo.txt
No matching autocommands

No matching autocommands

(1 of 7): file foo.txt
No matching autocommands

W19: Deleting augroup that is still in use
Executing Test_locationlist_curwin_was_closed()

W19: Deleting augroup that is still in use
Executing Test_long_lines()"samples/quickfix.txt" 4L, 22089C

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"samples/quickfix.txt" 4L, 22089C

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"samples/quickfix.txt" 4L, 22089C

(1 of 4): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Executing Test_nomem()
"/<<PKGBUILDDIR>>/src/vim-athena/alloc.h" 21L, 485C

Error detected while processing function RunTheTest[9]..Test_nomem:

line    2:

E342: Out of memory!  (allocating 4096 bytes)
"/<<PKGBUILDDIR>>/src/vim-athena/alloc.h" 21L, 485C

line    5:

E342: Out of memory!  (allocating 4096 bytes)
"/<<PKGBUILDDIR>>/src/vim-athena/alloc.h" 21L, 485C

line    8:

E342: Out of memory!  (allocating 1025 bytes)
"/<<PKGBUILDDIR>>/src/vim-athena/alloc.h" 21L, 485C

line   11:

E342: Out of memory!  (allocating 1025 bytes)
"/<<PKGBUILDDIR>>/src/vim-athena/alloc.h" 21L, 485C

line   14:

E342: Out of memory!  (allocating 1025 bytes)

Executing Test_qf_property()

Executing Test_qf_title()

Executing Test_quickfix_set_list_with_act()

Executing Test_quickfix_was_changed_by_autocmd()

error list 9 of 10; 1 errors      :setqflist()

W19: Deleting augroup that is still in use
error list 9 of 10; 1 errors      :setloclist()

error list 9 of 10; 1 errors      :setloclist()

W19: Deleting augroup that is still in use
Executing Test_setqflist()"Xtestfile" [New File]
(2 of 2):

(3 of 3):

(2 of 2):

(3 of 3):

Executing Test_setqflist_empty_middle()

test_quickfix.vim
"test_quickfix.vim" 1594L, 44709C

(1 of 43): function Test_clist()

test_quickfix.vim
(1 of 13): " With an empty list, command should return error

test_quickfix.vim
(1 of 2): " number of matches is unknown

error list 9 of 10; 13 errors     :vimgrep empty test_quickfix.vim

error list 8 of 10; 43 errors     :vimgrep Test_ test_quickfix.vim

error list 9 of 10; 0 errors      :setqflist()

error list 10 of 10; 2 errors     :vimgrep matches test_quickfix.vim

test_quickfix.vim
(1 of 43): function Test_clist()

test_quickfix.vim
(1 of 13): " With an empty list, command should return error

test_quickfix.vim
(1 of 2): " number of matches is unknown

error list 9 of 10; 13 errors     :lvimgrep empty test_quickfix.vim

error list 8 of 10; 43 errors     :lvimgrep Test_ test_quickfix.vim

error list 9 of 10; 0 errors      :setloclist()

error list 10 of 10; 2 errors     :lvimgrep matches test_quickfix.vim

Executing Test_setqflist_empty_older()

test_quickfix.vim
(1 of 24): \ 'Does anyone know what is the problem and how to correction it?',

test_quickfix.vim
(1 of 21): " Go back two lists

test_quickfix.vim
(1 of 7): " Add three quickfix/location lists

error list 8 of 10; 24 errors     :vimgrep one test_quickfix.vim

error list 9 of 10; 21 errors     :vimgrep two test_quickfix.vim

error list 10 of 10; 7 errors     :vimgrep three test_quickfix.vim

test_quickfix.vim
(1 of 24): \ 'Does anyone know what is the problem and how to correction it?',

test_quickfix.vim
(1 of 21): " Go back two lists

test_quickfix.vim
(1 of 7): " Add three quickfix/location lists

error list 8 of 10; 24 errors     :lvimgrep one test_quickfix.vim

error list 9 of 10; 21 errors     :lvimgrep two test_quickfix.vim

error list 10 of 10; 7 errors     :lvimgrep three test_quickfix.vim

Executing Test_switchbuf()
"Xqftestfile1" 20L, 131C220L, 131C1" line 1 of 20 --5%-- col 1

(1 of 6): Line5

(2 of 6): Line6
"Xqftestfile2" line 1 of 20 --5%-- col 1

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16

(1 of 6): Line5

(2 of 6): Line6

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16
"Xqftestfile1" 20L, 131C220L, 131C

(1 of 6): Line5

(2 of 6): Line6

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16
"Xqftestfile1" 20L, 131C

(1 of 6): Line5

(2 of 6): Line6
"Xqftestfile2" 20L, 131C

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16
"Xqftestfile1" 20L, 131C

(1 of 6): Line5

(2 of 6): Line6
"Xqftestfile2" 20L, 131C

(3 of 6): Line10

(4 of 6): Line11
"Xqftestfile3" 20L, 131C

(5 of 6): Line15

(6 of 6): Line16

Already only one window
"Xqftestfile1" 20L, 131C220L, 131C320L, 131C

Executing Test_two_windows()
"one" [New File]two

Executing Test_vimgreptitle()

file
"file" [New File]

Cannot open file "file"
"test_quickfix.res" [New File][New] 0L, 0C written

Executed 36 tests
"messages" 315L, 8612C354L, 9693C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_ruby.vim
[?1h="test_ruby.vim" 34 lines, 820 characters

Executing Test_ruby_change_buffer()/^1

Executing Test_ruby_evaluate_dict()

{"a"=>"foo", "b"=>123}

Executing Test_ruby_evaluate_list()/^2
search hit BOTTOM, continuing at TOP
"test_ruby.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"354L, 9693C360L, 9839C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_search.vim
[?1h="test_search.vim" 281 lines, 8457 characters

Executing Test_search_cmdline()/foobar
/the
search hit BOTTOM, continuing at TOP/thes
/foobar
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
/the
?the
?the
?the
?the
?the
?the
?the
?the
?the
?the
search hit TOP, continuing at BOTTOM/thes
/thes
/thes
/thes
/thei
/theis
/theiss
/themthe\>
Executing Test_search_cmdline2()/the
/the
/the
/the
/the
/the
/the
/foo
6 their
  7 the
  8 them
  9 these
 10 foobar
[No Name] [+]                                                                   " Test for the search command

func Test_search_cmdline()
  if !exists('+incsearch')
    return
  endif
  " need to disable char_avail,
  " so that expansion of commandline works
  call test_disable_char_avail(1)
  new
  call setline(1, ['  1', '  2 these', '  3 the', '  4 their', '  5 there', '  66 their', '  7 the', '  8 them', '  9 these', ' 10 foobar'])
  " Test 1
  " CTRL-N / CTRL-P skips through the previous search history
  set noincsearch
  :1
test_search.vim                                                                 Executing Test_use_sub_pat()
"test_search.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"360L, 9839C366L, 9973C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_signs.vim
[?1h="test_signs.vim" 199 lines, 6383 characters

Executing Test_sign()
"foo" [New File]a  b  c xd                                                                                 ~
[No Name] [+]                                                                   " Test for signs

if !has('signs')
  finish
endif
test_signs.vim                                                                  ~
~
~
~
foo                                                                               a
  b
x c
  d
[No Name] [+]                                                                     a  bx c  d  ~"foo" [New file] --No lines in buffer--
"barF
Executing Test_sign_completion():sign ...define jump list place undefine unplace
:"sign define jump list place undefine unplace
:"
:sign define Sign ...icon= linehl= text= texthl=
:"sign define Sign icon= linehl= text= texthl=
:"
:sign define Sign linehl=Spell...Bad SpellCap SpellLocal SpellRare
:"sign define Sign linehl=SpellBad SpellCap SpellLocal SpellRare
:"
:sign define Sign icon=Xsig...nOne XsignTwo
:"sign define Sign icon=XsignOne XsignTwo
:"
:sign undefine ...Sign1 Sign2
:"sign undefine Sign1 Sign2
:"
:sign place 1 ...buffer= file= line= name=
:"sign place 1 buffer= file= line= name=
:"
:sign place 1 name=...Sign1 Sign2
:"sign place 1 name=Sign1 Sign2
:"
:sign unplace 1 ...buffer= file=
:"sign unplace 1 buffer= file=
:"
:sign list ...Sign1 Sign2
:"sign list Sign1 Sign2
:"
:sign jump 1 ...buffer= file=
:"sign jump 1 buffer= file=
:"

Executing Test_sign_delete_buffer()

Executing Test_sign_invalid_commands()

Executing Test_sign_undefine_still_placed()
"foobar" [New File]test_signs.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"366L, 9973C374L, 10186C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_smartindent.vim
[?1h="test_smartindent.vim" 14 lines, 376 characters

Executing Test_nosmartindent()/some
search hit BOTTOM, continuing at TOP"test_smartindent.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"374L, 10186C378L, 10261C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_startup.vim
[?1h="test_startup.vim" 185 lines, 4581 characters

Executing Test_after_comes_later()[?1l>[?1h=1: /<<PKGBUILDDIR>>/src/vim-athena/testdir/Xbefore.vim

  2: /<<PKGBUILDDIR>>/src/vim-athena/testdir/Xhere/plugin/here.vi

m
  3: /<<PKGBUILDDIR>>/src/vim-athena/testdir/Xhere/pack/foo/start

/foobar/plugin/foo.vim

  4: /<<PKGBUILDDIR>>/src/vim-athena/testdir/Xafter/plugin/later.

vim

  5: /<<PKGBUILDDIR>>/src/vim-athena/testdir/Xafter.vim
[?1l>
[?1h=
Executing Test_compatible_args()[?1l>[?1h=Error detected while processing /<<PKGBUILDDIR>>/src/vim-athena/t

estdir/Xafter.vim:

line    2:

E528: Must specify a ' value: viminfo+=nviminfo
[?1l>
[?1h=[?1l>[?1h=[?1l>[?1h=
Executing Test_file_args()[?1l>[?1h=[?1l>[?1h=[?1l>[?1h="one" [New File]
[?1l>
[?1h=[?1l>[?1h="one" [New File]
[?1l>
3 files to edit
[?1h=[?1l>[?1h="one" [New File]
[?1l>
2 files to edit
[?1h=[?1l>[?1h="one" [New File]
[?1l>
4 files to edit
[?1h=
Executing Test_help_arg()[?1l>[?1h=
Executing Test_read_stdin()[?1l>[?1h="-stdin-" 1 line, 10 characters"Xtestout" [New File] 1 line, 10 characters written
[?1l>
Vim: Reading from stdin...
[?1h=
Executing Test_startup_script()

Executing Test_startuptime()[?1l>[?1h="one" [New File]
[?1l>
[?1h="test_startup.res" [New File][New] 0L, 0C written

Executed 7 tests
"messages"378L, 10261C388L, 10512C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_startup_utf8.vim
[?1h="test_startup_utf8.vim" 64 lines, 1366 characters

Executing Test_read_fifo_utf8()[?1l>[?1h="/dev/fd/63" [readonly] 2 lines, 24 characters

"Xtestout" [New File] 2 lines, 24 characters written
[?1l>
[?1h=
Executing Test_read_stdin_utf8()[?1l>[?1h="-stdin-" 2 lines, 24 characters"Xtestout" [New File] 2 lines, 24 characters written
[?1l>
Vim: Reading from stdin...
[?1h="test_startup_utf8.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"388L, 10512C393L, 10623C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_stat.vim
[?1h="test_stat.vim" 64 lines, 1598 characters

Executing Test_checktime()
"Xtest.tmp" 1L, 13C1L, 25C

Executing Test_existent_directory()

Executing Test_existent_file()

Executing Test_nonexistent_file()

Executing Test_win32_symlink_dir()
"test_stat.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"393L, 10623C401L, 10824C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_substitute.vim
[?1h="test_substitute.vim" 41 lines, 1151 characters

Executing Test_multiline_subst()

search hit BOTTOM, continuing at TOP
3 substitutions on 3 lines
3 substitutions on 2 lines
"test_substitute.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"401L, 10824C405L, 10900C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_syntax.vim
[?1h="test_syntax.vim" 82 lines, 1624 characters

Executing Test_syn_iskeyword()CREATE TABLE FOOBAR(
    DLTD_BY VARCHAR2(100)
);

~
~
~
~
~
~
~
[No Name] [+]                                                                   " Test for syntax and syntax iskeyword option

if !has("syntax")
  finish
endif

func GetSyntaxItem(pat)
  let c = ''
  let a = ['a', getreg('a'), getregtype('a')]
  0
test_syntax.vim                                                                 
syntax iskeyword not set

syntax iskeyword @,48-57,_,192-255CREATE TABLE FOOBAR(
    DLTD_BY VARCHAR2(100)
);

~
~
~
~
~
~
~
[No Name] [+]                                                                   " Test for syntax and syntax iskeyword option

if !has("syntax")
  finish
endif

func GetSyntaxItem(pat)
  let c = ''
  let a = ['a', getreg('a'), getregtype('a')]
  0
test_syntax.vim                                                                 
syntax iskeyword not set

Executing Test_syntax_after_reload()
"Xsomefile" [New File][New] 2L, 12C written
"other" [New File]Xsomefile" 2L, 12C
"test_syntax.res" [New File][New] 0L, 0C written

Executed 2 tests
"messages"405L, 10900C410L, 11008C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_textobjects.vim
[?1h="test_textobjects.vim" 43 lines, 946 characters

Executing Test_inner_block_with_cpo_M_left_backslash()

Executing Test_inner_block_with_cpo_M_right_backslash()

Executing Test_inner_block_without_cpo_M()
"test_textobjects.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"410L, 11008C416L, 11207C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_undo.vim
[?1h="test_undo.vim" 237 lines, 6322 characters

Executing Test_U_command()Executing Test_global_local_undolevels()
"one" [New File]
6 fewer lines; before #8  0 seconds ago
"two" [New File]
3 fewer lines; before #11  0 seconds ago
"three" [New File]
Executing Test_insert_expr()=setline('.','1234')
1 line less; before #4  0 seconds ago3=setline('.','1234')
1 line less; before #7  0 seconds ago=string(123)
1 line less; before #9  0 seconds ago

Executing Test_undo_del_chars()
1 change; before #3  0 seconds ago21

1 change; before #6  1 seconds ago5
4s; after #3
1; before #21

3 changes; after #6  1 seconds ago3 changes; before #7  0 seconds ago

3 changes; before #1  3 seconds ago

3 changes; after #6  3 seconds ago

3 changes; after #9  0 seconds ago

Executing Test_undo_write()
"Xtest" [New File]"Xtest" [New] 1L, 12C written"Xtest" 3L, 20C written1 line less; before #4  0 seconds ago

2 fewer lines; before #2  0 seconds ago

1 line less; before #1  0 seconds ago

1 more line; after #1  0 seconds ago

2 more lines; after #3  0 seconds ago

1 more line; after #4  0 seconds ago

Executing Test_undojoin()1 line less; before #2  0 seconds ago2 fewer lines; before #3  0 seconds ago

Executing Test_undolist()1 change; before #2  0 seconds agoExecuting Test_undotree()
1 change; before #2  0 seconds ago
"Xtest" [New] 1L, 4C written
"test_undo.res" [New File][New] 0L, 0C written

Executed 8 tests
"messages"416L, 11207C427L, 11480C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_usercommands.vim
[?1h="test_usercommands.vim" 104 lines, 2527 characters

Executing Test_Ambiguous()

Executing Test_CmdUndefined()

Executing Test_cmdmods()
"test_usercommands.res" [New File][New] 0L, 0C written

Executed 3 tests
"messages"427L, 11480C433L, 11608C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_viminfo.vim
[?1h="test_viminfo.vim" 495 lines, 13092 characters

Executing Test_cmdline_history()

Executing Test_cmdline_history_order()

Executing Test_global_vars()

Executing Test_oldfiles()

Executing Test_read_and_write()

Executing Test_viminfo_bad_syntax()

Executing Test_viminfo_encoding()
"Xviminfo" [converted] 74L, 3391C

Executing Test_viminfo_file_mark_tabclose()
"Xtestfileintab" [New File]viminfo" 84L, 3572C

Executing Test_viminfo_file_marks()
"ten" [New File]again" [New File]
"thirty" [New File]
"twen
"again" [New File]fourty" [New File]
"Xviminfo" 91L, 3370C

Executing Test_viminfo_jumplist()
"testbuf" [New File]/20
/30
/last pos
/15
/last pos
?30
/15
/last pos
?30
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here
/here

Executing Test_viminfo_marks()
"bufa" [New File]b

Executing Test_viminfo_registers()
"test_viminfo.res" [New File][New] 0L, 0C written

Executed 12 tests
"messages" 433L, 11608C448L, 12059C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_viml.vim
[?1h="test_viml.vim" 1245 lines, 29827 characters

Error detected while processing /<<PKGBUILDDIR>>/src/vim-athena/t

estdir/test_viml.vim:

line  432:

E492: Not an editor command: ^Iasdf

line  444:

E492: Not an editor command: ^Iasdf

line  452:

E492: Not an editor command: asdf

line  455:

E492: Not an editor command: asdf | Xpath 'p'

Error detected while processing function T8_F:

line    5:

E492: Not an editor command: ^I    asdf

line    7:

E492: Not an editor command: ^I    asdf | Xpath 'd'

line   19:

E492: Not an editor command: ^I    asdf

line   21:

E492: Not an editor command: ^I    asdf | Xpath 'l'

line   29:

E121: Undefined variable: novar

E15: Invalid expression: novar^I^I" returns (default return value 0)

Error detected while processing function T8_G:

line    5:

E492: Not an editor command: ^I    asdf^I^I" returns -1

Error detected while processing function T8_H:

line    5:

E492: Not an editor command: ^I    asdf^I^I" returns -1

Error detected while processing function F[2]..G[2]..H[2]..I:

line    2:

E492: Not an editor command:     asdf^I^I" error

Error detected while processing /<<PKGBUILDDIR>>/src/vim-athena/t

estdir/test_viml.vim:

line  663:

E15: Invalid expression: | strlen("\"") | Xpath 'j'

E15: Invalid expression: 1 ||| strlen("\"") | Xpath 'j'

line  673:

E15: Invalid expression: | strlen("\"") | Xpath 'n'

E15: Invalid expression: 1 ||| strlen("\"") | Xpath 'n'

line  682:

E15: Invalid expression: | strlen("\"") | Xpath 'r'

E15: Invalid expression: 1 ||| strlen("\"") | Xpath 'r'

line  717:

E492: Not an editor command:     asdf^I^I" error

1
line  787:

E492: Not an editor command:     asdf^I^I" error

line  794:

E492: Not an editor command:     asdf^I^I" error

line  817:

E121: Undefined variable: asdf

E15: Invalid expression: asdf

line  828:

E121: Undefined variable: asdf

E15: Invalid expression: asdf | Xpath 'f' | endwhile | Xpath 'g'

Error detected while processing function F:

line    8:

E121: Undefined variable: g:boolvar

E15: Invalid expression: g:boolvar^I" possibly undefined

E121: Undefined variable: g:boolvar

E15: Invalid expression: g:boolvar | Xpath 'd' | else | Xpath 'e' | endif

Executing Test_arg_abort()

Executing Test_braces_skipped()

Executing Test_curlies()

Executing Test_defining_functions()

Executing Test_echo_and_string()

foo bar

'foo bar'

-1.2

-1.2

string

function('string')

{'a': {...}}

{'a': {...}}

[[...]]

[[...]]

[{}, {}, {}]

[{}, {}, {}]

{'a': {}, 'b': {}}

{'a': {}, 'b': {}}

[[], [], []]

[[], [], []]

{'a': [], 'b': []}

{'a': [], 'b': []}

[{'one': 'yes', 'two': 'yes', 'three': 'yes'}, {...}, {...}]

[{'one': 'yes', 'two': 'yes', 'three': 'yes'}, {'one': 'yes', 'two': 'yes', 'th

ree': 'yes'}, {'one': 'yes', 'two': 'yes', 'three': 'yes'}]

{'a': {'one': 'yes', 'two': 'yes', 'three': 'yes'}, 'b': {...}}

{'a': {'one': 'yes', 'two': 'yes', 'three': 'yes'}, 'b': {'one': 'yes', 'two':

'yes', 'three': 'yes'}}

[[1, 2, 3], [...], [...]]

[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

{'a': [1, 2, 3], 'b': [...]}

{'a': [1, 2, 3], 'b': [1, 2, 3]}

Executing Test_endwhile_function()

Executing Test_endwhile_script()

   function T1_F()

1      Xpath 'a'

2      let first = 1

3      while 1

4Xpath 'b'

5if first

6Xpath 'c'

7let first = 0

8break

9else

10Xpath 'd'

11return

12endif

13     endwhile

   endfunction"/tmp/vhHzDaf/0" [noeol] 16L, 299C
13 substitutions on 13 lines
Pattern not found: ^\s*$
"/tmp/vhHzDaf/0" 13L, 248C written
"test_viml.vim" 1245L, 29827C
   function T1_G()
1      Xpath 'h'
2      let first = 1
3      while 1
4Xpath 'i'
5if first
6Xpath 'j'
7let first = 0
8break
9else
10Xpath 'k'
11return

12endif

13if 1    " unmatched :if

14     endwhile

   endfunction"/tmp/vhHzDaf/1" [noeol] 17L, 334C
14 substitutions on 14 lines
Pattern not found: ^\s*$
"/tmp/vhHzDaf/1" 14L, 281C written
"test_viml.vim" 1245L, 29827C
Executing Test_error_in_function()
Executing Test_error_in_script()
Executing Test_expr_parsing()
Executing Test_finish()
   function T4_F()
1      if 1
2Xpath 'a'
3let loops = 3
4while loops > 0"    3:  2:     1:
5Xpath 'b' . loops
6if (loops == 2)
7Xpath 'c' . loops
8return

9Xpath 'd' . loops

10endif

11Xpath 'e' . loops

12let loops = loops - 1

13endwhile

14Xpath 'f'

15     else

16Xpath 'g'

17     endif

   endfunction"/tmp/vhHzDaf/2" [noeol] 20L, 504C
17 substitutions on 17 lines
Pattern not found: ^\s*$
"/tmp/vhHzDaf/2" 17L, 445C written
"test_viml.vim" 1245L, 29827C
Executing Test_func_abort()
Executing Test_if_bar_fail()
Executing Test_if_fail()
Executing Test_if_while()
Executing Test_num64()
Executing Test_return()
Executing Test_skip()
Executing Test_type()
Executing Test_while_fail()
"test_viml.res" [New File][New] 0L, 0C written
Executed 20 tests
"messages" 448L, 12059C471L, 12668C written[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_visual.vim
[?1h="test_visual.vim" 17 lines, 339 characters

Executing Test_block_shift_multibyte()
"test_visual.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"471L, 12668C475L, 12746C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_window_id.vim
[?1h="test_window_id.vim" 94 lines, 2575 characters

Executing Test_win_getid()
"one" [New File]twohree" [New File]
"four" [New File]ive
"test_window_id.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"475L, 12746C479L, 12815C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_writefile.vim
[?1h="test_writefile.vim" 16 lines, 490 characters

Executing Test_WriteFile()
"test_writefile.res" [New File][New] 0L, 0C written

Executed 1 test
"messages"479L, 12815C483L, 12884C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_alot_latin.vim
[?1h="test_alot_latin.vim" 7 lines, 280 characters

Executing Test_eow_with_optional()

Executing Test_equivalence_re1()

Executing Test_equivalence_re2()

Executing Test_nested_backrefs()

Executing Test_recursive_substitute()
"test_alot_latin.res" [New File][New] 0L, 0C written

Executed 5 tests
"messages"[converted] 483L, 12884C[converted] 491L, 13100C written
[?1l>
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_alot_utf8.vim
[?1h="test_alot_utf8.vim" 11 lines, 440 characters[?1l>Executing Test_classes_re1()

Executing Test_classes_re2()

Executing Test_equivalence_re1()

Executing Test_equivalence_re2()

Executing Test_match_using_multibyte_conceal_char()#ˑThisˑisˑaˑTest
~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               [No Name] [+]                                                                   " A series of tests that can run in one Vim invocation.
" This makes testing go faster, since Vim doesn't need to restart.

" These tests use utf8 'encoding'.  Setting 'encoding' is already done in
" runtest.vim.  Checking for the multi_byte feature is in the individual
" files, so that they can be run by themselves.

source test_expr_utf8.vim
source test_matchadd_conceal_utf8.vim
source test_regexp_utf8.vim
test_alot_utf8.vim                                                              Executing Test_source_latin()
"Xscript"[New] 2L, 44C written
Executing Test_source_utf8()"Xscript"[New] 2L, 42C written:%s/àx/--à1234--/g
:%s/Àx/--À1234--/g

Executing Test_strcharpart()

Executing Test_strgetchar()
"test.log" 8L, 363C12L, 547C written

Executed 9 tests

1 FAILED:
"messages" 491L, 13100C506L, 13603C written

VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -U NONE -S runtest.vim test_alot.vim
[?1h="test_alot.vim" 46 lines, 1183 characters

Executing Test_abbreviation()Executing Test_augroup_deleted()

W19: Deleting augroup that is still in use
Executing Test_augroup_warning()
W19: Deleting augroup that is still in useentering

Executing Test_auto_partial_rebind()

Executing Test_autocmd_bufunload_avoiding_SEGV_01()
"aa.txt" [New File]
"bb.txt" [New File]

Executing Test_autocmd_bufunload_avoiding_SEGV_02()
"a.txt" [New File]
"test_alot.vim" 46L, 1183C

Executing Test_autocmd_bufunload_with_tabnext()

Executing Test_autocmd_bufwinleave_with_tabfirst()
"a.txt" [New File]
Executing Test_bind_in_python()

Executing Test_break_undo()Executing Test_bufunload()

Executing Test_cancel_ptjump()

Already only one window:ptjump word
  # pri kind tagfile

  1 Fwordfile1

cmd1

  2 Fwordfile2

cmd2

Type number and <Enter> (empty cancels): 
"help.txt" [readonly] 225L, 8437C

Executing Test_caught_error_in_statusline()source test_messages.vim
source test_partial.vim
source test_popup.vim
source test_reltime.vim
source test_searchpos.vim
source test_set.vim
source test_sort.vim
source test_statusline.vim
source test_syn_attr.vim
source test_tabline.vim
source test_tabpage.vim
source test_tagcase.vim
source test_tagjump.vim
source test_timers.vim
source test_true_false.vim
source test_unlet.vim
source test_window_cmd.vim
source test_options.vim
new line here
Test3: text with a (parenthesis here
new line here

                                                                                Executing Test_caught_error_in_tabline()                                                                                source test_partial.vim
source test_popup.vim
source test_reltime.vim
source test_searchpos.vim
source test_set.vim
source test_sort.vim
source test_statusline.vim
source test_syn_attr.vim
source test_tabline.vim
source test_tabpage.vim
source test_tagcase.vim
source test_tagjump.vim
source test_timers.vim
source test_true_false.vim
source test_unlet.vim
source test_window_cmd.vim
source test_options.vim
new line here
Test3: text with a (parenthesis here
new line here

test_alot.vim                                                                   Executing Test_closure_counter()

Executing Test_closure_refcount()

Executing Test_closure_unlet()

Executing Test_color_names()

Executing Test_command_count_0()
"DoesNotExistEver" [New File]
Executing Test_command_count_1()

"a" [New File]

loading buffers

"b" [New File]

loading buffers

"c" [New File]

loading buffers

"d" [New File]

loading buffers

"e" [New File]

loading buffers
"c" [New File]beb

Executing Test_command_count_2()

"d" [New File]
"a

Already only one window
"x" [New File]
Already only one window

Executing Test_command_count_3()
"aaa" [New File]bbb
"ccc
"test_alot.vim" 46L, 1183C

2 buffers deleted

Executing Test_command_count_4()
"cc" [New File]
"dd" [New File]

"ee" [New File]
"aa

"bb" [New File]

"cc" [New File]

"dd" [New File]

"ee" [New File]
"cc

"ee" [New File]

"ff" [New File]

Executing Test_compare_null_dict()

Executing Test_compare_partials()

Executing Test_compl_vim_cmds_after_register_expr()=s:test_func()
Executing Test_cursorhold_insert()Executing Test_cursorhold_insert_ctrl_x()Executing Test_curswant_with_autocommand()
Executing Test_cycle_partial_job()

Executing Test_cyclic_dict_arg()

Executing Test_cyclic_list_arg()

Executing Test_delete_myself()

Executing Test_dict()

Executing Test_dir_delete()

Executing Test_early_bar()

Executing Test_empty_buffer()

Executing Test_equal()

Executing Test_ex_undo()
"ex-undo" [New File]
1 line less; before #3  0 seconds ago

1 line less; after #1  0 seconds ago

2 fewer lines; before #1  0 seconds ago

Executing Test_execute_list()

Executing Test_execute_string()

this

theend

something

Executing Test_existing()

Executing Test_expand()

Executing Test_feedkeys_x_with_empty_string()Executing Test_file_delete()
"Xfile" [New File][New] 2L, 4C written

Executing Test_file_perm()

Executing Test_filter()
"Xdoesnotmatch" [New File]
"Xwillmatch" [New File]ff" [New File]
Executing Test_filter_fails()

Executing Test_filter_map_dict_expr_funcref()

Executing Test_filter_map_dict_expr_string()

Executing Test_filter_map_list_expr_funcref()

Executing Test_filter_map_list_expr_string()

Executing Test_fnamemodify()
"test_alot.vim" 46L, 1183C

Executing Test_func_unref()

Executing Test_funcref()

0
Executing Test_function_in_dict()

Executing Test_function_with_funcref()

Executing Test_geeDEE()

Executing Test_gee_dee()

Executing Test_get_partial_items()

Executing Test_getreg_empty_list()

Executing Test_global_local_lispwords()

Executing Test_help_complete():h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...har...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...har...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col@en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col@en...ab'
:lh test-col@ab'
:leh test-col@ab'
:leth test-col@ab'
:let h test-col@ab'
:let sh test-col@ab'th test-col@ab'rh test-col@ab'=h test-col@ab''h test-col@ab'
:h test...-col@en...ab...har@en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col@en...ab...har@en...ab'
:lh test-char@ab'
:leh test-char@ab'
:leth test-char@ab'
:let h test-char@ab'
:let sh test-char@ab'th test-char@ab'rh test-char@ab'=h test-char@ab''h test-char@ab'
:h test...-col@en...ab...har@en...ab...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...@en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col...@en...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...@en...har...@en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col...@en...har...@en...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col@en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col@en...ab'
:lh test-col@ab'
:leh test-col@ab'
:leth test-col@ab'
:let h test-col@ab'
:let sh test-col@ab'th test-col@ab'rh test-col@ab'=h test-col@ab''h test-col@ab'
:h test...-col@en...ab...ja'
:lh test-col@ja'
:leh test-col@ja'
:leth test-col@ja'
:let h test-col@ja'
:let sh test-col@ja'th test-col@ja'rh test-col@ja'=h test-col@ja''h test-col@ja'
:h test...-col@en...ab...ja...har@en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col@en...ab...ja...har@en...ab'
:lh test-char@ab'
:leh test-char@ab'
:leth test-char@ab'
:let h test-char@ab'
:let sh test-char@ab'th test-char@ab'rh test-char@ab'=h test-char@ab''h test-char@ab'
:h test...-col@en...ab...ja...har@en...ab...ja'
:lh test-char@ja'
:leh test-char@ja'
:leth test-char@ja'
:let h test-char@ja'
:let sh test-char@ja'th test-char@ja'rh test-char@ja'=h test-char@ja''h test-char@ja'
:h test...-col@en...ab...ja...har@en...ab...ja...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...@en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col...@en...ja'
:lh test-col@ja'
:leh test-col@ja'
:leth test-col@ja'
:let h test-col@ja'
:let sh test-col@ja'th test-col@ja'rh test-col@ja'=h test-col@ja''h test-col@ja'
:h test...-col...@en...ja...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...@en...ja...har...@en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col...@en...ja...har...@en...ja'
:lh test-char@ja'
:leh test-char@ja'
:leth test-char@ja'
:let h test-char@ja'
:let sh test-char@ja'th test-char@ja'rh test-char@ja'=h test-char@ja''h test-char@ja'
:h test...-col...@en...ja...har...@en...ja...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'
:h test...-col'
:lh test-col'
:leh test-col'
:leth test-col'
:let h test-col'
:let sh test-col'th test-col'rh test-col'=h test-col''h test-col'
:h test...-col...@ja'
:lh test-col@ja'
:leh test-col@ja'
:leth test-col@ja'
:let h test-col@ja'
:let sh test-col@ja'th test-col@ja'rh test-col@ja'=h test-col@ja''h test-col@ja'
:h test...-col...@ja...en'
:lh test-col@en'
:leh test-col@en'
:leth test-col@en'
:let h test-col@en'
:let sh test-col@en'th test-col@en'rh test-col@en'=h test-col@en''h test-col@en'
:h test...-col...@ja...en...har'
:lh test-char'
:leh test-char'
:leth test-char'
:let h test-char'
:let sh test-char'th test-char'rh test-char'=h test-char''h test-char'
:h test...-col...@ja...en...har...@ja'
:lh test-char@ja'
:leh test-char@ja'
:leth test-char@ja'
:let h test-char@ja'
:let sh test-char@ja'th test-char@ja'rh test-char@ja'=h test-char@ja''h test-char@ja'
:h test...-col...@ja...en...har...@ja...en'
:lh test-char@en'
:leh test-char@en'
:leth test-char@en'
:let h test-char@en'
:let sh test-char@en'th test-char@en'rh test-char@en'=h test-char@en''h test-char@en'
:h test...-col...@ja...en...har...@ja...en...'
:lh test'
:leh test'
:leth test'
:let h test'
:let sh test'th test'rh test'=h test''h test'

Executing Test_help_tagjump()
"help.txt" [readonly] 225L, 8437C
"options.txt" [readonly] 8732L, 369923Cline 7646 of 8732 --87%-- col 7-49 ((5) of 6)
"eval.txt" [readonly][converted] 10590L, 407237C line 2405 of 10590 --22%-- col 1 ((5) of 6)
"options.txt" [readonly] line 1320 of 8732 --15%-- col 4-25 ((5) of 6)
"cmdline[readonly] 1144L, 46758C

Executing Test_if()

Executing Test_info()

Executing Test_invalid()

Executing Test_invalid_submatch()

Executing Test_join_with_count()

Executing Test_keyword_jump()
"Xtestfile" 9L, 141C

Executing Test_lambda_call_lambda_from_lambda()

Executing Test_lambda_capture_by_reference()

Executing Test_lambda_circular_reference()

Executing Test_lambda_closure_counter()

Executing Test_lambda_combination()

Executing Test_lambda_delfunc()

Executing Test_lambda_do_not_share_local_variable()

Executing Test_lambda_fails()

Executing Test_lambda_feature()

Executing Test_lambda_refer_local_variable_from_other_scope()

Executing Test_lambda_scope()

Executing Test_lambda_share_scope()

Executing Test_lambda_side_effect()

Executing Test_lambda_with_a_var()

Executing Test_lambda_with_filter()

Executing Test_lambda_with_map()

Executing Test_lambda_with_partial()

Executing Test_lambda_with_sort()

Executing Test_lambda_with_timer()

1
2
3
4
5
6
7
8
Executing Test_load_menu()

Executing Test_loop_over_null_list()

Executing Test_map_ctrl_c_insert()Executing Test_map_ctrl_c_visual():'<,'>$put ='vmap works'

Executing Test_map_cursor()1 line less; before #8  0 seconds ago

Executing Test_map_feedkeys():call feedkeys(".", "in")
:call feedkeys(".", "in")
Executing Test_map_langmap():call append(line('$'), '+')

Executing Test_map_meta_quotes()Executing Test_match()

abcdefghijklmnopq
TEST2: CTRL-C |<ctrl-c>A|
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   abcdΣabcdef
TEST2: CTRL-C |<ctrl-c>A|
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   Executing Test_matchaddpos()12345
NP
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   12345 
NP 
vmap works 
 
Test1: text with a (here some more text) 
Test1: text with a (here some more text) 
 
 
Test2: text wit a (here some more text [und undo]) 
fooc d 
fooc d 
+ 
+ 
bbbb 
bbbb 
cccc 
bbbb 
+ 
-foo- 
~
~
~
[No Name] [+]                                                                   012345 
NP 
vmap works 
 
Test1: text with a (here some more text) 
Test1: text with a (here some more text) 
 
 
Test2: text wit a (here some more text [und undo]) 
fooc d 
fooc d 
+ 
+ 
bbbb 
bbbb 
cccc 
bbbb 
+ 
-foo- 
~
~
~
[No Name] [+]                                                                   Executing Test_matchaddpos_using_negative_priority()x
NP
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   x
NP
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   x
-1 match priority
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
[No Name] [+]                                                                   Executing Test_matchstrpos()

Executing Test_max_min_errors()

Executing Test_messages()

hello0x
-1 match priority
vmap works   hello1234567898

hello9xhello9
Executing Test_missing_attr()

Executing Test_move_cursor()

Executing Test_named_function_closure()

Executing Test_no_type_checking()

Executing Test_noinsert_complete()=s:complTest1()
=s:complTest2()
Executing Test_non_zero_arg()

Executing Test_not_existing()

Executing Test_not_lamda()

Executing Test_oneshot()

Executing Test_option_value()

Executing Test_options()
"option-window" [New File]

Executing Test_partial_args()

Executing Test_partial_dict()

Executing Test_partial_exists()

Executing Test_partial_implicit()

Executing Test_partial_string()

Executing Test_path_keep_commas()

Executing Test_paused()

Executing Test_popup_complete()=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
Scanning: [No Name]test_alot.vima.txtDoesNotExistEverabcdxaabbcceeffex-undoXfiletestfile tags.=ListMonths()
=ListMonths()
 =ListMonths()

+=ListMonths()

+      =ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()

  =ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
=ListMonths()
  =ListMonths()
o-=ListMonths()
=ListMonths()
=ListMonths()
Executing Test_popup_complete2()=ListMonths()
Executing Test_popup_completion_insertmode()=ListMonths()
=ListMonths()
=ListMonths()
       
=ListMonths()
=ListMonths()
Executing Test_printf_64bit()

Executing Test_printf_errors()

0
0
1
0
0
Executing Test_printf_float()

0.000000

Executing Test_printf_misc()

Executing Test_printf_spec_b()

Executing Test_printf_spec_s()

Executing Test_ptag_with_notagstack()

Executing Test_read_only()

Executing Test_recursive_delete()
"Xdir1/Xfile" [New File][New] 2L, 4C writtensubdir/Xfile" [New] 2L, 4C written

Executing Test_redefine_dict_func()

Executing Test_ref_job_partial_dict()

Executing Test_reltime()

Executing Test_repeat_many()

Executing Test_repeat_three()

Executing Test_retain_partial()

Executing Test_script_function_in_dict()

Executing Test_script_function_in_dict_arg()

Executing Test_searchpos()
"one" [New File]
Executing Test_set_add()

Executing Test_set_backslash()

Executing Test_set_reg_null_list()

Executing Test_set_tagcase()

Executing Test_setmatches()

Executing Test_signcolumn()

Executing Test_sort_default()

Executing Test_sort_float()

Executing Test_sort_nested()

Executing Test_sort_numbers()

Executing Test_sort_numeric()

Executing Test_sort_strings()

Executing Test_special_char()

Executing Test_statusline_will_be_disabled_with_error()x
-1 match priority
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
~
                                                                                Executing Test_stop_all_in_callback()

Executing Test_stop_in_callback()

Executing Test_stopall()

Executing Test_strcharpart()

Executing Test_strgetchar()

Executing Test_substitute_expr()

Executing Test_substitute_expr_arg()

Executing Test_symlink_delete()
"Xfile" [New File][New] 2L, 4C written[?1l>[?1h=
Executing Test_symlink_dir_delete()[?1l>[?1h=
Executing Test_symlink_recursive_delete()
"Xdir3/Xfile" [New File][New] 2L, 4C writtensubdir/Xfile" [New] 2L, 4C written
"Xdir4/Xfile" [New] 2L, 4C written[?1l>[?1h=
Executing Test_tabline_will_be_disabled_with_error()                                                                                x
-1 match priority
vmap works

Test1: text with a (here some more text)
Test1: text with a (here some more text)


Test2: text wit a (here some more text [und undo])
fooc d
fooc d
+
+
bbbb
bbbb
cccc
bbbb
+
-foo-
~
~
[No Name]                                                                       Executing Test_tabnext_on_buf_unload1()

Executing Test_tabnext_on_buf_unload2()

"x" [Not edited] --No lines in buffer-- ((5) of 6)
"y" [New File]
Executing Test_tabpage()
"Xtestfile" [New File]
2 fewer lines; before #1  0 seconds ago
"test1" [New File]newfile" [New File]
"test1" [New File]file] --No lines in buffer--

Executing Test_tabpage_with_autocmd()

Executing Test_tabpage_with_tab_modifier()
"help.txt" [readonly] line 1 of 225 --0%-- col 1

"ff" [New File]

Executing Test_tagcase()
"Xtext" [New File]
Executing Test_three_windows()
"Xtestje1" [New File][New] 1L, 8C written2" [New File][New] 1L, 8C written3" [New File][New] 1L, 8C written11L, 8C

"Xtestje3" 1L, 8C21L, 8C11L, 8C

"Xanother" [New File]
"Xtestje11L, 8C
"Xanother" [New File]

Already only one window
"help.txt" [readonly] 225L, 8437C

Executing Test_tostring()

Executing Test_true_false_arg()[?1l>[?1h=[?1l>[?1h=[?1l>[?1h=[?1l>[?1h=
"colored" [New File]

Executing Test_valid()

Executing Test_version()

Executing Test_vim_did_enter()

Executing Test_whichwrap()

Executing Test_win_tab_autocmd()

"somefile" [New File]

Executing Test_window_cmd_cmdwin_with_vsp()

Executing Test_window_cmd_ls0_with_split()

Executing Test_window_cmd_wincmd_gf()
"test_gf.txt" 0L, 0C
W19: Deleting augroup that is still in use
Executing Test_with_directories()"Xdir1/file" [New File]
"Xdir1/file" [New] 2L, 4C written

"Xdir3/Xdir4/file" [New] 2L, 4C written2L, 4C
"Xdir?/*/nofile" [New DIRECTORY]
"foo" [New File]Executing Test_with_partial_callback()tilde()rong_arguments()
"test.log" 12L, 547C

"test.log" 40L, 2933C written
Executed 188 tests4 FAILED:"messages" 506L, 13603C

"messages" 724L, 22313C written
[?1l>


From test_arglist.vim:
Executing Test_argadd()
Executing Test_argc()
Executing Test_argdelete()
Executing Test_argedit()
Executing Test_argidx()
Executing Test_arglist_autocmd()
Executing Test_arglistid()
Executing Test_argpos()
Executing Test_argument()
Executing Test_argv()
Executing Test_zero_argadd()
Executed 11 tests

From test_assert.vim:
Executing Test_assert_equal()
Executing Test_assert_exception()
Executing Test_assert_fail_fails()
Executing Test_assert_false()
Executing Test_assert_inrange()
Executing Test_assert_notequal()
Executing Test_assert_true()
Executing Test_compare_fail()
Executing Test_match()
Executing Test_notmatch()
Executing Test_user_is_happy()
Executing Test_wrong_error_type()
Executed 12 tests

From test_autochdir.vim:
Executing Test_set_filename()
Executed 1 test

From test_backspace_opt.vim:
Executing Test_backspace_option()
Executed 1 test

From test_bufwintabinfo.vim:
Executing Test_get_buf_options()
Executing Test_get_win_options()
Executing Test_getbufwintabinfo()
Executed 3 tests

From test_cdo.vim:
Executing Test_cdo()
Executing Test_ldo()
Executed 2 tests

From test_channel.vim:
Executed 0 test

From test_charsearch.vim:
Executing Test_charsearch()
Executing Test_search_cmds()
Executed 2 tests

From test_cmdline.vim:
Executing Test_complete_list()
Executing Test_complete_tab()
Executing Test_complete_wildmenu()
Executing Test_expand_star_star()
Executing Test_getcompletion()
Executed 5 tests

From test_crypt.vim:
Executing Test_crypt_blowfish()
Executing Test_crypt_blowfish2()
Executing Test_crypt_zip()
Executing Test_head_only_2()
Executing Test_head_only_3()
Executing Test_uncrypt_blowfish()
Executing Test_uncrypt_blowfish2()
Executing Test_uncrypt_zip()
Executed 8 tests

From test_cscope.vim:
Executed 0 test

From test_diffmode.vim:
Executing Test_diff_fold_sync()
Executing Test_diffget_diffput()
Executing Test_diffoff()
Executing Test_filler_lines()
Executing Test_vert_split()
Executed 5 tests

From test_digraph.vim:
Executing Test_digraph_cmndline()
Executing Test_digraphs()
Executing Test_digraphs_option()
Executing Test_digraphs_output()
Executing Test_loadkeymap()
Executed 5 tests

From test_farsi.vim:
Executing Test_farsi_map()
Executing Test_farsi_toggle()
Executed 2 tests

From test_fnameescape.vim:
Executing Test_fnameescape()
Executed 1 test

From test_gf.vim:
Executing Test_gf_url()
Executed 1 test

From test_gn.vim:
Executing Test_gn_command()
Executed 1 test

From test_gui.vim:
Executed 0 test

From test_hardcopy.vim:
Executing Test_printheader_parsing()
Executing Test_printmbfont_parsing()
Executing Test_printoptions_parsing()
Executing Test_with_syntax()
Executed 4 tests

From test_history.vim:
Executing Test_History()
Executed 1 test

From test_hlsearch.vim:
Executing Test_hlsearch()
Executed 1 test

From test_increment.vim:
Executing Test_normal_increment_01()
Executing Test_normal_increment_02()
Executing Test_normal_increment_03()
Executing Test_visual_increment_01()
Executing Test_visual_increment_02()
Executing Test_visual_increment_03()
Executing Test_visual_increment_04()
Executing Test_visual_increment_05()
Executing Test_visual_increment_06()
Executing Test_visual_increment_07()
Executing Test_visual_increment_08()
Executing Test_visual_increment_09()
Executing Test_visual_increment_10()
Executing Test_visual_increment_11()
Executing Test_visual_increment_12()
Executing Test_visual_increment_13()
Executing Test_visual_increment_14()
Executing Test_visual_increment_15()
Executing Test_visual_increment_16()
Executing Test_visual_increment_17()
Executing Test_visual_increment_18()
Executing Test_visual_increment_19()
Executing Test_visual_increment_20()
Executing Test_visual_increment_21()
Executing Test_visual_increment_22()
Executing Test_visual_increment_23()
Executing Test_visual_increment_24()
Executing Test_visual_increment_25()
Executing Test_visual_increment_26()
Executing Test_visual_increment_27()
Executing Test_visual_increment_28()
Executing Test_visual_increment_29()
Executing Test_visual_increment_30()
Executing Test_visual_increment_31()
Executing Test_visual_increment_32()
Executing Test_visual_increment_33()
Executing Test_visual_increment_34()
Executing Test_visual_increment_35()
Executing Test_visual_increment_36()
Executing Test_visual_increment_37()
Executing Test_visual_increment_38()
Executed 41 tests

From test_increment_dbcs.vim:
Executing Test_increment_dbcs_1()
Executed 1 test

From test_job_fails.vim:
Executing Test_job_start_fails()
Executed 1 test

From test_json.vim:
Executing Test_js_decode()
Executing Test_js_encode()
Executing Test_json_decode()
Executing Test_json_encode()
Executed 4 tests

From test_langmap.vim:
Executing Test_langmap()
Executed 1 test

From test_man.vim:
Executing Test_g_ft_man_open_mode()
Executing Test_nomodifiable()
Executed 2 tests

From test_marks.vim:
Executing Test_Incr_Marks()
Executing Test_Restore_DelMark()
Executed 2 tests

From test_matchadd_conceal.vim:
Executing Test_clearmatches()
Executing Test_default_conceal_char()
Executing Test_matchadd_and_conceallevel_3()
Executing Test_matchadd_repeat_conceal_with_syntax_off()
Executing Test_simple_matchadd()
Executing Test_simple_matchadd_and_conceal()
Executing Test_syn_and_match_conceal()
Executing Test_using_matchaddpos()
Executed 8 tests
2 FAILED:
Found errors in Test_clearmatches():
function RunTheTest[9]..Test_clearmatches line 29: Expected 0 differs from 0
Found errors in Test_default_conceal_char():
function RunTheTest[9]..Test_default_conceal_char line 13: Expected 0 differs from 0
function RunTheTest[9]..Test_default_conceal_char line 26: Expected 0 differs from 0

From test_nested_function.vim:
Executing Test_nested_functions()
Executed 1 test

From test_netbeans.vim:
Executed 0 test

From test_normal.vim:
Executing Test_normal00_optrans()
Executing Test_normal01_keymodel()
Executing Test_normal02_selectmode()
Executing Test_normal02_selectmode2()
Executing Test_normal03_join()
Executing Test_normal04_filter()
Executing Test_normal05_formatexpr()
Executing Test_normal05_formatexpr_newbuf()
Executing Test_normal05_formatexpr_setopt()
Executing Test_normal06_formatprg()
Executing Test_normal07_internalfmt()
Executing Test_normal08_fold()
Executing Test_normal09_operatorfunc()
Executing Test_normal10_expand()
Executing Test_normal11_showcmd()
Executing Test_normal12_nv_error()
Executing Test_normal13_help()
Executing Test_normal14_page()
Executing Test_normal14_page_eol()
Executing Test_normal15_z_scroll_vert()
Executing Test_normal16_z_scroll_hor()
Executing Test_normal17_z_scroll_hor2()
Executing Test_normal18_z_fold()
Executing Test_normal19_z_spell()
Executing Test_normal20_exmode()
Executing Test_normal21_nv_hat()
Executing Test_normal22_zet()
Executing Test_normal23_K()
Executing Test_normal24_rot13()
Executing Test_normal25_tag()
Executing Test_normal26_put()
Executing Test_normal27_bracket()
Executing Test_normal28_parenthesis()
Executing Test_normal29_brace()
Executing Test_normal30_changecase()
Executing Test_normal31_r_cmd()
Executing Test_normal32_g_cmd1()
Executing Test_normal33_g_cmd2()
Executing Test_normal34_g_cmd3()
Executing Test_normal35_g_cmd4()
    Skipped
Executing Test_normal36_g_cmd5()
Executing Test_normal37_g_cmd6()
Executing Test_normal38_nvhome()
Executing Test_normal39_cw()
Executing Test_normal40_ctrl_bsl()
Executing Test_normal41_insert_reg()
Executing Test_normal42_halfpage()
Executing Test_normal43_textobject1()
Executing Test_normal44_textobjects2()
Executing Test_normal45_drop()
Executing Test_normal46_ignore()
Executing Test_normal47_autocmd()
    Skipped
Executing Test_normal47_visual_buf_wipe()
Executing Test_normal48_wincmd()
Executing Test_normal49_counts()
Executing Test_normal50_commandline()
Executing Test_normal51_FileChangedRO()
Executing Test_normal52_rl()
Executing Test_normal53_digraph()
Executing Test_normal54_Ctrl_bsl()
Executed 60 tests
SKIPPED Test_normal35_g_cmd4(): output of g< can't be tested currently
SKIPPED Test_normal47_autocmd(): not possible to test cursorhold autocmd while waiting for input in normal_cmd

From test_packadd.vim:
Executing Test_colorscheme()
Executing Test_colorscheme_completion()
Executing Test_helptags()
Executing Test_packadd()
Executing Test_packadd_completion()
Executing Test_packadd_noload()
Executing Test_packloadall()
Executing Test_runtime()
Executed 8 tests

From test_perl.vim:
Executing Test_SvREFCNT()
Executing Test_VIM_package()
Executing Test_change_buffer()
Executing Test_evaluate_list()
Executing Test_perldo()
Executing Test_perleval()
Executing Test_stdio()
Executed 7 tests

From test_quickfix.vim:
Executing Test_Autocmd()
Executing Test_adjust_lnum()
Executing Test_browse()
Executing Test_caddbuffer_to_empty()
Executing Test_cage()
Executing Test_cbottom()
Executing Test_cbuffer()
Executing Test_cexpr()
Executing Test_cfile()
Executing Test_cgetexpr_works()
Executing Test_clist()
Executing Test_cwindow()
Executing Test_duplicate_buf()
Executing Test_efm()
Executing Test_efm1()
Executing Test_efm2()
Executing Test_efm_dirstack()
Executing Test_errortitle()
Executing Test_grep()
Executing Test_helpgrep()
Executing Test_history()
Executing Test_invalid_efm()
Executing Test_locationlist()
Executing Test_locationlist_curwin_was_closed()
Executing Test_long_lines()
Executing Test_nomem()
Executing Test_qf_property()
Executing Test_qf_title()
Executing Test_quickfix_set_list_with_act()
Executing Test_quickfix_was_changed_by_autocmd()
Executing Test_setqflist()
Executing Test_setqflist_empty_middle()
Executing Test_setqflist_empty_older()
Executing Test_switchbuf()
Executing Test_two_windows()
Executing Test_vimgreptitle()
Executed 36 tests

From test_ruby.vim:
Executing Test_ruby_change_buffer()
Executing Test_ruby_evaluate_dict()
Executing Test_ruby_evaluate_list()
Executed 3 tests

From test_search.vim:
Executing Test_search_cmdline()
Executing Test_search_cmdline2()
Executing Test_use_sub_pat()
Executed 3 tests

From test_signs.vim:
Executing Test_sign()
Executing Test_sign_completion()
Executing Test_sign_delete_buffer()
Executing Test_sign_invalid_commands()
Executing Test_sign_undefine_still_placed()
Executed 5 tests

From test_smartindent.vim:
Executing Test_nosmartindent()
Executed 1 test

From test_startup.vim:
Executing Test_after_comes_later()
Executing Test_compatible_args()
Executing Test_file_args()
Executing Test_help_arg()
Executing Test_read_stdin()
Executing Test_startup_script()
Executing Test_startuptime()
Executed 7 tests

From test_startup_utf8.vim:
Executing Test_read_fifo_utf8()
Executing Test_read_stdin_utf8()
Executed 2 tests

From test_stat.vim:
Executing Test_checktime()
Executing Test_existent_directory()
Executing Test_existent_file()
Executing Test_nonexistent_file()
Executing Test_win32_symlink_dir()
Executed 5 tests

From test_substitute.vim:
Executing Test_multiline_subst()
Executed 1 test

From test_syntax.vim:
Executing Test_syn_iskeyword()
Executing Test_syntax_after_reload()
Executed 2 tests

From test_textobjects.vim:
Executing Test_inner_block_with_cpo_M_left_backslash()
Executing Test_inner_block_with_cpo_M_right_backslash()
Executing Test_inner_block_without_cpo_M()
Executed 3 tests

From test_undo.vim:
Executing Test_U_command()
Executing Test_global_local_undolevels()
Executing Test_insert_expr()
Executing Test_undo_del_chars()
Executing Test_undo_write()
Executing Test_undojoin()
Executing Test_undolist()
Executing Test_undotree()
Executed 8 tests

From test_usercommands.vim:
Executing Test_Ambiguous()
Executing Test_CmdUndefined()
Executing Test_cmdmods()
Executed 3 tests

From test_viminfo.vim:
Executing Test_cmdline_history()
Executing Test_cmdline_history_order()
Executing Test_global_vars()
Executing Test_oldfiles()
Executing Test_read_and_write()
Executing Test_viminfo_bad_syntax()
Executing Test_viminfo_encoding()
Executing Test_viminfo_file_mark_tabclose()
Executing Test_viminfo_file_marks()
Executing Test_viminfo_jumplist()
Executing Test_viminfo_marks()
Executing Test_viminfo_registers()
Executed 12 tests

From test_viml.vim:
Executing Test_arg_abort()
Executing Test_braces_skipped()
Executing Test_curlies()
Executing Test_defining_functions()
Executing Test_echo_and_string()
Executing Test_endwhile_function()
Executing Test_endwhile_script()
Executing Test_error_in_function()
Executing Test_error_in_script()
Executing Test_expr_parsing()
Executing Test_finish()
Executing Test_func_abort()
Executing Test_if_bar_fail()
Executing Test_if_fail()
Executing Test_if_while()
Executing Test_num64()
Executing Test_return()
Executing Test_skip()
Executing Test_type()
Executing Test_while_fail()
Executed 20 tests

From test_visual.vim:
Executing Test_block_shift_multibyte()
Executed 1 test

From test_window_id.vim:
Executing Test_win_getid()
Executed 1 test

From test_writefile.vim:
Executing Test_WriteFile()
Executed 1 test

From test_alot_latin.vim:
Executing Test_eow_with_optional()
Executing Test_equivalence_re1()
Executing Test_equivalence_re2()
Executing Test_nested_backrefs()
Executing Test_recursive_substitute()
Executed 5 tests

From test_alot_utf8.vim:
Executing Test_classes_re1()
Executing Test_classes_re2()
Executing Test_equivalence_re1()
Executing Test_equivalence_re2()
Executing Test_match_using_multibyte_conceal_char()
Executing Test_source_latin()
Executing Test_source_utf8()
Executing Test_strcharpart()
Executing Test_strgetchar()
Executed 9 tests
1 FAILED:
Found errors in Test_match_using_multibyte_conceal_char():
function RunTheTest[9]..Test_match_using_multibyte_conceal_char line 14: Expected 0 differs from 0

From test_alot.vim:
Executing Test_abbreviation()
Executing Test_augroup_deleted()
Executing Test_augroup_warning()
Executing Test_auto_partial_rebind()
Executing Test_autocmd_bufunload_avoiding_SEGV_01()
Executing Test_autocmd_bufunload_avoiding_SEGV_02()
Executing Test_autocmd_bufunload_with_tabnext()
Executing Test_autocmd_bufwinleave_with_tabfirst()
Executing Test_bind_in_python()
Executing Test_break_undo()
Executing Test_bufunload()
Executing Test_cancel_ptjump()
Executing Test_caught_error_in_statusline()
Executing Test_caught_error_in_tabline()
Executing Test_closure_counter()
Executing Test_closure_refcount()
Executing Test_closure_unlet()
Executing Test_color_names()
Executing Test_command_count_0()
Executing Test_command_count_1()
Executing Test_command_count_2()
Executing Test_command_count_3()
Executing Test_command_count_4()
Executing Test_compare_null_dict()
Executing Test_compare_partials()
Executing Test_compl_vim_cmds_after_register_expr()
Executing Test_cursorhold_insert()
Executing Test_cursorhold_insert_ctrl_x()
Executing Test_curswant_with_autocommand()
Executing Test_cycle_partial_job()
Executing Test_cyclic_dict_arg()
Executing Test_cyclic_list_arg()
Executing Test_delete_myself()
Executing Test_dict()
Executing Test_dir_delete()
Executing Test_early_bar()
Executing Test_empty_buffer()
Executing Test_equal()
Executing Test_ex_undo()
Executing Test_execute_list()
Executing Test_execute_string()
Executing Test_existing()
Executing Test_expand()
Executing Test_feedkeys_x_with_empty_string()
Executing Test_file_delete()
Executing Test_file_perm()
Executing Test_filter()
Executing Test_filter_fails()
Executing Test_filter_map_dict_expr_funcref()
Executing Test_filter_map_dict_expr_string()
Executing Test_filter_map_list_expr_funcref()
Executing Test_filter_map_list_expr_string()
Executing Test_fnamemodify()
Executing Test_func_unref()
Executing Test_funcref()
Executing Test_function_in_dict()
Executing Test_function_with_funcref()
Executing Test_geeDEE()
Executing Test_gee_dee()
Executing Test_get_partial_items()
Executing Test_getreg_empty_list()
Executing Test_global_local_lispwords()
Executing Test_help_complete()
Executing Test_help_tagjump()
Executing Test_if()
Executing Test_info()
Executing Test_invalid()
Executing Test_invalid_submatch()
Executing Test_join_with_count()
Executing Test_keyword_jump()
Executing Test_lambda_call_lambda_from_lambda()
Executing Test_lambda_capture_by_reference()
Executing Test_lambda_circular_reference()
Executing Test_lambda_closure_counter()
Executing Test_lambda_combination()
Executing Test_lambda_delfunc()
Executing Test_lambda_do_not_share_local_variable()
Executing Test_lambda_fails()
Executing Test_lambda_feature()
Executing Test_lambda_refer_local_variable_from_other_scope()
Executing Test_lambda_scope()
Executing Test_lambda_share_scope()
Executing Test_lambda_side_effect()
Executing Test_lambda_with_a_var()
Executing Test_lambda_with_filter()
Executing Test_lambda_with_map()
Executing Test_lambda_with_partial()
Executing Test_lambda_with_sort()
Executing Test_lambda_with_timer()
Executing Test_load_menu()
Executing Test_loop_over_null_list()
Executing Test_map_ctrl_c_insert()
Executing Test_map_ctrl_c_visual()
Executing Test_map_cursor()
Executing Test_map_feedkeys()
Executing Test_map_langmap()
Executing Test_map_meta_quotes()
Executing Test_match()
Executing Test_matchaddpos()
Executing Test_matchaddpos_using_negative_priority()
Executing Test_matchstrpos()
Executing Test_max_min_errors()
Executing Test_messages()
Executing Test_missing_attr()
Executing Test_move_cursor()
Executing Test_named_function_closure()
Executing Test_no_type_checking()
Executing Test_noinsert_complete()
Executing Test_non_zero_arg()
Executing Test_not_existing()
Executing Test_not_lamda()
Executing Test_oneshot()
Executing Test_option_value()
Executing Test_options()
Executing Test_partial_args()
Executing Test_partial_dict()
Executing Test_partial_exists()
Executing Test_partial_implicit()
Executing Test_partial_string()
Executing Test_path_keep_commas()
Executing Test_paused()
Executing Test_popup_complete()
Executing Test_popup_complete2()
Executing Test_popup_completion_insertmode()
Executing Test_printf_64bit()
Executing Test_printf_errors()
Executing Test_printf_float()
Executing Test_printf_misc()
Executing Test_printf_spec_b()
Executing Test_printf_spec_s()
Executing Test_ptag_with_notagstack()
Executing Test_read_only()
Executing Test_recursive_delete()
Executing Test_redefine_dict_func()
Executing Test_ref_job_partial_dict()
Executing Test_reltime()
Executing Test_repeat_many()
Executing Test_repeat_three()
Executing Test_retain_partial()
Executing Test_script_function_in_dict()
Executing Test_script_function_in_dict_arg()
Executing Test_searchpos()
Executing Test_set_add()
Executing Test_set_backslash()
Executing Test_set_reg_null_list()
Executing Test_set_tagcase()
Executing Test_setmatches()
Executing Test_signcolumn()
Executing Test_sort_default()
Executing Test_sort_float()
Executing Test_sort_nested()
Executing Test_sort_numbers()
Executing Test_sort_numeric()
Executing Test_sort_strings()
Executing Test_special_char()
Executing Test_statusline_will_be_disabled_with_error()
Executing Test_stop_all_in_callback()
Executing Test_stop_in_callback()
Executing Test_stopall()
Executing Test_strcharpart()
Executing Test_strgetchar()
Executing Test_substitute_expr()
Executing Test_substitute_expr_arg()
Executing Test_symlink_delete()
Executing Test_symlink_dir_delete()
Executing Test_symlink_recursive_delete()
Executing Test_tabline_will_be_disabled_with_error()
Executing Test_tabnext_on_buf_unload1()
Executing Test_tabnext_on_buf_unload2()
Executing Test_tabpage()
Executing Test_tabpage_with_autocmd()
Executing Test_tabpage_with_tab_modifier()
Executing Test_tagcase()
Executing Test_three_windows()
Executing Test_tostring()
Executing Test_true_false_arg()
Executing Test_valid()
Executing Test_version()
Executing Test_vim_did_enter()
Executing Test_whichwrap()
Executing Test_win_tab_autocmd()
Executing Test_window_cmd_cmdwin_with_vsp()
Executing Test_window_cmd_ls0_with_split()
Executing Test_window_cmd_wincmd_gf()
Executing Test_with_directories()
Executing Test_with_partial_callback()
Executing Test_with_tilde()
Executing Test_wrong_arguments()
Executed 188 tests
4 FAILED:
Found errors in Test_matchaddpos_using_negative_priority():
function RunTheTest[9]..Test_matchaddpos_using_negative_priority line 20: 'Match with negative priority is incorrectly highlighted with Search highlight.'
Found errors in Test_noinsert_complete():
function RunTheTest[9]..Test_noinsert_complete line 15: Expected 'soundfold' but got 'soun'
function RunTheTest[9]..Test_noinsert_complete line 16: Expected 'soundfold' but got ''
function RunTheTest[9]..Test_noinsert_complete line 22: Expected 'source' but got ''
Found errors in Test_popup_complete():
function RunTheTest[9]..Test_popup_complete line 6: Expected ['Ju'] but got ['June']
function RunTheTest[9]..Test_popup_complete line 11: Expected ['August'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 41: Expected ['July'] but got ['Jul']
function RunTheTest[9]..Test_popup_complete line 77: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 82: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 87: Expected ['February'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 92: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 97: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 102: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 107: Expected ['October'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 112: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 117: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 122: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 142: Expected ['September'] but got ['January', '']
function RunTheTest[9]..Test_popup_complete line 159: Expected ['December2015', 'December201', ''] but got ['December2015', 'December2015', '']
function RunTheTest[9]..Test_popup_complete line 177: Expected ['March', 'M', 'March'] but got ['March', 'M', 'M', '']
Found errors in Test_popup_completion_insertmode():
function RunTheTest[9]..Test_popup_completion_insertmode line 5: Expected 'February' but got ''
function RunTheTest[9]..Test_popup_completion_insertmode line 10: Expected 'February' but got ''


From test_matchadd_conceal.vim:
Found errors in Test_clearmatches():
function RunTheTest[9]..Test_clearmatches line 29: Expected 0 differs from 0
Found errors in Test_default_conceal_char():
function RunTheTest[9]..Test_default_conceal_char line 13: Expected 0 differs from 0
function RunTheTest[9]..Test_default_conceal_char line 26: Expected 0 differs from 0

From test_alot_utf8.vim:
Found errors in Test_match_using_multibyte_conceal_char():
function RunTheTest[9]..Test_match_using_multibyte_conceal_char line 14: Expected 0 differs from 0

From test_alot.vim:
Found errors in Test_matchaddpos_using_negative_priority():
function RunTheTest[9]..Test_matchaddpos_using_negative_priority line 20: 'Match with negative priority is incorrectly highlighted with Search highlight.'
Found errors in Test_noinsert_complete():
function RunTheTest[9]..Test_noinsert_complete line 15: Expected 'soundfold' but got 'soun'
function RunTheTest[9]..Test_noinsert_complete line 16: Expected 'soundfold' but got ''
function RunTheTest[9]..Test_noinsert_complete line 22: Expected 'source' but got ''
Found errors in Test_popup_complete():
function RunTheTest[9]..Test_popup_complete line 6: Expected ['Ju'] but got ['June']
function RunTheTest[9]..Test_popup_complete line 11: Expected ['August'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 41: Expected ['July'] but got ['Jul']
function RunTheTest[9]..Test_popup_complete line 77: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 82: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 87: Expected ['February'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 92: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 97: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 102: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 107: Expected ['October'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 112: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 117: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 122: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 142: Expected ['September'] but got ['January', '']
function RunTheTest[9]..Test_popup_complete line 159: Expected ['December2015', 'December201', ''] but got ['December2015', 'December2015', '']
function RunTheTest[9]..Test_popup_complete line 177: Expected ['March', 'M', 'March'] but got ['March', 'M', 'M', '']
Found errors in Test_popup_completion_insertmode():
function RunTheTest[9]..Test_popup_completion_insertmode line 5: Expected 'February' but got ''
function RunTheTest[9]..Test_popup_completion_insertmode line 10: Expected 'February' but got ''

Test results:


From test_matchadd_conceal.vim:
Found errors in Test_clearmatches():
function RunTheTest[9]..Test_clearmatches line 29: Expected 0 differs from 0
Found errors in Test_default_conceal_char():
function RunTheTest[9]..Test_default_conceal_char line 13: Expected 0 differs from 0
function RunTheTest[9]..Test_default_conceal_char line 26: Expected 0 differs from 0

From test_alot_utf8.vim:
Found errors in Test_match_using_multibyte_conceal_char():
function RunTheTest[9]..Test_match_using_multibyte_conceal_char line 14: Expected 0 differs from 0

From test_alot.vim:
Found errors in Test_matchaddpos_using_negative_priority():
function RunTheTest[9]..Test_matchaddpos_using_negative_priority line 20: 'Match with negative priority is incorrectly highlighted with Search highlight.'
Found errors in Test_noinsert_complete():
function RunTheTest[9]..Test_noinsert_complete line 15: Expected 'soundfold' but got 'soun'
function RunTheTest[9]..Test_noinsert_complete line 16: Expected 'soundfold' but got ''
function RunTheTest[9]..Test_noinsert_complete line 22: Expected 'source' but got ''
Found errors in Test_popup_complete():
function RunTheTest[9]..Test_popup_complete line 6: Expected ['Ju'] but got ['June']
function RunTheTest[9]..Test_popup_complete line 11: Expected ['August'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 41: Expected ['July'] but got ['Jul']
function RunTheTest[9]..Test_popup_complete line 77: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 82: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 87: Expected ['February'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 92: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 97: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 102: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 107: Expected ['October'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 112: Expected [''] but got ['January']
function RunTheTest[9]..Test_popup_complete line 117: Expected ['December'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 122: Expected ['November'] but got ['January']
function RunTheTest[9]..Test_popup_complete line 142: Expected ['September'] but got ['January', '']
function RunTheTest[9]..Test_popup_complete line 159: Expected ['December2015', 'December201', ''] but got ['December2015', 'December2015', '']
function RunTheTest[9]..Test_popup_complete line 177: Expected ['March', 'M', 'March'] but got ['March', 'M', 'M', '']
Found errors in Test_popup_completion_insertmode():
function RunTheTest[9]..Test_popup_completion_insertmode line 5: Expected 'February' but got ''
function RunTheTest[9]..Test_popup_completion_insertmode line 10: Expected 'February' but got ''
TEST FAILURE
Makefile:41: recipe for target 'report' failed
make[2]: *** [report] Error 1
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-athena/testdir'
Makefile:1992: recipe for target 'scripttests' failed
make[1]: *** [scripttests] Error 2
make[1]: Leaving directory '/<<PKGBUILDDIR>>/src/vim-athena'
debian/rules:279: recipe for target 'build-stamp-vim-athena' failed
make: *** [build-stamp-vim-athena] Error 2
rm configure-stamp-vim-basic configure-stamp-vim-tiny configure-stamp-vim-nox configure-stamp-vim-gtk3 configure-stamp-vim-athena configure-stamp-vim-gtk
dpkg-buildpackage: error: debian/rules build-arch gave error exit status 2
--------------------------------------------------------------------------------
Build finished at 2016-10-11T02:34:47Z

Finished
--------


+------------------------------------------------------------------------------+
| Cleanup                                                                      |
+------------------------------------------------------------------------------+

Purging /<<BUILDDIR>>
Not cleaning session: cloned chroot in use
E: Build failure (dpkg-buildpackage died)

+------------------------------------------------------------------------------+
| Summary                                                                      |
+------------------------------------------------------------------------------+

Build Architecture: armhf
Build-Space: 0
Build-Time: 2783
Distribution: stretch-staging
Fail-Stage: build
Host Architecture: armhf
Install-Time: 1100
Job: vim_2:8.0.0022-1
Machine Architecture: armhf
Package: vim
Package-Time: 3933
Source-Version: 2:8.0.0022-1
Space: 0
Status: failed
Version: 2:8.0.0022-1
--------------------------------------------------------------------------------
Finished at 2016-10-11T02:34:47Z
Build needed 00:00:00, 0k disc space