summaryrefslogtreecommitdiffstats
path: root/source/ap
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap')
-rwxr-xr-xsource/ap/alsa-utils/alsa-utils.SlackBuild3
-rw-r--r--source/ap/cdrdao/cdrdao-1.2.3-stat.patch13
-rwxr-xr-xsource/ap/cdrdao/cdrdao.SlackBuild7
-rwxr-xr-xsource/ap/diffutils/diffutils.SlackBuild2
-rw-r--r--source/ap/dmapi/slack-desc2
-rwxr-xr-xsource/ap/ghostscript/ghostscript.SlackBuild29
-rw-r--r--source/ap/ghostscript/ghostscript.rev11948.diff13
-rwxr-xr-xsource/ap/htop/htop.SlackBuild (renamed from source/ap/ntfsprogs/ntfsprogs.SlackBuild)60
-rw-r--r--source/ap/htop/slack-desc19
-rw-r--r--source/ap/linuxdoc-tools/ChangeLog.txt25
-rwxr-xr-xsource/ap/linuxdoc-tools/arm/build4
-rwxr-xr-xsource/ap/linuxdoc-tools/linuxdoc-tools.build47
-rw-r--r--source/ap/linuxdoc-tools/sources/asciidoc.asciidoc7compatible.revertbrokenchange.diff80
-rw-r--r--source/ap/linuxdoc-tools/sources/gtk-doc.patch25
-rw-r--r--source/ap/linuxdoc-tools/sources/openjade-1.3-getopts.pl65
-rw-r--r--source/ap/linuxdoc-tools/sources/openjade-1.3.2-gcc46.patch82
-rwxr-xr-xsource/ap/linuxdoc-tools/sources/source.download36
-rwxr-xr-xsource/ap/linuxdoc-tools/trackbuild.linuxdoc-tools4
-rwxr-xr-xsource/ap/lm_sensors/lm_sensors.SlackBuild4
-rwxr-xr-xsource/ap/lsscsi/lsscsi.SlackBuild10
-rwxr-xr-xsource/ap/lxc/lxc.SlackBuild4
-rwxr-xr-xsource/ap/man-pages/man-pages.SlackBuild4
-rwxr-xr-xsource/ap/mc/mc.SlackBuild24
-rw-r--r--source/ap/mc/mc.ext.in.geeqie.diff11
-rw-r--r--source/ap/mc/mc.image.sh.geeqie.diff11
-rw-r--r--source/ap/mc/mc.save.file.diff37
-rwxr-xr-xsource/ap/moc/moc.SlackBuild2
-rw-r--r--source/ap/mysql/README.mysql-embedded7
-rw-r--r--source/ap/mysql/doinst.sh1
-rw-r--r--source/ap/mysql/mirror-url1
-rwxr-xr-xsource/ap/mysql/mysql-embedded.SlackBuild221
-rwxr-xr-xsource/ap/mysql/mysql-embedded.build63
-rwxr-xr-xsource/ap/mysql/mysql.SlackBuild122
-rw-r--r--source/ap/nano/doinst.sh13
-rwxr-xr-xsource/ap/nano/nano.SlackBuild28
-rw-r--r--source/ap/ntfsprogs/slack-desc19
-rwxr-xr-xsource/ap/powertop/powertop.SlackBuild44
-rwxr-xr-xsource/ap/rpm/rpm.SlackBuild11
-rwxr-xr-xsource/ap/screen/screen.SlackBuild11
-rw-r--r--source/ap/screen/screen.d_termname.envterm.buffersizeincrease.diff22
-rw-r--r--source/ap/soma/slack-desc19
-rwxr-xr-xsource/ap/soma/soma.SlackBuild67
-rw-r--r--source/ap/soma/soma.info10
-rw-r--r--source/ap/soma/soma.pngbin0 -> 229691 bytes
-rw-r--r--source/ap/soma/stations.conf38
-rwxr-xr-xsource/ap/sqlite/sqlite.SlackBuild6
-rwxr-xr-xsource/ap/sudo/sudo.SlackBuild10
-rw-r--r--source/ap/vbetool/slack-desc2
-rw-r--r--source/ap/vim/patches/7.3.155286
-rw-r--r--source/ap/vim/patches/7.3.15689
-rw-r--r--source/ap/vim/patches/7.3.15752
-rw-r--r--source/ap/vim/patches/7.3.15848
-rw-r--r--source/ap/vim/patches/7.3.15954
-rw-r--r--source/ap/vim/patches/7.3.160482
-rw-r--r--source/ap/vim/patches/7.3.1611645
-rw-r--r--source/ap/vim/patches/7.3.16283
-rw-r--r--source/ap/vim/patches/7.3.16359
-rw-r--r--source/ap/vim/patches/7.3.164181
-rw-r--r--source/ap/vim/patches/7.3.16547
-rw-r--r--source/ap/vim/patches/7.3.16670
-rw-r--r--source/ap/vim/patches/7.3.16796
-rw-r--r--source/ap/vim/patches/7.3.16882
-rw-r--r--source/ap/vim/patches/7.3.169130
-rw-r--r--source/ap/vim/patches/7.3.17070
-rw-r--r--source/ap/vim/patches/7.3.171142
-rw-r--r--source/ap/vim/patches/7.3.172268
-rw-r--r--source/ap/vim/patches/7.3.17379
-rw-r--r--source/ap/vim/patches/7.3.174109
-rw-r--r--source/ap/vim/patches/7.3.17550
-rw-r--r--source/ap/vim/patches/7.3.176165
-rw-r--r--source/ap/vim/patches/7.3.17797
-rw-r--r--source/ap/vim/patches/7.3.178163
-rw-r--r--source/ap/vim/patches/7.3.17995
-rw-r--r--source/ap/vim/patches/7.3.180295
-rw-r--r--source/ap/vim/patches/7.3.181171
-rw-r--r--source/ap/vim/patches/7.3.18253
-rw-r--r--source/ap/vim/patches/7.3.18387
-rw-r--r--source/ap/vim/patches/7.3.18486
-rw-r--r--source/ap/vim/patches/7.3.18577
-rw-r--r--source/ap/vim/patches/7.3.18659
-rw-r--r--source/ap/vim/patches/7.3.1876621
-rw-r--r--source/ap/vim/patches/7.3.188184
-rw-r--r--source/ap/vim/patches/7.3.18949
-rw-r--r--source/ap/vim/patches/7.3.19048
-rw-r--r--source/ap/vim/patches/7.3.191526
-rw-r--r--source/ap/vim/patches/7.3.19261
-rw-r--r--source/ap/vim/patches/7.3.19370
-rw-r--r--source/ap/vim/patches/7.3.19448
-rw-r--r--source/ap/vim/patches/7.3.195199
-rw-r--r--source/ap/vim/patches/7.3.196224
-rw-r--r--source/ap/vim/patches/7.3.19778
-rw-r--r--source/ap/vim/patches/7.3.198403
-rw-r--r--source/ap/vim/patches/7.3.19957
-rw-r--r--source/ap/vim/patches/7.3.20075
-rw-r--r--source/ap/vim/patches/7.3.201124
-rw-r--r--source/ap/vim/patches/7.3.202868
-rw-r--r--source/ap/vim/patches/7.3.203102
-rw-r--r--source/ap/vim/patches/7.3.20451
-rw-r--r--source/ap/vim/patches/7.3.20593
-rw-r--r--source/ap/vim/patches/7.3.20654
-rw-r--r--source/ap/vim/patches/7.3.20754
-rw-r--r--source/ap/vim/patches/7.3.20851
-rw-r--r--source/ap/vim/patches/7.3.20995
-rw-r--r--source/ap/vim/patches/7.3.210182
-rw-r--r--source/ap/vim/patches/7.3.21151
-rw-r--r--source/ap/vim/patches/7.3.212243
-rw-r--r--source/ap/vim/patches/7.3.213142
-rw-r--r--source/ap/vim/patches/7.3.21455
-rw-r--r--source/ap/vim/patches/7.3.21563
-rw-r--r--source/ap/vim/patches/7.3.216263
-rw-r--r--source/ap/vim/patches/7.3.21763
-rw-r--r--source/ap/vim/patches/7.3.21891
-rw-r--r--source/ap/vim/patches/7.3.21992
-rw-r--r--source/ap/vim/patches/7.3.2201230
-rw-r--r--source/ap/vim/patches/7.3.221287
-rw-r--r--source/ap/vim/patches/7.3.22271
-rw-r--r--source/ap/vim/patches/7.3.223387
-rw-r--r--source/ap/vim/patches/7.3.224162
-rw-r--r--source/ap/vim/patches/7.3.225bin0 -> 18841 bytes
-rw-r--r--source/ap/vim/patches/7.3.22658
-rw-r--r--source/ap/vim/patches/7.3.227109
-rw-r--r--source/ap/vim/patches/7.3.22845
-rw-r--r--source/ap/vim/patches/7.3.22955
-rw-r--r--source/ap/vim/patches/7.3.23070
-rw-r--r--source/ap/vim/patches/7.3.231128
-rw-r--r--source/ap/vim/patches/7.3.23284
-rw-r--r--source/ap/vim/patches/7.3.23381
-rw-r--r--source/ap/vim/patches/7.3.234178
-rw-r--r--source/ap/vim/patches/7.3.235360
-rw-r--r--source/ap/vim/patches/7.3.23687
-rw-r--r--source/ap/vim/patches/7.3.237222
-rw-r--r--source/ap/vim/patches/7.3.23853
-rw-r--r--source/ap/vim/patches/7.3.239321
-rw-r--r--source/ap/vim/patches/7.3.240795
-rw-r--r--source/ap/vim/patches/7.3.24171
-rw-r--r--source/ap/vim/patches/7.3.24271
-rw-r--r--source/ap/vim/patches/7.3.24352
-rw-r--r--source/ap/vim/patches/7.3.24448
-rw-r--r--source/ap/vim/patches/7.3.24581
-rw-r--r--source/ap/vim/patches/7.3.24655
-rw-r--r--source/ap/vim/patches/7.3.24795
-rw-r--r--source/ap/vim/patches/7.3.248129
-rw-r--r--source/ap/vim/patches/7.3.249134
-rw-r--r--source/ap/vim/patches/7.3.250104
-rw-r--r--source/ap/vim/patches/7.3.251184
-rw-r--r--source/ap/vim/patches/7.3.25243
-rw-r--r--source/ap/vim/patches/7.3.253539
-rw-r--r--source/ap/vim/patches/7.3.25447
-rw-r--r--source/ap/vim/patches/7.3.25581
-rw-r--r--source/ap/vim/patches/7.3.256322
-rw-r--r--source/ap/vim/patches/7.3.25797
-rw-r--r--source/ap/vim/patches/7.3.25870
-rw-r--r--source/ap/vim/patches/7.3.259503
-rw-r--r--source/ap/vim/patches/7.3.26069
-rw-r--r--source/ap/vim/patches/7.3.26153
-rw-r--r--source/ap/vim/patches/7.3.2621356
-rw-r--r--source/ap/vim/patches/7.3.263162
-rw-r--r--source/ap/vim/patches/7.3.264159
-rw-r--r--source/ap/vim/patches/7.3.265145
-rw-r--r--source/ap/vim/patches/7.3.26654
-rw-r--r--source/ap/vim/patches/7.3.26767
-rw-r--r--source/ap/vim/patches/7.3.26869
-rw-r--r--source/ap/vim/patches/7.3.269112
-rw-r--r--source/ap/vim/patches/7.3.27052
-rw-r--r--source/ap/vim/patches/7.3.271504
-rw-r--r--source/ap/vim/patches/7.3.27251
-rw-r--r--source/ap/vim/patches/7.3.273124
-rw-r--r--source/ap/vim/patches/7.3.27455
-rw-r--r--source/ap/vim/patches/7.3.27577
-rw-r--r--source/ap/vim/patches/7.3.276130
-rw-r--r--source/ap/vim/patches/7.3.277348
-rw-r--r--source/ap/vim/patches/7.3.27873
-rw-r--r--source/ap/vim/patches/7.3.279118
-rw-r--r--source/ap/vim/patches/7.3.280181
-rw-r--r--source/ap/vim/patches/7.3.281134
-rw-r--r--source/ap/vim/patches/7.3.28260
-rw-r--r--source/ap/vim/patches/7.3.283114
-rw-r--r--source/ap/vim/patches/7.3.284211
-rw-r--r--source/ap/vim/patches/7.3.285144
-rw-r--r--source/ap/vim/patches/7.3.28684
-rw-r--r--source/ap/vim/patches/7.3.287100
-rw-r--r--source/ap/vim/patches/7.3.28876
-rw-r--r--source/ap/vim/patches/7.3.28956
-rw-r--r--source/ap/vim/patches/7.3.29075
-rw-r--r--source/ap/vim/patches/7.3.291125
-rw-r--r--source/ap/vim/patches/7.3.29255
-rw-r--r--source/ap/vim/patches/7.3.29374
-rw-r--r--source/ap/vim/patches/7.3.29458
-rw-r--r--source/ap/vim/patches/7.3.295109
-rw-r--r--source/ap/vim/patches/7.3.296222
-rw-r--r--source/ap/vim/patches/7.3.297130
-rw-r--r--source/ap/vim/patches/7.3.298167
-rw-r--r--source/ap/vim/patches/7.3.299516
-rw-r--r--source/ap/vim/patches/7.3.30074
-rw-r--r--source/ap/vim/patches/7.3.30197
-rw-r--r--source/ap/vim/patches/7.3.30268
-rw-r--r--source/ap/vim/patches/7.3.30355
-rw-r--r--source/ap/vim/patches/7.3.304103
-rw-r--r--source/ap/vim/patches/7.3.30558
-rw-r--r--source/ap/vim/patches/7.3.306244
-rw-r--r--source/ap/vim/patches/7.3.307180
-rw-r--r--source/ap/vim/patches/7.3.308260
-rw-r--r--source/ap/vim/patches/7.3.309105
-rw-r--r--source/ap/vim/patches/7.3.3103524
-rw-r--r--source/ap/vim/patches/7.3.311351
-rw-r--r--source/ap/vim/patches/7.3.31258
-rw-r--r--source/ap/vim/patches/7.3.31353
-rw-r--r--source/ap/vim/patches/7.3.31454
-rw-r--r--source/ap/vim/patches/7.3.315475
-rw-r--r--source/ap/vim/patches/7.3.31648
-rw-r--r--source/ap/vim/patches/7.3.317116
-rw-r--r--source/ap/vim/patches/7.3.31890
-rw-r--r--source/ap/vim/patches/7.3.319154
-rw-r--r--source/ap/vim/patches/7.3.320130
-rw-r--r--source/ap/vim/patches/7.3.321304
-rw-r--r--source/ap/vim/patches/7.3.32252
-rw-r--r--source/ap/vim/patches/7.3.32352
-rw-r--r--source/ap/vim/patches/7.3.32453
-rw-r--r--source/ap/vim/patches/7.3.32564
-rw-r--r--source/ap/vim/patches/7.3.326285
-rw-r--r--source/ap/vim/patches/7.3.32764
-rw-r--r--source/ap/vim/patches/7.3.32845
-rw-r--r--source/ap/vim/patches/7.3.32972
-rw-r--r--source/ap/vim/patches/7.3.33045
-rw-r--r--source/ap/vim/patches/7.3.33153
-rw-r--r--source/ap/vim/patches/7.3.332206
-rw-r--r--source/ap/vim/patches/7.3.333245
-rw-r--r--source/ap/vim/patches/7.3.33458
-rw-r--r--source/ap/vim/patches/7.3.33548
-rw-r--r--source/ap/vim/patches/7.3.3361100
-rw-r--r--source/ap/vim/patches/7.3.33758
-rw-r--r--source/ap/vim/patches/7.3.338100
-rw-r--r--source/ap/vim/patches/7.3.33957
-rw-r--r--source/ap/vim/patches/7.3.34062
-rw-r--r--source/ap/vim/patches/7.3.341360
-rw-r--r--source/ap/vim/patches/7.3.34293
-rw-r--r--source/ap/vim/patches/7.3.343252
-rw-r--r--source/ap/vim/patches/7.3.344121
-rw-r--r--source/ap/vim/patches/7.3.34548
-rw-r--r--source/ap/vim/patches/7.3.346143
-rw-r--r--source/ap/vim/patches/7.3.34754
-rw-r--r--source/ap/vim/patches/7.3.34857
-rw-r--r--source/ap/vim/patches/7.3.34988
-rw-r--r--source/ap/vim/patches/7.3.35046
-rw-r--r--source/ap/vim/patches/7.3.35146
-rw-r--r--source/ap/vim/patches/7.3.352108
-rw-r--r--source/ap/vim/patches/7.3.353155
-rw-r--r--source/ap/vim/patches/7.3.35471
-rw-r--r--source/ap/vim/patches/7.3.35556
-rw-r--r--source/ap/vim/patches/7.3.35679
-rw-r--r--source/ap/vim/patches/7.3.35752
-rw-r--r--source/ap/vim/patches/7.3.35874
-rw-r--r--source/ap/vim/patches/7.3.35964
-rw-r--r--source/ap/vim/patches/7.3.36061
-rw-r--r--source/ap/vim/patches/7.3.36155
-rw-r--r--source/ap/vim/patches/7.3.36259
-rw-r--r--source/ap/vim/patches/7.3.363110
-rw-r--r--source/ap/vim/patches/7.3.36457
-rw-r--r--source/ap/vim/patches/7.3.365131
-rw-r--r--source/ap/vim/patches/7.3.36676
-rw-r--r--source/ap/vim/patches/7.3.36753
-rw-r--r--source/ap/vim/patches/7.3.368103
-rw-r--r--source/ap/vim/patches/7.3.36948
-rw-r--r--source/ap/vim/patches/7.3.37063
-rw-r--r--source/ap/vim/patches/7.3.37175
-rw-r--r--source/ap/vim/patches/7.3.37252
-rw-r--r--source/ap/vim/patches/7.3.37378
-rw-r--r--source/ap/vim/patches/7.3.37459
-rw-r--r--source/ap/vim/patches/7.3.37564
-rw-r--r--source/ap/vim/patches/7.3.37657
-rw-r--r--source/ap/vim/patches/7.3.377406
-rw-r--r--source/ap/vim/patches/7.3.37871
-rw-r--r--source/ap/vim/patches/7.3.379112
-rw-r--r--source/ap/vim/patches/7.3.380318
-rw-r--r--source/ap/vim/patches/7.3.381260
-rw-r--r--source/ap/vim/patches/7.3.382173
-rw-r--r--source/ap/vim/patches/7.3.38351
-rw-r--r--source/ap/vim/patches/7.3.38453
-rw-r--r--source/ap/vim/patches/7.3.38569
-rw-r--r--source/ap/vim/patches/7.3.38655
-rw-r--r--source/ap/vim/patches/7.3.38761
-rw-r--r--source/ap/vim/patches/7.3.38845
-rw-r--r--source/ap/vim/patches/7.3.38961
-rw-r--r--source/ap/vim/patches/7.3.390155
-rw-r--r--source/ap/vim/patches/7.3.39151
-rw-r--r--source/ap/vim/patches/7.3.392115
-rw-r--r--source/ap/vim/patches/7.3.393130
-rw-r--r--source/ap/vim/patches/7.3.39462
-rw-r--r--source/ap/vim/patches/7.3.395115
-rw-r--r--source/ap/vim/patches/7.3.39649
-rw-r--r--source/ap/vim/patches/7.3.397224
-rw-r--r--source/ap/vim/patches/7.3.39865
-rw-r--r--source/ap/vim/patches/7.3.399137
-rw-r--r--source/ap/vim/patches/7.3.4001762
-rw-r--r--source/ap/vim/patches/7.3.401191
-rw-r--r--source/ap/vim/patches/7.3.40259
-rw-r--r--source/ap/vim/patches/7.3.403108
-rw-r--r--source/ap/vim/patches/7.3.40485
-rw-r--r--source/ap/vim/patches/7.3.405101
-rw-r--r--source/ap/vim/patches/7.3.406103
-rw-r--r--source/ap/vim/patches/7.3.407270
-rw-r--r--source/ap/vim/patches/7.3.40848
-rw-r--r--source/ap/vim/patches/7.3.40948
-rw-r--r--source/ap/vim/patches/7.3.41054
-rw-r--r--source/ap/vim/patches/7.3.41155
-rw-r--r--source/ap/vim/patches/7.3.41251
-rw-r--r--source/ap/vim/patches/7.3.41390
-rw-r--r--source/ap/vim/patches/7.3.41490
-rw-r--r--source/ap/vim/patches/7.3.41554
-rw-r--r--source/ap/vim/patches/7.3.41654
-rw-r--r--source/ap/vim/patches/7.3.41747
-rw-r--r--source/ap/vim/patches/7.3.41853
-rw-r--r--source/ap/vim/patches/7.3.41985
-rw-r--r--source/ap/vim/patches/7.3.42070
-rw-r--r--source/ap/vim/patches/7.3.42160
-rw-r--r--source/ap/vim/patches/7.3.42294
-rw-r--r--source/ap/vim/patches/7.3.423130
-rw-r--r--source/ap/vim/patches/7.3.42462
-rw-r--r--source/ap/vim/patches/7.3.42578
-rw-r--r--source/ap/vim/patches/7.3.426279
-rw-r--r--source/ap/vim/patches/7.3.427378
-rw-r--r--source/ap/vim/patches/7.3.428113
-rw-r--r--source/ap/vim/patches/7.3.429192
-rw-r--r--source/ap/vim/patches/7.3.43080
-rw-r--r--source/ap/vim/patches/7.3.431280
-rw-r--r--source/ap/vim/patches/7.3.432228
-rw-r--r--source/ap/vim/patches/7.3.43392
-rw-r--r--source/ap/vim/patches/7.3.434233
-rw-r--r--source/ap/vim/patches/7.3.43563
-rw-r--r--source/ap/vim/patches/7.3.436111
-rw-r--r--source/ap/vim/patches/7.3.43773
-rw-r--r--source/ap/vim/patches/7.3.438126
-rw-r--r--source/ap/vim/patches/7.3.43987
-rw-r--r--source/ap/vim/patches/7.3.440211
-rw-r--r--source/ap/vim/patches/7.3.441341
-rw-r--r--source/ap/vim/patches/7.3.442186
-rw-r--r--source/ap/vim/patches/7.3.443206
-rw-r--r--source/ap/vim/patches/7.3.44496
-rw-r--r--source/ap/vim/patches/7.3.445199
-rw-r--r--source/ap/vim/patches/7.3.446164
-rw-r--r--source/ap/vim/patches/7.3.447377
-rw-r--r--source/ap/vim/patches/7.3.448180
-rw-r--r--source/ap/vim/patches/7.3.449455
-rw-r--r--source/ap/vim/patches/7.3.45081
-rw-r--r--source/ap/vim/patches/7.3.451363
-rw-r--r--source/ap/vim/patches/7.3.45270
-rw-r--r--source/ap/vim/patches/7.3.45358
-rw-r--r--source/ap/vim/patches/7.3.45484
-rw-r--r--source/ap/vim/patches/7.3.45570
-rw-r--r--source/ap/vim/patches/7.3.456376
-rw-r--r--source/ap/vim/patches/7.3.45781
-rw-r--r--source/ap/vim/patches/7.3.45852
-rw-r--r--source/ap/vim/patches/7.3.45971
-rw-r--r--source/ap/vim/patches/7.3.46089
-rw-r--r--source/ap/vim/patches/7.3.461243
-rw-r--r--source/ap/vim/patches/7.3.462191
-rw-r--r--source/ap/vim/patches/7.3.46363
-rw-r--r--source/ap/vim/patches/7.3.46460
-rw-r--r--source/ap/vim/patches/7.3.465398
-rw-r--r--source/ap/vim/patches/7.3.46649
-rw-r--r--source/ap/vim/patches/7.3.46754
-rw-r--r--source/ap/vim/patches/7.3.468144
-rw-r--r--source/ap/vim/patches/7.3.46953
-rw-r--r--source/ap/vim/patches/7.3.47067
-rw-r--r--source/ap/vim/patches/7.3.47192
-rw-r--r--source/ap/vim/patches/7.3.47288
-rw-r--r--source/ap/vim/patches/7.3.47368
-rw-r--r--source/ap/vim/patches/7.3.47462
-rw-r--r--source/ap/vim/patches/7.3.47598
-rw-r--r--source/ap/vim/patches/7.3.47656
-rw-r--r--source/ap/vim/patches/7.3.47752
-rw-r--r--source/ap/vim/patches/7.3.47846
-rw-r--r--source/ap/vim/patches/7.3.479134
-rw-r--r--source/ap/vim/patches/7.3.480237
-rw-r--r--source/ap/vim/patches/7.3.48165
-rw-r--r--source/ap/vim/patches/7.3.48257
-rw-r--r--source/ap/vim/patches/7.3.48397
-rw-r--r--source/ap/vim/patches/7.3.48462
-rw-r--r--source/ap/vim/patches/7.3.48552
-rw-r--r--source/ap/vim/patches/7.3.48658
-rw-r--r--source/ap/vim/patches/7.3.487572
-rw-r--r--source/ap/vim/patches/7.3.48852
-rw-r--r--source/ap/vim/patches/7.3.48989
-rw-r--r--source/ap/vim/patches/7.3.4902517
-rw-r--r--source/ap/vim/patches/7.3.491235
-rw-r--r--source/ap/vim/patches/7.3.492718
-rw-r--r--source/ap/vim/patches/7.3.49354
-rw-r--r--source/ap/vim/patches/7.3.494186
-rw-r--r--source/ap/vim/patches/7.3.495124
-rw-r--r--source/ap/vim/patches/7.3.49669
-rw-r--r--source/ap/vim/patches/7.3.49750
-rw-r--r--source/ap/vim/patches/7.3.49863
-rw-r--r--source/ap/vim/patches/7.3.49984
-rw-r--r--source/ap/vim/patches/7.3.50046
-rw-r--r--source/ap/vim/patches/7.3.50163
-rw-r--r--source/ap/vim/patches/7.3.50267
-rw-r--r--source/ap/vim/patches/7.3.50351
-rw-r--r--source/ap/vim/patches/7.3.50487
-rw-r--r--source/ap/vim/patches/7.3.505116
-rw-r--r--source/ap/vim/patches/7.3.506100
-rw-r--r--source/ap/vim/patches/7.3.507149
-rw-r--r--source/ap/vim/patches/7.3.50885
-rw-r--r--source/ap/vim/patches/7.3.509304
-rw-r--r--source/ap/vim/patches/7.3.51053
-rw-r--r--source/ap/vim/patches/7.3.51149
-rw-r--r--source/ap/vim/patches/7.3.51270
-rw-r--r--source/ap/vim/patches/7.3.513129
-rw-r--r--source/ap/vim/patches/7.3.514232
-rw-r--r--source/ap/vim/patches/7.3.51568
-rw-r--r--source/ap/vim/patches/7.3.51694
-rw-r--r--source/ap/vim/patches/7.3.51760
-rw-r--r--source/ap/vim/patches/7.3.51857
-rw-r--r--source/ap/vim/patches/7.3.51964
-rw-r--r--source/ap/vim/patches/7.3.520140
-rw-r--r--source/ap/vim/patches/7.3.521129
-rw-r--r--source/ap/vim/patches/7.3.52256
-rw-r--r--source/ap/vim/patches/7.3.523103
-rw-r--r--source/ap/vim/patches/7.3.52446
-rw-r--r--source/ap/vim/patches/7.3.52555
-rw-r--r--source/ap/vim/patches/7.3.52659
-rw-r--r--source/ap/vim/patches/7.3.52759
-rw-r--r--source/ap/vim/patches/7.3.528171
-rw-r--r--source/ap/vim/patches/7.3.52981
-rw-r--r--source/ap/vim/patches/7.3.53050
-rw-r--r--source/ap/vim/patches/7.3.53152
-rw-r--r--source/ap/vim/patches/7.3.53253
-rw-r--r--source/ap/vim/patches/7.3.53346
-rw-r--r--source/ap/vim/patches/7.3.534101
-rw-r--r--source/ap/vim/patches/7.3.535356
-rw-r--r--source/ap/vim/patches/7.3.53673
-rw-r--r--source/ap/vim/patches/7.3.53747
-rw-r--r--source/ap/vim/patches/7.3.538321
-rw-r--r--source/ap/vim/patches/7.3.53951
-rw-r--r--source/ap/vim/patches/7.3.54055
-rw-r--r--source/ap/vim/patches/7.3.5411090
-rw-r--r--source/ap/vim/patches/7.3.54273
-rw-r--r--source/ap/vim/patches/7.3.54355
-rw-r--r--source/ap/vim/patches/7.3.54481
-rw-r--r--source/ap/vim/patches/7.3.545359
-rw-r--r--source/ap/vim/patches/7.3.54654
-rw-r--r--source/ap/vim/patches/7.3.54752
-rw-r--r--source/ap/vim/patches/7.3.54853
-rw-r--r--source/ap/vim/patches/7.3.549125
-rw-r--r--source/ap/vim/patches/7.3.550160
-rw-r--r--source/ap/vim/patches/7.3.551494
-rw-r--r--source/ap/vim/patches/7.3.552582
-rw-r--r--source/ap/vim/patches/7.3.55385
-rw-r--r--source/ap/vim/patches/7.3.55452
-rw-r--r--source/ap/vim/patches/7.3.555232
-rw-r--r--source/ap/vim/patches/7.3.55670
-rw-r--r--source/ap/vim/patches/7.3.55799
-rw-r--r--source/ap/vim/patches/7.3.55890
-rw-r--r--source/ap/vim/patches/7.3.559131
-rw-r--r--source/ap/vim/patches/7.3.56049
-rw-r--r--source/ap/vim/patches/7.3.56152
-rw-r--r--source/ap/vim/patches/7.3.56263
-rw-r--r--source/ap/vim/patches/7.3.56397
-rw-r--r--source/ap/vim/patches/7.3.56453
-rw-r--r--source/ap/vim/patches/7.3.56552
-rw-r--r--source/ap/vim/patches/7.3.56683
-rw-r--r--source/ap/vim/patches/7.3.56756
-rw-r--r--source/ap/vim/patches/7.3.568138
-rw-r--r--source/ap/vim/patches/7.3.5694762
-rw-r--r--source/ap/vim/patches/7.3.570145
-rw-r--r--source/ap/vim/patches/7.3.571117
-rw-r--r--source/ap/vim/patches/7.3.57259
-rw-r--r--source/ap/vim/patches/7.3.57352
-rw-r--r--source/ap/vim/patches/7.3.57488
-rw-r--r--source/ap/vim/patches/7.3.57560
-rw-r--r--source/ap/vim/patches/7.3.576255
-rw-r--r--source/ap/vim/patches/7.3.577273
-rw-r--r--source/ap/vim/patches/7.3.57880
-rw-r--r--source/ap/vim/patches/7.3.579232
-rw-r--r--source/ap/vim/patches/7.3.58052
-rw-r--r--source/ap/vim/patches/7.3.581117
-rw-r--r--source/ap/vim/patches/7.3.58261
-rw-r--r--source/ap/vim/patches/7.3.58379
-rw-r--r--source/ap/vim/patches/7.3.584134
-rw-r--r--source/ap/vim/patches/7.3.58556
-rw-r--r--source/ap/vim/patches/7.3.586103
-rw-r--r--source/ap/vim/patches/7.3.58784
-rw-r--r--source/ap/vim/patches/7.3.58885
-rw-r--r--source/ap/vim/patches/7.3.58969
-rw-r--r--source/ap/vim/patches/7.3.59061
-rw-r--r--source/ap/vim/patches/7.3.591208
-rw-r--r--source/ap/vim/patches/7.3.592126
-rw-r--r--source/ap/vim/patches/7.3.59381
-rw-r--r--source/ap/vim/patches/7.3.594171
-rw-r--r--source/ap/vim/patches/7.3.595154
-rw-r--r--source/ap/vim/patches/7.3.596171
-rw-r--r--source/ap/vim/patches/7.3.597720
-rw-r--r--source/ap/vim/patches/7.3.59873
-rw-r--r--source/ap/vim/patches/7.3.599107
-rw-r--r--source/ap/vim/patches/7.3.60068
-rw-r--r--source/ap/vim/patches/7.3.60151
-rw-r--r--source/ap/vim/patches/7.3.60255
-rw-r--r--source/ap/vim/patches/7.3.603370
-rw-r--r--source/ap/vim/patches/7.3.60460
-rw-r--r--source/ap/vim/patches/7.3.60586
-rw-r--r--source/ap/vim/patches/7.3.60676
-rw-r--r--source/ap/vim/patches/7.3.60756
-rw-r--r--source/ap/vim/patches/7.3.608119
-rw-r--r--source/ap/vim/patches/7.3.609251
-rw-r--r--source/ap/vim/patches/7.3.610400
-rw-r--r--source/ap/vim/patches/7.3.61158
-rw-r--r--source/ap/vim/patches/7.3.61283
-rw-r--r--source/ap/vim/patches/7.3.613149
-rw-r--r--source/ap/vim/patches/7.3.614176
-rw-r--r--source/ap/vim/patches/7.3.615107
-rw-r--r--source/ap/vim/patches/7.3.61646
-rw-r--r--source/ap/vim/patches/7.3.61765
-rw-r--r--source/ap/vim/patches/7.3.618367
-rw-r--r--source/ap/vim/patches/7.3.61950
-rw-r--r--source/ap/vim/patches/7.3.620163
-rw-r--r--source/ap/vim/patches/7.3.62172
-rw-r--r--source/ap/vim/patches/7.3.62256
-rw-r--r--source/ap/vim/patches/7.3.62392
-rw-r--r--source/ap/vim/patches/7.3.62452
-rw-r--r--source/ap/vim/patches/7.3.625140
-rw-r--r--source/ap/vim/patches/7.3.62649
-rw-r--r--source/ap/vim/patches/7.3.627102
-rw-r--r--source/ap/vim/patches/7.3.62854
-rw-r--r--source/ap/vim/patches/7.3.629437
-rw-r--r--source/ap/vim/patches/7.3.63048
-rw-r--r--source/ap/vim/patches/7.3.631322
-rw-r--r--source/ap/vim/patches/7.3.632537
-rw-r--r--source/ap/vim/patches/7.3.63381
-rw-r--r--source/ap/vim/patches/7.3.63457
-rw-r--r--source/ap/vim/patches/7.3.63550
-rw-r--r--source/ap/vim/patches/7.3.636148
-rw-r--r--source/ap/vim/patches/7.3.63794
-rw-r--r--source/ap/vim/patches/7.3.63855
-rw-r--r--source/ap/vim/patches/7.3.639846
-rw-r--r--source/ap/vim/patches/7.3.640bin0 -> 455297 bytes
-rw-r--r--source/ap/vim/patches/7.3.64168
-rw-r--r--source/ap/vim/patches/7.3.64255
-rw-r--r--source/ap/vim/patches/7.3.64373
-rw-r--r--source/ap/vim/patches/7.3.64472
-rw-r--r--source/ap/vim/patches/7.3.645118
-rwxr-xr-xsource/ap/zsh/zsh.SlackBuild5
-rw-r--r--source/ap/zsh/zsh.regex.oh.bah.diff12
541 files changed, 88593 insertions, 419 deletions
diff --git a/source/ap/alsa-utils/alsa-utils.SlackBuild b/source/ap/alsa-utils/alsa-utils.SlackBuild
index 77664487b..3e642d084 100755
--- a/source/ap/alsa-utils/alsa-utils.SlackBuild
+++ b/source/ap/alsa-utils/alsa-utils.SlackBuild
@@ -63,7 +63,7 @@ cd $TMP
rm -rf alsa-utils-$VERSION
tar xvf $CWD/alsa-utils-$VERSION.tar.?z* || exit 1
cd alsa-utils-$VERSION || exit 1
-zcat $CWD/alsa-utils.alsaconf.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit
+#zcat $CWD/alsa-utils.alsaconf.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit
chown -R root:root .
find . \
@@ -78,6 +78,7 @@ CFLAGS="$SLKCFLAGS" \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--mandir=/usr/man \
--sysconfdir=/etc \
+ --disable-alsaconf \
--build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
diff --git a/source/ap/cdrdao/cdrdao-1.2.3-stat.patch b/source/ap/cdrdao/cdrdao-1.2.3-stat.patch
new file mode 100644
index 000000000..5a68e7130
--- /dev/null
+++ b/source/ap/cdrdao/cdrdao-1.2.3-stat.patch
@@ -0,0 +1,13 @@
+diff -up cdrdao-1.2.3/dao/ScsiIf-linux.cc.stat cdrdao-1.2.3/dao/ScsiIf-linux.cc
+--- cdrdao-1.2.3/dao/ScsiIf-linux.cc.stat 2010-01-20 20:11:36.000000000 +0100
++++ cdrdao-1.2.3/dao/ScsiIf-linux.cc 2010-01-20 20:14:07.000000000 +0100
+@@ -19,6 +19,9 @@
+
+ #include <config.h>
+
++#include <sys/types.h>
++#include <sys/stat.h>
++
+ #include <stdio.h>
+ #include <fcntl.h>
+ #include <unistd.h>
diff --git a/source/ap/cdrdao/cdrdao.SlackBuild b/source/ap/cdrdao/cdrdao.SlackBuild
index 95216d513..fe3c5b7d1 100755
--- a/source/ap/cdrdao/cdrdao.SlackBuild
+++ b/source/ap/cdrdao/cdrdao.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010, 2012 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,7 +22,7 @@
VERSION=1.2.3
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@@ -61,6 +61,9 @@ cd $TMP
rm -rf cdrdao-$VERSION
tar xvf $CWD/cdrdao-$VERSION.tar.?z* || exit 1
cd cdrdao-$VERSION
+
+zcat $CWD/cdrdao-1.2.3-stat.patch.gz | patch -p1 --verbose || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
diff --git a/source/ap/diffutils/diffutils.SlackBuild b/source/ap/diffutils/diffutils.SlackBuild
index f338b71da..2287abb2c 100755
--- a/source/ap/diffutils/diffutils.SlackBuild
+++ b/source/ap/diffutils/diffutils.SlackBuild
@@ -22,7 +22,7 @@
PKGNAM=diffutils
-VERSION=3.0
+VERSION=${VERSION:-$(echo diffutils-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
diff --git a/source/ap/dmapi/slack-desc b/source/ap/dmapi/slack-desc
index c5acf4919..9cbfcfa91 100644
--- a/source/ap/dmapi/slack-desc
+++ b/source/ap/dmapi/slack-desc
@@ -10,7 +10,7 @@ dmapi: dmapi (Data Management API library)
dmapi:
dmapi: A library required to use the Data Management API (DMAPI).
dmapi: This interface is defined in the X/Open document 'Systems Management:
-dmapi: Data Storage Managment (XDSM) API' dated February 1997.
+dmapi: Data Storage Management (XDSM) API' dated February 1997.
dmapi:
dmapi: The DMAPI library is used by the xfsdump utility.
dmapi:
diff --git a/source/ap/ghostscript/ghostscript.SlackBuild b/source/ap/ghostscript/ghostscript.SlackBuild
index ff9fac9ef..4afef9648 100755
--- a/source/ap/ghostscript/ghostscript.SlackBuild
+++ b/source/ap/ghostscript/ghostscript.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,7 +23,7 @@
PKGNAM=ghostscript
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@@ -60,10 +60,7 @@ rm -rf ${PKGNAM}-${VERSION}
tar xvf $CWD/${PKGNAM}-$VERSION.tar.xz || exit 1
cd ${PKGNAM}-$VERSION
-# Bugfix:
-zcat $CWD/ghostscript.rev11948.diff.gz | patch -p1 --verbose || exit 1
-
-## Regenerate ./configure:
+## Regenerate ./configure (if patched):
#sh autogen.sh
# Make sure ownerships and permissions are sane:
@@ -104,6 +101,8 @@ CFLAGS="$SLKCFLAGS" \
--with-ijs \
--disable-compile-inits \
--enable-dynamic \
+ --enable-cups \
+ --with-install-cups \
--enable-cairo=no \
--program-prefix= \
--program-suffix= \
@@ -124,6 +123,13 @@ if [ -r $PKG/usr/share/ghostscript/${VERSION}/Resource/Init/cidfmap ]; then
zcat $CWD/cidfmap.gz > $PKG/usr/share/ghostscript/${VERSION}/Resource/Init/cidfmap.new
fi
+# Many programs expect to find this filter with the old name:
+( cd $PKG/usr/lib${LIBDIRSUFFIX}/cups/filter
+ if [ ! -e pstoraster ]; then
+ ln -sf gstoraster pstoraster
+ fi
+)
+
# Strip binaries:
( cd $PKG
find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
@@ -164,6 +170,17 @@ mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
ln -sf /usr/share/ghostscript/$VERSION/doc doc
)
+# Version 9.02 fails to install History9.htm, but also the full unabridged
+# history of Ghostscript is not required here. See the source for that.
+( cd doc
+ cp -a \
+ History*.htm \
+ $PKG/usr/share/ghostscript/$VERSION/doc
+ rm -f $PKG/usr/share/ghostscript/$VERSION/doc/History{1,2,3,4,5,6,7,8}.htm
+ chown root:root $PKG/usr/share/ghostscript/$VERSION/doc/History*htm
+ chmod 644 $PKG/usr/share/ghostscript/$VERSION/doc/History*htm
+)
+
cd $TMP
cp -a ${PKGNAM}-${VERSION}/examples/cjk $PKG/usr/share/ghostscript/${VERSION}/examples/
diff --git a/source/ap/ghostscript/ghostscript.rev11948.diff b/source/ap/ghostscript/ghostscript.rev11948.diff
deleted file mode 100644
index cc45c1549..000000000
--- a/source/ap/ghostscript/ghostscript.rev11948.diff
+++ /dev/null
@@ -1,13 +0,0 @@
---- ./base/gximag3x.c.orig 2010-08-10 11:20:19.000000000 -0500
-+++ ./base/gximag3x.c 2010-12-28 13:24:54.000000000 -0600
-@@ -241,7 +241,9 @@
- const gs_image3x_mask_t *pixm =
- (i == 0 ? &pim->Opacity : &pim->Shape);
-
-- *(gs_data_image_t *)&mask[i].image = pixm->MaskDict;
-+ /* Use memcpy because direct assignment breaks ANSI aliasing */
-+ /* rules and causes SEGV with gcc 4.5.1 */
-+ memcpy(&mask[i].image, &pixm->MaskDict, sizeof(pixm->MaskDict));
- mask[i].image.type = type1;
- mask[i].image.BitsPerComponent = pixm->MaskDict.BitsPerComponent;
- }
diff --git a/source/ap/ntfsprogs/ntfsprogs.SlackBuild b/source/ap/htop/htop.SlackBuild
index 5c83bd217..b27481e9f 100755
--- a/source/ap/ntfsprogs/ntfsprogs.SlackBuild
+++ b/source/ap/htop/htop.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2011 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,9 +20,10 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PKGNAM=ntfsprogs
-VERSION=${VERSION:-2.0.0}
-BUILD=${BUILD:-2}
+
+PKGNAM=htop
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@@ -52,17 +53,15 @@ fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-${PKGNAM}
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
-cd ${PKGNAM}-$VERSION || exit 1
-
-# Make sure ownerships and permissions are sane:
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -70,29 +69,19 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# Configure:
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --bindir=/bin \
--sysconfdir=/etc \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
--mandir=/usr/man \
--docdir=/usr/doc/$PKGNAM-$VERSION \
- --disable-gnome-vfs \
- --disable-ntfsmount \
--disable-static \
--build=$ARCH-slackware-linux
-# Build and install:
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
-mkdir -p $PKG/lib${LIBDIRSUFFIX}
-mv $PKG/usr/lib${LIBDIRSUFFIX}/libntfs.so.* $PKG/lib${LIBDIRSUFFIX}
-( cd $PKG/usr/lib${LIBDIRSUFFIX} ; ln -sf ../../lib${LIBDIRSUFFIX}/libntfs* . )
-
-# Strip binaries:
find $PKG | xargs file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
@@ -105,30 +94,29 @@ if [ -d $PKG/usr/man ]; then
ln -s $( readlink $eachpage ).gz $eachpage.gz
rm $eachpage
done
- gzip -9 *.*
+ gzip -9 *.?
)
done
)
fi
-# Compress info files, if any:
-if [ -d $PKG/usr/info ]; then
- ( cd $PKG/usr/info
- rm -f dir
- gzip -9 *
- )
-fi
-
-# Add a documentation directory:
-mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+# Install documentation:
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
- AUTHORS COPYING* CREDITS INSTALL NEWS README TODO* doc \
- $PKG/usr/doc/${PKGNAM}-$VERSION
-rm -f $PKG/usr/doc/${PKGNAM}-$VERSION/doc/Makefile*
+ AUTHORS COPYING* NEWS README* TODO \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/ap/htop/slack-desc b/source/ap/htop/slack-desc
new file mode 100644
index 000000000..039b71950
--- /dev/null
+++ b/source/ap/htop/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+htop: htop (ncurses-based interactive process viewer)
+htop:
+htop: htop is a free (GPL) ncurses-based process viewer that is similar to
+htop: the well-known "top" program, but allows to scroll the list vertically
+htop: and horizontally to see all processes and their full command lines.
+htop: Tasks related to processes (killing, renicing) can be done without
+htop: entering their PIDs.
+htop:
+htop: htop is developed by Hisham Muhammad.
+htop: Homepage: http://htop.sf.net
+htop:
diff --git a/source/ap/linuxdoc-tools/ChangeLog.txt b/source/ap/linuxdoc-tools/ChangeLog.txt
index 16d8783f2..0c971b356 100644
--- a/source/ap/linuxdoc-tools/ChangeLog.txt
+++ b/source/ap/linuxdoc-tools/ChangeLog.txt
@@ -1,3 +1,28 @@
+Fri Jun 29 17:34:25 BST 2012
+ Stuart Winter <mozes@slackware.com>
+ linuxdoc-tools 0.9.67, build 2.
+ * Made a compatibility symlink between
+ /usr/share/xml/docbook/stylesheet/docbook-xsl -> /usr/share/xml/docbook/xsl-stylesheets-<ver>
+ Thanks to Patrick Verner for the suggestion.
+
+Mon May 28 21:40:41 BST 2012
+ Stuart Winter <mozes@slackware.com>
+ linuxdoc-tools 0.9.67, build 1
+ * Removed the files that were overlapping with the 'Python' (and any other) package.
+ * Upgraded to linuxdoc-tools 0.9.67
+ * Upgraded to gnome-doc-utils 0.20.10
+ * Upgraded to xmlto-0.0.25
+ * Upgraded to gtk-doc-1.18
+ * Upgraded to AsciiDoc-8.6.7
+ * Upgraded to DocBook XSL Stylesheets 1.76.1
+ * Fix OpenJade FTBFS with Perl 5.16 installed: Copy the perl4 corelib 'getopts.pl'
+ into OpenJade's build directory as a build-time work-around.
+
+Sun May 15 03:42:16 UTC 2011
+ Patrick Volkerding <volkerdi@slackware.com>
+ linuxdoc-tools 0.9.66, build 9
+ Rebuild for perl-5.14.0.
+
Mon Mar 21 17:39:48 UTC 2011
Patrick Volkerding <volkerdi@slackware.com>
linuxdoc-tools 0.9.66, build 8
diff --git a/source/ap/linuxdoc-tools/arm/build b/source/ap/linuxdoc-tools/arm/build
index eb4f18c83..f5a418d96 100755
--- a/source/ap/linuxdoc-tools/arm/build
+++ b/source/ap/linuxdoc-tools/arm/build
@@ -9,9 +9,9 @@ source /usr/share/slackdev/buildkit.sh
# Package metadata:
export PKGNAM=linuxdoc-tools
-export VERSION=${VERSION:-0.9.66}
+export VERSION=${VERSION:-0.9.67}
export PKGARCH=${PKGARCH:-arm}
-export BUILD=${BUILD:-4}
+export BUILD=${BUILD:-2}
export PKGSERIES=${PKGSERIES:-ap}
export SLACKPACKAGE=$PKGNAM-$VERSION-$PKGARCH-$BUILD.tgz
export PKGEXT=${PKGEXT:-tgz}
diff --git a/source/ap/linuxdoc-tools/linuxdoc-tools.build b/source/ap/linuxdoc-tools/linuxdoc-tools.build
index fe3506cc9..27f3a53ca 100755
--- a/source/ap/linuxdoc-tools/linuxdoc-tools.build
+++ b/source/ap/linuxdoc-tools/linuxdoc-tools.build
@@ -20,21 +20,21 @@ LINUXDOCTOOLSVER=$PKGVERSION
SGMLDTD3VER=3.1
SGMLDTD4VER=4.5
XMLDTDVER=4.5
-XSLSTYLESHEETSVER=1.75.2
+XSLSTYLESHEETSVER=1.76.1
DSSSLSTYLESHEETSVER=1.79
SGMLCOMMONVER=0.6.3
OPENJADEVER=1.3.3-pre1
OPENSPVER=1.5.2
-GNOMEDOCUTILSVER=0.20.4
-GTKDOCVER=1.15
+GNOMEDOCUTILSVER=0.20.10
+GTKDOCVER=1.18
SGMLSPLVER=1.03ii
-XMLTOVER=0.0.23
-ASCIIDOCVER=8.6.2
+XMLTOVER=0.0.25
+ASCIIDOCVER=8.6.7
DOCBOOKUTILSVER=0.6.14
# Determine the general CFLAGS for the known architectures:
case $ARCH in
- arm) export SLKCFLAGS="-O2 -march=armv4t"
+ arm) export SLKCFLAGS="-O2 -march=armv5te"
export LIBDIRSUFFIX=""
export HOSTTARGET="-gnueabi"
;;
@@ -71,7 +71,7 @@ find . \
-exec chmod 644 {} \;
# Revert a change that breaks processing the git documentation:
-xz -dc $CWD/sources/asciidoc.asciidoc7compatible.revertbrokenchange.diff.xz | patch --verbose -p1 || exit 1
+# xz -dc $CWD/sources/asciidoc.asciidoc7compatible.revertbrokenchange.diff.xz | patch --verbose -p1 || exit 1
# Configure:
./configure \
@@ -356,6 +356,15 @@ find . \
# Apply patches:
sed -i "s/iostream.h/iostream/g" style/MultiLineInlineNote.cxx
+# GCC 4.6 patch:
+xz -dc $CWD/sources/openjade-1.3.2-gcc46.patch.xz | patch --verbose -p1 || exit 1
+
+# Install the old Perl 4 'getopts' function. This has been deprecated in Perl 5.16
+# and since it seems that OpenJade isn't being actively released by upstream, we'll
+# work around by supplying it to OpenJade directly. It's only a build-time fix anyway
+# so it's ok to have a dirty work-around:
+xz -dc $CWD/sources/openjade-1.3-getopts.pl.xz > getopts.pl
+
# Configure without optimisation.
# OpenSP & OpenJade are sensitive to optimisations and can result
# in segfaults with anything other than O2 - particularly on the ARM
@@ -374,8 +383,8 @@ sed -i "s/iostream.h/iostream/g" style/MultiLineInlineNote.cxx
--datadir=/usr/share/sgml/openjade-$OPENJADEVER \
|| exit 1
-# Build:
-make || exit 1
+# Build (setting the perl library to be the PWD so it finds the old 'getopts.pl'):
+make PERL5LIB=$PWD || exit 1
# Install:
mkdir -p /etc/sgml
@@ -689,6 +698,7 @@ find . \
# Apply patches:
for i in \
+ docbook-xsl-mandir.patch \
docbook-xsl-list-item-body.patch \
docbook-xsl-marginleft.patch \
docbook-xsl-newmethods.patch \
@@ -704,6 +714,12 @@ cp -fav \
htmlhelp images javahelp lib manpages params profiling \
slides template tools website wordml xhtml \
/usr/share/xml/docbook/xsl-stylesheets-$XSLSTYLESHEETSVER
+# Some Linux distributions have this here, so we install a compatibility symlink:
+# (this convoluted way of doing it is for makepkg's benefit)
+mkdir -vpm755 /usr/share/xml/docbook/stylesheet
+( cd /usr/share/xml/docbook/stylesheet
+ rm -fv docbook-xsl
+ ln -vfs ../xsl-stylesheets-$XSLSTYLESHEETSVER docbook-xsl )
# Create config files:
if [ ! -d /etc/xml ]; then install -v -m755 -d /etc/xml; fi
@@ -742,9 +758,9 @@ cp -fav doc/* README* RELEASE-NOTES* NEWS* \
# Extract source:
cd $TMP
mkdir xmlto && cd xmlto
-#tar xvf $CWD/sources/xmlto-$XMLTOVER.tar.*z*
-rpm2cpio $CWD/sources/xmlto-${XMLTOVER}*.src.rpm | cpio -div || exit 1
-tar xvvf xmlto-$XMLTOVER.tar.*z*
+tar xvf $CWD/sources/xmlto-$XMLTOVER.tar.*z*
+#rpm2cpio $CWD/sources/xmlto-${XMLTOVER}*.src.rpm | cpio -div || exit 1
+#tar xvvf xmlto-$XMLTOVER.tar.*z*
cd xmlto-$XMLTOVER || exit 1
chown -R root:root .
find . \
@@ -753,9 +769,6 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# Apply patches:
-patch --verbose -p1 < ../xmlto-0.0.23-Lchapterpassivetex.patch || exit 1
-
# Configure:
./configure \
--prefix=/usr \
@@ -942,13 +955,9 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# Apply patch to fix problem with vim:
-xz -dc $CWD/sources/gtk-doc.patch.xz | patch --verbose -p1 || exit 1
-
# Configure:
./configure \
--prefix=/usr \
- --enable-public-id \
--disable-scrollkeeper \
|| exit 1
diff --git a/source/ap/linuxdoc-tools/sources/asciidoc.asciidoc7compatible.revertbrokenchange.diff b/source/ap/linuxdoc-tools/sources/asciidoc.asciidoc7compatible.revertbrokenchange.diff
deleted file mode 100644
index 2bdc7de4d..000000000
--- a/source/ap/linuxdoc-tools/sources/asciidoc.asciidoc7compatible.revertbrokenchange.diff
+++ /dev/null
@@ -1,80 +0,0 @@
---- a/asciidoc.py 2010-10-17 14:01:35.000000000 +0800
-+++ b/asciidoc.py 2010-10-17 14:11:07.000000000 +0800
-@@ -4260,10 +4260,12 @@
- self.include1 = {} # Holds include1::[] files for {include1:}.
- self.dumping = False # True if asciidoc -c option specified.
-
-- def load_file(self,fname,dir=None):
-+ def load_file(self, fname, dir=None, include=[]):
- """
- Loads sections dictionary with sections from file fname.
- Existing sections are overlaid.
-+ The 'include' list contains the section names to be loaded,
-+ if 'inlude' is not specified all sections are loaded.
- Return False if no file was found in any of the locations.
- """
- if dir:
-@@ -4317,9 +4319,14 @@
- else:
- sections[section] = contents
- rdr.close()
-+ if include:
-+ for s in set(sections) - set(include):
-+ del sections[s]
- attrs = {}
- self.load_sections(sections,attrs)
-- self.loaded.append(os.path.realpath(fname))
-+ if not include:
-+ # If all sections are loaded mark this file as loaded.
-+ self.loaded.append(os.path.realpath(fname))
- document.update_attributes(attrs) # So they are available immediately.
- return True
-
-@@ -5314,13 +5321,17 @@
- if o == '-c': config.dumping = True
- if o == '-s': config.header_footer = False
- if o == '-v': config.verbose = True
-- # Check the infile exists.
-- if infile != '<stdin>' and not os.path.isfile(infile):
-- raise EAsciiDoc,'input file %s missing' % infile
-- document.infile = infile
- # Load asciidoc.conf files.
- if not config.load_from_dirs('asciidoc.conf'):
- raise EAsciiDoc,'configuration file asciidoc.conf missing'
-+ # Check the infile exists.
-+ if infile != '<stdin>':
-+ if not os.path.isfile(infile):
-+ raise EAsciiDoc,'input file %s missing' % infile
-+ indir = os.path.dirname(infile)
-+ config.load_file('asciidoc.conf', indir,
-+ ['attributes','titles','specialchars'])
-+ document.infile = infile
- AttributeList.initialize()
- # Open input file and parse document header.
- reader.tabsize = config.tabsize
-@@ -5343,10 +5354,9 @@
- document.load_lang()
- # Load local conf files (conf files in the input file directory).
- if infile != '<stdin>':
-- d =os.path.dirname(infile)
-- config.load_from_dirs('asciidoc.conf', [d])
-- config.load_backend([d])
-- config.load_filters([d])
-+ config.load_file('asciidoc.conf', indir)
-+ config.load_backend([indir])
-+ config.load_filters([indir])
- # Load document specific configuration files.
- f = os.path.splitext(infile)[0]
- config.load_file(f + '.conf')
---- a/doc/asciidoc.txt 2010-10-17 14:11:34.000000000 +0800
-+++ b/doc/asciidoc.txt 2010-10-17 14:13:21.000000000 +0800
-@@ -3632,6 +3632,8 @@
- the following order:
-
- - `asciidoc.conf` from locations 1, 2, 3.
-+- 'attributes', 'titles' and 'specialcharacters' sections from the
-+ `asciidoc.conf` in location 4.
- - The document header is parsed at this point.
- - `<backend>.conf` and `<backend>-<doctype>.conf` from locations 1,
- 2,3.
-
diff --git a/source/ap/linuxdoc-tools/sources/gtk-doc.patch b/source/ap/linuxdoc-tools/sources/gtk-doc.patch
deleted file mode 100644
index bf32d5574..000000000
--- a/source/ap/linuxdoc-tools/sources/gtk-doc.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 2bffebcf9c125f5610b8fb660d42c3c5b9dfd4f0 Mon Sep 17 00:00:00 2001
-From: Stefan Kost <ensonic@users.sf.net>
-Date: Thu, 19 Aug 2010 14:45:54 +0000
-Subject: fixxref: tweak the vim invocation
-
-Use specific output-filename to ensure we get what we'll late use. Use "-u NONE"
-instead of -u /dev/null.
-Fixes #627223
----
-diff --git a/gtkdoc-fixxref.in b/gtkdoc-fixxref.in
-index 33a31b8..9f53852 100755
---- a/gtkdoc-fixxref.in
-+++ b/gtkdoc-fixxref.in
-@@ -464,7 +464,7 @@ sub HighlightSourceVim {
- close (NEWFILE);
-
- # format source
-- system "echo 'let html_number_lines=0|let html_use_css=1|let use_xhtml=1|syn on|e $temp_source_file|run! syntax/2html.vim|wa!|qa!' | @HIGHLIGHT@ -n -e -u /dev/null -T xterm >/dev/null";
-+ system "echo 'let html_number_lines=0|let html_use_css=1|let use_xhtml=1|syn on|e $temp_source_file|run! syntax/2html.vim|w! $temp_source_file.html|qa!' | @HIGHLIGHT@ -n -e -u NONE -T xterm >/dev/null";
-
- my $highlighted_source;
- {
---
-cgit v0.8.3.1
-
diff --git a/source/ap/linuxdoc-tools/sources/openjade-1.3-getopts.pl b/source/ap/linuxdoc-tools/sources/openjade-1.3-getopts.pl
new file mode 100644
index 000000000..5b18fe009
--- /dev/null
+++ b/source/ap/linuxdoc-tools/sources/openjade-1.3-getopts.pl
@@ -0,0 +1,65 @@
+;# getopts.pl - a better getopt.pl
+#
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+# Suggested alternatives: Getopt::Long or Getopt::Std
+#
+;# Usage:
+;# do Getopts('a:bc'); # -a takes arg. -b & -c not. Sets opt_* as a
+;# # side effect.
+
+sub Getopts {
+ local($argumentative) = @_;
+ local(@args,$_,$first,$rest);
+ local($errs) = 0;
+
+ @args = split( / */, $argumentative );
+ while(@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) {
+ ($first,$rest) = ($1,$2);
+ $pos = index($argumentative,$first);
+ if($pos >= 0) {
+ if($args[$pos+1] eq ':') {
+ shift(@ARGV);
+ if($rest eq '') {
+ ++$errs unless(@ARGV);
+ $rest = shift(@ARGV);
+ }
+ eval "
+ push(\@opt_$first, \$rest);
+ if (!defined \$opt_$first or \$opt_$first eq '') {
+ \$opt_$first = \$rest;
+ }
+ else {
+ \$opt_$first .= ' ' . \$rest;
+ }
+ ";
+ }
+ else {
+ eval "\$opt_$first = 1";
+ if($rest eq '') {
+ shift(@ARGV);
+ }
+ else {
+ $ARGV[0] = "-$rest";
+ }
+ }
+ }
+ else {
+ print STDERR "Unknown option: $first\n";
+ ++$errs;
+ if($rest ne '') {
+ $ARGV[0] = "-$rest";
+ }
+ else {
+ shift(@ARGV);
+ }
+ }
+ }
+ $errs == 0;
+}
+
+1;
diff --git a/source/ap/linuxdoc-tools/sources/openjade-1.3.2-gcc46.patch b/source/ap/linuxdoc-tools/sources/openjade-1.3.2-gcc46.patch
new file mode 100644
index 000000000..962ac19ff
--- /dev/null
+++ b/source/ap/linuxdoc-tools/sources/openjade-1.3.2-gcc46.patch
@@ -0,0 +1,82 @@
+If a class or struct has no user-defined default constructor, C++ doesn't
+allow you to default construct a const instance of it.
+
+https://bugs.gentoo.org/358021
+http://clang.llvm.org/compatibility.html#default_init_const
+http://gcc.gnu.org/PR44499
+
+
+--- a/jade/TeXFOTBuilder.cxx
++++ b/jade/TeXFOTBuilder.cxx
+@@ -88,6 +88,8 @@ public:
+ value.convertString(nic_.placement);
+ }
+ ExtensionFlowObj *copy() const { return new PageFloatFlowObj(*this); }
++ public:
++ PageFloatFlowObj() {}
+ private:
+ PageFloatNIC nic_;
+ StringC name_;
+@@ -101,6 +103,8 @@ public:
+ fotb.endPageFootnote();
+ }
+ ExtensionFlowObj *copy() const { return new PageFootnoteFlowObj(*this); }
++ public:
++ PageFootnoteFlowObj() {}
+ private:
+ };
+ //////////////////////////////////////////////////////////////////////
+--- a/jade/TransformFOTBuilder.cxx
++++ b/jade/TransformFOTBuilder.cxx
+@@ -41,6 +41,7 @@ public:
+ };
+ class EntityRefFlowObj : public TransformExtensionFlowObj {
+ public:
++ EntityRefFlowObj() {}
+ void atomic(TransformFOTBuilder &fotb, const NodePtr &) const {
+ fotb.entityRef(name_);
+ }
+@@ -56,6 +57,7 @@ public:
+ };
+ class ProcessingInstructionFlowObj : public TransformExtensionFlowObj {
+ public:
++ ProcessingInstructionFlowObj() {}
+ void atomic(TransformFOTBuilder &fotb, const NodePtr &) const {
+ fotb.processingInstruction(data_);
+ }
+@@ -98,6 +100,8 @@ public:
+ }
+ }
+ ExtensionFlowObj *copy() const { return new EmptyElementFlowObj(*this); }
++ public:
++ EmptyElementFlowObj() {}
+ private:
+ ElementNIC nic_;
+ };
+@@ -133,6 +137,8 @@ public:
+ }
+ }
+ ExtensionFlowObj *copy() const { return new ElementFlowObj(*this); }
++ public:
++ ElementFlowObj() {}
+ private:
+ ElementNIC nic_;
+ };
+@@ -150,6 +156,8 @@ public:
+ value.convertString(systemId_);
+ }
+ ExtensionFlowObj *copy() const { return new EntityFlowObj(*this); }
++ public:
++ EntityFlowObj() {}
+ private:
+ StringC systemId_;
+ };
+@@ -174,6 +182,8 @@ public:
+ }
+ }
+ ExtensionFlowObj *copy() const { return new DocumentTypeFlowObj(*this); }
++ public:
++ DocumentTypeFlowObj() {}
+ private:
+ DocumentTypeNIC nic_;
+ };
diff --git a/source/ap/linuxdoc-tools/sources/source.download b/source/ap/linuxdoc-tools/sources/source.download
index 40e05d218..c9608b2b2 100755
--- a/source/ap/linuxdoc-tools/sources/source.download
+++ b/source/ap/linuxdoc-tools/sources/source.download
@@ -7,24 +7,27 @@
# linuxdoc-tools:
# This provides things such as sgml2txt.
-wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/linuxdoc-tools-0.9.66-6.fc14.src.rpm
+wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/rawhide/source/SRPMS/l/linuxdoc-tools-0.9.67-1.fc18.src.rpm
# OpenSP:
# http://openjade.sourceforge.net/download.html
# wget -c http://kent.dl.sourceforge.net/sourceforge/openjade/OpenSP-1.5.2.tar.gz
#
-wget -c http://download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/opensp-1.5.2-12.fc12.src.rpm
-
+wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/rawhide/source/SRPMS/o/opensp-1.5.2-14.fc17.src.rpm
# OpenJade:
# http://openjade.sourceforge.net/
+# We're using a gcc 4.6 patch from Fedora's SRPM:
+# ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/rawhide/source/SRPMS/o/openjade-1.3.2-39.fc17.src.rpm
+# And we're using the old Perl 4 core libraries (as a dirty but effective build time work-around) taken from:
+# http://packages.debian.org/sid/libperl4-corelibs-perl
+# http://ftp.de.debian.org/debian/pool/main/libp/libperl4-corelibs-perl/libperl4-corelibs-perl_0.003.orig.tar.gz
wget -c http://downloads.sourceforge.net/openjade/openjade-1.3.3-pre1.tar.gz
-
# sgmltools-common.
# It's broken and needs patching so we'll use Fedora's.
#wget -c ftp://sources.redhat.com/pub/docbook-tools/new-trials/SOURCES/sgml-common-0.6.3.tgz
-wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/sgml-common-0.6.3-33.fc14.src.rpm
+wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/rawhide/source/SRPMS/s/sgml-common-0.6.3-36.fc17.src.rpm
# DocBook docs:
@@ -34,8 +37,7 @@ wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/
#wget -c http://www.docbook.org/sgml/4.5/docbook-4.5.zip
# We use Debian's source because it's more convenient since they package all versions in one archive:
wget -c http://ftp.de.debian.org/debian/pool/main/d/docbook/docbook_4.5.orig.tar.gz
-
-
+#
# http://www.linuxfromscratch.org/blfs/view/stable/pst/docbook-dsssl.html
# Check versions:
# http://sourceforge.net/projects/docbook/files/
@@ -43,13 +45,13 @@ wget -c ftp://ftp.linux.ee/pub/gentoo/distfiles/distfiles/docbook-dsssl-1.79.tar
wget -c http://switch.dl.sourceforge.net/sourceforge/docbook/docbook-dsssl-doc-1.79.tar.bz2
# Why don't they put the patches into the distributed source...???
#wget -c ftp://sources.redhat.com/pub/docbook-tools/new-trials/SOURCES/docbook-utils-0.6.14.tar.gz
-wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/docbook-utils-0.6.14-24.fc14.src.rpm
-
+wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/rawhide/source/SRPMS/d/docbook-utils-0.6.14-30.fc17.src.rpm
+#
#
wget -c http://www.docbook.org/xml/4.5/docbook-xml-4.5.zip
# https://sourceforge.net/project/showfiles.php?group_id=21935&package_id=16608
-wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/docbook-style-xsl-1.75.2-6.fc14.src.rpm
-
+wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/rawhide/source/SRPMS/d/docbook-style-xsl-1.76.1-5.fc17.src.rpm
+#
# We use the Fedora "docbook-style-xsl" SRPM for this rather than the original source which is why
# these "docbook-xsl*" files aren't in our sources directory.
#wget -c "http://downloads.sourceforge.net/project/docbook/docbook-xsl/1.75.2/docbook-xsl-1.75.2.tar.bz2?use_mirror=freefr"
@@ -61,13 +63,13 @@ wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/
# I guess this mirror is out of date now. It's easier to just look at Fedora's development
# directory anyway :-)
# wget -c http://ftp.acc.umu.se/pub/GNOME/sources/gnome-doc-utils/0.20/gnome-doc-utils-0.20.0.tar.bz2
-wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/gnome-doc-utils-0.20.1-1.fc14.src.rpm
+wget ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/rawhide/source/SRPMS/g/gnome-doc-utils-0.20.10-2.fc18.src.rpm
# gtk-doc:
# When upgrading this, it's worth checking the Fedora SRPM. For version 1.13
# we're carrying a fix for gtk-doc-fixref. Make sure newer versions don't need
# any patches!
-wget -c http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/1.15/gtk-doc-1.15.tar.bz2
+wget -c http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/1.18/gtk-doc-1.18.tar.bz2
# http://git.gnome.org/browse/gtk-doc/commit/?id=2bffebcf9c125f5610b8fb660d42c3c5b9dfd4f0
# sgmlspl
@@ -76,14 +78,12 @@ wget -c http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/1.15/gtk-doc-1.15.tar.bz2
wget -c http://ftp.debian.org/debian/pool/main/libs/libsgmls-perl/libsgmls-perl_1.03ii.orig.tar.gz
wget -c http://ftp.de.debian.org/debian/pool/main/libs/libsgmls-perl/libsgmls-perl_1.03ii-32.diff.gz
-
# xmlto
# https://fedorahosted.org/releases/x/m/xmlto
# wget -c --no-check-certificate https://fedorahosted.org/releases/x/m/xmlto/xmlto-0.0.23.tar.bz2
-# Fedora 14 includes a patch, so we'll take it:
-wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/xmlto-0.0.23-3.fc13.src.rpm
-
+# Fedora includes a patch, so we'll take it:
+wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/rawhide/source/SRPMS/x/xmlto-0.0.25-2.fc17.src.rpm
# AsciiDoc
# http://www.methods.co.nz/asciidoc/
-wget -c "http://sourceforge.net/projects/asciidoc/files/asciidoc/8.6.2/asciidoc-8.6.2.tar.gz/download"
+wget -c "http://sourceforge.net/projects/asciidoc/files/asciidoc/8.6.7/asciidoc-8.6.7.tar.gz/download"
diff --git a/source/ap/linuxdoc-tools/trackbuild.linuxdoc-tools b/source/ap/linuxdoc-tools/trackbuild.linuxdoc-tools
index e6f230020..3ed08998d 100755
--- a/source/ap/linuxdoc-tools/trackbuild.linuxdoc-tools
+++ b/source/ap/linuxdoc-tools/trackbuild.linuxdoc-tools
@@ -31,8 +31,8 @@ if [ -z "$ARCH" ]; then
esac
fi
-export PKGVERSION=0.9.66 # use the version of linuxdoc-tools as the package version.
-BUILD=${BUILD:-8}
+export PKGVERSION=0.9.67 # use the version of linuxdoc-tools as the package version.
+BUILD=${BUILD:-2}
PKGEXT=${PKGEXT:-txz}
export CWD=$PWD
diff --git a/source/ap/lm_sensors/lm_sensors.SlackBuild b/source/ap/lm_sensors/lm_sensors.SlackBuild
index 83785a566..cb1b26ccc 100755
--- a/source/ap/lm_sensors/lm_sensors.SlackBuild
+++ b/source/ap/lm_sensors/lm_sensors.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2008, 2009, 2010, 2012 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,7 +22,7 @@
PKGNAM=lm_sensors
-VERSION=${VERSION:-3.1.2}
+VERSION=${VERSION:-3.3.2}
BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
diff --git a/source/ap/lsscsi/lsscsi.SlackBuild b/source/ap/lsscsi/lsscsi.SlackBuild
index e0ed72fec..3c034b824 100755
--- a/source/ap/lsscsi/lsscsi.SlackBuild
+++ b/source/ap/lsscsi/lsscsi.SlackBuild
@@ -110,9 +110,17 @@ fi
# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
- AUTHORS COPYING CREDITS ChangeLog INSTALL NEWS README \
+ AUTHORS COPYING CREDITS INSTALL NEWS README \
$PKG/usr/doc/${PKGNAM}-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
#zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/ap/lxc/lxc.SlackBuild b/source/ap/lxc/lxc.SlackBuild
index 15df88c68..7b82f89ee 100755
--- a/source/ap/lxc/lxc.SlackBuild
+++ b/source/ap/lxc/lxc.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2011 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2011, 2012 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,7 +23,7 @@
PKGNAM=lxc
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | rev | cut -f 2- -d -)}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
diff --git a/source/ap/man-pages/man-pages.SlackBuild b/source/ap/man-pages/man-pages.SlackBuild
index 8930798bf..85cfc0d27 100755
--- a/source/ap/man-pages/man-pages.SlackBuild
+++ b/source/ap/man-pages/man-pages.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008-2010 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008-2012 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -33,7 +33,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf man-pages-$VERSION
-tar xf $CWD/man-pages-$VERSION.tar.bz2
+tar xf $CWD/man-pages-$VERSION.tar.xz
tar xf $CWD/man-pages-posix-2003-a.tar.bz2
chown -R root:root man-pages-$VERSION man-pages-posix-2003-a
chmod -R a-s,u+rw,go+r-w man-pages-$VERSION man-pages-posix-2003-a
diff --git a/source/ap/mc/mc.SlackBuild b/source/ap/mc/mc.SlackBuild
index 87e929ac2..21d997db6 100755
--- a/source/ap/mc/mc.SlackBuild
+++ b/source/ap/mc/mc.SlackBuild
@@ -22,7 +22,7 @@
VERSION=${VERSION:-$(echo mc-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@@ -56,6 +56,7 @@ cd $TMP
rm -rf mc-$VERSION
tar xvf $CWD/mc-$VERSION.tar.xz || exit 1
cd mc-$VERSION || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -63,8 +64,11 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# Fix tmp path for saving files:
+zcat $CWD/mc.save.file.diff.gz | patch -p1 --verbose || exit 1
+
# Use geeqie instead of gqview as an external image viewer:
-zcat $CWD/mc.ext.in.geeqie.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/mc.image.sh.geeqie.diff.gz | patch -p1 --verbose || exit 1
if [ ! -x ./configure ]; then
./autogen.sh
@@ -106,8 +110,20 @@ cp -a $CWD/profile.d/mc.* $PKG/etc/profile.d
chown root:root $PKG/etc/profile.d/*
chmod 755 $PKG/etc/profile.d/*
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $(find $PKG/usr/man -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
mkdir -p $PKG/usr/doc/mc-$VERSION
cp -a \
diff --git a/source/ap/mc/mc.ext.in.geeqie.diff b/source/ap/mc/mc.ext.in.geeqie.diff
deleted file mode 100644
index 8cdfecca5..000000000
--- a/source/ap/mc/mc.ext.in.geeqie.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./misc/mc.ext.in.orig 2010-11-08 05:46:13.000000000 -0600
-+++ ./misc/mc.ext.in 2010-11-11 14:34:30.000000000 -0600
-@@ -391,7 +391,7 @@
- Include=image
-
- include/image
-- Open=if [ "$DISPLAY" = "" ]; then zgv %f; else (gqview %f &); fi
-+ Open=if [ "$DISPLAY" = "" ]; then zgv %f; else (geeqie %f &); fi
- View=%view{ascii} identify %f
- #View=%view{ascii} asciiview %f
-
diff --git a/source/ap/mc/mc.image.sh.geeqie.diff b/source/ap/mc/mc.image.sh.geeqie.diff
new file mode 100644
index 000000000..413807e92
--- /dev/null
+++ b/source/ap/mc/mc.image.sh.geeqie.diff
@@ -0,0 +1,11 @@
+--- ./misc/ext.d/image.sh.orig 2012-07-18 04:30:23.000000000 -0500
++++ ./misc/ext.d/image.sh 2012-09-08 14:39:11.998159169 -0500
+@@ -36,7 +36,7 @@
+ if [ "$DISPLAY" = "" ]; then
+ zgv "${MC_EXT_FILENAME}"
+ else
+- (gqview "${MC_EXT_FILENAME}" &)
++ (geeqie "${MC_EXT_FILENAME}" &)
+ fi
+ ;;
+ esac
diff --git a/source/ap/mc/mc.save.file.diff b/source/ap/mc/mc.save.file.diff
new file mode 100644
index 000000000..f54748c1b
--- /dev/null
+++ b/source/ap/mc/mc.save.file.diff
@@ -0,0 +1,37 @@
+diff --git a/src/editor/editcmd.c b/src/editor/editcmd.c
+index 2261aaa..536ac7e 100644
+--- a/src/editor/editcmd.c
++++ b/src/editor/editcmd.c
+@@ -222,7 +222,8 @@ edit_save_file (WEdit * edit, const vfs_path_t * filename_vpath)
+ if (savedir == NULL)
+ savedir = g_strdup (".");
+
+- saveprefix = mc_build_filename (savedir, "cooledit", NULL);
++ /* Token-related function never return leading slash, so we need add it manually */
++ saveprefix = mc_build_filename ("/", savedir, "cooledit", NULL);
+ g_free (savedir);
+ fd = mc_mkstemps (&savename_vpath, saveprefix, NULL);
+ g_free (saveprefix);
+@@ -365,13 +366,21 @@ edit_save_file (WEdit * edit, const vfs_path_t * filename_vpath)
+
+ if (this_save_mode == EDIT_DO_BACKUP)
+ {
++ char *tmp_store_filename;
++ vfs_path_element_t *last_vpath_element;
+ vfs_path_t *tmp_vpath;
+ gboolean ok;
+
+ #ifdef HAVE_ASSERT_H
+ assert (option_backup_ext != NULL);
+ #endif
+- tmp_vpath = vfs_path_append_new (real_filename_vpath, option_backup_ext, (char *) NULL);
++ /* add backup extention to the path */
++ tmp_vpath = vfs_path_clone (real_filename_vpath);
++ last_vpath_element = (vfs_path_element_t *) vfs_path_get_by_index (tmp_vpath, -1);
++ tmp_store_filename = last_vpath_element->path;
++ last_vpath_element->path = g_strdup_printf ("%s%s", tmp_store_filename, option_backup_ext);
++ g_free (tmp_store_filename);
++
+ ok = (mc_rename (real_filename_vpath, tmp_vpath) != -1);
+ vfs_path_free (tmp_vpath);
+ if (!ok)
diff --git a/source/ap/moc/moc.SlackBuild b/source/ap/moc/moc.SlackBuild
index 48ae54b90..35f6fc5f8 100755
--- a/source/ap/moc/moc.SlackBuild
+++ b/source/ap/moc/moc.SlackBuild
@@ -23,7 +23,7 @@
PKGNAM=moc
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | rev | cut -f 2- -d -)}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
diff --git a/source/ap/mysql/README.mysql-embedded b/source/ap/mysql/README.mysql-embedded
new file mode 100644
index 000000000..21b519e91
--- /dev/null
+++ b/source/ap/mysql/README.mysql-embedded
@@ -0,0 +1,7 @@
+The mysql-embedded.SlackBuild produces a package containing
+a static libmysqld.a library (and some support files) that
+is required in order to build applications that embed a
+mysql server (such as amarok). If you need to build such
+applications, first you'll need to use this SlackBuild to
+prepare a mysql package that contains embedded support and
+install it on your system.
diff --git a/source/ap/mysql/doinst.sh b/source/ap/mysql/doinst.sh
index 22f77474e..a5d835faf 100644
--- a/source/ap/mysql/doinst.sh
+++ b/source/ap/mysql/doinst.sh
@@ -19,4 +19,5 @@ if [ -e etc/rc.d/rc.mysqld ]; then
fi
config etc/rc.d/rc.mysqld.new
+config etc/mysqlaccess.conf.new
diff --git a/source/ap/mysql/mirror-url b/source/ap/mysql/mirror-url
new file mode 100644
index 000000000..33ff56b03
--- /dev/null
+++ b/source/ap/mysql/mirror-url
@@ -0,0 +1 @@
+http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.25a.tar.gz
diff --git a/source/ap/mysql/mysql-embedded.SlackBuild b/source/ap/mysql/mysql-embedded.SlackBuild
new file mode 100755
index 000000000..f5f178a9b
--- /dev/null
+++ b/source/ap/mysql/mysql-embedded.SlackBuild
@@ -0,0 +1,221 @@
+#!/bin/sh
+
+# Copyright 2008, 2009, 2010, 2012 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Build and install MySQL on Slackware
+# by: David Cantrell <david@slackware.com>
+# Currently maintained by: Patrick Volkerding <volkerdi@slackware.com>
+
+
+VERSION=${VERSION:-$(echo mysql-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-mysql
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf mysql-$VERSION
+tar xvf $CWD/mysql-$VERSION.tar.?z* || exit 1
+cd mysql-$VERSION
+
+if ls $CWD/*.diff.gz 1> /dev/null 2> /dev/null ; then
+ for patch in $CWD/*.diff.gz ; do
+ zcat $patch | patch -p1 --verbose || exit 1
+ done
+fi
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+mkdir build
+cd build
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS -felide-constructors -fno-exceptions -fno-rtti" \
+CXX=gcc \
+cmake \
+ -DBUILD_CONFIG=mysql_release \
+ -DFEATURE_SET="community" \
+ -DINSTALL_LAYOUT="RPM" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DINSTALL_LIBDIR="lib${LIBDIRSUFFIX}" \
+ -DINSTALL_SBINDIR=libexec \
+ -DINSTALL_INCLUDEDIR=include/mysql \
+ -DINSTALL_MYSQLSHAREDIR=share/mysql \
+ -DINSTALL_SQLBENCHDIR= \
+ -DINSTALL_MYSQLTESTDIR=mysql-test \
+ -DINSTALL_INFODIR=info \
+ -DINSTALL_MANDIR=man \
+ -DINSTALL_PLUGINDIR="lib${LIBDIRSUFFIX}/mysql/plugin" \
+ -DINSTALL_SCRIPTDIR=bin \
+ -DINSTALL_SUPPORTFILESDIR=share/mysql \
+ -DINSTALL_MYSQLDATADIR="/var/lib/mysql" \
+ -DMYSQL_DATADIR="/var/lib/mysql" \
+ -DMYSQL_UNIX_ADDR="/var/run/mysql/mysql.sock" \
+ -DWITH_EXTRA_CHARSETS=complex \
+ -DWITH_INNOBASE_STORAGE_ENGINE=1 \
+ -DENABLED_LOCAL_INFILE=ON \
+ -DWITH_EMBEDDED_SERVER=ON \
+ -DWITH_READLINE=ON \
+ -DWITH_SSL=system \
+ -DWITH_ZLIB=system \
+ ..
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+
+# Install sample configuration files:
+mkdir -p $PKG/etc/mysql
+cp support-files/my-*.cnf $PKG/etc/mysql
+
+# Move mysqlaccess.conf to a more proper place
+mv $PKG/usr/bin/mysqlaccess.conf $PKG/etc/mysqlaccess.conf.new
+chmod 644 $PKG/etc/mysqlaccess.conf.new
+
+# Leave build directory:
+cd ..
+
+# install additional headers needed for building external engine plugins:
+mkdir -p $PKG/usr/include/mysql/private/atomic
+
+install -m 644 regex/my_regex.h $PKG/usr/include/mysql/private/
+
+for i in sql include; do
+ for j in $i/*.h; do
+ install -m 644 $j $PKG/usr/include/mysql/private/
+ done
+done
+
+for i in include/atomic/*.h; do
+ install -m 644 $i $PKG/usr/include/mysql/private/atomic/
+done
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Install docs
+mkdir -p $PKG/usr/doc/mysql-$VERSION/Docs
+cp -a \
+ BUILD* COPYING* EXCEPTIONS* INSTALL-SOURCE README* VERSION \
+ $PKG/usr/doc/mysql-$VERSION
+( cd Docs
+ # Seems most of the Docs/* are gone, but we'll leave the cp stuff
+ # in case it returns.
+ cp -a INFO_SRC INSTALL-BINARY *.html *.txt Flags \
+ $PKG/usr/doc/mysql-$VERSION/Docs )
+## Too large to justify since the .html version is right there:
+#rm $PKG/usr/doc/mysql-$VERSION/Docs/manual.txt
+find $PKG/usr/doc/mysql-$VERSION -type f -exec chmod 0644 {} \;
+
+# This is the directory where databases are stored:
+mkdir -p $PKG/var/lib/mysql
+chown mysql.mysql $PKG/var/lib/mysql
+chmod 0750 $PKG/var/lib/mysql
+
+# This is where the socket is stored:
+mkdir -p $PKG/var/run/mysql
+chown mysql.mysql $PKG/var/run/mysql
+chmod 0755 $PKG/var/run/mysql
+
+# Do not package the test suite:
+rm -rf $PKG/usr/mysql-test
+
+# More unpackaged things:
+rm -f $PKG/usr/info/dir
+rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libmysqlclient.a
+rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libmysqlclient_r.*
+( cd $PKG/usr/lib${LIBDIRSUFFIX} ; ln -sf libmysqlclient.so libmysqlclient_r.so )
+
+# Add init script:
+mkdir -p $PKG/etc/rc.d
+# This is intentionally chmod 644.
+zcat $CWD/rc.mysqld.gz > $PKG/etc/rc.d/rc.mysqld.new
+
+# Install script:
+mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Compress info files, if any:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+# Build package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/mysql-$VERSION-$ARCH-${BUILD}_withembedded.txz
diff --git a/source/ap/mysql/mysql-embedded.build b/source/ap/mysql/mysql-embedded.build
deleted file mode 100755
index 004bb30d6..000000000
--- a/source/ap/mysql/mysql-embedded.build
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/sh
-# Build and install MySQL on Slackware
-# by: David Cantrell <david@slackware.com>
-# Currently maintained by: Patrick Volkerding <volkerdi@slackware.com>
-
-VERSION=${VERSION:-$(echo mysql-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-1}
-
-# Automatically determine the architecture we're building on:
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) export ARCH=i486 ;;
- arm*) export ARCH=arm ;;
- # Unless $ARCH is already set, use uname -m for all other archs:
- *) export ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
-PKG=$TMP/package-mysql
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "s390" ]; then
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-rm -rf $PKG
-mkdir -p $TMP $PKG
-cd $TMP
-rm -rf mysql-$VERSION
-tar xvf $CWD/mysql-$VERSION.tar.?z* || exit 1
-cd mysql-$VERSION
-
-if ls $CWD/*.diff.gz 1> /dev/null 2> /dev/null ; then
- for patch in $CWD/*.diff.gz ; do
- zcat $patch | patch -p1 --verbose || exit 1
- done
-fi
-
-CFLAGS="$SLKCFLAGS -fPIC" CXXFLAGS="$SLKCFLAGS -fPIC" \
- ./configure --prefix=/usr --libdir=/usr/lib${LIBDIRSUFFIX} \
- --datadir=/usr/share --sysconfdir=/etc/mysql \
- --libexecdir=/usr/sbin --localstatedir=/var/lib/mysql \
- --without-docs --without-man --without-server \
- --with-embedded-server \
- --without-readline --disable-shared --with-charset=utf8 \
- --without-debug --with-pthread --without-ssl --without-query-cache \
- --without-geometry --with-pic
-
-make -j6 || make || exit 1
-
-cp libmysqld/libmysqld.a /usr/lib${LIBDIRSUFFIX}/mysql/
-
diff --git a/source/ap/mysql/mysql.SlackBuild b/source/ap/mysql/mysql.SlackBuild
index ce149a156..6690c0f5e 100755
--- a/source/ap/mysql/mysql.SlackBuild
+++ b/source/ap/mysql/mysql.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010, 2012 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -77,82 +77,104 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+mkdir build
+cd build
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS -felide-constructors -fno-exceptions -fno-rtti" \
CXX=gcc \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --with-mysqld-user=mysql \
- --with-unix-socket-path=/var/run/mysql/mysql.sock \
- --localstatedir=/var/lib/mysql \
- --mandir=/usr/man \
- --infodir=/usr/info \
- --enable-assembler \
- --without-debug \
- --enable-thread-safe-client \
- --with-extra-charsets=complex \
- --with-ssl=/usr \
- --enable-largefile \
- --with-innodb \
- --with-readline \
- --build=$ARCH-slackware-linux
-#
-# --without-readline
+cmake \
+ -DBUILD_CONFIG=mysql_release \
+ -DFEATURE_SET="community" \
+ -DINSTALL_LAYOUT="RPM" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DINSTALL_LIBDIR="lib${LIBDIRSUFFIX}" \
+ -DINSTALL_SBINDIR=libexec \
+ -DINSTALL_INCLUDEDIR=include/mysql \
+ -DINSTALL_MYSQLSHAREDIR=share/mysql \
+ -DINSTALL_SQLBENCHDIR= \
+ -DINSTALL_MYSQLTESTDIR=mysql-test \
+ -DINSTALL_INFODIR=info \
+ -DINSTALL_MANDIR=man \
+ -DINSTALL_PLUGINDIR="lib${LIBDIRSUFFIX}/mysql/plugin" \
+ -DINSTALL_SCRIPTDIR=bin \
+ -DINSTALL_SUPPORTFILESDIR=share/mysql \
+ -DINSTALL_MYSQLDATADIR="/var/lib/mysql" \
+ -DMYSQL_DATADIR="/var/lib/mysql" \
+ -DMYSQL_UNIX_ADDR="/var/run/mysql/mysql.sock" \
+ -DWITH_EXTRA_CHARSETS=complex \
+ -DWITH_INNOBASE_STORAGE_ENGINE=1 \
+ -DENABLED_LOCAL_INFILE=ON \
+ -DWITH_EMBEDDED_SERVER=OFF \
+ -DWITH_READLINE=ON \
+ -DWITH_SSL=system \
+ -DWITH_ZLIB=system \
+ ..
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG
-# install additional headers needed for building external engine plugins
-for i in sql include regex; do
+# Install sample configuration files:
+mkdir -p $PKG/etc/mysql
+cp support-files/my-*.cnf $PKG/etc/mysql
+
+# Move mysqlaccess.conf to a more proper place
+mv $PKG/usr/bin/mysqlaccess.conf $PKG/etc/mysqlaccess.conf.new
+chmod 644 $PKG/etc/mysqlaccess.conf.new
+
+# Leave build directory:
+cd ..
+
+# install additional headers needed for building external engine plugins:
+mkdir -p $PKG/usr/include/mysql/private/atomic
+
+install -m 644 regex/my_regex.h $PKG/usr/include/mysql/private/
+
+for i in sql include; do
for j in $i/*.h; do
- install -m 644 $j $PKG/usr/include/mysql/
+ install -m 644 $j $PKG/usr/include/mysql/private/
done
done
-mkdir -p $PKG/usr/include/mysql/atomic
for i in include/atomic/*.h; do
- install -m 644 $i $PKG/usr/include/mysql/atomic/
+ install -m 644 $i $PKG/usr/include/mysql/private/atomic/
done
-# The ./configure option to omit this has gone away, so we'll omit it
-# the old-fashioned way. It's all in the source tarball if you need it.
-rm -rf $PKG/usr/sql-bench
-
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-# Install support files
-mkdir -p $PKG/etc
-cp support-files/my-{huge,large,medium,small}.cnf $PKG/etc
-
# Install docs
mkdir -p $PKG/usr/doc/mysql-$VERSION/Docs
cp -a \
- COPYING* EXCEPTIONS* INSTALL-SOURCE README* \
+ BUILD* COPYING* EXCEPTIONS* INSTALL-SOURCE README* VERSION \
$PKG/usr/doc/mysql-$VERSION
( cd Docs
# Seems most of the Docs/* are gone, but we'll leave the cp stuff
# in case it returns.
- cp -a INSTALL-BINARY *.html *.txt Flags \
+ cp -a INFO_SRC INSTALL-BINARY *.html *.txt Flags \
$PKG/usr/doc/mysql-$VERSION/Docs )
## Too large to justify since the .html version is right there:
#rm $PKG/usr/doc/mysql-$VERSION/Docs/manual.txt
find $PKG/usr/doc/mysql-$VERSION -type f -exec chmod 0644 {} \;
-# This is the directory where databases are stored
+# This is the directory where databases are stored:
mkdir -p $PKG/var/lib/mysql
chown mysql.mysql $PKG/var/lib/mysql
chmod 0750 $PKG/var/lib/mysql
-# This is where the socket is stored
+# This is where the socket is stored:
mkdir -p $PKG/var/run/mysql
chown mysql.mysql $PKG/var/run/mysql
chmod 0755 $PKG/var/run/mysql
-# Do not include the test suite:
+# Do not package the test suite:
rm -rf $PKG/usr/mysql-test
+# More unpackaged things:
+rm -f $PKG/usr/info/dir
+rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libmysqlclient.a
+rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libmysqlclient_r.*
+( cd $PKG/usr/lib${LIBDIRSUFFIX} ; ln -sf libmysqlclient.so libmysqlclient_r.so )
+
# Add init script:
mkdir -p $PKG/etc/rc.d
# This is intentionally chmod 644.
@@ -163,29 +185,6 @@ mkdir -p $PKG/install
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
-# Add some handy library symlinks:
-if [ -r $PKG/usr/lib${LIBDIRSUFFIX}/mysql/libmysqlclient.so.16 ]; then
- ( cd $PKG/usr/lib${LIBDIRSUFFIX}
- rm -f libmysqlclient.so libmysqlclient.so.16
- ln -sf mysql/libmysqlclient.so .
- ln -sf mysql/libmysqlclient.so.16 .
- )
-else
- exit 1
-fi
-if [ -r $PKG/usr/lib${LIBDIRSUFFIX}/mysql/libmysqlclient_r.so.16 ]; then
- ( cd $PKG/usr/lib${LIBDIRSUFFIX}
- rm -f libmysqlclient_r.so libmysqlclient_r.so.16
- ln -sf mysql/libmysqlclient_r.so .
- ln -sf mysql/libmysqlclient_r.so.16 .
- )
-else
- exit 1
-fi
-
-# Packaging standards:
-rm -f $PKG/usr/info/dir
-
# Compress and link manpages, if any:
if [ -d $PKG/usr/man ]; then
( cd $PKG/usr/man
@@ -220,4 +219,3 @@ fi
# Build package:
cd $PKG
/sbin/makepkg -l y -c n $TMP/mysql-$VERSION-$ARCH-$BUILD.txz
-
diff --git a/source/ap/nano/doinst.sh b/source/ap/nano/doinst.sh
new file mode 100644
index 000000000..3cd3405f7
--- /dev/null
+++ b/source/ap/nano/doinst.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+config() {
+ NEW="$1"
+ OLD="`dirname $NEW`/`basename $NEW .new`"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+config etc/nanorc.new
diff --git a/source/ap/nano/nano.SlackBuild b/source/ap/nano/nano.SlackBuild
index c6e3c3ade..0f9e114c6 100755
--- a/source/ap/nano/nano.SlackBuild
+++ b/source/ap/nano/nano.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010, 2012 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,7 +23,7 @@
PKGNAM=nano
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -39,12 +39,24 @@ fi
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+ ARCHQUADLET=""
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+ ARCHQUADLET=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+ ARCHQUADLET=""
+elif [ "$ARCH" = "arm" ]; then
+ SLKCFLAGS="-O2 -march=armv5te"
+ LIBDIRSUFFIX=""
+ ARCHQUADLET="-gnueabi"
else
SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+ ARCHQUADLET=""
fi
CWD=$(pwd)
@@ -80,7 +92,8 @@ CFLAGS="$SLKCFLAGS" \
--enable-nanorc \
--enable-all \
--enable-utf8 \
- --build=$ARCH-slackware-linux
+ --disable-wrapping-as-root \
+ --build=$ARCH-slackware-linux$ARCHQUADLET || exit 1
# Build and install:
make $NUMJOBS || make || exit 1
@@ -113,6 +126,13 @@ if [ -d $PKG/usr/info ]; then
)
fi
+# Install a default /etc/nanorc file. This is the standard sample
+# file from the doc directory that loads the colour configurations
+# from /usr/share/nano.
+mkdir -vpm755 $PKG/etc
+sed 's?^# include?include?g' doc/nanorc.sample > $PKG/etc/nanorc.new
+chmod 644 $PKG/etc/nanorc.new
+
# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
@@ -128,8 +148,10 @@ if [ -r ChangeLog ]; then
touch -r ChangeLog $DOCSDIR/ChangeLog
fi
+# Place the package description and installation script:
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/ap/ntfsprogs/slack-desc b/source/ap/ntfsprogs/slack-desc
deleted file mode 100644
index 4ed38c92b..000000000
--- a/source/ap/ntfsprogs/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
-# up the first '|' above the ':' following the base package name, and the '|'
-# on the right side marks the last column you can put a character in. You must
-# make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':'.
-
- |-----handy-ruler------------------------------------------------------|
-ntfsprogs: ntfsprogs (utilities for working with NTFS volumes)
-ntfsprogs:
-ntfsprogs: The ntfsprogs includes utilities for doing all required tasks to NTFS
-ntfsprogs: partitions. In general, just run a utility without any command line
-ntfsprogs: options to display the version number and usage syntax. The following
-ntfsprogs: utilities are implemented (so far): ntfsfix, mkntfs, ntfslabel,
-ntfsprogs: ntfsundelete, ntfsresize, ntfsclone, ntfscluster, ntfsinfo, ntfsls,
-ntfsprogs: ntfscat, ntfscp, and ntfsmount.
-ntfsprogs:
-ntfsprogs: The Linux-NTFS home page is: http://www.linux-ntfs.org/
-ntfsprogs:
diff --git a/source/ap/powertop/powertop.SlackBuild b/source/ap/powertop/powertop.SlackBuild
index 7767580be..f4f4beaed 100755
--- a/source/ap/powertop/powertop.SlackBuild
+++ b/source/ap/powertop/powertop.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2010, 2012 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,10 +20,14 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# Modified by Willy Sudiarto Raharjo
+# Changelog
+# May, 11 : Bumped to 2.0, Fix compilation process, Added patch to fix complaints about a file
+# May, 18 : Rebuilt, removed non-existence directory for man pages
PKGNAM=powertop
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@@ -35,6 +39,8 @@ if [ -z "$ARCH" ]; then
esac
fi
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
@@ -68,21 +74,45 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+LDFLAGS=" -lresolv -lz " \
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --build=$ARCH-slackware-linux
+
# Build and install:
-make || exit 1
+make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
-# Move man pages:
-mv $PKG/usr/share/man $PKG/usr
-
# Strip binaries:
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
- COPYING* README* \
+ COPYING* README* TODO \
$PKG/usr/doc/${PKGNAM}-$VERSION
# If there's a ChangeLog, installing at least part of the recent history
diff --git a/source/ap/rpm/rpm.SlackBuild b/source/ap/rpm/rpm.SlackBuild
index 2f930c374..2891472b7 100755
--- a/source/ap/rpm/rpm.SlackBuild
+++ b/source/ap/rpm/rpm.SlackBuild
@@ -55,10 +55,7 @@ elif [ "$ARCH" = "armel" ]; then
LIBDIRSUFFIX=""
fi
-NSS_INC="/usr/include/seamonkey/nss"
-NSPR_INC="/usr/include/seamonkey/nspr"
-DB_INC="/usr/include/db44"
-NSS_LIBS="/usr/lib${LIBDIRSUFFIX}/seamonkey"
+DB_INC="/usr/include/db48"
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -78,11 +75,11 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# We have to tell it where to find Seamonkey's NSS.
+# We have to tell it where to find NSS and NSPR
# Also, --enable-sqlite3 needs "-ldl" in LDFLAGS
# And --enable-broken-chown fits, as ours follows symlinks.
-CFLAGS="$SLKCFLAGS -I$NSS_INC -I$NSPR_INC -I$DB_INC" \
-LDFLAGS="-L${NSS_LIBS} -ldl" \
+CFLAGS="$SLKCFLAGS -I${DB_INC} $(pkg-config --cflags nspr nss)" \
+LDFLAGS="-ldl" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
diff --git a/source/ap/screen/screen.SlackBuild b/source/ap/screen/screen.SlackBuild
index 3464bc4a8..29ad8c694 100755
--- a/source/ap/screen/screen.SlackBuild
+++ b/source/ap/screen/screen.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010, 2011 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,7 +21,7 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
VERSION=${VERSION:-4.0.3}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@@ -51,10 +51,13 @@ rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf screen-$VERSION
-tar xjvf $CWD/screen-$VERSION.tar.bz2
+tar xvf $CWD/screen-$VERSION.tar.?z* || exit 1
cd screen-$VERSION || exit 1
+# Increase the size of the termname buffer from 20 to 63:
+zcat $CWD/screen.d_termname.envterm.buffersizeincrease.diff.gz | patch -p1 --verbose || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -72,7 +75,7 @@ CFLAGS="$SLKCFLAGS" \
--enable-locale \
--enable-colors256 \
--enable-rxvt_osc \
- $ARCH-slackware-linux
+ --build=$ARCH-slackware-linux
# Substitutions:
perl -pi -e 's|.*#undef HAVE_BRAILLE.*|#define HAVE_BRAILLE 1|' config.h
diff --git a/source/ap/screen/screen.d_termname.envterm.buffersizeincrease.diff b/source/ap/screen/screen.d_termname.envterm.buffersizeincrease.diff
new file mode 100644
index 000000000..26765d6ca
--- /dev/null
+++ b/source/ap/screen/screen.d_termname.envterm.buffersizeincrease.diff
@@ -0,0 +1,22 @@
+--- ./display.h.orig 2003-07-01 09:01:42.000000000 -0500
++++ ./display.h 2011-07-18 16:01:03.691998366 -0500
+@@ -85,7 +85,7 @@
+ struct win *d_other; /* pointer to other window */
+ int d_nonblock; /* -1 don't block if obufmax reached */
+ /* >0: block after nonblock secs */
+- char d_termname[20 + 1]; /* $TERM */
++ char d_termname[63 + 1]; /* $TERM */
+ char *d_tentry; /* buffer for tgetstr */
+ char d_tcinited; /* termcap inited flag */
+ int d_width, d_height; /* width/height of the screen */
+--- ./screen.h.orig 2003-08-22 07:28:43.000000000 -0500
++++ ./screen.h 2011-07-18 16:01:09.388004936 -0500
+@@ -202,7 +202,7 @@
+ char preselect[20];
+ int esc; /* his new escape character unless -1 */
+ int meta_esc; /* his new meta esc character unless -1 */
+- char envterm[20 + 1]; /* terminal type */
++ char envterm[63 + 1]; /* terminal type */
+ int encoding; /* encoding of display */
+ }
+ attach;
diff --git a/source/ap/soma/slack-desc b/source/ap/soma/slack-desc
new file mode 100644
index 000000000..bc1725a6c
--- /dev/null
+++ b/source/ap/soma/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+soma: Soma - a command line/dialog internet radio player
+soma:
+soma: Soma is a frontend for mplayer to play radio playlists pls,m3u and
+soma: ram. More will be added as it progresses.
+soma:
+soma: Homepage: http://www.dawoodfall.net/slackbuilds/noversion/soma
+soma:
+soma:
+soma:
+soma:
+soma:
diff --git a/source/ap/soma/soma.SlackBuild b/source/ap/soma/soma.SlackBuild
new file mode 100755
index 000000000..c7cc38ae6
--- /dev/null
+++ b/source/ap/soma/soma.SlackBuild
@@ -0,0 +1,67 @@
+#!/bin/sh
+
+# Slackware build script for soma
+# Copyright 2010-2011 David Woodfall <dave@dawoodfall.net>
+# Copyright 2011, 2012 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PKGNAM=soma
+VERSION=${VERSION:-2.8.5}
+ARCH=noarch
+BUILD=${BUILD:-1}
+TAG=${TAG:-}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.gz
+cd $PKGNAM-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+mkdir -p $PKG/usr/bin $PKG/etc/soma $PKG/install $PKG/usr/doc/$PKGNAM-$VERSION
+
+install -m 755 soma $PKG/usr/bin/soma
+install --m 644 options.conf $PKG/etc/soma
+install --m 644 stations.conf $PKG/etc/soma
+install --m 644 dialogrc $PKG/etc/soma
+
+cp -a \
+ README \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+#cat $CWD/$PKGNAM.SlackBuild > $PKG/usr/doc/$PKGNAM-$VERSION/$PKGNAM.SlackBuild
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PKGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-txz}
+
diff --git a/source/ap/soma/soma.info b/source/ap/soma/soma.info
new file mode 100644
index 000000000..0255d3d6e
--- /dev/null
+++ b/source/ap/soma/soma.info
@@ -0,0 +1,10 @@
+PRGNAM="soma"
+VERSION="2.8.5"
+HOMEPAGE="http://www.dawoodfall.net/files/slackbuilds/noversion/soma/"
+DOWNLOAD="http://www.dawoodfall.net/files/slackbuilds/noversion/soma/soma-2.8.5.tar.gz"
+MD5SUM="193112a1dc8de8781b83d3a1bceedee6"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+MAINTAINER="David Woodfall"
+EMAIL="dave@dawoodfall.net"
+APPROVED=""
diff --git a/source/ap/soma/soma.png b/source/ap/soma/soma.png
new file mode 100644
index 000000000..1e545a938
--- /dev/null
+++ b/source/ap/soma/soma.png
Binary files differ
diff --git a/source/ap/soma/stations.conf b/source/ap/soma/stations.conf
new file mode 100644
index 000000000..4a2c43083
--- /dev/null
+++ b/source/ap/soma/stations.conf
@@ -0,0 +1,38 @@
+Groove Salad,http://somafm.com/groovesalad130.pls
+Lush,http://somafm.com/lush.pls
+Suburbs of Goa,http://somafm.com/suburbsofgoa.pls
+Drone Zone,http://somafm.com/dronezone.pls
+Indie Pop Rocks,http://somafm.com/indiepop.pls
+Digitalis,http://somafm.com/digitalis.pls
+PopTron,http://somafm.com/poptron.pls
+Covers,http://somafm.com/covers.pls
+Secret Agent,http://somafm.com/secretagent.pls
+Boot Liquor,http://somafm.com/bootliquor.pls
+Illinois Street Lounge,http://somafm.com/illstreet.pls
+Cliqhop IDM,http://somafm.com/cliqhop.pls
+Sonic Universe,http://somafm.com/sonicuniverse.pls
+Beat Blender,http://somafm.com/beatblender.pls
+Tag's Trip,http://somafm.com/tags.pls
+Space Station Soma,http://somafm.com/spacestation.pls
+Mission Control,http://somafm.com/missioncontrol.pls
+Doomed,http://somafm.com/doomed.pls
+BBC Radio 1,http://www.bbc.co.uk/radio/listen/live/r1.asx
+BBC Radio 2,http://www.bbc.co.uk/radio/listen/live/r2.asx
+BBC Radio 3,http://www.bbc.co.uk/radio/listen/live/r3.asx
+BBC Radio 4,http://www.bbc.co.uk/radio/listen/live/r4.asx
+BBC Radio 7,http://www.bbc.co.uk/radio/listen/live/r7.asx
+BBC World Service,http://www.bbc.co.uk/worldservice/meta/tx/nb/live/eneuk.asx
+BBC WS News,http://www.bbc.co.uk/worldservice/meta/tx/nb/live/ennws.asx
+Classic FM,http://mediaweb.musicradio.com/V1/Playlist.asx?StreamID=2
+InterGalacticFM1,http://radio.intergalacticfm.com/1.m3u
+InterGalacticFM2,http://radio.intergalacticfm.com/2.m3u
+InterGalacticFM3,http://radio.intergalacticfm.com/3.m3u
+InterGalacticFM4,http://radio.intergalacticfm.com/4.m3u
+DarkWave Gothic,http://yp.shoutcast.com/sbin/tunein-station.pls?id=392221
+Meridian FM,http://www.meridianfm.com/listen2meridianfm.m3uj
+kpfa,http://www.kpfa.org/streams/kpfa_64k.m3u
+wcbn,http://floyd.wcbn.org/wcbn-hi.m3u
+Pyrolitical,http://broadcast.pyrolitical.com:8000/Pyrolitical_Radio.m3u
+Dissident,http://radio.indybay.org:8000/dissidentisland.m3u
+GFMONLINE,http://www.gfmradio.com/GFMONLINE.wvx
+Celtic Music Radio,http://www.celticmusicradio.net/celtic_live.m3u
diff --git a/source/ap/sqlite/sqlite.SlackBuild b/source/ap/sqlite/sqlite.SlackBuild
index 61f259b04..bbb03bd39 100755
--- a/source/ap/sqlite/sqlite.SlackBuild
+++ b/source/ap/sqlite/sqlite.SlackBuild
@@ -3,7 +3,7 @@
# Slackware build script for sqlite
# Copyright 2006 Martin Lefebvre <dadexter@gmail.com>
-# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010, 2012 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
PKGNAM=sqlite
VERSION=${VERSION:-$(echo $PKGNAM-src-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-OLD_STYLE=$(echo $VERSION | tr 0 . | cut -f 1-3 -d .)
+OLD_STYLE=$(printf %d $(echo $VERSION | cut -b 1)).$(printf %d $(echo $VERSION | cut -b 2,3)).$(printf %d $(echo $VERSION | cut -b 4,5))
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -59,7 +59,7 @@ else
fi
# Enable some features:
-SLKCFLAGS="$SLKCFLAGS -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_DISABLE_DIRSYNC=1 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_ENABLE_STAT2=1 -DSQLITE_ENABLE_UNLOCK_NOTIFY=1 -DSQLITE_SECURE_DELETE=1"
+SLKCFLAGS="$SLKCFLAGS -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_DISABLE_DIRSYNC=1 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_ENABLE_STAT2=1 -DSQLITE_ENABLE_UNLOCK_NOTIFY=1 -DSQLITE_SECURE_DELETE=1"
rm -rf $PKG
mkdir -p $TMP $PKG
diff --git a/source/ap/sudo/sudo.SlackBuild b/source/ap/sudo/sudo.SlackBuild
index c3b853602..8081e9171 100755
--- a/source/ap/sudo/sudo.SlackBuild
+++ b/source/ap/sudo/sudo.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009, 2010, 2011 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010, 2011, 2012 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,7 +22,7 @@
PKGNAM=sudo
-VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
@@ -56,7 +56,7 @@ fi
cd $TMP
rm -rf sudo-$VERSION
-tar xvf $CWD/sudo-$VERSION.tar.gz || exit 1
+tar xvf $CWD/sudo-$VERSION.tar.?z* || exit 1
cd sudo-$VERSION
chown -R root:root .
@@ -99,8 +99,8 @@ mv $PKG/etc/sudoers $PKG/etc/sudoers.new
rm -r $PKG/usr/doc/sudo-$VERSION
mkdir -p $PKG/usr/doc/sudo-$VERSION
cp -a \
- BUGS HISTORY INSTALL LICENSE PORTING README* \
- RUNSON TODO TROUBLESHOOTING UPGRADE WHATSNEW \
+ INSTALL NEWS README* \
+ doc/{CONTRIBUTORS,HISTORY,LICENSE,TROUBLESHOOTING,UPGRADE} \
$PKG/usr/doc/sudo-$VERSION
chmod 644 $PKG/usr/doc/sudo-$VERSION/*
diff --git a/source/ap/vbetool/slack-desc b/source/ap/vbetool/slack-desc
index c43966918..b10d5fa4e 100644
--- a/source/ap/vbetool/slack-desc
+++ b/source/ap/vbetool/slack-desc
@@ -11,7 +11,7 @@ vbetool:
vbetool: vbetool is a small application that executes code from the BIOS of
vbetool: your video card.
vbetool:
-vbetool: This is mostly useful for reinitialising the hardware, for instance
+vbetool: This is mostly useful for reinitializing the hardware, for instance
vbetool: after ACPI suspend/resuming.
vbetool:
vbetool: Homepage: http://www.codon.org.uk/~mjg59/vbetool/
diff --git a/source/ap/vim/patches/7.3.155 b/source/ap/vim/patches/7.3.155
new file mode 100644
index 000000000..806efca2b
--- /dev/null
+++ b/source/ap/vim/patches/7.3.155
@@ -0,0 +1,286 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.155
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.155
+Problem: Crash when using map(), filter() and remove() on v:. (ZyX)
+ Also for extend(). (Yukihiro Nakadaira)
+Solution: Mark v: as locked. Also correct locking error messages.
+Files: src/eval.c
+
+
+*** ../vim-7.3.154/src/eval.c 2011-04-01 16:07:41.000000000 +0200
+--- src/eval.c 2011-04-11 13:28:34.000000000 +0200
+***************
+*** 853,858 ****
+--- 853,859 ----
+
+ init_var_dict(&globvardict, &globvars_var);
+ init_var_dict(&vimvardict, &vimvars_var);
++ vimvardict.dv_lock = VAR_FIXED;
+ hash_init(&compat_hashtab);
+ hash_init(&func_hashtab);
+
+***************
+*** 8545,8551 ****
+ if (argvars[0].v_type == VAR_LIST)
+ {
+ if ((l = argvars[0].vval.v_list) != NULL
+! && !tv_check_lock(l->lv_lock, (char_u *)"add()")
+ && list_append_tv(l, &argvars[1]) == OK)
+ copy_tv(&argvars[0], rettv);
+ }
+--- 8546,8552 ----
+ if (argvars[0].v_type == VAR_LIST)
+ {
+ if ((l = argvars[0].vval.v_list) != NULL
+! && !tv_check_lock(l->lv_lock, (char_u *)_("add() argument"))
+ && list_append_tv(l, &argvars[1]) == OK)
+ copy_tv(&argvars[0], rettv);
+ }
+***************
+*** 9946,9951 ****
+--- 9947,9954 ----
+ typval_T *argvars;
+ typval_T *rettv;
+ {
++ char *arg_errmsg = N_("extend() argument");
++
+ if (argvars[0].v_type == VAR_LIST && argvars[1].v_type == VAR_LIST)
+ {
+ list_T *l1, *l2;
+***************
+*** 9955,9961 ****
+
+ l1 = argvars[0].vval.v_list;
+ l2 = argvars[1].vval.v_list;
+! if (l1 != NULL && !tv_check_lock(l1->lv_lock, (char_u *)"extend()")
+ && l2 != NULL)
+ {
+ if (argvars[2].v_type != VAR_UNKNOWN)
+--- 9958,9964 ----
+
+ l1 = argvars[0].vval.v_list;
+ l2 = argvars[1].vval.v_list;
+! if (l1 != NULL && !tv_check_lock(l1->lv_lock, (char_u *)_(arg_errmsg))
+ && l2 != NULL)
+ {
+ if (argvars[2].v_type != VAR_UNKNOWN)
+***************
+*** 9994,10000 ****
+
+ d1 = argvars[0].vval.v_dict;
+ d2 = argvars[1].vval.v_dict;
+! if (d1 != NULL && !tv_check_lock(d1->dv_lock, (char_u *)"extend()")
+ && d2 != NULL)
+ {
+ /* Check the third argument. */
+--- 9997,10003 ----
+
+ d1 = argvars[0].vval.v_dict;
+ d2 = argvars[1].vval.v_dict;
+! if (d1 != NULL && !tv_check_lock(d1->dv_lock, (char_u *)_(arg_errmsg))
+ && d2 != NULL)
+ {
+ /* Check the third argument. */
+***************
+*** 10236,10255 ****
+ typval_T save_key;
+ int rem;
+ int todo;
+! char_u *ermsg = map ? (char_u *)"map()" : (char_u *)"filter()";
+ int save_did_emsg;
+ int idx = 0;
+
+ if (argvars[0].v_type == VAR_LIST)
+ {
+ if ((l = argvars[0].vval.v_list) == NULL
+! || (map && tv_check_lock(l->lv_lock, ermsg)))
+ return;
+ }
+ else if (argvars[0].v_type == VAR_DICT)
+ {
+ if ((d = argvars[0].vval.v_dict) == NULL
+! || (map && tv_check_lock(d->dv_lock, ermsg)))
+ return;
+ }
+ else
+--- 10239,10260 ----
+ typval_T save_key;
+ int rem;
+ int todo;
+! char_u *ermsg = (char_u *)(map ? "map()" : "filter()");
+! char *arg_errmsg = (map ? N_("map() argument")
+! : N_("filter() argument"));
+ int save_did_emsg;
+ int idx = 0;
+
+ if (argvars[0].v_type == VAR_LIST)
+ {
+ if ((l = argvars[0].vval.v_list) == NULL
+! || tv_check_lock(l->lv_lock, (char_u *)_(arg_errmsg)))
+ return;
+ }
+ else if (argvars[0].v_type == VAR_DICT)
+ {
+ if ((d = argvars[0].vval.v_dict) == NULL
+! || tv_check_lock(d->dv_lock, (char_u *)_(arg_errmsg)))
+ return;
+ }
+ else
+***************
+*** 10286,10292 ****
+ {
+ --todo;
+ di = HI2DI(hi);
+! if (tv_check_lock(di->di_tv.v_lock, ermsg))
+ break;
+ vimvars[VV_KEY].vv_str = vim_strsave(di->di_key);
+ if (filter_map_one(&di->di_tv, expr, map, &rem) == FAIL
+--- 10291,10298 ----
+ {
+ --todo;
+ di = HI2DI(hi);
+! if (tv_check_lock(di->di_tv.v_lock,
+! (char_u *)_(arg_errmsg)))
+ break;
+ vimvars[VV_KEY].vv_str = vim_strsave(di->di_key);
+ if (filter_map_one(&di->di_tv, expr, map, &rem) == FAIL
+***************
+*** 10305,10311 ****
+
+ for (li = l->lv_first; li != NULL; li = nli)
+ {
+! if (tv_check_lock(li->li_tv.v_lock, ermsg))
+ break;
+ nli = li->li_next;
+ vimvars[VV_KEY].vv_nr = idx;
+--- 10311,10317 ----
+
+ for (li = l->lv_first; li != NULL; li = nli)
+ {
+! if (tv_check_lock(li->li_tv.v_lock, (char_u *)_(arg_errmsg)))
+ break;
+ nli = li->li_next;
+ vimvars[VV_KEY].vv_nr = idx;
+***************
+*** 12910,12916 ****
+ if (argvars[0].v_type != VAR_LIST)
+ EMSG2(_(e_listarg), "insert()");
+ else if ((l = argvars[0].vval.v_list) != NULL
+! && !tv_check_lock(l->lv_lock, (char_u *)"insert()"))
+ {
+ if (argvars[2].v_type != VAR_UNKNOWN)
+ before = get_tv_number_chk(&argvars[2], &error);
+--- 12916,12922 ----
+ if (argvars[0].v_type != VAR_LIST)
+ EMSG2(_(e_listarg), "insert()");
+ else if ((l = argvars[0].vval.v_list) != NULL
+! && !tv_check_lock(l->lv_lock, (char_u *)_("insert() argument")))
+ {
+ if (argvars[2].v_type != VAR_UNKNOWN)
+ before = get_tv_number_chk(&argvars[2], &error);
+***************
+*** 14775,14787 ****
+ char_u *key;
+ dict_T *d;
+ dictitem_T *di;
+
+ if (argvars[0].v_type == VAR_DICT)
+ {
+ if (argvars[2].v_type != VAR_UNKNOWN)
+ EMSG2(_(e_toomanyarg), "remove()");
+ else if ((d = argvars[0].vval.v_dict) != NULL
+! && !tv_check_lock(d->dv_lock, (char_u *)"remove() argument"))
+ {
+ key = get_tv_string_chk(&argvars[1]);
+ if (key != NULL)
+--- 14781,14794 ----
+ char_u *key;
+ dict_T *d;
+ dictitem_T *di;
++ char *arg_errmsg = N_("remove() argument");
+
+ if (argvars[0].v_type == VAR_DICT)
+ {
+ if (argvars[2].v_type != VAR_UNKNOWN)
+ EMSG2(_(e_toomanyarg), "remove()");
+ else if ((d = argvars[0].vval.v_dict) != NULL
+! && !tv_check_lock(d->dv_lock, (char_u *)_(arg_errmsg)))
+ {
+ key = get_tv_string_chk(&argvars[1]);
+ if (key != NULL)
+***************
+*** 14801,14807 ****
+ else if (argvars[0].v_type != VAR_LIST)
+ EMSG2(_(e_listdictarg), "remove()");
+ else if ((l = argvars[0].vval.v_list) != NULL
+! && !tv_check_lock(l->lv_lock, (char_u *)"remove() argument"))
+ {
+ int error = FALSE;
+
+--- 14808,14814 ----
+ else if (argvars[0].v_type != VAR_LIST)
+ EMSG2(_(e_listdictarg), "remove()");
+ else if ((l = argvars[0].vval.v_list) != NULL
+! && !tv_check_lock(l->lv_lock, (char_u *)_(arg_errmsg)))
+ {
+ int error = FALSE;
+
+***************
+*** 15135,15141 ****
+ if (argvars[0].v_type != VAR_LIST)
+ EMSG2(_(e_listarg), "reverse()");
+ else if ((l = argvars[0].vval.v_list) != NULL
+! && !tv_check_lock(l->lv_lock, (char_u *)"reverse()"))
+ {
+ li = l->lv_last;
+ l->lv_first = l->lv_last = NULL;
+--- 15142,15148 ----
+ if (argvars[0].v_type != VAR_LIST)
+ EMSG2(_(e_listarg), "reverse()");
+ else if ((l = argvars[0].vval.v_list) != NULL
+! && !tv_check_lock(l->lv_lock, (char_u *)_("reverse() argument")))
+ {
+ li = l->lv_last;
+ l->lv_first = l->lv_last = NULL;
+***************
+*** 16432,16438 ****
+ else
+ {
+ l = argvars[0].vval.v_list;
+! if (l == NULL || tv_check_lock(l->lv_lock, (char_u *)"sort()"))
+ return;
+ rettv->vval.v_list = l;
+ rettv->v_type = VAR_LIST;
+--- 16439,16446 ----
+ else
+ {
+ l = argvars[0].vval.v_list;
+! if (l == NULL || tv_check_lock(l->lv_lock,
+! (char_u *)_("sort() argument")))
+ return;
+ rettv->vval.v_list = l;
+ rettv->v_type = VAR_LIST;
+*** ../vim-7.3.154/src/version.c 2011-04-02 15:12:45.000000000 +0200
+--- src/version.c 2011-04-11 13:13:38.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 155,
+ /**/
+
+--
+I used to be indecisive, now I'm not sure.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.156 b/source/ap/vim/patches/7.3.156
new file mode 100644
index 000000000..ec873242e
--- /dev/null
+++ b/source/ap/vim/patches/7.3.156
@@ -0,0 +1,89 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.156
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.156
+Problem: Tty names possibly left unterminated.
+Solution: Use vim_strncpy() instead of strncpy().
+Files: src/pty.c
+
+
+*** ../vim-7.3.155/src/pty.c 2010-08-15 21:57:28.000000000 +0200
+--- src/pty.c 2011-04-11 14:02:49.000000000 +0200
+***************
+*** 209,216 ****
+ #ifdef _SEQUENT_
+ fvhangup(s);
+ #endif
+! strncpy(PtyName, m, sizeof(PtyName));
+! strncpy(TtyName, s, sizeof(TtyName));
+ initmaster(f);
+ *ttyn = TtyName;
+ return f;
+--- 209,216 ----
+ #ifdef _SEQUENT_
+ fvhangup(s);
+ #endif
+! vim_strncpy((char_u *)PtyName, (char_u *)m, sizeof(PtyName) - 1);
+! vim_strncpy((char_u *)TtyName, (char_u *)s, sizeof(TtyName) - 1);
+ initmaster(f);
+ *ttyn = TtyName;
+ return f;
+***************
+*** 301,307 ****
+ return -1;
+ }
+ signal(SIGCHLD, sigcld);
+! strncpy(TtyName, m, sizeof(TtyName));
+ initmaster(f);
+ *ttyn = TtyName;
+ return f;
+--- 301,307 ----
+ return -1;
+ }
+ signal(SIGCHLD, sigcld);
+! vim_strncpy((char_u *)TtyName, (char_u *)m, sizeof(TtyName) - 1);
+ initmaster(f);
+ *ttyn = TtyName;
+ return f;
+***************
+*** 326,332 ****
+ /* a dumb looking loop replaced by mycrofts code: */
+ if ((f = open("/dev/ptc", O_RDWR | O_NOCTTY | O_EXTRA)) < 0)
+ return -1;
+! strncpy(TtyName, ttyname(f), sizeof(TtyName));
+ if (geteuid() != ROOT_UID && mch_access(TtyName, R_OK | W_OK))
+ {
+ close(f);
+--- 326,332 ----
+ /* a dumb looking loop replaced by mycrofts code: */
+ if ((f = open("/dev/ptc", O_RDWR | O_NOCTTY | O_EXTRA)) < 0)
+ return -1;
+! vim_strncpy((char_u *)TtyName, (char_u *)ttyname(f), sizeof(TtyName) - 1);
+ if (geteuid() != ROOT_UID && mch_access(TtyName, R_OK | W_OK))
+ {
+ close(f);
+*** ../vim-7.3.155/src/version.c 2011-04-11 13:46:07.000000000 +0200
+--- src/version.c 2011-04-11 14:23:38.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 156,
+ /**/
+
+--
+I think that you'll agree that engineers are very effective in their social
+interactions. It's the "normal" people who are nuts.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.157 b/source/ap/vim/patches/7.3.157
new file mode 100644
index 000000000..403c94865
--- /dev/null
+++ b/source/ap/vim/patches/7.3.157
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.157
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.157
+Problem: Superfluous assignment.
+Solution: Remove assignment.
+Files: src/misc1.c
+
+
+*** ../vim-7.3.156/src/misc1.c 2011-03-22 13:07:19.000000000 +0100
+--- src/misc1.c 2011-04-11 14:11:17.000000000 +0200
+***************
+*** 6773,6780 ****
+ {
+ curwin->w_cursor.lnum = our_paren_pos.lnum;
+ curwin->w_cursor.col = col;
+! if ((trypos = find_match_paren(ind_maxparen,
+! ind_maxcomment)) != NULL)
+ amount += ind_unclosed2;
+ else
+ amount += ind_unclosed;
+--- 6775,6781 ----
+ {
+ curwin->w_cursor.lnum = our_paren_pos.lnum;
+ curwin->w_cursor.col = col;
+! if (find_match_paren(ind_maxparen, ind_maxcomment) != NULL)
+ amount += ind_unclosed2;
+ else
+ amount += ind_unclosed;
+*** ../vim-7.3.156/src/version.c 2011-04-11 14:24:33.000000000 +0200
+--- src/version.c 2011-04-11 14:25:36.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 157,
+ /**/
+
+--
+A radioactive cat has eighteen half-lives.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.158 b/source/ap/vim/patches/7.3.158
new file mode 100644
index 000000000..8fba3508b
--- /dev/null
+++ b/source/ap/vim/patches/7.3.158
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.158
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.158
+Problem: Might use uninitialized memory in C indenting.
+Solution: Init arrays to empty.
+Files: src/misc1.c
+
+
+*** ../vim-7.3.157/src/misc1.c 2011-04-11 14:26:15.000000000 +0200
+--- src/misc1.c 2011-04-11 14:11:17.000000000 +0200
+***************
+*** 6433,6438 ****
+--- 6433,6440 ----
+ /* find how indented the line beginning the comment is */
+ getvcol(curwin, trypos, &col, NULL, NULL);
+ amount = col;
++ *lead_start = NUL;
++ *lead_middle = NUL;
+
+ p = curbuf->b_p_com;
+ while (*p != NUL)
+*** ../vim-7.3.157/src/version.c 2011-04-11 14:26:15.000000000 +0200
+--- src/version.c 2011-04-11 14:27:05.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 158,
+ /**/
+
+--
+It's totally unfair to suggest - as many have - that engineers are socially
+inept. Engineers simply have different objectives when it comes to social
+interaction.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.159 b/source/ap/vim/patches/7.3.159
new file mode 100644
index 000000000..7029ac86c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.159
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.159
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.159
+Problem: Using uninitialized pointer when out of memory.
+Solution: Check for NULL return value.
+Files: src/mbyte.c
+
+
+*** ../vim-7.3.158/src/mbyte.c 2010-10-27 13:37:39.000000000 +0200
+--- src/mbyte.c 2011-04-11 14:17:39.000000000 +0200
+***************
+*** 4129,4135 ****
+ done = to - (char *)result;
+ }
+
+! if (resultlenp != NULL)
+ *resultlenp = (int)(to - (char *)result);
+ return result;
+ }
+--- 4129,4135 ----
+ done = to - (char *)result;
+ }
+
+! if (resultlenp != NULL && result != NULL)
+ *resultlenp = (int)(to - (char *)result);
+ return result;
+ }
+*** ../vim-7.3.158/src/version.c 2011-04-11 14:27:34.000000000 +0200
+--- src/version.c 2011-04-11 14:28:08.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 159,
+ /**/
+
+--
+I learned the customs and mannerisms of engineers by observing them, much the
+way Jane Goodall learned about the great apes, but without the hassle of
+grooming.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.160 b/source/ap/vim/patches/7.3.160
new file mode 100644
index 000000000..bf3a069ff
--- /dev/null
+++ b/source/ap/vim/patches/7.3.160
@@ -0,0 +1,482 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.160
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.160
+Problem: Unsafe string copying.
+Solution: Use vim_strncpy() instead of strcpy(). Use vim_strcat() instead
+ of strcat().
+Files: src/buffer.c, src/ex_docmd.c, src/hardcopy.c, src/menu.c,
+ src/misc1.c, src/misc2.c, src/proto/misc2.pro, src/netbeans.c,
+ src/os_unix.c, src/spell.c, src/syntax.c, src/tag.c
+
+*** ../vim-7.3.159/src/buffer.c 2011-02-15 14:24:42.000000000 +0100
+--- src/buffer.c 2011-04-11 16:08:38.000000000 +0200
+***************
+*** 3176,3182 ****
+ /* format: "fname + (path) (1 of 2) - VIM" */
+
+ if (curbuf->b_fname == NULL)
+! STRCPY(buf, _("[No Name]"));
+ else
+ {
+ p = transstr(gettail(curbuf->b_fname));
+--- 3176,3182 ----
+ /* format: "fname + (path) (1 of 2) - VIM" */
+
+ if (curbuf->b_fname == NULL)
+! vim_strncpy(buf, (char_u *)_("[No Name]"), IOSIZE - 100);
+ else
+ {
+ p = transstr(gettail(curbuf->b_fname));
+***************
+*** 3232,3238 ****
+ if (serverName != NULL)
+ {
+ STRCAT(buf, " - ");
+! STRCAT(buf, serverName);
+ }
+ else
+ #endif
+--- 3232,3238 ----
+ if (serverName != NULL)
+ {
+ STRCAT(buf, " - ");
+! vim_strcat(buf, serverName, IOSIZE);
+ }
+ else
+ #endif
+*** ../vim-7.3.159/src/ex_docmd.c 2011-03-03 15:54:45.000000000 +0100
+--- src/ex_docmd.c 2011-04-11 15:43:48.000000000 +0200
+***************
+*** 5096,5102 ****
+ char_u buff[IOSIZE];
+
+ if (n == 1)
+! STRCPY(buff, _("1 more file to edit. Quit anyway?"));
+ else
+ vim_snprintf((char *)buff, IOSIZE,
+ _("%d more files to edit. Quit anyway?"), n);
+--- 5096,5104 ----
+ char_u buff[IOSIZE];
+
+ if (n == 1)
+! vim_strncpy(buff,
+! (char_u *)_("1 more file to edit. Quit anyway?"),
+! IOSIZE - 1);
+ else
+ vim_snprintf((char *)buff, IOSIZE,
+ _("%d more files to edit. Quit anyway?"), n);
+*** ../vim-7.3.159/src/hardcopy.c 2010-08-15 21:57:25.000000000 +0200
+--- src/hardcopy.c 2011-04-11 15:30:09.000000000 +0200
+***************
+*** 1761,1772 ****
+ {
+ char_u buffer[MAXPATHL + 1];
+
+! STRCPY(resource->name, name);
+ /* Look for named resource file in runtimepath */
+ STRCPY(buffer, "print");
+ add_pathsep(buffer);
+! STRCAT(buffer, name);
+! STRCAT(buffer, ".ps");
+ resource->filename[0] = NUL;
+ return (do_in_runtimepath(buffer, FALSE, prt_resource_name,
+ resource->filename)
+--- 1761,1772 ----
+ {
+ char_u buffer[MAXPATHL + 1];
+
+! vim_strncpy(resource->name, (char_u *)name, 63);
+ /* Look for named resource file in runtimepath */
+ STRCPY(buffer, "print");
+ add_pathsep(buffer);
+! vim_strcat(buffer, (char_u *)name, MAXPATHL);
+! vim_strcat(buffer, (char_u *)".ps", MAXPATHL);
+ resource->filename[0] = NUL;
+ return (do_in_runtimepath(buffer, FALSE, prt_resource_name,
+ resource->filename)
+*** ../vim-7.3.159/src/menu.c 2011-01-04 17:49:25.000000000 +0100
+--- src/menu.c 2011-04-11 15:17:21.000000000 +0200
+***************
+*** 1394,1400 ****
+ int idx;
+ {
+ static vimmenu_T *menu = NULL;
+! static char_u tbuffer[256]; /*hack*/
+ char_u *str;
+ #ifdef FEAT_MULTI_LANG
+ static int should_advance = FALSE;
+--- 1394,1401 ----
+ int idx;
+ {
+ static vimmenu_T *menu = NULL;
+! #define TBUFFER_LEN 256
+! static char_u tbuffer[TBUFFER_LEN]; /*hack*/
+ char_u *str;
+ #ifdef FEAT_MULTI_LANG
+ static int should_advance = FALSE;
+***************
+*** 1428,1438 ****
+ {
+ #ifdef FEAT_MULTI_LANG
+ if (should_advance)
+! STRCPY(tbuffer, menu->en_dname);
+ else
+ {
+ #endif
+! STRCPY(tbuffer, menu->dname);
+ #ifdef FEAT_MULTI_LANG
+ if (menu->en_dname == NULL)
+ should_advance = TRUE;
+--- 1429,1439 ----
+ {
+ #ifdef FEAT_MULTI_LANG
+ if (should_advance)
+! vim_strncpy(tbuffer, menu->en_dname, TBUFFER_LEN - 2);
+ else
+ {
+ #endif
+! vim_strncpy(tbuffer, menu->dname, TBUFFER_LEN - 2);
+ #ifdef FEAT_MULTI_LANG
+ if (menu->en_dname == NULL)
+ should_advance = TRUE;
+*** ../vim-7.3.159/src/misc1.c 2011-04-11 14:27:34.000000000 +0200
+--- src/misc1.c 2011-04-11 16:03:22.000000000 +0200
+***************
+*** 3332,3350 ****
+ if (pn == 1)
+ {
+ if (n > 0)
+! STRCPY(msg_buf, _("1 more line"));
+ else
+! STRCPY(msg_buf, _("1 line less"));
+ }
+ else
+ {
+ if (n > 0)
+! sprintf((char *)msg_buf, _("%ld more lines"), pn);
+ else
+! sprintf((char *)msg_buf, _("%ld fewer lines"), pn);
+ }
+ if (got_int)
+! STRCAT(msg_buf, _(" (Interrupted)"));
+ if (msg(msg_buf))
+ {
+ set_keep_msg(msg_buf, 0);
+--- 3332,3354 ----
+ if (pn == 1)
+ {
+ if (n > 0)
+! vim_strncpy(msg_buf, (char_u *)_("1 more line"),
+! MSG_BUF_LEN - 1);
+ else
+! vim_strncpy(msg_buf, (char_u *)_("1 line less"),
+! MSG_BUF_LEN - 1);
+ }
+ else
+ {
+ if (n > 0)
+! vim_snprintf((char *)msg_buf, MSG_BUF_LEN,
+! _("%ld more lines"), pn);
+ else
+! vim_snprintf((char *)msg_buf, MSG_BUF_LEN,
+! _("%ld fewer lines"), pn);
+ }
+ if (got_int)
+! vim_strcat(msg_buf, (char_u *)_(" (Interrupted)"), MSG_BUF_LEN);
+ if (msg(msg_buf))
+ {
+ set_keep_msg(msg_buf, 0);
+*** ../vim-7.3.159/src/misc2.c 2010-12-08 13:11:15.000000000 +0100
+--- src/misc2.c 2011-04-11 15:30:20.000000000 +0200
+***************
+*** 1647,1652 ****
+--- 1647,1674 ----
+ }
+
+ /*
++ * Like strcat(), but make sure the result fits in "tosize" bytes and is
++ * always NUL terminated.
++ */
++ void
++ vim_strcat(to, from, tosize)
++ char_u *to;
++ char_u *from;
++ size_t tosize;
++ {
++ size_t tolen = STRLEN(to);
++ size_t fromlen = STRLEN(from);
++
++ if (tolen + fromlen + 1 > tosize)
++ {
++ mch_memmove(to + tolen, from, tosize - tolen - 1);
++ to[tosize - 1] = NUL;
++ }
++ else
++ STRCPY(to + tolen, from);
++ }
++
++ /*
+ * Isolate one part of a string option where parts are separated with
+ * "sep_chars".
+ * The part is copied into "buf[maxlen]".
+*** ../vim-7.3.159/src/proto/misc2.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/misc2.pro 2011-04-11 15:29:55.000000000 +0200
+***************
+*** 40,45 ****
+--- 40,46 ----
+ void copy_chars __ARGS((char_u *ptr, size_t count, int c));
+ void del_trailing_spaces __ARGS((char_u *ptr));
+ void vim_strncpy __ARGS((char_u *to, char_u *from, size_t len));
++ void vim_strcat __ARGS((char_u *to, char_u *from, size_t tosize));
+ int copy_option_part __ARGS((char_u **option, char_u *buf, int maxlen, char *sep_chars));
+ void vim_free __ARGS((void *x));
+ int vim_stricmp __ARGS((char *s1, char *s2));
+*** ../vim-7.3.159/src/netbeans.c 2011-04-01 15:33:54.000000000 +0200
+--- src/netbeans.c 2011-04-11 16:02:51.000000000 +0200
+***************
+*** 3914,3927 ****
+ }
+ else
+ {
+! char_u ebuf[BUFSIZ];
+
+! STRCPY(ebuf, (char_u *)_("E505: "));
+! STRCAT(ebuf, IObuff);
+! STRCAT(ebuf, (char_u *)_("is read-only (add ! to override)"));
+! STRCPY(IObuff, ebuf);
+! nbdebug((" %s\n", ebuf ));
+! emsg(IObuff);
+ }
+ }
+
+--- 3914,3925 ----
+ }
+ else
+ {
+! char_u msgbuf[IOSIZE];
+
+! vim_snprintf((char *)msgbuf, IOSIZE,
+! _("E505: %s is read-only (add ! to override)"), IObuff);
+! nbdebug((" %s\n", msgbuf));
+! emsg(msgbuf);
+ }
+ }
+
+*** ../vim-7.3.159/src/os_unix.c 2011-02-15 17:39:14.000000000 +0100
+--- src/os_unix.c 2011-04-11 16:39:11.000000000 +0200
+***************
+*** 5725,5730 ****
+--- 5725,5731 ----
+ if (shell_style == STYLE_PRINT && !did_find_nul)
+ {
+ /* If there is a NUL, set did_find_nul, else set check_spaces */
++ buffer[len] = NUL;
+ if (len && (int)STRLEN(buffer) < (int)len - 1)
+ did_find_nul = TRUE;
+ else
+***************
+*** 6594,6600 ****
+ xterm_hints.x = 2;
+ return TRUE;
+ }
+! if (mouse_code == NULL)
+ {
+ xterm_trace = 0;
+ return FALSE;
+--- 6595,6601 ----
+ xterm_hints.x = 2;
+ return TRUE;
+ }
+! if (mouse_code == NULL || STRLEN(mouse_code) > 45)
+ {
+ xterm_trace = 0;
+ return FALSE;
+*** ../vim-7.3.159/src/spell.c 2011-02-01 13:59:44.000000000 +0100
+--- src/spell.c 2011-04-11 15:50:40.000000000 +0200
+***************
+*** 6957,6963 ****
+ if (ae->ae_add == NULL)
+ *newword = NUL;
+ else
+! STRCPY(newword, ae->ae_add);
+ p = word;
+ if (ae->ae_chop != NULL)
+ {
+--- 6957,6963 ----
+ if (ae->ae_add == NULL)
+ *newword = NUL;
+ else
+! vim_strncpy(newword, ae->ae_add, MAXWLEN - 1);
+ p = word;
+ if (ae->ae_chop != NULL)
+ {
+***************
+*** 6978,6984 ****
+ else
+ {
+ /* suffix: chop/add at the end of the word */
+! STRCPY(newword, word);
+ if (ae->ae_chop != NULL)
+ {
+ /* Remove chop string. */
+--- 6978,6984 ----
+ else
+ {
+ /* suffix: chop/add at the end of the word */
+! vim_strncpy(newword, word, MAXWLEN - 1);
+ if (ae->ae_chop != NULL)
+ {
+ /* Remove chop string. */
+***************
+*** 8654,8660 ****
+ * Write the .sug file.
+ * Make the file name by changing ".spl" to ".sug".
+ */
+! STRCPY(fname, wfname);
+ len = (int)STRLEN(fname);
+ fname[len - 2] = 'u';
+ fname[len - 1] = 'g';
+--- 8654,8660 ----
+ * Write the .sug file.
+ * Make the file name by changing ".spl" to ".sug".
+ */
+! vim_strncpy(fname, wfname, MAXPATHL - 1);
+ len = (int)STRLEN(fname);
+ fname[len - 2] = 'u';
+ fname[len - 1] = 'g';
+***************
+*** 10261,10267 ****
+
+ /* The suggested word may replace only part of the bad word, add
+ * the not replaced part. */
+! STRCPY(wcopy, stp->st_word);
+ if (sug.su_badlen > stp->st_orglen)
+ vim_strncpy(wcopy + stp->st_wordlen,
+ sug.su_badptr + stp->st_orglen,
+--- 10261,10267 ----
+
+ /* The suggested word may replace only part of the bad word, add
+ * the not replaced part. */
+! vim_strncpy(wcopy, stp->st_word, MAXWLEN);
+ if (sug.su_badlen > stp->st_orglen)
+ vim_strncpy(wcopy + stp->st_wordlen,
+ sug.su_badptr + stp->st_orglen,
+***************
+*** 13162,13168 ****
+ pbad = badsound2;
+ }
+
+! if (lendiff > 0)
+ {
+ /* Add part of the bad word to the good word, so that we soundfold
+ * what replaces the bad word. */
+--- 13162,13168 ----
+ pbad = badsound2;
+ }
+
+! if (lendiff > 0 && stp->st_wordlen + lendiff < MAXWLEN)
+ {
+ /* Add part of the bad word to the good word, so that we soundfold
+ * what replaces the bad word. */
+***************
+*** 13875,13881 ****
+ for (i = gap->ga_len - 1; i >= 0; --i)
+ {
+ /* Need to append what follows to check for "the the". */
+! STRCPY(longword, stp[i].st_word);
+ len = stp[i].st_wordlen;
+ vim_strncpy(longword + len, su->su_badptr + stp[i].st_orglen,
+ MAXWLEN - len);
+--- 13875,13881 ----
+ for (i = gap->ga_len - 1; i >= 0; --i)
+ {
+ /* Need to append what follows to check for "the the". */
+! vim_strncpy(longword, stp[i].st_word, MAXWLEN);
+ len = stp[i].st_wordlen;
+ vim_strncpy(longword + len, su->su_badptr + stp[i].st_orglen,
+ MAXWLEN - len);
+***************
+*** 14221,14227 ****
+ *t = NUL;
+ }
+ else
+! STRCPY(word, s);
+
+ smp = (salitem_T *)slang->sl_sal.ga_data;
+
+--- 14221,14227 ----
+ *t = NUL;
+ }
+ else
+! vim_strncpy(word, s, MAXWLEN - 1);
+
+ smp = (salitem_T *)slang->sl_sal.ga_data;
+
+*** ../vim-7.3.159/src/syntax.c 2011-04-02 15:12:45.000000000 +0200
+--- src/syntax.c 2011-04-11 15:44:30.000000000 +0200
+***************
+*** 8576,8583 ****
+ if (iarg & hl_attr_table[i])
+ {
+ if (buf[0] != NUL)
+! STRCAT(buf, ",");
+! STRCAT(buf, hl_name_table[i]);
+ iarg &= ~hl_attr_table[i]; /* don't want "inverse" */
+ }
+ }
+--- 8576,8583 ----
+ if (iarg & hl_attr_table[i])
+ {
+ if (buf[0] != NUL)
+! vim_strcat(buf, (char_u *)",", 100);
+! vim_strcat(buf, (char_u *)hl_name_table[i], 100);
+ iarg &= ~hl_attr_table[i]; /* don't want "inverse" */
+ }
+ }
+*** ../vim-7.3.159/src/tag.c 2011-02-25 15:13:43.000000000 +0100
+--- src/tag.c 2011-04-11 15:34:59.000000000 +0200
+***************
+*** 806,812 ****
+ p = tag_full_fname(&tagp);
+ if (p == NULL)
+ continue;
+! STRCPY(fname, p);
+ vim_free(p);
+
+ /*
+--- 806,812 ----
+ p = tag_full_fname(&tagp);
+ if (p == NULL)
+ continue;
+! vim_strncpy(fname, p, MAXPATHL);
+ vim_free(p);
+
+ /*
+*** ../vim-7.3.159/src/version.c 2011-04-11 14:29:13.000000000 +0200
+--- src/version.c 2011-04-11 16:50:53.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 160,
+ /**/
+
+--
+If someone questions your market projections, simply point out that your
+target market is "People who are nuts" and "People who will buy any damn
+thing". Nobody is going to tell you there aren't enough of those people
+to go around.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.161 b/source/ap/vim/patches/7.3.161
new file mode 100644
index 000000000..61223ec2b
--- /dev/null
+++ b/source/ap/vim/patches/7.3.161
@@ -0,0 +1,1645 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.161
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.161
+Problem: Items on the stack may be too big.
+Solution: Make items static or allocate them.
+Files: src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c,
+ src/fileio.c, src/hardcopy.c, src/quickfix.c, src/main.c,
+ src/netbeans.c, src/spell.c, src/tag.c, src/vim.h, src/xxd/xxd.c
+
+
+*** ../vim-7.3.160/src/eval.c 2011-04-11 13:46:07.000000000 +0200
+--- src/eval.c 2011-04-11 21:05:50.000000000 +0200
+***************
+*** 11100,11117 ****
+ typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+! char_u cwd[MAXPATHL];
+
+ rettv->v_type = VAR_STRING;
+! if (mch_dirname(cwd, MAXPATHL) == FAIL)
+! rettv->vval.v_string = NULL;
+! else
+ {
+! rettv->vval.v_string = vim_strsave(cwd);
+ #ifdef BACKSLASH_IN_FILENAME
+! if (rettv->vval.v_string != NULL)
+! slash_adjust(rettv->vval.v_string);
+ #endif
+ }
+ }
+
+--- 11100,11121 ----
+ typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+! char_u *cwd;
+
+ rettv->v_type = VAR_STRING;
+! rettv->vval.v_string = NULL;
+! cwd = alloc(MAXPATHL);
+! if (cwd != NULL)
+ {
+! if (mch_dirname(cwd, MAXPATHL) != FAIL)
+! {
+! rettv->vval.v_string = vim_strsave(cwd);
+ #ifdef BACKSLASH_IN_FILENAME
+! if (rettv->vval.v_string != NULL)
+! slash_adjust(rettv->vval.v_string);
+ #endif
++ }
++ vim_free(cwd);
+ }
+ }
+
+***************
+*** 14938,14943 ****
+--- 14942,14950 ----
+ typval_T *rettv;
+ {
+ char_u *p;
++ #ifdef HAVE_READLINK
++ char_u *buf = NULL;
++ #endif
+
+ p = get_tv_string(&argvars[0]);
+ #ifdef FEAT_SHORTCUT
+***************
+*** 14953,14959 ****
+ #else
+ # ifdef HAVE_READLINK
+ {
+- char_u buf[MAXPATHL + 1];
+ char_u *cpy;
+ int len;
+ char_u *remain = NULL;
+--- 14960,14965 ----
+***************
+*** 14981,14986 ****
+--- 14987,14996 ----
+ q[-1] = NUL;
+ }
+
++ buf = alloc(MAXPATHL + 1);
++ if (buf == NULL)
++ goto fail;
++
+ for (;;)
+ {
+ for (;;)
+***************
+*** 15124,15129 ****
+--- 15134,15140 ----
+
+ #ifdef HAVE_READLINK
+ fail:
++ vim_free(buf);
+ #endif
+ rettv->v_type = VAR_STRING;
+ }
+***************
+*** 17604,17621 ****
+ typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+! char_u fname[MAXPATHL + 1];
+ tagname_T tn;
+ int first;
+
+ if (rettv_list_alloc(rettv) == FAIL)
+ return;
+
+ for (first = TRUE; ; first = FALSE)
+ if (get_tagfname(&tn, first, fname) == FAIL
+ || list_append_string(rettv->vval.v_list, fname, -1) == FAIL)
+ break;
+ tagname_free(&tn);
+ }
+
+ /*
+--- 17615,17636 ----
+ typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+! char_u *fname;
+ tagname_T tn;
+ int first;
+
+ if (rettv_list_alloc(rettv) == FAIL)
+ return;
++ fname = alloc(MAXPATHL);
++ if (fname == NULL)
++ return;
+
+ for (first = TRUE; ; first = FALSE)
+ if (get_tagfname(&tn, first, fname) == FAIL
+ || list_append_string(rettv->vval.v_list, fname, -1) == FAIL)
+ break;
+ tagname_free(&tn);
++ vim_free(fname);
+ }
+
+ /*
+*** ../vim-7.3.160/src/ex_cmds.c 2011-02-01 13:48:47.000000000 +0100
+--- src/ex_cmds.c 2011-04-11 20:51:34.000000000 +0200
+***************
+*** 2777,2783 ****
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+ if (p_confirm || cmdmod.confirm)
+ {
+! char_u buff[IOSIZE];
+
+ dialog_msg(buff, _("Overwrite existing file \"%s\"?"), fname);
+ if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) != VIM_YES)
+--- 2777,2783 ----
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+ if (p_confirm || cmdmod.confirm)
+ {
+! char_u buff[DIALOG_MSG_SIZE];
+
+ dialog_msg(buff, _("Overwrite existing file \"%s\"?"), fname);
+ if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) != VIM_YES)
+***************
+*** 2795,2801 ****
+ /* For ":w! filename" check that no swap file exists for "filename". */
+ if (other && !emsg_silent)
+ {
+! char_u dir[MAXPATHL];
+ char_u *p;
+ int r;
+ char_u *swapname;
+--- 2795,2801 ----
+ /* For ":w! filename" check that no swap file exists for "filename". */
+ if (other && !emsg_silent)
+ {
+! char_u *dir;
+ char_u *p;
+ int r;
+ char_u *swapname;
+***************
+*** 2806,2825 ****
+ * Use 'shortname' of the current buffer, since there is no buffer
+ * for the written file. */
+ if (*p_dir == NUL)
+ STRCPY(dir, ".");
+ else
+ {
+ p = p_dir;
+ copy_option_part(&p, dir, MAXPATHL, ",");
+ }
+ swapname = makeswapname(fname, ffname, curbuf, dir);
+ r = vim_fexists(swapname);
+ if (r)
+ {
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+ if (p_confirm || cmdmod.confirm)
+ {
+! char_u buff[IOSIZE];
+
+ dialog_msg(buff,
+ _("Swap file \"%s\" exists, overwrite anyway?"),
+--- 2806,2834 ----
+ * Use 'shortname' of the current buffer, since there is no buffer
+ * for the written file. */
+ if (*p_dir == NUL)
++ {
++ dir = alloc(5);
++ if (dir == NULL)
++ return FAIL;
+ STRCPY(dir, ".");
++ }
+ else
+ {
++ dir = alloc(MAXPATHL);
++ if (dir == NULL)
++ return FAIL;
+ p = p_dir;
+ copy_option_part(&p, dir, MAXPATHL, ",");
+ }
+ swapname = makeswapname(fname, ffname, curbuf, dir);
++ vim_free(dir);
+ r = vim_fexists(swapname);
+ if (r)
+ {
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+ if (p_confirm || cmdmod.confirm)
+ {
+! char_u buff[DIALOG_MSG_SIZE];
+
+ dialog_msg(buff,
+ _("Swap file \"%s\" exists, overwrite anyway?"),
+***************
+*** 2969,2975 ****
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+ if ((p_confirm || cmdmod.confirm) && buf->b_fname != NULL)
+ {
+! char_u buff[IOSIZE];
+
+ if (buf->b_p_ro)
+ dialog_msg(buff, _("'readonly' option is set for \"%s\".\nDo you wish to write anyway?"),
+--- 2978,2984 ----
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+ if ((p_confirm || cmdmod.confirm) && buf->b_fname != NULL)
+ {
+! char_u buff[DIALOG_MSG_SIZE];
+
+ if (buf->b_p_ro)
+ dialog_msg(buff, _("'readonly' option is set for \"%s\".\nDo you wish to write anyway?"),
+*** ../vim-7.3.160/src/ex_cmds2.c 2011-02-25 14:46:06.000000000 +0100
+--- src/ex_cmds2.c 2011-04-11 20:51:40.000000000 +0200
+***************
+*** 1492,1498 ****
+ buf_T *buf;
+ int checkall; /* may abandon all changed buffers */
+ {
+! char_u buff[IOSIZE];
+ int ret;
+ buf_T *buf2;
+
+--- 1492,1498 ----
+ buf_T *buf;
+ int checkall; /* may abandon all changed buffers */
+ {
+! char_u buff[DIALOG_MSG_SIZE];
+ int ret;
+ buf_T *buf2;
+
+*** ../vim-7.3.160/src/ex_docmd.c 2011-04-11 16:56:29.000000000 +0200
+--- src/ex_docmd.c 2011-04-11 21:20:35.000000000 +0200
+***************
+*** 5093,5106 ****
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+ if ((p_confirm || cmdmod.confirm) && curbuf->b_fname != NULL)
+ {
+! char_u buff[IOSIZE];
+
+ if (n == 1)
+ vim_strncpy(buff,
+ (char_u *)_("1 more file to edit. Quit anyway?"),
+! IOSIZE - 1);
+ else
+! vim_snprintf((char *)buff, IOSIZE,
+ _("%d more files to edit. Quit anyway?"), n);
+ if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 1) == VIM_YES)
+ return OK;
+--- 5093,5106 ----
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+ if ((p_confirm || cmdmod.confirm) && curbuf->b_fname != NULL)
+ {
+! char_u buff[DIALOG_MSG_SIZE];
+
+ if (n == 1)
+ vim_strncpy(buff,
+ (char_u *)_("1 more file to edit. Quit anyway?"),
+! DIALOG_MSG_SIZE - 1);
+ else
+! vim_snprintf((char *)buff, DIALOG_MSG_SIZE,
+ _("%d more files to edit. Quit anyway?"), n);
+ if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 1) == VIM_YES)
+ return OK;
+***************
+*** 8926,8960 ****
+ failed = TRUE;
+ if (eap->cmdidx == CMD_mksession)
+ {
+! char_u dirnow[MAXPATHL]; /* current directory */
+
+! /*
+! * Change to session file's dir.
+! */
+! if (mch_dirname(dirnow, MAXPATHL) == FAIL
+! || mch_chdir((char *)dirnow) != 0)
+! *dirnow = NUL;
+! if (*dirnow != NUL && (ssop_flags & SSOP_SESDIR))
+! {
+! if (vim_chdirfile(fname) == OK)
+! shorten_fnames(TRUE);
+! }
+! else if (*dirnow != NUL
+! && (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
+ {
+! if (mch_chdir((char *)globaldir) == 0)
+! shorten_fnames(TRUE);
+! }
+
+! failed |= (makeopens(fd, dirnow) == FAIL);
+
+! /* restore original dir */
+! if (*dirnow != NUL && ((ssop_flags & SSOP_SESDIR)
+ || ((ssop_flags & SSOP_CURDIR) && globaldir != NULL)))
+! {
+! if (mch_chdir((char *)dirnow) != 0)
+! EMSG(_(e_prev_dir));
+! shorten_fnames(TRUE);
+ }
+ }
+ else
+--- 8926,8967 ----
+ failed = TRUE;
+ if (eap->cmdidx == CMD_mksession)
+ {
+! char_u *dirnow; /* current directory */
+
+! dirnow = alloc(MAXPATHL);
+! if (dirnow == NULL)
+! failed = TRUE;
+! else
+ {
+! /*
+! * Change to session file's dir.
+! */
+! if (mch_dirname(dirnow, MAXPATHL) == FAIL
+! || mch_chdir((char *)dirnow) != 0)
+! *dirnow = NUL;
+! if (*dirnow != NUL && (ssop_flags & SSOP_SESDIR))
+! {
+! if (vim_chdirfile(fname) == OK)
+! shorten_fnames(TRUE);
+! }
+! else if (*dirnow != NUL
+! && (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
+! {
+! if (mch_chdir((char *)globaldir) == 0)
+! shorten_fnames(TRUE);
+! }
+
+! failed |= (makeopens(fd, dirnow) == FAIL);
+
+! /* restore original dir */
+! if (*dirnow != NUL && ((ssop_flags & SSOP_SESDIR)
+ || ((ssop_flags & SSOP_CURDIR) && globaldir != NULL)))
+! {
+! if (mch_chdir((char *)dirnow) != 0)
+! EMSG(_(e_prev_dir));
+! shorten_fnames(TRUE);
+! }
+! vim_free(dirnow);
+ }
+ }
+ else
+***************
+*** 8985,8994 ****
+ else if (eap->cmdidx == CMD_mksession)
+ {
+ /* successful session write - set this_session var */
+! char_u tbuf[MAXPATHL];
+
+! if (vim_FullName(fname, tbuf, MAXPATHL, FALSE) == OK)
+! set_vim_var_string(VV_THIS_SESSION, tbuf, -1);
+ }
+ #endif
+ #ifdef MKSESSION_NL
+--- 8992,9006 ----
+ else if (eap->cmdidx == CMD_mksession)
+ {
+ /* successful session write - set this_session var */
+! char_u *tbuf;
+
+! tbuf = alloc(MAXPATHL);
+! if (tbuf != NULL)
+! {
+! if (vim_FullName(fname, tbuf, MAXPATHL, FALSE) == OK)
+! set_vim_var_string(VV_THIS_SESSION, tbuf, -1);
+! vim_free(tbuf);
+! }
+ }
+ #endif
+ #ifdef MKSESSION_NL
+***************
+*** 10677,10683 ****
+ unsigned *flagp;
+ {
+ int i;
+! char_u buf[MAXPATHL];
+ char_u *s;
+
+ if (gap->ga_len == 0)
+--- 10689,10695 ----
+ unsigned *flagp;
+ {
+ int i;
+! char_u *buf = NULL;
+ char_u *s;
+
+ if (gap->ga_len == 0)
+***************
+*** 10692,10702 ****
+ {
+ if (fullname)
+ {
+! (void)vim_FullName(s, buf, MAXPATHL, FALSE);
+! s = buf;
+ }
+ if (fputs(" ", fd) < 0 || ses_put_fname(fd, s, flagp) == FAIL)
+ return FAIL;
+ }
+ }
+ return put_eol(fd);
+--- 10704,10722 ----
+ {
+ if (fullname)
+ {
+! buf = alloc(MAXPATHL);
+! if (buf != NULL)
+! {
+! (void)vim_FullName(s, buf, MAXPATHL, FALSE);
+! s = buf;
+! }
+ }
+ if (fputs(" ", fd) < 0 || ses_put_fname(fd, s, flagp) == FAIL)
++ {
++ vim_free(buf);
+ return FAIL;
++ }
++ vim_free(buf);
+ }
+ }
+ return put_eol(fd);
+***************
+*** 10925,10931 ****
+
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) || defined(PROTO)
+ /*
+! * Make a dialog message in "buff[IOSIZE]".
+ * "format" must contain "%s".
+ */
+ void
+--- 10945,10951 ----
+
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) || defined(PROTO)
+ /*
+! * Make a dialog message in "buff[DIALOG_MSG_SIZE]".
+ * "format" must contain "%s".
+ */
+ void
+***************
+*** 10936,10942 ****
+ {
+ if (fname == NULL)
+ fname = (char_u *)_("Untitled");
+! vim_snprintf((char *)buff, IOSIZE, format, fname);
+ }
+ #endif
+
+--- 10956,10962 ----
+ {
+ if (fname == NULL)
+ fname = (char_u *)_("Untitled");
+! vim_snprintf((char *)buff, DIALOG_MSG_SIZE, format, fname);
+ }
+ #endif
+
+*** ../vim-7.3.160/src/fileio.c 2011-02-25 16:52:13.000000000 +0100
+--- src/fileio.c 2011-04-11 18:35:10.000000000 +0200
+***************
+*** 6023,6037 ****
+ shorten_fname1(full_path)
+ char_u *full_path;
+ {
+! char_u dirname[MAXPATHL];
+ char_u *p = full_path;
+
+ if (mch_dirname(dirname, MAXPATHL) == OK)
+ {
+ p = shorten_fname(full_path, dirname);
+ if (p == NULL || *p == NUL)
+ p = full_path;
+ }
+ return p;
+ }
+ #endif
+--- 6023,6041 ----
+ shorten_fname1(full_path)
+ char_u *full_path;
+ {
+! char_u *dirname;
+ char_u *p = full_path;
+
++ dirname = alloc(MAXPATHL);
++ if (dirname == NULL)
++ return full_path;
+ if (mch_dirname(dirname, MAXPATHL) == OK)
+ {
+ p = shorten_fname(full_path, dirname);
+ if (p == NULL || *p == NUL)
+ p = full_path;
+ }
++ vim_free(dirname);
+ return p;
+ }
+ #endif
+*** ../vim-7.3.160/src/hardcopy.c 2011-04-11 16:56:29.000000000 +0200
+--- src/hardcopy.c 2011-04-11 18:23:38.000000000 +0200
+***************
+*** 1759,1765 ****
+ char *name;
+ struct prt_ps_resource_S *resource;
+ {
+! char_u buffer[MAXPATHL + 1];
+
+ vim_strncpy(resource->name, (char_u *)name, 63);
+ /* Look for named resource file in runtimepath */
+--- 1759,1770 ----
+ char *name;
+ struct prt_ps_resource_S *resource;
+ {
+! char_u *buffer;
+! int retval;
+!
+! buffer = alloc(MAXPATHL + 1);
+! if (buffer == NULL)
+! return FALSE;
+
+ vim_strncpy(resource->name, (char_u *)name, 63);
+ /* Look for named resource file in runtimepath */
+***************
+*** 1768,1776 ****
+ vim_strcat(buffer, (char_u *)name, MAXPATHL);
+ vim_strcat(buffer, (char_u *)".ps", MAXPATHL);
+ resource->filename[0] = NUL;
+! return (do_in_runtimepath(buffer, FALSE, prt_resource_name,
+ resource->filename)
+ && resource->filename[0] != NUL);
+ }
+
+ /* PS CR and LF characters have platform independent values */
+--- 1773,1783 ----
+ vim_strcat(buffer, (char_u *)name, MAXPATHL);
+ vim_strcat(buffer, (char_u *)".ps", MAXPATHL);
+ resource->filename[0] = NUL;
+! retval = (do_in_runtimepath(buffer, FALSE, prt_resource_name,
+ resource->filename)
+ && resource->filename[0] != NUL);
++ vim_free(buffer);
++ return retval;
+ }
+
+ /* PS CR and LF characters have platform independent values */
+***************
+*** 2848,2862 ****
+ double right;
+ double top;
+ double bottom;
+! struct prt_ps_resource_S res_prolog;
+! struct prt_ps_resource_S res_encoding;
+ char buffer[256];
+ char_u *p_encoding;
+ char_u *p;
+ #ifdef FEAT_MBYTE
+! struct prt_ps_resource_S res_cidfont;
+! struct prt_ps_resource_S res_cmap;
+ #endif
+
+ /*
+ * PS DSC Header comments - no PS code!
+--- 2855,2887 ----
+ double right;
+ double top;
+ double bottom;
+! struct prt_ps_resource_S *res_prolog;
+! struct prt_ps_resource_S *res_encoding;
+ char buffer[256];
+ char_u *p_encoding;
+ char_u *p;
+ #ifdef FEAT_MBYTE
+! struct prt_ps_resource_S *res_cidfont;
+! struct prt_ps_resource_S *res_cmap;
+ #endif
++ int retval = FALSE;
++
++ res_prolog = (struct prt_ps_resource_S *)
++ alloc(sizeof(struct prt_ps_resource_S));
++ res_encoding = (struct prt_ps_resource_S *)
++ alloc(sizeof(struct prt_ps_resource_S));
++ #ifdef FEAT_MBYTE
++ res_cidfont = (struct prt_ps_resource_S *)
++ alloc(sizeof(struct prt_ps_resource_S));
++ res_cmap = (struct prt_ps_resource_S *)
++ alloc(sizeof(struct prt_ps_resource_S));
++ #endif
++ if (res_prolog == NULL || res_encoding == NULL
++ #ifdef FEAT_MBYTE
++ || res_cidfont == NULL || res_cmap == NULL
++ #endif
++ )
++ goto theend;
+
+ /*
+ * PS DSC Header comments - no PS code!
+***************
+*** 2932,2958 ****
+ #endif
+
+ /* Search for external resources VIM supplies */
+! if (!prt_find_resource("prolog", &res_prolog))
+ {
+ EMSG(_("E456: Can't find PostScript resource file \"prolog.ps\""));
+ return FALSE;
+ }
+! if (!prt_open_resource(&res_prolog))
+ return FALSE;
+! if (!prt_check_resource(&res_prolog, PRT_PROLOG_VERSION))
+ return FALSE;
+ #ifdef FEAT_MBYTE
+ if (prt_out_mbyte)
+ {
+ /* Look for required version of multi-byte printing procset */
+! if (!prt_find_resource("cidfont", &res_cidfont))
+ {
+ EMSG(_("E456: Can't find PostScript resource file \"cidfont.ps\""));
+ return FALSE;
+ }
+! if (!prt_open_resource(&res_cidfont))
+ return FALSE;
+! if (!prt_check_resource(&res_cidfont, PRT_CID_PROLOG_VERSION))
+ return FALSE;
+ }
+ #endif
+--- 2957,2983 ----
+ #endif
+
+ /* Search for external resources VIM supplies */
+! if (!prt_find_resource("prolog", res_prolog))
+ {
+ EMSG(_("E456: Can't find PostScript resource file \"prolog.ps\""));
+ return FALSE;
+ }
+! if (!prt_open_resource(res_prolog))
+ return FALSE;
+! if (!prt_check_resource(res_prolog, PRT_PROLOG_VERSION))
+ return FALSE;
+ #ifdef FEAT_MBYTE
+ if (prt_out_mbyte)
+ {
+ /* Look for required version of multi-byte printing procset */
+! if (!prt_find_resource("cidfont", res_cidfont))
+ {
+ EMSG(_("E456: Can't find PostScript resource file \"cidfont.ps\""));
+ return FALSE;
+ }
+! if (!prt_open_resource(res_cidfont))
+ return FALSE;
+! if (!prt_check_resource(res_cidfont, PRT_CID_PROLOG_VERSION))
+ return FALSE;
+ }
+ #endif
+***************
+*** 2968,2974 ****
+ #endif
+ p_encoding = enc_skip(p_penc);
+ if (*p_encoding == NUL
+! || !prt_find_resource((char *)p_encoding, &res_encoding))
+ {
+ /* 'printencoding' not set or not supported - find alternate */
+ #ifdef FEAT_MBYTE
+--- 2993,2999 ----
+ #endif
+ p_encoding = enc_skip(p_penc);
+ if (*p_encoding == NUL
+! || !prt_find_resource((char *)p_encoding, res_encoding))
+ {
+ /* 'printencoding' not set or not supported - find alternate */
+ #ifdef FEAT_MBYTE
+***************
+*** 2977,2989 ****
+ p_encoding = enc_skip(p_enc);
+ props = enc_canon_props(p_encoding);
+ if (!(props & ENC_8BIT)
+! || !prt_find_resource((char *)p_encoding, &res_encoding))
+ /* 8-bit 'encoding' is not supported */
+ #endif
+ {
+ /* Use latin1 as default printing encoding */
+ p_encoding = (char_u *)"latin1";
+! if (!prt_find_resource((char *)p_encoding, &res_encoding))
+ {
+ EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
+ p_encoding);
+--- 3002,3014 ----
+ p_encoding = enc_skip(p_enc);
+ props = enc_canon_props(p_encoding);
+ if (!(props & ENC_8BIT)
+! || !prt_find_resource((char *)p_encoding, res_encoding))
+ /* 8-bit 'encoding' is not supported */
+ #endif
+ {
+ /* Use latin1 as default printing encoding */
+ p_encoding = (char_u *)"latin1";
+! if (!prt_find_resource((char *)p_encoding, res_encoding))
+ {
+ EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
+ p_encoding);
+***************
+*** 2991,2997 ****
+ }
+ }
+ }
+! if (!prt_open_resource(&res_encoding))
+ return FALSE;
+ /* For the moment there are no checks on encoding resource files to
+ * perform */
+--- 3016,3022 ----
+ }
+ }
+ }
+! if (!prt_open_resource(res_encoding))
+ return FALSE;
+ /* For the moment there are no checks on encoding resource files to
+ * perform */
+***************
+*** 3005,3017 ****
+ if (prt_use_courier)
+ {
+ /* Include ASCII range encoding vector */
+! if (!prt_find_resource(prt_ascii_encoding, &res_encoding))
+ {
+ EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
+ prt_ascii_encoding);
+ return FALSE;
+ }
+! if (!prt_open_resource(&res_encoding))
+ return FALSE;
+ /* For the moment there are no checks on encoding resource files to
+ * perform */
+--- 3030,3042 ----
+ if (prt_use_courier)
+ {
+ /* Include ASCII range encoding vector */
+! if (!prt_find_resource(prt_ascii_encoding, res_encoding))
+ {
+ EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
+ prt_ascii_encoding);
+ return FALSE;
+ }
+! if (!prt_open_resource(res_encoding))
+ return FALSE;
+ /* For the moment there are no checks on encoding resource files to
+ * perform */
+***************
+*** 3034,3077 ****
+ if (prt_out_mbyte && prt_custom_cmap)
+ {
+ /* Find user supplied CMap */
+! if (!prt_find_resource(prt_cmap, &res_cmap))
+ {
+ EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
+ prt_cmap);
+ return FALSE;
+ }
+! if (!prt_open_resource(&res_cmap))
+ return FALSE;
+ }
+ #endif
+
+ /* List resources supplied */
+! STRCPY(buffer, res_prolog.title);
+ STRCAT(buffer, " ");
+! STRCAT(buffer, res_prolog.version);
+ prt_dsc_resources("DocumentSuppliedResources", "procset", buffer);
+ #ifdef FEAT_MBYTE
+ if (prt_out_mbyte)
+ {
+! STRCPY(buffer, res_cidfont.title);
+ STRCAT(buffer, " ");
+! STRCAT(buffer, res_cidfont.version);
+ prt_dsc_resources(NULL, "procset", buffer);
+
+ if (prt_custom_cmap)
+ {
+! STRCPY(buffer, res_cmap.title);
+ STRCAT(buffer, " ");
+! STRCAT(buffer, res_cmap.version);
+ prt_dsc_resources(NULL, "cmap", buffer);
+ }
+ }
+ if (!prt_out_mbyte || prt_use_courier)
+ #endif
+ {
+! STRCPY(buffer, res_encoding.title);
+ STRCAT(buffer, " ");
+! STRCAT(buffer, res_encoding.version);
+ prt_dsc_resources(NULL, "encoding", buffer);
+ }
+ prt_dsc_requirements(prt_duplex, prt_tumble, prt_collate,
+--- 3059,3102 ----
+ if (prt_out_mbyte && prt_custom_cmap)
+ {
+ /* Find user supplied CMap */
+! if (!prt_find_resource(prt_cmap, res_cmap))
+ {
+ EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
+ prt_cmap);
+ return FALSE;
+ }
+! if (!prt_open_resource(res_cmap))
+ return FALSE;
+ }
+ #endif
+
+ /* List resources supplied */
+! STRCPY(buffer, res_prolog->title);
+ STRCAT(buffer, " ");
+! STRCAT(buffer, res_prolog->version);
+ prt_dsc_resources("DocumentSuppliedResources", "procset", buffer);
+ #ifdef FEAT_MBYTE
+ if (prt_out_mbyte)
+ {
+! STRCPY(buffer, res_cidfont->title);
+ STRCAT(buffer, " ");
+! STRCAT(buffer, res_cidfont->version);
+ prt_dsc_resources(NULL, "procset", buffer);
+
+ if (prt_custom_cmap)
+ {
+! STRCPY(buffer, res_cmap->title);
+ STRCAT(buffer, " ");
+! STRCAT(buffer, res_cmap->version);
+ prt_dsc_resources(NULL, "cmap", buffer);
+ }
+ }
+ if (!prt_out_mbyte || prt_use_courier)
+ #endif
+ {
+! STRCPY(buffer, res_encoding->title);
+ STRCAT(buffer, " ");
+! STRCAT(buffer, res_encoding->version);
+ prt_dsc_resources(NULL, "encoding", buffer);
+ }
+ prt_dsc_requirements(prt_duplex, prt_tumble, prt_collate,
+***************
+*** 3114,3128 ****
+ prt_dsc_noarg("BeginProlog");
+
+ /* Add required procsets - NOTE: order is important! */
+! if (!prt_add_resource(&res_prolog))
+ return FALSE;
+ #ifdef FEAT_MBYTE
+ if (prt_out_mbyte)
+ {
+ /* Add CID font procset, and any user supplied CMap */
+! if (!prt_add_resource(&res_cidfont))
+ return FALSE;
+! if (prt_custom_cmap && !prt_add_resource(&res_cmap))
+ return FALSE;
+ }
+ #endif
+--- 3139,3153 ----
+ prt_dsc_noarg("BeginProlog");
+
+ /* Add required procsets - NOTE: order is important! */
+! if (!prt_add_resource(res_prolog))
+ return FALSE;
+ #ifdef FEAT_MBYTE
+ if (prt_out_mbyte)
+ {
+ /* Add CID font procset, and any user supplied CMap */
+! if (!prt_add_resource(res_cidfont))
+ return FALSE;
+! if (prt_custom_cmap && !prt_add_resource(res_cmap))
+ return FALSE;
+ }
+ #endif
+***************
+*** 3132,3138 ****
+ #endif
+ /* There will be only one Roman font encoding to be included in the PS
+ * file. */
+! if (!prt_add_resource(&res_encoding))
+ return FALSE;
+
+ prt_dsc_noarg("EndProlog");
+--- 3157,3163 ----
+ #endif
+ /* There will be only one Roman font encoding to be included in the PS
+ * file. */
+! if (!prt_add_resource(res_encoding))
+ return FALSE;
+
+ prt_dsc_noarg("EndProlog");
+***************
+*** 3248,3254 ****
+ prt_dsc_noarg("EndSetup");
+
+ /* Fail if any problems writing out to the PS file */
+! return !prt_file_error;
+ }
+
+ void
+--- 3273,3289 ----
+ prt_dsc_noarg("EndSetup");
+
+ /* Fail if any problems writing out to the PS file */
+! retval = !prt_file_error;
+!
+! theend:
+! vim_free(res_prolog);
+! vim_free(res_encoding);
+! #ifdef FEAT_MBYTE
+! vim_free(res_cidfont);
+! vim_free(res_cmap);
+! #endif
+!
+! return retval;
+ }
+
+ void
+*** ../vim-7.3.160/src/quickfix.c 2010-12-02 15:33:10.000000000 +0100
+--- src/quickfix.c 2011-04-11 17:54:07.000000000 +0200
+***************
+*** 3049,3056 ****
+ int flags = 0;
+ colnr_T col;
+ long tomatch;
+! char_u dirname_start[MAXPATHL];
+! char_u dirname_now[MAXPATHL];
+ char_u *target_dir = NULL;
+ #ifdef FEAT_AUTOCMD
+ char_u *au_name = NULL;
+--- 3049,3056 ----
+ int flags = 0;
+ colnr_T col;
+ long tomatch;
+! char_u *dirname_start = NULL;
+! char_u *dirname_now = NULL;
+ char_u *target_dir = NULL;
+ #ifdef FEAT_AUTOCMD
+ char_u *au_name = NULL;
+***************
+*** 3128,3133 ****
+--- 3128,3138 ----
+ goto theend;
+ }
+
++ dirname_start = alloc(MAXPATHL);
++ dirname_now = alloc(MAXPATHL);
++ if (dirname_start == NULL || dirname_now == NULL)
++ goto theend;
++
+ /* Remember the current directory, because a BufRead autocommand that does
+ * ":lcd %:p:h" changes the meaning of short path names. */
+ mch_dirname(dirname_start, MAXPATHL);
+***************
+*** 3364,3369 ****
+--- 3369,3376 ----
+ }
+
+ theend:
++ vim_free(dirname_now);
++ vim_free(dirname_start);
+ vim_free(target_dir);
+ vim_free(regmatch.regprog);
+ }
+*** ../vim-7.3.160/src/main.c 2011-03-22 18:10:34.000000000 +0100
+--- src/main.c 2011-04-11 18:06:06.000000000 +0200
+***************
+*** 3814,3820 ****
+ int i;
+ char_u *inicmd = NULL;
+ char_u *p;
+! char_u cwd[MAXPATHL];
+
+ if (filec > 0 && filev[0][0] == '+')
+ {
+--- 3814,3820 ----
+ int i;
+ char_u *inicmd = NULL;
+ char_u *p;
+! char_u *cwd;
+
+ if (filec > 0 && filev[0][0] == '+')
+ {
+***************
+*** 3827,3841 ****
+ mainerr_arg_missing((char_u *)filev[-1]);
+
+ /* Temporarily cd to the current directory to handle relative file names. */
+ if (mch_dirname(cwd, MAXPATHL) != OK)
+ return NULL;
+! if ((p = vim_strsave_escaped_ext(cwd,
+ #ifdef BACKSLASH_IN_FILENAME
+ "", /* rem_backslash() will tell what chars to escape */
+ #else
+ PATH_ESC_CHARS,
+ #endif
+! '\\', TRUE)) == NULL)
+ return NULL;
+ ga_init2(&ga, 1, 100);
+ ga_concat(&ga, (char_u *)"<C-\\><C-N>:cd ");
+--- 3827,3849 ----
+ mainerr_arg_missing((char_u *)filev[-1]);
+
+ /* Temporarily cd to the current directory to handle relative file names. */
++ cwd = alloc(MAXPATHL);
++ if (cwd == NULL)
++ return NULL;
+ if (mch_dirname(cwd, MAXPATHL) != OK)
++ {
++ vim_free(cwd);
+ return NULL;
+! }
+! p = vim_strsave_escaped_ext(cwd,
+ #ifdef BACKSLASH_IN_FILENAME
+ "", /* rem_backslash() will tell what chars to escape */
+ #else
+ PATH_ESC_CHARS,
+ #endif
+! '\\', TRUE);
+! vim_free(cwd);
+! if (p == NULL)
+ return NULL;
+ ga_init2(&ga, 1, 100);
+ ga_concat(&ga, (char_u *)"<C-\\><C-N>:cd ");
+*** ../vim-7.3.160/src/netbeans.c 2011-04-11 16:56:29.000000000 +0200
+--- src/netbeans.c 2011-04-11 18:27:08.000000000 +0200
+***************
+*** 2891,2897 ****
+ char_u *text;
+ linenr_T lnum;
+ int col;
+! char buf[MAXPATHL * 2 + 25];
+ char_u *p;
+
+ /* Don't do anything when 'ballooneval' is off, messages scrolled the
+--- 2891,2897 ----
+ char_u *text;
+ linenr_T lnum;
+ int col;
+! char *buf;
+ char_u *p;
+
+ /* Don't do anything when 'ballooneval' is off, messages scrolled the
+***************
+*** 2905,2919 ****
+ * length. */
+ if (text != NULL && text[0] != NUL && STRLEN(text) < MAXPATHL)
+ {
+! p = nb_quote(text);
+! if (p != NULL)
+ {
+! vim_snprintf(buf, sizeof(buf),
+! "0:balloonText=%d \"%s\"\n", r_cmdno, p);
+! vim_free(p);
+ }
+- nbdebug(("EVT: %s", buf));
+- nb_send(buf, "netbeans_beval_cb");
+ }
+ vim_free(text);
+ }
+--- 2905,2924 ----
+ * length. */
+ if (text != NULL && text[0] != NUL && STRLEN(text) < MAXPATHL)
+ {
+! buf = (char *)alloc(MAXPATHL * 2 + 25);
+! if (buf != NULL)
+ {
+! p = nb_quote(text);
+! if (p != NULL)
+! {
+! vim_snprintf(buf, MAXPATHL * 2 + 25,
+! "0:balloonText=%d \"%s\"\n", r_cmdno, p);
+! vim_free(p);
+! }
+! nbdebug(("EVT: %s", buf));
+! nb_send(buf, "netbeans_beval_cb");
+! vim_free(buf);
+ }
+ }
+ vim_free(text);
+ }
+*** ../vim-7.3.160/src/spell.c 2011-04-11 16:56:29.000000000 +0200
+--- src/spell.c 2011-04-11 18:00:49.000000000 +0200
+***************
+*** 8590,8596 ****
+ spellinfo_T *spin;
+ char_u *wfname;
+ {
+! char_u fname[MAXPATHL];
+ int len;
+ slang_T *slang;
+ int free_slang = FALSE;
+--- 8590,8596 ----
+ spellinfo_T *spin;
+ char_u *wfname;
+ {
+! char_u *fname = NULL;
+ int len;
+ slang_T *slang;
+ int free_slang = FALSE;
+***************
+*** 8654,8659 ****
+--- 8654,8662 ----
+ * Write the .sug file.
+ * Make the file name by changing ".spl" to ".sug".
+ */
++ fname = alloc(MAXPATHL);
++ if (fname == NULL)
++ goto theend;
+ vim_strncpy(fname, wfname, MAXPATHL - 1);
+ len = (int)STRLEN(fname);
+ fname[len - 2] = 'u';
+***************
+*** 8661,8666 ****
+--- 8664,8670 ----
+ sug_write(spin, fname);
+
+ theend:
++ vim_free(fname);
+ if (free_slang)
+ slang_free(slang);
+ free_blocks(spin->si_blocks);
+***************
+*** 9106,9113 ****
+ int overwrite; /* overwrite existing output file */
+ int added_word; /* invoked through "zg" */
+ {
+! char_u fname[MAXPATHL];
+! char_u wfname[MAXPATHL];
+ char_u **innames;
+ int incount;
+ afffile_T *(afile[8]);
+--- 9110,9117 ----
+ int overwrite; /* overwrite existing output file */
+ int added_word; /* invoked through "zg" */
+ {
+! char_u *fname = NULL;
+! char_u *wfname;
+ char_u **innames;
+ int incount;
+ afffile_T *(afile[8]);
+***************
+*** 9135,9140 ****
+--- 9139,9148 ----
+ innames = &fnames[1];
+ incount = fcount - 1;
+
++ wfname = alloc(MAXPATHL);
++ if (wfname == NULL)
++ return;
++
+ if (fcount >= 1)
+ {
+ len = (int)STRLEN(fnames[0]);
+***************
+*** 9144,9167 ****
+ * "path/en.latin1.add.spl". */
+ innames = &fnames[0];
+ incount = 1;
+! vim_snprintf((char *)wfname, sizeof(wfname), "%s.spl", fnames[0]);
+ }
+ else if (fcount == 1)
+ {
+ /* For ":mkspell path/vim" output file is "path/vim.latin1.spl". */
+ innames = &fnames[0];
+ incount = 1;
+! vim_snprintf((char *)wfname, sizeof(wfname), SPL_FNAME_TMPL,
+ fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc());
+ }
+ else if (len > 4 && STRCMP(fnames[0] + len - 4, ".spl") == 0)
+ {
+ /* Name ends in ".spl", use as the file name. */
+! vim_strncpy(wfname, fnames[0], sizeof(wfname) - 1);
+ }
+ else
+ /* Name should be language, make the file name from it. */
+! vim_snprintf((char *)wfname, sizeof(wfname), SPL_FNAME_TMPL,
+ fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc());
+
+ /* Check for .ascii.spl. */
+--- 9152,9175 ----
+ * "path/en.latin1.add.spl". */
+ innames = &fnames[0];
+ incount = 1;
+! vim_snprintf((char *)wfname, MAXPATHL, "%s.spl", fnames[0]);
+ }
+ else if (fcount == 1)
+ {
+ /* For ":mkspell path/vim" output file is "path/vim.latin1.spl". */
+ innames = &fnames[0];
+ incount = 1;
+! vim_snprintf((char *)wfname, MAXPATHL, SPL_FNAME_TMPL,
+ fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc());
+ }
+ else if (len > 4 && STRCMP(fnames[0] + len - 4, ".spl") == 0)
+ {
+ /* Name ends in ".spl", use as the file name. */
+! vim_strncpy(wfname, fnames[0], MAXPATHL - 1);
+ }
+ else
+ /* Name should be language, make the file name from it. */
+! vim_snprintf((char *)wfname, MAXPATHL, SPL_FNAME_TMPL,
+ fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc());
+
+ /* Check for .ascii.spl. */
+***************
+*** 9186,9199 ****
+ if (!overwrite && mch_stat((char *)wfname, &st) >= 0)
+ {
+ EMSG(_(e_exists));
+! return;
+ }
+ if (mch_isdir(wfname))
+ {
+ EMSG2(_(e_isadir2), wfname);
+! return;
+ }
+
+ /*
+ * Init the aff and dic pointers.
+ * Get the region names if there are more than 2 arguments.
+--- 9194,9211 ----
+ if (!overwrite && mch_stat((char *)wfname, &st) >= 0)
+ {
+ EMSG(_(e_exists));
+! goto theend;
+ }
+ if (mch_isdir(wfname))
+ {
+ EMSG2(_(e_isadir2), wfname);
+! goto theend;
+ }
+
++ fname = alloc(MAXPATHL);
++ if (fname == NULL)
++ goto theend;
++
+ /*
+ * Init the aff and dic pointers.
+ * Get the region names if there are more than 2 arguments.
+***************
+*** 9209,9215 ****
+ || innames[i][len - 3] != '_')
+ {
+ EMSG2(_("E755: Invalid region in %s"), innames[i]);
+! return;
+ }
+ spin.si_region_name[i * 2] = TOLOWER_ASC(innames[i][len - 2]);
+ spin.si_region_name[i * 2 + 1] =
+--- 9221,9227 ----
+ || innames[i][len - 3] != '_')
+ {
+ EMSG2(_("E755: Invalid region in %s"), innames[i]);
+! goto theend;
+ }
+ spin.si_region_name[i * 2] = TOLOWER_ASC(innames[i][len - 2]);
+ spin.si_region_name[i * 2 + 1] =
+***************
+*** 9226,9232 ****
+ || spin.si_prefroot == NULL)
+ {
+ free_blocks(spin.si_blocks);
+! return;
+ }
+
+ /* When not producing a .add.spl file clear the character table when
+--- 9238,9244 ----
+ || spin.si_prefroot == NULL)
+ {
+ free_blocks(spin.si_blocks);
+! goto theend;
+ }
+
+ /* When not producing a .add.spl file clear the character table when
+***************
+*** 9247,9253 ****
+ spin.si_conv.vc_type = CONV_NONE;
+ spin.si_region = 1 << i;
+
+! vim_snprintf((char *)fname, sizeof(fname), "%s.aff", innames[i]);
+ if (mch_stat((char *)fname, &st) >= 0)
+ {
+ /* Read the .aff file. Will init "spin->si_conv" based on the
+--- 9259,9265 ----
+ spin.si_conv.vc_type = CONV_NONE;
+ spin.si_region = 1 << i;
+
+! vim_snprintf((char *)fname, MAXPATHL, "%s.aff", innames[i]);
+ if (mch_stat((char *)fname, &st) >= 0)
+ {
+ /* Read the .aff file. Will init "spin->si_conv" based on the
+***************
+*** 9258,9264 ****
+ else
+ {
+ /* Read the .dic file and store the words in the trees. */
+! vim_snprintf((char *)fname, sizeof(fname), "%s.dic",
+ innames[i]);
+ if (spell_read_dic(&spin, fname, afile[i]) == FAIL)
+ error = TRUE;
+--- 9270,9276 ----
+ else
+ {
+ /* Read the .dic file and store the words in the trees. */
+! vim_snprintf((char *)fname, MAXPATHL, "%s.dic",
+ innames[i]);
+ if (spell_read_dic(&spin, fname, afile[i]) == FAIL)
+ error = TRUE;
+***************
+*** 9340,9345 ****
+--- 9352,9361 ----
+ spell_make_sugfile(&spin, wfname);
+
+ }
++
++ theend:
++ vim_free(fname);
++ vim_free(wfname);
+ }
+
+ /*
+***************
+*** 9392,9398 ****
+ buf_T *buf = NULL;
+ int new_spf = FALSE;
+ char_u *fname;
+! char_u fnamebuf[MAXPATHL];
+ char_u line[MAXWLEN * 2];
+ long fpos, fpos_next = 0;
+ int i;
+--- 9408,9414 ----
+ buf_T *buf = NULL;
+ int new_spf = FALSE;
+ char_u *fname;
+! char_u *fnamebuf = NULL;
+ char_u line[MAXWLEN * 2];
+ long fpos, fpos_next = 0;
+ int i;
+***************
+*** 9422,9427 ****
+--- 9438,9446 ----
+ EMSG2(_(e_notset), "spellfile");
+ return;
+ }
++ fnamebuf = alloc(MAXPATHL);
++ if (fnamebuf == NULL)
++ return;
+
+ for (spf = curwin->w_s->b_p_spf, i = 1; *spf != NUL; ++i)
+ {
+***************
+*** 9431,9436 ****
+--- 9450,9456 ----
+ if (*spf == NUL)
+ {
+ EMSGN(_("E765: 'spellfile' does not have %ld entries"), idx);
++ vim_free(fnamebuf);
+ return;
+ }
+ }
+***************
+*** 9442,9447 ****
+--- 9462,9468 ----
+ if (buf != NULL && bufIsChanged(buf))
+ {
+ EMSG(_(e_bufloaded));
++ vim_free(fnamebuf);
+ return;
+ }
+
+***************
+*** 9536,9541 ****
+--- 9557,9563 ----
+
+ redraw_all_later(SOME_VALID);
+ }
++ vim_free(fnamebuf);
+ }
+
+ /*
+***************
+*** 9544,9550 ****
+ static void
+ init_spellfile()
+ {
+! char_u buf[MAXPATHL];
+ int l;
+ char_u *fname;
+ char_u *rtp;
+--- 9566,9572 ----
+ static void
+ init_spellfile()
+ {
+! char_u *buf;
+ int l;
+ char_u *fname;
+ char_u *rtp;
+***************
+*** 9554,9559 ****
+--- 9576,9585 ----
+
+ if (*curwin->w_s->b_p_spl != NUL && curwin->w_s->b_langp.ga_len > 0)
+ {
++ buf = alloc(MAXPATHL);
++ if (buf == NULL)
++ return;
++
+ /* Find the end of the language name. Exclude the region. If there
+ * is a path separator remember the start of the tail. */
+ for (lend = curwin->w_s->b_p_spl; *lend != NUL
+***************
+*** 9597,9603 ****
+ "/%.*s", (int)(lend - lstart), lstart);
+ }
+ l = (int)STRLEN(buf);
+! fname = LANGP_ENTRY(curwin->w_s->b_langp, 0)->lp_slang->sl_fname;
+ vim_snprintf((char *)buf + l, MAXPATHL - l, ".%s.add",
+ fname != NULL
+ && strstr((char *)gettail(fname), ".ascii.") != NULL
+--- 9623,9630 ----
+ "/%.*s", (int)(lend - lstart), lstart);
+ }
+ l = (int)STRLEN(buf);
+! fname = LANGP_ENTRY(curwin->w_s->b_langp, 0)
+! ->lp_slang->sl_fname;
+ vim_snprintf((char *)buf + l, MAXPATHL - l, ".%s.add",
+ fname != NULL
+ && strstr((char *)gettail(fname), ".ascii.") != NULL
+***************
+*** 9607,9612 ****
+--- 9634,9641 ----
+ }
+ aspath = FALSE;
+ }
++
++ vim_free(buf);
+ }
+ }
+
+*** ../vim-7.3.160/src/tag.c 2011-04-11 16:56:29.000000000 +0200
+--- src/tag.c 2011-04-11 20:54:36.000000000 +0200
+***************
+*** 775,791 ****
+ {
+ list_T *list;
+ char_u tag_name[128 + 1];
+! char_u fname[MAXPATHL + 1];
+! char_u cmd[CMDBUFFSIZE + 1];
+
+ /*
+ * Add the matching tags to the location list for the current
+ * window.
+ */
+
+ list = list_alloc();
+! if (list == NULL)
+ goto end_do_tag;
+
+ for (i = 0; i < num_matches; ++i)
+ {
+--- 775,799 ----
+ {
+ list_T *list;
+ char_u tag_name[128 + 1];
+! char_u *fname;
+! char_u *cmd;
+
+ /*
+ * Add the matching tags to the location list for the current
+ * window.
+ */
+
++ fname = alloc(MAXPATHL + 1);
++ cmd = alloc(CMDBUFFSIZE + 1);
+ list = list_alloc();
+! if (list == NULL || fname == NULL || cmd == NULL)
+! {
+! vim_free(cmd);
+! vim_free(fname);
+! if (list != NULL)
+! list_free(list, TRUE);
+ goto end_do_tag;
++ }
+
+ for (i = 0; i < num_matches; ++i)
+ {
+***************
+*** 911,916 ****
+--- 919,926 ----
+ set_errorlist(curwin, list, ' ', IObuff);
+
+ list_free(list, TRUE);
++ vim_free(fname);
++ vim_free(cmd);
+
+ cur_match = 0; /* Jump to the first tag */
+ }
+***************
+*** 3777,3784 ****
+ char_u *start; /* start of the value */
+ char_u *end; /* after the value; can be NULL */
+ {
+! char_u buf[MAXPATHL];
+ int len = 0;
+
+ /* check that the field name doesn't exist yet */
+ if (dict_find(dict, (char_u *)field_name, -1) != NULL)
+--- 3787,3795 ----
+ char_u *start; /* start of the value */
+ char_u *end; /* after the value; can be NULL */
+ {
+! char_u *buf;
+ int len = 0;
++ int retval;
+
+ /* check that the field name doesn't exist yet */
+ if (dict_find(dict, (char_u *)field_name, -1) != NULL)
+***************
+*** 3791,3796 ****
+--- 3802,3810 ----
+ }
+ return FAIL;
+ }
++ buf = alloc(MAXPATHL);
++ if (buf == NULL)
++ return FAIL;
+ if (start != NULL)
+ {
+ if (end == NULL)
+***************
+*** 3800,3811 ****
+ --end;
+ }
+ len = (int)(end - start);
+! if (len > (int)sizeof(buf) - 1)
+! len = sizeof(buf) - 1;
+ vim_strncpy(buf, start, len);
+ }
+ buf[len] = NUL;
+! return dict_add_nr_str(dict, field_name, 0L, buf);
+ }
+
+ /*
+--- 3814,3827 ----
+ --end;
+ }
+ len = (int)(end - start);
+! if (len > MAXPATHL - 1)
+! len = MAXPATHL - 1;
+ vim_strncpy(buf, start, len);
+ }
+ buf[len] = NUL;
+! retval = dict_add_nr_str(dict, field_name, 0L, buf);
+! vim_free(buf);
+! return retval;
+ }
+
+ /*
+*** ../vim-7.3.160/src/vim.h 2010-12-30 12:30:26.000000000 +0100
+--- src/vim.h 2011-04-11 20:50:54.000000000 +0200
+***************
+*** 1435,1440 ****
+--- 1435,1442 ----
+
+ #define IOSIZE (1024+1) /* file i/o and sprintf buffer size */
+
++ #define DIALOG_MSG_SIZE 1000 /* buffer size for dialog_msg() */
++
+ #ifdef FEAT_MBYTE
+ # define MSG_BUF_LEN 480 /* length of buffer for small messages */
+ # define MSG_BUF_CLEN (MSG_BUF_LEN / 6) /* cell length (worst case: utf-8
+*** ../vim-7.3.160/src/xxd/xxd.c 2011-04-02 14:44:50.000000000 +0200
+--- src/xxd/xxd.c 2011-04-11 16:40:48.000000000 +0200
+***************
+*** 476,482 ****
+ int octspergrp = -1; /* number of octets grouped in output */
+ int grplen; /* total chars per octet group */
+ long length = -1, n = 0, seekoff = 0;
+! char l[LLEN+1];
+ char *pp;
+
+ #ifdef AMIGA
+--- 476,482 ----
+ int octspergrp = -1; /* number of octets grouped in output */
+ int grplen; /* total chars per octet group */
+ long length = -1, n = 0, seekoff = 0;
+! static char l[LLEN+1]; /* static because it may be too big for stack */
+ char *pp;
+
+ #ifdef AMIGA
+*** ../vim-7.3.160/src/version.c 2011-04-11 16:56:29.000000000 +0200
+--- src/version.c 2011-04-11 21:15:33.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 161,
+ /**/
+
+--
+The process for understanding customers primarily involves sitting around with
+other marketing people and talking about what you would to if you were dumb
+enough to be a customer.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.162 b/source/ap/vim/patches/7.3.162
new file mode 100644
index 000000000..3f0173afb
--- /dev/null
+++ b/source/ap/vim/patches/7.3.162
@@ -0,0 +1,83 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.162
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.162
+Problem: No error message when assigning to a list with an index out of
+ range. (Yukihiro Nakadaira)
+Solution: Add the error message.
+Files: src/eval.c
+
+
+*** ../vim-7.3.161/src/eval.c 2011-04-11 21:35:03.000000000 +0200
+--- src/eval.c 2011-04-21 13:40:38.000000000 +0200
+***************
+*** 2794,2799 ****
+--- 2794,2801 ----
+ {
+ if (lp->ll_range && !lp->ll_empty2)
+ clear_tv(&var2);
++ if (!quiet)
++ EMSGN(_(e_listidx), lp->ll_n1);
+ return NULL;
+ }
+
+***************
+*** 2811,2817 ****
+--- 2813,2823 ----
+ {
+ ni = list_find(lp->ll_list, lp->ll_n2);
+ if (ni == NULL)
++ {
++ if (!quiet)
++ EMSGN(_(e_listidx), lp->ll_n2);
+ return NULL;
++ }
+ lp->ll_n2 = list_idx_of_item(lp->ll_list, ni);
+ }
+
+***************
+*** 2819,2825 ****
+--- 2825,2835 ----
+ if (lp->ll_n1 < 0)
+ lp->ll_n1 = list_idx_of_item(lp->ll_list, lp->ll_li);
+ if (lp->ll_n2 < lp->ll_n1)
++ {
++ if (!quiet)
++ EMSGN(_(e_listidx), lp->ll_n2);
+ return NULL;
++ }
+ }
+
+ lp->ll_tv = &lp->ll_li->li_tv;
+*** ../vim-7.3.161/src/version.c 2011-04-11 21:35:03.000000000 +0200
+--- src/version.c 2011-04-21 13:44:46.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 162,
+ /**/
+
+--
+Far back in the mists of ancient time, in the great and glorious days of the
+former Galactic Empire, life was wild, rich and largely tax free.
+Mighty starships plied their way between exotic suns, seeking adventure and
+reward among the furthest reaches of Galactic space. In those days, spirits
+were brave, the stakes were high, men were real men, women were real women
+and small furry creatures from Alpha Centauri were real small furry creatures
+from Alpha Centauri. And all dared to brave unknown terrors, to do mighty
+deeds, to boldly split infinitives that no man had split before -- and thus
+was the Empire forged.
+ -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.163 b/source/ap/vim/patches/7.3.163
new file mode 100644
index 000000000..b5f1cb4ad
--- /dev/null
+++ b/source/ap/vim/patches/7.3.163
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.163
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.163
+Problem: For the default of 'shellpipe' "mksh" and "pdksh" are not
+ recognized.
+Solution: Recognize these shell names.
+Files: src/option.c
+
+
+*** ../vim-7.3.162/src/option.c 2011-03-22 14:35:01.000000000 +0100
+--- src/option.c 2011-04-15 20:49:54.000000000 +0200
+***************
+*** 3846,3851 ****
+--- 3846,3853 ----
+ # ifndef OS2 /* Always use bourne shell style redirection if we reach this */
+ if ( fnamecmp(p, "sh") == 0
+ || fnamecmp(p, "ksh") == 0
++ || fnamecmp(p, "mksh") == 0
++ || fnamecmp(p, "pdksh") == 0
+ || fnamecmp(p, "zsh") == 0
+ || fnamecmp(p, "zsh-beta") == 0
+ || fnamecmp(p, "bash") == 0
+***************
+*** 3853,3858 ****
+--- 3855,3862 ----
+ || fnamecmp(p, "cmd") == 0
+ || fnamecmp(p, "sh.exe") == 0
+ || fnamecmp(p, "ksh.exe") == 0
++ || fnamecmp(p, "mksh.exe") == 0
++ || fnamecmp(p, "pdksh.exe") == 0
+ || fnamecmp(p, "zsh.exe") == 0
+ || fnamecmp(p, "zsh-beta.exe") == 0
+ || fnamecmp(p, "bash.exe") == 0
+*** ../vim-7.3.162/src/version.c 2011-04-21 14:27:21.000000000 +0200
+--- src/version.c 2011-04-28 12:56:03.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 163,
+ /**/
+
+--
+If you put 7 of the most talented OSS developers in a room for a week
+and asked them to fix a bug in a spreadsheet program, in 1 week
+you'd have 2 new mail readers and a text-based web browser.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.164 b/source/ap/vim/patches/7.3.164
new file mode 100644
index 000000000..9049f1b58
--- /dev/null
+++ b/source/ap/vim/patches/7.3.164
@@ -0,0 +1,181 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.164
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.164
+Problem: C-indenting: a preprocessor statement confuses detection of a
+ function delcaration.
+Solution: Ignore preprocessor lines. (Lech Lorens) Also recognize the style
+ to put a comma before the argument name.
+Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.163/src/misc1.c 2011-04-11 16:56:29.000000000 +0200
+--- src/misc1.c 2011-04-28 12:49:55.000000000 +0200
+***************
+*** 5396,5403 ****
+ cin_ispreproc(s)
+ char_u *s;
+ {
+! s = skipwhite(s);
+! if (*s == '#')
+ return TRUE;
+ return FALSE;
+ }
+--- 5396,5402 ----
+ cin_ispreproc(s)
+ char_u *s;
+ {
+! if (*skipwhite(s) == '#')
+ return TRUE;
+ return FALSE;
+ }
+***************
+*** 5513,5518 ****
+--- 5512,5521 ----
+ else
+ s = *sp;
+
++ /* Ignore line starting with #. */
++ if (cin_ispreproc(s))
++ return FALSE;
++
+ while (*s && *s != '(' && *s != ';' && *s != '\'' && *s != '"')
+ {
+ if (cin_iscomment(s)) /* ignore comments */
+***************
+*** 5538,5550 ****
+ retval = TRUE;
+ goto done;
+ }
+! if (*s == ',' && cin_nocode(s + 1))
+ {
+! /* ',' at the end: continue looking in the next line */
+ if (lnum >= curbuf->b_ml.ml_line_count)
+ break;
+!
+! s = ml_get(++lnum);
+ }
+ else if (cin_iscomment(s)) /* ignore comments */
+ s = cin_skipcomment(s);
+--- 5541,5569 ----
+ retval = TRUE;
+ goto done;
+ }
+! if ((*s == ',' && cin_nocode(s + 1)) || s[1] == NUL || cin_nocode(s))
+ {
+! int comma = (*s == ',');
+!
+! /* ',' at the end: continue looking in the next line.
+! * At the end: check for ',' in the next line, for this style:
+! * func(arg1
+! * , arg2) */
+! for (;;)
+! {
+! if (lnum >= curbuf->b_ml.ml_line_count)
+! break;
+! s = ml_get(++lnum);
+! if (!cin_ispreproc(s))
+! break;
+! }
+ if (lnum >= curbuf->b_ml.ml_line_count)
+ break;
+! /* Require a comma at end of the line or a comma or ')' at the
+! * start of next line. */
+! s = skipwhite(s);
+! if (!comma && *s != ',' && *s != ')')
+! break;
+ }
+ else if (cin_iscomment(s)) /* ignore comments */
+ s = cin_skipcomment(s);
+*** ../vim-7.3.163/src/testdir/test3.in 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test3.in 2011-04-28 12:15:12.000000000 +0200
+***************
+*** 1315,1320 ****
+--- 1315,1349 ----
+ }
+
+ STARTTEST
++ :set cino=(0,ts
++ 2kdd=][
++ ENDTEST
++
++ void func(int a
++ #if defined(FOO)
++ , int b
++ , int c
++ #endif
++ )
++ {
++ }
++
++ STARTTEST
++ :set cino=(0
++ 2kdd=][
++ ENDTEST
++
++ void
++ func(int a
++ #if defined(FOO)
++ , int b
++ , int c
++ #endif
++ )
++ {
++ }
++
++ STARTTEST
+ :g/^STARTTEST/.,/^ENDTEST/d
+ :1;/start of AUTO/,$wq! test.out
+ ENDTEST
+*** ../vim-7.3.163/src/testdir/test3.ok 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test3.ok 2011-04-28 12:54:04.000000000 +0200
+***************
+*** 1183,1185 ****
+--- 1183,1206 ----
+ foo;
+ }
+
++
++ void func(int a
++ #if defined(FOO)
++ , int b
++ , int c
++ #endif
++ )
++ {
++ }
++
++
++ void
++ func(int a
++ #if defined(FOO)
++ , int b
++ , int c
++ #endif
++ )
++ {
++ }
++
+*** ../vim-7.3.163/src/version.c 2011-04-28 12:56:57.000000000 +0200
+--- src/version.c 2011-04-28 12:59:55.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 164,
+ /**/
+
+--
+Due knot trussed yore spell chequer two fined awl miss steaks.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.165 b/source/ap/vim/patches/7.3.165
new file mode 100644
index 000000000..2725259e3
--- /dev/null
+++ b/source/ap/vim/patches/7.3.165
@@ -0,0 +1,47 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.165
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.165
+Problem: ":find" completion does not escape spaces in a directory name.
+ (Isz)
+Solution: Add backslashes for EXPAND_FILES_IN_PATH. (Carlo Teubner)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.3.164/src/ex_getln.c 2010-12-02 16:01:23.000000000 +0100
+--- src/ex_getln.c 2011-04-28 12:52:12.000000000 +0200
+***************
+*** 3702,3707 ****
+--- 3702,3708 ----
+ if (options & WILD_ESCAPE)
+ {
+ if (xp->xp_context == EXPAND_FILES
++ || xp->xp_context == EXPAND_FILES_IN_PATH
+ || xp->xp_context == EXPAND_SHELLCMD
+ || xp->xp_context == EXPAND_BUFFERS
+ || xp->xp_context == EXPAND_DIRECTORIES)
+*** ../vim-7.3.164/src/version.c 2011-04-28 13:01:59.000000000 +0200
+--- src/version.c 2011-04-28 17:17:53.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 165,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+38. You wake up at 3 a.m. to go to the bathroom and stop and check your e-mail
+ on the way back to bed.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.166 b/source/ap/vim/patches/7.3.166
new file mode 100644
index 000000000..93c6ed353
--- /dev/null
+++ b/source/ap/vim/patches/7.3.166
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.166
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.166
+Problem: Buffer on the stack may be too big
+Solution: Allocate the space.
+Files: src/option.c
+
+
+*** ../vim-7.3.165/src/option.c 2011-04-28 12:56:57.000000000 +0200
+--- src/option.c 2011-04-15 20:49:54.000000000 +0200
+***************
+*** 9185,9191 ****
+ int expand;
+ {
+ char_u *s;
+! char_u buf[MAXPATHL];
+
+ if (fprintf(fd, "%s %s=", cmd, name) < 0)
+ return FAIL;
+--- 9185,9191 ----
+ int expand;
+ {
+ char_u *s;
+! char_u *buf;
+
+ if (fprintf(fd, "%s %s=", cmd, name) < 0)
+ return FAIL;
+***************
+*** 9203,9211 ****
+--- 9203,9218 ----
+ }
+ else if (expand)
+ {
++ buf = alloc(MAXPATHL);
++ if (buf == NULL)
++ return FAIL;
+ home_replace(NULL, *valuep, buf, MAXPATHL, FALSE);
+ if (put_escstr(fd, buf, 2) == FAIL)
++ {
++ vim_free(buf);
+ return FAIL;
++ }
++ vim_free(buf);
+ }
+ else if (put_escstr(fd, *valuep, 2) == FAIL)
+ return FAIL;
+*** ../vim-7.3.165/src/version.c 2011-04-28 17:21:49.000000000 +0200
+--- src/version.c 2011-04-28 17:23:24.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 166,
+ /**/
+
+--
+He who laughs last, thinks slowest.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.167 b/source/ap/vim/patches/7.3.167
new file mode 100644
index 000000000..4a6de89fb
--- /dev/null
+++ b/source/ap/vim/patches/7.3.167
@@ -0,0 +1,96 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.167
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.167
+Problem: When using the internal grep QuickFixCmdPost is not triggered.
+ (Yukihiro Nakadaira)
+Solution: Change the place where autocommands are triggered.
+Files: src/quickfix.c
+
+
+*** ../vim-7.3.166/src/quickfix.c 2011-04-11 21:35:03.000000000 +0200
+--- src/quickfix.c 2011-04-28 13:28:03.000000000 +0200
+***************
+*** 2742,2747 ****
+--- 2742,2754 ----
+ #ifdef FEAT_AUTOCMD
+ char_u *au_name = NULL;
+
++ /* Redirect ":grep" to ":vimgrep" if 'grepprg' is "internal". */
++ if (grep_internal(eap->cmdidx))
++ {
++ ex_vimgrep(eap);
++ return;
++ }
++
+ switch (eap->cmdidx)
+ {
+ case CMD_make: au_name = (char_u *)"make"; break;
+***************
+*** 2763,2775 ****
+ }
+ #endif
+
+- /* Redirect ":grep" to ":vimgrep" if 'grepprg' is "internal". */
+- if (grep_internal(eap->cmdidx))
+- {
+- ex_vimgrep(eap);
+- return;
+- }
+-
+ if (eap->cmdidx == CMD_lmake || eap->cmdidx == CMD_lgrep
+ || eap->cmdidx == CMD_lgrepadd)
+ wp = curwin;
+--- 2770,2775 ----
+***************
+*** 3057,3066 ****
+
+ switch (eap->cmdidx)
+ {
+! case CMD_vimgrep: au_name = (char_u *)"vimgrep"; break;
+! case CMD_lvimgrep: au_name = (char_u *)"lvimgrep"; break;
+! case CMD_vimgrepadd: au_name = (char_u *)"vimgrepadd"; break;
+ case CMD_lvimgrepadd: au_name = (char_u *)"lvimgrepadd"; break;
+ default: break;
+ }
+ if (au_name != NULL)
+--- 3057,3070 ----
+
+ switch (eap->cmdidx)
+ {
+! case CMD_vimgrep: au_name = (char_u *)"vimgrep"; break;
+! case CMD_lvimgrep: au_name = (char_u *)"lvimgrep"; break;
+! case CMD_vimgrepadd: au_name = (char_u *)"vimgrepadd"; break;
+ case CMD_lvimgrepadd: au_name = (char_u *)"lvimgrepadd"; break;
++ case CMD_grep: au_name = (char_u *)"grep"; break;
++ case CMD_lgrep: au_name = (char_u *)"lgrep"; break;
++ case CMD_grepadd: au_name = (char_u *)"grepadd"; break;
++ case CMD_lgrepadd: au_name = (char_u *)"lgrepadd"; break;
+ default: break;
+ }
+ if (au_name != NULL)
+*** ../vim-7.3.166/src/version.c 2011-04-28 17:24:54.000000000 +0200
+--- src/version.c 2011-04-28 17:26:17.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 167,
+ /**/
+
+--
+Micro$oft: where do you want to go today?
+ Linux: where do you want to go tomorrow?
+ FreeBSD: are you guys coming, or what?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.168 b/source/ap/vim/patches/7.3.168
new file mode 100644
index 000000000..3d6fe9472
--- /dev/null
+++ b/source/ap/vim/patches/7.3.168
@@ -0,0 +1,82 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.168
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.168
+Problem: When the second argument of input() contains a CR the text up to
+ that is used without asking the user. (Yasuhiro Matsumoto)
+Solution: Change CR, NL and ESC in the text to a space.
+Files: src/getchar.c
+
+
+*** ../vim-7.3.167/src/getchar.c 2011-03-22 13:07:19.000000000 +0100
+--- src/getchar.c 2011-04-28 14:50:26.000000000 +0200
+***************
+*** 635,645 ****
+--- 635,648 ----
+ /*
+ * Stuff "s" into the stuff buffer, leaving special key codes unmodified and
+ * escaping other K_SPECIAL and CSI bytes.
++ * Change CR, LF and ESC into a space.
+ */
+ void
+ stuffReadbuffSpec(s)
+ char_u *s;
+ {
++ int c;
++
+ while (*s != NUL)
+ {
+ if (*s == K_SPECIAL && s[1] != NUL && s[2] != NUL)
+***************
+*** 649,659 ****
+ s += 3;
+ }
+ else
+ #ifdef FEAT_MBYTE
+! stuffcharReadbuff(mb_ptr2char_adv(&s));
+ #else
+! stuffcharReadbuff(*s++);
+ #endif
+ }
+ }
+ #endif
+--- 652,667 ----
+ s += 3;
+ }
+ else
++ {
+ #ifdef FEAT_MBYTE
+! c = mb_ptr2char_adv(&s);
+ #else
+! c = *s++;
+ #endif
++ if (c == CAR || c == NL || c == ESC)
++ c = ' ';
++ stuffcharReadbuff(c);
++ }
+ }
+ }
+ #endif
+*** ../vim-7.3.167/src/version.c 2011-04-28 17:27:05.000000000 +0200
+--- src/version.c 2011-04-28 17:28:36.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 168,
+ /**/
+
+--
+Everyone has a photographic memory. Some don't have film.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.169 b/source/ap/vim/patches/7.3.169
new file mode 100644
index 000000000..056ca99f6
--- /dev/null
+++ b/source/ap/vim/patches/7.3.169
@@ -0,0 +1,130 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.169
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.169
+Problem: Freeing memory already freed, warning from static code analyzer.
+Solution: Initialize pointers to NULL, correct use of "mustfree". (partly by
+ Dominique Pelle)
+Files: src/mis1.c
+
+
+*** ../vim-7.3.168/src/misc1.c 2011-04-28 13:01:59.000000000 +0200
+--- src/misc1.c 2011-04-28 17:42:00.000000000 +0200
+***************
+*** 3505,3511 ****
+ if (enc_utf8 && var != NULL)
+ {
+ int len;
+! char_u *pp;
+
+ /* Convert from active codepage to UTF-8. Other conversions are
+ * not done, because they would fail for non-ASCII characters. */
+--- 3505,3511 ----
+ if (enc_utf8 && var != NULL)
+ {
+ int len;
+! char_u *pp = NULL;
+
+ /* Convert from active codepage to UTF-8. Other conversions are
+ * not done, because they would fail for non-ASCII characters. */
+***************
+*** 3872,3882 ****
+ * Vim's version of getenv().
+ * Special handling of $HOME, $VIM and $VIMRUNTIME.
+ * Also does ACP to 'enc' conversion for Win32.
+ */
+ char_u *
+ vim_getenv(name, mustfree)
+ char_u *name;
+! int *mustfree; /* set to TRUE when returned is allocated */
+ {
+ char_u *p;
+ char_u *pend;
+--- 3872,3884 ----
+ * Vim's version of getenv().
+ * Special handling of $HOME, $VIM and $VIMRUNTIME.
+ * Also does ACP to 'enc' conversion for Win32.
++ * "mustfree" is set to TRUE when returned is allocated, it must be
++ * initialized to FALSE by the caller.
+ */
+ char_u *
+ vim_getenv(name, mustfree)
+ char_u *name;
+! int *mustfree;
+ {
+ char_u *p;
+ char_u *pend;
+***************
+*** 3898,3904 ****
+ if (enc_utf8)
+ {
+ int len;
+! char_u *pp;
+
+ /* Convert from active codepage to UTF-8. Other conversions are
+ * not done, because they would fail for non-ASCII characters. */
+--- 3900,3906 ----
+ if (enc_utf8)
+ {
+ int len;
+! char_u *pp = NULL;
+
+ /* Convert from active codepage to UTF-8. Other conversions are
+ * not done, because they would fail for non-ASCII characters. */
+***************
+*** 3942,3948 ****
+ if (enc_utf8)
+ {
+ int len;
+! char_u *pp;
+
+ /* Convert from active codepage to UTF-8. Other conversions
+ * are not done, because they would fail for non-ASCII
+--- 3944,3950 ----
+ if (enc_utf8)
+ {
+ int len;
+! char_u *pp = NULL;
+
+ /* Convert from active codepage to UTF-8. Other conversions
+ * are not done, because they would fail for non-ASCII
+***************
+*** 3950,3956 ****
+ acp_to_enc(p, (int)STRLEN(p), &pp, &len);
+ if (pp != NULL)
+ {
+! if (mustfree)
+ vim_free(p);
+ p = pp;
+ *mustfree = TRUE;
+--- 3952,3958 ----
+ acp_to_enc(p, (int)STRLEN(p), &pp, &len);
+ if (pp != NULL)
+ {
+! if (*mustfree)
+ vim_free(p);
+ p = pp;
+ *mustfree = TRUE;
+*** ../vim-7.3.168/src/version.c 2011-04-28 17:30:05.000000000 +0200
+--- src/version.c 2011-04-28 17:48:04.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 169,
+ /**/
+
+--
+A day without sunshine is like, well, night.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.170 b/source/ap/vim/patches/7.3.170
new file mode 100644
index 000000000..933173ea8
--- /dev/null
+++ b/source/ap/vim/patches/7.3.170
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.170
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.170
+Problem: VMS Makefile for testing was not updated for test77.
+Solution: Add test77 to the Makefile.
+Files: src/testdir/Make_vms.mms
+
+
+*** ../vim-7.3.169/src/testdir/Make_vms.mms 2010-11-10 16:54:16.000000000 +0100
+--- src/testdir/Make_vms.mms 2011-03-03 17:04:56.000000000 +0100
+***************
+*** 4,10 ****
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2010 Nov 10
+ #
+ # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+ # Edit the lines in the Configuration section below to select.
+--- 4,10 ----
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2011 Mar 03
+ #
+ # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+ # Edit the lines in the Configuration section below to select.
+***************
+*** 74,80 ****
+ test56.out test57.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+ test66.out test67.out test68.out test69.out \
+! test71.out test72.out test74.out test75.out test76.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+--- 74,81 ----
+ test56.out test57.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+ test66.out test67.out test68.out test69.out \
+! test71.out test72.out test74.out test75.out test76.out \
+! test77.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+*** ../vim-7.3.169/src/version.c 2011-04-28 17:48:39.000000000 +0200
+--- src/version.c 2011-04-28 19:04:33.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 170,
+ /**/
+
+--
+The users that I support would double-click on a landmine to find out
+what happens. -- A system administrator
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.171 b/source/ap/vim/patches/7.3.171
new file mode 100644
index 000000000..f965e0a20
--- /dev/null
+++ b/source/ap/vim/patches/7.3.171
@@ -0,0 +1,142 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.171
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.171
+Problem: When the clipboard isn't supported: ":yank*" gives a confusing
+ error message.
+Solution: Specifically mention that the register name is invalid.
+ (Jean-Rene David)
+Files: runtime/doc/change.txt, src/ex_docmd.c, src/globals.h
+
+
+*** ../vim-7.3.170/runtime/doc/change.txt 2010-08-15 21:57:18.000000000 +0200
+--- runtime/doc/change.txt 2011-05-05 13:48:00.000000000 +0200
+***************
+*** 916,923 ****
+ {Visual}["x]Y Yank the highlighted lines [into register x] (for
+ {Visual} see |Visual-mode|). {not in Vi}
+
+! *:y* *:yank*
+! :[range]y[ank] [x] Yank [range] lines [into register x].
+
+ :[range]y[ank] [x] {count}
+ Yank {count} lines, starting with last line number
+--- 917,926 ----
+ {Visual}["x]Y Yank the highlighted lines [into register x] (for
+ {Visual} see |Visual-mode|). {not in Vi}
+
+! *:y* *:yank* *E850*
+! :[range]y[ank] [x] Yank [range] lines [into register x]. Yanking to the
+! "* or "+ registers is possible only in GUI versions or
+! when the |+xterm_clipboard| feature is included.
+
+ :[range]y[ank] [x] {count}
+ Yank {count} lines, starting with last line number
+*** ../vim-7.3.170/src/ex_docmd.c 2011-04-11 21:35:03.000000000 +0200
+--- src/ex_docmd.c 2011-05-05 13:48:57.000000000 +0200
+***************
+*** 2424,2448 ****
+ if ( (ea.argt & REGSTR)
+ && *ea.arg != NUL
+ #ifdef FEAT_USR_CMDS
+- && valid_yank_reg(*ea.arg, (ea.cmdidx != CMD_put
+- && USER_CMDIDX(ea.cmdidx)))
+ /* Do not allow register = for user commands */
+ && (!USER_CMDIDX(ea.cmdidx) || *ea.arg != '=')
+- #else
+- && valid_yank_reg(*ea.arg, ea.cmdidx != CMD_put)
+ #endif
+ && !((ea.argt & COUNT) && VIM_ISDIGIT(*ea.arg)))
+ {
+! ea.regname = *ea.arg++;
+! #ifdef FEAT_EVAL
+! /* for '=' register: accept the rest of the line as an expression */
+! if (ea.arg[-1] == '=' && ea.arg[0] != NUL)
+ {
+! set_expr_line(vim_strsave(ea.arg));
+! ea.arg += STRLEN(ea.arg);
+ }
+ #endif
+! ea.arg = skipwhite(ea.arg);
+ }
+
+ /*
+--- 2424,2462 ----
+ if ( (ea.argt & REGSTR)
+ && *ea.arg != NUL
+ #ifdef FEAT_USR_CMDS
+ /* Do not allow register = for user commands */
+ && (!USER_CMDIDX(ea.cmdidx) || *ea.arg != '=')
+ #endif
+ && !((ea.argt & COUNT) && VIM_ISDIGIT(*ea.arg)))
+ {
+! #ifndef FEAT_CLIPBOARD
+! /* check these explicitly for a more specific error message */
+! if (*ea.arg == '*' || *ea.arg == '+')
+ {
+! errormsg = (char_u *)_(e_invalidreg);
+! goto doend;
+ }
+ #endif
+! if (
+! #ifdef FEAT_USR_CMDS
+! valid_yank_reg(*ea.arg, (ea.cmdidx != CMD_put
+! && USER_CMDIDX(ea.cmdidx)))
+! #else
+! valid_yank_reg(*ea.arg, ea.cmdidx != CMD_put)
+! #endif
+! )
+! {
+! ea.regname = *ea.arg++;
+! #ifdef FEAT_EVAL
+! /* for '=' register: accept the rest of the line as an expression */
+! if (ea.arg[-1] == '=' && ea.arg[0] != NUL)
+! {
+! set_expr_line(vim_strsave(ea.arg));
+! ea.arg += STRLEN(ea.arg);
+! }
+! #endif
+! ea.arg = skipwhite(ea.arg);
+! }
+ }
+
+ /*
+*** ../vim-7.3.170/src/globals.h 2011-02-15 17:39:14.000000000 +0100
+--- src/globals.h 2011-05-05 13:47:44.000000000 +0200
+***************
+*** 1561,1566 ****
+--- 1561,1569 ----
+ (defined(FEAT_INS_EXPAND) && defined(FEAT_COMPL_FUNC))
+ EXTERN char_u e_notset[] INIT(= N_("E764: Option '%s' is not set"));
+ #endif
++ #ifndef FEAT_CLIPBOARD
++ EXTERN char_u e_invalidreg[] INIT(= N_("E850: Invalid register name"));
++ #endif
+
+ #ifdef MACOS_X_UNIX
+ EXTERN short disallow_gui INIT(= FALSE);
+*** ../vim-7.3.170/src/version.c 2011-04-28 19:05:01.000000000 +0200
+--- src/version.c 2011-05-05 14:24:39.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 171,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+53. To find out what time it is, you send yourself an e-mail and check the
+ "Date:" field.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.172 b/source/ap/vim/patches/7.3.172
new file mode 100644
index 000000000..66a785217
--- /dev/null
+++ b/source/ap/vim/patches/7.3.172
@@ -0,0 +1,268 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.172
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.172
+Problem: MS-Windows: rename() might delete the file if the name differs but
+ it's actually the same file.
+Solution: Use the file handle to check if it's the same file. (Yukihiro
+ Nakadaira)
+Files: src/if_cscope.c, src/fileio.c, src/os_win32.c,
+ src/proto/os_win32.pro, src/vim.h
+
+
+*** ../vim-7.3.171/src/if_cscope.c 2011-03-03 15:01:25.000000000 +0100
+--- src/if_cscope.c 2011-05-05 16:16:38.000000000 +0200
+***************
+*** 1412,1428 ****
+ {
+ short i, j;
+ #ifndef UNIX
+- HANDLE hFile;
+ BY_HANDLE_FILE_INFORMATION bhfi;
+
+- vim_memset(&bhfi, 0, sizeof(bhfi));
+ /* On windows 9x GetFileInformationByHandle doesn't work, so skip it */
+ if (!mch_windows95())
+ {
+! hFile = CreateFile(fname, FILE_READ_ATTRIBUTES, 0, NULL, OPEN_EXISTING,
+! FILE_ATTRIBUTE_NORMAL, NULL);
+! if (hFile == INVALID_HANDLE_VALUE)
+ {
+ if (p_csverbose)
+ {
+ char *cant_msg = _("E625: cannot open cscope database: %s");
+--- 1412,1426 ----
+ {
+ short i, j;
+ #ifndef UNIX
+ BY_HANDLE_FILE_INFORMATION bhfi;
+
+ /* On windows 9x GetFileInformationByHandle doesn't work, so skip it */
+ if (!mch_windows95())
+ {
+! switch (win32_fileinfo(fname, &bhfi))
+ {
++ case FILEINFO_ENC_FAIL: /* enc_to_utf16() failed */
++ case FILEINFO_READ_FAIL: /* CreateFile() failed */
+ if (p_csverbose)
+ {
+ char *cant_msg = _("E625: cannot open cscope database: %s");
+***************
+*** 1438,1452 ****
+ (void)EMSG2(cant_msg, fname);
+ }
+ return -1;
+! }
+! if (!GetFileInformationByHandle(hFile, &bhfi))
+! {
+! CloseHandle(hFile);
+ if (p_csverbose)
+ (void)EMSG(_("E626: cannot get cscope database information"));
+ return -1;
+ }
+- CloseHandle(hFile);
+ }
+ #endif
+
+--- 1436,1447 ----
+ (void)EMSG2(cant_msg, fname);
+ }
+ return -1;
+!
+! case FILEINFO_INFO_FAIL: /* GetFileInformationByHandle() failed */
+ if (p_csverbose)
+ (void)EMSG(_("E626: cannot get cscope database information"));
+ return -1;
+ }
+ }
+ #endif
+
+*** ../vim-7.3.171/src/fileio.c 2011-04-11 21:35:03.000000000 +0200
+--- src/fileio.c 2011-05-05 16:22:22.000000000 +0200
+***************
+*** 6555,6560 ****
+--- 6555,6575 ----
+ use_tmp_file = TRUE;
+ }
+ #endif
++ #ifdef WIN3264
++ {
++ BY_HANDLE_FILE_INFORMATION info1, info2;
++
++ /* It's possible for the source and destination to be the same file.
++ * In that case go through a temp file name. This makes rename("foo",
++ * "./foo") a no-op (in a complicated way). */
++ if (win32_fileinfo(from, &info1) == FILEINFO_OK
++ && win32_fileinfo(to, &info2) == FILEINFO_OK
++ && info1.dwVolumeSerialNumber == info2.dwVolumeSerialNumber
++ && info1.nFileIndexHigh == info2.nFileIndexHigh
++ && info1.nFileIndexLow == info2.nFileIndexLow)
++ use_tmp_file = TRUE;
++ }
++ #endif
+
+ #if defined(UNIX) || defined(CASE_INSENSITIVE_FILENAME)
+ if (use_tmp_file)
+*** ../vim-7.3.171/src/os_win32.c 2011-02-01 13:48:47.000000000 +0100
+--- src/os_win32.c 2011-05-05 16:24:17.000000000 +0200
+***************
+*** 2645,2669 ****
+ int
+ mch_is_linked(char_u *fname)
+ {
+ HANDLE hFile;
+! int res = 0;
+! BY_HANDLE_FILE_INFORMATION inf;
+ #ifdef FEAT_MBYTE
+ WCHAR *wn = NULL;
+
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ wn = enc_to_utf16(fname, NULL);
+ if (wn != NULL)
+ {
+ hFile = CreateFileW(wn, /* file name */
+ GENERIC_READ, /* access mode */
+! 0, /* share mode */
+ NULL, /* security descriptor */
+ OPEN_EXISTING, /* creation disposition */
+! 0, /* file attributes */
+ NULL); /* handle to template file */
+ if (hFile == INVALID_HANDLE_VALUE
+! && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
+ {
+ /* Retry with non-wide function (for Windows 98). */
+ vim_free(wn);
+--- 2645,2688 ----
+ int
+ mch_is_linked(char_u *fname)
+ {
++ BY_HANDLE_FILE_INFORMATION info;
++
++ return win32_fileinfo(fname, &info) == FILEINFO_OK
++ && info.nNumberOfLinks > 1;
++ }
++
++ /*
++ * Get the by-handle-file-information for "fname".
++ * Returns FILEINFO_OK when OK.
++ * returns FILEINFO_ENC_FAIL when enc_to_utf16() failed.
++ * Returns FILEINFO_READ_FAIL when CreateFile() failed.
++ * Returns FILEINFO_INFO_FAIL when GetFileInformationByHandle() failed.
++ */
++ int
++ win32_fileinfo(char_u *fname, BY_HANDLE_FILE_INFORMATION *info)
++ {
+ HANDLE hFile;
+! int res = FILEINFO_READ_FAIL;
+ #ifdef FEAT_MBYTE
+ WCHAR *wn = NULL;
+
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
++ {
+ wn = enc_to_utf16(fname, NULL);
++ if (wn == NULL)
++ res = FILEINFO_ENC_FAIL;
++ }
+ if (wn != NULL)
+ {
+ hFile = CreateFileW(wn, /* file name */
+ GENERIC_READ, /* access mode */
+! FILE_SHARE_READ | FILE_SHARE_WRITE, /* share mode */
+ NULL, /* security descriptor */
+ OPEN_EXISTING, /* creation disposition */
+! FILE_FLAG_BACKUP_SEMANTICS, /* file attributes */
+ NULL); /* handle to template file */
+ if (hFile == INVALID_HANDLE_VALUE
+! && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
+ {
+ /* Retry with non-wide function (for Windows 98). */
+ vim_free(wn);
+***************
+*** 2674,2690 ****
+ #endif
+ hFile = CreateFile(fname, /* file name */
+ GENERIC_READ, /* access mode */
+! 0, /* share mode */
+ NULL, /* security descriptor */
+ OPEN_EXISTING, /* creation disposition */
+! 0, /* file attributes */
+ NULL); /* handle to template file */
+
+ if (hFile != INVALID_HANDLE_VALUE)
+ {
+! if (GetFileInformationByHandle(hFile, &inf) != 0
+! && inf.nNumberOfLinks > 1)
+! res = 1;
+ CloseHandle(hFile);
+ }
+
+--- 2693,2710 ----
+ #endif
+ hFile = CreateFile(fname, /* file name */
+ GENERIC_READ, /* access mode */
+! FILE_SHARE_READ | FILE_SHARE_WRITE, /* share mode */
+ NULL, /* security descriptor */
+ OPEN_EXISTING, /* creation disposition */
+! FILE_FLAG_BACKUP_SEMANTICS, /* file attributes */
+ NULL); /* handle to template file */
+
+ if (hFile != INVALID_HANDLE_VALUE)
+ {
+! if (GetFileInformationByHandle(hFile, info) != 0)
+! res = FILEINFO_OK;
+! else
+! res = FILEINFO_INFO_FAIL;
+ CloseHandle(hFile);
+ }
+
+*** ../vim-7.3.171/src/proto/os_win32.pro 2010-10-23 14:02:48.000000000 +0200
+--- src/proto/os_win32.pro 2011-05-05 16:17:42.000000000 +0200
+***************
+*** 21,26 ****
+--- 21,27 ----
+ void mch_hide __ARGS((char_u *name));
+ int mch_isdir __ARGS((char_u *name));
+ int mch_is_linked __ARGS((char_u *fname));
++ int win32_fileinfo __ARGS((char_u *name, BY_HANDLE_FILE_INFORMATION *lpFileInfo));
+ int mch_writable __ARGS((char_u *name));
+ int mch_can_exe __ARGS((char_u *name));
+ int mch_nodetype __ARGS((char_u *name));
+*** ../vim-7.3.171/src/vim.h 2011-04-11 21:35:03.000000000 +0200
+--- src/vim.h 2011-05-05 16:16:57.000000000 +0200
+***************
+*** 2217,2220 ****
+--- 2217,2226 ----
+ #define KEYLEN_PART_MAP -2 /* keylen value for incomplete mapping */
+ #define KEYLEN_REMOVED 9999 /* keylen value for removed sequence */
+
++ /* Return values from win32_fileinfo(). */
++ #define FILEINFO_OK 0
++ #define FILEINFO_ENC_FAIL 1 /* enc_to_utf16() failed */
++ #define FILEINFO_READ_FAIL 2 /* CreateFile() failed */
++ #define FILEINFO_INFO_FAIL 3 /* GetFileInformationByHandle() failed */
++
+ #endif /* VIM__H */
+*** ../vim-7.3.171/src/version.c 2011-05-05 14:26:37.000000000 +0200
+--- src/version.c 2011-05-05 16:39:35.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 172,
+ /**/
+
+--
+Q: What is a patch 22?
+A: A patch you need to include to make it possible to include patches.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.173 b/source/ap/vim/patches/7.3.173
new file mode 100644
index 000000000..ac8cffb93
--- /dev/null
+++ b/source/ap/vim/patches/7.3.173
@@ -0,0 +1,79 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.173
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.173
+Problem: After using setqflist() to make the quickfix list empty ":cwindow"
+ may open the window anyway. Also after ":vimgrep".
+Solution: Correctly check whether the list is empty. (Ingo Karkat)
+Files: src/quickfix.c
+
+
+*** ../vim-7.3.172/src/quickfix.c 2011-04-28 17:27:05.000000000 +0200
+--- src/quickfix.c 2011-05-05 16:55:47.000000000 +0200
+***************
+*** 1164,1170 ****
+
+ /* When no valid entries are present in the list, qf_ptr points to
+ * the first item in the list */
+! if (to_qfl->qf_nonevalid == TRUE)
+ to_qfl->qf_ptr = to_qfl->qf_start;
+ }
+
+--- 1164,1170 ----
+
+ /* When no valid entries are present in the list, qf_ptr points to
+ * the first item in the list */
+! if (to_qfl->qf_nonevalid)
+ to_qfl->qf_ptr = to_qfl->qf_start;
+ }
+
+***************
+*** 2243,2248 ****
+--- 2243,2249 ----
+ * it if we have errors; otherwise, leave it closed.
+ */
+ if (qi->qf_lists[qi->qf_curlist].qf_nonevalid
++ || qi->qf_lists[qi->qf_curlist].qf_count == 0
+ || qi->qf_curlist >= qi->qf_listcount)
+ {
+ if (win != NULL)
+***************
+*** 3711,3717 ****
+ }
+
+ if (qi->qf_lists[qi->qf_curlist].qf_index == 0)
+! /* empty list or no valid entry */
+ qi->qf_lists[qi->qf_curlist].qf_nonevalid = TRUE;
+ else
+ qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE;
+--- 3712,3718 ----
+ }
+
+ if (qi->qf_lists[qi->qf_curlist].qf_index == 0)
+! /* no valid entry */
+ qi->qf_lists[qi->qf_curlist].qf_nonevalid = TRUE;
+ else
+ qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE;
+*** ../vim-7.3.172/src/version.c 2011-05-05 16:41:19.000000000 +0200
+--- src/version.c 2011-05-05 17:11:57.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 173,
+ /**/
+
+--
+"I can't complain, but sometimes I still do." (Joe Walsh)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.174 b/source/ap/vim/patches/7.3.174
new file mode 100644
index 000000000..33d600350
--- /dev/null
+++ b/source/ap/vim/patches/7.3.174
@@ -0,0 +1,109 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.174
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.174
+Problem: When Exuberant ctags binary is exctags it's not found.
+Solution: Add configure check for exctags. (Hong Xu)
+Files: src/configure.in, src/auto/configure
+
+
+*** ../vim-7.3.173/src/configure.in 2011-02-09 17:42:53.000000000 +0100
+--- src/configure.in 2011-05-05 17:18:21.000000000 +0200
+***************
+*** 2619,2625 ****
+ dnl On HP-UX 10.10 termcap or termlib should be used instead of
+ dnl curses, because curses is much slower.
+ dnl Newer versions of ncurses are preferred over anything, except
+! dnl when tinfo has been split off, it conains all we need.
+ dnl Older versions of ncurses have bugs, get a new one!
+ dnl Digital Unix (OSF1) should use curses (Ronald Schild).
+ dnl On SCO Openserver should prefer termlib (Roger Cornelius).
+--- 2619,2625 ----
+ dnl On HP-UX 10.10 termcap or termlib should be used instead of
+ dnl curses, because curses is much slower.
+ dnl Newer versions of ncurses are preferred over anything, except
+! dnl when tinfo has been split off, it contains all we need.
+ dnl Older versions of ncurses have bugs, get a new one!
+ dnl Digital Unix (OSF1) should use curses (Ronald Schild).
+ dnl On SCO Openserver should prefer termlib (Roger Cornelius).
+***************
+*** 3370,3376 ****
+ AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
+
+ dnl Check how we can run ctags. Default to "ctags" when nothing works.
+! dnl --version for Exuberant ctags (preferred)
+ dnl Add --fields=+S to get function signatures for omni completion.
+ dnl -t for typedefs (many ctags have this)
+ dnl -s for static functions (Elvis ctags only?)
+--- 3370,3376 ----
+ AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
+
+ dnl Check how we can run ctags. Default to "ctags" when nothing works.
+! dnl Use --version to detect Exuberant ctags (preferred)
+ dnl Add --fields=+S to get function signatures for omni completion.
+ dnl -t for typedefs (many ctags have this)
+ dnl -s for static functions (Elvis ctags only?)
+***************
+*** 3378,3384 ****
+ dnl -i+m to test for older Exuberant ctags
+ AC_MSG_CHECKING(how to create tags)
+ test -f tags && mv tags tags.save
+! if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
+ TAGPRG="ctags -I INIT+ --fields=+S"
+ else
+ TAGPRG="ctags"
+--- 3378,3386 ----
+ dnl -i+m to test for older Exuberant ctags
+ AC_MSG_CHECKING(how to create tags)
+ test -f tags && mv tags tags.save
+! if (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
+! TAGPRG="exctags -I INIT+ --fields=+S"
+! elif (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
+ TAGPRG="ctags -I INIT+ --fields=+S"
+ else
+ TAGPRG="ctags"
+*** ../vim-7.3.173/src/auto/configure 2011-02-09 17:42:53.000000000 +0100
+--- src/auto/configure 2011-05-05 17:19:26.000000000 +0200
+***************
+*** 12031,12037 ****
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create tags" >&5
+ $as_echo_n "checking how to create tags... " >&6; }
+ test -f tags && mv tags tags.save
+! if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
+ TAGPRG="ctags -I INIT+ --fields=+S"
+ else
+ TAGPRG="ctags"
+--- 12031,12039 ----
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create tags" >&5
+ $as_echo_n "checking how to create tags... " >&6; }
+ test -f tags && mv tags tags.save
+! if (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
+! TAGPRG="exctags -I INIT+ --fields=+S"
+! elif (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
+ TAGPRG="ctags -I INIT+ --fields=+S"
+ else
+ TAGPRG="ctags"
+*** ../vim-7.3.173/src/version.c 2011-05-05 17:14:07.000000000 +0200
+--- src/version.c 2011-05-05 17:19:37.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 174,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+54. You start tilting your head sideways to smile. :-)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.175 b/source/ap/vim/patches/7.3.175
new file mode 100644
index 000000000..57fbc4a79
--- /dev/null
+++ b/source/ap/vim/patches/7.3.175
@@ -0,0 +1,50 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.175
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.175
+Problem: When 'colorcolumn' is set locally to a window, ":new" opens a
+ window with the same highlighting but 'colorcolumn' is empty.
+ (Tyru)
+Solution: Call check_colorcolumn() after clearing and copying options.
+ (Christian Brabandt)
+Files: src/buffer.c
+
+
+*** ../vim-7.3.174/src/buffer.c 2011-04-11 16:56:29.000000000 +0200
+--- src/buffer.c 2011-05-05 17:28:24.000000000 +0200
+***************
+*** 2527,2532 ****
+--- 2527,2535 ----
+ if (p_fdls >= 0)
+ curwin->w_p_fdl = p_fdls;
+ #endif
++ #ifdef FEAT_SYN_HL
++ check_colorcolumn(curwin);
++ #endif
+ }
+
+ /*
+*** ../vim-7.3.174/src/version.c 2011-05-05 17:23:58.000000000 +0200
+--- src/version.c 2011-05-05 17:30:32.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 175,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+55. You ask your doctor to implant a gig in your brain.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.176 b/source/ap/vim/patches/7.3.176
new file mode 100644
index 000000000..fcf4880d2
--- /dev/null
+++ b/source/ap/vim/patches/7.3.176
@@ -0,0 +1,165 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.176
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.176
+Problem: Ruby linking doesn't work properly on Mac OS X.
+Solution: Fix the configure check for Ruby. (Bjorn Winckler)
+Files: src/configure.in, src/auto/configure
+
+
+*** ../vim-7.3.175/src/configure.in 2011-05-05 17:23:58.000000000 +0200
+--- src/configure.in 2011-05-05 18:03:38.000000000 +0200
+***************
+*** 1387,1396 ****
+ AC_MSG_RESULT($enable_rubyinterp)
+ if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
+ AC_MSG_CHECKING(--with-ruby-command argument)
+ AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
+! RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD),
+ RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
+- AC_SUBST(vi_cv_path_ruby)
+ AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
+ if test "X$vi_cv_path_ruby" != "X"; then
+ AC_MSG_CHECKING(Ruby version)
+--- 1387,1396 ----
+ AC_MSG_RESULT($enable_rubyinterp)
+ if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
+ AC_MSG_CHECKING(--with-ruby-command argument)
++ AC_SUBST(vi_cv_path_ruby)
+ AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
+! RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
+ RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
+ AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
+ if test "X$vi_cv_path_ruby" != "X"; then
+ AC_MSG_CHECKING(Ruby version)
+***************
+*** 1412,1429 ****
+ RUBY_LIBS="$rubylibs"
+ fi
+ librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
+! if test -f "$rubyhdrdir/$librubyarg"; then
+! librubyarg="$rubyhdrdir/$librubyarg"
+! else
+! rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
+! if test -f "$rubylibdir/$librubyarg"; then
+! librubyarg="$rubylibdir/$librubyarg"
+! elif test "$librubyarg" = "libruby.a"; then
+! dnl required on Mac OS 10.3 where libruby.a doesn't exist
+! librubyarg="-lruby"
+! else
+! librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
+! fi
+ fi
+
+ if test "X$librubyarg" != "X"; then
+--- 1412,1426 ----
+ RUBY_LIBS="$rubylibs"
+ fi
+ librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
+! librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBY_A"]])'`
+! rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
+! if test -f "$rubylibdir/$librubya"; then
+! librubyarg="$librubyarg"
+! RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
+! elif test "$librubyarg" = "libruby.a"; then
+! dnl required on Mac OS 10.3 where libruby.a doesn't exist
+! librubyarg="-lruby"
+! RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
+ fi
+
+ if test "X$librubyarg" != "X"; then
+*** ../vim-7.3.175/src/auto/configure 2011-05-05 17:23:58.000000000 +0200
+--- src/auto/configure 2011-05-05 18:06:47.000000000 +0200
+***************
+*** 6218,6233 ****
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-ruby-command argument" >&5
+ $as_echo_n "checking --with-ruby-command argument... " >&6; }
+
+ # Check whether --with-ruby-command was given.
+ if test "${with_ruby_command+set}" = set; then :
+! withval=$with_ruby_command; RUBY_CMD="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RUBY_CMD" >&5
+ $as_echo "$RUBY_CMD" >&6; }
+ else
+ RUBY_CMD="ruby"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: defaulting to $RUBY_CMD" >&5
+ $as_echo "defaulting to $RUBY_CMD" >&6; }
+ fi
+
+-
+ # Extract the first word of "$RUBY_CMD", so it can be a program name with args.
+ set dummy $RUBY_CMD; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+--- 6218,6233 ----
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-ruby-command argument" >&5
+ $as_echo_n "checking --with-ruby-command argument... " >&6; }
+
++
+ # Check whether --with-ruby-command was given.
+ if test "${with_ruby_command+set}" = set; then :
+! withval=$with_ruby_command; RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RUBY_CMD" >&5
+ $as_echo "$RUBY_CMD" >&6; }
+ else
+ RUBY_CMD="ruby"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: defaulting to $RUBY_CMD" >&5
+ $as_echo "defaulting to $RUBY_CMD" >&6; }
+ fi
+
+ # Extract the first word of "$RUBY_CMD", so it can be a program name with args.
+ set dummy $RUBY_CMD; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+***************
+*** 6292,6308 ****
+ RUBY_LIBS="$rubylibs"
+ fi
+ librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["LIBRUBYARG"])'`
+! if test -f "$rubyhdrdir/$librubyarg"; then
+! librubyarg="$rubyhdrdir/$librubyarg"
+! else
+! rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["libdir"])'`
+! if test -f "$rubylibdir/$librubyarg"; then
+! librubyarg="$rubylibdir/$librubyarg"
+! elif test "$librubyarg" = "libruby.a"; then
+! librubyarg="-lruby"
+! else
+! librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
+! fi
+ fi
+
+ if test "X$librubyarg" != "X"; then
+--- 6292,6305 ----
+ RUBY_LIBS="$rubylibs"
+ fi
+ librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["LIBRUBYARG"])'`
+! librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["LIBRUBY_A"])'`
+! rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["libdir"])'`
+! if test -f "$rubylibdir/$librubya"; then
+! librubyarg="$librubyarg"
+! RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
+! elif test "$librubyarg" = "libruby.a"; then
+! librubyarg="-lruby"
+! RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
+ fi
+
+ if test "X$librubyarg" != "X"; then
+*** ../vim-7.3.175/src/version.c 2011-05-05 17:32:40.000000000 +0200
+--- src/version.c 2011-05-05 18:08:52.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 176,
+ /**/
+
+--
+"I simultaneously try to keep my head in the clouds and my feet on the
+ground. Sometimes it's a stretch, though." -- Larry Wall
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.177 b/source/ap/vim/patches/7.3.177
new file mode 100644
index 000000000..895b3b134
--- /dev/null
+++ b/source/ap/vim/patches/7.3.177
@@ -0,0 +1,97 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.177
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.177
+Problem: MS-Windows: mkdir() doesn't work properly when 'encoding' is
+ "utf-8".
+Solution: Convert to utf-16. (Yukihiro Nakadaira)
+Files: src/os_win32.c, src/os_win32.h, src/proto/os_win32.pro
+
+
+*** ../vim-7.3.176/src/os_win32.c 2011-05-05 16:41:19.000000000 +0200
+--- src/os_win32.c 2011-05-05 18:24:36.000000000 +0200
+***************
+*** 2640,2645 ****
+--- 2640,2669 ----
+ }
+
+ /*
++ * Create directory "name".
++ * Return 0 on success, -1 on error.
++ */
++ int
++ mch_mkdir(char_u *name)
++ {
++ #ifdef FEAT_MBYTE
++ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
++ {
++ WCHAR *p;
++ int retval;
++
++ p = enc_to_utf16(name, NULL);
++ if (p == NULL)
++ return -1;
++ retval = _wmkdir(p);
++ vim_free(p);
++ return retval;
++ }
++ #endif
++ return _mkdir(name);
++ }
++
++ /*
+ * Return TRUE if file "fname" has more than one link.
+ */
+ int
+*** ../vim-7.3.176/src/os_win32.h 2010-08-15 21:57:30.000000000 +0200
+--- src/os_win32.h 2011-05-05 18:25:44.000000000 +0200
+***************
+*** 191,195 ****
+ #ifdef __BORLANDC__
+ # define vim_mkdir(x, y) mkdir(x)
+ #else
+! # define vim_mkdir(x, y) _mkdir(x)
+ #endif
+--- 191,195 ----
+ #ifdef __BORLANDC__
+ # define vim_mkdir(x, y) mkdir(x)
+ #else
+! # define vim_mkdir(x, y) mch_mkdir(x)
+ #endif
+*** ../vim-7.3.176/src/proto/os_win32.pro 2011-05-05 16:41:19.000000000 +0200
+--- src/proto/os_win32.pro 2011-05-05 18:26:20.000000000 +0200
+***************
+*** 20,25 ****
+--- 20,26 ----
+ int mch_setperm __ARGS((char_u *name, long perm));
+ void mch_hide __ARGS((char_u *name));
+ int mch_isdir __ARGS((char_u *name));
++ int mch_mkdir __ARGS((char_u *name));
+ int mch_is_linked __ARGS((char_u *fname));
+ int win32_fileinfo __ARGS((char_u *name, BY_HANDLE_FILE_INFORMATION *lpFileInfo));
+ int mch_writable __ARGS((char_u *name));
+*** ../vim-7.3.176/src/version.c 2011-05-05 18:10:11.000000000 +0200
+--- src/version.c 2011-05-05 18:27:56.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 177,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+56. You leave the modem speaker on after connecting because you think it
+ sounds like the ocean wind...the perfect soundtrack for "surfing the net".
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.178 b/source/ap/vim/patches/7.3.178
new file mode 100644
index 000000000..9b6ca7c3a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.178
@@ -0,0 +1,163 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.178
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.178
+Problem: C-indent doesn't handle code right after { correctly.
+Solution: Fix detecting unterminated line. (Lech Lorens)
+Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.177/src/misc1.c 2011-04-28 17:48:39.000000000 +0200
+--- src/misc1.c 2011-05-10 11:35:09.000000000 +0200
+***************
+*** 4983,4989 ****
+ }
+
+ /*
+! * Return TRUE if there there is no code at *s. White space and comments are
+ * not considered code.
+ */
+ static int
+--- 4983,4989 ----
+ }
+
+ /*
+! * Return TRUE if there is no code at *s. White space and comments are
+ * not considered code.
+ */
+ static int
+***************
+*** 5458,5465 ****
+ }
+
+ /*
+! * Recognize a line that starts with '{' or '}', or ends with ';', '{' or '}'.
+ * Don't consider "} else" a terminated line.
+ * Return the character terminating the line (ending char's have precedence if
+ * both apply in order to determine initializations).
+ */
+--- 5458,5468 ----
+ }
+
+ /*
+! * Recognize a line that starts with '{' or '}', or ends with ';', ',', '{' or
+! * '}'.
+ * Don't consider "} else" a terminated line.
++ * Don't consider a line where there are unmatched opening braces before '}',
++ * ';' or ',' a terminated line.
+ * Return the character terminating the line (ending char's have precedence if
+ * both apply in order to determine initializations).
+ */
+***************
+*** 5470,5475 ****
+--- 5473,5479 ----
+ int incl_comma; /* recognize a trailing comma */
+ {
+ char_u found_start = 0;
++ unsigned n_open = 0;
+
+ s = cin_skipcomment(s);
+
+***************
+*** 5480,5489 ****
+ {
+ /* skip over comments, "" strings and 'c'haracters */
+ s = skip_string(cin_skipcomment(s));
+! if ((*s == ';' || (incl_open && *s == '{') || *s == '}'
+! || (incl_comma && *s == ','))
+ && cin_nocode(s + 1))
+ return *s;
+
+ if (*s)
+ s++;
+--- 5484,5502 ----
+ {
+ /* skip over comments, "" strings and 'c'haracters */
+ s = skip_string(cin_skipcomment(s));
+! if (*s == '}' && n_open > 0)
+! --n_open;
+! if (n_open == 0
+! && (*s == ';' || *s == '}' || (incl_comma && *s == ','))
+ && cin_nocode(s + 1))
+ return *s;
++ else if (*s == '{')
++ {
++ if (incl_open && cin_nocode(s + 1))
++ return *s;
++ else
++ ++n_open;
++ }
+
+ if (*s)
+ s++;
+*** ../vim-7.3.177/src/testdir/test3.in 2011-04-28 13:01:59.000000000 +0200
+--- src/testdir/test3.in 2011-05-10 11:34:13.000000000 +0200
+***************
+*** 1344,1349 ****
+--- 1344,1365 ----
+ }
+
+ STARTTEST
++ :set cino&
++ 2kdd=][
++ ENDTEST
++
++ void func(void)
++ {
++ if(x==y)
++ if(y==z)
++ foo=1;
++ else { bar=1;
++ baz=2;
++ }
++ printf("Foo!\n");
++ }
++
++ STARTTEST
+ :g/^STARTTEST/.,/^ENDTEST/d
+ :1;/start of AUTO/,$wq! test.out
+ ENDTEST
+*** ../vim-7.3.177/src/testdir/test3.ok 2011-04-28 13:01:59.000000000 +0200
+--- src/testdir/test3.ok 2011-05-10 11:34:13.000000000 +0200
+***************
+*** 1204,1206 ****
+--- 1204,1218 ----
+ {
+ }
+
++
++ void func(void)
++ {
++ if(x==y)
++ if(y==z)
++ foo=1;
++ else { bar=1;
++ baz=2;
++ }
++ printf("Foo!\n");
++ }
++
+*** ../vim-7.3.177/src/version.c 2011-05-05 18:31:54.000000000 +0200
+--- src/version.c 2011-05-10 11:37:43.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 178,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+69. Yahoo welcomes you with your own start page
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.179 b/source/ap/vim/patches/7.3.179
new file mode 100644
index 000000000..f175b264e
--- /dev/null
+++ b/source/ap/vim/patches/7.3.179
@@ -0,0 +1,95 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.179
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.179
+Problem: C-indent doesn't handle colon in string correctly.
+Solution: Skip the string. (Lech Lorens)
+Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.178/src/misc1.c 2011-05-10 11:39:13.000000000 +0200
+--- src/misc1.c 2011-05-10 11:50:14.000000000 +0200
+***************
+*** 5801,5807 ****
+ continue;
+ }
+
+! if (s[0] == ':')
+ {
+ if (s[1] == ':')
+ {
+--- 5801,5809 ----
+ continue;
+ }
+
+! if (s[0] == '"')
+! s = skip_string(s) + 1;
+! else if (s[0] == ':')
+ {
+ if (s[1] == ':')
+ {
+*** ../vim-7.3.178/src/testdir/test3.in 2011-05-10 11:39:13.000000000 +0200
+--- src/testdir/test3.in 2011-05-10 11:53:02.000000000 +0200
+***************
+*** 1360,1365 ****
+--- 1360,1378 ----
+ }
+
+ STARTTEST
++ :set cino&
++ 2kdd=][
++ ENDTEST
++
++ void func(void)
++ {
++ cout << "a"
++ << "b"
++ << ") :"
++ << "c";
++ }
++
++ STARTTEST
+ :g/^STARTTEST/.,/^ENDTEST/d
+ :1;/start of AUTO/,$wq! test.out
+ ENDTEST
+*** ../vim-7.3.178/src/testdir/test3.ok 2011-05-10 11:39:13.000000000 +0200
+--- src/testdir/test3.ok 2011-05-10 11:50:14.000000000 +0200
+***************
+*** 1216,1218 ****
+--- 1216,1227 ----
+ printf("Foo!\n");
+ }
+
++
++ void func(void)
++ {
++ cout << "a"
++ << "b"
++ << ") :"
++ << "c";
++ }
++
+*** ../vim-7.3.178/src/version.c 2011-05-10 11:39:13.000000000 +0200
+--- src/version.c 2011-05-10 11:53:36.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 179,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+71. You wonder how people walk
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.180 b/source/ap/vim/patches/7.3.180
new file mode 100644
index 000000000..5997bfbe8
--- /dev/null
+++ b/source/ap/vim/patches/7.3.180
@@ -0,0 +1,295 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.180
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.180
+Problem: When both a middle part of 'comments' matches and an end part, the
+ middle part was used errornously.
+Solution: After finding the middle part match continue looking for a better
+ end part match. (partly by Lech Lorens)
+Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.179/src/misc1.c 2011-05-10 11:56:26.000000000 +0200
+--- src/misc1.c 2011-05-10 13:24:38.000000000 +0200
+***************
+*** 1561,1566 ****
+--- 1561,1569 ----
+ char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */
+ char_u *string; /* pointer to comment string */
+ char_u *list;
++ int middle_match_len = 0;
++ char_u *prev_list;
++ char_u *saved_flags;
+
+ i = 0;
+ while (vim_iswhite(line[i])) /* leading white space is ignored */
+***************
+*** 1569,1575 ****
+ /*
+ * Repeat to match several nested comment strings.
+ */
+! while (line[i])
+ {
+ /*
+ * scan through the 'comments' option for a match
+--- 1572,1578 ----
+ /*
+ * Repeat to match several nested comment strings.
+ */
+! while (line[i] != NUL)
+ {
+ /*
+ * scan through the 'comments' option for a match
+***************
+*** 1577,1658 ****
+ found_one = FALSE;
+ for (list = curbuf->b_p_com; *list; )
+ {
+! /*
+! * Get one option part into part_buf[]. Advance list to next one.
+! * put string at start of string.
+! */
+! if (!got_com && flags != NULL) /* remember where flags started */
+! *flags = list;
+ (void)copy_option_part(&list, part_buf, COM_MAX_LEN, ",");
+ string = vim_strchr(part_buf, ':');
+ if (string == NULL) /* missing ':', ignore this part */
+ continue;
+ *string++ = NUL; /* isolate flags from string */
+
+! /*
+! * When already found a nested comment, only accept further
+! * nested comments.
+! */
+ if (got_com && vim_strchr(part_buf, COM_NEST) == NULL)
+ continue;
+
+! /* When 'O' flag used don't use for "O" command */
+ if (backward && vim_strchr(part_buf, COM_NOBACK) != NULL)
+ continue;
+
+! /*
+! * Line contents and string must match.
+ * When string starts with white space, must have some white space
+ * (but the amount does not need to match, there might be a mix of
+! * TABs and spaces).
+! */
+ if (vim_iswhite(string[0]))
+ {
+ if (i == 0 || !vim_iswhite(line[i - 1]))
+! continue;
+ while (vim_iswhite(string[0]))
+ ++string;
+ }
+ for (j = 0; string[j] != NUL && string[j] == line[i + j]; ++j)
+ ;
+ if (string[j] != NUL)
+! continue;
+
+! /*
+! * When 'b' flag used, there must be white space or an
+! * end-of-line after the string in the line.
+! */
+ if (vim_strchr(part_buf, COM_BLANK) != NULL
+ && !vim_iswhite(line[i + j]) && line[i + j] != NUL)
+ continue;
+
+! /*
+! * We have found a match, stop searching.
+! */
+! i += j;
+! got_com = TRUE;
+ found_one = TRUE;
+ break;
+ }
+
+! /*
+! * No match found, stop scanning.
+! */
+ if (!found_one)
+ break;
+
+! /*
+! * Include any trailing white space.
+! */
+ while (vim_iswhite(line[i]))
+ ++i;
+
+! /*
+! * If this comment doesn't nest, stop here.
+! */
+ if (vim_strchr(part_buf, COM_NEST) == NULL)
+ break;
+ }
+ return (got_com ? i : 0);
+ }
+ #endif
+--- 1580,1683 ----
+ found_one = FALSE;
+ for (list = curbuf->b_p_com; *list; )
+ {
+! /* Get one option part into part_buf[]. Advance "list" to next
+! * one. Put "string" at start of string. */
+! if (!got_com && flags != NULL)
+! *flags = list; /* remember where flags started */
+! prev_list = list;
+ (void)copy_option_part(&list, part_buf, COM_MAX_LEN, ",");
+ string = vim_strchr(part_buf, ':');
+ if (string == NULL) /* missing ':', ignore this part */
+ continue;
+ *string++ = NUL; /* isolate flags from string */
+
+! /* If we found a middle match previously, use that match when this
+! * is not a middle or end. */
+! if (middle_match_len != 0
+! && vim_strchr(part_buf, COM_MIDDLE) == NULL
+! && vim_strchr(part_buf, COM_END) == NULL)
+! break;
+!
+! /* When we already found a nested comment, only accept further
+! * nested comments. */
+ if (got_com && vim_strchr(part_buf, COM_NEST) == NULL)
+ continue;
+
+! /* When 'O' flag present and using "O" command skip this one. */
+ if (backward && vim_strchr(part_buf, COM_NOBACK) != NULL)
+ continue;
+
+! /* Line contents and string must match.
+ * When string starts with white space, must have some white space
+ * (but the amount does not need to match, there might be a mix of
+! * TABs and spaces). */
+ if (vim_iswhite(string[0]))
+ {
+ if (i == 0 || !vim_iswhite(line[i - 1]))
+! continue; /* missing shite space */
+ while (vim_iswhite(string[0]))
+ ++string;
+ }
+ for (j = 0; string[j] != NUL && string[j] == line[i + j]; ++j)
+ ;
+ if (string[j] != NUL)
+! continue; /* string doesn't match */
+
+! /* When 'b' flag used, there must be white space or an
+! * end-of-line after the string in the line. */
+ if (vim_strchr(part_buf, COM_BLANK) != NULL
+ && !vim_iswhite(line[i + j]) && line[i + j] != NUL)
+ continue;
+
+! /* We have found a match, stop searching unless this is a middle
+! * comment. The middle comment can be a substring of the end
+! * comment in which case it's better to return the length of the
+! * end comment and its flags. Thus we keep searching with middle
+! * and end matches and use an end match if it matches better. */
+! if (vim_strchr(part_buf, COM_MIDDLE) != NULL)
+! {
+! if (middle_match_len == 0)
+! {
+! middle_match_len = j;
+! saved_flags = prev_list;
+! }
+! continue;
+! }
+! if (middle_match_len != 0 && j > middle_match_len)
+! /* Use this match instead of the middle match, since it's a
+! * longer thus better match. */
+! middle_match_len = 0;
+!
+! if (middle_match_len == 0)
+! i += j;
+ found_one = TRUE;
+ break;
+ }
+
+! if (middle_match_len != 0)
+! {
+! /* Use the previously found middle match after failing to find a
+! * match with an end. */
+! if (!got_com && flags != NULL)
+! *flags = saved_flags;
+! i += middle_match_len;
+! found_one = TRUE;
+! }
+!
+! /* No match found, stop scanning. */
+ if (!found_one)
+ break;
+
+! /* Include any trailing white space. */
+ while (vim_iswhite(line[i]))
+ ++i;
+
+! /* If this comment doesn't nest, stop here. */
+! got_com = TRUE;
+ if (vim_strchr(part_buf, COM_NEST) == NULL)
+ break;
+ }
++
+ return (got_com ? i : 0);
+ }
+ #endif
+*** ../vim-7.3.179/src/testdir/test3.in 2011-05-10 11:56:26.000000000 +0200
+--- src/testdir/test3.in 2011-05-10 12:05:50.000000000 +0200
+***************
+*** 1373,1378 ****
+--- 1373,1390 ----
+ }
+
+ STARTTEST
++ :set com=s1:/*,m:*,ex:*/
++ ]]3jofoo();
++ ENDTEST
++
++ void func(void)
++ {
++ /*
++ * This is a comment.
++ */
++ }
++
++ STARTTEST
+ :g/^STARTTEST/.,/^ENDTEST/d
+ :1;/start of AUTO/,$wq! test.out
+ ENDTEST
+*** ../vim-7.3.179/src/testdir/test3.ok 2011-05-10 11:56:26.000000000 +0200
+--- src/testdir/test3.ok 2011-05-10 12:05:50.000000000 +0200
+***************
+*** 1225,1227 ****
+--- 1225,1236 ----
+ << "c";
+ }
+
++
++ void func(void)
++ {
++ /*
++ * This is a comment.
++ */
++ foo();
++ }
++
+*** ../vim-7.3.179/src/version.c 2011-05-10 11:56:26.000000000 +0200
+--- src/version.c 2011-05-10 13:37:28.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 180,
+ /**/
+
+--
+"Thou shalt not follow the Null Pointer, for at its end Chaos and
+Madness lie."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.181 b/source/ap/vim/patches/7.3.181
new file mode 100644
index 000000000..3151d4455
--- /dev/null
+++ b/source/ap/vim/patches/7.3.181
@@ -0,0 +1,171 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.181
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.181
+Problem: When repeating the insert of CTRL-V or a digraph the display may
+ not be updated correctly.
+Solution: Only call edit_unputchar() after edit_putchar(). (Lech Lorens)
+Files: src/edit.c
+
+
+*** ../vim-7.3.180/src/edit.c 2010-11-10 17:11:29.000000000 +0100
+--- src/edit.c 2011-05-10 14:16:41.000000000 +0200
+***************
+*** 1553,1564 ****
+--- 1553,1568 ----
+ ins_ctrl_v()
+ {
+ int c;
++ int did_putchar = FALSE;
+
+ /* may need to redraw when no more chars available now */
+ ins_redraw(FALSE);
+
+ if (redrawing() && !char_avail())
++ {
+ edit_putchar('^', TRUE);
++ did_putchar = TRUE;
++ }
+ AppendToRedobuff((char_u *)CTRL_V_STR); /* CTRL-V */
+
+ #ifdef FEAT_CMDL_INFO
+***************
+*** 1566,1573 ****
+ #endif
+
+ c = get_literal();
+! edit_unputchar(); /* when line fits in 'columns' the '^' is at the start
+! of the next line and will not be redrawn */
+ #ifdef FEAT_CMDL_INFO
+ clear_showcmd();
+ #endif
+--- 1570,1579 ----
+ #endif
+
+ c = get_literal();
+! if (did_putchar)
+! /* when the line fits in 'columns' the '^' is at the start of the next
+! * line and will not removed by the redraw */
+! edit_unputchar();
+ #ifdef FEAT_CMDL_INFO
+ clear_showcmd();
+ #endif
+***************
+*** 9637,9642 ****
+--- 9643,9649 ----
+ {
+ int c;
+ int cc;
++ int did_putchar = FALSE;
+
+ pc_status = PC_STATUS_UNSET;
+ if (redrawing() && !char_avail())
+***************
+*** 9645,9650 ****
+--- 9652,9658 ----
+ ins_redraw(FALSE);
+
+ edit_putchar('?', TRUE);
++ did_putchar = TRUE;
+ #ifdef FEAT_CMDL_INFO
+ add_to_showcmd_c(Ctrl_K);
+ #endif
+***************
+*** 9661,9668 ****
+ c = plain_vgetc();
+ --no_mapping;
+ --allow_keys;
+! edit_unputchar(); /* when line fits in 'columns' the '?' is at the start
+! of the next line and will not be redrawn */
+
+ if (IS_SPECIAL(c) || mod_mask) /* special key */
+ {
+--- 9669,9678 ----
+ c = plain_vgetc();
+ --no_mapping;
+ --allow_keys;
+! if (did_putchar)
+! /* when the line fits in 'columns' the '?' is at the start of the next
+! * line and will not be removed by the redraw */
+! edit_unputchar();
+
+ if (IS_SPECIAL(c) || mod_mask) /* special key */
+ {
+***************
+*** 9674,9679 ****
+--- 9684,9690 ----
+ }
+ if (c != ESC)
+ {
++ did_putchar = FALSE;
+ if (redrawing() && !char_avail())
+ {
+ /* may need to redraw when no more chars available now */
+***************
+*** 9681,9691 ****
+
+ if (char2cells(c) == 1)
+ {
+- /* first remove the '?', otherwise it's restored when typing
+- * an ESC next */
+- edit_unputchar();
+ ins_redraw(FALSE);
+ edit_putchar(c, TRUE);
+ }
+ #ifdef FEAT_CMDL_INFO
+ add_to_showcmd_c(c);
+--- 9692,9700 ----
+
+ if (char2cells(c) == 1)
+ {
+ ins_redraw(FALSE);
+ edit_putchar(c, TRUE);
++ did_putchar = TRUE;
+ }
+ #ifdef FEAT_CMDL_INFO
+ add_to_showcmd_c(c);
+***************
+*** 9696,9703 ****
+ cc = plain_vgetc();
+ --no_mapping;
+ --allow_keys;
+! edit_unputchar(); /* when line fits in 'columns' the '?' is at the
+! start of the next line and will not be redrawn */
+ if (cc != ESC)
+ {
+ AppendToRedobuff((char_u *)CTRL_V_STR);
+--- 9705,9714 ----
+ cc = plain_vgetc();
+ --no_mapping;
+ --allow_keys;
+! if (did_putchar)
+! /* when the line fits in 'columns' the '?' is at the start of the
+! * next line and will not be removed by a redraw */
+! edit_unputchar();
+ if (cc != ESC)
+ {
+ AppendToRedobuff((char_u *)CTRL_V_STR);
+*** ../vim-7.3.180/src/version.c 2011-05-10 13:38:23.000000000 +0200
+--- src/version.c 2011-05-10 14:20:40.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 181,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+74. Your most erotic dreams are about cybersex
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.182 b/source/ap/vim/patches/7.3.182
new file mode 100644
index 000000000..509b68b54
--- /dev/null
+++ b/source/ap/vim/patches/7.3.182
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.182
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.182 (after 7.3.180)
+Problem: Compiler warning for uninitialized variable.
+Solution: Add dummy initializer.
+Files: src/misc1.c
+
+
+*** ../vim-7.3.181/src/misc1.c 2011-05-10 13:38:23.000000000 +0200
+--- src/misc1.c 2011-05-10 14:37:39.000000000 +0200
+***************
+*** 1563,1569 ****
+ char_u *list;
+ int middle_match_len = 0;
+ char_u *prev_list;
+! char_u *saved_flags;
+
+ i = 0;
+ while (vim_iswhite(line[i])) /* leading white space is ignored */
+--- 1563,1569 ----
+ char_u *list;
+ int middle_match_len = 0;
+ char_u *prev_list;
+! char_u *saved_flags = NULL;
+
+ i = 0;
+ while (vim_iswhite(line[i])) /* leading white space is ignored */
+*** ../vim-7.3.181/src/version.c 2011-05-10 14:22:10.000000000 +0200
+--- src/version.c 2011-05-10 14:38:39.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 182,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+75. You start wondering whether you could actually upgrade your brain
+ with a Pentium Pro microprocessor 80. The upgrade works just fine.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.183 b/source/ap/vim/patches/7.3.183
new file mode 100644
index 000000000..23178c0b5
--- /dev/null
+++ b/source/ap/vim/patches/7.3.183
@@ -0,0 +1,87 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.183
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.183 (after 7.3.174)
+Problem: When Exuberant ctags binary is exuberant-ctags it's not found.
+Solution: Add configure check for exuberant-ctags.
+Files: src/configure.in, src/auto/configure
+
+
+*** ../vim-7.3.182/src/configure.in 2011-05-05 18:10:11.000000000 +0200
+--- src/configure.in 2011-05-10 15:39:38.000000000 +0200
+***************
+*** 3375,3384 ****
+ dnl -i+m to test for older Exuberant ctags
+ AC_MSG_CHECKING(how to create tags)
+ test -f tags && mv tags tags.save
+! if (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
+! TAGPRG="exctags -I INIT+ --fields=+S"
+! elif (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
+ TAGPRG="ctags -I INIT+ --fields=+S"
+ else
+ TAGPRG="ctags"
+ (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
+--- 3375,3386 ----
+ dnl -i+m to test for older Exuberant ctags
+ AC_MSG_CHECKING(how to create tags)
+ test -f tags && mv tags tags.save
+! if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
+ TAGPRG="ctags -I INIT+ --fields=+S"
++ elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
++ TAGPRG="exctags -I INIT+ --fields=+S"
++ elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
++ TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
+ else
+ TAGPRG="ctags"
+ (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
+*** ../vim-7.3.182/src/auto/configure 2011-05-05 18:10:11.000000000 +0200
+--- src/auto/configure 2011-05-10 15:39:41.000000000 +0200
+***************
+*** 12028,12037 ****
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create tags" >&5
+ $as_echo_n "checking how to create tags... " >&6; }
+ test -f tags && mv tags tags.save
+! if (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
+! TAGPRG="exctags -I INIT+ --fields=+S"
+! elif (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
+ TAGPRG="ctags -I INIT+ --fields=+S"
+ else
+ TAGPRG="ctags"
+ (eval etags /dev/null) < /dev/null 1>&5 2>&1 && TAGPRG="etags"
+--- 12028,12039 ----
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create tags" >&5
+ $as_echo_n "checking how to create tags... " >&6; }
+ test -f tags && mv tags tags.save
+! if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
+ TAGPRG="ctags -I INIT+ --fields=+S"
++ elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
++ TAGPRG="exctags -I INIT+ --fields=+S"
++ elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
++ TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
+ else
+ TAGPRG="ctags"
+ (eval etags /dev/null) < /dev/null 1>&5 2>&1 && TAGPRG="etags"
+*** ../vim-7.3.182/src/version.c 2011-05-10 14:44:07.000000000 +0200
+--- src/version.c 2011-05-10 15:40:48.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 183,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+78. You find yourself dialing IP numbers on the phone.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.184 b/source/ap/vim/patches/7.3.184
new file mode 100644
index 000000000..3b0cfc692
--- /dev/null
+++ b/source/ap/vim/patches/7.3.184
@@ -0,0 +1,86 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.184
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.184
+Problem: Static code analysis errors in riscOS.
+Solution: Make buffer size bigger. (Dominique Pelle)
+Files: src/gui_riscos.c
+
+
+*** ../vim-7.3.183/src/gui_riscos.c 2010-08-15 21:57:28.000000000 +0200
+--- src/gui_riscos.c 2011-05-10 15:49:56.000000000 +0200
+***************
+*** 1756,1762 ****
+
+ if (button & 0x444)
+ {
+! int front_block[10];
+ /* Dragging with Select - bring window to front first */
+ front_block[0] = gui.window_handle;
+ swi(Wimp_GetWindowState, 0, front_block);
+--- 1756,1762 ----
+
+ if (button & 0x444)
+ {
+! int front_block[64];
+ /* Dragging with Select - bring window to front first */
+ front_block[0] = gui.window_handle;
+ swi(Wimp_GetWindowState, 0, front_block);
+***************
+*** 1874,1880 ****
+
+ if (ro_dragging == DRAG_RESIZE_WINDOW)
+ {
+! /* Resizeing the main window. */
+ block[2] = y;
+ block[3] = x;
+ ro_open_main(block);
+--- 1874,1880 ----
+
+ if (ro_dragging == DRAG_RESIZE_WINDOW)
+ {
+! /* Resizing the main window. */
+ block[2] = y;
+ block[3] = x;
+ ro_open_main(block);
+***************
+*** 2651,2657 ****
+ long_u length;
+
+ block[0] = 48; /* Size of block. */
+! block[3] = 0; /* Orinial message. */
+ block[4] = 0x10; /* Data request. */
+ block[5] = gui.window_handle;
+ block[6] = RO_LOAD_CLIPBOARD; /* Internal handle. */
+--- 2651,2657 ----
+ long_u length;
+
+ block[0] = 48; /* Size of block. */
+! block[3] = 0; /* Original message. */
+ block[4] = 0x10; /* Data request. */
+ block[5] = gui.window_handle;
+ block[6] = RO_LOAD_CLIPBOARD; /* Internal handle. */
+*** ../vim-7.3.183/src/version.c 2011-05-10 15:41:59.000000000 +0200
+--- src/version.c 2011-05-10 15:51:29.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 184,
+ /**/
+
+--
+If bankers can count, how come they have eight windows and
+only four tellers?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.185 b/source/ap/vim/patches/7.3.185
new file mode 100644
index 000000000..7b3ed1899
--- /dev/null
+++ b/source/ap/vim/patches/7.3.185
@@ -0,0 +1,77 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.185
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.185
+Problem: ":windo g/pattern/q" closes windows and reports "N more lines".
+ (Tim Chase)
+Solution: Remember what buffer ":global" started in. (Jean-Rene David)
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.3.184/src/ex_cmds.c 2011-04-11 21:35:03.000000000 +0200
+--- src/ex_cmds.c 2011-05-10 15:58:48.000000000 +0200
+***************
+*** 5365,5372 ****
+ global_exe(cmd)
+ char_u *cmd;
+ {
+! linenr_T old_lcount; /* b_ml.ml_line_count before the command */
+! linenr_T lnum; /* line number according to old situation */
+
+ /*
+ * Set current position only once for a global command.
+--- 5365,5373 ----
+ global_exe(cmd)
+ char_u *cmd;
+ {
+! linenr_T old_lcount; /* b_ml.ml_line_count before the command */
+! buf_T *old_buf = curbuf; /* remember what buffer we started in */
+! linenr_T lnum; /* line number according to old situation */
+
+ /*
+ * Set current position only once for a global command.
+***************
+*** 5410,5417 ****
+ msg_didout = FALSE;
+
+ /* If substitutes done, report number of substitutes, otherwise report
+! * number of extra or deleted lines. */
+! if (!do_sub_msg(FALSE))
+ msgmore(curbuf->b_ml.ml_line_count - old_lcount);
+ }
+
+--- 5411,5420 ----
+ msg_didout = FALSE;
+
+ /* If substitutes done, report number of substitutes, otherwise report
+! * number of extra or deleted lines.
+! * Don't report extra or deleted lines in the edge case where the buffer
+! * we are in after execution is different from the buffer we started in. */
+! if (!do_sub_msg(FALSE) && curbuf == old_buf)
+ msgmore(curbuf->b_ml.ml_line_count - old_lcount);
+ }
+
+*** ../vim-7.3.184/src/version.c 2011-05-10 15:52:10.000000000 +0200
+--- src/version.c 2011-05-10 15:57:40.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 185,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+79. All of your most erotic dreams have a scrollbar at the right side.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.186 b/source/ap/vim/patches/7.3.186
new file mode 100644
index 000000000..d834c370d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.186
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.186
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.186
+Problem: When 'clipboard' contains "unnamed" or "unnamedplus" the value of
+ v:register is wrong for operators without a specific register.
+Solution: Adjust the register according to 'clipboard'. (Ingo Karkat)
+Files: src/normal.c
+
+
+*** ../vim-7.3.185/src/normal.c 2010-12-17 18:52:56.000000000 +0100
+--- src/normal.c 2011-05-10 16:07:49.000000000 +0200
+***************
+*** 1202,1208 ****
+ {
+ clearop(oap);
+ #ifdef FEAT_EVAL
+! set_reg_var('"');
+ #endif
+ }
+
+--- 1202,1214 ----
+ {
+ clearop(oap);
+ #ifdef FEAT_EVAL
+! {
+! int regname = 0;
+! /* Adjust the register according to 'clipboard', so that when
+! * "unnamed" is present it becomes '*' or '+' instead of '"'. */
+! adjust_clip_reg(&regname);
+! set_reg_var(regname);
+! }
+ #endif
+ }
+
+*** ../vim-7.3.185/src/version.c 2011-05-10 16:00:43.000000000 +0200
+--- src/version.c 2011-05-10 16:10:10.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 186,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+80. At parties, you introduce your spouse as your "service provider."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.187 b/source/ap/vim/patches/7.3.187
new file mode 100644
index 000000000..7bf82ce4d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.187
@@ -0,0 +1,6621 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.187
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.187
+Problem: The RISC OS port has obvious errors and is not being maintained.
+Solution: Remove the RISC OS files and code.
+Files: src/ascii.h, src/eval.c, src/ex_cmds.c, src/ex_cmds2.c,
+ src/ex_docmd.c, src/fileio.c, src/globals.h, src/gui.c, src/gui.h,
+ src/main.c, src/memfile.c, src/memline.c, src/misc1.c,
+ src/proto.h, src/quickfix.c, src/search.c, src/structs.h,
+ src/term.c, src/termlib.c, src/version.c, src/vim.h,
+ src/gui_riscos.h, src/os_riscos.h, src/gui_riscos.c,
+ src/os_riscos.c, runtime/doc/os_risc.txt
+
+
+*** ../vim-7.3.186/src/ascii.h 2010-08-15 21:57:25.000000000 +0200
+--- src/ascii.h 2011-05-10 16:22:08.000000000 +0200
+***************
+*** 183,193 ****
+ # define PATHSEP psepc
+ # define PATHSEPSTR pseps
+ #else
+! # ifdef RISCOS
+! # define PATHSEP '.'
+! # define PATHSEPSTR "."
+! # else
+! # define PATHSEP '/'
+! # define PATHSEPSTR "/"
+! # endif
+ #endif
+--- 183,188 ----
+ # define PATHSEP psepc
+ # define PATHSEPSTR pseps
+ #else
+! # define PATHSEP '/'
+! # define PATHSEPSTR "/"
+ #endif
+*** ../vim-7.3.186/src/eval.c 2011-04-21 14:27:21.000000000 +0200
+--- src/eval.c 2011-05-10 16:22:21.000000000 +0200
+***************
+*** 11818,11826 ****
+ #ifdef __QNX__
+ "qnx",
+ #endif
+- #ifdef RISCOS
+- "riscos",
+- #endif
+ #ifdef UNIX
+ "unix",
+ #endif
+--- 11818,11823 ----
+*** ../vim-7.3.186/src/ex_cmds.c 2011-05-10 16:00:43.000000000 +0200
+--- src/ex_cmds.c 2011-05-10 16:23:22.000000000 +0200
+***************
+*** 899,907 ****
+ * Handle the ":!cmd" command. Also for ":r !cmd" and ":w !cmd"
+ * Bangs in the argument are replaced with the previously entered command.
+ * Remember the argument.
+- *
+- * RISCOS: Bangs only replaced when followed by a space, since many
+- * pathnames contain one.
+ */
+ void
+ do_bang(addr_count, eap, forceit, do_in, do_out)
+--- 899,904 ----
+***************
+*** 980,990 ****
+ trailarg = NULL;
+ while (*p)
+ {
+! if (*p == '!'
+! #ifdef RISCOS
+! && (p[1] == ' ' || p[1] == NUL)
+! #endif
+! )
+ {
+ if (p > newcmd && p[-1] == '\\')
+ STRMOVE(p - 1, p);
+--- 977,983 ----
+ trailarg = NULL;
+ while (*p)
+ {
+! if (*p == '!')
+ {
+ if (p > newcmd && p[-1] == '\\')
+ STRMOVE(p - 1, p);
+***************
+*** 1578,1591 ****
+ if (p != NULL)
+ *p = NUL;
+ }
+- # ifdef RISCOS
+- STRCAT(buf, " { < "); /* Use RISC OS notation for input. */
+- STRCAT(buf, itmp);
+- STRCAT(buf, " } ");
+- # else
+ STRCAT(buf, " <"); /* " < " causes problems on Amiga */
+ STRCAT(buf, itmp);
+- # endif
+ if (*p_shq == NUL)
+ {
+ p = vim_strchr(cmd, '|');
+--- 1571,1578 ----
+***************
+*** 1634,1649 ****
+ else
+ vim_snprintf((char *)end, (size_t)(buflen - (end - buf)),
+ #ifdef FEAT_QUICKFIX
+- # ifndef RISCOS
+- opt != p_sp ? " %s%s" :
+- # endif
+ " %s %s",
+ #else
+- # ifndef RISCOS
+ " %s%s", /* " > %s" causes problems on Amiga */
+- # else
+- " %s %s", /* But is needed for 'shellpipe' and RISC OS */
+- # endif
+ #endif
+ (char *)opt, (char *)fname);
+ }
+--- 1621,1629 ----
+***************
+*** 1844,1854 ****
+ #ifdef VMS
+ (char_u *)"-tmp",
+ #else
+- # ifdef RISCOS
+- (char_u *)"/tmp",
+- # else
+ (char_u *)".tmp",
+- # endif
+ #endif
+ FALSE);
+ if (tempname == NULL) /* out of memory */
+--- 1824,1830 ----
+*** ../vim-7.3.186/src/ex_cmds2.c 2011-04-11 21:35:03.000000000 +0200
+--- src/ex_cmds2.c 2011-05-10 16:23:47.000000000 +0200
+***************
+*** 500,517 ****
+ /* Expand the file name in the same way as do_source(). This means
+ * doing it twice, so that $DIR/file gets expanded when $DIR is
+ * "~/dir". */
+- #ifdef RISCOS
+- q = mch_munge_fname(p);
+- #else
+ q = expand_env_save(p);
+- #endif
+ if (q == NULL)
+ return FAIL;
+- #ifdef RISCOS
+- p = mch_munge_fname(q);
+- #else
+ p = expand_env_save(q);
+- #endif
+ vim_free(q);
+ if (p == NULL)
+ return FAIL;
+--- 500,509 ----
+***************
+*** 2940,2950 ****
+ proftime_T wait_start;
+ #endif
+
+- #ifdef RISCOS
+- p = mch_munge_fname(fname);
+- #else
+ p = expand_env_save(fname);
+- #endif
+ if (p == NULL)
+ return retval;
+ fname_exp = fix_fname(p);
+--- 2932,2938 ----
+*** ../vim-7.3.186/src/ex_docmd.c 2011-05-05 14:26:37.000000000 +0200
+--- src/ex_docmd.c 2011-05-10 16:24:18.000000000 +0200
+***************
+*** 9702,9715 ****
+ valid = 0; /* Must have ":p:h" to be valid */
+ }
+ else
+- #ifdef RISCOS
+- /* Always use the full path for RISC OS if possible. */
+- result = curbuf->b_ffname;
+- if (result == NULL)
+- result = curbuf->b_fname;
+- #else
+ result = curbuf->b_fname;
+- #endif
+ break;
+
+ case SPEC_HASH: /* '#' or "#99": alternate file */
+--- 9702,9708 ----
+***************
+*** 9854,9864 ****
+ if (src[*usedlen] == '<') /* remove the file name extension */
+ {
+ ++*usedlen;
+- #ifdef RISCOS
+- if ((s = vim_strrchr(result, '/')) != NULL && s >= gettail(result))
+- #else
+ if ((s = vim_strrchr(result, '.')) != NULL && s >= gettail(result))
+- #endif
+ resultlen = (int)(s - result);
+ }
+ #ifdef FEAT_MODIFY_FNAME
+--- 9847,9853 ----
+***************
+*** 10875,10882 ****
+ else if (vim_ispathsep(*p))
+ {
+ *s++ = '=';
+! #if defined(BACKSLASH_IN_FILENAME) || defined(AMIGA) || defined(RISCOS) \
+! || defined(VMS)
+ if (*p == ':')
+ *s++ = '-';
+ else
+--- 10864,10870 ----
+ else if (vim_ispathsep(*p))
+ {
+ *s++ = '=';
+! #if defined(BACKSLASH_IN_FILENAME) || defined(AMIGA) || defined(VMS)
+ if (*p == ':')
+ *s++ = '-';
+ else
+*** ../vim-7.3.186/src/fileio.c 2011-05-05 16:41:19.000000000 +0200
+--- src/fileio.c 2011-05-10 16:26:06.000000000 +0200
+***************
+*** 504,521 ****
+
+ if (newfile && !read_stdin && !read_buffer)
+ {
+! /* Remember time of file.
+! * For RISCOS, also remember the filetype.
+! */
+ if (mch_stat((char *)fname, &st) >= 0)
+ {
+ buf_store_time(curbuf, &st, fname);
+ curbuf->b_mtime_read = curbuf->b_mtime;
+-
+- #if defined(RISCOS) && defined(FEAT_OSFILETYPE)
+- /* Read the filetype into the buffer local filetype option. */
+- mch_read_filetype(fname);
+- #endif
+ #ifdef UNIX
+ /*
+ * Use the protection bits of the original file for the swap file.
+--- 504,514 ----
+
+ if (newfile && !read_stdin && !read_buffer)
+ {
+! /* Remember time of file. */
+ if (mch_stat((char *)fname, &st) >= 0)
+ {
+ buf_store_time(curbuf, &st, fname);
+ curbuf->b_mtime_read = curbuf->b_mtime;
+ #ifdef UNIX
+ /*
+ * Use the protection bits of the original file for the swap file.
+***************
+*** 557,563 ****
+
+ /*
+ * for UNIX: check readonly with perm and mch_access()
+- * for RISCOS: same as Unix, otherwise file gets re-datestamped!
+ * for MSDOS and Amiga: check readonly by trying to open the file for writing
+ */
+ file_readonly = FALSE;
+--- 550,555 ----
+***************
+*** 3804,3816 ****
+
+ /* make sure we have a valid backup extension to use */
+ if (*p_bex == NUL)
+- {
+- #ifdef RISCOS
+- backup_ext = (char_u *)"/bak";
+- #else
+ backup_ext = (char_u *)".bak";
+- #endif
+- }
+ else
+ backup_ext = p_bex;
+
+--- 3796,3802 ----
+***************
+*** 4724,4734 ****
+ #endif
+ if (perm >= 0) /* set perm. of new file same as old file */
+ (void)mch_setperm(wfname, perm);
+- #ifdef RISCOS
+- if (!append && !filtering)
+- /* Set the filetype after writing the file. */
+- mch_set_filetype(wfname, buf->b_p_oft);
+- #endif
+ #ifdef HAVE_ACL
+ /* Probably need to set the ACL before changing the user (can't set the
+ * ACL on a file the user doesn't own). */
+--- 4710,4715 ----
+***************
+*** 6262,6280 ****
+ */
+ for (ptr = retval + fnamelen; ptr > retval; mb_ptr_back(retval, ptr))
+ {
+- #ifndef RISCOS
+ if (*ext == '.'
+! # ifdef USE_LONG_FNAME
+ && (!USE_LONG_FNAME || shortname)
+! # else
+! # ifndef SHORT_FNAME
+ && shortname
+- # endif
+ # endif
+ )
+ if (*ptr == '.') /* replace '.' by '_' */
+ *ptr = '_';
+- #endif
+ if (vim_ispathsep(*ptr))
+ {
+ ++ptr;
+--- 6243,6259 ----
+ */
+ for (ptr = retval + fnamelen; ptr > retval; mb_ptr_back(retval, ptr))
+ {
+ if (*ext == '.'
+! #ifdef USE_LONG_FNAME
+ && (!USE_LONG_FNAME || shortname)
+! #else
+! # ifndef SHORT_FNAME
+ && shortname
+ # endif
++ #endif
+ )
+ if (*ptr == '.') /* replace '.' by '_' */
+ *ptr = '_';
+ if (vim_ispathsep(*ptr))
+ {
+ ++ptr;
+***************
+*** 6309,6331 ****
+ if (fname == NULL || *fname == NUL
+ || vim_ispathsep(fname[STRLEN(fname) - 1]))
+ {
+- #ifdef RISCOS
+- if (*ext == '/')
+- #else
+ if (*ext == '.')
+- #endif
+ *s++ = '_';
+ }
+ /*
+ * If the extension starts with '.', truncate the base name at 8
+ * characters
+ */
+- #ifdef RISCOS
+- /* We normally use '/', but swap files are '_' */
+- else if (*ext == '/' || *ext == '_')
+- #else
+ else if (*ext == '.')
+- #endif
+ {
+ if ((size_t)(s - ptr) > (size_t)8)
+ {
+--- 6288,6301 ----
+***************
+*** 6337,6349 ****
+ * If the extension doesn't start with '.', and the file name
+ * doesn't have an extension yet, append a '.'
+ */
+- #ifdef RISCOS
+- else if ((e = vim_strchr(ptr, '/')) == NULL)
+- *s++ = '/';
+- #else
+ else if ((e = vim_strchr(ptr, '.')) == NULL)
+ *s++ = '.';
+- #endif
+ /*
+ * If the extension doesn't start with '.', and there already is an
+ * extension, it may need to be truncated
+--- 6307,6314 ----
+***************
+*** 6371,6393 ****
+ /*
+ * Prepend the dot.
+ */
+! if (prepend_dot && !shortname && *(e = gettail(retval)) !=
+! #ifdef RISCOS
+! '/'
+! #else
+! '.'
+! #endif
+ #ifdef USE_LONG_FNAME
+ && USE_LONG_FNAME
+ #endif
+ )
+ {
+ STRMOVE(e + 1, e);
+- #ifdef RISCOS
+- *e = '/';
+- #else
+ *e = '.';
+- #endif
+ }
+ #endif
+
+--- 6336,6349 ----
+ /*
+ * Prepend the dot.
+ */
+! if (prepend_dot && !shortname && *(e = gettail(retval)) != '.'
+ #ifdef USE_LONG_FNAME
+ && USE_LONG_FNAME
+ #endif
+ )
+ {
+ STRMOVE(e + 1, e);
+ *e = '.';
+ }
+ #endif
+
+***************
+*** 10205,10223 ****
+ ++p;
+ break;
+ case '.':
+- #ifdef RISCOS
+- if (allow_dirs != NULL)
+- *allow_dirs = TRUE;
+- /* FALLTHROUGH */
+- #endif
+ case '~':
+ reg_pat[i++] = '\\';
+ reg_pat[i++] = *p;
+ break;
+ case '?':
+- #ifdef RISCOS
+- case '#':
+- #endif
+ reg_pat[i++] = '.';
+ break;
+ case '\\':
+--- 10161,10171 ----
+*** ../vim-7.3.186/src/globals.h 2011-05-05 14:26:37.000000000 +0200
+--- src/globals.h 2011-05-10 16:26:13.000000000 +0200
+***************
+*** 1513,1519 ****
+ EXTERN char_u e_sandbox[] INIT(= N_("E48: Not allowed in sandbox"));
+ #endif
+ EXTERN char_u e_secure[] INIT(= N_("E523: Not allowed here"));
+! #if defined(AMIGA) || defined(MACOS) || defined(MSWIN) || defined(RISCOS) \
+ || defined(UNIX) || defined(VMS) || defined(OS2)
+ EXTERN char_u e_screenmode[] INIT(= N_("E359: Screen mode setting not supported"));
+ #endif
+--- 1513,1519 ----
+ EXTERN char_u e_sandbox[] INIT(= N_("E48: Not allowed in sandbox"));
+ #endif
+ EXTERN char_u e_secure[] INIT(= N_("E523: Not allowed here"));
+! #if defined(AMIGA) || defined(MACOS) || defined(MSWIN) \
+ || defined(UNIX) || defined(VMS) || defined(OS2)
+ EXTERN char_u e_screenmode[] INIT(= N_("E359: Screen mode setting not supported"));
+ #endif
+*** ../vim-7.3.186/src/gui.c 2011-01-17 20:08:03.000000000 +0100
+--- src/gui.c 2011-05-10 16:26:53.000000000 +0200
+***************
+*** 2156,2162 ****
+
+ if (highlight_mask & (HL_INVERSE | HL_STANDOUT))
+ {
+! #if defined(AMIGA) || defined(RISCOS)
+ gui_mch_set_colors(bg_color, fg_color);
+ #else
+ gui_mch_set_fg_color(bg_color);
+--- 2156,2162 ----
+
+ if (highlight_mask & (HL_INVERSE | HL_STANDOUT))
+ {
+! #if defined(AMIGA)
+ gui_mch_set_colors(bg_color, fg_color);
+ #else
+ gui_mch_set_fg_color(bg_color);
+***************
+*** 2165,2171 ****
+ }
+ else
+ {
+! #if defined(AMIGA) || defined(RISCOS)
+ gui_mch_set_colors(fg_color, bg_color);
+ #else
+ gui_mch_set_fg_color(fg_color);
+--- 2165,2171 ----
+ }
+ else
+ {
+! #if defined(AMIGA)
+ gui_mch_set_colors(fg_color, bg_color);
+ #else
+ gui_mch_set_fg_color(fg_color);
+***************
+*** 2193,2199 ****
+ if (back != 0 && ((draw_flags & DRAW_BOLD) || (highlight_mask & HL_ITALIC)))
+ return FAIL;
+
+! #if defined(RISCOS) || defined(FEAT_GUI_GTK)
+ /* If there's no italic font, then fake it.
+ * For GTK2, we don't need a different font for italic style. */
+ if (hl_mask_todo & HL_ITALIC)
+--- 2193,2199 ----
+ if (back != 0 && ((draw_flags & DRAW_BOLD) || (highlight_mask & HL_ITALIC)))
+ return FAIL;
+
+! #if defined(FEAT_GUI_GTK)
+ /* If there's no italic font, then fake it.
+ * For GTK2, we don't need a different font for italic style. */
+ if (hl_mask_todo & HL_ITALIC)
+***************
+*** 2985,3010 ****
+ did_clip = TRUE;
+ }
+ /* Allow the left button to start the selection */
+- else if (button ==
+- # ifdef RISCOS
+- /* Only start a drag on a drag event. Otherwise
+- * we don't get a release event. */
+- MOUSE_DRAG
+- # else
+- MOUSE_LEFT
+- # endif
+- )
+- {
+- clip_start_selection(X_2_COL(x), Y_2_ROW(y), repeated_click);
+- did_clip = TRUE;
+- }
+- # ifdef RISCOS
+ else if (button == MOUSE_LEFT)
+ {
+! clip_clear_selection();
+ did_clip = TRUE;
+ }
+- # endif
+
+ /* Always allow pasting */
+ if (button != MOUSE_MIDDLE)
+--- 2985,2995 ----
+ did_clip = TRUE;
+ }
+ /* Allow the left button to start the selection */
+ else if (button == MOUSE_LEFT)
+ {
+! clip_start_selection(X_2_COL(x), Y_2_ROW(y), repeated_click);
+ did_clip = TRUE;
+ }
+
+ /* Always allow pasting */
+ if (button != MOUSE_MIDDLE)
+*** ../vim-7.3.186/src/gui.h 2010-08-15 21:57:25.000000000 +0200
+--- src/gui.h 2011-05-10 16:27:19.000000000 +0200
+***************
+*** 52,61 ****
+ # include <SegLoad.h>*/
+ #endif
+
+- #ifdef RISCOS
+- # include "gui_riscos.h"
+- #endif
+-
+ #ifdef FEAT_GUI_PHOTON
+ # include <Ph.h>
+ # include <Pt.h>
+--- 52,57 ----
+***************
+*** 151,157 ****
+ #define DRAW_BOLD 0x02 /* draw bold text */
+ #define DRAW_UNDERL 0x04 /* draw underline text */
+ #define DRAW_UNDERC 0x08 /* draw undercurl text */
+! #if defined(RISCOS) || defined(FEAT_GUI_GTK)
+ # define DRAW_ITALIC 0x10 /* draw italic text */
+ #endif
+ #define DRAW_CURSOR 0x20 /* drawing block cursor (win32) */
+--- 147,153 ----
+ #define DRAW_BOLD 0x02 /* draw bold text */
+ #define DRAW_UNDERL 0x04 /* draw underline text */
+ #define DRAW_UNDERC 0x08 /* draw undercurl text */
+! #if defined(FEAT_GUI_GTK)
+ # define DRAW_ITALIC 0x10 /* draw italic text */
+ #endif
+ #define DRAW_CURSOR 0x20 /* drawing block cursor (win32) */
+***************
+*** 219,227 ****
+ #ifdef FEAT_GUI_MAC
+ ControlHandle id; /* A handle to the scrollbar */
+ #endif
+- #ifdef RISCOS
+- int id; /* Window handle of scrollbar window */
+- #endif
+ #ifdef FEAT_GUI_PHOTON
+ PtWidget_t *id;
+ #endif
+--- 215,220 ----
+***************
+*** 450,463 ****
+ int visibility; /* Is window partially/fully obscured? */
+ #endif
+
+- #ifdef RISCOS
+- int window_handle;
+- char_u *window_title;
+- int window_title_size;
+- int fg_colour; /* in 0xBBGGRR format */
+- int bg_colour;
+- #endif
+-
+ #ifdef FEAT_GUI_PHOTON
+ PtWidget_t *vimWindow; /* PtWindow */
+ PtWidget_t *vimTextArea; /* PtRaw */
+--- 443,448 ----
+*** ../vim-7.3.186/src/main.c 2011-04-11 21:35:03.000000000 +0200
+--- src/main.c 2011-05-10 16:27:33.000000000 +0200
+***************
+*** 3276,3286 ****
+ main_msg(_("+reverse\t\tDon't use reverse video (also: +rv)"));
+ main_msg(_("-xrm <resource>\tSet the specified resource"));
+ #endif /* FEAT_GUI_X11 */
+- #if defined(FEAT_GUI) && defined(RISCOS)
+- mch_msg(_("\nArguments recognised by gvim (RISC OS version):\n"));
+- main_msg(_("--columns <number>\tInitial width of window in columns"));
+- main_msg(_("--rows <number>\tInitial height of window in rows"));
+- #endif
+ #ifdef FEAT_GUI_GTK
+ mch_msg(_("\nArguments recognised by gvim (GTK+ version):\n"));
+ main_msg(_("-font <font>\t\tUse <font> for normal text (also: -fn)"));
+--- 3276,3281 ----
+*** ../vim-7.3.186/src/memfile.c 2011-03-22 18:10:34.000000000 +0100
+--- src/memfile.c 2011-05-10 16:27:38.000000000 +0200
+***************
+*** 1307,1313 ****
+ * fname cannot be NameBuff, because it must have been allocated.
+ */
+ mf_set_ffname(mfp);
+! #if defined(MSDOS) || defined(MSWIN) || defined(RISCOS)
+ /*
+ * A ":!cd e:xxx" may change the directory without us knowning, use the
+ * full pathname always. Careful: This frees fname!
+--- 1307,1313 ----
+ * fname cannot be NameBuff, because it must have been allocated.
+ */
+ mf_set_ffname(mfp);
+! #if defined(MSDOS) || defined(MSWIN)
+ /*
+ * A ":!cd e:xxx" may change the directory without us knowning, use the
+ * full pathname always. Careful: This frees fname!
+*** ../vim-7.3.186/src/memline.c 2011-02-15 11:56:56.000000000 +0100
+--- src/memline.c 2011-05-10 16:28:40.000000000 +0200
+***************
+*** 748,754 ****
+ continue;
+ if (mf_open_file(mfp, fname) == OK) /* consumes fname! */
+ {
+! #if defined(MSDOS) || defined(MSWIN) || defined(RISCOS)
+ /*
+ * set full pathname for swap file now, because a ":!cd dir" may
+ * change directory without us knowing it.
+--- 748,754 ----
+ continue;
+ if (mf_open_file(mfp, fname) == OK) /* consumes fname! */
+ {
+! #if defined(MSDOS) || defined(MSWIN)
+ /*
+ * set full pathname for swap file now, because a ":!cd dir" may
+ * change directory without us knowing it.
+***************
+*** 933,939 ****
+ b0p->b0_fname[0] = NUL;
+ else
+ {
+! #if defined(MSDOS) || defined(MSWIN) || defined(AMIGA) || defined(RISCOS)
+ /* Systems that cannot translate "~user" back into a path: copy the
+ * file name unmodified. Do use slashes instead of backslashes for
+ * portability. */
+--- 933,939 ----
+ b0p->b0_fname[0] = NUL;
+ else
+ {
+! #if defined(MSDOS) || defined(MSWIN) || defined(AMIGA)
+ /* Systems that cannot translate "~user" back into a path: copy the
+ * file name unmodified. Do use slashes instead of backslashes for
+ * portability. */
+***************
+*** 1103,1109 ****
+ fname = (char_u *)"";
+ len = (int)STRLEN(fname);
+ if (len >= 4 &&
+! #if defined(VMS) || defined(RISCOS)
+ STRNICMP(fname + len - 4, "_s" , 2)
+ #else
+ STRNICMP(fname + len - 4, ".s" , 2)
+--- 1103,1109 ----
+ fname = (char_u *)"";
+ len = (int)STRLEN(fname);
+ if (len >= 4 &&
+! #if defined(VMS)
+ STRNICMP(fname + len - 4, "_s" , 2)
+ #else
+ STRNICMP(fname + len - 4, ".s" , 2)
+***************
+*** 1773,1783 ****
+ #ifdef VMS
+ names[0] = vim_strsave((char_u *)"*_sw%");
+ #else
+- # ifdef RISCOS
+- names[0] = vim_strsave((char_u *)"*_sw#");
+- # else
+ names[0] = vim_strsave((char_u *)"*.sw?");
+- # endif
+ #endif
+ #if defined(UNIX) || defined(WIN3264)
+ /* For Unix names starting with a dot are special. MS-Windows
+--- 1773,1779 ----
+***************
+*** 1804,1814 ****
+ #ifdef VMS
+ names[0] = concat_fnames(dir_name, (char_u *)"*_sw%", TRUE);
+ #else
+- # ifdef RISCOS
+- names[0] = concat_fnames(dir_name, (char_u *)"*_sw#", TRUE);
+- # else
+ names[0] = concat_fnames(dir_name, (char_u *)"*.sw?", TRUE);
+- # endif
+ #endif
+ #if defined(UNIX) || defined(WIN3264)
+ /* For Unix names starting with a dot are special. MS-Windows
+--- 1800,1806 ----
+***************
+*** 1877,1883 ****
+ char_u *swapname;
+
+ swapname = modname(fname_res,
+! #if defined(VMS) || defined(RISCOS)
+ (char_u *)"_swp", FALSE
+ #else
+ (char_u *)".swp", TRUE
+--- 1869,1875 ----
+ char_u *swapname;
+
+ swapname = modname(fname_res,
+! #if defined(VMS)
+ (char_u *)"_swp", FALSE
+ #else
+ (char_u *)".swp", TRUE
+***************
+*** 2176,2186 ****
+ #ifdef VMS
+ names[num_names] = concat_fnames(path, (char_u *)"_sw%", FALSE);
+ #else
+- # ifdef RISCOS
+- names[num_names] = concat_fnames(path, (char_u *)"_sw#", FALSE);
+- # else
+ names[num_names] = concat_fnames(path, (char_u *)".sw?", FALSE);
+- # endif
+ #endif
+ if (names[num_names] == NULL)
+ goto end;
+--- 2168,2174 ----
+***************
+*** 2207,2217 ****
+ #ifdef VMS
+ names[num_names] = modname(path, (char_u *)"_sw%", FALSE);
+ #else
+- # ifdef RISCOS
+- names[num_names] = modname(path, (char_u *)"_sw#", FALSE);
+- # else
+ names[num_names] = modname(path, (char_u *)".sw?", FALSE);
+- # endif
+ #endif
+ if (names[num_names] == NULL)
+ goto end;
+--- 2195,2201 ----
+***************
+*** 3205,3211 ****
+ mf_free(mfp, hp); /* free the data block */
+ buf->b_ml.ml_locked = NULL;
+
+! for (stack_idx = buf->b_ml.ml_stack_top - 1; stack_idx >= 0; --stack_idx)
+ {
+ buf->b_ml.ml_stack_top = 0; /* stack is invalid when failing */
+ ip = &(buf->b_ml.ml_stack[stack_idx]);
+--- 3189,3196 ----
+ mf_free(mfp, hp); /* free the data block */
+ buf->b_ml.ml_locked = NULL;
+
+! for (stack_idx = buf->b_ml.ml_stack_top - 1; stack_idx >= 0;
+! --stack_idx)
+ {
+ buf->b_ml.ml_stack_top = 0; /* stack is invalid when failing */
+ ip = &(buf->b_ml.ml_stack[stack_idx]);
+***************
+*** 3956,3969 ****
+ #else
+ (buf->b_p_sn || buf->b_shortname),
+ #endif
+- #ifdef RISCOS
+- /* Avoid problems if fname has special chars, eg <Wimp$Scrap> */
+- ffname,
+- #else
+ fname_res,
+- #endif
+ (char_u *)
+! #if defined(VMS) || defined(RISCOS)
+ "_swp",
+ #else
+ ".swp",
+--- 3941,3949 ----
+ #else
+ (buf->b_p_sn || buf->b_shortname),
+ #endif
+ fname_res,
+ (char_u *)
+! #if defined(VMS)
+ "_swp",
+ #else
+ ".swp",
+***************
+*** 4427,4440 ****
+ }
+ close(fd);
+ }
+- #ifdef RISCOS
+- else
+- /* Can't open swap file, though it does exist.
+- * Assume that the user is editing two files with
+- * the same name in different directories. No error.
+- */
+- differ = TRUE;
+- #endif
+
+ /* give the ATTENTION message when there is an old swap file
+ * for the current file, and the buffer was not recovered. */
+--- 4407,4412 ----
+*** ../vim-7.3.186/src/misc1.c 2011-05-10 14:44:07.000000000 +0200
+--- src/misc1.c 2011-05-10 16:29:29.000000000 +0200
+***************
+*** 4589,4613 ****
+ vim_ispathsep(c)
+ int c;
+ {
+! #ifdef RISCOS
+! return (c == '.' || c == ':');
+! #else
+! # ifdef UNIX
+ return (c == '/'); /* UNIX has ':' inside file names */
+! # else
+! # ifdef BACKSLASH_IN_FILENAME
+ return (c == ':' || c == '/' || c == '\\');
+! # else
+! # ifdef VMS
+ /* server"user passwd"::device:[full.path.name]fname.extension;version" */
+ return (c == ':' || c == '[' || c == ']' || c == '/'
+ || c == '<' || c == '>' || c == '"' );
+! # else /* Amiga */
+ return (c == ':' || c == '/');
+! # endif /* VMS */
+! # endif
+ # endif
+! #endif /* RISC OS */
+ }
+
+ #if defined(FEAT_SEARCHPATH) || defined(PROTO)
+--- 4589,4609 ----
+ vim_ispathsep(c)
+ int c;
+ {
+! #ifdef UNIX
+ return (c == '/'); /* UNIX has ':' inside file names */
+! #else
+! # ifdef BACKSLASH_IN_FILENAME
+ return (c == ':' || c == '/' || c == '\\');
+! # else
+! # ifdef VMS
+ /* server"user passwd"::device:[full.path.name]fname.extension;version" */
+ return (c == ':' || c == '[' || c == ']' || c == '/'
+ || c == '<' || c == '>' || c == '"' );
+! # else
+ return (c == ':' || c == '/');
+! # endif /* VMS */
+ # endif
+! #endif
+ }
+
+ #if defined(FEAT_SEARCHPATH) || defined(PROTO)
+*** ../vim-7.3.186/src/proto.h 2010-08-15 21:57:29.000000000 +0200
+--- src/proto.h 2011-05-10 16:29:45.000000000 +0200
+***************
+*** 62,70 ****
+ # ifdef __BEOS__
+ # include "os_beos.pro"
+ # endif
+- # ifdef RISCOS
+- # include "os_riscos.pro"
+- # endif
+ # ifdef __QNX__
+ # include "os_qnx.pro"
+ # endif
+--- 62,67 ----
+***************
+*** 245,253 ****
+ # ifdef FEAT_GUI_X11
+ # include "gui_x11.pro"
+ # endif
+- # ifdef RISCOS
+- # include "gui_riscos.pro"
+- # endif
+ # ifdef FEAT_GUI_PHOTON
+ # include "gui_photon.pro"
+ # endif
+--- 242,247 ----
+*** ../vim-7.3.186/src/quickfix.c 2011-05-05 17:14:07.000000000 +0200
+--- src/quickfix.c 2011-05-10 16:30:18.000000000 +0200
+***************
+*** 1182,1202 ****
+ if (fname == NULL || *fname == NUL) /* no file name */
+ return 0;
+ {
+- #ifdef RISCOS
+- /* Name is reported as `main.c', but file is `c.main' */
+- return ro_buflist_add(fname);
+- #else
+ char_u *ptr;
+ int fnum;
+
+! # ifdef VMS
+ vms_remove_version(fname);
+! # endif
+! # ifdef BACKSLASH_IN_FILENAME
+ if (directory != NULL)
+ slash_adjust(directory);
+ slash_adjust(fname);
+! # endif
+ if (directory != NULL && !vim_isAbsName(fname)
+ && (ptr = concat_fnames(directory, fname, TRUE)) != NULL)
+ {
+--- 1182,1198 ----
+ if (fname == NULL || *fname == NUL) /* no file name */
+ return 0;
+ {
+ char_u *ptr;
+ int fnum;
+
+! #ifdef VMS
+ vms_remove_version(fname);
+! #endif
+! #ifdef BACKSLASH_IN_FILENAME
+ if (directory != NULL)
+ slash_adjust(directory);
+ slash_adjust(fname);
+! #endif
+ if (directory != NULL && !vim_isAbsName(fname)
+ && (ptr = concat_fnames(directory, fname, TRUE)) != NULL)
+ {
+***************
+*** 1221,1227 ****
+ return fnum;
+ }
+ return buflist_add(fname, 0);
+- #endif
+ }
+ }
+
+--- 1217,1222 ----
+*** ../vim-7.3.186/src/search.c 2011-02-25 18:38:29.000000000 +0100
+--- src/search.c 2011-05-10 16:30:38.000000000 +0200
+***************
+*** 4581,4589 ****
+ char_u *already = NULL;
+ char_u *startp = NULL;
+ char_u *inc_opt = NULL;
+- #ifdef RISCOS
+- int previous_munging = __riscosify_control;
+- #endif
+ #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+ win_T *curwin_save = NULL;
+ #endif
+--- 4581,4586 ----
+***************
+*** 4596,4606 ****
+ if (file_line == NULL)
+ return;
+
+- #ifdef RISCOS
+- /* UnixLib knows best how to munge c file names - turn munging back on. */
+- int __riscosify_control = 0;
+- #endif
+-
+ if (type != CHECK_PATH && type != FIND_DEFINE
+ #ifdef FEAT_INS_EXPAND
+ /* when CONT_SOL is set compare "ptr" with the beginning of the line
+--- 4593,4598 ----
+***************
+*** 5228,5238 ****
+ vim_free(regmatch.regprog);
+ vim_free(incl_regmatch.regprog);
+ vim_free(def_regmatch.regprog);
+-
+- #ifdef RISCOS
+- /* Restore previous file munging state. */
+- __riscosify_control = previous_munging;
+- #endif
+ }
+
+ static void
+--- 5220,5225 ----
+*** ../vim-7.3.186/src/structs.h 2011-03-22 18:10:34.000000000 +0100
+--- src/structs.h 2011-05-10 16:30:49.000000000 +0200
+***************
+*** 2366,2376 ****
+ MenuHandle menu_handle;
+ MenuHandle submenu_handle;
+ #endif
+- #ifdef RISCOS
+- int *id; /* Not used, but gui.c needs it */
+- int greyed_out; /* Flag */
+- int hidden;
+- #endif
+ #ifdef FEAT_GUI_PHOTON
+ PtWidget_t *id;
+ PtWidget_t *submenu_id;
+--- 2366,2371 ----
+*** ../vim-7.3.186/src/term.c 2010-12-30 14:47:32.000000000 +0100
+--- src/term.c 2011-05-10 16:31:41.000000000 +0200
+***************
+*** 52,58 ****
+
+ /*
+ * Here are the builtin termcap entries. They are not stored as complete
+! * Tcarr structures, as such a structure is too big.
+ *
+ * The entries are compact, therefore they normally are included even when
+ * HAVE_TGETENT is defined. When HAVE_TGETENT is defined, the builtin entries
+--- 52,58 ----
+
+ /*
+ * Here are the builtin termcap entries. They are not stored as complete
+! * structures with all entries, as such a structure is too big.
+ *
+ * The entries are compact, therefore they normally are included even when
+ * HAVE_TGETENT is defined. When HAVE_TGETENT is defined, the builtin entries
+***************
+*** 199,269 ****
+ #endif
+
+ #ifndef NO_BUILTIN_TCAPS
+- # if defined(RISCOS) || defined(ALL_BUILTIN_TCAPS)
+- /*
+- * Default for the Acorn.
+- */
+- {(int)KS_NAME, "riscos"},
+- {(int)KS_CL, "\014"}, /* Cls and Home Cursor */
+- {(int)KS_CM, "\001%d\001%d\002"}, /* Position cursor */
+-
+- {(int)KS_CCO, "16"}, /* Allow 16 colors */
+-
+- {(int)KS_CAF, "\001%d\021"}, /* Set foreground colour */
+- {(int)KS_CAB, "\001%d\022"}, /* Set background colour */
+-
+-
+- {(int)KS_ME, "\004"}, /* Normal mode */
+- {(int)KS_MR, "\005"}, /* Reverse */
+-
+- {(int)KS_VI, "\016"}, /* Cursor invisible */
+- {(int)KS_VE, "\017"}, /* Cursor visible */
+- {(int)KS_VS, "\020"}, /* Cursor very visible */
+-
+- {(int)KS_CS, "\001%d\001%d\003"}, /* Set scroll region */
+- {(int)KS_SR, "\023"}, /* Scroll text down */
+- {K_UP, "\217"},
+- {K_DOWN, "\216"},
+- {K_LEFT, "\214"},
+- {K_RIGHT, "\215"},
+- {K_S_UP, "\237"},
+- {K_S_DOWN, "\236"},
+- {K_S_LEFT, "\234"},
+- {K_S_RIGHT, "\235"},
+-
+- {K_F1, "\201"},
+- {K_F2, "\202"},
+- {K_F3, "\203"},
+- {K_F4, "\204"},
+- {K_F5, "\205"},
+- {K_F6, "\206"},
+- {K_F7, "\207"},
+- {K_F8, "\210"},
+- {K_F9, "\211"},
+- {K_F10, "\312"},
+- {K_F11, "\313"},
+- {K_F12, "\314"},
+- {K_S_F1, "\221"},
+- {K_S_F2, "\222"},
+- {K_S_F3, "\223"},
+- {K_S_F4, "\224"},
+- {K_S_F5, "\225"},
+- {K_S_F6, "\226"},
+- {K_S_F7, "\227"},
+- {K_S_F8, "\230"},
+- {K_S_F9, "\231"},
+- {K_S_F10, "\332"},
+- {K_S_F11, "\333"},
+- {K_S_F12, "\334"},
+- {K_BS, "\010"},
+- {K_INS, "\315"},
+- {K_DEL, "\177"},
+- {K_HOME, "\036"},
+- {K_END, "\213"},
+- {K_PAGEUP, "\237"},
+- {K_PAGEDOWN, "\236"},
+- # endif /* Acorn terminal */
+-
+
+ # if defined(AMIGA) || defined(ALL_BUILTIN_TCAPS)
+ /*
+--- 199,204 ----
+***************
+*** 1399,1408 ****
+ /*
+ * DEFAULT_TERM is used, when no terminal is specified with -T option or $TERM.
+ */
+- #ifdef RISCOS
+- # define DEFAULT_TERM (char_u *)"riscos"
+- #endif
+-
+ #ifdef AMIGA
+ # define DEFAULT_TERM (char_u *)"amiga"
+ #endif
+--- 1334,1339 ----
+*** ../vim-7.3.186/src/termlib.c 2010-08-15 21:57:30.000000000 +0200
+--- src/termlib.c 2011-05-10 16:31:58.000000000 +0200
+***************
+*** 13,19 ****
+ #include "vim.h"
+ #include "termlib.pro"
+
+! #if !defined(AMIGA) && !defined(VMS) && !defined(MACOS) && !defined(RISCOS)
+ # include <sgtty.h>
+ #endif
+
+--- 13,19 ----
+ #include "vim.h"
+ #include "termlib.pro"
+
+! #if !defined(AMIGA) && !defined(VMS) && !defined(MACOS)
+ # include <sgtty.h>
+ #endif
+
+*** ../vim-7.3.186/src/version.c 2011-05-10 16:12:40.000000000 +0200
+--- src/version.c 2011-05-10 16:37:20.000000000 +0200
+***************
+*** 1205,1213 ****
+ # endif
+ #endif
+
+- #ifdef RISCOS
+- MSG_PUTS(_("\nRISC OS version"));
+- #endif
+ #ifdef VMS
+ MSG_PUTS(_("\nOpenVMS version"));
+ # ifdef HAVE_PATHDEF
+--- 1207,1212 ----
+*** ../vim-7.3.186/src/vim.h 2011-05-05 16:41:19.000000000 +0200
+--- src/vim.h 2011-05-10 16:32:40.000000000 +0200
+***************
+*** 184,192 ****
+ # define SIZEOF_INT 2
+ # endif
+ #endif
+- #ifdef RISCOS
+- # define SIZEOF_INT 4
+- #endif
+
+
+ #include "feature.h" /* #defines for optionals and features */
+--- 184,189 ----
+***************
+*** 340,349 ****
+ # include "os_mac.h"
+ #endif
+
+- #ifdef RISCOS
+- # include "os_riscos.h"
+- #endif
+-
+ #ifdef __QNX__
+ # include "os_qnx.h"
+ #endif
+--- 337,342 ----
+*** ../vim-7.3.186/src/gui_riscos.h 2010-08-15 21:57:28.000000000 +0200
+--- src/gui_riscos.h 1970-01-01 01:00:00.000000000 +0100
+***************
+*** 1,32 ****
+- /* vi:set ts=8 sts=4 sw=4:
+- *
+- * VIM - Vi IMproved by Bram Moolenaar
+- *
+- * Do ":help uganda" in Vim to read copying and usage conditions.
+- * Do ":help credits" in Vim to see a list of people who contributed.
+- */
+-
+- #define FEAT_BROWSE
+-
+- #define TASK 0x4b534154
+-
+- /* Nested wimp flags: */
+- #define CHILD_FIX_TO_WORKAREA 0
+- #define CHILD_FIX_TO_LEFT 1
+- #define CHILD_FIX_TO_BOTTOM 1
+- #define CHILD_FIX_TO_RIGHT 2
+- #define CHILD_FIX_TO_TOP 2
+-
+- #define CHILD_SELF_SCROLL 0
+- #define CHILD_PARENT_SCROLL 1
+-
+- #define CHILD_LEFT 16
+- #define CHILD_BOTTOM 18
+- #define CHILD_RIGHT 20
+- #define CHILD_TOP 22
+- #define CHILD_SCROLL_X 24
+- #define CHILD_SCROLL_Y 26
+-
+- int wimp_poll(int mask, int *block);
+- int wimp_poll_idle(int mask, int *block, int end_time);
+- void ro_open_main(int *block);
+--- 0 ----
+*** ../vim-7.3.186/src/os_riscos.h 2010-08-15 21:57:30.000000000 +0200
+--- src/os_riscos.h 1970-01-01 01:00:00.000000000 +0100
+***************
+*** 1,166 ****
+- /* vi:set ts=8 sts=4 sw=4:
+- *
+- * VIM - Vi IMproved by Bram Moolenaar
+- *
+- * Do ":help uganda" in Vim to read copying and usage conditions.
+- * Do ":help credits" in Vim to see a list of people who contributed.
+- */
+-
+- #include <sys/types.h>
+- #include <sys/stat.h>
+- #include <sys/ioctl.h>
+- #include <termios.h>
+- #include <stdlib.h>
+- #include <unixlib/local.h>
+- #include <errno.h>
+- #include <fcntl.h>
+-
+- #define CASE_INSENSITIVE_FILENAME
+- #define FEAT_MODIFY_FNAME
+- #define FEAT_OSFILETYPE
+- #define DFLT_OFT "Text"
+- #define USE_TERM_CONSOLE
+- #define HAVE_AVAIL_MEM
+-
+- /* Longer filenames now accessible to all */
+- #ifndef BASENAMELEN
+- # define BASENAMELEN 64 /* Same length as unzip */
+- #endif
+-
+- #ifndef TEMNAME
+- # define TEMPNAME "<Wimp$ScrapDir>.v?XXXXXX"
+- # define TEMPNAMELEN 25
+- #endif
+-
+- #ifndef DFLT_HELPFILE
+- # define DFLT_HELPFILE "Vim:doc.help"
+- #endif
+-
+- #ifndef DFLT_BDIR
+- # define DFLT_BDIR ".,<Wimp$ScrapDir>." /* default for 'backupdir' */
+- #endif
+-
+- /* Paths to try putting swap file in. */
+- #ifndef DFLT_DIR
+- # define DFLT_DIR "<Wimp$ScrapDir>.,." /* default for 'directory' */
+- #endif
+-
+- #ifndef DFLT_VDIR
+- # define DFLT_VDIR "Choices:Vim.view" /* default for 'viewdir' */
+- #endif
+-
+- #ifndef TERMCAPFILE
+- # define TERMCAPFILE "Vim:TermCap"
+- #endif
+- #define HAVE_TGETENT
+-
+- #ifndef SYNTAX_FNAME
+- # define SYNTAX_FNAME "Vim:Syntax.%s"
+- #endif
+-
+- #ifndef EVIM_FILE
+- # define EVIM_FILE "Vim:Evim"
+- #endif
+-
+- #define FEAT_VIMINFO
+-
+- #ifndef VIMINFO_FILE
+- # define VIMINFO_FILE "<Choices$Write>.Vim.VimInfo"
+- #endif
+- #ifndef VIMINFO_FILE2
+- # define VIMINFO_FILE2 "Choices:Vim.VimInfo"
+- #endif
+-
+- #ifndef VIMRC_FILE
+- # define VIMRC_FILE "/vimrc"
+- #endif
+- #ifndef EXRC_FILE
+- # define EXRC_FILE "/exrc"
+- #endif
+- #ifndef GVIMRC_FILE
+- # define GVIMRC_FILE "/gvimrc"
+- #endif
+- #ifndef USR_VIMRC_FILE
+- # define USR_VIMRC_FILE "Vim:Evim"
+- #endif
+- #ifndef SESSION_FILE
+- # define SESSION_FILE "/Session.vim"
+- #endif
+- #ifndef USR_VIMRC_FILE
+- # define USR_VIMRC_FILE "Choices:Vim.VimRC"
+- #endif
+- #ifndef USR_GVIMRC_FILE
+- # define USR_GVIMRC_FILE "Choices:Vim.GVimRC"
+- #endif
+- #ifndef USR_EXRC_FILE
+- # define USR_EXRC_FILE "Choices:Vim.ExRC"
+- #endif
+- #ifndef SYS_VIMRC_FILE
+- # define SYS_VIMRC_FILE "Vim:VimRC"
+- #endif
+- #ifndef SYS_GVIMRC_FILE
+- # define SYS_GVIMRC_FILE "Vim:GVimRC"
+- #endif
+- #ifndef SYS_MENU_FILE
+- # define SYS_MENU_FILE "Vim:Menu"
+- #endif
+- #ifndef SYS_OPTWIN_FILE
+- # define SYS_OPTWIN_FILE "Vim:Optwin"
+- #endif
+- #ifndef FILETYPE_FILE
+- # define FILETYPE_FILE "Vim:Filetype"
+- #endif
+- #ifndef FTPLUGIN_FILE
+- # define FTPLUGIN_FILE "Vim:Ftplugin/vim"
+- #endif
+- #ifndef INDENT_FILE
+- # define INDENT_FILE "Vim:Indent/vim"
+- #endif
+- #ifndef FTOFF_FILE
+- # define FTOFF_FILE "Vim:Ftoff"
+- #endif
+- #ifndef FTPLUGOF_FILE
+- # define FTPLUGOF_FILE "Vim:Ftplugof"
+- #endif
+- #ifndef INDOFF_FILE
+- # define INDOFF_FILE "Vim:Indoff"
+- #endif
+-
+- #define DFLT_ERRORFILE "errors/vim"
+- #define DFLT_RUNTIMEPATH "Choices:Vim,Vim:,Choices:Vim.after"
+-
+- /*
+- * RISC PCs have plenty of memory, use large buffers
+- */
+- #define CMDBUFFSIZE 1024 /* size of the command processing buffer */
+- #define MAXPATHL 256 /* paths are always quite short though */
+-
+- #ifndef DFLT_MAXMEM
+- # define DFLT_MAXMEM (5*1024) /* use up to 5 Mbyte for a buffer */
+- #endif
+-
+- #ifndef DFLT_MAXMEMTOT
+- # define DFLT_MAXMEMTOT (10*1024) /* use up to 10 Mbyte for Vim */
+- #endif
+-
+- #ifdef HAVE_SIGSET
+- # define signal sigset
+- #endif
+-
+- #define n_flag (1<<31)
+- #define z_flag (1<<30)
+- #define c_flag (1<<29)
+- #define v_flag (1<<28)
+-
+- /* These take r0-r7 as inputs, returns r0-r7 in global variables. */
+- void swi(int swinum, ...); /* Handles errors itself */
+- int xswi(int swinum, ...); /* Returns errors using v flag */
+- extern int r0, r1, r2, r3, r4, r5, r6, r7; /* For return values */
+-
+- #include <kernel.h>
+- #include <swis.h>
+-
+- #define mch_memmove(to, from, len) memmove((char *)(to), (char *)(from), len)
+- #define mch_rename(src, dst) rename(src, dst)
+- #define mch_getenv(x) (char_u *)getenv((char *)x)
+- #define mch_setenv(name, val, x) setenv(name, val, x)
+--- 0 ----
+*** ../vim-7.3.186/src/gui_riscos.c 2011-05-10 15:52:10.000000000 +0200
+--- src/gui_riscos.c 1970-01-01 01:00:00.000000000 +0100
+***************
+*** 1,3558 ****
+- /* vi:set ts=8 sts=4 sw=4:
+- *
+- * VIM - Vi IMproved by Bram Moolenaar
+- *
+- * Do ":help uganda" in Vim to read copying and usage conditions.
+- * Do ":help credits" in Vim to see a list of people who contributed.
+- * See README.txt for an overview of the Vim source code.
+- */
+-
+- #include "vim.h"
+- #include <string.h>
+-
+- /*
+- * gui_riscos.c
+- *
+- * Thomas Leonard <tal197@ecs.soton.ac.uk>
+- * Updated by Andy Wingate <andy@sparse.net>
+- */
+-
+- extern int time_of_last_poll;
+-
+- int task_handle = 0; /* Zero means we are not yet a Wimp task */
+- int child_handle = 0; /* Task handle of our child process (zero if none). */
+- int *wimp_menu = (int *) -1; /* Pointer to a Wimp menu structure (or -1) */
+- int save_window = -1; /* Save As window handle */
+-
+- int *redraw_block = NULL; /* NULL means not in a redraw loop. */
+- int ro_return_early = FALSE; /* Break out of gui_mch_wait_for_chars() */
+-
+- int leaf_ref = 0; /* Wimp message number - send via Wimp$Scrap */
+- char_u *leaf_name = NULL; /* Leaf name from DataSave */
+-
+- int default_columns = 120; /* These values are used if the --rows and --columns */
+- int default_rows = 32; /* options aren't used on startup. */
+-
+- #define DRAG_FALSE 0
+- #define DRAG_SELECTION 1
+- #define DRAG_RESIZE_WINDOW 2
+- int ro_dragging = DRAG_FALSE;
+- int drag_button;
+- int drag_modifiers;
+- int drag_x_offset;
+- int drag_y_offset;
+-
+- int nested_wimp = FALSE; /* Bool - can we use the new wimp? */
+-
+- int changed_mode = FALSE;
+- int x_eigen_factor;
+- int y_eigen_factor;
+-
+- /* If ro_current_font is non-zero then use the outline font with that handle,
+- * otherwise, if zap_redraw is TRUE then use ZapRedraw, otherwise use the
+- * system font.
+- *
+- * If zap_redraw is TRUE then zap_file[] contains valid Zap font file
+- * pointers (or NULLs).
+- */
+- int ro_current_font = 0; /* 0 is system font, or ZapRedraw */
+- int font_x_offset = 0; /* Where to position each char in its box */
+- int font_y_offset = 0;
+-
+- int zap_redraw = FALSE;
+- int double_height = FALSE; /* Plot each line twice? */
+-
+- #define grgb(r,g,b) ((b<<16) + (g<<8) + (r))
+- #define UNUSED_COLOUR (gui.back_pixel)
+-
+- #define RO_LOAD_CLIPBOARD -2 /* Internal handle for DataSave message. */
+-
+- /* Changes by John Kortink, 22-23 July 1998
+- *
+- * Stuff to make redraw a lot faster. Almost all of it is right here below,
+- * elsewhere changes are marked with 'JK230798'. Apart from a small change in
+- * 'gui.c' all changes are limited to this file, 'gui_riscos.c'. The change in
+- * 'gui.c' is to make Vim stop being 'smart' not redrawing characters that are
+- * 'already there' (i.e. from the previous line, by coincidence). This caused a
+- * lot more calls to the redraw code, which we want to avoid because a few nice
+- * big strings at a time is a lot faster than a truckload of small ones. ('Dear
+- * Bram ...').
+- */
+-
+- /* The ZapRedraw structure */
+-
+- static struct
+- {
+- int r_flags;
+- int r_minx;
+- int r_miny;
+- int r_maxx;
+- int r_maxy;
+- int r_screen;
+- int r_bpl;
+- int r_bpp;
+- int r_charw;
+- int r_charh;
+- char *r_caddr;
+- int r_cbpl;
+- int r_cbpc;
+- int r_linesp;
+- int r_data;
+- int r_scrollx;
+- int r_scrolly;
+- int *r_palette;
+- int r_for;
+- int r_bac;
+- char *r_workarea;
+- int r_magx;
+- int r_magy;
+- int r_xsize;
+- int r_ysize;
+- int r_mode;
+- }
+- zap_redraw_block;
+-
+- /* Other globals */
+-
+- static int zap_redraw_initialised = FALSE;
+- static int zap_redraw_update_colours;
+- static int zap_redraw_colours[2];
+- static int zap_redraw_palette[16];
+-
+- /* Holds the current Zap font file(s).
+- * The font is recreated from this block on a mode change.
+- * When using zap, element ZAP_NORMAL is always valid, but
+- * the others can be NULL.
+- */
+-
+- #define ZAP_NORMAL 0
+- #define ZAP_BOLD 1
+- #define ZAP_ITALIC 2
+- #define ZAP_BITALIC 3
+- #define ZAP_STYLES 4
+-
+- /* Zap font file format data */
+- static char *zap_file[ZAP_STYLES] = {NULL, NULL, NULL, NULL};
+-
+- /* r_caddr format for current mode */
+- static char *zap_caddr[ZAP_STYLES] = {NULL, NULL, NULL, NULL};
+-
+- static void ro_remove_menu(int *menu);
+-
+- /*
+- * Initialise all the ZapRedraw stuff.
+- * Call this when changing font and after each mode change.
+- * zap_redraw_bitmap must contain a valid Zap font file (possibly
+- * created from the system font).
+- *
+- * Return FAIL to revert to system font (if we can't use ZapRedraw).
+- */
+- int
+- ro_zap_redraw_initialise()
+- {
+- int bytes_per_bitmap_char;
+- int first, last;
+- int i;
+-
+- /* Can't have initialisers for struct members :-(, ok, this way then ... */
+- if (!zap_redraw_initialised)
+- {
+- zap_redraw_block.r_workarea = NULL;
+- zap_redraw_initialised = TRUE;
+- }
+-
+- /* We redraw in DSA mode */
+- zap_redraw_block.r_flags = 0x0;
+-
+- /* Let ZapRedraw get the screen address for us */
+- zap_redraw_block.r_screen = 0;
+-
+- /* Read the font width and height from the font file header.
+- * Assume that all styles are the same size.
+- * ZAP_NORMAL is always present.
+- */
+- zap_redraw_block.r_charw = ((int *) zap_file[ZAP_NORMAL])[2];
+- zap_redraw_block.r_charh = ((int *) zap_file[ZAP_NORMAL])[3];
+-
+- /* We have no linespacing */
+- zap_redraw_block.r_linesp = 0;
+-
+- /* Fix foreground = colour 1 */
+- zap_redraw_block.r_for = 1;
+-
+- /* Fix background = colour 0 */
+- zap_redraw_block.r_bac = 0;
+-
+- /* Colour mask buffer */
+- zap_redraw_block.r_palette = zap_redraw_palette;
+-
+- /* Allocate local workspace (for the few calls following here) */
+- if (zap_redraw_block.r_workarea != NULL)
+- free(zap_redraw_block.r_workarea);
+- zap_redraw_block.r_workarea = (char*) malloc(128);
+- if (!zap_redraw_block.r_workarea)
+- return FAIL; /* Out of memory */
+-
+- /* Fill in VDU variables */
+- if (xswi(ZapRedraw_ReadVduVars, 0, &zap_redraw_block) & v_flag)
+- return FAIL; /* Can't find ZapRedraw module - use VDU instead */
+-
+- /* Determine cbpl and cbpc */
+- swi(ZapRedraw_CachedCharSize, zap_redraw_block.r_bpp, 0,
+- zap_redraw_block.r_charw, zap_redraw_block.r_charh);
+- zap_redraw_block.r_cbpl = r2;
+- zap_redraw_block.r_cbpc = r3;
+-
+- /* Allocate general workspace (for the calls outside) */
+- if (zap_redraw_block.r_workarea != NULL)
+- free(zap_redraw_block.r_workarea);
+- zap_redraw_block.r_workarea = (char*) malloc(128 + zap_redraw_block.r_cbpl);
+- if (!zap_redraw_block.r_workarea)
+- return FAIL; /* Out of memory */
+-
+- /* Now convert the 1 bpp character data ready for the current mode */
+-
+- bytes_per_bitmap_char = (zap_redraw_block.r_charw * zap_redraw_block.r_charh + 7) / 8;
+-
+- /* Convert the fonts from 1bpp to a format suitable for the
+- * current mode.
+- */
+- for (i = 0; i < ZAP_STYLES; i++)
+- {
+- first = ((int *) zap_file[i])[4];
+- last = ((int *) zap_file[i])[5];
+-
+- if (last > 255)
+- last = 255; /* Don't convert cursors (overwrites memory!) */
+-
+- /* Allocate the font cache */
+- vim_free(zap_caddr[i]);
+- if (zap_file[i])
+- zap_caddr[i] = (char*) malloc(zap_redraw_block.r_cbpc * 256);
+- else
+- zap_caddr[i] = NULL; /* No file for this style */
+-
+- if (zap_caddr[i])
+- {
+- zap_redraw_block.r_caddr = zap_caddr[i];
+-
+- swi(ZapRedraw_ConvertBitmap, 0, &zap_redraw_block,
+- first, last, /* Range of characters to convert */
+- zap_file[i] + 0x20 /* Addr of first char provided by font */
+- - first * bytes_per_bitmap_char);
+- }
+- }
+-
+- if (!zap_caddr[ZAP_NORMAL])
+- {
+- zap_redraw = FALSE; /* Out of memory */
+- return FAIL;
+- }
+-
+- /* Next time we need them, we have to update the colour masks */
+- zap_redraw_update_colours = TRUE;
+-
+- return OK;
+- }
+-
+- /*
+- * Redraw a string at OS coordinates <x,y> (top-left, x inclusive, y exclusive).
+- * Graphics clip window is window[0..3] as in R1+28..40 of Wimp_RedrawWindow.
+- * Returns (possibly modified) flags.
+- */
+- int
+- ro_zap_redraw_draw_string(x, y, string, length, flags, clip)
+- int x;
+- int y;
+- char *string;
+- int length;
+- int flags; /* DRAW_TRANSP, DRAW_BOLD, DRAW_UNDERL, DRAW_ITALIC */
+- int *clip;
+- {
+- char redraw_data[1024];
+- int clip_minx;
+- int clip_miny;
+- int clip_maxx;
+- int clip_maxy;
+- int os_xshift = zap_redraw_block.r_magx;
+- int os_yshift = zap_redraw_block.r_magy;
+-
+- if (flags & DRAW_TRANSP)
+- return flags; /* We don't do transparent plotting yet. */
+-
+- if (flags & DRAW_BOLD)
+- {
+- if (flags & DRAW_ITALIC && zap_caddr[ZAP_BITALIC])
+- zap_redraw_block.r_caddr = zap_caddr[ZAP_BITALIC];
+- else
+- zap_redraw_block.r_caddr = zap_caddr[ZAP_BOLD];
+- }
+- else
+- {
+- if (flags & DRAW_ITALIC)
+- zap_redraw_block.r_caddr = zap_caddr[ZAP_ITALIC];
+- else
+- zap_redraw_block.r_caddr = zap_caddr[ZAP_NORMAL];
+- }
+- if (!zap_redraw_block.r_caddr)
+- {
+- zap_redraw_block.r_caddr = zap_caddr[ZAP_NORMAL];
+- flags |= DRAW_UNDERL; /* Style missing - we can always underline */
+- }
+-
+- /* Set the vertical scaling flag */
+- if (double_height)
+- zap_redraw_block.r_flags = 1 << 1;
+- else
+- zap_redraw_block.r_flags = 0;
+-
+- /* Update the colour masks (if needed) */
+- if (zap_redraw_update_colours)
+- {
+- swi(ZapRedraw_CreatePalette, 2,
+- &zap_redraw_block,
+- zap_redraw_colours,
+- zap_redraw_block.r_palette, 2);
+- zap_redraw_update_colours = FALSE;
+- }
+-
+- /* Target rectangle in ZapRedraw rectangle coordinates (pixels, Y-min/max reversed !!!) */
+- zap_redraw_block.r_minx = x >> os_xshift; /* inclusive */
+- zap_redraw_block.r_miny = zap_redraw_block.r_ysize - (y >> os_yshift); /* inclusive */
+- zap_redraw_block.r_maxx = (x + length * gui.char_width) >> os_xshift; /* exclusive */
+- zap_redraw_block.r_maxy = zap_redraw_block.r_ysize - ((y - gui.char_height) >> os_yshift);
+- /* exclusive */
+-
+- /* Clip rectangle in ZapRedraw rectangle coordinates (pixels, Y-min/max reversed !!!) */
+- clip_minx = clip[0] >> os_xshift; /* inclusive */
+- clip_miny = zap_redraw_block.r_ysize - (clip[3] >> os_yshift); /* inclusive */
+- clip_maxx = clip[2] >> os_xshift; /* exclusive */
+- clip_maxy = zap_redraw_block.r_ysize - (clip[1] >> os_yshift); /* exclusive */
+-
+- /* Clip target rectangle against the current graphics window */
+- if (zap_redraw_block.r_minx < clip_minx)
+- {
+- zap_redraw_block.r_scrollx = clip_minx - zap_redraw_block.r_minx;
+- zap_redraw_block.r_minx = clip_minx;
+- }
+- else
+- zap_redraw_block.r_scrollx = 0;
+- if (zap_redraw_block.r_miny < clip_miny)
+- {
+- zap_redraw_block.r_scrolly = clip_miny - zap_redraw_block.r_miny;
+- zap_redraw_block.r_miny = clip_miny;
+- }
+- else
+- zap_redraw_block.r_scrolly = 0;
+- if (zap_redraw_block.r_maxx > clip_maxx)
+- zap_redraw_block.r_maxx = clip_maxx;
+- if (zap_redraw_block.r_maxy > clip_maxy)
+- zap_redraw_block.r_maxy = clip_maxy;
+-
+- /* Fill in the character data structure */
+- if (length > (sizeof(redraw_data) - 2 * 4 - 2))
+- length = sizeof(redraw_data) - 2 * 4 - 2;
+- ((int*) redraw_data)[0] = 2 * 4;
+- ((int*) redraw_data)[1] = 0;
+- strncpy(redraw_data + 2 * 4, string, length);
+- redraw_data[2 * 4 + length + 0] = '\0';
+- redraw_data[2 * 4 + length + 1] = '\x2';
+- zap_redraw_block.r_data = (int) redraw_data;
+-
+- /* Perform the draw */
+- swi(ZapRedraw_RedrawArea, 0, &zap_redraw_block);
+-
+- return flags;
+- }
+-
+- /*
+- * Okay that was it from me, back to Thomas ...
+- */
+-
+- /*
+- * Parse the GUI related command-line arguments. Any arguments used are
+- * deleted from argv, and *argc is decremented accordingly. This is called
+- * when vim is started, whether or not the GUI has been started.
+- */
+- void
+- gui_mch_prepare(int *argc, char **argv)
+- {
+- int arg = 1;
+-
+- while (arg < *argc - 1)
+- {
+- if (strcmp(argv[arg], "--rows") == 0 || strcmp(argv[arg], "--columns") == 0)
+- {
+- int value;
+-
+- value = atoi(argv[arg + 1]);
+-
+- if (argv[arg][2] == 'r')
+- default_rows = value;
+- else
+- default_columns = value;
+-
+- /* Delete argument from argv[]. (hope this is read/write!) */
+-
+- *argc -= 2;
+- if (*argc > arg)
+- mch_memmove(&argv[arg], &argv[arg + 2], (*argc - arg)
+- * sizeof(char *));
+- }
+- else
+- arg++;
+- }
+- }
+-
+- /* Fatal error on initialisation - report it and die. */
+- void
+- ro_die(error)
+- char_u *error; /* RISC OS error block */
+- {
+- swi(Wimp_ReportError, error, 5, "GVim");
+- exit(EXIT_FAILURE);
+- }
+-
+- /* Find the sizes of the window tools:
+- *
+- * Create a test window.
+- * Find inner and outer sizes.
+- * Find the difference.
+- * Delete window.
+- *
+- * While we're here, find the eigen values too.
+- */
+- void
+- ro_measure_tools()
+- {
+- int block[10];
+- int vdu[] = { 4, 5, -1};
+- int test_window[] =
+- {
+- -100, -100, /* Visible area : min X,Y */
+- -50, -50, /* max X,Y */
+- 0, 0, /* Scroll offsets */
+- -1, /* Window in front */
+- 0xd0800150, /* Window flags */
+- 0xff070207, /* Colours */
+- 0x000c0103, /* More colours */
+- 0, -0x4000, /* Workarea extent */
+- 0x4000, 0, /* max X,Y */
+- 0x00000000, /* No title */
+- 0 << 12, /* No workarea button type */
+- 1, /* Wimp sprite area */
+- 0x00010001, /* Minimum width, height */
+- 0, 0, 0, /* Title data (none) */
+- 0 /* No icons */
+- };
+- int inner_max_x, inner_min_y;
+-
+- swi(Wimp_CreateWindow, 0, test_window);
+-
+- block[0] = r0;
+- /* Open the window (and read state).
+- * GetWindowOutline needs it too if the wimp isn't nested.
+- */
+- swi(Wimp_OpenWindow, 0, block);
+- inner_max_x = block[3];
+- inner_min_y = block[2];
+-
+- swi(Wimp_GetWindowOutline, 0, block);
+-
+- gui.scrollbar_width = block[3] - inner_max_x;
+- gui.scrollbar_height = inner_min_y - block[2];
+-
+- swi(Wimp_DeleteWindow, 0, block);
+-
+- /* Read the size of one pixel. */
+- swi(OS_ReadVduVariables, vdu, vdu);
+- x_eigen_factor = vdu[0];
+- y_eigen_factor = vdu[1];
+- }
+-
+- /* Load a template from the current templates file.
+- * Create the window and return its handle.
+- */
+- int
+- ro_load_template(str_name, title, title_size)
+- char_u *str_name; /* Identifier of window in file (max 12 chars) */
+- char_u **title; /* If not NULL then return pointer to title here */
+- int *title_size; /* If not NULL then return the title length here */
+- {
+- int *window;
+- char *data;
+- int name[4];
+-
+- strcpy( (char *) name, str_name);
+-
+- /* Find how big we must make the buffers */
+-
+- if (xswi(Wimp_LoadTemplate, 0, 0, 0, 0, -1, name, 0) & v_flag)
+- ro_die( (char *) r0);
+-
+- window = malloc(r1); /* Don't print text messages from alloc() */
+- data = malloc(r2);
+- if (window == NULL || data == NULL)
+- ro_die("\0\0\0\0Out of memory - Can't load templates");
+-
+- /* Load the template into the buffers */
+-
+- swi(Wimp_LoadTemplate, 0,
+- window, /* Temp block */
+- data, /* Icon data */
+- data + r2 + 1, /* End of icon data */
+- -1, /* No fonts */
+- name, 0); /* First match */
+- if (r6 == 0)
+- ro_die("\0\0\0\0Can't find window in Templates file");
+-
+- /* Create the window */
+-
+- if (xswi(Wimp_CreateWindow, 0, window) & v_flag)
+- ro_die( (char *) r0);
+-
+- if (title)
+- *title = (char_u *) window[18];
+- if (title_size)
+- *title_size = window[20];
+-
+- free(window); /* Free temp block */
+- return r0; /* Return the window handle */
+- }
+-
+- /*
+- * Check if the GUI can be started. Called before gvimrc is sourced.
+- * Return OK or FAIL.
+- */
+- int
+- gui_mch_init_check()
+- {
+- return OK; /* TODO: GUI can always be started? */
+- }
+-
+- /*
+- * Initialise the RISC OS GUI.
+- * Create all the windows.
+- * Returns OK for success, FAIL when the GUI can't be started.
+- */
+- int
+- gui_mch_init()
+- {
+- int messages[] = {
+- 1, 2, 3, 4, /* DataSave, DataSaveAck, DataLoad, DataLoadAck */
+- 8, /* PreQuit */
+- 0xf, /* ClaimEntity (for clipboard) */
+- 0x10, /* DataRequest (for clipboard) */
+- 0x400c1, /* Mode change */
+- 0x400c3, /* TaskCloseDown */
+- 0x400c9, /* MenusDeleted */
+- 0x808c1, /* TW_Output */
+- 0x808c2, /* TW_Ego */
+- 0x808c3, /* TW_Morio */
+- 0x808c4, /* TW_Morite */
+- 0}; /* End-of-list. */
+-
+-
+- /* There may have been some errors reported in the
+- * command window before we get here. Wait if so.
+- */
+- swi(Wimp_ReadSysInfo, 3);
+- if (r0 == 0)
+- swi(Wimp_CommandWindow, 0); /* Window opened - close with prompt */
+-
+- if (xswi(Wimp_Initialise, 310, 0x4b534154, "GVim", messages) & v_flag)
+- return FAIL;
+- nested_wimp = r0 >= 397;
+- task_handle = r1;
+-
+- /* Load the templates. */
+-
+- if (xswi(Wimp_OpenTemplate, 0, "Vim:Templates") & v_flag)
+- ro_die( (char *) r0);
+-
+- gui.window_handle = ro_load_template("editor",
+- &gui.window_title,
+- &gui.window_title_size);
+-
+- save_window = ro_load_template("save", NULL, NULL);
+-
+- swi(Wimp_CloseTemplate);
+-
+- /* Set default foreground and background colours. */
+-
+- gui.norm_pixel = gui.def_norm_pixel;
+- gui.back_pixel = gui.def_back_pixel;
+-
+- /* Get the colours from the "Normal" and "Menu" group (set in syntax.c or
+- * in a vimrc file) */
+-
+- set_normal_colors();
+-
+- /*
+- * Check that none of the colors are the same as the background color
+- */
+-
+- gui_check_colors();
+-
+- /* Get the colours for the highlight groups (gui_check_colors() might have
+- * changed them) */
+-
+- highlight_gui_started(); /* re-init colours and fonts */
+-
+- /* Set geometry based on values read on initialisation. */
+-
+- gui.num_cols = Columns = default_columns;
+- gui.num_rows = Rows = default_rows;
+-
+- /* Get some information about our environment. */
+-
+- ro_measure_tools();
+-
+- return OK;
+- }
+-
+- /*
+- * Called when the foreground or background colour has been changed.
+- */
+- void
+- gui_mch_new_colors()
+- {
+- }
+-
+- /*
+- * Open the GUI window which was created by a call to gui_mch_init().
+- */
+- int
+- gui_mch_open(void)
+- {
+- int block[10];
+-
+- block[0] = gui.window_handle;
+- swi(Wimp_GetWindowState, 0, block);
+- block[7] = -1; /* Open at the top of the stack */
+- swi(Wimp_OpenWindow, 0, block);
+-
+- /* Give the new window the input focus */
+- swi(Wimp_SetCaretPosition, gui.window_handle, -1, 0, 0, -1, -1);
+-
+- if (gui_win_x != -1 && gui_win_y != -1)
+- gui_mch_set_winpos(gui_win_x, gui_win_y);
+-
+- return OK;
+- }
+-
+- void
+- gui_mch_exit(int rc)
+- {
+- int block[64];
+-
+- /* Close window. Stops us from getting troublesome events
+- * if we take a while to die.
+- */
+- block[0] = gui.window_handle;
+- swi(Wimp_CloseWindow, 0, block);
+-
+- if (child_handle)
+- {
+- /* We still have a sub-task running - kill it */
+- block[0] = 20;
+- block[3] = 0;
+- block[4] = 0; /* Quit */
+- if ((xswi(Wimp_SendMessage, 17, block, child_handle) & v_flag) == 0)
+- {
+- /* Idle until child dies. */
+- while (child_handle)
+- {
+- process_event(wimp_poll(1, block), block);
+- }
+- }
+- }
+-
+- exit(rc);
+- }
+-
+- /*
+- * Get the position of the top left corner of the window.
+- */
+- int
+- gui_mch_get_winpos(int *x, int *y)
+- {
+- /* TODO */
+- return FAIL;
+- }
+-
+- /*
+- * Set the position of the top left corner of the window to the given
+- * coordinates.
+- */
+- void
+- gui_mch_set_winpos(int x, int y)
+- {
+- /* TODO */
+- }
+-
+- void
+- gui_mch_set_shellsize(width, height, min_width, min_height, base_width, base_height, direction)
+- int width; /* In OS units */
+- int height;
+- int min_width; /* Smallest permissible window size (ignored) */
+- int min_height;
+- int base_width; /* Space for scroll bars, etc */
+- int base_height;
+- int direction;
+- {
+- int s_width, s_height;
+- int block[] = {
+- gui.window_handle,
+- 0,
+- -height + 1,
+- width,
+- 1};
+-
+- gui_mch_get_screen_dimensions(&s_width, &s_height);
+- s_width -= base_width;
+- s_height -= base_height; /* Underestimate - ignores titlebar */
+-
+- swi(Wimp_GetWindowState, 0, block);
+- block[3] = block[1] + width;
+- block[2] = block[4] - height;
+- if (block[3] > s_width)
+- {
+- block[3] = s_width;
+- block[1] = block[3] - width;
+- }
+- if (block[2] < gui.scrollbar_height)
+- {
+- block[2] = gui.scrollbar_height;
+- block[4] = block[2] + height;
+- }
+- swi(Wimp_OpenWindow, 0, block);
+- swi(Wimp_ForceRedraw, gui.window_handle, 0, -height, width, 0);
+- }
+-
+- void
+- gui_mch_get_screen_dimensions(int *screen_w, int *screen_h)
+- {
+- int block[] = {4, 5, 11, 12, -1};
+-
+- swi(OS_ReadVduVariables, block, block);
+- *screen_w = (block[2] + 1) << block[0];
+- *screen_h = (block[3] + 1) << block[1];
+- }
+-
+- /* Take a font name with options and return a font handle, or
+- * zero for failure.
+- * Replace extension with 'Bold' or 'Italic' depending on modifiers.
+- */
+- int
+- ro_get_font(fullname, weight)
+- char_u *fullname;
+- int weight; /* Initial weights:
+- * BIT MEANING
+- * 0 bold
+- * 1 italic
+- */
+- {
+- char_u *arg;
+- char_u font[41];
+- int width = -1;
+- int height = -1;
+- int name_len;
+- int i;
+- char_u c;
+-
+- for (i = 0; i < 39;)
+- {
+- c = fullname[i];
+- if (c == ':' || c == NUL || c == '.')
+- break;
+- font[i++] = c;
+- }
+-
+- /* find the first modifier, NULL if none */
+- arg = strchr(fullname + i, ':');
+-
+- while (arg)
+- {
+- switch (*++arg)
+- {
+- case 'h':
+- height = strtol(arg + 1, (char **) &arg, 10);
+- break;
+- case 'w':
+- width = strtol(arg + 1, (char **) &arg, 10);
+- break;
+- case 'b':
+- weight |= 1;
+- break;
+- case 'i':
+- weight |= 2;
+- break;
+- default:
+- return 0;
+- }
+- arg = strchr(arg, ':');
+- }
+-
+- if ((weight & 1) && i < 35)
+- {
+- /* Bold goes instead of given suffix */
+- strncpy(font + i, ".Bold", 5);
+- i += 5;
+- }
+- else
+- {
+- /* Copy rest of name unless we are using Bold */
+- while (i < 39)
+- {
+- c = fullname[i];
+- if (c == ':' || c == NUL)
+- break;
+- font[i++] = c;
+- }
+- }
+- if ((weight & 2) && i < 32)
+- {
+- strncpy(font + i, ".Oblique", 8);
+- i += 8;
+- }
+-
+- font[i] = 0;
+-
+- if (height < 1 && width < 1)
+- height = width = 10; /* Default to 10pt */
+- else if (height < 1)
+- height = width;
+- else if (width < 1)
+- width = height;
+-
+- if (xswi(Font_FindFont, 0, font, width << 4, height << 4, 0, 0) & v_flag)
+- return NOFONT; /* Can't find font */
+-
+- return r0;
+- }
+-
+- /* Load a file into allocated memory and check it is valid.
+- * Return a pointer to the allocated block on success.
+- */
+- char *
+- zap_load_file(name, style)
+- char_u *name; /* Name of directory containing styles */
+- char_u *style; /* Name of style within directory */
+- {
+- char_u fname[256];
+- char_u *file;
+-
+- if (strlen(name) + strlen(style) > 254)
+- return NULL; /* Names too long */
+-
+- sprintf(fname, "%s.%s", name, style);
+-
+- /* Load the named font in 1bpp format. */
+- if (xswi(OS_File, 13, fname, 0, 0, "VimFonts:") & v_flag || r0 != 1)
+- return NULL; /* Error reading file info, or not a file */
+-
+- /* Allocate enough memory to load the whole file */
+- file = (char *) alloc(r4);
+- if (!file)
+- return NULL; /* Out of memory */
+-
+- if (xswi(OS_File, 12, fname, file, 0, "VimFonts:") & v_flag)
+- return NULL; /* Unable to load file */
+-
+- if (strncmp(file, "ZapFont\015", 8) == 0)
+- return file; /* Loaded OK! */
+-
+- vim_free(file);
+- return NULL; /* Not a valid font file */
+- }
+-
+- /* Load and convert the named font.
+- * If name is NULL or a null string then convert the system font.
+- * Return OK on success; FAIL and we revert to using the VDU drivers.
+- *
+- * 'name' is the name of a directory.
+- * Tries to load 'name.0', 'name.B', 'name.I' and 'name.IB'.
+- */
+- int
+- zap_load_font(name)
+- char_u *name;
+- {
+- int i;
+-
+- /* Free the existing font files, if any */
+- for (i = 0; i < ZAP_STYLES; i++)
+- {
+- vim_free(zap_file[i]);
+- zap_file[i] = NULL;
+- }
+-
+- if (name && *name == '!')
+- {
+- name++;
+- double_height = TRUE;
+- }
+- else
+- double_height = FALSE;
+-
+- if (name && *name)
+- {
+- zap_file[ZAP_NORMAL] = zap_load_file(name, "0");
+- if (!zap_file[ZAP_NORMAL])
+- return FAIL; /* Can't load the 'normal' style - error */
+-
+- zap_file[ZAP_BOLD] = zap_load_file(name, "B");
+- zap_file[ZAP_ITALIC] = zap_load_file(name, "I");
+- zap_file[ZAP_BITALIC] = zap_load_file(name, "IB");
+- }
+- else
+- {
+- int *header;
+- char workarea[16];
+- char *old_wa;
+-
+- /* Allocate memory for system font (8 x 8 x 256 bits, plus header) */
+- header = (int *) alloc(0x20 + 8 * 256);
+- if (header == NULL)
+- return FAIL;
+- zap_file[ZAP_NORMAL] = (char *) header;
+-
+- /* Store details about the system font */
+- header[2] = 8; /* Width */
+- header[3] = 8; /* Height */
+- header[4] = 0; /* First char */
+- header[5] = 255; /* Last char */
+- header[6] = header[7] = 0; /* Reserved */
+-
+- /* Get system font bitmap */
+- old_wa = zap_redraw_block.r_workarea;
+- zap_redraw_block.r_workarea = workarea;
+- swi(ZapRedraw_ReadSystemChars, zap_file[ZAP_NORMAL] + 0x20, &zap_redraw_block);
+- zap_redraw_block.r_workarea = old_wa;
+- }
+-
+- return ro_zap_redraw_initialise();
+- }
+-
+- /*
+- * Initialise vim to use the font with the given name.
+- * Return FAIL if the font could not be loaded, OK otherwise.
+- */
+- int
+- gui_mch_init_font(char_u *font_name, int fontset)
+- {
+- int new_handle = 0; /* Use the system font by default */
+-
+- if (font_name[0] == '!')
+- {
+- /* Select a ZapRedraw font */
+- if (zap_load_font(font_name + 1))
+- zap_redraw = TRUE;
+- else
+- {
+- EMSG2(_("E610: Can't load Zap font '%s'"), font_name);
+- font_name = "System"; /* Error - use system font */
+- zap_redraw = FALSE;
+- }
+- }
+- else
+- {
+- zap_redraw = FALSE;
+-
+- if (font_name)
+- {
+- /* Extract any extra details about the font */
+- new_handle = ro_get_font(font_name, 0);
+- if (!new_handle)
+- return FAIL;
+- }
+- else
+- font_name = "System";
+- }
+-
+- /* Free the previous font, if any */
+- gui_mch_free_font(gui.norm_font);
+- gui.norm_font = new_handle;
+- gui.char_ascent = 0;
+-
+- if (new_handle)
+- {
+- /* Read details about the chosen font */
+- swi(Font_ReadInfo, new_handle);
+-
+- gui.char_width = r3 - r1;
+- gui.char_height = r4 - r2;
+-
+- font_x_offset = -r1; /* Where to position each char in its box */
+- font_y_offset = -r4;
+-
+- /* Try to load other fonts for bold, italic, and bold-italic */
+- gui_mch_free_font(gui.bold_font);
+- gui.bold_font = ro_get_font(font_name, 1);
+- gui_mch_free_font(gui.ital_font);
+- gui.ital_font = ro_get_font(font_name, 2);
+- gui_mch_free_font(gui.boldital_font);
+- gui.boldital_font = ro_get_font(font_name, 3);
+- }
+- else
+- {
+- /* Use the system font or ZapRedraw. */
+- if (zap_redraw)
+- {
+- gui.char_width = zap_redraw_block.r_charw << zap_redraw_block.r_magx;
+- gui.char_height = zap_redraw_block.r_charh << zap_redraw_block.r_magy;
+- if (double_height)
+- gui.char_height <<= 1;
+- }
+- else
+- {
+- gui.char_width = 16;
+- gui.char_height = 32;
+- }
+-
+- gui_mch_free_font(gui.bold_font);
+- gui.bold_font = 0;
+- gui_mch_free_font(gui.ital_font);
+- gui.ital_font = 0;
+- gui_mch_free_font(gui.boldital_font);
+- gui.boldital_font = 0;
+- }
+- hl_set_font_name(font_name);
+-
+- must_redraw = CLEAR;
+- return OK;
+- }
+-
+- /*
+- * Adjust gui.char_height (after 'linespace' was changed).
+- */
+- int
+- gui_mch_adjust_charheight()
+- {
+- return FAIL;
+- }
+-
+- /*
+- * Get a font structure for highlighting.
+- */
+- GuiFont
+- gui_mch_get_font(name, giveErrorIfMissing)
+- char_u *name;
+- int giveErrorIfMissing;
+- {
+- int handle;
+-
+- if (!name)
+- return NOFONT; /* System font if no name */
+-
+- handle = ro_get_font(name, 0);
+- if (!handle)
+- {
+- if (giveErrorIfMissing)
+- EMSG2(_("E611: Can't use font %s"), name);
+- return NOFONT;
+- }
+-
+- return handle;
+- }
+-
+- #if defined(FEAT_EVAL) || defined(PROTO)
+- /*
+- * Return the name of font "font" in allocated memory.
+- * Don't know how to get the actual name, thus use the provided name.
+- */
+- char_u *
+- gui_mch_get_fontname(font, name)
+- GuiFont font;
+- char_u *name;
+- {
+- if (name == NULL)
+- return NULL;
+- return vim_strsave(name);
+- }
+- #endif
+-
+- /*
+- * Set the current text font.
+- */
+- void
+- gui_mch_set_font(GuiFont font)
+- {
+- ro_current_font = font;
+-
+- if (font)
+- {
+- /* Not the system font or ZapRedraw font - select it */
+- swi(Font_SetFont, font);
+- }
+- }
+-
+- /*
+- * If a font is not going to be used, free its structure.
+- */
+- void
+- gui_mch_free_font(GuiFont font)
+- {
+- if (font)
+- swi(Font_LoseFont, font);
+- }
+-
+- /*
+- * Return the Pixel value (colour) for the given colour name.
+- * Return INVALCOLOR for error.
+- * NB: I've changed Green for now, since it looked really sick
+- */
+- guicolor_T
+- gui_mch_get_color(char_u *name)
+- {
+- int i;
+- struct colour
+- {
+- char_u *name;
+- guicolor_T value;
+- } colours[] =
+- {
+- { "Red", grgb(255, 0, 0) },
+- { "LightRed", grgb(255, 0, 0) },
+- { "DarkRed", grgb(139, 0, 0) },
+-
+- { "Green", grgb(50, 200, 50) },
+- { "LightGreen", grgb(144, 238, 144) },
+- { "DarkGreen", grgb(0, 100, 0) },
+- { "SeaGreen", grgb(46, 139, 87) },
+-
+- { "Blue", grgb(0, 0, 255) },
+- { "LightBlue", grgb(173, 216, 230) },
+- { "DarkBlue", grgb(0, 0, 139) },
+- { "SlateBlue", grgb(160, 90, 205) },
+-
+- { "Cyan", grgb(0, 255, 255) },
+- { "LightCyan", grgb(224, 255, 255) },
+- { "DarkCyan", grgb(0, 139, 139) },
+-
+- { "Magenta", grgb(255, 0, 255) },
+- { "LightMagenta", grgb(255, 224, 255) },
+- { "DarkMagenta", grgb(139, 0, 139) },
+-
+- { "Yellow", grgb(255, 255, 0) },
+- { "LightYellow", grgb(255, 255, 224) },
+- { "DarkYellow", grgb(139, 139, 0) },
+- { "Brown", grgb(165, 42, 42) },
+-
+- { "Gray", grgb(190, 190, 190) },
+- { "Grey", grgb(190, 190, 190) },
+- { "LightGray", grgb(211, 211, 211) },
+- { "LightGrey", grgb(211, 211, 211) },
+- { "DarkGray", grgb(169, 169, 169) },
+- { "DarkGrey", grgb(169, 169, 169) },
+- { "Gray10", grgb(26, 26, 26) },
+- { "Grey10", grgb(26, 26, 26) },
+- { "Gray20", grgb(51, 51, 51) },
+- { "Grey20", grgb(51, 51, 51) },
+- { "Gray30", grgb(77, 77, 77) },
+- { "Grey30", grgb(77, 77, 77) },
+- { "Gray40", grgb(102, 102, 102) },
+- { "Grey40", grgb(102, 102, 102) },
+- { "Gray50", grgb(127, 127, 127) },
+- { "Grey50", grgb(127, 127, 127) },
+- { "Gray60", grgb(153, 153, 153) },
+- { "Grey60", grgb(153, 153, 153) },
+- { "Gray70", grgb(179, 179, 179) },
+- { "Grey70", grgb(179, 179, 179) },
+- { "Gray80", grgb(204, 204, 204) },
+- { "Grey80", grgb(204, 204, 204) },
+- { "Gray90", grgb(229, 229, 229) },
+- { "Grey90", grgb(229, 229, 229) },
+-
+- { "Black", grgb(0, 0, 0) },
+- { "White", grgb(255, 255, 255) },
+-
+- { "Orange", grgb(255, 165, 0) },
+- { "Purple", grgb(160, 32, 240) },
+- { "Violet", grgb(238, 130, 238) },
+- {NULL, 0}
+- };
+-
+- if (name[0] == '#')
+- {
+- char *end;
+- int c;
+-
+- c = strtol(name + 1, &end, 16);
+- return (guicolor_T) ((c >> 16) & 0xff) | (c & 0xff00) | ((c & 0xff) << 16);
+- }
+-
+- for (i = 0; colours[i].name != NULL; i++)
+- {
+- if (STRICMP(name, colours[i].name) == 0)
+- return colours[i].value;
+- }
+- if (strnicmp(name, "grey", 4) == 0 || strnicmp(name, "gray", 4) == 0)
+- {
+- int level = (255 * atoi(name + 4)) / 100;
+- return (guicolor_T) grgb(level, level, level);
+- }
+- return INVALCOLOR;
+- }
+-
+- /*
+- * Set the current text colours.
+- * If we are using fonts then set the antialiasing colours too.
+- */
+- void
+- gui_mch_set_colors(guicolor_T fg, guicolor_T bg)
+- {
+- zap_redraw_colours[0] = bg << 8; /* JK230798, register new background colour */
+- zap_redraw_colours[1] = fg << 8; /* JK230798, register new foreground colour */
+- zap_redraw_update_colours = TRUE; /* JK230798, need update of colour masks */
+-
+- swi(ColourTrans_ReturnGCOL, fg << 8);
+- gui.fg_colour = r0;
+- swi(ColourTrans_ReturnGCOL, bg << 8);
+- gui.bg_colour = r0;
+-
+- if (ro_current_font)
+- swi(ColourTrans_SetFontColours, 0, bg << 8, fg << 8, 14);
+- }
+-
+- void
+- ro_draw_string(x, y, s, len, flags, clip)
+- int x; /* Top-left coord to plot at (x incl, y excl) */
+- int y; /* (screen coords) */
+- char_u *s; /* String to plot */
+- int len; /* Length of string */
+- int flags; /* DRAW_TRANSP, DRAW_BOLD, DRAW_UNDERL */
+- int* clip; /* JK230798, added clip window */
+- {
+- if (ro_current_font)
+- {
+- int fx;
+- int flen = len; /* Preserve for underline */
+-
+- /* Use the Font manager to paint the string.
+- * Must do one char at a time to get monospacing.
+- */
+-
+- if (flags & DRAW_ITALIC && !gui.ital_font)
+- flags |= DRAW_UNDERL; /* No italic - underline instead */
+-
+- if ((flags & DRAW_TRANSP) == 0)
+- {
+- swi(ColourTrans_SetColour, gui.bg_colour, 0, 0, 0, 0);
+- swi(OS_Plot, 4, x, y - gui.char_height);
+- swi(OS_Plot, 96 + 5, x + len * gui.char_width - 1, y - 1);
+- }
+-
+- fx = x + font_x_offset;
+- while (flen--)
+- {
+- swi(Font_Paint, 0, s++, 0x90, fx, y + font_y_offset, 0, 0, 1);
+- fx += gui.char_width;
+- }
+- }
+- else
+- {
+- if (zap_redraw)
+- {
+- /* Using fast Zap redraw. */
+- flags = ro_zap_redraw_draw_string(x, y, s, len, flags, clip);
+- }
+- else
+- {
+- /* Using the system font */
+- if (flags & DRAW_ITALIC)
+- flags |= DRAW_UNDERL;
+-
+- if ((flags & DRAW_TRANSP) == 0)
+- {
+- swi(ColourTrans_SetColour, gui.bg_colour, 0, 0, 0, 0);
+- swi(OS_Plot, 4, x, y - gui.char_height);
+- swi(OS_Plot, 96 + 5, x + len * gui.char_width - 1, y - 1);
+- }
+- swi(OS_Plot, 4, /* Move the drawing cursor */
+- x,
+- y - 1);
+- swi(ColourTrans_SetColour, gui.fg_colour, 0, 0, 0, 0);
+- swi(OS_WriteN, s, len);
+-
+- if (flags & DRAW_BOLD)
+- {
+- swi(OS_Plot, 4, x + (1 << x_eigen_factor), y - 1);
+- swi(OS_WriteN, s, len);
+- }
+- }
+- }
+-
+- if (flags & DRAW_UNDERL)
+- {
+- if (ro_current_font || zap_redraw)
+- swi(ColourTrans_SetColour, gui.fg_colour, 0, 0, 0, 0);
+- /* Underlined is the same with all plotting methods */
+- swi(OS_Plot, 4, x, y - gui.char_height);
+- swi(OS_Plot, 1, gui.char_width * len, 0);
+- }
+- }
+-
+- void
+- gui_mch_draw_string(int row, int col, char_u *s, int len, int flags)
+- {
+- int x, y; /* Workarea x,y */
+- x = col * gui.char_width;
+- y = -row * gui.char_height;
+-
+- if (redraw_block)
+- {
+- ro_draw_string(x + redraw_block[1], y + redraw_block[4],
+- s, len, flags, &redraw_block[7]); /* JK230798, added clip window */
+- }
+- else
+- {
+- int block[44];
+- block[0] = gui.window_handle;
+- block[1] = x;
+- block[2] = y - gui.char_height;
+- block[3] = (col + len) * gui.char_width;
+- block[4] = y;
+- swi(Wimp_UpdateWindow, 0, block);
+- while (r0)
+- {
+- ro_draw_string(x + block[1], y + block[4],
+- s, len, flags, &block[7]); /* JK230798, added clip window */
+- swi(Wimp_GetRectangle, 0, block);
+- }
+- }
+- }
+-
+- /*
+- * Return OK if the key with the termcap name "name" is supported.
+- */
+- int
+- gui_mch_haskey(char_u *name)
+- {
+- return FAIL;
+- }
+-
+- void
+- gui_mch_beep(void)
+- {
+- swi(OS_WriteI + 7);
+- }
+-
+- /*
+- * Visual bell.
+- */
+- void
+- gui_mch_flash(int msec)
+- {
+- /* TODO */
+- }
+-
+-
+- /*
+- * Plot a solid rectangle using the given plot action and colour.
+- * Coordinates are inclusive and window-relative.
+- */
+- void
+- plot_rectangle(plot, colour, minx, miny, maxx, maxy)
+- int plot; /* OS_Plot action */
+- int colour;
+- int minx;
+- int miny;
+- int maxx;
+- int maxy;
+- {
+- if (redraw_block)
+- {
+- swi(ColourTrans_SetColour, colour, 0, 0, 0, 0);
+- swi(OS_Plot, 4, minx + redraw_block[1], miny + redraw_block[4]);
+- swi(OS_Plot, plot, maxx + redraw_block[1], maxy + redraw_block[4]);
+- }
+- else
+- {
+- int block[44];
+- block[0] = gui.window_handle;
+- block[1] = minx;
+- block[2] = miny;
+- block[3] = maxx + 1;
+- block[4] = maxy + 1;
+- swi(Wimp_UpdateWindow, 0, block);
+- while (r0)
+- {
+- swi(ColourTrans_SetColour, colour, 0, 0, 0, 0);
+- swi(OS_Plot, 4, minx + block[1], miny + block[4]);
+- swi(OS_Plot, plot, maxx + block[1], maxy + block[4]);
+- swi(Wimp_GetRectangle, 0, block);
+- }
+- }
+- }
+-
+- /*
+- * Invert a rectangle from row r, column c, for nr rows and nc columns.
+- */
+- void
+- gui_mch_invert_rectangle(int r, int c, int nr, int nc)
+- {
+- plot_rectangle(96 + 6, 0, FILL_X(c), -FILL_Y(r + nr), FILL_X(c + nc), -FILL_Y(r));
+- }
+-
+- /*
+- * Iconify the GUI window.
+- */
+- void
+- gui_mch_iconify(void)
+- {
+- }
+-
+- #if defined(FEAT_EVAL) || defined(PROTO)
+- /*
+- * Bring the Vim window to the foreground.
+- */
+- void
+- gui_mch_set_foreground()
+- {
+- /* TODO */
+- }
+- #endif
+-
+- /* Draw a hollow rectangle relative to the current
+- * graphics cursor position, with the given width
+- * and height. Start position is top-left.
+- */
+- void
+- draw_hollow(w, h)
+- int w;
+- int h;
+- {
+- swi(OS_Plot, 1, w - 1, 0);
+- swi(OS_Plot, 1, 0, 1 - h);
+- swi(OS_Plot, 1, 1 - w, 0);
+- swi(OS_Plot, 1, 0, h - 1);
+- }
+-
+- /*
+- * Draw a cursor without focus.
+- */
+- void
+- gui_mch_draw_hollow_cursor(guicolor_T colour)
+- {
+- int x = FILL_X(gui.cursor_col); /* Window relative, top-left */
+- int y = -FILL_Y(gui.cursor_row);
+- if (redraw_block == NULL)
+- {
+- int block[11];
+-
+- block[0] = gui.window_handle;
+- block[1] = x;
+- block[2] = y - gui.char_height;
+- block[3] = x + gui.char_width;
+- block[4] = y;
+- swi(Wimp_UpdateWindow, 0, block);
+- while (r0)
+- {
+- swi(ColourTrans_SetGCOL, colour << 8, 0, 0, 0, 0);
+-
+- swi(OS_Plot, 4, x + block[1], y + block[4] - 1);
+- draw_hollow(gui.char_width, gui.char_height);
+-
+- swi(Wimp_GetRectangle, 0, block);
+- }
+- }
+- else
+- {
+- swi(ColourTrans_SetGCOL, colour << 8, 0, 0, 0, 0);
+-
+- swi(OS_Plot, 4, x + redraw_block[1], y + redraw_block[4] - 1);
+- draw_hollow(gui.char_width, gui.char_height);
+- }
+- }
+-
+- /*
+- * Draw part of a cursor, "w" pixels wide, and "h" pixels high, using
+- * color "color".
+- */
+- void
+- gui_mch_draw_part_cursor(w, h, colour)
+- int w;
+- int h;
+- guicolor_T colour;
+- {
+- int x = FILL_X(gui.cursor_col);
+- int y = -FILL_Y(gui.cursor_row);
+- swi(ColourTrans_ReturnGCOL, colour << 8);
+- plot_rectangle(96 + 5, r0, x, y - h, x + w - 1, y - 1);
+- }
+-
+- /*
+- * Catch up with any queued events. This may put keyboard input into the
+- * input buffer, call resize call-backs, trigger timers etc.
+- * If there is nothing in the event queue(& no timers pending), then we return
+- * immediately (well, after a Wimp_Poll).
+- */
+- void
+- gui_mch_update(void)
+- {
+- int block[64];
+- int reason;
+-
+- swi(OS_ReadMonotonicTime);
+- if ((r0 - time_of_last_poll) < 50)
+- return; /* Don't return too often */
+-
+- reason = wimp_poll(0, block);
+- if (reason)
+- process_event(reason, block);
+- ro_return_early = FALSE; /* We're returning anyway. */
+- }
+-
+- void
+- redraw_window(block)
+- int *block;
+- {
+- int x, y; /* Vim workarea coords */
+- int width, height;
+- int blank_col;
+-
+- swi(ColourTrans_ReturnGCOL, UNUSED_COLOUR << 8, 0, 0, 1<<7, 0);
+- blank_col = r0;
+-
+- swi(Wimp_RedrawWindow, 0, block);
+- redraw_block = block;
+- while (r0)
+- {
+- x = block[7] - block[1];
+- y = block[4] - block[10];
+- width = block[9] - block[7];
+- height = block[10] - block[8];
+-
+- if (height + y > Rows * gui.char_height)
+- {
+- /* Blank everything off the bottom. */
+- plot_rectangle(96 + 5, blank_col,
+- 0, block[8] - block[4],
+- block[9] - block[1], -FILL_Y(Rows) - 1);
+- height = Rows * gui.char_height;
+- }
+- if (width + x> Columns * gui.char_width)
+- {
+- /* Blank everything off to the right. */
+- plot_rectangle(96 + 5, blank_col,
+- FILL_X(Columns), block[8] - block[4],
+- block[9] - block[1], 0);
+- width = Columns * gui.char_width;
+- }
+- gui_redraw(x , y, width, height);
+- swi(Wimp_GetRectangle, 0, block);
+- }
+- redraw_block = NULL;
+- }
+-
+- /* Check if we have modified data.
+- * If we do then ack the message to stop the shutdown.
+- * Otherwise, ignore the message.
+- */
+- void
+- ro_prequit(block)
+- int *block;
+- {
+- if (!ro_ok_to_quit())
+- {
+- /* Not OK to quit - stop shutdown */
+- block[3] = block[2];
+- swi(Wimp_SendMessage, 19, block, block[1]);
+- }
+- /* Do nothing. We may get a Message_Quit later. */
+- }
+-
+- /* If there is unsaved data then ask the user if they mind losing it.
+- * Return TRUE if we can quit without saving, FALSE to halt the
+- * shutdown.
+- */
+- int
+- ro_ok_to_quit()
+- {
+- int old_confirm = cmdmod.confirm;
+-
+- cmdmod.confirm = FALSE; /* Use our own, single tasking, box */
+-
+- if (check_changed_any(FALSE))
+- {
+- swi(Wimp_ReportError,
+- "\0\0\0\0Vim contains unsaved data - quit anyway?",
+- 0x17,
+- "Vim");
+- cmdmod.confirm = old_confirm;
+- if (r1 != 1)
+- return FALSE;
+- }
+- cmdmod.confirm = old_confirm;
+- return TRUE;
+- }
+-
+- /* Quit without checking for unsaved data. */
+- void
+- ro_quit()
+- {
+- exiting = TRUE;
+- getout(0);
+-
+- exiting = FALSE; /* probably can't get here */
+- setcursor(); /* position cursor */
+- out_flush();
+- }
+-
+- /* Insent the given vim special code into the input buffer */
+- void
+- ro_press(a, b, modifier)
+- char a;
+- char b;
+- int modifier; /* %<Ctrl><Shift> 0000 0000 */
+- {
+- char_u buf[6];
+- int vim_mod;
+- int key;
+-
+-
+- /* Convert RISC OS modifier to Vim modifier. */
+- vim_mod = ((modifier & 0x10) ? MOD_MASK_SHIFT : 0)
+- | ((modifier & 0x20) ? MOD_MASK_CTRL : 0);
+- key = simplify_key(TERMCAP2KEY(a, b), &vim_mod);
+-
+- buf[3] = CSI;
+- buf[4] = KEY2TERMCAP0(key);
+- buf[5] = KEY2TERMCAP1(key);
+- if (vim_mod)
+- {
+- buf[0] = CSI;
+- buf[1] = KS_MODIFIER;
+- buf[2] = vim_mod;
+- add_to_input_buf(buf, 6);
+- }
+- else
+- add_to_input_buf(buf + 3, 3);
+- }
+-
+- /* Take a wimp key code and insert the vim equivalent
+- * into vim's input buffer.
+- * CTRL-C also sets got_int.
+- */
+- void
+- ro_insert_key(code)
+- char_u *code; /* Wimp_ProcessKey code (4 bytes) */
+- {
+- char a = code[0];
+- char b = code[1];
+- int base, modifier;
+-
+- if (a == 3 && ctrl_c_interrupts)
+- got_int = TRUE;
+-
+- /* Is it a normal key? */
+- if (a > 31 && a < 127)
+- {
+- add_to_input_buf(code, 1);
+- return;
+- }
+-
+- /* We should pass any unrecognised keys on, but
+- * for now just pass on F12 combinations.
+- */
+- switch (b)
+- {
+- case 0:
+- /* Home and Delete are the only special cases */
+- switch (a)
+- {
+- case 0x1e:
+- ro_press('k','h', 0); /* Home */
+- return;
+- case 0x7f:
+- ro_press('k','D', 0); /* Delete */
+- return;
+- case CSI:
+- {
+- /* Turn CSI into K_CSI. Untested! */
+- char_u string[3] = {CSI, KS_EXTRA, KE_CSI};
+-
+- add_to_input_buf(string, 3);
+- return;
+- }
+- default:
+- add_to_input_buf(code, 1);
+- return;
+- }
+- case 1:
+- if ((a & 0xcf) == 0xcc)
+- {
+- /* F12 pressed - pass it on (quick hack) */
+- swi(Wimp_ProcessKey, a | 0x100);
+- return;
+- }
+- base = a & 0xcf;
+- modifier = a & 0x30;
+- switch (base)
+- {
+- case 0x8a: /* Tab */
+- add_to_input_buf("\011", 1);
+- return;
+- case 0x8b: /* Copy (End) */
+- return ro_press('@', '7', modifier);
+- case 0x8c: /* Left */
+- return ro_press('k', 'l', modifier);
+- case 0x8d: /* Right */
+- return ro_press('k', 'r', modifier);
+- case 0x8e: /* Down */
+- if (modifier & 0x10)
+- return ro_press('k', 'N', modifier ^ 0x10);
+- else
+- return ro_press('k', 'd', modifier);
+- case 0x8f: /* Up */
+- if (modifier & 0x10)
+- return ro_press('k', 'P', modifier ^ 0x10);
+- else
+- return ro_press('k', 'u', modifier);
+- case 0xca: /* F10 */
+- return ro_press('k', ';', modifier);
+- case 0xcb: /* F11 */
+- return ro_press('F', '1', modifier);
+- case 0xcd: /* Insert */
+- return ro_press('k', 'I', modifier);
+- default:
+- if (base > 0x80 && base < 0x18a)
+- {
+- /* One of the other function keys */
+- return ro_press('k', '0' + (base & 15), modifier);
+- }
+- }
+- }
+- }
+-
+- /* Process a mouse event. */
+- void
+- ro_mouse(block)
+- int *block;
+- {
+- int x, y, button, vim_button;
+- int modifiers = 0;
+- int min_x, min_y; /* Visible area of editor window */
+- int max_x, max_y;
+-
+- if (block[3] != gui.window_handle || ro_dragging)
+- return; /* Not our window or ignoring clicks*/
+-
+- x = block[0]; /* Click position - screen coords */
+- y = block[1];
+- button = block[2];
+-
+- block[0] = gui.window_handle;
+- swi(Wimp_GetWindowState, 0, block);
+- min_x = block[1];
+- min_y = block[2];
+- max_x = block[3];
+- max_y = block[4];
+-
+- if (block[3] - x < gui.scrollbar_width)
+- {
+- /* Click in that blank area under the scrollbars */
+-
+- if (button & 0x444)
+- {
+- int front_block[64];
+- /* Dragging with Select - bring window to front first */
+- front_block[0] = gui.window_handle;
+- swi(Wimp_GetWindowState, 0, front_block);
+- front_block[7] = -1;
+- ro_open_main(front_block);
+- }
+-
+- block[0] = gui.window_handle;
+- block[1] = 7; /* Drag point */
+- block[2] = block[4] = 0; /* Coords of point. */
+- block[3] = block[5] = 0;
+- drag_x_offset = max_x - x;
+- drag_y_offset = min_y - y;
+-
+- /* Parent box. */
+- block[6] = min_x +
+- gui.scrollbar_width * 2 +
+- MIN_COLUMNS * gui.char_width;
+- block[7] = 0;
+- gui_mch_get_screen_dimensions(&block[8], &block[9]);
+- block[9] = max_y -
+- 4 * gui.char_height -
+- gui.scrollbar_height;
+-
+- swi(Wimp_DragBox, 0, block);
+- ro_dragging = DRAG_RESIZE_WINDOW;
+- drag_button = vim_button;
+- drag_modifiers = modifiers;
+- return;
+- }
+-
+- if (button & 0x111)
+- vim_button = MOUSE_RIGHT;
+- else if (button & 0x222)
+- vim_button = MOUSE_MIDDLE;
+- else
+- vim_button = MOUSE_LEFT;
+-
+- swi(OS_Byte, 121, 0x80);
+- if (r1 == 0xff)
+- modifiers |= MOUSE_SHIFT;
+- swi(OS_Byte, 121, 0x81);
+- if (r1 == 0xff)
+- modifiers |= MOUSE_CTRL;
+- swi(OS_Byte, 121, 0x82);
+- if (r1 == 0xff)
+- modifiers |= MOUSE_ALT;
+-
+- if (button == 2)
+- {
+- /* Menu click:
+- * If shift was pressed then do the paste action.
+- * If not, then open the pop-up menu.
+- */
+- modifiers ^= MOUSE_SHIFT;
+- if (modifiers && MOUSE_SHIFT)
+- {
+- vimmenu_T main;
+- /* Shift was NOT pressed - show menu */
+- main.dname = (char_u *) "Vim";
+- main.children = root_menu;
+- gui_mch_show_popupmenu(&main);
+- return;
+- }
+- }
+-
+- /* Gain the input focus */
+- swi(Wimp_SetCaretPosition, gui.window_handle, -1, 0, 0, -1, -1);
+-
+- if (button & 0xf0)
+- {
+- /* Drag operation:
+- *
+- * Tell the Wimp to start a drag.
+- * Monitor null events.
+- */
+- block[1] = 7; /* Drag a point. */
+- block[2] = block[4] = x; /* Coords of point. */
+- block[3] = block[5] = y;
+- block[6] = 0; /* Coords of bounding box. */
+- block[7] = 0;
+- gui_mch_get_screen_dimensions(&block[8], &block[9]);
+-
+- drag_x_offset = drag_y_offset = 0;
+-
+- swi(Wimp_DragBox, 0, block);
+- ro_dragging = DRAG_SELECTION;
+- drag_button = vim_button;
+- drag_modifiers = modifiers;
+-
+- vim_button |= MOUSE_DRAG;
+- }
+-
+- gui_send_mouse_event(
+- vim_button,
+- x - min_x,
+- max_y - y,
+- button & 0xf ? TRUE : FALSE, /* dclick */
+- modifiers);
+- }
+-
+- void
+- ro_continue_drag(block)
+- int *block; /* Just used as scrap. */
+- {
+- int x, y;
+-
+- /* Get screen coords of pointer. */
+- swi(Wimp_GetPointerInfo, 0, block);
+- x = block[0] + drag_x_offset;
+- y = block[1] + drag_y_offset;
+-
+- block[0] = gui.window_handle;
+- swi(Wimp_GetWindowState, 0, block);
+-
+- if (ro_dragging == DRAG_RESIZE_WINDOW)
+- {
+- /* Resizing the main window. */
+- block[2] = y;
+- block[3] = x;
+- ro_open_main(block);
+- }
+- else
+- {
+- /* Selecting some text. */
+- gui_send_mouse_event(
+- drag_button | MOUSE_DRAG, /* Always report the same button */
+- x - block[1],
+- block[4] - y,
+- FALSE, /* Not a double click. */
+- drag_modifiers);
+- }
+- }
+-
+- /* User has released all mouse buttons, marking the end of a drag. */
+- void
+- ro_drag_finished(block)
+- int *block;
+- {
+- int x;
+- int y;
+- int width, height;
+-
+- /* I don't trust the box returned by Wimp_Poll; look at the pointer
+- * ourselves.
+- */
+- swi(Wimp_GetPointerInfo, 0, block);
+- x = block[0] + drag_x_offset;
+- y = block[1] + drag_y_offset;
+-
+- if (ro_dragging == DRAG_RESIZE_WINDOW)
+- {
+- block[0] = gui.window_handle;
+- swi(Wimp_GetWindowState, 0, block);
+- block[2] = y;
+- block[3] = x;
+- ro_open_main(block);
+-
+- width = (block[3] - block[1]);
+- height = (block[4] - block[2]);
+-
+- swi(Wimp_ForceRedraw, gui.window_handle, 0, -height, width, 0);
+- gui_resize_shell(width, height);
+- }
+- else
+- {
+- block[0] = gui.window_handle;
+- swi(Wimp_GetWindowState, 0, block);
+- gui_send_mouse_event(
+- MOUSE_RELEASE,
+- x - block[1],
+- block[4] - y,
+- FALSE, /* not a double click */
+- drag_modifiers);
+- }
+- ro_dragging = DRAG_FALSE;
+- }
+-
+- /* Load the file/pathname given in block into a [new] buffer.
+- *
+- * Modifier Action
+- *
+- * None :confirm e <file>
+- * Ctrl :sp <file>
+- * Shift <file>
+- *
+- * Insert into typebuf, at the start.
+- * If loading from !Scrap then use saved leafname instead, and
+- * delete the scrap file. Also, ignore shift key.
+- *
+- * NB: Doesn't send DataLoadAck (other app might delete temp file?).
+- */
+- void
+- ro_dataload(block)
+- int *block;
+- {
+- char_u new_path[MAXPATHL];
+- char_u *path = ((char_u *) block) + 44;
+- int scrap = FALSE;
+-
+- if (block[3] == leaf_ref && leaf_name)
+- scrap = TRUE;
+-
+- switch (get_real_state() & 0xff)
+- {
+- case INSERT:
+- case CMDLINE:
+- case CMDLINE+LANGMAP:
+- /* For insert mode we can only insert the pathname (currently)
+- * Make sure Shift is pressed.
+- */
+- swi(OS_Byte, 121, 0x80); /* Is Shift pressed? */
+- if (r1 == 0xff)
+- {
+- ins_typebuf(" ", REMAP_NONE, 0, TRUE, FALSE);
+- ins_typebuf(path, REMAP_NONE, 0, TRUE, FALSE);
+- ro_return_early = TRUE; /* Return even though nothing was typed. */
+- }
+- else
+- swi(Wimp_ReportError,
+- "\0\0\0\0Sorry, you can only load text in normal mode", 5, "Vim");
+- break;
+-
+- case NORMAL:
+- ro_return_early = TRUE; /* Return even though nothing was typed. */
+-
+- if (scrap) /* Remove <Wimp$Scrap>. Later. */
+- ins_typebuf(":!~remove <Wimp$Scrap>\r", REMAP_NONE, 0, TRUE, FALSE);
+-
+- /* Insert {:sp ,:confirm e }[+f\ <leaf> ]<file><CR> */
+- ins_typebuf("\r", REMAP_NONE, 0, TRUE, FALSE);
+- ins_typebuf(path, REMAP_NONE, 0, TRUE, FALSE);
+- ins_typebuf(" ", REMAP_NONE, 0, TRUE, FALSE);
+-
+- if (scrap)
+- {
+- /* Loading via !Scrap - change pathname to stored leafname */
+- ins_typebuf(leaf_name, REMAP_NONE, 0, TRUE, FALSE);
+- ins_typebuf(" +f\\ ", REMAP_NONE, 0, TRUE, FALSE);
+- leaf_ref = 0;
+- vim_free(leaf_name);
+- leaf_name = NULL;
+- }
+-
+- swi(OS_Byte, 121, 0x81); /* Is Ctrl pressed? */
+- if (r1 == 0xff)
+- /* Yes, split window */
+- ins_typebuf(":sp", REMAP_NONE, 0, TRUE, FALSE);
+- else
+- ins_typebuf(":confirm e", REMAP_NONE, 0, TRUE, FALSE);
+- break;
+-
+- default:
+- swi(Wimp_ReportError, "\0\0\0\0You can only load text in normal mode.", 5, "Vim");
+- }
+- /* Send DataSaveAck so other program doesn't think we died
+- * and delete <Wimp$Scrap>.
+- */
+- block[3] = block[2];
+- block[4] = 4;
+- swi(Wimp_SendMessage, 17, block, block[1]);
+- }
+-
+- void
+- ro_datasave(block)
+- int *block;
+- {
+- char_u *path = ((char_u *) block) + 44;
+-
+- /* Preserve the name given so we can use it, not <Wimp$Scrap> */
+- if (leaf_name)
+- vim_free(leaf_name);
+- leaf_name = vim_strsave(path);
+-
+- block[9] = -1; /* File is unsafe. */
+- strcpy(path, "<Wimp$Scrap>");
+- block[0] = 60;
+- block[3] = block[2];
+- block[4] = 2;
+- swi(Wimp_SendMessage, 17, block, block[1]);
+-
+- leaf_ref = block[2];
+- }
+-
+- void
+- ro_message(block)
+- int *block;
+- {
+- char_u *buffer;
+- long_u len;
+-
+- if (block[1] == task_handle)
+- return; /* Don't talk to ourself! */
+- switch (block[4])
+- {
+- case 0: /* Quit. */
+- if (block[4] == 0)
+- ro_quit();
+- break;
+- case 1: /* DataSave */
+- ro_datasave(block);
+- break;
+- case 2: /* DataSaveAck. */
+- if (clip_convert_selection(&buffer, &len, &clip_star) == -1)
+- return;
+-
+- /* Save the clipboard contents to a file. */
+- swi(OS_File, 10, ((char_u *) block) + 44, 0xfff, 0, buffer, buffer + len);
+-
+- /* Ack with DataLoad message. */
+- block[3] = block[2];
+- block[4] = 3;
+- block[9] = len;
+- swi(Wimp_SendMessage, 17, block, block[1]);
+-
+- vim_free(buffer);
+- break;
+- case 3: /* DataLoad */
+- ro_dataload(block);
+- break;
+- case 8: /* PreQuit */
+- ro_prequit(block);
+- break;
+- case 0xf: /* Lose clipboard. */
+- if (block[5] & 4)
+- {
+- clip_free_selection(&clip_star);
+- clip_star.owned = FALSE;
+- }
+- break;
+- case 0x10: /* DataRequest (clip_star) */
+- if (clip_star.owned)
+- {
+- int rows;
+-
+- /* Tell other program that we have the clipboard. */
+- block[0] = 52;
+- block[3] = block[2]; /* Copy myref to yourref. */
+- block[4] = 1; /* DataSave message. */
+- /* Create an estimate for the size (larger or same as true
+- * value) */
+- rows = clip_star.end.lnum - clip_star.start.lnum;
+- if (rows < 0)
+- rows = -rows;
+- block[9] = (rows + 1) * Columns + 1; /* Add one for possible
+- final newline. */
+- block[10] = 0xfff; /* Clipboard is text. */
+- strcpy( ((char_u *) block) + 44, "VimClip");
+- swi(Wimp_SendMessage, 17, block, block[1]);
+- }
+- break;
+- case 0x400c1: /* Mode change */
+- changed_mode = TRUE; /* Flag - update on next OpenWindow */
+- if (zap_redraw)
+- {
+- /* JK230798, re-initialise ZapRedraw stuff */
+- if (ro_zap_redraw_initialise() == FAIL)
+- zap_redraw = FALSE;
+- }
+- break;
+- case 0x400c3: /* TaskCloseDown */
+- if (block[1] == child_handle)
+- child_handle = 0;
+- break;
+- }
+- }
+-
+- /*
+- * Converts a scrollbar's window handle into a scrollbar pointer.
+- * NULL on failure.
+- */
+- scrollbar_T *
+- ro_find_sbar(id)
+- int id;
+- {
+- win_T *wp;
+-
+- if (gui.bottom_sbar.id == id)
+- return &gui.bottom_sbar;
+- FOR_ALL_WINDOWS(wp)
+- {
+- if (wp->w_scrollbars[SBAR_LEFT].id == id)
+- return &wp->w_scrollbars[SBAR_LEFT];
+- if (wp->w_scrollbars[SBAR_RIGHT].id == id)
+- return &wp->w_scrollbars[SBAR_RIGHT];
+- }
+- return NULL;
+- }
+-
+- void
+- scroll_to(line, sb)
+- int sb; /* Scrollbar number */
+- int line;
+- {
+- char_u code[8];
+-
+- /* Don't put events in the input queue now. */
+- if (hold_gui_events)
+- return;
+-
+- /* Send a scroll event:
+- *
+- * A scrollbar event is CSI (NOT K_SPECIAL), KS_VER_SCROLLBAR,
+- * KE_FILLER followed by:
+- * one byte representing the scrollbar number, and then four bytes
+- * representing a long_u which is the new value of the scrollbar.
+- */
+- code[0] = CSI;
+- code[1] = KS_VER_SCROLLBAR;
+- code[2] = KE_FILLER;
+- code[3] = sb;
+- code[4] = line >> 24;
+- code[5] = line >> 16;
+- code[6] = line >> 8;
+- code[7] = line;
+- add_to_input_buf(code, 8);
+- }
+-
+- void
+- h_scroll_to(col)
+- int col;
+- {
+- char_u code[8];
+-
+- /* Don't put events in the input queue now. */
+- if (hold_gui_events)
+- return;
+-
+- /* Send a scroll event:
+- *
+- * A scrollbar event is CSI (NOT K_SPECIAL)
+- *
+- * A horizontal scrollbar event is K_SPECIAL, KS_HOR_SCROLLBAR,
+- * KE_FILLER followed by four bytes representing a long_u which is the
+- * new value of the scrollbar.
+- */
+- code[0] = CSI;
+- code[1] = KS_HOR_SCROLLBAR;
+- code[2] = KE_FILLER;
+- code[4] = col >> 24;
+- code[5] = col >> 16;
+- code[6] = col >> 8;
+- code[7] = col;
+- add_to_input_buf(code, 8);
+- }
+-
+- void
+- ro_scroll(block)
+- int *block;
+- {
+- scrollbar_T *sb;
+- int offset;
+- win_T *wp;
+-
+- /* Block is ready for Wimp_OpenWindow, and also contains:
+- *
+- * +32 = scroll X direction (-2 .. +2)
+- * +36 = scroll Y direction (-2 .. +2)
+- */
+-
+- sb = ro_find_sbar(block[0]);
+- if (!sb)
+- return; /* Window not found (error). */
+-
+- wp = sb-> wp;
+-
+- if (wp == NULL)
+- {
+- /* Horizontal bar. */
+- offset = block[8];
+- if (offset == -2)
+- offset = (block[1] - block[3]) / gui.char_width;
+- else if (offset == 2)
+- offset = (block[3] - block[1]) / gui.char_width;
+-
+- block[5] += offset * gui.char_width;
+-
+- gui_drag_scrollbar(sb, block[5] / gui.char_width, FALSE);
+-
+- swi(Wimp_OpenWindow, 0, block);
+- }
+- else
+- {
+- offset = -block[9];
+- if (offset == -2)
+- offset = -(wp -> w_height - 1);
+- else if (offset == 2)
+- offset = wp -> w_height - 1;
+-
+- /* Possibly we should reposition the scrollbar?
+- * Vim seems to update the bar anyway...
+- */
+- gui_drag_scrollbar(sb, offset - (block[6] / gui.char_height), FALSE);
+- }
+- }
+-
+- /* Move a window by a given offset. Used to simulate the function of the
+- * nested wimp.
+- */
+- void
+- ro_move_child(window, x, y, pos_wanted, pos_got)
+- int window;
+- int x,y; /* offset to move by */
+- int pos_wanted, pos_got;
+- {
+- int block[10];
+-
+- block[0] = window;
+- swi(Wimp_GetWindowState, 0, block);
+- block[1] += x;
+- block[2] += y;
+- block[3] += x;
+- block[4] += y;
+- if (pos_wanted == -1)
+- block[7] = -1;
+- else if (pos_wanted == -2)
+- block[7] = pos_got;
+- swi(Wimp_OpenWindow, 0, block);
+- }
+-
+- /* Open the main window. Also updates scrollbars if we are not
+- * using the nested Wimp.
+- * If we have just changed mode then re-read all values.
+- */
+- void
+- ro_open_main(block)
+- int *block;
+- {
+- int toggle_size;
+-
+- /* Find out if the user clicked on the toggle size icon. */
+- block[20] = block[0];
+- swi(Wimp_GetWindowState, 0, block + 20);
+- toggle_size = block[28] & (1 << 19);
+-
+- if (nested_wimp)
+- {
+- swi(Wimp_OpenWindow, 0, block);
+- }
+- else
+- {
+- int old[10];
+- int x_offset, y_offset; /* Move children same as parent. */
+- int pos_wanted, pos_got;
+- int left_bar = gui.which_scrollbars[SBAR_LEFT];
+- int right_bar = gui.which_scrollbars[SBAR_RIGHT];
+- win_T *wp;
+-
+- /* Three cases to think about:
+- * 1) Move to top. Open each window at the top.
+- * 2) Same stack position. Open each with same position.
+- * 3) Open at bottom. Open children with parent's new position.
+- */
+-
+- old[0] = block[0];
+- swi(Wimp_GetWindowState, 0, old);
+- pos_wanted = block[7];
+- swi(Wimp_OpenWindow, 0, block);
+- /* Block updated by OpenWindow? I don't think so! */
+- swi(Wimp_GetWindowState, 0, block);
+- pos_got = block[7];
+-
+- x_offset = block[1] - old[1];
+- y_offset = block[4] - old[4];
+- if (x_offset || y_offset || pos_wanted == -1 || pos_wanted == -2)
+- {
+- /* If parent has moved, re-open all the child windows. */
+- FOR_ALL_WINDOWS(wp)
+- {
+- /* Reopen scrollbars for this window. */
+- if (left_bar)
+- ro_move_child(wp -> w_scrollbars[SBAR_LEFT].id,
+- x_offset, y_offset,
+- pos_wanted, pos_got);
+- if (right_bar)
+- ro_move_child(wp -> w_scrollbars[SBAR_RIGHT].id,
+- x_offset, y_offset,
+- pos_wanted, pos_got);
+- }
+- }
+- }
+- if (changed_mode || toggle_size)
+- {
+- int width, height;
+-
+- if (changed_mode)
+- ro_measure_tools();
+- block[0] = gui.window_handle;
+- swi(Wimp_GetWindowState, 0, block);
+-
+- width = block[3] - block[1];
+- height = block[4] - block[2];
+- swi(Wimp_ForceRedraw, gui.window_handle, 0, -height, width, 0);
+- gui_resize_shell(width, height);
+- changed_mode = FALSE;
+- }
+- }
+-
+- void
+- ro_open_window(block)
+- int *block;
+- {
+- int pos;
+- scrollbar_T *sb;
+-
+- if (block[0] == gui.window_handle)
+- ro_open_main(block);
+- else
+- {
+- swi(Wimp_OpenWindow, 0, block);
+- if (block[0] != gui.window_handle)
+- {
+- sb = ro_find_sbar(block[0]);
+- if (sb)
+- {
+- if (sb-> wp != NULL)
+- gui_drag_scrollbar(sb, -block[6] / gui.char_height, FALSE);
+- else
+- gui_drag_scrollbar(sb, block[5] / gui.char_width, FALSE);
+- }
+- }
+- }
+- }
+-
+- void
+- ro_menu_selection(block)
+- int *block;
+- {
+- int *item = wimp_menu + 7;
+- vimmenu_T *menu;
+- /* wimp_menu points to a wimp menu structure */
+-
+- for (;;)
+- {
+- while (block[0]--)
+- item += 6;
+- if (block[1] == -1)
+- break;
+- item = ((int *) item[1]) + 7;
+- block++;
+- }
+- /* item points to the wimp menu item structure chosen */
+- menu = (vimmenu_T *) item[5];
+-
+- swi(Wimp_GetPointerInfo, 0, block);
+- if (block[2] == 1)
+- /* Adjust used - keep menu open */
+- swi(Wimp_CreateMenu, 0, wimp_menu);
+-
+- if (menu-> cb)
+- menu-> cb(menu);
+- }
+-
+- void
+- ro_open_parent()
+- {
+- int head;
+- char_u *i = curbuf-> b_ffname;
+- char_u buffer[256];
+-
+- head = 0;
+- for (; *i; i++)
+- {
+- if (*i == '.')
+- head = i - curbuf-> b_ffname;
+- }
+-
+- /* Append head chars to buffer */
+- if (head < 240 && curbuf-> b_ffname && head)
+- {
+- strcpy(buffer, "%filer_opendir ");
+- strncpy(buffer + 15, curbuf-> b_ffname, head);
+- buffer[15 + head] = '\0';
+- swi(OS_CLI, buffer);
+- }
+- }
+-
+- void
+- process_event(event, block)
+- int event;
+- int *block;
+- {
+- switch (event)
+- {
+- case 0: /* Nothing - update drag state. */
+- if (ro_dragging)
+- ro_continue_drag(block);
+- break;
+- case 1: /* Redraw window. */
+- redraw_window(block);
+- break;
+- case 2: /* Open window. */
+- ro_open_window(block);
+- break;
+- case 3: /* Close window. */
+- swi(Wimp_GetPointerInfo, 0, block + 1);
+- if (block[3] == 1)
+- ro_open_parent();
+- else
+- if (ro_ok_to_quit())
+- ro_quit();
+- break;
+- case 6: /* Mouse click. */
+- ro_mouse(block);
+- break;
+- case 7: /* Finished drag. */
+- ro_drag_finished(block);
+- break;
+- case 8: /* Key pressed. */
+- ro_insert_key((char_u *) &block[6]);
+- break;
+- case 9:
+- ro_menu_selection(block);
+- break;
+- case 10: /* Scroll request. */
+- ro_scroll(block);
+- break;
+- case 11: /* Lose caret. */
+- if (block[0] == gui.window_handle)
+- gui_focus_change(FALSE);
+- break;
+- case 12: /* Gain caret. */
+- if (block[0] == gui.window_handle)
+- gui_focus_change(TRUE);
+- break;
+- case 17: /* User message. */
+- case 18: /* User message recorded. */
+- ro_message(block);
+- break;
+- }
+- }
+-
+- /*
+- * GUI input routine called by gui_wait_for_chars(). Waits for a character
+- * from the keyboard.
+- * wtime == -1 Wait forever.
+- * wtime == 0 This should never happen.
+- * wtime > 0 Wait wtime milliseconds for a character.
+- * Returns OK if a character was found to be available within the given time,
+- * or FAIL otherwise.
+- */
+- int
+- gui_mch_wait_for_chars(long wtime)
+- {
+- int block[64];
+- int reason;
+- int start_time = -1;
+- int ctime = wtime / 10; /* delay in cs */
+-
+- if (wtime != -1)
+- {
+- swi(OS_ReadMonotonicTime);
+- start_time = r0;
+- }
+-
+- for (;;)
+- {
+- if (ro_dragging)
+- reason = wimp_poll(0, block); /* Always return immediately */
+- else if (wtime == -1)
+- reason = wimp_poll(1, block);
+- else
+- reason = wimp_pollidle(0, block, start_time + ctime);
+-
+- process_event(reason, block);
+-
+- if (input_available() || ro_return_early)
+- {
+- ro_return_early = FALSE;
+- return OK; /* There is something to process (key / menu event) */
+- }
+-
+- if (wtime != -1)
+- {
+- swi(OS_ReadMonotonicTime);
+- if (r0 - start_time > ctime)
+- return FAIL; /* We've been waiting too long - return failure */
+- }
+- }
+- }
+-
+- /* Flush any output to the screen */
+- void
+- gui_mch_flush(void)
+- {
+- }
+-
+- /*
+- * Clear a rectangular region of the screen from text pos(row1, col1) to
+- * (row2, col2) inclusive.
+- */
+- void
+- gui_mch_clear_block(int row1, int col1, int row2, int col2)
+- {
+- swi(ColourTrans_ReturnGCOL, gui.back_pixel << 8, 0, 0, 1<<7, 0);
+- plot_rectangle(96 + 5, r0,
+- FILL_X(col1), -FILL_Y(row2 + 1),
+- FILL_X(col2 + 1), -FILL_Y(row1));
+- }
+-
+- void
+- gui_mch_clear_all(void)
+- {
+- if (redraw_block)
+- {
+- swi(ColourTrans_SetGCOL, gui.back_pixel << 8, 0, 0, 1<<7, 0);
+- swi(OS_WriteI + 16);
+- }
+- else
+- {
+- int block[44];
+- block[0] = gui.window_handle;
+- block[1] = 0;
+- block[2] = -gui.num_rows * gui.char_height;
+- block[3] = gui.num_cols * gui.char_width;
+- block[4] = 0;
+- swi(Wimp_UpdateWindow, 0, block);
+- while (r0)
+- {
+- swi(ColourTrans_SetGCOL, gui.back_pixel << 8, 0, 0, 1<<7, 0);
+- swi(OS_WriteI + 16);
+- swi(Wimp_GetRectangle, 0, block);
+- }
+- }
+- }
+-
+- /*
+- * Delete the given number of lines from the given row, scrolling up any
+- * text further down within the scroll region.
+- */
+- void
+- gui_mch_delete_lines(int row, int num_lines)
+- {
+- int top_from = -row - num_lines;
+- int bot_from = -gui.scroll_region_bot - 1;
+- int bot_to = bot_from + num_lines;
+-
+- swi(ColourTrans_SetGCOL, gui.back_pixel << 8, 0, 0, 0x80, 0);
+-
+- /* Changed without checking! */
+- swi(Wimp_BlockCopy, gui.window_handle,
+- gui.scroll_region_left * gui.char_width,
+- bot_from * gui.char_height,
+- (gui.scroll_region_right - gui.scroll_region_left
+- + 1) * gui.char_width,
+- top_from * gui.char_height,
+-
+- gui.scroll_region_left * gui.char_width,
+- bot_to * gui.char_height);
+-
+- gui_clear_block(gui.scroll_region_bot - num_lines + 1,
+- gui.scroll_region_left,
+- gui.scroll_region_bot, gui.scroll_region_right);
+- }
+-
+- /*
+- * Insert the given number of lines before the given row, scrolling down any
+- * following text within the scroll region.
+- */
+- void
+- gui_mch_insert_lines(int row, int num_lines)
+- {
+- int top_from = -row;
+- int bot_to = -gui.scroll_region_bot - 1;
+- int bot_from = bot_to + num_lines;
+-
+- swi(ColourTrans_SetGCOL, gui.back_pixel << 8, 0, 0, 0x80, 0);
+-
+- swi(Wimp_BlockCopy, gui.window_handle,
+- gui.scroll_region_left * gui.char_width,
+- bot_from * gui.char_height,
+- (gui.scroll_region_right - gui.scroll_region_left
+- + 1) * gui.char_width,
+- top_from * gui.char_height,
+-
+- gui.scroll_region_left * gui.char_width,
+- bot_to * gui.char_height);
+-
+- gui_clear_block(row, gui.scroll_region_left,
+- row + num_lines - 1, gui.scroll_region_right);
+- }
+-
+- /* Put selection in clipboard buffer.
+- * Should we become the new owner?
+- */
+- void
+- clip_mch_request_selection(VimClipboard *cbd)
+- {
+- int block[64]; /* Will be used in Wimp_Poll. */
+- int reason;
+- char_u *buffer;
+- long_u length;
+-
+- block[0] = 48; /* Size of block. */
+- block[3] = 0; /* Original message. */
+- block[4] = 0x10; /* Data request. */
+- block[5] = gui.window_handle;
+- block[6] = RO_LOAD_CLIPBOARD; /* Internal handle. */
+- block[7] = block[8] = 0; /* (x,y) not used. */
+- block[9] = 4;
+- block[10] = 0xfff; /* We want text files if possible, I think. */
+- block[11] = -1; /* End of list. */
+- swi(Wimp_SendMessage, 17, block, 0); /* Broadcast request. */
+-
+- /* OK, we've sent the request. Poll until we get a null poll (failure) or
+- * we load the clipboard.
+- * If we receive a DataSave event with icon handle = -2 then put it on the
+- * clipboard. RISC OS should ensure that key events will not be delivered
+- * until the clipboard operation completes (unless the owner starts idling
+- * - we can't wait forever!).
+- */
+- for (;;)
+- {
+- reason = wimp_poll(0, block);
+- if (reason == 0)
+- return; /* Failed to get clipboard. */
+- if ((reason == 17 || reason == 18) &&
+- block[4] == 1 && block[6] == RO_LOAD_CLIPBOARD)
+- break; /* Got it - stop waiting. */
+- process_event(reason, block);
+- if (ro_return_early)
+- return;
+- }
+- /* Tell owner to save data in <Wimp$Scrap>. */
+- block[0] = 60;
+- block[3] = block[2]; /* Copy myref -> yourref */
+- block[4] = 2; /* DataSaveAck. */
+- block[9] = -1; /* Data is unsafe. */
+- strcpy( ((char_u *) block) + 44, "<Wimp$Scrap>");
+- swi(Wimp_SendMessage, 17, block, block[1]);
+-
+- /* Wait again for reply. */
+- for (;;)
+- {
+- reason = wimp_poll(0, block);
+- if (reason == 0)
+- return; /* Other program has given up! */
+- if ((reason == 17 || reason == 18) && block[4] == 3 && block[6] == RO_LOAD_CLIPBOARD)
+- break; /* Clipboard data saved to <Wimp$Scrap> */
+- process_event(reason, block);
+- if (ro_return_early)
+- return;
+- }
+-
+- /* <Wimp$Scrap> contains clipboard - load it. */
+- if (xswi(OS_File, 17, "<Wimp$Scrap>") & v_flag)
+- return; /* Error! */
+- if (r0 != 1 && r0 != 3)
+- return;
+- length = r4;
+-
+- buffer = lalloc(length, TRUE); /* Claim memory (and report errors). */
+- if (buffer == NULL)
+- return;
+-
+- if (xswi(OS_File, 16, "<Wimp$Scrap>", buffer, 0) & v_flag)
+- return;
+-
+- clip_yank_selection(MCHAR, buffer, length, cbd);
+-
+- vim_free(buffer);
+-
+- swi(OS_FSControl, 27, "<Wimp$Scrap>", 0, 0); /* Delete temp file. */
+-
+- block[4] = 4; /* Send DataLoadAck. */
+- block[3] = block[2]; /* Copy myref -> yourref. */
+- swi(Wimp_SendMessage, 17, block, block[1]);
+- }
+-
+- /* Not sure what this means under RISC OS. */
+- void
+- clip_mch_lose_selection(VimClipboard *cbd)
+- {
+- }
+-
+- /* Tell everyone that we now own the clipboard.
+- * Return OK if our claim is accepted (always, under RISC OS)
+- */
+- int
+- clip_mch_own_selection(VimClipboard *cbd)
+- {
+- int block[6];
+- block[0] = 24; /* Length of block. */
+- block[3] = 0; /* Original message. */
+- block[4] = 0xf; /* ClaimEntity. */
+- block[5] = 0x4; /* Claim clipboard only. */
+- swi(Wimp_SendMessage, 17, block, 0);
+- return OK;
+- }
+-
+- /*
+- * Send the current selection to the clipboard. Do nothing for X because we
+- * will fill in the selection only when requested by another app. Sounds good
+- * for RISC OS too.
+- */
+- void
+- clip_mch_set_selection(VimClipboard *cbd)
+- {
+- clip_get_selection(cbd);
+- }
+-
+- /*
+- * Make a menu either grey or not grey.
+- */
+- void
+- gui_mch_menu_grey(vimmenu_T *menu, int grey)
+- {
+- menu-> greyed_out = grey;
+- }
+-
+- /*
+- * Make menu item hidden or not hidden
+- */
+- void
+- gui_mch_menu_hidden(vimmenu_T *menu, int hidden)
+- {
+- menu-> hidden = hidden;
+- }
+-
+- /*
+- * This is called after setting all the menus to grey/hidden or not.
+- */
+- void
+- gui_mch_draw_menubar(void)
+- {
+- swi(Wimp_CreateMenu, 0, -1);
+- if (wimp_menu != (int *) -1)
+- {
+- ro_remove_menu(wimp_menu);
+- wimp_menu = (int *) -1;
+- }
+- }
+-
+- /* Add or remove a scrollbar. Note that this is only called when
+- * the scrollbar state is changing.
+- * The scroll bar window has already been created.
+- * We can't do anything except remove the scroll bar
+- * until we know what size to use.
+- */
+- void
+- gui_mch_enable_scrollbar(sb, flag)
+- scrollbar_T *sb;
+- int flag;
+- {
+- if (!flag)
+- swi(Wimp_CloseWindow, 0, & (sb->id) );
+- return;
+- }
+-
+- void
+- gui_mch_set_blinking(long waittime, long on, long off)
+- {
+- }
+-
+- /*
+- * Stop the cursor blinking. Show the cursor if it wasn't shown.
+- */
+- void
+- gui_mch_stop_blink(void)
+- {
+- }
+-
+- /*
+- * Start the cursor blinking. If it was already blinking, this restarts the
+- * waiting time and shows the cursor.
+- */
+- void
+- gui_mch_start_blink(void)
+- {
+- }
+-
+- /*
+- * Return the RGB value of a pixel as a long.
+- */
+- long_u
+- gui_mch_get_rgb(guicolor_T pixel)
+- {
+- return (long_u)pixel;
+- }
+-
+- void
+- gui_mch_set_text_area_pos(int x, int y, int w, int h)
+- {
+- }
+-
+- void
+- gui_mch_enable_menu(int flag)
+- {
+- }
+-
+- void
+- gui_mch_set_menu_pos(int x, int y, int w, int h)
+- {
+- }
+-
+- void
+- gui_mch_add_menu(vimmenu_T *menu, int idx)
+- {
+- }
+-
+- void
+- gui_mch_add_menu_item(vimmenu_T *menu, int idx)
+- {
+- }
+-
+- void
+- gui_mch_new_menu_colors(void)
+- {
+- }
+-
+- void
+- gui_mch_destroy_menu(vimmenu_T *menu)
+- {
+- }
+-
+- /* Size of buffer has changed.
+- * Add one to max since gui.c subtracts one more than it should!
+- */
+- void
+- gui_mch_set_scrollbar_thumb(sb, val, size, max)
+- scrollbar_T *sb;
+- long val;
+- long size;
+- long max;
+- {
+- int block[10], width, height;
+-
+- width = (max + 1) * gui.char_width;
+- height = (max + 1 + W_STATUS_HEIGHT(sb->wp)) * gui.char_height;
+-
+- block[0] = block[3] = 0;
+- block[1] = -height + (1 << y_eigen_factor);
+- block[2] = width;
+-
+- swi(Wimp_SetExtent, sb -> id, block);
+-
+- block[0] = sb -> id;
+- swi(Wimp_GetWindowState, 0, block);
+- block[5] = val * gui.char_width;
+- block[6] = -val * gui.char_height;
+- swi(Wimp_OpenWindow, 0, block, 0x4b534154,
+- gui.window_handle, /* Parent window handle. */
+- (CHILD_FIX_TO_RIGHT << CHILD_LEFT ) |
+- (CHILD_FIX_TO_RIGHT << CHILD_RIGHT ) |
+- (CHILD_FIX_TO_BOTTOM << CHILD_TOP ) |
+- (CHILD_FIX_TO_BOTTOM << CHILD_BOTTOM) |
+- (CHILD_SELF_SCROLL << CHILD_SCROLL_X) |
+- (CHILD_SELF_SCROLL << CHILD_SCROLL_Y)
+- );
+- }
+-
+- /* Set the position of the scrollbar within the editor
+- * window. Note that, for vertical scrollbars, x and w
+- * are ignored. For horizontal bars y and h are ignored.
+- */
+- void
+- gui_mch_set_scrollbar_pos(sb, x, y, w, h)
+- scrollbar_T *sb;
+- int x; /* Horizontal sb position */
+- int y; /* Top of scroll bar */
+- int w; /* Width */
+- int h; /* Height */
+- {
+- int block[24];
+- int px1, py1; /* Parent window min coords */
+- int px2, py2; /* Parent window max coords */
+-
+- /* Find where the parent window is. */
+- block[0] = gui.window_handle;
+- swi(Wimp_GetWindowState, 0, block);
+- px1 = block[1];
+- py1 = block[2];
+- px2 = block[3];
+- py2 = block[4];
+-
+- block[0] = sb -> id;
+-
+- /* Find out how big the scroll window is at the moment. */
+- swi(Wimp_GetWindowInfo, 0, ((char_u *)block) + 1);
+-
+- if (block[13] < w || block[12] > -h)
+- {
+- /* Current window is too small! */
+- if (block[12] > -h)
+- block[12] = -h;
+- if (block[13] < w)
+- block[13] = w;
+- swi(Wimp_SetExtent, block[0], block + 11);
+- }
+-
+- /* This works better on the nested_wimp. */
+- if (sb-> wp)
+- {
+- /* This is a vertical scrollbar. */
+- block[1] = block[3] = px2 - gui.scrollbar_width + (1 << x_eigen_factor);
+- block[2] = 1 + py2 - (y + h) + (1 << y_eigen_factor);
+- block[4] = 1 + py2 - y;
+- }
+- else
+- {
+- /* This is a horizontal scrollbar. */
+- block[2] = block[4] = py1 + gui.scrollbar_height;
+- block[1] = px1;
+- block[3] = px2 - gui.scrollbar_width;
+- }
+-
+- block[5] = 0;
+- block[6] = 0;
+- block[7] = -1;
+-
+- swi(Wimp_OpenWindow, 0, block, 0x4b534154,
+- gui.window_handle, /* Parent window handle. */
+- (CHILD_FIX_TO_RIGHT << CHILD_LEFT ) |
+- (CHILD_FIX_TO_RIGHT << CHILD_RIGHT ) |
+- (CHILD_FIX_TO_BOTTOM << CHILD_TOP ) |
+- (CHILD_FIX_TO_BOTTOM << CHILD_BOTTOM) |
+- (CHILD_SELF_SCROLL << CHILD_SCROLL_X) |
+- (CHILD_SELF_SCROLL << CHILD_SCROLL_Y)
+- );
+- }
+-
+- /* Create a window with no workarea to place inside editor window.
+- * (what happens without the nested wimp?)
+- * Data for scrollbar is invalid.
+- */
+- void
+- gui_mch_create_scrollbar(sb, orient)
+- scrollbar_T *sb;
+- int orient; /* orient is SBAR_HORIZ or SBAR_VERT */
+- {
+- int bar[] =
+- {
+- 0, 0, /* Visible area : min X,Y */
+- 100, 100, /* max X,Y */
+- 0, 0, /* Scroll offsets */
+- -1, /* Window in front */
+- 0x80800150 | (orient == SBAR_HORIZ ? (1 << 30) : (1 << 28)),
+- 0xff070207, /* Colours */
+- 0x000c0103, /* More colours */
+- 0, -0x4000, /* Workarea extent */
+- 0x4000, 0, /* max X,Y */
+- 0x00000000, /* No title */
+- 0 << 12, /* No workarea button type */
+- 1, /* Wimp sprite area */
+- 0x00010001, /* Minimum width, height */
+- 0, 0, 0, /* Title data (none) */
+- 0 /* No icons */
+- };
+- swi(Wimp_CreateWindow, 0, bar);
+- sb -> id = r0;
+- }
+-
+- #if defined(FEAT_WINDOWS) || defined(PROTO)
+- void
+- gui_mch_destroy_scrollbar(scrollbar_T *sb)
+- {
+- swi(Wimp_DeleteWindow, 0, & (sb->id));
+- sb -> id = -1;
+- }
+- #endif
+-
+- void
+- gui_mch_set_scrollbar_colors(scrollbar_T *sb)
+- {
+- /* Always use default RO colour scheme. */
+- }
+-
+- /*
+- * Get current mouse coordinates in text window.
+- * Note: (0,0) is the bottom left corner, positive y is UP.
+- */
+- void
+- gui_mch_getmouse(x, y)
+- int *x;
+- int *y;
+- {
+- int left;
+- int top;
+- int block[10];
+-
+- block[0] = gui.window_handle;
+- swi(Wimp_GetWindowState, 0, block);
+- left = block[1];
+- top = block[4];
+-
+- swi(Wimp_GetPointerInfo, 0, block);
+- *x = block[0] - left;
+- *y = top - block[1];
+- }
+-
+- /* MouseTo(x, y) */
+- void
+- gui_mch_setmouse(x, y)
+- int x;
+- int y;
+- {
+- }
+-
+- void
+- gui_mch_toggle_tearoffs(enable)
+- int enable;
+- {
+- /* no tearoff menus */
+- }
+-
+- /* Redraw a window's title.
+- * For the nested wimp we use the new 'redraw-title-bar' reason code.
+- * For older wimps we mark the area of the screen where the title bar
+- * is as invalid.
+- */
+- void
+- ro_redraw_title(window)
+- int window;
+- {
+- if (nested_wimp)
+- {
+- swi(Wimp_ForceRedraw, window, 0x4b534154, 3);
+- }
+- else
+- {
+- int block[10];
+- int miny;
+-
+- block[0] = window;
+- swi(Wimp_GetWindowState, 0, block);
+- miny = block[4];
+- swi(Wimp_GetWindowOutline, 0, block);
+- swi(Wimp_ForceRedraw, -1,
+- block[1], miny,
+- block[3], block[4]);
+- }
+- }
+-
+- /* Turn a vimmenu_T structure into a wimp menu structure.
+- * -1 if resulting menu is empty.
+- * Only the children and dname items in the root menu are used.
+- */
+- int *
+- ro_build_menu(menu)
+- vimmenu_T *menu;
+- {
+- int *wimp_menu;
+- int width = 4;
+- int w;
+- int size = 28;
+- vimmenu_T *item;
+- int *wimp_item;
+-
+- /* Find out how big the menu is so we can allocate memory for it */
+- for (item = menu-> children; item; item = item-> next)
+- {
+- if (item-> hidden == FALSE && !menu_is_separator(item->name))
+- size += 24;
+- }
+-
+- if (size <= 28)
+- return (int *) -1; /* No children - shouldn't happen */
+-
+- wimp_menu = (int *) alloc(size);
+-
+- wimp_menu[0] = (int) menu-> dname;
+- wimp_menu[1] = -1;
+- wimp_menu[2] = 0;
+- wimp_menu[3] = 0x00070207;
+- wimp_menu[5] = 44;
+- wimp_menu[6] = 0;
+-
+- wimp_item = wimp_menu + 7;
+-
+- for (item = menu-> children; item; item = item-> next)
+- {
+- if (menu_is_separator(item-> name))
+- {
+- /* This menu entry is actually a separator. If it is not the first
+- * menu entry then mark the previous menu item as needing a dotted
+- * line after it.
+- */
+- if (wimp_item > wimp_menu + 7)
+- wimp_item[-6] |= 0x2;
+- }
+- else if (item-> hidden == FALSE)
+- {
+- wimp_item[0] = 0;
+- wimp_item[1] = item-> children ? (int) ro_build_menu(item) : -1;
+- wimp_item[2] = 0x07009131 | (item-> greyed_out << 22);
+- wimp_item[3] = (int) item-> dname;
+- wimp_item[4] = -1;
+- wimp_item[5] = (int) item; /* Stuff the menu address in this unused space */
+-
+- w = strlen(item-> dname) + 1;
+- if (w > width)
+- width = w;
+- wimp_item += 6;
+- }
+- }
+-
+- wimp_menu[4] = (width + 2) * 16;
+- wimp_menu[7] |= 0x100; /* Menu title is indirected */
+- wimp_item[-6] |= 0x080; /* Last entry in menu */
+- return wimp_menu;
+- }
+-
+- static void
+- ro_remove_menu(menu)
+- int *menu;
+- {
+- int *item = menu + 7;
+-
+- if (menu == NULL || menu == (int *) -1)
+- return;
+-
+- for (;;)
+- {
+- if (item[1] != -1)
+- ro_remove_menu((int *) item[1]); /* Remove sub-menu */
+- if (item[0] & 0x80)
+- break; /* This was the last entry */
+- item += 6;
+- }
+- vim_free(menu);
+- }
+-
+- void
+- gui_mch_show_popupmenu(menu)
+- vimmenu_T *menu;
+- {
+- int block[10];
+-
+- /* Remove the existing menu, if any */
+- if (wimp_menu != (int *) -1)
+- {
+- swi(Wimp_CreateMenu, 0, -1);
+- ro_remove_menu(wimp_menu);
+- wimp_menu = (int *) -1;
+- }
+-
+- wimp_menu = ro_build_menu(menu);
+- if (wimp_menu != (int *) -1)
+- {
+- swi(Wimp_GetPointerInfo, 0, block);
+- swi(Wimp_CreateMenu, 0, wimp_menu, block[0] - 64, block[1] + 64);
+- }
+- }
+-
+- /* Run a command using the TaskWindow module.
+- * If SHELL_FILTER is set then output is not echoed to the screen,
+- * If it is not set, then \r is not sent to the output file.
+- */
+- int
+- gui_mch_call_shell(cmd, options)
+- char_u *cmd;
+- int options; /* SHELL_FILTER if called by do_filter() */
+- /* SHELL_COOKED if term needs cooked mode */
+- {
+- char_u task_cmd[256]; /* Contains *TaskWindow command. */
+- int block[64];
+- int reason;
+- char_u *out;
+- char_u c;
+- int old_msg_col;
+- char_u *out_redir;
+- int length;
+- FILE *out_file = NULL;
+-
+- out_redir = strstr(cmd, " > ");
+- if (out_redir == NULL)
+- length = strlen(cmd); /* No redirection. */
+- else
+- {
+- length = out_redir - cmd;
+- out_file = fopen(out_redir + 3, "wb");
+- if (out_file == NULL)
+- smsg("WARNING : Can't open file %s for writing\n", out_redir + 3);
+- }
+-
+- if (length > 180)
+- {
+- if (out_file)
+- fclose(out_file);
+- return FAIL; /* Command too long. */
+- }
+-
+- strcpy(task_cmd, "TaskWindow \"");
+- strncpy(task_cmd + 12, cmd, length);
+- sprintf(task_cmd + 12 + length,
+- "\" -task &%08x -ctrl -quit -name \"Vim command\"",
+- task_handle);
+-
+- if (options & SHELL_COOKED)
+- settmode(TMODE_COOK);
+-
+- if (xswi(Wimp_StartTask, task_cmd) & v_flag)
+- {
+- /* Failed to even start a new task (out of memory?) */
+- settmode(TMODE_RAW);
+- if (out_file)
+- fclose(out_file);
+- return FAIL;
+- }
+-
+- /* Wait for the child process to initialise. */
+- child_handle = 0;
+- while (!child_handle)
+- {
+- reason = wimp_poll(0, block);
+- if ((reason == 17 || reason == 18) && block[4] == 0x808c2)
+- child_handle = block[1];
+- else
+- process_event(reason, block);
+- }
+-
+- /* Block until finished */
+- while (child_handle)
+- {
+- reason = wimp_poll(1, block);
+- if (reason == 3 || (reason == 8 && block[6] == 3))
+- {
+- /* Close window request or CTRL-C - kill child task. */
+- block[0] = 20;
+- block[3] = 0;
+- block[4] = 0x808c4; /* Morite */
+- swi(Wimp_SendMessage, 17, block, child_handle);
+- MSG_PUTS(_("\nSending message to terminate child process.\n"));
+- continue;
+- }
+- else if (reason == 8)
+- {
+- block[0] = 28;
+- block[3] = 0;
+- block[4] = 0x808c0; /* Input */
+- block[5] = 1;
+- /* Block[6] is OK as it is! */
+- swi(Wimp_SendMessage, 17, block, child_handle);
+- continue;
+- }
+- else if (reason == 17 || reason == 18)
+- {
+- if (block[4] == 0x808c1)
+- {
+- /* Ack message. */
+- block[3] = block[2];
+- swi(Wimp_SendMessage, 19, block, block[1]);
+- out = (char_u *)block + 24;
+- old_msg_col = msg_col;
+- while (block[5]--)
+- {
+- c = *out++;
+- if (out_file && (c != '\r' || (options & SHELL_FILTER)))
+- fputc(c, out_file);
+- if ((options & SHELL_FILTER) == 0)
+- {
+- if (c == 127)
+- msg_puts("\b \b");
+- else if (c > 31)
+- msg_putchar(c);
+- else if (c == 10)
+- {
+- lines_left = 8; /* Don't do More prompt! */
+- msg_putchar(10);
+- }
+- }
+- }
+- /* Flush output to the screen. */
+- windgoto(msg_row, msg_col);
+- out_flush();
+- continue;
+- }
+- }
+- process_event(reason, block);
+- }
+- msg_putchar('\n');
+- settmode(TMODE_RAW);
+- if (out_file)
+- fclose(out_file);
+- return OK;
+- }
+-
+- /* Like strsave(), but stops at any control char */
+- char_u *
+- wimp_strsave(str)
+- char *str;
+- {
+- int strlen = 0;
+- char_u *retval;
+- while (str[strlen] > 31)
+- strlen++;
+- retval = alloc(strlen + 1);
+- if (retval)
+- {
+- memcpy(retval, str, strlen);
+- retval[strlen] = '\0';
+- }
+- return retval;
+- }
+-
+- /* If we are saving then pop up a standard RISC OS save box.
+- * Otherwise, open a directory viewer on the given directory (and return NULL)
+- * The string we return will be freed later.
+- */
+- char_u *
+- gui_mch_browse(saving, title, dflt, ext, initdir, filter)
+- int saving; /* write action */
+- char_u *title; /* title for the window */
+- char_u *dflt; /* default file name */
+- char_u *ext; /* extension added */
+- char_u *initdir; /* initial directory, NULL for current dir */
+- char_u *filter; /* file name filter */
+- {
+- char command[256];
+- int length;
+-
+- if (saving)
+- {
+- int block[64];
+- int reason;
+- int done_save = FALSE;
+- char_u *retval = NULL;
+- char_u *sprname;
+- char_u *fname;
+- int dragging_icon = FALSE;
+- int filetype;
+-
+- if (!dflt)
+- dflt = "TextFile";
+-
+- block[0] = save_window;
+- block[1] = 0;
+- swi(Wimp_GetIconState, 0, block);
+- sprname = ((char_u *) block[7]);
+- block[1] = 1;
+- swi(Wimp_GetIconState, 0, block);
+- fname = ((char *) block[7]);
+- strncpy(fname, dflt, 255);
+-
+- if (xswi(OS_FSControl, 31, curbuf->b_p_oft) & v_flag)
+- {
+- filetype = 0xfff;
+- strcpy(sprname + 5, "xxx");
+- }
+- else
+- {
+- filetype = r2;
+- sprintf(sprname + 5, "%03x", filetype);
+- }
+-
+- /* Open the save box */
+-
+- swi(Wimp_GetPointerInfo, 0, block);
+- swi(Wimp_CreateMenu, 0, save_window, block[0] - 64, block[1] + 64);
+- swi(Wimp_SetCaretPosition, save_window, 1, 0, 0, -1, -1);
+-
+- while (!done_save)
+- {
+- reason = wimp_poll(1, block);
+- switch (reason)
+- {
+- case 1:
+- redraw_window(block);
+- break;
+- case 2:
+- if (block[0] == save_window)
+- swi(Wimp_OpenWindow, 0, block);
+- else
+- ro_open_window(block);
+- break;
+- case 3:
+- done_save = TRUE;
+- break;
+- case 6:
+- if (block[3] != save_window)
+- done_save = TRUE;
+- else
+- {
+- int drag_box[4];
+- int min_x, max_y;
+-
+- switch (block[4])
+- {
+- case 0: /* Start drag */
+- block[0] = save_window;
+- swi(Wimp_GetWindowState, 0, block);
+- min_x = block[1];
+- max_y = block[4];
+- block[1] = 0;
+- swi(Wimp_GetIconState, 0, block);
+- drag_box[0] = block[2] + min_x;
+- drag_box[1] = block[3] + max_y;
+- drag_box[2] = block[4] + min_x;
+- drag_box[3] = block[5] + max_y;
+-
+- swi(DragASprite_Start,
+- 0x45,
+- 1,
+- sprname,
+- drag_box);
+- dragging_icon = TRUE;
+- break;
+- case 2: /* OK */
+- retval = wimp_strsave(fname);
+- done_save = TRUE;
+- break;
+- case 3: /* Cancel */
+- done_save = TRUE;
+- break;
+- }
+- }
+- break;
+- case 7:
+- if (dragging_icon)
+- {
+- int len = 0;
+-
+- dragging_icon = FALSE;
+- swi(Wimp_GetPointerInfo, 0, block);
+- block[5] = block[3];
+- block[6] = block[4];
+- block[7] = block[0];
+- block[8] = block[1];
+- block[9] = 0; /* Don't know the size */
+- block[10] = filetype;
+-
+- while (fname[len] > 31)
+- {
+- if (fname[len] == '.')
+- {
+- fname += len + 1;
+- len = 0;
+- }
+- else
+- len++;
+- }
+- if (len > 211)
+- len = 211;
+-
+- memcpy(((char_u *) block) + 44, fname, len);
+- ((char_u *)block)[44 + len] = '\0';
+-
+- block[0] = (len + 48) & 0xfc;
+- block[3] = 0;
+- block[4] = 1; /* DataSave */
+-
+- swi(Wimp_SendMessage, 17, block, block[5], block[6]);
+- }
+- else
+- ro_drag_finished(block);
+- break;
+- case 8:
+- if (block[6] == 13)
+- {
+- retval = wimp_strsave(fname);
+- done_save = TRUE;
+- }
+- else if (block[6] == 0x1b)
+- done_save = TRUE;
+- else
+- swi(Wimp_ProcessKey, block[6]);
+- break;
+- case 17:
+- case 18:
+- if (block[4] == 2 && block[9] != -1)
+- {
+- /* DataSaveAck from dragging icon. */
+- retval = wimp_strsave(((char_u *) block) + 44);
+- done_save = TRUE;
+- }
+- else if (block[4] == 0x400c9)
+- {
+- /* MenusDeleted */
+- done_save = TRUE;
+- }
+- else
+- ro_message(block);
+- break;
+- }
+- }
+- block[0] = save_window;
+- swi(Wimp_CloseWindow, 0, block);
+- swi(Wimp_GetCaretPosition, 0, block);
+- if (block[0] == -1)
+- swi(Wimp_SetCaretPosition, gui.window_handle, -1, 0, 0, -1, -1);
+-
+- return retval;
+- }
+- else if (initdir)
+- {
+- /* Open a directory viewer */
+- length = strlen(initdir);
+-
+- if (length > 240)
+- return NULL; /* Path too long! */
+-
+- length = sprintf(command, "Filer_OpenDir %s", initdir);
+- while (command[length - 1] == '.')
+- length--;
+- command[length] = '\0';
+- swi(OS_CLI, command);
+- }
+- return NULL;
+- }
+--- 0 ----
+*** ../vim-7.3.186/src/os_riscos.c 2010-08-15 21:57:27.000000000 +0200
+--- src/os_riscos.c 1970-01-01 01:00:00.000000000 +0100
+***************
+*** 1,1292 ****
+- /* vi:set ts=8 sts=4 sw=4:
+- *
+- * VIM - Vi IMproved by Bram Moolenaar
+- *
+- * Do ":help uganda" in Vim to read copying and usage conditions.
+- * Do ":help credits" in Vim to see a list of people who contributed.
+- * See README.txt for an overview of the Vim source code.
+- */
+-
+- #include "vim.h"
+-
+- /*
+- * os_riscos.c
+- *
+- * Thomas Leonard <tal197@ecs.soton.ac.uk>
+- */
+-
+- const char *__dynamic_da_name = "Vim heap"; /* Enable and name our dynamic area */
+- int ro_line_mode = TRUE; /* For Ex mode we much echo chars to the screen ourselves */
+- int windowed; /* Flag - are we running inside a text window? */
+- int WinLeft, WinTop; /* We might be started inside a text window */
+- int ScrollTop; /* Make cursor movements relative to ScrollTop. */
+-
+- int old_escape_state = -1;
+- int old_cursor_state = -1;
+-
+- #define rgb(r,g,b) ((b<<24) + (g<<16) + (r<<8))
+- #define NORMAL_FG 0x00000000
+- #define NORMAL_BG 0xffffffff
+-
+- /* Convert a DOS colour number to an RGB palette entry.
+- * Mappings from X11 rgb/txt file.
+- */
+- static int
+- map_colour(dos)
+- int dos; /* Standard DOS colour number. */
+- {
+- switch (dos)
+- {
+- case 0: return 0; /* Black */
+- case 1: return rgb(0,0,139); /* DarkBlue */
+- case 2: return rgb(0,100,0); /* DarkGreen */
+- case 3: return rgb(0,139,139); /* DarkCyan */
+- case 4: return rgb(139,0,0); /* DarkRed */
+- case 5: return rgb(139,0,139); /* DarkMagenta */
+- case 6: return rgb(165,42,42); /* Brown, DarkYellow */
+- case 7: return rgb(211,211,211); /* LightGray, LightGrey, Gray, Grey */
+- case 8: return rgb(169,169,169); /* DarkGray, DarkGrey */
+- case 9: return rgb(173,216,230); /* Blue, LightBlue */
+- case 10: return rgb(144,238,144); /* Green, LightGreen */
+- case 11: return rgb(224,255,255); /* Cyan, LightCyan */
+- case 12: return rgb(255,0,0); /* Red, LightRed */
+- case 13: return rgb(255,0,255); /* Magenta, LightMagenta */
+- case 14: return rgb(255,255,0); /* Yellow, LightYellow */
+- case 15: return rgb(255,255,255); /* White */
+- }
+- return rgb(100,100,100);
+- }
+-
+- static void
+- text_fg(fg)
+- int fg; /* Foregound colour in the form &BBGGRR00 */
+- {
+- xswi(ColourTrans_SetTextColour, fg, 0, 0, 0);
+- }
+-
+- static void
+- text_bg(bg)
+- int bg; /* Backgound colour in the form &BBGGRR00 */
+- {
+- xswi(ColourTrans_SetTextColour, bg, 0, 0, 1 << 7);
+- }
+-
+- #define OUT_NORMAL 0
+- #define OUT_NUMBER 1 /* Reading in a number */
+-
+- void
+- mch_write(s, len)
+- char_u *s;
+- int len;
+- {
+- static int mode = OUT_NORMAL;
+- static int x, y; /* For reading numbers in. */
+-
+- if (!term_console)
+- {
+- /* Maybe we are running Vim remotely - don't interpret chars */
+- while (len--)
+- {
+- char_u c = *s++;
+- swi(OS_WriteC, c);
+- /* We might need to send a CR too. This shouldn't
+- * hurt if we don't need it, should it?
+- */
+- if (c == 10)
+- swi(OS_WriteI + 13);
+- }
+- return;
+- }
+-
+- while (len--)
+- {
+- char_u c = *s++;
+- switch (mode)
+- {
+- case OUT_NUMBER:
+- if (c < '0' || c > '9')
+- {
+- mode = OUT_NORMAL;
+- }
+- else
+- {
+- x = (x * 10) + c - '0';
+- continue;
+- }
+- /* note: no break here! */
+-
+- case OUT_NORMAL:
+- switch (c)
+- {
+- case 1:
+- /* Number (in decimal) follows. */
+- mode = OUT_NUMBER;
+- y = x;
+- x = 0;
+- break;
+- case 2:
+- /* Position cursor. */
+- swi(OS_WriteI + 31);
+- swi(OS_WriteC, x);
+- swi(OS_WriteC, y - ScrollTop);
+- break;
+- case 3:
+- /* Set scroll region. */
+- if (x == Rows -1 && y == 0 && !windowed)
+- {
+- /* Whole screen - remove text window.
+- * This is MUCH faster.
+- */
+- swi(OS_WriteI + 26);
+- }
+- else
+- {
+- /* Create a text window. */
+- swi(OS_WriteI + 28);
+- swi(OS_WriteC, WinLeft);
+- swi(OS_WriteC, WinTop + x);
+- swi(OS_WriteC, WinLeft + Columns - 1);
+- swi(OS_WriteC, WinTop + y);
+- }
+- ScrollTop = y;
+- break;
+- case 4:
+- /* Normal mode. */
+- text_fg(NORMAL_FG);
+- text_bg(NORMAL_BG);
+- break;
+- case 5:
+- /* Reverse mode. */
+- text_fg(NORMAL_BG);
+- text_bg(NORMAL_FG);
+- break;
+- case 10:
+- swi(OS_NewLine);
+- break;
+- case 14:
+- /* Cursor invisible. */
+- swi(OS_WriteN,
+- "\027\001\000\000\000\000\000\000\000\000",
+- 10);
+- break;
+- case 15:
+- /* Cursor visible. */
+- swi(OS_WriteN,
+- "\027\001\002\000\000\000\000\000\000\000",
+- 10);
+- break;
+- case 16:
+- /* Cursor very visible (flash) */
+- swi(OS_WriteN,
+- "\027\001\003\000\000\000\000\000\000\000",
+- 10);
+- case 17:
+- /* Set foreground colour. */
+- text_fg(map_colour(x));
+- break;
+- case 18:
+- /* Set background colour. */
+- text_bg(map_colour(x));
+- break;
+- case 19:
+- /* Scroll text down. */
+- swi(OS_WriteN,
+- "\027\007\000\002\000\000\000\000\000\000",
+- 10);
+- break;
+- default:
+- swi(OS_WriteC, c);
+- }
+- continue;
+-
+- default:
+- printf("[output error]");
+- mode = OUT_NORMAL;
+- }
+- }
+- }
+-
+- /*
+- * mch_inchar(): low level input funcion.
+- * Get a characters from the keyboard.
+- * Return the number of characters that are available.
+- * If wtime == 0 do not wait for characters.
+- * If wtime == n wait n msecs for characters.
+- * If wtime == -1 wait forever for characters.
+- *
+- * TODO: call convert_input() for 'fileencoding' to 'encoding' conversion.
+- */
+- int
+- mch_inchar(buf, maxlen, wtime, tb_change_cnt)
+- char_u *buf;
+- int maxlen;
+- long wtime;
+- int tb_change_cnt;
+- {
+- int got=0;
+- unsigned int start_time = clock();
+-
+- if (ro_line_mode)
+- {
+- /* We're probably in Ex mode - get whole lines at a time. */
+-
+- static char_u line_buffer[256];
+- static int remaining_chars = 0;
+- static int buf_pos = 0;
+-
+- /* Do we need to fetch another line? */
+- if (remaining_chars == 0)
+- {
+- int old_esc_state;
+- swi(OS_Byte, 200, 1, 0xfe);
+- old_esc_state = r1;
+-
+- buf_pos = 0;
+- if (xswi(OS_ReadLine, line_buffer, 255, 0, 255) & (c_flag | v_flag))
+- {
+- got_int = TRUE; /* ESC pressed */
+- r1 = 0;
+- }
+- line_buffer[r1] = 13;
+- remaining_chars = r1 + 1; /* Count CR as part of input */
+-
+- swi(OS_Byte, 200, old_esc_state, 0);
+- }
+-
+- /* Can we send the rest of the buffer back in one go? */
+- if (remaining_chars <= maxlen)
+- {
+- int got = remaining_chars;
+-
+- memcpy(buf, line_buffer + buf_pos, got);
+- remaining_chars = 0;
+- return got;
+- }
+-
+- /* Send as much as we can */
+- memcpy(buf, line_buffer + buf_pos, maxlen);
+- buf_pos += maxlen;
+- remaining_chars -= maxlen;
+-
+- return maxlen;
+- }
+-
+- if (!term_console)
+- {
+- /* Use OS_ReadC for all input.
+- * Avoids problems with remote access getting interference from
+- * the keyboard.
+- */
+- if (wtime == 0)
+- return 0; /* Ignore quick key checks */
+-
+- if (xswi(OS_ReadC) & c_flag)
+- {
+- got_int = TRUE; /* ESC pressed - can this happen? */
+- swi(OS_Byte, 124); /* Clear Escape state */
+- r0 = 0x1b; /* It *might* not have been Escape! */
+- }
+- buf[0] = r0;
+- return 1;
+- }
+-
+- /*
+- * OK, here's the plan:
+- *
+- * 1) Wait until wtime expires or we get a key
+- * 2) Get keys until the keyboard buffer is empty or buf is full
+- */
+-
+- while (xswi(OS_Byte,145,0) & c_flag)
+- {
+- /* Nothing at all in the keyboard buffer.
+- * Has our time expired yet?
+- */
+- if ( (wtime != -1) && (clock() - start_time) >= wtime )
+- return 0; /* Nothing read - giving up */
+- }
+-
+- /* We've got one char (in r2) - are there any more? */
+-
+- while (got < maxlen)
+- {
+- buf[got++] = r2;
+-
+- if (xswi(OS_Byte,145,0) & c_flag)
+- return got; /* Keyboard buffer empty */
+- }
+- return got; /* buf is full */
+- }
+-
+- /*
+- * return non-zero if a character is available
+- */
+- int
+- mch_char_avail()
+- {
+- if (!term_console)
+- return 0; /* Can't tell */
+- if (xswi(OS_Byte, 152, 0) & c_flag)
+- return 0;
+- return 1;
+- }
+-
+- /* Find out how much free memory we have.
+- * I don't know how to work this out exactly but, since we can claim
+- * more memory from the OS, let's just report the free pool size.
+- * Dynamic area 6 doesn't exist pre 3.6 according to StrongHelp, so
+- * we'll use Wimp_SlotSize. If that fails (outside the desktop?)
+- * then just return a big number and hope.
+- */
+- long_u
+- mch_avail_mem(special)
+- int special;
+- {
+- if (xswi(Wimp_SlotSize, -1, -1) & v_flag)
+- return 0x7fffffff;
+- return r2;
+- }
+-
+- void
+- mch_delay(msec, ignoreinput)
+- long msec;
+- int ignoreinput;
+- {
+- int start_time, time_now;
+- int csec = msec / 10;
+-
+- swi(OS_ReadMonotonicTime);
+- start_time = r0;
+-
+- for (;;)
+- {
+- swi(OS_ReadMonotonicTime);
+- time_now = r0;
+- if (time_now - start_time > csec)
+- return;
+- #ifdef FEAT_GUI
+- /* In the GUI, allow other programs to run while waiting. */
+- if (gui.in_use)
+- gui_mch_wait_for_chars(start_time + csec);
+- #endif
+- }
+- }
+-
+- /*
+- * If the machine has job control, use it to suspend the program,
+- * otherwise fake it by starting a new shell.
+- */
+- void
+- mch_suspend()
+- {
+- suspend_shell();
+- }
+-
+- void
+- mch_init()
+- {
+- /*
+- * Read window size first. Calls to mch_get_shellsize() will
+- * simply return these values in future so that setting the
+- * text window (used for scrolling) won't give strange results.
+- */
+-
+- int buf[7] = {132, 135, 256, 257, 1, 2, -1};
+-
+- /* Command windows are no longer forced open, since if we are
+- * in the desktop then we'll use the GUI version.
+- * Opening a command window here messes up the GUI version startup
+- */
+- #ifndef FEAT_GUI
+- swi(OS_WriteI);
+- #endif
+- swi(OS_ReadVduVariables, buf, buf);
+- WinLeft = buf[0];
+- WinTop = buf[1];
+- Columns = buf[2];
+- Rows = buf[3] + 1; /* Seems to be one off (VduVars wrong?) */
+- ScrollTop = 0;
+-
+- /* Are we running in a textwindow? */
+- if (Rows == buf[5] + 1 && Columns == buf[4] + 1)
+- windowed = 0;
+- else
+- windowed = 1;
+-
+- /* Choose a nice colour scheme. */
+- text_fg(NORMAL_FG);
+- text_bg(NORMAL_BG);
+- }
+-
+- /*
+- * Check_win checks whether we have an interactive stdout.
+- */
+- /* ARGSUSED */
+- int
+- mch_check_win(argc, argv)
+- int argc;
+- char **argv;
+- {
+- return OK;
+- }
+-
+- /*
+- * Return TRUE if the input comes from a terminal, FALSE otherwise.
+- */
+- int
+- mch_input_isatty()
+- {
+- if (xswi(OS_ChangeRedirection, -1, -1) & v_flag)
+- return TRUE; /* Error - TRUE is probably correct though */
+- if (r0 == 0)
+- return TRUE;
+- return FALSE;
+- }
+-
+- #ifdef FEAT_TITLE
+- int
+- mch_can_restore_title()
+- {
+- return FALSE;
+- }
+-
+- int
+- mch_can_restore_icon()
+- {
+- return FALSE;
+- }
+-
+-
+- /*
+- * Set the window title and icon.
+- */
+- void
+- mch_settitle(title, icon)
+- char_u *title;
+- char_u *icon;
+- {
+- if (title == NULL)
+- title = (char_u *) "<untitled>";
+- #ifdef FEAT_GUI
+- if (gui.in_use && strcmp(title, gui.window_title))
+- {
+- int length;
+- length = strlen(title);
+- if (length >= gui.window_title_size)
+- length = gui.window_title_size - 1;
+- strncpy(gui.window_title, title, length);
+- gui.window_title[length] = 0;
+- ro_redraw_title(gui.window_handle);
+- }
+- #endif
+- return;
+- }
+-
+- /*
+- * Restore the window/icon title.
+- * "which" is one of:
+- * 1 only restore title
+- * 2 only restore icon
+- * 3 restore title and icon
+- */
+- void
+- mch_restore_title(which)
+- int which;
+- {
+- return;
+- }
+- #endif
+-
+- /*
+- * Insert user name in s[len].
+- * Return OK if a name found.
+- */
+- int
+- mch_get_user_name(s, len)
+- char_u *s;
+- int len;
+- {
+- /* RISC OS doesn't support user names. */
+- *s = NUL;
+- return FAIL;
+- }
+-
+- /*
+- * Insert host name in s[len].
+- */
+-
+- void
+- mch_get_host_name(s, len)
+- char_u *s;
+- int len;
+- {
+- if (xswi(OS_ReadVarVal, "Machine$Name", s, len, 0, 3) & v_flag)
+- {
+- /* Variable does not exist (normal operation) */
+- vim_strncpy(s, "(unknown)", len - 1);
+- }
+- }
+-
+- /*
+- * return process ID
+- */
+- long
+- mch_get_pid()
+- {
+- if (xswi(Wimp_ReadSysInfo, 5) & v_flag)
+- return 0;
+- return r0;
+- }
+-
+- /*
+- * Get name of current directory into buffer 'buf' of length 'len' bytes.
+- * Return OK for success, FAIL for failure.
+- */
+- int
+- mch_dirname(buf, len)
+- char_u *buf;
+- int len;
+- {
+- if (xswi(OS_FSControl, 37, "@", buf, 0, 0, len) & v_flag)
+- return FAIL;
+- return OK;
+- }
+-
+- /*
+- * Get absolute file name into buffer 'buf' of length 'len' bytes.
+- *
+- * return FAIL for failure, OK for success
+- */
+- int
+- mch_FullName(fname, buf, len, force)
+- char_u *fname, *buf;
+- int len;
+- int force; /* Also expand when already absolute path name.
+- * Not used under RISC OS.
+- */
+- {
+- if (xswi(OS_FSControl, 37, fname, buf, 0, 0, len) & v_flag)
+- return FAIL;
+- return OK;
+- }
+-
+- /*
+- * Return TRUE if "fname" does not depend on the current directory.
+- */
+- int
+- mch_isFullName(fname)
+- char_u *fname;
+- {
+- if (strstr(fname, "::") && strstr(fname,".$."))
+- return TRUE;
+- return FALSE;
+- }
+-
+- /*
+- * Get file permissions for 'name'.
+- * Returns -1 when it doesn't exist.
+- */
+- long
+- mch_getperm(name)
+- char_u *name;
+- {
+- struct stat statb;
+-
+- if (stat((char *)name, &statb))
+- return -1;
+- return statb.st_mode;
+- }
+-
+- /*
+- * set file permission for 'name' to 'perm'
+- *
+- * return FAIL for failure, OK otherwise
+- */
+- int
+- mch_setperm(name, perm)
+- char_u *name;
+- long perm;
+- {
+- return (chmod((char *)name, (mode_t)perm) == 0 ? OK : FAIL);
+- }
+-
+- /*
+- * Set hidden flag for "name".
+- */
+- /* ARGSUSED */
+- void
+- mch_hide(name)
+- char_u *name;
+- {
+- /* can't hide a file */
+- }
+-
+- /*
+- * return TRUE if "name" is a directory
+- * return FALSE if "name" is not a directory
+- * return FALSE for error
+- */
+- int
+- mch_isdir(name)
+- char_u *name;
+- {
+- if (xswi(OS_File, 17, name) & v_flag)
+- return FALSE;
+- if (r0 == 2 || r0 == 3)
+- return TRUE; /* Count image files as directories. */
+- return FALSE;
+- }
+-
+- /*
+- * Return 1 if "name" can be executed, 0 if not.
+- * Return -1 if unknown. Requires which to work.
+- */
+- int
+- mch_can_exe(name)
+- char_u *name;
+- {
+- char_u *buf;
+- char_u *p;
+- int retval;
+-
+- buf = alloc((unsigned)STRLEN(name) + 7);
+- if (buf == NULL)
+- return -1;
+- sprintf((char *)buf, "which %s", name);
+- p = get_cmd_output(buf, NULL, SHELL_SILENT);
+- vim_free(buf);
+- if (p == NULL)
+- return -1;
+- /* result can be: "name: Command not found" */
+- retval = (*p != NUL && strstr((char *)p, "not found") == NULL);
+- vim_free(p);
+- return retval;
+- }
+-
+- /*
+- * Check what "name" is:
+- * NODE_NORMAL: file or directory (or doesn't exist)
+- * NODE_WRITABLE: writable device, socket, fifo, etc.
+- * NODE_OTHER: non-writable things
+- */
+- int
+- mch_nodetype(name)
+- char_u *name;
+- {
+- /* TODO */
+- return NODE_NORMAL;
+- }
+-
+- void
+- mch_early_init()
+- {
+- /* Turn off all the horrible filename munging in UnixLib. */
+- int __riscosify_control = __RISCOSIFY_NO_PROCESS;
+- }
+-
+- void
+- mch_exit(r)
+- int r;
+- {
+- settmode(TMODE_COOK);
+- exiting = TRUE;
+- out_flush();
+- ml_close_all(TRUE); /* remove all memfiles */
+-
+- #ifdef FEAT_GUI
+- if (gui.in_use)
+- gui_exit(r);
+- #endif
+- swi(OS_NewLine);
+- if (old_escape_state != -1)
+- swi(OS_Byte, 229, old_escape_state, 0);
+- if (old_cursor_state != -1)
+- swi(OS_Byte, 4, old_cursor_state);
+- exit(r);
+- }
+-
+- void
+- mch_settmode(tmode)
+- int tmode; /* TMODE_RAW or TMODE_COOK */
+- {
+- if (tmode == TMODE_COOK)
+- {
+- ro_line_mode = TRUE;
+- return;
+- }
+-
+- ro_line_mode = FALSE;
+-
+- if (term_console)
+- {
+- /* Block cursor. */
+- swi(OS_WriteN,
+- "\027\000\012\000\000\000\000\000\000\000",
+- 10);
+-
+- /* Disable the standard cursor key actions. */
+- swi(OS_Byte, 4, 1);
+- if (old_cursor_state == -1)
+- old_cursor_state = r1;
+- }
+-
+- /* Stop Escape from quitting Vim! */
+- swi(OS_Byte, 229, 1, 0);
+- if (old_escape_state == -1)
+- old_escape_state = r1;
+- }
+-
+- /*
+- * set mouse clicks on or off (only works for xterms)
+- */
+- void
+- mch_setmouse(on)
+- int on;
+- {
+- }
+-
+- /*
+- * set screen mode, always fails.
+- */
+- /* ARGSUSED */
+- int
+- mch_screenmode(arg)
+- char_u *arg;
+- {
+- EMSG(_(e_screenmode));
+- return FAIL;
+- }
+-
+- /*
+- * Try to get the current window size.
+- * Return OK when size could be determined, FAIL otherwise.
+- * Simply return results stored by mch_init() if we are the
+- * machine's console. If not, we don't know how big the screen is.
+- */
+- int
+- mch_get_shellsize()
+- {
+- /* if size changed: screenalloc will allocate new screen buffers */
+- return term_console ? OK : FAIL;
+- }
+-
+- /*
+- * Can't change the size.
+- * Assume the user knows what he's doing and use the new values.
+- */
+- void
+- mch_set_shellsize()
+- {
+- /* Assume the user knows what he's doing and use the new values. */
+- }
+-
+- /*
+- * Rows and/or Columns has changed.
+- */
+- void
+- mch_new_shellsize()
+- {
+- /* Nothing to do. */
+- }
+-
+- int
+- mch_call_shell(cmd, options)
+- char_u *cmd;
+- int options; /* SHELL_*, see vim.h */
+- {
+- int retval;
+- int tmode = cur_tmode;
+-
+- if (cmd == NULL)
+- cmd = (char_u *) "GOS";
+-
+- #ifdef FEAT_GUI
+- if (gui.in_use)
+- return gui_mch_call_shell(cmd, options);
+- #endif
+- if (options & SHELL_COOKED)
+- settmode(TMODE_COOK); /* set to normal mode */
+- MSG_PUTS("\n");
+-
+- /* I don't even want to think about what UnixLib must
+- * be doing to allow this to work...
+- */
+- retval = system(cmd);
+- if (retval && !(options & SHELL_SILENT))
+- EMSG(strerror(EOPSYS)); /* Doesn't seem to set errno? */
+-
+- swi(OS_Byte, 229, 1, 0); /* Re-disable escape */
+- if (tmode == TMODE_RAW)
+- settmode(TMODE_RAW); /* set to raw mode */
+- return retval ? FAIL : OK;
+- }
+-
+- /*
+- * Check for Escape being pressed right now.
+- * [ different if !term_console? ]
+- */
+- void
+- mch_breakcheck()
+- {
+- if (xswi(OS_Byte, 121, 0xf0) & v_flag)
+- return;
+- if (r1 == 0xff)
+- {
+- got_int = TRUE;
+- swi(OS_Byte, 15, 1); /* Flush input buffer */
+- }
+- }
+-
+- /*
+- * Recursively expand one path component into all matching files and/or
+- * directories.
+- * "path" has backslashes before chars that are not to be expanded.
+- * Return the number of matches found.
+- */
+- int
+- mch_expandpath(gap, path, flags)
+- garray_T *gap; /* Grow array for results. */
+- char_u *path;
+- int flags; /* EW_* flags */
+- {
+- int got; /* Number of matches. */
+- char_u *pattern;
+-
+- /* Plan:
+- *
+- * 1) Get first part of path - no wildcards
+- * 2) Get next path element (wildcarded)
+- * 3) Get rest of path
+- *
+- * If (3) is nothing then only the leaf is wildcarded - add to gap
+- * Otherwise call recursively for each path in (2), passing (3)
+- *
+- * This is just the header function.
+- */
+-
+- /* We must be able to modifiy path, so make a copy */
+- pattern = vim_strsave(path);
+- if (pattern == NULL)
+- return 0;
+- got = expand_section(gap, (char_u *)"", pattern, flags);
+- vim_free(pattern);
+- return got;
+- }
+-
+- /*
+- * expand_section(gap, "$.Dir1.Dir2", "ABBA*.myleaf##")
+- *
+- * calls expand_section(gap, "$.Dir1.Dir2.ABBA_Gold", "myleaf##")
+- * and expand_section(gap, "$.Dir1.Dir2.ABBA_Live", "myleaf##")
+- *
+- * If rest is just a leaf then all matches are added to gap.
+- *
+- * Returns number of items added to gap.
+- */
+- int
+- expand_section(gap, root, rest, flags)
+- garray_T *gap;
+- char_u *root; /* Non-wildcarded path to search */
+- char_u *rest; /* Wildcarded remainder of path */
+- int flags; /* Add dirs/files/missing objects. */
+- {
+- static char_u buf[MAXPATHL]; /* Temporary buffer. */
+- char_u dir[MAXPATHL];
+- int start_element = -1; /* Start of wildcarded element */
+- char_u c;
+- int i;
+- int got, dir_pos;
+- int buflen; /* Chars used in buf[] */
+- int colon = 0; /* Dir ends in ':' */
+-
+- buflen = strlen(root);
+- STRNCPY(buf, root, buflen); /* Copy root into buffer. */
+-
+- /*
+- * Find end of nonwildcarded section.
+- * Count ':' as a path sep since Vim:Bug* is a valid pathname.
+- */
+-
+- for (i = 0; c = rest[i]; i++)
+- {
+- if (c == PATHSEP)
+- {
+- start_element = i;
+- colon = 0;
+- }
+- if (c == ':')
+- {
+- start_element = i + 1;
+- colon = 1;
+- }
+- if (c == '#' || c == '*')
+- break;
+- }
+- if (c == 0)
+- start_element = i;
+-
+- /*
+- * start_element +> terminator for non-wildcarded section.
+- * Transfer this bit into buf.
+- */
+- if (buflen + start_element + 4 >= MAXPATHL)
+- return 0; /* Buffer full */
+- if (start_element >= 0)
+- {
+- if (*root && !colon)
+- buf[buflen++] = PATHSEP;
+- strncpy(buf + buflen, rest, start_element);
+- buflen += start_element;
+- }
+- buf[buflen] = 0;
+-
+- /*
+- * Did we reach the end of the string without hitting any wildcards?
+- */
+- if (c == 0)
+- {
+- /* Yes - add combined path to grow array and return. */
+- addfile(gap, buf, flags);
+- return 1;
+- }
+-
+- if (start_element < 0 || !colon)
+- start_element++;
+- rest += start_element;
+-
+- /*
+- * rest does contain wildcards if we get here.
+- *
+- * Now : have we reached the leaf names part yet?
+- * If so, add all matches (files and dirs) to gap.
+- * If not, get next path element and scan all matching directories.
+- */
+-
+- start_element = -1;
+- for (i = 0; rest[i]; i++)
+- {
+- if (rest[i] == '.')
+- {
+- start_element = i;
+- rest[i] = 0; /* Break string here. */
+- break;
+- }
+- }
+-
+- /* If start_element is -1 then we are matching leaf names */
+-
+- r3 = 0; /* Number of objs read. */
+- dir_pos = 0; /* Position through directory. */
+- got = 0; /* Files added so far. */
+- while (dir_pos != -1)
+- {
+- buf[buflen] = 0;
+- if (xswi(OS_GBPB, 9,
+- buf, /* Directory to scan. */
+- buf + buflen + (1 - colon), /* Buffer for result. */
+- 1, /* Number of objects to read. */
+- dir_pos, /* Search position. */
+- MAXPATHL - 2 - buflen, /* Size of result buffer. */
+- rest) /* Wildcarded leafname. */
+- & v_flag)
+- {
+- EMSG(r0 + 4);
+- r4 = -1;
+- }
+- dir_pos = r4; /* r4 corrupted by addfile() */
+- if (r3 > 0)
+- {
+- char_u *path = buf;
+- if (buflen == 0)
+- path++; /* Don't do '.File' */
+- else if (!colon)
+- buf[buflen] = '.'; /* Join path and leaf */
+-
+- /* Path -> full path of object found */
+- if (start_element == -1)
+- {
+- addfile(gap, path, flags);
+- got++;
+- }
+- else
+- {
+- /* Scan into subdirectories and images; ignore files */
+- swi(OS_File, 17, path);
+- if (r0 == 2 || r0 == 3)
+- got += expand_section(gap,
+- path,
+- rest + start_element + 1,
+- flags);
+- }
+- }
+- }
+-
+- /* Restore the dot if we removed it. */
+- if (start_element >= 0)
+- rest[start_element] = '.';
+- return got;
+- }
+-
+- /*
+- * mch_expand_wildcards() - this code does wild-card pattern matching using
+- * the shell. It isn't used under RISC OS.
+- *
+- * return OK for success, FAIL for error (you may lose some memory) and put
+- * an error message in *file.
+- *
+- * num_pat is number of input patterns
+- * pat is array of pointers to input patterns
+- * num_file is pointer to number of matched file names
+- * file is pointer to array of pointers to matched file names
+- */
+- int
+- mch_expand_wildcards(num_pat, pat, num_file, file, flags)
+- int num_pat;
+- char_u **pat;
+- int *num_file;
+- char_u ***file;
+- int flags; /* EW_* flags */
+- {
+- /* This doesn't get called unless SPECIAL_WILDCHAR is defined. */
+- return FAIL;
+- }
+-
+- /*
+- * Return TRUE if "p" contains wildcards which can be expanded by
+- * mch_expandpath().
+- */
+- int
+- mch_has_exp_wildcard(p)
+- char_u *p;
+- {
+- if (vim_strpbrk((char_u *)"*#", p))
+- return TRUE;
+- return FALSE;
+- }
+-
+- /* Return TRUE if "p" contains wildcards. */
+- int
+- mch_has_wildcard(p)
+- char_u *p;
+- {
+- if (vim_strpbrk((char_u *)"*#`", p))
+- return TRUE;
+- return FALSE;
+- }
+-
+- int /* see Unix unlink(2) */
+- mch_remove(file)
+- char_u *file; /* Name of file to delete. */
+- {
+- if (xswi(OS_FSControl, 27, file, 0, 0) & v_flag)
+- return EXIT_FAILURE;
+- return EXIT_SUCCESS;
+- }
+-
+- /* Try to make existing scripts work without modification.
+- * Return a pointer to the new string (freed by caller), or NULL
+- *
+- * Two main cases:
+- * - Absolute : $VIM/syntax/help.vim
+- * - Relative : Adfs::4.$.!Vim.Resources.Syntax/help.vim
+- */
+- char_u *
+- mch_munge_fname(fname)
+- char_u *fname;
+- {
+- char_u c;
+- int len;
+- char_u *retval;
+-
+- retval = fname = vim_strsave(fname);
+- if (fname == NULL)
+- return NULL;
+-
+- if (strncmp(fname, "$VIM/", 5) == 0)
+- {
+- strncpy(fname, "Vim:", 4);
+- for (fname += 5; c = *fname; fname++)
+- {
+- if (c == '.')
+- break;
+- if (c == '/')
+- fname[-1] = '.';
+- else
+- fname[-1] = c;
+- }
+- fname[-1] = '\0';
+- }
+- else
+- {
+- /* Check to see if the file exists without modification. */
+- if (xswi(OS_File, 17, fname) & v_flag)
+- r0 == 0; /* Invalid filename? */
+- if (r0)
+- return retval;
+-
+- len = strlen(fname);
+- if (strcmp(fname + len - 4, ".vim") == 0)
+- {
+- fname[len - 4] = '\0';
+- for (; c = *fname; fname++)
+- {
+- if (c == '/')
+- *fname = '.';
+- }
+- }
+- }
+- return retval;
+- }
+-
+- /* QuickFix reads munged names from the error file.
+- * Correct them.
+- */
+- int
+- ro_buflist_add(old_name)
+- char_u *old_name; /* Name of file found by quickfix */
+- {
+- char_u *fname;
+- char_u *leaf; /* Pointer to start of leaf in old_name */
+- char_u *ptr;
+- char_u c;
+- int retval;
+-
+- if (old_name == NULL)
+- return buflist_add(NULL, 0);
+-
+- /* Copy the name so we can mess around with it. */
+- fname = vim_strsave(old_name);
+- if (fname == NULL)
+- /* Out of memory - can't modify name */
+- return buflist_add(old_name, 0);
+-
+- /* Change `dir/main.c' into `dir.c.main' */
+- leaf = fname;
+- for (ptr = fname; c = *ptr; ptr++)
+- {
+- if (c == '/')
+- {
+- leaf = ptr + 1;
+- *ptr = '.';
+- }
+- else if (c == '.')
+- break;
+- }
+- if (c == '.')
+- {
+- /* Change `main.c' into `c.main'
+- * | |
+- * leaf ptr
+- */
+- ptr += old_name - fname;
+- *ptr = '\0';
+- sprintf(leaf,
+- "%s.%s",
+- ptr + 1,
+- leaf - fname + old_name);
+- }
+-
+- retval = buflist_add(fname, 0);
+- free(fname);
+- return retval;
+- }
+-
+- /* Change the current directory.
+- * Strip trailing dots to make it easier to use with filename completion.
+- * Return 0 for success, -1 for failure.
+- */
+- int
+- mch_chdir(dir)
+- char_u *dir;
+- {
+- int length;
+- int retval;
+- char_u *new_dir;
+-
+- if (p_verbose >= 5)
+- {
+- verbose_enter();
+- smsg((char_u *)"chdir(%s)", dir);
+- verbose_leave();
+- }
+- length = strlen(dir);
+- if (dir[length - 1] != '.')
+- return chdir(dir); /* No trailing dots - nothing to do. */
+- new_dir = vim_strsave(dir);
+- if (new_dir == NULL)
+- return chdir(dir); /* Can't allocate memory. */
+-
+- while (new_dir[--length] == '.')
+- new_dir[length] = '\0';
+-
+- retval = chdir(new_dir);
+- vim_free(new_dir);
+- return retval;
+- }
+-
+- /* Examine the named file, and set the 'osfiletype' option
+- * (in curbuf) to the file's type.
+- */
+- void
+- mch_read_filetype(file)
+- char_u *file;
+- {
+- int type;
+- char_u type_string[9];
+- int i;
+-
+- if (xswi(OS_File, 23, file) & v_flag)
+- type = 0xfff; /* Default to Text */
+- else
+- type = r6;
+-
+- /* Type is the numerical value - see if we have a textual equivalent */
+- swi(OS_FSControl, 18, 0, type);
+- ((int *) type_string)[0] = r2;
+- ((int *) type_string)[1] = r3;
+- type_string[8] = 0;
+- for (i = 0; type_string[i] > ' '; i++)
+- ;
+- type_string[i] = 0;
+-
+- set_string_option_direct("osfiletype", -1, type_string, OPT_FREE, 0);
+- return;
+- }
+-
+- void
+- mch_set_filetype(file, type)
+- char_u *file;
+- char_u *type;
+- {
+- if (xswi(OS_FSControl, 31, type) & v_flag)
+- {
+- EMSG(_("E366: Invalid 'osfiletype' option - using Text"));
+- r2 = 0xfff;
+- }
+-
+- swi(OS_File, 18, file, r2);
+- }
+-
+- /* Return TRUE if the file's type matches 'type'
+- * RISC OS types always start with '&'
+- */
+- int
+- mch_check_filetype(fname, type)
+- char_u *fname;
+- char_u *type;
+- {
+- int value;
+- char *end;
+-
+- if (*type != '&')
+- return FALSE;
+-
+- value = strtol(type + 1, &end, 16);
+- if (*end)
+- return FALSE; /* Invalid type (report error?) */
+-
+- if (xswi(OS_File, 23, fname) & v_flag)
+- return FALSE; /* Invalid filename? */
+-
+- return (r0 && r6 == value);
+- }
+--- 0 ----
+*** ../vim-7.3.186/runtime/doc/os_risc.txt 2010-08-15 21:57:16.000000000 +0200
+--- runtime/doc/os_risc.txt 2011-05-10 16:19:25.000000000 +0200
+***************
+*** 1,322 ****
+! *os_risc.txt* For Vim version 7.3. Last change: 2010 Aug 07
+
+
+ VIM REFERENCE MANUAL by Thomas Leonard
+
+
+ *riscos* *RISCOS* *RISC-OS*
+! This file contains the particularities for the RISC OS version of Vim.
+
+- The RISC OS port is a completely new port and is not based on the old "archi"
+- port.
+
+- 1. File locations |riscos-locations|
+- 2. Filename munging |riscos-munging|
+- 3. Command-line use |riscos-commandline|
+- 4. Desktop (GUI) use |riscos-gui|
+- 5. Remote use (telnet) |riscos-remote|
+- 6. Temporary files |riscos-temp-files|
+- 7. Interrupting |riscos-interrupt|
+- 8. Memory usage |riscos-memory|
+- 9. Filetypes |riscos-filetypes|
+- 10. The shell |riscos-shell|
+- 11. Porting new releases |riscos-porting|
+-
+- If I've missed anything, email me and I'll try to fix it. In fact, even if I
+- haven't missed anything then email me anyway to give me some confidence that it
+- actually works!
+-
+- Thomas Leonard <tal197@ecs.soton.ac.uk>
+-
+- [these URLs no longer work...]
+- Port homepage: http://www.ecs.soton.ac.uk/~tal197/
+- or try: http://www.soton.ac.uk/~tal197/
+-
+- ==============================================================================
+- *riscos-locations*
+- 1. File locations
+-
+- The Vim executable and shared resource files are all stored inside the !Vim
+- application directory.
+-
+- When !Vim is first seen by the filer, it aliases the *vi and *ex commands to
+- run the command-line versions of Vim (see |riscos-commandline|).
+-
+- !Vim.Resources and !Vim.Resources2 contain the files from the standard Vim
+- distribution, but modified slightly to work within the limits of ADFS, plus
+- some extra files such as the window templates.
+-
+- User choices are read from "Choices:*" and are saved to "<Choices$Write>.*".
+- If you have the new !Boot structure then these should be set up already. If
+- not, set Choices$Path to a list of directories to search when looking for
+- user configuration files. Set Choices$Write to the directory you want files
+- to be saved into (so your search patterns and marks can be remembered between
+- sessions).
+-
+- ==============================================================================
+- *riscos-munging*
+- 2. Filename munging
+-
+- All pathname munging is disabled by default, so Vim should behave like a
+- normal RISC OS application now. So, if you want to edit "doc/html" then you
+- actually type "*vi doc/html".
+-
+- The only times munging is done is when:
+-
+- - Searching included files from C programs, since these are always munged.
+- See |[I|.
+- Note: make sure you are in the right directory when you use this
+- command (i.e. the one with subdirectories "c" and "h").
+-
+- - Sourcing files using |:so|.
+- Paths starting "$VIM/" are munged like this:
+-
+- $VIM/syntax/help.vim -> Vim:syntax.help
+-
+- Also, files ending in ".vim" have their extensions removed, and slashes
+- replaced with dots.
+-
+- Some tag files and script files may have to be edited to work under this port.
+-
+- ==============================================================================
+- *riscos-commandline*
+- 3. Command-line use
+-
+- To use Vim from the command-line use the "*vi" command (or "*ex" for
+- |Ex-mode|).
+-
+- Type "*vi -h" for a list of options.
+-
+- Running the command-line version of Vim in a large high-color mode may cause
+- the scrolling to be very slow. Either change to a mode with fewer colors or
+- use the GUI version.
+-
+- Also, holding down Ctrl will slow it down even more, and Ctrl-Shift will
+- freeze it, as usual for text programs.
+-
+- ==============================================================================
+- *riscos-gui*
+- 4. Desktop use
+-
+- Limitations:
+-
+- - Left scrollbars don't work properly (right and bottom are fine).
+- - Doesn't increase scroll speed if it gets behind.
+-
+- You can resize the window by dragging the lower-right corner, even though
+- there is no icon shown there.
+-
+- You can use the --rows and --columns arguments to specify the initial size of
+- the Vim window, like this: >
+-
+- *Vi -g --rows 20 --columns 80
+-
+- The global clipboard is supported, so you can select some text and then
+- paste it directly into another application (provided it supports the
+- clipboard too).
+-
+- Clicking Menu now opens a menu like a normal RISC OS program. Hold down Shift
+- when clicking Menu to paste (from the global clipboard).
+-
+- Dragging a file to the window replaces the CURRENT buffer (the one with the
+- cursor, NOT the one you dragged to) with the file.
+-
+- Dragging with Ctrl held down causes a new Vim window to be opened for the
+- file (see |:sp|).
+-
+- Dragging a file in with Shift held down in insert mode inserts the pathname of
+- the file.
+-
+- :browse :w opens a standard RISC OS save box.
+- :browse :e opens a directory viewer.
+-
+- For fonts, you have the choice of the system font, an outline font, the system
+- font via ZapRedraw and any of the Zap fonts via ZapRedraw: >
+-
+- :set guifont=
+- < To use the system font via the VDU drivers. Supports
+- bold and underline.
+- >
+- :set guifont=Corpus.Medium
+- < Use the named outline font. You can use any font, but
+- only monospaced ones like Corpus look right.
+- >
+- :set guifont=Corpus.Medium:w8:h12:b:i
+- < As before, but with size of 8 point by 12 point, and
+- in bold italic.
+- If only one of width and height is given then that
+- value is used for both. If neither is given then 10
+- point is used.
+-
+- Thanks to John Kortink, Vim can use the ZapRedraw module. Start the font name
+- with "!" (or "!!" for double height), like this: >
+-
+- :set guifont=!!
+- < Use the system font, but via ZapRedraw. This gives a
+- faster redraw on StrongARM processors, but you can't
+- get bold or italic text. Double height.
+- >
+- :set guifont=!script
+- < Uses the named Zap font (a directory in VimFont$Path).
+- The redraw is the same speed as for "!!", but you get
+- a nicer looking font.
+- Only the "man+" and "script" fonts are supplied
+- currently, but you can use any of the Zap fonts if
+- they are in VimFont$Path.
+- Vim will try to load font files "0", "B", "I" and "IB"
+- from the named directory. Only "0" (normal style) MUST
+- be present. Link files are not currently supported.
+-
+- Note that when using ZapRedraw the edit bar is drawn in front of the character
+- you are on rather than behind it. Also redraw is incorrect for screen modes
+- with eigen values of 0. If the font includes control characters then you can
+- get Vim to display them by changing the 'isprint' option.
+-
+- If you find the scrolling is too slow on your machine, try experimenting
+- with the 'scrolljump' and 'ttyscroll' options.
+-
+- In particular, StrongARM users may find that: >
+-
+- :set ttyscroll=0
+-
+- makes scrolling faster in high-color modes.
+-
+- =============================================================================
+- *riscos-remote*
+- 5. Remote use (telnet)
+-
+- I have included a built-in termcap entry, but you can edit the termcap file to
+- allow other codes to be used if you want to use Vim from a remote terminal.
+-
+- Although I do not have an internet connection to my Acorn, I have managed to
+- run Vim in a FreeTerm window using the loopback connection.
+-
+- It seems to work pretty well now, using "*vi -T ansi".
+-
+- ==============================================================================
+- *riscos-temp-files*
+- 6. Temporary files
+-
+- If Vim crashes then the swap and backup files (if any) will be in the
+- directories set with the 'directory' and 'bdir' options. By default the swap
+- files are in <Wimp$ScrapDir> (i.e. inside !Scrap) and backups are in the
+- directory you were saving to. Vim will allow you to try and recover the file
+- when you next try to edit it.
+-
+- To see a list of swap files, press <F12> and type "*vi -r".
+-
+- Vim no longer brings up ATTENTION warnings if you try to edit two files with
+- the same name in different directories.
+-
+- However, it also no longer warns if you try to edit the same file twice (with
+- two copies of Vim), though you will still be warned when you save that the
+- datestamp has changed.
+-
+- ==============================================================================
+- *riscos-interrupt*
+- 7. Interrupting
+-
+- To break out of a looping macro, or similar, hold down Escape in the
+- command-line version, or press CTRL-C in the GUI version.
+-
+- ==============================================================================
+- *riscos-memory*
+- 8. Memory usage
+-
+- Vim will use dynamic areas on RISC OS 3.5 or later. If you can use them on
+- older machines then edit the !RunTxt and GVim files. I don't know what UnixLib
+- does by default on these machines so I'm playing safe.
+-
+- It doesn't work at all well without dynamic areas, since it can't change its
+- memory allocation once running. Hence you should edit "!Vim.GVim" and
+- "!Vim.!RunTxt" to choose the best size for you. You probably need at least
+- about 1400K.
+-
+- ==============================================================================
+- *riscos-filetypes*
+- 9. Filetypes
+-
+- You can now specify that autocommands are only executed for files of certain
+- types. The filetype is given in the form &xxx, when xxx is the filetype.
+-
+- Filetypes must be specified by number (e.g. &fff for Text).
+-
+- The system has changed from version 5.3. The new sequence of events is:
+-
+- - A file is loaded. |'osfiletype'| is set to the RISC OS filetype.
+- - Based on the filetype and pathname, Vim will try to set |'filetype'| to the
+- Vim-type of the file.
+- - Setting this option may load syntax files and perform other actions.
+- - Saving the file will give it a filetype of |'osfiletype'|.
+-
+- Some examples may make this clearer:
+-
+- Kind of file loaded osfiletype filetype ~
+- C code "c.hellow" Text (&fff) C
+- LaTeX document LaTeX (&2a8) TeX
+- Draw document DrawFile (&aff) (not changed)
+-
+- ==============================================================================
+- *riscos-shell*
+- 10. The shell
+-
+- - Bangs (!s) are only replaced if they are followed by a space or end-of-line,
+- since many pathnames contain them.
+-
+- - You can prefix the command with "~", which stops any output from being
+- displayed. This also means that you don't have to press <Enter> afterwards,
+- and stops the screen from being redrawn. {only in the GUI version}
+-
+- ==============================================================================
+- *riscos-porting*
+- 11. Porting new releases to RISC OS
+-
+- Downloading everything you need:
+-
+- - Get the latest source distribution (see www.vim.org)
+- - Get the runtime environment files (e.g. these help files)
+- - Get the RISC OS binary distribution (if possible)
+-
+-
+- Unarchiving:
+-
+- - Create a raFS disk and put the archives on it
+- - Un-gzip them
+- - Un-tar them (*tar xELf 50 archive/tar)
+-
+-
+- Recompiling the sources:
+-
+- - Create c, s, and h directories.
+- - Put all the header files in "h". \
+- - Put all the C files in "c". | And lose the extensions
+- - Put the assembler file ("swis/s") in "s". /
+- - Rename all the files in "proto" to "h", like this:
+- raFS::VimSrc.source.proto.file/pro
+- becomes
+- raFS::VimSrc.source.h.file_pro
+- - In the files "h.proto" and "c.termlib", search and replace
+- .pro"
+- with
+- _pro.h"
+- - Create a simple Makefile if desired and do "*make -k".
+- Use "CC = gcc -DRISCOS -DUSE_GUI -O2 -x c" in the Makefile.
+- - Save the binary as !Vim.Vim in the binary distribution.
+-
+-
+- Updating the run-time environment:
+-
+- - Replace old or missing files inside !Vim.Resources with the
+- new files.
+- - Remove files in "doc" not ending in "/txt", except for "tags".
+- - Lose the extensions from the files in "doc".
+- - Edit the "doc.tags" file. Remove extensions from the second column: >
+- :%s/^\(.[^\t]*\t.*\)\.txt\t/\1\t/
+- - Remove extensions from the syntax files. Split them into two directories
+- to avoid the 77 entry limit on old ADFS filesystems.
+- - Edit "Vim:FileType" to match "*.c.*" as well as "*/c" and so on.
+- Add filetype checking too.
+- - Edit "Vim:Menu" and remove all the keys from the menus: >
+- :%s/<Tab>[^ \t]*//
+- <
+ vim:tw=78:ts=8:ft=help:norl:
+--- 1,12 ----
+! *os_risc.txt* For Vim version 7.3. Last change: 2011 May 10
+
+
+ VIM REFERENCE MANUAL by Thomas Leonard
+
+
+ *riscos* *RISCOS* *RISC-OS*
+! The RISC OS support has been removed from Vim with patch 7.3.187.
+! If you would like to use Vim on RISC OS get the files from before that patch.
+
+
+ vim:tw=78:ts=8:ft=help:norl:
+*** ../vim-7.3.186/src/version.c 2011-05-10 16:12:40.000000000 +0200
+--- src/version.c 2011-05-10 16:37:20.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 187,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+81. At social functions you introduce your husband as "my domain server."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.188 b/source/ap/vim/patches/7.3.188
new file mode 100644
index 000000000..f58454304
--- /dev/null
+++ b/source/ap/vim/patches/7.3.188
@@ -0,0 +1,184 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.188
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.188
+Problem: More RISC OS files to remove.
+Solution: Remove them. Update the file list.
+Files: src/proto/gui_riscos.pro, src/proto/os_riscos.pro, Filelist
+
+
+*** ../vim-7.3.187/src/proto/gui_riscos.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/gui_riscos.pro 1970-01-01 01:00:00.000000000 +0100
+***************
+*** 1,66 ****
+- /* Prototypes for gui_riscos.c
+- * Based on gui_x11_pro.h (10 March 2002 version)
+- */
+- void gui_mch_prepare __ARGS((int *argc, char **argv));
+- int gui_mch_init_check __ARGS((void));
+- int gui_mch_init __ARGS((void));
+- void gui_mch_uninit __ARGS((void));
+- void gui_mch_new_colors __ARGS((void));
+- int gui_mch_open __ARGS((void));
+- void gui_init_tooltip_font __ARGS((void));
+- void gui_init_menu_font __ARGS((void));void gui_mch_exit __ARGS((int rc));
+- int gui_mch_get_winpos __ARGS((int *x, int *y));
+- void gui_mch_set_winpos __ARGS((int x, int y));
+- void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height));
+- void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
+- int gui_mch_init_font __ARGS((char_u *font_name, int do_fontset));
+- GuiFont gui_mch_get_font __ARGS((char_u *name, int giveErrorIfMissing));
+- int gui_mch_adjust_charheight __ARGS((void));
+- void gui_mch_set_font __ARGS((GuiFont font));
+- void gui_mch_set_fontset __ARGS((GuiFontset fontset));
+- void gui_mch_free_font __ARGS((GuiFont font));
+- void gui_mch_free_fontset __ARGS((GuiFontset fontset));
+- GuiFontset gui_mch_get_fontset __ARGS((char_u *name, int giveErrorIfMissing, int fixed_width));
+- guicolor_T gui_mch_get_color __ARGS((char_u *reqname));
+- void gui_mch_set_fg_color __ARGS((guicolor_T color));
+- void gui_mch_set_bg_color __ARGS((guicolor_T color));
+- void gui_mch_draw_string __ARGS((int row, int col, char_u *s, int len, int flags));
+- int gui_mch_haskey __ARGS((char_u *name));
+- void gui_mch_beep __ARGS((void));
+- void gui_mch_flash __ARGS((int msec));
+- void gui_mch_invert_rectangle __ARGS((int r, int c, int nr, int nc));
+- void gui_mch_iconify __ARGS((void));
+- void gui_mch_set_foreground __ARGS((void));
+- void gui_mch_draw_hollow_cursor __ARGS((guicolor_T color));
+- void gui_mch_draw_part_cursor __ARGS((int w, int h, guicolor_T color));
+- void gui_mch_update __ARGS((void));
+- int gui_mch_wait_for_chars __ARGS((long wtime));
+- void gui_mch_flush __ARGS((void));
+- void gui_mch_clear_block __ARGS((int row1, int col1, int row2, int col2));
+- void gui_mch_clear_all __ARGS((void));
+- void gui_mch_delete_lines __ARGS((int row, int num_lines));
+- void gui_mch_insert_lines __ARGS((int row, int num_lines));
+- void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
+- int clip_mch_own_selection __ARGS((VimClipboard *cbd));
+- void clip_mch_request_selection __ARGS((VimClipboard *cbd));
+- void clip_mch_set_selection __ARGS((VimClipboard *cbd));
+- void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
+- void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden));
+- void gui_mch_draw_menubar __ARGS((void));
+- void gui_mch_set_blinking __ARGS((long waittime, long on, long off));
+- void gui_mch_stop_blink __ARGS((void));
+- void gui_mch_start_blink __ARGS((void));
+- void process_event __ARGS((int event, int *block));
+- void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
+- long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
+- void gui_mch_getmouse __ARGS((int *x, int *y));
+- void gui_mch_setmouse __ARGS((int x, int y));
+- void gui_mch_drawsign __ARGS((int row, int col, int typenr));
+- void gui_mch_destroy_sign __ARGS((XImage *sign));
+- void gui_mch_mousehide __ARGS((int hide));
+- void mch_set_mouse_shape __ARGS((int shape));
+- void gui_mch_menu_set_tip __ARGS((vimmenu_T *menu));
+-
+- void ro_redraw_title __ARGS((int window));
+- int ro_ok_to_quit __ARGS((void));
+- /* vim: set ft=c : */
+--- 0 ----
+*** ../vim-7.3.187/src/proto/os_riscos.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/os_riscos.pro 1970-01-01 01:00:00.000000000 +0100
+***************
+*** 1,49 ****
+- /* os_riscos.c */
+- void mch_write __ARGS((char_u *s, int len));
+- int mch_inchar __ARGS((char_u *buf, int maxlen, long wtime, int tb_change_cnt));
+- int mch_char_avail __ARGS((void));
+- long_u mch_avail_mem __ARGS((int special));
+- void mch_delay __ARGS((long msec, int ignoreinput));
+- void mch_suspend __ARGS((void));
+- void mch_init __ARGS((void));
+- int mch_check_win __ARGS((int argc, char **argv));
+- int mch_input_isatty __ARGS((void));
+- int mch_can_restore_title __ARGS((void));
+- int mch_can_restore_icon __ARGS((void));
+- void mch_settitle __ARGS((char_u *title, char_u *icon));
+- void mch_restore_title __ARGS((int which));
+- int mch_get_user_name __ARGS((char_u *s, int len));
+- void mch_get_host_name __ARGS((char_u *s, int len));
+- long mch_get_pid __ARGS((void));
+- int mch_dirname __ARGS((char_u *buf, int len));
+- int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
+- int mch_isFullName __ARGS((char_u *fname));
+- long mch_getperm __ARGS((char_u *name));
+- int mch_setperm __ARGS((char_u *name, long perm));
+- void mch_hide __ARGS((char_u *name));
+- int mch_isdir __ARGS((char_u *name));
+- int mch_can_exe __ARGS((char_u *name));
+- int mch_nodetype __ARGS((char_u *name));
+- void mch_early_init __ARGS((void));
+- void mch_exit __ARGS((int r));
+- void mch_settmode __ARGS((int tmode));
+- void mch_setmouse __ARGS((int on));
+- int mch_screenmode __ARGS((char_u *arg));
+- int mch_get_shellsize __ARGS((void));
+- void mch_set_shellsize __ARGS((void));
+- void mch_new_shellsize __ARGS((void));
+- int mch_call_shell __ARGS((char_u *cmd, int options));
+- void mch_breakcheck __ARGS((void));
+- int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags));
+- int expand_section __ARGS((garray_T *gap, char_u *root, char_u *rest, int flags));
+- int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
+- int mch_has_exp_wildcard __ARGS((char_u *p));
+- int mch_has_wildcard __ARGS((char_u *p));
+- int mch_remove __ARGS((char_u *file));
+- char_u *mch_munge_fname __ARGS((char_u *fname));
+- int ro_buflist_add __ARGS((char_u *old_name));
+- int mch_chdir __ARGS((char_u *dir));
+- void mch_read_filetype __ARGS((char_u *file));
+- void mch_set_filetype __ARGS((char_u *file, char_u *type));
+- int mch_check_filetype __ARGS((char_u *fname, char_u *type));
+- /* vim: set ft=c : */
+--- 0 ----
+*** ../vim-7.3.187/Filelist 2011-03-22 18:10:34.000000000 +0100
+--- Filelist 2011-05-10 17:19:21.000000000 +0200
+***************
+*** 428,435 ****
+ README_os390.txt \
+ src/Make_mint.mak \
+ src/Make_ro.mak \
+- src/gui_riscos.c \
+- src/gui_riscos.h \
+ src/if_sniff.c \
+ src/infplist.xml \
+ src/link.390 \
+--- 428,433 ----
+***************
+*** 437,446 ****
+ src/os_beos.h \
+ src/os_beos.rsrc \
+ src/os_mint.h \
+- src/os_riscos.c \
+- src/os_riscos.h \
+- src/proto/gui_riscos.pro \
+- src/proto/os_riscos.pro \
+ src/os_vms_fix.com \
+ src/toolbar.phi \
+
+--- 435,440 ----
+*** ../vim-7.3.187/src/version.c 2011-05-10 16:41:13.000000000 +0200
+--- src/version.c 2011-05-10 17:20:50.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 188,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+83. Batteries in the TV remote now last for months.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.189 b/source/ap/vim/patches/7.3.189
new file mode 100644
index 000000000..f7a9667c7
--- /dev/null
+++ b/source/ap/vim/patches/7.3.189
@@ -0,0 +1,49 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.189
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.189 (after 7.3.186)
+Problem: Can't build without +clipboard feature. (Christian Ebert)
+Solution: Add the missing #ifdef.
+Files: src/normal.c
+
+
+*** ../vim-7.3.188/src/normal.c 2011-05-10 16:12:40.000000000 +0200
+--- src/normal.c 2011-05-10 17:25:26.000000000 +0200
+***************
+*** 1204,1212 ****
+--- 1204,1215 ----
+ #ifdef FEAT_EVAL
+ {
+ int regname = 0;
++
+ /* Adjust the register according to 'clipboard', so that when
+ * "unnamed" is present it becomes '*' or '+' instead of '"'. */
++ # ifdef FEAT_CLIPBOARD
+ adjust_clip_reg(&regname);
++ # endif
+ set_reg_var(regname);
+ }
+ #endif
+*** ../vim-7.3.188/src/version.c 2011-05-10 17:21:34.000000000 +0200
+--- src/version.c 2011-05-10 17:29:21.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 189,
+ /**/
+
+--
+If your nose runs, and your feet smell, you might be upside down.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.190 b/source/ap/vim/patches/7.3.190
new file mode 100644
index 000000000..4adef8ab0
--- /dev/null
+++ b/source/ap/vim/patches/7.3.190
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.190
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.190
+Problem: When there is a "containedin" syntax argument highlighting may be
+ wrong. (Radek)
+Solution: Reset current_next_list. (Ben Schmidt)
+Files: src/syntax.c
+
+
+*** ../vim-7.3.189/src/syntax.c 2011-04-11 16:56:29.000000000 +0200
+--- src/syntax.c 2011-05-19 12:02:43.000000000 +0200
+***************
+*** 2566,2571 ****
+--- 2566,2574 ----
+ #endif
+ update_si_attr(current_state.ga_len - 1);
+
++ /* nextgroup= should not match in the end pattern */
++ current_next_list = NULL;
++
+ /* what matches next may be different now, clear it */
+ next_match_idx = 0;
+ next_match_col = MAXCOL;
+*** ../vim-7.3.189/src/version.c 2011-05-10 17:29:28.000000000 +0200
+--- src/version.c 2011-05-19 12:13:28.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 190,
+ /**/
+
+--
+From "know your smileys":
+ :'-D Laughing so much that they're crying
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.191 b/source/ap/vim/patches/7.3.191
new file mode 100644
index 000000000..14b63cea0
--- /dev/null
+++ b/source/ap/vim/patches/7.3.191
@@ -0,0 +1,526 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.191
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.191
+Problem: Still some RISC OS stuff to remove.
+Solution: Remove files and lines. (Hong Xu)
+ Remove the 'osfiletype' option code.
+Files: README_extra.txt, src/Make_ro.mak, src/INSTALL, src/Makefile,
+ src/buffer.c, src/eval.c, src/feature.h, src/option.c,
+ src/option.h, src/structs.h, src/version.c, src/pty.c, Filelist
+
+
+*** ../vim-7.3.190/README_extra.txt 2010-08-15 21:57:32.000000000 +0200
+--- README_extra.txt 2011-05-19 12:35:16.000000000 +0200
+***************
+*** 13,21 ****
+
+ src/os_amiga.* Files for the Amiga port.
+
+- src/gui_riscos.*
+- src/os_riscos.* Files for the RISC OS port.
+-
+ src/gui_beos.*
+ src/os_beos.* Files for the BeOS port.
+
+--- 13,18 ----
+*** ../vim-7.3.190/src/Make_ro.mak 2010-08-15 21:57:27.000000000 +0200
+--- src/Make_ro.mak 1970-01-01 01:00:00.000000000 +0100
+***************
+*** 1,135 ****
+- #
+- # Makefile for Vim on RISC OS - Andy Wingate
+- #
+-
+- GCC = gcc -mthrowback
+- CFLAGS = -DRISCOS -DFEAT_GUI
+- CC = $(GCC) $(CFLAGS) -O2
+- # -DUP_BC_PC_EXTERN for term.c needed as BC defined in termlib.c and term.c
+-
+- TERMFLAG = -DUP_BC_PC_EXTERN
+-
+- ASMFLAGS = -throwback -objasm -gcc
+-
+- OBJS = o.buffer o.charset o.diff o.digraph o.edit o.eval o.ex_cmds o.ex_cmds2 \
+- o.ex_docmd o.ex_eval o.ex_getln o.fileio o.fold o.getchar \
+- o.hardcopy o.hashtab o.main o.mark o.mbyte \
+- o.memfile o.memline o.menu o.message o.misc1 o.misc2 o.move \
+- o.normal o.ops o.option o.popupmnu o.quickfix o.regexp o.screen \
+- o.search \
+- o.spell o.syntax o.tag o.term o.termlib o.ui o.undo o.version \
+- o.window o.os_riscos o.swis o.gui o.gui_riscos
+-
+- Vim: $(OBJS)
+- $(GCC) -o Vim $(OBJS)
+-
+- install: Vim
+- squeeze -v Vim @.!Vim.Vim
+-
+- clean:
+- create o.!fake! 0
+- wipe o.* ~cf
+- remove Vim
+-
+- o.swis: s.swis
+- as $(ASMFLAGS) -o o.swis s.swis
+-
+- # Rules for object files
+-
+- o.%: c.%
+- $(CC) -c $< -o $@
+-
+- o.buffer: c.buffer
+-
+- o.charset: c.charset
+-
+- o.digraph: c.digraph
+-
+- o.diff: c.diff
+-
+- o.edit: c.edit
+-
+- o.eval: c.eval
+-
+- o.ex_cmds: c.ex_cmds
+-
+- o.ex_cmds2: c.ex_cmds2
+-
+- o.ex_docmd: c.ex_docmd
+-
+- o.ex_eval: c.ex_eval
+-
+- o.ex_getln: c.ex_getln
+-
+- o.fileio: c.fileio
+-
+- o.fold: c.fold
+-
+- o.getchar: c.getchar
+-
+- o.hardcopy: c.hardcopy
+-
+- o.hashtab: c.hashtab
+-
+- o.gui: c.gui
+-
+- o.gui_riscos: c.gui_riscos
+-
+- o.main: c.main
+-
+- o.mark: c.mark
+-
+- o.mbyte: c.mbyte
+-
+- o.memfile: c.memfile
+-
+- o.memline: c.memline
+-
+- o.menu: c.menu
+-
+- o.message: c.message
+-
+- o.misc1: c.misc1
+-
+- o.misc2: c.misc2
+-
+- o.move: c.move
+-
+- o.normal: c.normal
+-
+- o.ops: c.ops
+-
+- o.option: c.option
+-
+- o.os_riscos: c.os_riscos
+-
+- o.pty: c.pty
+-
+- o.popupmnu: c.popupmnu
+-
+- o.quickfix: c.quickfix
+-
+- o.regexp: c.regexp
+-
+- o.screen: c.screen
+-
+- o.search: c.search
+-
+- o.spell: c.spell
+-
+- o.syntax: c.syntax
+-
+- o.tag: c.tag
+-
+- o.term: c.term
+- $(CC) $(TERMFLAG) -c c.term -o o.term
+-
+- o.termlib: c.termlib
+-
+- o.ui: c.ui
+-
+- o.undo: c.undo
+-
+- o.version: c.version
+-
+- o.window: c.window
+--- 0 ----
+*** ../vim-7.3.190/src/INSTALL 2010-08-15 21:57:28.000000000 +0200
+--- src/INSTALL 2011-05-19 12:36:17.000000000 +0200
+***************
+*** 6,14 ****
+ Contents:
+ 1. Generic
+ 2. Unix
+! 3. RISC OS
+! 4. OS/2 (with EMX 0.9b)
+! 5. Atari MiNT
+
+ See INSTALLami.txt for Amiga
+ See INSTALLmac.txt for Macintosh
+--- 6,13 ----
+ Contents:
+ 1. Generic
+ 2. Unix
+! 3. OS/2 (with EMX 0.9b)
+! 4. Atari MiNT
+
+ See INSTALLami.txt for Amiga
+ See INSTALLmac.txt for Macintosh
+***************
+*** 174,198 ****
+ ./configure --without-local-dir
+
+
+! 3. RISC OS
+! =============
+!
+! Much file renaming is needed before you can compile anything.
+! You'll need UnixLib to link against, GCC and GNU make.
+!
+! I suggest you get the RISC OS binary distribution, which includes the
+! Templates file and the loader.
+!
+! Try here: http://www.ecs.soton.ac.uk/~tal197
+!
+! Do
+! :help riscos
+!
+! within the editor for more information, or read the
+! ../runtime/doc/os_risc.txt help file.
+!
+!
+! 4. OS/2
+ =======
+
+ Summary:
+--- 173,179 ----
+ ./configure --without-local-dir
+
+
+! 3. OS/2
+ =======
+
+ Summary:
+***************
+*** 237,243 ****
+ Check ../runtime/doc/os_os2.txt for additional info on running Vim.
+
+
+! 5. Atari MiNT
+ =============
+
+ [NOTE: this is quite old, it might not work anymore]
+--- 218,224 ----
+ Check ../runtime/doc/os_os2.txt for additional info on running Vim.
+
+
+! 4. Atari MiNT
+ =============
+
+ [NOTE: this is quite old, it might not work anymore]
+*** ../vim-7.3.190/src/Makefile 2011-04-01 13:05:37.000000000 +0200
+--- src/Makefile 2011-05-19 12:37:52.000000000 +0200
+***************
+*** 29,35 ****
+ # - Uncomment the line "CONF_OPT_X = --without-x" if you have X11 but
+ # want to disable using X11 libraries. This speeds up starting Vim,
+ # but the window title will not be set and the X11 selection can not
+! # used.
+ # - Uncomment the line "CONF_OPT_XSMP = --disable-xsmp" if you have the
+ # X11 Session Management Protocol (XSMP) library (libSM) but do not
+ # want to use it.
+--- 29,35 ----
+ # - Uncomment the line "CONF_OPT_X = --without-x" if you have X11 but
+ # want to disable using X11 libraries. This speeds up starting Vim,
+ # but the window title will not be set and the X11 selection can not
+! # be used.
+ # - Uncomment the line "CONF_OPT_XSMP = --disable-xsmp" if you have the
+ # X11 Session Management Protocol (XSMP) library (libSM) but do not
+ # want to use it.
+***************
+*** 730,741 ****
+ ### USL for Unix Systems Laboratories (SYSV 4.2)
+ #EXTRA_DEFS = -DUSL
+
+- ### RISCos on MIPS without X11
+- #EXTRA_DEFS = -DMIPS
+-
+- ### RISCos on MIPS with X11
+- #EXTRA_LIBS = -lsun
+-
+ ### (6) A/UX 3.1.1 with gcc (Jim Jagielski)
+ #CC= gcc -D_POSIX_SOURCE
+ #CFLAGS= -O2
+--- 730,735 ----
+***************
+*** 1633,1639 ****
+ RSRC_DIR = os_mac_rsrc
+
+ PRO_MANUAL = os_amiga.pro os_msdos.pro os_win16.pro os_win32.pro \
+! os_mswin.pro os_beos.pro os_vms.pro os_riscos.pro $(PERL_PRO)
+
+ # Default target is making the executable and tools
+ all: $(VIMTARGET) $(TOOLS) languages $(GUI_BUNDLE)
+--- 1627,1633 ----
+ RSRC_DIR = os_mac_rsrc
+
+ PRO_MANUAL = os_amiga.pro os_msdos.pro os_win16.pro os_win32.pro \
+! os_mswin.pro os_beos.pro os_vms.pro $(PERL_PRO)
+
+ # Default target is making the executable and tools
+ all: $(VIMTARGET) $(TOOLS) languages $(GUI_BUNDLE)
+*** ../vim-7.3.190/src/buffer.c 2011-05-05 17:32:40.000000000 +0200
+--- src/buffer.c 2011-05-19 13:09:25.000000000 +0200
+***************
+*** 1808,1816 ****
+ #ifdef FEAT_AUTOCMD
+ clear_string_option(&buf->b_p_ft);
+ #endif
+- #ifdef FEAT_OSFILETYPE
+- clear_string_option(&buf->b_p_oft);
+- #endif
+ #ifdef FEAT_CINDENT
+ clear_string_option(&buf->b_p_cink);
+ clear_string_option(&buf->b_p_cino);
+--- 1808,1813 ----
+*** ../vim-7.3.190/src/eval.c 2011-05-10 16:41:13.000000000 +0200
+--- src/eval.c 2011-05-19 13:09:43.000000000 +0200
+***************
+*** 12076,12084 ****
+ #ifdef FEAT_OLE
+ "ole",
+ #endif
+- #ifdef FEAT_OSFILETYPE
+- "osfiletype",
+- #endif
+ #ifdef FEAT_PATH_EXTRA
+ "path_extra",
+ #endif
+--- 12076,12081 ----
+*** ../vim-7.3.190/src/feature.h 2010-08-15 21:57:31.000000000 +0200
+--- src/feature.h 2011-05-19 13:09:56.000000000 +0200
+***************
+*** 506,520 ****
+ #endif
+
+ /*
+- * +osfiletype filetype checking in autocommand patterns.
+- * Only on systems that support filetypes (RISC OS).
+- */
+- #if 0
+- # define FEAT_OSFILETYPE
+- # define DFLT_OFT "Text"
+- #endif
+-
+- /*
+ * +viminfo reading/writing the viminfo file. Takes about 8Kbyte
+ * of code.
+ * VIMINFO_FILE Location of user .viminfo file (should start with $).
+--- 506,511 ----
+*** ../vim-7.3.190/src/option.c 2011-04-28 17:24:54.000000000 +0200
+--- src/option.c 2011-05-19 13:11:42.000000000 +0200
+***************
+*** 140,148 ****
+ #define PV_MOD OPT_BUF(BV_MOD)
+ #define PV_MPS OPT_BUF(BV_MPS)
+ #define PV_NF OPT_BUF(BV_NF)
+- #ifdef FEAT_OSFILETYPE
+- # define PV_OFT OPT_BUF(BV_OFT)
+- #endif
+ #ifdef FEAT_COMPL_FUNC
+ # define PV_OFU OPT_BUF(BV_OFU)
+ #endif
+--- 140,145 ----
+***************
+*** 337,345 ****
+ static int p_mod;
+ static char_u *p_mps;
+ static char_u *p_nf;
+- #ifdef FEAT_OSFILETYPE
+- static char_u *p_oft;
+- #endif
+ static int p_pi;
+ #ifdef FEAT_TEXTOBJ
+ static char_u *p_qe;
+--- 334,339 ----
+***************
+*** 1901,1914 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"osfiletype", "oft", P_STRING|P_ALLOCED|P_VI_DEF,
+- #ifdef FEAT_OSFILETYPE
+- (char_u *)&p_oft, PV_OFT,
+- {(char_u *)DFLT_OFT, (char_u *)0L}
+- #else
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)0L, (char_u *)0L}
+! #endif
+! SCRIPTID_INIT},
+ {"paragraphs", "para", P_STRING|P_VI_DEF,
+ (char_u *)&p_para, PV_NONE,
+ {(char_u *)"IPLPPPQPP TPHPLIPpLpItpplpipbp",
+--- 1895,1902 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"osfiletype", "oft", P_STRING|P_ALLOCED|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"paragraphs", "para", P_STRING|P_VI_DEF,
+ (char_u *)&p_para, PV_NONE,
+ {(char_u *)"IPLPPPQPP TPHPLIPpLpItpplpipbp",
+***************
+*** 5282,5290 ****
+ #ifdef FEAT_AUTOCMD
+ check_string_option(&buf->b_p_ft);
+ #endif
+- #ifdef FEAT_OSFILETYPE
+- check_string_option(&buf->b_p_oft);
+- #endif
+ #if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT)
+ check_string_option(&buf->b_p_cinw);
+ #endif
+--- 5270,5275 ----
+***************
+*** 9665,9673 ****
+ case PV_MA: return (char_u *)&(curbuf->b_p_ma);
+ case PV_MOD: return (char_u *)&(curbuf->b_changed);
+ case PV_NF: return (char_u *)&(curbuf->b_p_nf);
+- #ifdef FEAT_OSFILETYPE
+- case PV_OFT: return (char_u *)&(curbuf->b_p_oft);
+- #endif
+ case PV_PI: return (char_u *)&(curbuf->b_p_pi);
+ #ifdef FEAT_TEXTOBJ
+ case PV_QE: return (char_u *)&(curbuf->b_p_qe);
+--- 9650,9655 ----
+***************
+*** 10018,10026 ****
+ /* Don't copy 'filetype', it must be detected */
+ buf->b_p_ft = empty_option;
+ #endif
+- #ifdef FEAT_OSFILETYPE
+- buf->b_p_oft = vim_strsave(p_oft);
+- #endif
+ buf->b_p_pi = p_pi;
+ #if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT)
+ buf->b_p_cinw = vim_strsave(p_cinw);
+--- 10000,10005 ----
+*** ../vim-7.3.190/src/option.h 2011-02-12 13:59:55.000000000 +0100
+--- src/option.h 2011-05-19 13:11:46.000000000 +0200
+***************
+*** 984,992 ****
+ , BV_MOD
+ , BV_MPS
+ , BV_NF
+- #ifdef FEAT_OSFILETYPE
+- , BV_OFT
+- #endif
+ #ifdef FEAT_COMPL_FUNC
+ , BV_OFU
+ #endif
+--- 984,989 ----
+*** ../vim-7.3.190/src/structs.h 2011-05-10 16:41:13.000000000 +0200
+--- src/structs.h 2011-05-19 13:11:58.000000000 +0200
+***************
+*** 1530,1538 ****
+ int b_p_ml_nobin; /* b_p_ml saved for binary mode */
+ int b_p_ma; /* 'modifiable' */
+ char_u *b_p_nf; /* 'nrformats' */
+- #ifdef FEAT_OSFILETYPE
+- char_u *b_p_oft; /* 'osfiletype' */
+- #endif
+ int b_p_pi; /* 'preserveindent' */
+ #ifdef FEAT_TEXTOBJ
+ char_u *b_p_qe; /* 'quoteescape' */
+--- 1530,1535 ----
+*** ../vim-7.3.190/src/version.c 2011-05-19 12:14:03.000000000 +0200
+--- src/version.c 2011-05-19 13:26:42.000000000 +0200
+***************
+*** 426,436 ****
+ "-ole",
+ # endif
+ #endif
+- #ifdef FEAT_OSFILETYPE
+- "+osfiletype",
+- #else
+- "-osfiletype",
+- #endif
+ #ifdef FEAT_PATH_EXTRA
+ "+path_extra",
+ #else
+--- 426,431 ----
+*** ../vim-7.3.190/src/pty.c 2011-04-11 14:24:33.000000000 +0200
+--- src/pty.c 2011-05-19 12:43:26.000000000 +0200
+***************
+*** 123,130 ****
+ static void initmaster __ARGS((int));
+
+ /*
+! * Open all ptys with O_NOCTTY, just to be on the safe side
+! * (RISCos mips breaks otherwise)
+ */
+ #ifndef O_NOCTTY
+ # define O_NOCTTY 0
+--- 123,129 ----
+ static void initmaster __ARGS((int));
+
+ /*
+! * Open all ptys with O_NOCTTY, just to be on the safe side.
+ */
+ #ifndef O_NOCTTY
+ # define O_NOCTTY 0
+*** ../vim-7.3.190/Filelist 2011-05-10 17:21:34.000000000 +0200
+--- Filelist 2011-05-19 13:37:25.000000000 +0200
+***************
+*** 427,433 ****
+ $(SRC_VMS) \
+ README_os390.txt \
+ src/Make_mint.mak \
+- src/Make_ro.mak \
+ src/if_sniff.c \
+ src/infplist.xml \
+ src/link.390 \
+--- 427,432 ----
+*** ../vim-7.3.190/src/version.c 2011-05-19 12:14:03.000000000 +0200
+--- src/version.c 2011-05-19 13:26:42.000000000 +0200
+***************
+*** 716,717 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 191,
+ /**/
+
+--
+From "know your smileys":
+ :-& Eating spaghetti
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.192 b/source/ap/vim/patches/7.3.192
new file mode 100644
index 000000000..5dab19b49
--- /dev/null
+++ b/source/ap/vim/patches/7.3.192
@@ -0,0 +1,61 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.192
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.192
+Problem: Ex command ":s/ \?/ /g" splits multi-byte characters into bytes.
+ (Dominique Pelle)
+Solution: Advance over whole character instead of one byte.
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.3.191/src/ex_cmds.c 2011-05-10 16:41:13.000000000 +0200
+--- src/ex_cmds.c 2011-05-19 14:23:33.000000000 +0200
+***************
+*** 4625,4631 ****
+ * for a match in this line again. */
+ skip_match = TRUE;
+ else
+! ++matchcol; /* search for a match at next column */
+ goto skip;
+ }
+
+--- 4625,4639 ----
+ * for a match in this line again. */
+ skip_match = TRUE;
+ else
+! {
+! /* search for a match at next column */
+! #ifdef FEAT_MBYTE
+! if (has_mbyte)
+! matchcol += mb_ptr2len(sub_firstline + matchcol);
+! else
+! #endif
+! ++matchcol;
+! }
+ goto skip;
+ }
+
+*** ../vim-7.3.191/src/version.c 2011-05-19 13:40:47.000000000 +0200
+--- src/version.c 2011-05-19 14:28:44.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 192,
+ /**/
+
+--
+From "know your smileys":
+ :-F Bucktoothed vampire with one tooth missing
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.193 b/source/ap/vim/patches/7.3.193
new file mode 100644
index 000000000..acee9ec0e
--- /dev/null
+++ b/source/ap/vim/patches/7.3.193
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.193
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.193
+Problem: In the command line window ":close" doesn't work properly. (Tony
+ Mechelynck)
+Solution: Use Ctrl_C instead of K_IGNORE for cmdwin_result. (Jean-Rene
+ David)
+Files: src/ex_docmd.c, src/ex_getln.c
+
+
+*** ../vim-7.3.192/src/ex_docmd.c 2011-05-10 16:41:13.000000000 +0200
+--- src/ex_docmd.c 2011-05-19 14:42:56.000000000 +0200
+***************
+*** 6472,6478 ****
+ {
+ # ifdef FEAT_CMDWIN
+ if (cmdwin_type != 0)
+! cmdwin_result = K_IGNORE;
+ else
+ # endif
+ if (!text_locked()
+--- 6472,6478 ----
+ {
+ # ifdef FEAT_CMDWIN
+ if (cmdwin_type != 0)
+! cmdwin_result = Ctrl_C;
+ else
+ # endif
+ if (!text_locked()
+*** ../vim-7.3.192/src/ex_getln.c 2011-04-28 17:21:49.000000000 +0200
+--- src/ex_getln.c 2011-05-19 14:42:56.000000000 +0200
+***************
+*** 6324,6329 ****
+--- 6324,6335 ----
+ ccline.cmdbuff = vim_strsave((char_u *)"qa");
+ cmdwin_result = CAR;
+ }
++ else if (cmdwin_result == Ctrl_C)
++ {
++ /* :q or :close, don't execute any command
++ * and don't modify the cmd window. */
++ ccline.cmdbuff = NULL;
++ }
+ else
+ ccline.cmdbuff = vim_strsave(ml_get_curline());
+ if (ccline.cmdbuff == NULL)
+*** ../vim-7.3.192/src/version.c 2011-05-19 14:30:07.000000000 +0200
+--- src/version.c 2011-05-19 14:48:12.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 193,
+ /**/
+
+--
+There's no place like $(HOME)!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.194 b/source/ap/vim/patches/7.3.194
new file mode 100644
index 000000000..5a73c0098
--- /dev/null
+++ b/source/ap/vim/patches/7.3.194
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.194
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.194
+Problem: When "b" is a symlink to directory "a", resolve("b/") doesn't
+ result in "a/". (ZyX)
+Solution: Remove the trailing slash. (Jean-Rene David)
+Files: src/eval.c
+
+
+*** ../vim-7.3.193/src/eval.c 2011-05-19 13:40:47.000000000 +0200
+--- src/eval.c 2011-05-19 14:55:27.000000000 +0200
+***************
+*** 14980,14986 ****
+--- 14980,14989 ----
+
+ len = STRLEN(p);
+ if (len > 0 && after_pathsep(p, p + len))
++ {
+ has_trailing_pathsep = TRUE;
++ p[len - 1] = NUL; /* the trailing slash breaks readlink() */
++ }
+
+ q = getnextcomp(p);
+ if (*q != NUL)
+*** ../vim-7.3.193/src/version.c 2011-05-19 14:50:49.000000000 +0200
+--- src/version.c 2011-05-19 14:54:40.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 194,
+ /**/
+
+--
+Momento mori, ergo carpe diem
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.195 b/source/ap/vim/patches/7.3.195
new file mode 100644
index 000000000..ba1fc2192
--- /dev/null
+++ b/source/ap/vim/patches/7.3.195
@@ -0,0 +1,199 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.195
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.195
+Problem: "} else" causes following lines to be indented too much. (Rouben
+ Rostamian)
+Solution: Better detection for the "else". (Lech Lorens)
+Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.194/src/misc1.c 2011-05-10 16:41:13.000000000 +0200
+--- src/misc1.c 2011-05-19 16:30:28.000000000 +0200
+***************
+*** 5482,5489 ****
+ * Recognize a line that starts with '{' or '}', or ends with ';', ',', '{' or
+ * '}'.
+ * Don't consider "} else" a terminated line.
+! * Don't consider a line where there are unmatched opening braces before '}',
+! * ';' or ',' a terminated line.
+ * Return the character terminating the line (ending char's have precedence if
+ * both apply in order to determine initializations).
+ */
+--- 5482,5489 ----
+ * Recognize a line that starts with '{' or '}', or ends with ';', ',', '{' or
+ * '}'.
+ * Don't consider "} else" a terminated line.
+! * If a line begins with an "else", only consider it terminated if no unmatched
+! * opening braces follow (handle "else { foo();" correctly).
+ * Return the character terminating the line (ending char's have precedence if
+ * both apply in order to determine initializations).
+ */
+***************
+*** 5493,5513 ****
+ int incl_open; /* include '{' at the end as terminator */
+ int incl_comma; /* recognize a trailing comma */
+ {
+! char_u found_start = 0;
+! unsigned n_open = 0;
+
+ s = cin_skipcomment(s);
+
+ if (*s == '{' || (*s == '}' && !cin_iselse(s)))
+ found_start = *s;
+
+ while (*s)
+ {
+ /* skip over comments, "" strings and 'c'haracters */
+ s = skip_string(cin_skipcomment(s));
+ if (*s == '}' && n_open > 0)
+ --n_open;
+! if (n_open == 0
+ && (*s == ';' || *s == '}' || (incl_comma && *s == ','))
+ && cin_nocode(s + 1))
+ return *s;
+--- 5493,5517 ----
+ int incl_open; /* include '{' at the end as terminator */
+ int incl_comma; /* recognize a trailing comma */
+ {
+! char_u found_start = 0;
+! unsigned n_open = 0;
+! int is_else = FALSE;
+
+ s = cin_skipcomment(s);
+
+ if (*s == '{' || (*s == '}' && !cin_iselse(s)))
+ found_start = *s;
+
++ if (!found_start)
++ is_else = cin_iselse(s);
++
+ while (*s)
+ {
+ /* skip over comments, "" strings and 'c'haracters */
+ s = skip_string(cin_skipcomment(s));
+ if (*s == '}' && n_open > 0)
+ --n_open;
+! if ((!is_else || n_open == 0)
+ && (*s == ';' || *s == '}' || (incl_comma && *s == ','))
+ && cin_nocode(s + 1))
+ return *s;
+*** ../vim-7.3.194/src/testdir/test3.in 2011-05-10 13:38:23.000000000 +0200
+--- src/testdir/test3.in 2011-05-19 16:29:01.000000000 +0200
+***************
+*** 1345,1351 ****
+
+ STARTTEST
+ :set cino&
+! 2kdd=][
+ ENDTEST
+
+ void func(void)
+--- 1345,1351 ----
+
+ STARTTEST
+ :set cino&
+! 2kdd=4][
+ ENDTEST
+
+ void func(void)
+***************
+*** 1359,1364 ****
+--- 1359,1392 ----
+ printf("Foo!\n");
+ }
+
++ void func1(void)
++ {
++ char* tab[] = {"foo", "bar",
++ "baz", "quux",
++ "this line used", "to be indented incorrectly"};
++ foo();
++ }
++
++ void func2(void)
++ {
++ int tab[] =
++ {1, 2,
++ 3, 4,
++ 5, 6};
++
++ printf("This line used to be indented incorrectly.\n");
++ }
++
++ void func3(void)
++ {
++ int tab[] = {
++ 1, 2,
++ 3, 4,
++ 5, 6};
++
++ printf("Don't you dare indent this line incorrectly!\n);
++ }
++
+ STARTTEST
+ :set cino&
+ 2kdd=][
+*** ../vim-7.3.194/src/testdir/test3.ok 2011-05-10 13:38:23.000000000 +0200
+--- src/testdir/test3.ok 2011-05-19 16:29:01.000000000 +0200
+***************
+*** 1216,1221 ****
+--- 1216,1249 ----
+ printf("Foo!\n");
+ }
+
++ void func1(void)
++ {
++ char* tab[] = {"foo", "bar",
++ "baz", "quux",
++ "this line used", "to be indented incorrectly"};
++ foo();
++ }
++
++ void func2(void)
++ {
++ int tab[] =
++ {1, 2,
++ 3, 4,
++ 5, 6};
++
++ printf("This line used to be indented incorrectly.\n");
++ }
++
++ void func3(void)
++ {
++ int tab[] = {
++ 1, 2,
++ 3, 4,
++ 5, 6};
++
++ printf("Don't you dare indent this line incorrectly!\n);
++ }
++
+
+ void func(void)
+ {
+*** ../vim-7.3.194/src/version.c 2011-05-19 14:59:07.000000000 +0200
+--- src/version.c 2011-05-19 16:34:16.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 195,
+ /**/
+
+--
+I AM THANKFUL...
+...for the taxes that I pay because it means that I am employed.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.196 b/source/ap/vim/patches/7.3.196
new file mode 100644
index 000000000..0d6be8c9f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.196
@@ -0,0 +1,224 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.196
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.196
+Problem: Can't intercept a character that is going to be inserted.
+Solution: Add the InsertCharPre autocommand event. (Jakson A. Aquino)
+Files: runtime/doc/autocmd.txt, runtime/doc/eval.txt,
+ runtime/doc/map.txt, src/edit.c, src/eval.c, src/fileio.c,
+ src/vim.h
+
+
+*** ../mercurial/vim73/runtime/doc/autocmd.txt 2011-04-28 19:01:26.000000000 +0200
+--- runtime/doc/autocmd.txt 2011-05-19 17:12:17.000000000 +0200
+***************
+*** 299,304 ****
+--- 299,306 ----
+ |InsertEnter| starting Insert mode
+ |InsertChange| when typing <Insert> while in Insert or Replace mode
+ |InsertLeave| when leaving Insert mode
++ |InsertCharPre| when a character was typed in Insert mode, before
++ inserting it
+
+ |ColorScheme| after loading a color scheme
+
+***************
+*** 657,662 ****
+--- 659,675 ----
+ indicates the new mode.
+ Be careful not to move the cursor or do
+ anything else that the user does not expect.
++ *InsertCharPre*
++ InsertCharPre When a character is typed in Insert mode,
++ before inserting the char.
++ The |v:char| variable indicates the char typed
++ and can be changed during the event to insert
++ a different character. When |v:char| is set
++ to more than one character this text is
++ inserted literally.
++ It is not allowed to change the text |textlock|.
++ The event is not triggered when 'paste' is
++ set.
+ *InsertEnter*
+ InsertEnter Just before starting Insert mode. Also for
+ Replace mode and Virtual Replace mode. The
+*** ../mercurial/vim73/runtime/doc/eval.txt 2011-05-19 12:22:41.000000000 +0200
+--- runtime/doc/eval.txt 2011-05-19 16:55:58.000000000 +0200
+***************
+*** 1293,1298 ****
+--- 1293,1299 ----
+ *v:char* *char-variable*
+ v:char Argument for evaluating 'formatexpr' and used for the typed
+ character when using <expr> in an abbreviation |:map-<expr>|.
++ It is also used by the |InsertPreChar| event.
+
+ *v:charconvert_from* *charconvert_from-variable*
+ v:charconvert_from
+*** ../mercurial/vim73/runtime/doc/map.txt 2011-05-10 17:17:38.000000000 +0200
+--- runtime/doc/map.txt 2011-05-19 16:40:34.000000000 +0200
+***************
+*** 226,232 ****
+
+ For abbreviations |v:char| is set to the character that was typed to trigger
+ the abbreviation. You can use this to decide how to expand the {lhs}. You
+! can't change v:char and you should not insert it.
+
+ Be very careful about side effects! The expression is evaluated while
+ obtaining characters, you may very well make the command dysfunctional.
+--- 226,232 ----
+
+ For abbreviations |v:char| is set to the character that was typed to trigger
+ the abbreviation. You can use this to decide how to expand the {lhs}. You
+! you should not either insert or change the v:char.
+
+ Be very careful about side effects! The expression is evaluated while
+ obtaining characters, you may very well make the command dysfunctional.
+*** ../mercurial/vim73/src/edit.c 2011-05-10 14:22:10.000000000 +0200
+--- src/edit.c 2011-05-19 17:20:53.000000000 +0200
+***************
+*** 1381,1390 ****
+ goto do_intr;
+ #endif
+
+ /*
+ * Insert a nomal character.
+ */
+! normalchar:
+ #ifdef FEAT_SMARTINDENT
+ /* Try to perform smart-indenting. */
+ ins_try_si(c);
+--- 1381,1425 ----
+ goto do_intr;
+ #endif
+
++ normalchar:
+ /*
+ * Insert a nomal character.
+ */
+! #ifdef FEAT_AUTOCMD
+! if (!p_paste)
+! {
+! /* Trigger the InsertCharPre event. Lock the text to avoid
+! * weird things from happening. */
+! set_vim_var_char(c);
+! ++textlock;
+! if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL,
+! FALSE, curbuf))
+! {
+! /* Get the new value of v:char. If it is more than one
+! * character insert it literally. */
+! char_u *s = get_vim_var_str(VV_CHAR);
+! if (MB_CHARLEN(s) > 1)
+! {
+! if (stop_arrow() != FAIL)
+! {
+! ins_str(s);
+! AppendToRedobuffLit(s, -1);
+! }
+! c = NUL;
+! }
+! else
+! c = PTR2CHAR(s);
+! }
+!
+! set_vim_var_string(VV_CHAR, NULL, -1);
+! --textlock;
+!
+! /* If the new value is an empty string then don't insert a
+! * char. */
+! if (c == NUL)
+! break;
+! }
+! #endif
+ #ifdef FEAT_SMARTINDENT
+ /* Try to perform smart-indenting. */
+ ins_try_si(c);
+***************
+*** 3491,3501 ****
+ return;
+ }
+ p += len;
+! #ifdef FEAT_MBYTE
+! c = mb_ptr2char(p);
+! #else
+! c = *p;
+! #endif
+ ins_compl_addleader(c);
+ }
+
+--- 3526,3532 ----
+ return;
+ }
+ p += len;
+! c = PTR2CHAR(p);
+ ins_compl_addleader(c);
+ }
+
+*** ../mercurial/vim73/src/eval.c 2011-05-19 14:59:07.000000000 +0200
+--- src/eval.c 2011-05-19 16:40:39.000000000 +0200
+***************
+*** 352,358 ****
+ {VV_NAME("swapname", VAR_STRING), VV_RO},
+ {VV_NAME("swapchoice", VAR_STRING), 0},
+ {VV_NAME("swapcommand", VAR_STRING), VV_RO},
+! {VV_NAME("char", VAR_STRING), VV_RO},
+ {VV_NAME("mouse_win", VAR_NUMBER), 0},
+ {VV_NAME("mouse_lnum", VAR_NUMBER), 0},
+ {VV_NAME("mouse_col", VAR_NUMBER), 0},
+--- 352,358 ----
+ {VV_NAME("swapname", VAR_STRING), VV_RO},
+ {VV_NAME("swapchoice", VAR_STRING), 0},
+ {VV_NAME("swapcommand", VAR_STRING), VV_RO},
+! {VV_NAME("char", VAR_STRING), 0},
+ {VV_NAME("mouse_win", VAR_NUMBER), 0},
+ {VV_NAME("mouse_lnum", VAR_NUMBER), 0},
+ {VV_NAME("mouse_col", VAR_NUMBER), 0},
+*** ../mercurial/vim73/src/fileio.c 2011-05-10 16:41:13.000000000 +0200
+--- src/fileio.c 2011-05-19 16:40:39.000000000 +0200
+***************
+*** 7662,7667 ****
+--- 7662,7668 ----
+ {"InsertChange", EVENT_INSERTCHANGE},
+ {"InsertEnter", EVENT_INSERTENTER},
+ {"InsertLeave", EVENT_INSERTLEAVE},
++ {"InsertCharPre", EVENT_INSERTCHARPRE},
+ {"MenuPopup", EVENT_MENUPOPUP},
+ {"QuickFixCmdPost", EVENT_QUICKFIXCMDPOST},
+ {"QuickFixCmdPre", EVENT_QUICKFIXCMDPRE},
+*** ../mercurial/vim73/src/vim.h 2011-05-10 16:41:13.000000000 +0200
+--- src/vim.h 2011-05-19 16:40:39.000000000 +0200
+***************
+*** 1274,1279 ****
+--- 1274,1280 ----
+ EVENT_WINENTER, /* after entering a window */
+ EVENT_WINLEAVE, /* before leaving a window */
+ EVENT_ENCODINGCHANGED, /* after changing the 'encoding' option */
++ EVENT_INSERTCHARPRE, /* before inserting a char */
+ EVENT_CURSORHOLD, /* cursor in same position for a while */
+ EVENT_CURSORHOLDI, /* idem, in Insert mode */
+ EVENT_FUNCUNDEFINED, /* if calling a function which doesn't exist */
+*** ../vim-7.3.195/src/version.c 2011-05-19 16:35:05.000000000 +0200
+--- src/version.c 2011-05-19 17:15:41.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 196,
+ /**/
+
+--
+I AM THANKFUL...
+...for the mess to clean after a party because it means I have
+been surrounded by friends.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.197 b/source/ap/vim/patches/7.3.197
new file mode 100644
index 000000000..c33a2cb29
--- /dev/null
+++ b/source/ap/vim/patches/7.3.197
@@ -0,0 +1,78 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.197
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.197
+Problem: When a QuickfixCmdPost event removes all errors, Vim still tries
+ to jump to the first error, resulting in E42.
+Solution: Get the number of error after the autocmd event. (Mike Lundy)
+Files: src/quickfix.c
+
+
+*** ../mercurial/vim73/src/quickfix.c 2011-05-10 16:41:13.000000000 +0200
+--- src/quickfix.c 2011-05-19 17:34:11.000000000 +0200
+***************
+*** 2813,2829 ****
+ (eap->cmdidx != CMD_grepadd
+ && eap->cmdidx != CMD_lgrepadd),
+ *eap->cmdlinep);
+ #ifdef FEAT_AUTOCMD
+ if (au_name != NULL)
+ apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
+ curbuf->b_fname, TRUE, curbuf);
+ #endif
+ if (res > 0 && !eap->forceit)
+- {
+- if (wp != NULL)
+- qi = GET_LOC_LIST(wp);
+ qf_jump(qi, 0, 0, FALSE); /* display first error */
+- }
+
+ mch_remove(fname);
+ vim_free(fname);
+--- 2813,2833 ----
+ (eap->cmdidx != CMD_grepadd
+ && eap->cmdidx != CMD_lgrepadd),
+ *eap->cmdlinep);
++ if (wp != NULL)
++ qi = GET_LOC_LIST(wp);
+ #ifdef FEAT_AUTOCMD
+ if (au_name != NULL)
++ {
+ apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
+ curbuf->b_fname, TRUE, curbuf);
++ if (qi->qf_curlist < qi->qf_listcount)
++ res = qi->qf_lists[qi->qf_curlist].qf_count;
++ else
++ res = 0;
++ }
+ #endif
+ if (res > 0 && !eap->forceit)
+ qf_jump(qi, 0, 0, FALSE); /* display first error */
+
+ mch_remove(fname);
+ vim_free(fname);
+*** ../vim-7.3.196/src/version.c 2011-05-19 17:25:36.000000000 +0200
+--- src/version.c 2011-05-19 17:41:50.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 197,
+ /**/
+
+--
+I AM THANKFUL...
+...for the clothes that fit a little too snug because it
+means I have more than enough to eat.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.198 b/source/ap/vim/patches/7.3.198
new file mode 100644
index 000000000..5ef4a8aad
--- /dev/null
+++ b/source/ap/vim/patches/7.3.198
@@ -0,0 +1,403 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.198
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.198
+Problem: No completion for ":lang".
+Solution: Get locales to complete from. (Dominique Pelle)
+Files: src/eval.c, src/ex_cmds2.c, src/ex_getln.c,
+ src/proto/ex_cmds2.pro, src/proto/ex_getln.pro, src/vim.h
+
+
+*** ../mercurial/vim73/src/eval.c 2011-05-19 17:25:36.000000000 +0200
+--- src/eval.c 2011-05-19 17:52:02.000000000 +0200
+***************
+*** 911,916 ****
+--- 911,917 ----
+ hash_clear(&compat_hashtab);
+
+ free_scriptnames();
++ free_locales();
+
+ /* global variables */
+ vars_clear(&globvarht);
+*** ../mercurial/vim73/src/ex_cmds2.c 2011-05-10 16:41:13.000000000 +0200
+--- src/ex_cmds2.c 2011-05-19 18:16:54.000000000 +0200
+***************
+*** 1476,1482 ****
+ #endif
+
+ /*
+! * Ask the user what to do when abondoning a changed buffer.
+ * Must check 'write' option first!
+ */
+ void
+--- 1476,1482 ----
+ #endif
+
+ /*
+! * Ask the user what to do when abandoning a changed buffer.
+ * Must check 'write' option first!
+ */
+ void
+***************
+*** 4153,4158 ****
+--- 4153,4234 ----
+ }
+
+ # if defined(FEAT_CMDL_COMPL) || defined(PROTO)
++
++ static char_u **locales = NULL; /* Array of all available locales */
++ static int did_init_locales = FALSE;
++
++ static void init_locales __ARGS((void));
++ static char_u **find_locales __ARGS((void));
++
++ /*
++ * Lazy initialization of all available locales.
++ */
++ static void
++ init_locales()
++ {
++ if (!did_init_locales)
++ {
++ did_init_locales = TRUE;
++ locales = find_locales();
++ }
++ }
++
++ /* Return an array of strings for all available locales + NULL for the
++ * last element. Return NULL in case of error. */
++ static char_u **
++ find_locales()
++ {
++ garray_T locales_ga;
++ char_u *loc;
++
++ /* Find all available locales by running command "locale -a". If this
++ * doesn't work we won't have completion. */
++ char_u *locale_a = get_cmd_output((char_u *)"locale -a",
++ NULL, SHELL_SILENT);
++ if (locale_a == NULL)
++ return NULL;
++ ga_init2(&locales_ga, sizeof(char_u *), 20);
++
++ /* Transform locale_a string where each locale is separated by "\n"
++ * into an array of locale strings. */
++ loc = (char_u *)strtok((char *)locale_a, "\n");
++
++ while (loc != NULL)
++ {
++ if (ga_grow(&locales_ga, 1) == FAIL)
++ break;
++ loc = vim_strsave(loc);
++ if (loc == NULL)
++ break;
++
++ ((char_u **)locales_ga.ga_data)[locales_ga.ga_len++] = loc;
++ loc = (char_u *)strtok(NULL, "\n");
++ }
++ vim_free(locale_a);
++ if (ga_grow(&locales_ga, 1) == FAIL)
++ {
++ ga_clear(&locales_ga);
++ return NULL;
++ }
++ ((char_u **)locales_ga.ga_data)[locales_ga.ga_len] = NULL;
++ return (char_u **)locales_ga.ga_data;
++ }
++
++ # if defined(EXITFREE) || defined(PROTO)
++ void
++ free_locales()
++ {
++ int i;
++ if (locales != NULL)
++ {
++ for (i = 0; locales[i] != NULL; i++)
++ vim_free(locales[i]);
++ vim_free(locales);
++ locales = NULL;
++ }
++ }
++ # endif
++
+ /*
+ * Function given to ExpandGeneric() to obtain the possible arguments of the
+ * ":language" command.
+***************
+*** 4168,4174 ****
+ return (char_u *)"ctype";
+ if (idx == 2)
+ return (char_u *)"time";
+! return NULL;
+ }
+ # endif
+
+--- 4244,4268 ----
+ return (char_u *)"ctype";
+ if (idx == 2)
+ return (char_u *)"time";
+!
+! init_locales();
+! if (locales == NULL)
+! return NULL;
+! return locales[idx - 3];
+! }
+!
+! /*
+! * Function given to ExpandGeneric() to obtain the available locales.
+! */
+! char_u *
+! get_locales(xp, idx)
+! expand_T *xp UNUSED;
+! int idx;
+! {
+! init_locales();
+! if (locales == NULL)
+! return NULL;
+! return locales[idx];
+ }
+ # endif
+
+*** ../mercurial/vim73/src/ex_getln.c 2011-05-19 14:50:49.000000000 +0200
+--- src/ex_getln.c 2011-05-19 18:18:49.000000000 +0200
+***************
+*** 4571,4618 ****
+ int context;
+ char_u *((*func)__ARGS((expand_T *, int)));
+ int ic;
+ } tab[] =
+ {
+! {EXPAND_COMMANDS, get_command_name, FALSE},
+! {EXPAND_BEHAVE, get_behave_arg, TRUE},
+ #ifdef FEAT_USR_CMDS
+! {EXPAND_USER_COMMANDS, get_user_commands, FALSE},
+! {EXPAND_USER_CMD_FLAGS, get_user_cmd_flags, FALSE},
+! {EXPAND_USER_NARGS, get_user_cmd_nargs, FALSE},
+! {EXPAND_USER_COMPLETE, get_user_cmd_complete, FALSE},
+ #endif
+ #ifdef FEAT_EVAL
+! {EXPAND_USER_VARS, get_user_var_name, FALSE},
+! {EXPAND_FUNCTIONS, get_function_name, FALSE},
+! {EXPAND_USER_FUNC, get_user_func_name, FALSE},
+! {EXPAND_EXPRESSION, get_expr_name, FALSE},
+ #endif
+ #ifdef FEAT_MENU
+! {EXPAND_MENUS, get_menu_name, FALSE},
+! {EXPAND_MENUNAMES, get_menu_names, FALSE},
+ #endif
+ #ifdef FEAT_SYN_HL
+! {EXPAND_SYNTAX, get_syntax_name, TRUE},
+ #endif
+! {EXPAND_HIGHLIGHT, get_highlight_name, TRUE},
+ #ifdef FEAT_AUTOCMD
+! {EXPAND_EVENTS, get_event_name, TRUE},
+! {EXPAND_AUGROUP, get_augroup_name, TRUE},
+ #endif
+ #ifdef FEAT_CSCOPE
+! {EXPAND_CSCOPE, get_cscope_name, TRUE},
+ #endif
+ #ifdef FEAT_SIGNS
+! {EXPAND_SIGN, get_sign_name, TRUE},
+ #endif
+ #ifdef FEAT_PROFILE
+! {EXPAND_PROFILE, get_profile_name, TRUE},
+ #endif
+ #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
+ && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
+! {EXPAND_LANGUAGE, get_lang_arg, TRUE},
+ #endif
+! {EXPAND_ENV_VARS, get_env_name, TRUE},
+ };
+ int i;
+
+--- 4571,4620 ----
+ int context;
+ char_u *((*func)__ARGS((expand_T *, int)));
+ int ic;
++ int escaped;
+ } tab[] =
+ {
+! {EXPAND_COMMANDS, get_command_name, FALSE, TRUE},
+! {EXPAND_BEHAVE, get_behave_arg, TRUE, TRUE},
+ #ifdef FEAT_USR_CMDS
+! {EXPAND_USER_COMMANDS, get_user_commands, FALSE, TRUE},
+! {EXPAND_USER_CMD_FLAGS, get_user_cmd_flags, FALSE, TRUE},
+! {EXPAND_USER_NARGS, get_user_cmd_nargs, FALSE, TRUE},
+! {EXPAND_USER_COMPLETE, get_user_cmd_complete, FALSE, TRUE},
+ #endif
+ #ifdef FEAT_EVAL
+! {EXPAND_USER_VARS, get_user_var_name, FALSE, TRUE},
+! {EXPAND_FUNCTIONS, get_function_name, FALSE, TRUE},
+! {EXPAND_USER_FUNC, get_user_func_name, FALSE, TRUE},
+! {EXPAND_EXPRESSION, get_expr_name, FALSE, TRUE},
+ #endif
+ #ifdef FEAT_MENU
+! {EXPAND_MENUS, get_menu_name, FALSE, TRUE},
+! {EXPAND_MENUNAMES, get_menu_names, FALSE, TRUE},
+ #endif
+ #ifdef FEAT_SYN_HL
+! {EXPAND_SYNTAX, get_syntax_name, TRUE, TRUE},
+ #endif
+! {EXPAND_HIGHLIGHT, get_highlight_name, TRUE, TRUE},
+ #ifdef FEAT_AUTOCMD
+! {EXPAND_EVENTS, get_event_name, TRUE, TRUE},
+! {EXPAND_AUGROUP, get_augroup_name, TRUE, TRUE},
+ #endif
+ #ifdef FEAT_CSCOPE
+! {EXPAND_CSCOPE, get_cscope_name, TRUE, TRUE},
+ #endif
+ #ifdef FEAT_SIGNS
+! {EXPAND_SIGN, get_sign_name, TRUE, TRUE},
+ #endif
+ #ifdef FEAT_PROFILE
+! {EXPAND_PROFILE, get_profile_name, TRUE, TRUE},
+ #endif
+ #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
+ && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
+! {EXPAND_LANGUAGE, get_lang_arg, TRUE, FALSE},
+! {EXPAND_LOCALES, get_locales, TRUE, FALSE},
+ #endif
+! {EXPAND_ENV_VARS, get_env_name, TRUE, TRUE},
+ };
+ int i;
+
+***************
+*** 4626,4632 ****
+ {
+ if (tab[i].ic)
+ regmatch.rm_ic = TRUE;
+! ret = ExpandGeneric(xp, &regmatch, num_file, file, tab[i].func);
+ break;
+ }
+ }
+--- 4628,4635 ----
+ {
+ if (tab[i].ic)
+ regmatch.rm_ic = TRUE;
+! ret = ExpandGeneric(xp, &regmatch, num_file, file,
+! tab[i].func, tab[i].escaped);
+ break;
+ }
+ }
+***************
+*** 4648,4660 ****
+ * Returns OK when no problems encountered, FAIL for error (out of memory).
+ */
+ int
+! ExpandGeneric(xp, regmatch, num_file, file, func)
+ expand_T *xp;
+ regmatch_T *regmatch;
+ int *num_file;
+ char_u ***file;
+ char_u *((*func)__ARGS((expand_T *, int)));
+ /* returns a string from the list */
+ {
+ int i;
+ int count = 0;
+--- 4651,4664 ----
+ * Returns OK when no problems encountered, FAIL for error (out of memory).
+ */
+ int
+! ExpandGeneric(xp, regmatch, num_file, file, func, escaped)
+ expand_T *xp;
+ regmatch_T *regmatch;
+ int *num_file;
+ char_u ***file;
+ char_u *((*func)__ARGS((expand_T *, int)));
+ /* returns a string from the list */
++ int escaped;
+ {
+ int i;
+ int count = 0;
+***************
+*** 4679,4685 ****
+ {
+ if (round)
+ {
+! str = vim_strsave_escaped(str, (char_u *)" \t\\.");
+ (*file)[count] = str;
+ #ifdef FEAT_MENU
+ if (func == get_menu_names && str != NULL)
+--- 4683,4692 ----
+ {
+ if (round)
+ {
+! if (escaped)
+! str = vim_strsave_escaped(str, (char_u *)" \t\\.");
+! else
+! str = vim_strsave(str);
+ (*file)[count] = str;
+ #ifdef FEAT_MENU
+ if (func == get_menu_names && str != NULL)
+*** ../mercurial/vim73/src/proto/ex_cmds2.pro 2010-05-15 21:22:11.000000000 +0200
+--- src/proto/ex_cmds2.pro 2011-05-19 17:53:52.000000000 +0200
+***************
+*** 83,87 ****
+--- 83,89 ----
+ char_u *get_mess_lang __ARGS((void));
+ void set_lang_var __ARGS((void));
+ void ex_language __ARGS((exarg_T *eap));
++ void free_locales __ARGS((void));
+ char_u *get_lang_arg __ARGS((expand_T *xp, int idx));
++ char_u *get_locales __ARGS((expand_T *xp, int idx));
+ /* vim: set ft=c : */
+*** ../mercurial/vim73/src/proto/ex_getln.pro 2010-08-16 21:23:30.000000000 +0200
+--- src/proto/ex_getln.pro 2011-05-19 17:54:00.000000000 +0200
+***************
+*** 31,37 ****
+ char_u *addstar __ARGS((char_u *fname, int len, int context));
+ void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
+ int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
+! int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int))));
+ char_u *globpath __ARGS((char_u *path, char_u *file, int expand_options));
+ void init_history __ARGS((void));
+ int get_histtype __ARGS((char_u *name));
+--- 31,37 ----
+ char_u *addstar __ARGS((char_u *fname, int len, int context));
+ void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
+ int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
+! int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int)), int escaped));
+ char_u *globpath __ARGS((char_u *path, char_u *file, int expand_options));
+ void init_history __ARGS((void));
+ int get_histtype __ARGS((char_u *name));
+*** ../mercurial/vim73/src/vim.h 2011-05-19 17:25:36.000000000 +0200
+--- src/vim.h 2011-05-19 17:52:02.000000000 +0200
+***************
+*** 779,784 ****
+--- 779,785 ----
+ #define EXPAND_FILETYPE 37
+ #define EXPAND_FILES_IN_PATH 38
+ #define EXPAND_OWNSYNTAX 39
++ #define EXPAND_LOCALES 40
+
+ /* Values for exmode_active (0 is no exmode) */
+ #define EXMODE_NORMAL 1
+*** ../vim-7.3.197/src/version.c 2011-05-19 17:42:54.000000000 +0200
+--- src/version.c 2011-05-19 18:24:58.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 198,
+ /**/
+
+--
+The primary purpose of the DATA statement is to give names to constants;
+instead of referring to pi as 3.141592653589793 at every appearance, the
+variable PI can be given that value with a DATA statement and used instead
+of the longer form of the constant. This also simplifies modifying the
+program, should the value of pi change.
+ -- FORTRAN manual for Xerox Computers
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.199 b/source/ap/vim/patches/7.3.199
new file mode 100644
index 000000000..8bdd97ab1
--- /dev/null
+++ b/source/ap/vim/patches/7.3.199
@@ -0,0 +1,57 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.199
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.199
+Problem: MS-Windows: Compilation problem of OLE with MingW compiler.
+Solution: Put #ifdef around declarations. (Guopeng Wen)
+Files: src/if_ole.h
+
+
+*** ../mercurial/vim73/src/if_ole.h 2010-05-15 21:22:11.000000000 +0200
+--- src/if_ole.h 2011-05-25 12:05:50.000000000 +0200
+***************
+*** 46,53 ****
+ /* header files for imported files */
+ #include "oaidl.h"
+
+! void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+! void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+ #ifndef __IVim_INTERFACE_DEFINED__
+ #define __IVim_INTERFACE_DEFINED__
+--- 46,56 ----
+ /* header files for imported files */
+ #include "oaidl.h"
+
+! #ifndef __MIDL_user_allocate_free_DEFINED__
+! #define __MIDL_user_allocate_free_DEFINED__
+! void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+! void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+! #endif
+
+ #ifndef __IVim_INTERFACE_DEFINED__
+ #define __IVim_INTERFACE_DEFINED__
+*** ../vim-7.3.198/src/version.c 2011-05-19 18:26:34.000000000 +0200
+--- src/version.c 2011-05-25 12:08:54.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 199,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+104. When people ask about the Presidential Election you ask "Which country?"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.200 b/source/ap/vim/patches/7.3.200
new file mode 100644
index 000000000..601947119
--- /dev/null
+++ b/source/ap/vim/patches/7.3.200
@@ -0,0 +1,75 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.200
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.200 (after 7.3.198)
+Problem: CTRL-D doesn't complete :lang.
+Solution: Add the missing part of the change. (Dominique Pelle)
+Files: src/ex_docmd.c
+
+
+*** ../mercurial/vim73/src/ex_docmd.c 2011-05-19 14:50:49.000000000 +0200
+--- src/ex_docmd.c 2011-05-25 12:45:02.000000000 +0200
+***************
+*** 3861,3873 ****
+ #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
+ && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
+ case CMD_language:
+! if (*skiptowhite(arg) == NUL)
+ {
+ xp->xp_context = EXPAND_LANGUAGE;
+ xp->xp_pattern = arg;
+ }
+ else
+! xp->xp_context = EXPAND_NOTHING;
+ break;
+ #endif
+ #if defined(FEAT_PROFILE)
+--- 3861,3884 ----
+ #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
+ && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
+ case CMD_language:
+! p = skiptowhite(arg);
+! if (*p == NUL)
+ {
+ xp->xp_context = EXPAND_LANGUAGE;
+ xp->xp_pattern = arg;
+ }
+ else
+! {
+! if ( STRNCMP(arg, "messages", p - arg) == 0
+! || STRNCMP(arg, "ctype", p - arg) == 0
+! || STRNCMP(arg, "time", p - arg) == 0)
+! {
+! xp->xp_context = EXPAND_LOCALES;
+! xp->xp_pattern = skipwhite(p);
+! }
+! else
+! xp->xp_context = EXPAND_NOTHING;
+! }
+ break;
+ #endif
+ #if defined(FEAT_PROFILE)
+*** ../vim-7.3.199/src/version.c 2011-05-25 12:09:46.000000000 +0200
+--- src/version.c 2011-05-25 12:49:49.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 200,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+105. When someone asks you for your address, you tell them your URL.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.201 b/source/ap/vim/patches/7.3.201
new file mode 100644
index 000000000..0481afd85
--- /dev/null
+++ b/source/ap/vim/patches/7.3.201
@@ -0,0 +1,124 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.201
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.201 (after 7.3.195)
+Problem: "} else" still causes following lines to be indented too much.
+Solution: Better detection for the "else" block. (Lech Lorens)
+Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../mercurial/vim73/src/misc1.c 2011-05-19 16:35:05.000000000 +0200
+--- src/misc1.c 2011-05-25 13:29:45.000000000 +0200
+***************
+*** 7541,7557 ****
+
+ /*
+ * When searching for a terminated line, don't use the
+! * one between the "if" and the "else".
+ * Need to use the scope of this "else". XXX
+ * If whilelevel != 0 continue looking for a "do {".
+ */
+! if (cin_iselse(l)
+! && whilelevel == 0
+! && ((trypos = find_start_brace(ind_maxcomment))
+! == NULL
+ || find_match(LOOKFOR_IF, trypos->lnum,
+! ind_maxparen, ind_maxcomment) == FAIL))
+! break;
+ }
+
+ /*
+--- 7541,7565 ----
+
+ /*
+ * When searching for a terminated line, don't use the
+! * one between the "if" and the matching "else".
+ * Need to use the scope of this "else". XXX
+ * If whilelevel != 0 continue looking for a "do {".
+ */
+! if (cin_iselse(l) && whilelevel == 0)
+! {
+! /* If we're looking at "} else", let's make sure we
+! * find the opening brace of the enclosing scope,
+! * not the one from "if () {". */
+! if (*l == '}')
+! curwin->w_cursor.col =
+! (l - ml_get_curline()) + 1;
+!
+! if ((trypos = find_start_brace(ind_maxcomment))
+! == NULL
+ || find_match(LOOKFOR_IF, trypos->lnum,
+! ind_maxparen, ind_maxcomment) == FAIL)
+! break;
+! }
+ }
+
+ /*
+*** ../mercurial/vim73/src/testdir/test3.in 2011-05-19 16:35:05.000000000 +0200
+--- src/testdir/test3.in 2011-05-25 13:23:51.000000000 +0200
+***************
+*** 1413,1418 ****
+--- 1413,1433 ----
+ }
+
+ STARTTEST
++ :set cino&
++ 2kdd=][
++ ENDTEST
++
++ void func(void)
++ {
++ for (int i = 0; i < 10; ++i)
++ if (i & 1) {
++ foo(1);
++ } else
++ foo(0);
++ baz();
++ }
++
++ STARTTEST
+ :g/^STARTTEST/.,/^ENDTEST/d
+ :1;/start of AUTO/,$wq! test.out
+ ENDTEST
+*** ../mercurial/vim73/src/testdir/test3.ok 2011-05-19 16:35:05.000000000 +0200
+--- src/testdir/test3.ok 2011-05-25 13:23:51.000000000 +0200
+***************
+*** 1262,1264 ****
+--- 1262,1275 ----
+ foo();
+ }
+
++
++ void func(void)
++ {
++ for (int i = 0; i < 10; ++i)
++ if (i & 1) {
++ foo(1);
++ } else
++ foo(0);
++ baz();
++ }
++
+*** ../vim-7.3.200/src/version.c 2011-05-25 12:51:17.000000000 +0200
+--- src/version.c 2011-05-25 13:33:16.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 201,
+ /**/
+
+--
+Laughing helps. It's like jogging on the inside.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.202 b/source/ap/vim/patches/7.3.202
new file mode 100644
index 000000000..1289e0851
--- /dev/null
+++ b/source/ap/vim/patches/7.3.202
@@ -0,0 +1,868 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.202
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.202
+Problem: Cannot influence the indent inside a namespace.
+Solution: Add the "N" 'cino' parameter. (Konstantin Lepa)
+Files: runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in,
+ src/testdir/test3.ok
+
+
+*** ../mercurial/vim73/runtime/doc/indent.txt 2011-04-28 19:01:26.000000000 +0200
+--- runtime/doc/indent.txt 2011-05-25 14:35:37.000000000 +0200
+***************
+*** 128,140 ****
+ used CTRL-T or CTRL-D.
+
+ *cinoptions-values*
+! The 'cinoptions' option sets how Vim performs indentation. In the list below,
+ "N" represents a number of your choice (the number can be negative). When
+ there is an 's' after the number, Vim multiplies the number by 'shiftwidth':
+ "1s" is 'shiftwidth', "2s" is two times 'shiftwidth', etc. You can use a
+! decimal point, too: "-0.5s" is minus half a 'shiftwidth'. The examples below
+! assume a 'shiftwidth' of 4.
+!
+ >N Amount added for "normal" indent. Used after a line that should
+ increase the indent (lines starting with "if", an opening brace,
+ etc.). (default 'shiftwidth').
+--- 128,147 ----
+ used CTRL-T or CTRL-D.
+
+ *cinoptions-values*
+! The 'cinoptions' option sets how Vim performs indentation. The value after
+! the option character can be one of these (N is any number):
+! N indent N spaces
+! -N indent N spaces to the left
+! Ns N times 'shiftwidth spaces
+! -Ns N times 'shiftwidth spaces to the left
+!
+! In the list below,
+ "N" represents a number of your choice (the number can be negative). When
+ there is an 's' after the number, Vim multiplies the number by 'shiftwidth':
+ "1s" is 'shiftwidth', "2s" is two times 'shiftwidth', etc. You can use a
+! decimal point, too: "-0.5s" is minus half a 'shiftwidth'.
+! The examples below assume a 'shiftwidth' of 4.
+! *cino->*
+ >N Amount added for "normal" indent. Used after a line that should
+ increase the indent (lines starting with "if", an opening brace,
+ etc.). (default 'shiftwidth').
+***************
+*** 145,150 ****
+--- 152,158 ----
+ foo; foo; foo;
+ } } }
+ <
++ *cino-e*
+ eN Add N to the prevailing indent inside a set of braces if the
+ opening brace at the End of the line (more precise: is not the
+ first character in a line). This is useful if you want a
+***************
+*** 160,165 ****
+--- 168,174 ----
+ bar; bar; bar;
+ } } }
+ <
++ *cino-n*
+ nN Add N to the prevailing indent for a statement after an "if",
+ "while", etc., if it is NOT inside a set of braces. This is
+ useful if you want a different indent when there is no '{'
+***************
+*** 174,179 ****
+--- 183,189 ----
+ bar; bar; bar;
+ } } }
+ <
++ *cino-f*
+ fN Place the first opening brace of a function or other block in
+ column N. This applies only for an opening brace that is not
+ inside other braces and is at the start of the line. What comes
+***************
+*** 184,189 ****
+--- 194,200 ----
+ { { {
+ int foo; int foo; int foo;
+ <
++ *cino-{*
+ {N Place opening braces N characters from the prevailing indent.
+ This applies only for opening braces that are inside other
+ braces. (default 0).
+***************
+*** 193,198 ****
+--- 204,210 ----
+ { { {
+ foo; foo; foo;
+ <
++ *cino-}*
+ }N Place closing braces N characters from the matching opening
+ brace. (default 0).
+
+***************
+*** 202,207 ****
+--- 214,220 ----
+ foo; foo; foo;
+ } } }
+ <
++ *cino-^*
+ ^N Add N to the prevailing indent inside a set of braces if the
+ opening brace is in column 0. This can specify a different
+ indent for whole of a function (some may like to set it to a
+***************
+*** 216,221 ****
+--- 229,235 ----
+ } } }
+ } } }
+ <
++ *cino-L*
+ LN Controls placement of jump labels. If N is negative, the label
+ will be placed at column 1. If N is non-negative, the indent of
+ the label will be the prevailing indent minus N. (default -1).
+***************
+*** 229,234 ****
+--- 243,249 ----
+ } } }
+ } } }
+ <
++ *cino-:*
+ :N Place case labels N characters from the indent of the switch().
+ (default 'shiftwidth').
+
+***************
+*** 240,245 ****
+--- 255,261 ----
+ default: default:
+ } }
+ <
++ *cino-=*
+ =N Place statements occurring after a case label N characters from
+ the indent of the label. (default 'shiftwidth').
+
+***************
+*** 247,252 ****
+--- 263,269 ----
+ case 11: case 11: a = a + 1;
+ a = a + 1; b = b + 1;
+ <
++ *cino-l*
+ lN If N != 0 Vim will align with a case label instead of the
+ statement after it in the same line.
+
+***************
+*** 256,261 ****
+--- 273,279 ----
+ break; break;
+ } }
+ <
++ *cino-b*
+ bN If N != 0 Vim will align a final "break" with the case label,
+ so that case..break looks like a sort of block. (default: 0).
+ When using 1, consider adding "0=break" to 'cinkeys'.
+***************
+*** 272,277 ****
+--- 290,296 ----
+ break; break;
+ } }
+ <
++ *cino-g*
+ gN Place C++ scope declarations N characters from the indent of the
+ block they are in. (default 'shiftwidth'). A scope declaration
+ can be "public:", "protected:" or "private:".
+***************
+*** 283,288 ****
+--- 302,308 ----
+ private: private:
+ } }
+ <
++ *cino-h*
+ hN Place statements occurring after a C++ scope declaration N
+ characters from the indent of the label. (default
+ 'shiftwidth').
+***************
+*** 291,296 ****
+--- 311,331 ----
+ public: public: a = a + 1;
+ a = a + 1; b = b + 1;
+ <
++ *cino-N*
++ NN Indent inside C++ namespace N characters extra compared to a
++ normal block. (default 0).
++
++ cino= cino=N-s >
++ namespace { namespace {
++ void function(); void function();
++ } }
++
++ namespace my namespace my
++ { {
++ void function(); void function();
++ } }
++ <
++ *cino-p*
+ pN Parameter declarations for K&R-style function declarations will
+ be indented N characters from the margin. (default
+ 'shiftwidth').
+***************
+*** 300,305 ****
+--- 335,341 ----
+ int a; int a; int a;
+ char b; char b; char b;
+ <
++ *cino-t*
+ tN Indent a function return type declaration N characters from the
+ margin. (default 'shiftwidth').
+
+***************
+*** 307,312 ****
+--- 343,349 ----
+ int int int
+ func() func() func()
+ <
++ *cino-i*
+ iN Indent C++ base class declarations and constructor
+ initializations, if they start in a new line (otherwise they
+ are aligned at the right side of the ':').
+***************
+*** 330,335 ****
+--- 368,374 ----
+ a = b + 9 * a = b + 9 *
+ c; c;
+ <
++ *cino-c*
+ cN Indent comment lines after the comment opener, when there is no
+ other text with which to align, N characters from the comment
+ opener. (default 3). See also |format-comments|.
+***************
+*** 339,344 ****
+--- 378,384 ----
+ text. text.
+ */ */
+ <
++ *cino-C*
+ CN When N is non-zero, indent comment lines by the amount specified
+ with the c flag above even if there is other text behind the
+ comment opener. (default 0).
+***************
+*** 349,360 ****
+--- 389,402 ----
+ ********/ ********/
+ < (Example uses ":set comments& comments-=s1:/* comments^=s0:/*")
+
++ *cino-/*
+ /N Indent comment lines N characters extra. (default 0).
+ cino= cino=/4 >
+ a = b; a = b;
+ /* comment */ /* comment */
+ c = d; c = d;
+ <
++ *cino-(*
+ (N When in unclosed parentheses, indent N characters from the line
+ with the unclosed parentheses. Add a 'shiftwidth' for every
+ unclosed parentheses. When N is 0 or the unclosed parentheses
+***************
+*** 370,375 ****
+--- 412,418 ----
+ (c2 || c3)) (c2 || c3))
+ { {
+ <
++ *cino-u*
+ uN Same as (N, but for one level deeper. (default 'shiftwidth').
+
+ cino= cino=u2 >
+***************
+*** 377,382 ****
+--- 420,426 ----
+ && (c22345 && (c22345
+ || c3)) || c3))
+ <
++ *cino-U*
+ UN When N is non-zero, do not ignore the indenting specified by
+ ( or u in case that the unclosed parentheses is the first
+ non-white character in its line. (default 0).
+***************
+*** 388,393 ****
+--- 432,438 ----
+ c3 c3
+ ) && c4; ) && c4;
+ <
++ *cino-2*
+ wN When in unclosed parentheses and N is non-zero and either
+ using "(0" or "u0", respectively, or using "U0" and the unclosed
+ parentheses is the first non-white character in its line, line
+***************
+*** 400,405 ****
+--- 445,451 ----
+ || c3)) || c3))
+ foo; foo;
+ <
++ *cino-W*
+ WN When in unclosed parentheses and N is non-zero and either
+ using "(0" or "u0", respectively and the unclosed parentheses is
+ the last non-white character in its line and it is not the
+***************
+*** 414,419 ****
+--- 460,466 ----
+ a_short_line(argument, a_short_line(argument,
+ argument); argument);
+ <
++ *cino-m*
+ mN When N is non-zero, line up a line starting with a closing
+ parentheses with the first character of the line with the
+ matching opening parentheses. (default 0).
+***************
+*** 428,433 ****
+--- 475,481 ----
+ ) )
+ foo; foo;
+ <
++ *cino-M*
+ MN When N is non-zero, line up a line starting with a closing
+ parentheses with the first character of the previous line.
+ (default 0).
+***************
+*** 437,443 ****
+ cond2 cond2
+ ) )
+ <
+! *java-cinoptions* *java-indenting*
+ jN Indent java anonymous classes correctly. The value 'N' is
+ currently unused but must be non-zero (e.g. 'j1'). 'j1' will
+ indent for example the following code snippet correctly: >
+--- 485,491 ----
+ cond2 cond2
+ ) )
+ <
+! *java-cinoptions* *java-indenting* *cino-j*
+ jN Indent java anonymous classes correctly. The value 'N' is
+ currently unused but must be non-zero (e.g. 'j1'). 'j1' will
+ indent for example the following code snippet correctly: >
+***************
+*** 448,454 ****
+ }
+ });
+ <
+! *javascript-cinoptions* *javascript-indenting*
+ JN Indent JavaScript object declarations correctly by not confusing
+ them with labels. The value 'N' is currently unused but must be
+ non-zero (e.g. 'J1'). >
+--- 496,502 ----
+ }
+ });
+ <
+! *javascript-cinoptions* *javascript-indenting* *cino-J*
+ JN Indent JavaScript object declarations correctly by not confusing
+ them with labels. The value 'N' is currently unused but must be
+ non-zero (e.g. 'J1'). >
+***************
+*** 483,489 ****
+
+
+ The defaults, spelled out in full, are:
+! cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,ps,ts,is,+s,
+ c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0
+
+ Vim puts a line in column 1 if:
+--- 534,540 ----
+
+
+ The defaults, spelled out in full, are:
+! cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s,
+ c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0
+
+ Vim puts a line in column 1 if:
+*** ../mercurial/vim73/src/misc1.c 2011-05-25 13:33:59.000000000 +0200
+--- src/misc1.c 2011-05-25 14:57:31.000000000 +0200
+***************
+*** 4959,4964 ****
+--- 4959,4965 ----
+ static int corr_ind_maxparen __ARGS((int ind_maxparen, pos_T *startpos));
+ static int find_last_paren __ARGS((char_u *l, int start, int end));
+ static int find_match __ARGS((int lookfor, linenr_T ourscope, int ind_maxparen, int ind_maxcomment));
++ static int cin_is_cpp_namespace __ARGS((char_u *));
+
+ static int ind_hash_comment = 0; /* # starts a comment */
+
+***************
+*** 5221,5226 ****
+--- 5222,5271 ----
+ return (*(s = cin_skipcomment(s + i)) == ':' && s[1] != ':');
+ }
+
++ /* Maximum number of lines to search back for a "namespace" line. */
++ #define FIND_NAMESPACE_LIM 20
++
++ /*
++ * Recognize a "namespace" scope declaration.
++ */
++ static int
++ cin_is_cpp_namespace(s)
++ char_u *s;
++ {
++ char_u *p;
++ int has_name = FALSE;
++
++ s = cin_skipcomment(s);
++ if (STRNCMP(s, "namespace", 9) == 0 && (s[9] == NUL || !vim_iswordc(s[9])))
++ {
++ p = cin_skipcomment(skipwhite(s + 9));
++ while (*p != NUL)
++ {
++ if (vim_iswhite(*p))
++ {
++ has_name = TRUE; /* found end of a name */
++ p = cin_skipcomment(skipwhite(p));
++ }
++ else if (*p == '{')
++ {
++ break;
++ }
++ else if (vim_iswordc(*p))
++ {
++ if (has_name)
++ return FALSE; /* word character after skipping past name */
++ ++p;
++ }
++ else
++ {
++ return FALSE;
++ }
++ }
++ return TRUE;
++ }
++ return FALSE;
++ }
++
+ /*
+ * Return a pointer to the first non-empty non-comment character after a ':'.
+ * Return NULL if not found.
+***************
+*** 6296,6301 ****
+--- 6341,6351 ----
+ */
+ int ind_keep_case_label = 0;
+
++ /*
++ * handle C++ namespace
++ */
++ int ind_cpp_namespace = 0;
++
+ pos_T cur_curpos;
+ int amount;
+ int scope_amount;
+***************
+*** 6336,6341 ****
+--- 6386,6392 ----
+ int n;
+ int iscase;
+ int lookfor_break;
++ int lookfor_cpp_namespace = FALSE;
+ int cont_amount = 0; /* amount for continuation line */
+ int original_line_islabel;
+
+***************
+*** 6409,6414 ****
+--- 6460,6466 ----
+ case 'J': ind_js = n; break;
+ case 'l': ind_keep_case_label = n; break;
+ case '#': ind_hash_comment = n; break;
++ case 'N': ind_cpp_namespace = n; break;
+ }
+ if (*options == ',')
+ ++options;
+***************
+*** 6976,6986 ****
+--- 7028,7051 ----
+ if (start_brace == BRACE_IN_COL0) /* '{' is in column 0 */
+ {
+ amount = ind_open_left_imag;
++ lookfor_cpp_namespace = TRUE;
++ }
++ else if (start_brace == BRACE_AT_START &&
++ lookfor_cpp_namespace) /* '{' is at start */
++ {
++
++ lookfor_cpp_namespace = TRUE;
+ }
+ else
+ {
+ if (start_brace == BRACE_AT_END) /* '{' is at end of line */
++ {
+ amount += ind_open_imag;
++
++ l = skipwhite(ml_get_curline());
++ if (cin_is_cpp_namespace(l))
++ amount += ind_cpp_namespace;
++ }
+ else
+ {
+ /* Compensate for adding ind_open_extra later. */
+***************
+*** 7151,7156 ****
+--- 7216,7261 ----
+ else
+ amount += ind_continuation;
+ }
++ else if (lookfor_cpp_namespace)
++ {
++ if (curwin->w_cursor.lnum == ourscope)
++ continue;
++
++ if (curwin->w_cursor.lnum == 0
++ || curwin->w_cursor.lnum
++ < ourscope - FIND_NAMESPACE_LIM)
++ break;
++
++ l = ml_get_curline();
++
++ /*
++ * If we're in a comment now, skip to the start of the
++ * comment.
++ */
++ trypos = find_start_comment(ind_maxcomment);
++ if (trypos != NULL)
++ {
++ curwin->w_cursor.lnum = trypos->lnum + 1;
++ curwin->w_cursor.col = 0;
++ continue;
++ }
++
++ /*
++ * Skip preprocessor directives and blank lines.
++ */
++ if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum))
++ continue;
++
++ if (cin_is_cpp_namespace(l))
++ {
++ amount += ind_cpp_namespace;
++ break;
++ }
++
++ if (cin_nocode(l))
++ continue;
++
++ }
+ else if (lookfor != LOOKFOR_TERM
+ && lookfor != LOOKFOR_CPP_BASECLASS)
+ {
+*** ../mercurial/vim73/src/testdir/test3.in 2011-05-25 13:33:59.000000000 +0200
+--- src/testdir/test3.in 2011-05-25 14:47:31.000000000 +0200
+***************
+*** 799,804 ****
+--- 799,867 ----
+ df */
+ hello
+ }
++
++ /* valid namespaces with normal indent */
++ namespace
++ {
++ {
++ 111111111111;
++ }
++ }
++ namespace /* test */
++ {
++ 11111111111111111;
++ }
++ namespace // test
++ {
++ 111111111111111111;
++ }
++ namespace
++ {
++ 111111111111111111;
++ }
++ namespace test
++ {
++ 111111111111111111;
++ }
++ namespace{
++ 111111111111111111;
++ }
++ namespace test{
++ 111111111111111111;
++ }
++ namespace {
++ 111111111111111111;
++ }
++ namespace test {
++ 111111111111111111;
++ namespace test2 {
++ 22222222222222222;
++ }
++ }
++
++ /* invalid namespaces use block indent */
++ namespace test test2 {
++ 111111111111111111111;
++ }
++ namespace11111111111 {
++ 111111111111;
++ }
++ namespace() {
++ 1111111111111;
++ }
++ namespace()
++ {
++ 111111111111111111;
++ }
++ namespace test test2
++ {
++ 1111111111111111111;
++ }
++ namespace111111111
++ {
++ 111111111111111111;
++ }
++
+ /* end of AUTO */
+
+ STARTTEST
+***************
+*** 1428,1433 ****
+--- 1491,1566 ----
+ }
+
+ STARTTEST
++ :set cino=N-s
++ /namespaces
++ =/^NAMESPACEEND
++ ENDTEST
++
++ /* valid namespaces with normal indent */
++ namespace
++ {
++ {
++ 111111111111;
++ }
++ }
++ namespace /* test */
++ {
++ 11111111111111111;
++ }
++ namespace // test
++ {
++ 111111111111111111;
++ }
++ namespace
++ {
++ 111111111111111111;
++ }
++ namespace test
++ {
++ 111111111111111111;
++ }
++ namespace{
++ 111111111111111111;
++ }
++ namespace test{
++ 111111111111111111;
++ }
++ namespace {
++ 111111111111111111;
++ }
++ namespace test {
++ 111111111111111111;
++ namespace test2 {
++ 22222222222222222;
++ }
++ }
++
++ /* invalid namespaces use block indent */
++ namespace test test2 {
++ 111111111111111111111;
++ }
++ namespace11111111111 {
++ 111111111111;
++ }
++ namespace() {
++ 1111111111111;
++ }
++ namespace()
++ {
++ 111111111111111111;
++ }
++ namespace test test2
++ {
++ 1111111111111111111;
++ }
++ namespace111111111
++ {
++ 111111111111111111;
++ }
++ NAMESPACEEND
++
++
++ STARTTEST
+ :g/^STARTTEST/.,/^ENDTEST/d
+ :1;/start of AUTO/,$wq! test.out
+ ENDTEST
+*** ../mercurial/vim73/src/testdir/test3.ok 2011-05-25 13:33:59.000000000 +0200
+--- src/testdir/test3.ok 2011-05-25 14:48:02.000000000 +0200
+***************
+*** 787,792 ****
+--- 787,855 ----
+ df */
+ hello
+ }
++
++ /* valid namespaces with normal indent */
++ namespace
++ {
++ {
++ 111111111111;
++ }
++ }
++ namespace /* test */
++ {
++ 11111111111111111;
++ }
++ namespace // test
++ {
++ 111111111111111111;
++ }
++ namespace
++ {
++ 111111111111111111;
++ }
++ namespace test
++ {
++ 111111111111111111;
++ }
++ namespace{
++ 111111111111111111;
++ }
++ namespace test{
++ 111111111111111111;
++ }
++ namespace {
++ 111111111111111111;
++ }
++ namespace test {
++ 111111111111111111;
++ namespace test2 {
++ 22222222222222222;
++ }
++ }
++
++ /* invalid namespaces use block indent */
++ namespace test test2 {
++ 111111111111111111111;
++ }
++ namespace11111111111 {
++ 111111111111;
++ }
++ namespace() {
++ 1111111111111;
++ }
++ namespace()
++ {
++ 111111111111111111;
++ }
++ namespace test test2
++ {
++ 1111111111111111111;
++ }
++ namespace111111111
++ {
++ 111111111111111111;
++ }
++
+ /* end of AUTO */
+
+
+***************
+*** 1273,1275 ****
+--- 1336,1403 ----
+ baz();
+ }
+
++
++ /* valid namespaces with normal indent */
++ namespace
++ {
++ {
++ 111111111111;
++ }
++ }
++ namespace /* test */
++ {
++ 11111111111111111;
++ }
++ namespace // test
++ {
++ 111111111111111111;
++ }
++ namespace
++ {
++ 111111111111111111;
++ }
++ namespace test
++ {
++ 111111111111111111;
++ }
++ namespace{
++ 111111111111111111;
++ }
++ namespace test{
++ 111111111111111111;
++ }
++ namespace {
++ 111111111111111111;
++ }
++ namespace test {
++ 111111111111111111;
++ namespace test2 {
++ 22222222222222222;
++ }
++ }
++
++ /* invalid namespaces use block indent */
++ namespace test test2 {
++ 111111111111111111111;
++ }
++ namespace11111111111 {
++ 111111111111;
++ }
++ namespace() {
++ 1111111111111;
++ }
++ namespace()
++ {
++ 111111111111111111;
++ }
++ namespace test test2
++ {
++ 1111111111111111111;
++ }
++ namespace111111111
++ {
++ 111111111111111111;
++ }
++ NAMESPACEEND
++
++
+*** ../vim-7.3.201/src/version.c 2011-05-25 13:33:59.000000000 +0200
+--- src/version.c 2011-05-25 15:14:20.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 202,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+107. When using your phone you forget that you don't have to use your
+ keyboard.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.203 b/source/ap/vim/patches/7.3.203
new file mode 100644
index 000000000..62c298972
--- /dev/null
+++ b/source/ap/vim/patches/7.3.203
@@ -0,0 +1,102 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.203
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.203
+Problem: MS-Windows: Can't run an external command without a console window.
+Solution: Support ":!start /b cmd". (Xaizek)
+Files: runtime/doc/os_win32.txt, src/os_win32.c
+
+
+*** ../mercurial/vim73/src/os_win32.c 2011-05-05 18:31:54.000000000 +0200
+--- src/os_win32.c 2011-05-25 16:45:31.000000000 +0200
+***************
+*** 3401,3406 ****
+--- 3401,3407 ----
+ {
+ STARTUPINFO si;
+ PROCESS_INFORMATION pi;
++ DWORD flags = CREATE_NEW_CONSOLE;
+
+ si.cb = sizeof(si);
+ si.lpReserved = NULL;
+***************
+*** 3418,3423 ****
+--- 3419,3440 ----
+ si.dwFlags = STARTF_USESHOWWINDOW;
+ si.wShowWindow = SW_SHOWMINNOACTIVE;
+ }
++ else if ((STRNICMP(cmdbase, "/b", 2) == 0)
++ && vim_iswhite(cmdbase[2]))
++ {
++ cmdbase = skipwhite(cmdbase + 2);
++ flags = CREATE_NO_WINDOW;
++ si.dwFlags = STARTF_USESTDHANDLES;
++ si.hStdInput = CreateFile("\\\\.\\NUL", // File name
++ GENERIC_READ, // Access flags
++ 0, // Share flags
++ NULL, // Security att.
++ OPEN_EXISTING, // Open flags
++ FILE_ATTRIBUTE_NORMAL, // File att.
++ NULL); // Temp file
++ si.hStdOutput = si.hStdInput;
++ si.hStdError = si.hStdInput;
++ }
+
+ /* When the command is in double quotes, but 'shellxquote' is
+ * empty, keep the double quotes around the command.
+***************
+*** 3445,3451 ****
+ NULL, // Process security attributes
+ NULL, // Thread security attributes
+ FALSE, // Inherit handles
+! CREATE_NEW_CONSOLE, // Creation flags
+ NULL, // Environment
+ NULL, // Current directory
+ &si, // Startup information
+--- 3462,3468 ----
+ NULL, // Process security attributes
+ NULL, // Thread security attributes
+ FALSE, // Inherit handles
+! flags, // Creation flags
+ NULL, // Environment
+ NULL, // Current directory
+ &si, // Startup information
+***************
+*** 3458,3463 ****
+--- 3475,3485 ----
+ EMSG(_("E371: Command not found"));
+ #endif
+ }
++ if (si.hStdInput != NULL)
++ {
++ /* Close the handle to \\.\NUL */
++ CloseHandle(si.hStdInput);
++ }
+ /* Close the handles to the subprocess, so that it goes away */
+ CloseHandle(pi.hThread);
+ CloseHandle(pi.hProcess);
+*** ../vim-7.3.202/src/version.c 2011-05-25 15:16:06.000000000 +0200
+--- src/version.c 2011-05-25 17:05:59.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 203,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+108. While reading a magazine, you look for the Zoom icon for a better
+ look at a photograph.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.204 b/source/ap/vim/patches/7.3.204
new file mode 100644
index 000000000..b2b63602e
--- /dev/null
+++ b/source/ap/vim/patches/7.3.204
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.204
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.204 (after 7.3.201)
+Problem: Compiler warning.
+Solution: Add type cast. (Mike Williams)
+Files: src/misc1.c
+
+
+*** ../mercurial/vim73/src/misc1.c 2011-05-25 15:16:06.000000000 +0200
+--- src/misc1.c 2011-05-25 17:25:10.000000000 +0200
+***************
+*** 7657,7663 ****
+ * not the one from "if () {". */
+ if (*l == '}')
+ curwin->w_cursor.col =
+! (l - ml_get_curline()) + 1;
+
+ if ((trypos = find_start_brace(ind_maxcomment))
+ == NULL
+--- 7657,7663 ----
+ * not the one from "if () {". */
+ if (*l == '}')
+ curwin->w_cursor.col =
+! (colnr_T)(l - ml_get_curline()) + 1;
+
+ if ((trypos = find_start_brace(ind_maxcomment))
+ == NULL
+*** ../vim-7.3.203/src/version.c 2011-05-25 17:06:16.000000000 +0200
+--- src/version.c 2011-05-25 17:29:32.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 204,
+ /**/
+
+--
+In a world without walls and borders, who needs windows and gates?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.205 b/source/ap/vim/patches/7.3.205
new file mode 100644
index 000000000..b49a040e4
--- /dev/null
+++ b/source/ap/vim/patches/7.3.205
@@ -0,0 +1,93 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.205
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.205
+Problem: Syntax "extend" doesn't work correctly.
+Solution: Avoid calling check_state_ends() recursively (Ben Schmidt)
+Files: src/syntax.c
+
+
+*** ../mercurial/vim73/src/syntax.c 2011-05-19 12:14:03.000000000 +0200
+--- src/syntax.c 2011-05-25 17:47:46.000000000 +0200
+***************
+*** 990,996 ****
+--- 990,999 ----
+ * previous line and regions that have "keepend".
+ */
+ if (current_state.ga_len > 0)
++ {
+ syn_update_ends(TRUE);
++ check_state_ends();
++ }
+
+ next_match_idx = -1;
+ ++current_line_id;
+***************
+*** 1064,1070 ****
+ }
+ }
+ check_keepend();
+- check_state_ends();
+ }
+
+ /****************************************
+--- 1067,1072 ----
+***************
+*** 2533,2539 ****
+ check_state_ends()
+ {
+ stateitem_T *cur_si;
+! int had_extend = FALSE;
+
+ cur_si = &CUR_STATE(current_state.ga_len - 1);
+ for (;;)
+--- 2535,2541 ----
+ check_state_ends()
+ {
+ stateitem_T *cur_si;
+! int had_extend;
+
+ cur_si = &CUR_STATE(current_state.ga_len - 1);
+ for (;;)
+***************
+*** 2586,2593 ****
+
+ /* When the ended item has "extend", another item with
+ * "keepend" now needs to check for its end. */
+! if (cur_si->si_flags & HL_EXTEND)
+! had_extend = TRUE;
+
+ pop_current_state();
+
+--- 2588,2594 ----
+
+ /* When the ended item has "extend", another item with
+ * "keepend" now needs to check for its end. */
+! had_extend = (cur_si->si_flags & HL_EXTEND);
+
+ pop_current_state();
+
+*** ../vim-7.3.204/src/version.c 2011-05-25 17:29:40.000000000 +0200
+--- src/version.c 2011-05-25 17:52:57.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 205,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+110. You actually volunteer to become your employer's webmaster.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.206 b/source/ap/vim/patches/7.3.206
new file mode 100644
index 000000000..8a91f0ae2
--- /dev/null
+++ b/source/ap/vim/patches/7.3.206
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.206
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.206
+Problem: 64bit MS-Windows compiler warning.
+Solution: Use HandleToLong() instead of type cast. (Mike Williams)
+Files: src/gui_w32.c
+
+
+*** ../mercurial/vim73/src/gui_w32.c 2011-01-17 20:08:04.000000000 +0100
+--- src/gui_w32.c 2011-05-25 21:14:10.000000000 +0200
+***************
+*** 1575,1581 ****
+
+ #ifdef FEAT_EVAL
+ /* set the v:windowid variable */
+! set_vim_var_nr(VV_WINDOWID, (long)s_hwnd);
+ #endif
+
+ theend:
+--- 1575,1581 ----
+
+ #ifdef FEAT_EVAL
+ /* set the v:windowid variable */
+! set_vim_var_nr(VV_WINDOWID, HandleToLong(s_hwnd));
+ #endif
+
+ theend:
+*** ../vim-7.3.205/src/version.c 2011-05-25 17:56:23.000000000 +0200
+--- src/version.c 2011-05-25 21:16:17.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 206,
+ /**/
+
+--
+FIXME and XXX are two common keywords used to mark broken or incomplete code
+not only since XXX as a sex reference would grab everybody's attention but
+simply due to the fact that Vim would highlight these words.
+ -- Hendrik Scholz
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.207 b/source/ap/vim/patches/7.3.207
new file mode 100644
index 000000000..95b335ecc
--- /dev/null
+++ b/source/ap/vim/patches/7.3.207
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.207
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.207
+Problem: Can't compile with MSVC with pentium4 and 64 bit.
+Solution: Only use SSE2 for 32 bit. (Mike Williams)
+Files: src/Make_mvc.mak
+
+
+*** ../mercurial/vim73/src/Make_mvc.mak 2011-02-15 18:06:11.000000000 +0100
+--- src/Make_mvc.mak 2011-06-04 11:59:38.000000000 +0200
+***************
+*** 409,416 ****
+ CPUARG =
+ !endif
+ !else
+! # VC8/9 only allows specifying SSE architecture
+! !if "$(CPUNR)" == "pentium4"
+ CPUARG = /arch:SSE2
+ !endif
+ !endif
+--- 409,416 ----
+ CPUARG =
+ !endif
+ !else
+! # VC8/9/10 only allows specifying SSE architecture but only for 32bit
+! !if "$(ASSEMBLY_ARCHITECTURE)" == "x86" && "$(CPUNR)" == "pentium4"
+ CPUARG = /arch:SSE2
+ !endif
+ !endif
+*** ../vim-7.3.206/src/version.c 2011-05-25 21:18:02.000000000 +0200
+--- src/version.c 2011-06-12 20:30:30.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 207,
+ /**/
+
+--
+"The question of whether computers can think is just like the question
+of whether submarines can swim." -- Edsger W. Dijkstra
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.208 b/source/ap/vim/patches/7.3.208
new file mode 100644
index 000000000..c5a792957
--- /dev/null
+++ b/source/ap/vim/patches/7.3.208
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.208
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.208
+Problem: Early terminated if statement.
+Solution: Remove the semicolon. (Lech Lorens)
+Files: src/gui_mac.c
+
+
+*** ../mercurial/vim73/src/gui_mac.c 2011-01-17 20:08:04.000000000 +0100
+--- src/gui_mac.c 2011-06-06 05:35:46.000000000 +0200
+***************
+*** 1840,1846 ****
+ p.v -= gui.scrollbar_height;
+ p.v -= p.v % gui.char_height;
+ p.v += 2 * gui.border_width;
+! if (gui.which_scrollbars[SBAR_BOTTOM]);
+ p.v += gui.scrollbar_height;
+
+ ZoomWindowIdeal(whichWindow, thePart, &p);
+--- 1840,1846 ----
+ p.v -= gui.scrollbar_height;
+ p.v -= p.v % gui.char_height;
+ p.v += 2 * gui.border_width;
+! if (gui.which_scrollbars[SBAR_BOTTOM])
+ p.v += gui.scrollbar_height;
+
+ ZoomWindowIdeal(whichWindow, thePart, &p);
+*** ../vim-7.3.207/src/version.c 2011-06-12 20:31:25.000000000 +0200
+--- src/version.c 2011-06-12 20:33:00.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 208,
+ /**/
+
+--
+Keep America beautiful. Swallow your beer cans.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.209 b/source/ap/vim/patches/7.3.209
new file mode 100644
index 000000000..afd4ab825
--- /dev/null
+++ b/source/ap/vim/patches/7.3.209
@@ -0,0 +1,95 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.209
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.209
+Problem: MSVC Install instructions point to wrong batch file.
+Solution: Add a batch file for use with MSVC 10.
+Files: src/msvc2010.bat, src/INSTALLpc.txt, Filelist
+
+
+*** ../mercurial/vim73/src/msvc2010.bat 2011-06-12 20:35:31.000000000 +0200
+--- src/msvc2010.bat 2011-06-09 05:08:35.000000000 +0200
+***************
+*** 0 ****
+--- 1,7 ----
++ @echo off
++ rem To be used on MS-Windows for Visual C++ 2010 Express Edition
++ rem aka Microsoft Visual Studio 10.0.
++ rem See INSTALLpc.txt for information.
++ @echo on
++
++ call "%VS100COMNTOOLS%%vsvars32.bat"
+*** ../mercurial/vim73/src/INSTALLpc.txt 2010-08-16 21:23:30.000000000 +0200
+--- src/INSTALLpc.txt 2011-06-08 06:47:46.000000000 +0200
+***************
+*** 28,35 ****
+ 9. MS-DOS
+
+ The currently preferred method is using the free Visual C++ Toolkit 2008
+! |msvc-2008-express|. If you need the executable to run on Windows 98 or ME,
+! use the 2003 one |msvc-2003-toolkit|.
+
+
+ 1. Microsoft Visual C++
+--- 28,36 ----
+ 9. MS-DOS
+
+ The currently preferred method is using the free Visual C++ Toolkit 2008
+! |msvc-2008-express|, the produced binary runs on most MS-Windows systems. If
+! you need the executable to run on Windows 98 or ME, use the 2003 one
+! |msvc-2003-toolkit|.
+
+
+ 1. Microsoft Visual C++
+***************
+*** 176,182 ****
+ http://www.microsoft.com/express/vc/Default.aspx
+ This includes the IDE and the debugger.
+
+! To set the environment execute the msvc2008.bat script. You can then build
+ Vim with Make_mvc.mak.
+
+
+--- 177,183 ----
+ http://www.microsoft.com/express/vc/Default.aspx
+ This includes the IDE and the debugger.
+
+! To set the environment execute the msvc2010.bat script. You can then build
+ Vim with Make_mvc.mak.
+
+
+*** ../mercurial/vim73/Filelist 2011-05-19 13:40:47.000000000 +0200
+--- Filelist 2011-06-09 05:17:25.000000000 +0200
+***************
+*** 262,267 ****
+--- 262,268 ----
+ src/bigvim.bat \
+ src/msvcsetup.bat \
+ src/msvc2008.bat \
++ src/msvc2010.bat \
+ src/dimm.idl \
+ src/dlldata.c \
+ src/dosinst.c \
+*** ../vim-7.3.208/src/version.c 2011-06-12 20:33:30.000000000 +0200
+--- src/version.c 2011-06-12 20:34:44.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 209,
+ /**/
+
+--
+"Hit any key to continue" is a lie.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.210 b/source/ap/vim/patches/7.3.210
new file mode 100644
index 000000000..f02fe6fe6
--- /dev/null
+++ b/source/ap/vim/patches/7.3.210
@@ -0,0 +1,182 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.210
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.210
+Problem: Can't always find the file when using cscope.
+Solution: Add the 'cscoperelative' option. (Raghavendra D Prabhu)
+Files: runtime/doc/if_cscop.txt, runtime/doc/options.txt,
+ src/if_cscope.c, src/options.c, src/options.h
+
+
+*** ../mercurial/vim73/runtime/doc/if_cscop.txt 2010-09-30 21:38:08.000000000 +0200
+--- runtime/doc/if_cscop.txt 2011-06-12 19:54:26.000000000 +0200
+***************
+*** 271,276 ****
+--- 271,285 ----
+ :set cst
+ :set nocst
+ <
++ *cscoperelative* *csre*
++ If 'cscoperelative' set, then in absence of a prefix given to cscope (prefx
++ is the argument to -P option of cscope), basename of cscope.out location
++ (usually the project root directory) will be used as the prefix to construt
++ absolute path.The default is off. Note: This option is only effective when
++ cscope (cscopeprg) is initialized without a prefix path (-P). Examples: >
++ :set csre
++ :set nocsre
++ <
+ *cscopetagorder* *csto*
+ The value of 'csto' determines the order in which |:cstag| performs a search.
+ If 'csto' is set to zero, cscope database(s) are searched first, followed
+*** ../mercurial/vim73/runtime/doc/options.txt 2011-05-19 12:22:41.000000000 +0200
+--- runtime/doc/options.txt 2011-06-12 20:00:10.000000000 +0200
+***************
+*** 2209,2214 ****
+--- 2209,2224 ----
+ Specifies whether to use quickfix window to show cscope results.
+ See |cscopequickfix|.
+
++ *'cscoperelative'* *'csre'*
++ 'cscoperelative' 'csre' boolean (default off)
++ global
++ {not available when compiled without the |+cscope|
++ feature}
++ {not in Vi}
++ In the absence of a prefix (-P) for cscope. setting this option enables
++ to use the basename of cscope.out path as the prefix.
++ See |cscoperelative|.
++
+ *'cscopetag'* *'cst'* *'nocscopetag'* *'nocst'*
+ 'cscopetag' 'cst' boolean (default off)
+ global
+*** ../mercurial/vim73/src/if_cscope.c 2011-05-05 16:41:19.000000000 +0200
+--- src/if_cscope.c 2011-06-12 20:25:17.000000000 +0200
+***************
+*** 2471,2512 ****
+ */
+ static char *
+ cs_resolve_file(i, name)
+! int i;
+ char *name;
+ {
+! char *fullname;
+! int len;
+
+ /*
+! * ppath is freed when we destroy the cscope connection.
+! * fullname is freed after cs_make_vim_style_matches, after it's been
+! * copied into the tag buffer used by vim
+ */
+ len = (int)(strlen(name) + 2);
+ if (csinfo[i].ppath != NULL)
+ len += (int)strlen(csinfo[i].ppath);
+
+ if ((fullname = (char *)alloc(len)) == NULL)
+ return NULL;
+
+! /*
+! * note/example: this won't work if the cscope output already starts
+ * "../.." and the prefix path is also "../..". if something like this
+! * happens, you are screwed up and need to fix how you're using cscope.
+! */
+! if (csinfo[i].ppath != NULL &&
+! (strncmp(name, csinfo[i].ppath, strlen(csinfo[i].ppath)) != 0) &&
+! (name[0] != '/')
+ #ifdef WIN32
+! && name[0] != '\\' && name[1] != ':'
+ #endif
+! )
+ (void)sprintf(fullname, "%s/%s", csinfo[i].ppath, name);
+ else
+ (void)sprintf(fullname, "%s", name);
+
+ return fullname;
+! } /* cs_resolve_file */
+
+
+ /*
+--- 2471,2531 ----
+ */
+ static char *
+ cs_resolve_file(i, name)
+! int i;
+ char *name;
+ {
+! char *fullname;
+! int len;
+! char_u *csdir = NULL;
+
+ /*
+! * Ppath is freed when we destroy the cscope connection.
+! * Fullname is freed after cs_make_vim_style_matches, after it's been
+! * copied into the tag buffer used by Vim.
+ */
+ len = (int)(strlen(name) + 2);
+ if (csinfo[i].ppath != NULL)
+ len += (int)strlen(csinfo[i].ppath);
++ else if (p_csre && csinfo[i].fname != NULL)
++ {
++ /* If 'cscoperelative' is set and ppath is not set, use cscope.out
++ * path in path resolution. */
++ csdir = alloc(MAXPATHL);
++ if (csdir != NULL)
++ {
++ vim_strncpy(csdir, (char_u *)csinfo[i].fname,
++ gettail((char_u *)csinfo[i].fname) - 1 - (char_u *)csinfo[i].fname);
++ len += (int)STRLEN(csdir);
++ }
++ }
+
+ if ((fullname = (char *)alloc(len)) == NULL)
+ return NULL;
+
+! /* Note/example: this won't work if the cscope output already starts
+ * "../.." and the prefix path is also "../..". if something like this
+! * happens, you are screwed up and need to fix how you're using cscope. */
+! if (csinfo[i].ppath != NULL
+! && (strncmp(name, csinfo[i].ppath, strlen(csinfo[i].ppath)) != 0)
+! && (name[0] != '/')
+ #ifdef WIN32
+! && name[0] != '\\' && name[1] != ':'
+ #endif
+! )
+ (void)sprintf(fullname, "%s/%s", csinfo[i].ppath, name);
++ else if (csdir != NULL && csinfo[i].fname != NULL && STRLEN(csdir) > 0)
++ {
++ /* Check for csdir to be non empty to avoid empty path concatenated to
++ * cscope output. TODO: avoid the unnecessary alloc/free of fullname. */
++ vim_free(fullname);
++ fullname = concat_fnames(csdir, (char_u *)name, TRUE);
++ }
+ else
+ (void)sprintf(fullname, "%s", name);
+
++ vim_free(csdir);
+ return fullname;
+! }
+
+
+ /*
+*** ../vim-7.3.209/src/version.c 2011-06-12 20:36:00.000000000 +0200
+--- src/version.c 2011-06-12 20:37:48.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 210,
+ /**/
+
+--
+Apathy Error: Don't bother striking any key.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.211 b/source/ap/vim/patches/7.3.211
new file mode 100644
index 000000000..4760c106c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.211
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.211
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.211 (after 7.3.210)
+Problem: Compiler warning.
+Solution: Add type cast.
+Files: src/if_cscope.c
+
+
+*** ../mercurial/vim73/src/if_cscope.c 2011-06-12 20:42:17.000000000 +0200
+--- src/if_cscope.c 2011-06-12 21:22:53.000000000 +0200
+***************
+*** 2518,2524 ****
+ /* Check for csdir to be non empty to avoid empty path concatenated to
+ * cscope output. TODO: avoid the unnecessary alloc/free of fullname. */
+ vim_free(fullname);
+! fullname = concat_fnames(csdir, (char_u *)name, TRUE);
+ }
+ else
+ (void)sprintf(fullname, "%s", name);
+--- 2518,2524 ----
+ /* Check for csdir to be non empty to avoid empty path concatenated to
+ * cscope output. TODO: avoid the unnecessary alloc/free of fullname. */
+ vim_free(fullname);
+! fullname = (char *)concat_fnames(csdir, (char_u *)name, TRUE);
+ }
+ else
+ (void)sprintf(fullname, "%s", name);
+*** ../vim-7.3.210/src/version.c 2011-06-12 20:42:17.000000000 +0200
+--- src/version.c 2011-06-12 21:24:03.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 211,
+ /**/
+
+--
+Did you ever see a "Hit any key to continue" message in a music piece?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.212 b/source/ap/vim/patches/7.3.212
new file mode 100644
index 000000000..d5086db0a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.212
@@ -0,0 +1,243 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.212
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.212
+Problem: With Python 3.2 ":py3" fails.
+Solution: Move PyEval_InitThreads() to after Py_Initialize(). (Roland
+ Puntaier) Check abiflags in configure. (Andreas Behr)
+Files: src/if_python3.c, src/auto/configure, src/configure.in
+
+
+*** ../mercurial/vim73/src/if_python3.c 2011-02-25 15:18:46.000000000 +0100
+--- src/if_python3.c 2011-06-11 04:24:49.000000000 +0200
+***************
+*** 547,560 ****
+ Py_SetPythonHome(PYTHON3_HOME);
+ #endif
+
+- /* initialise threads */
+- PyEval_InitThreads();
+-
+ #if !defined(MACOS) || defined(MACOS_X_UNIX)
+ Py_Initialize();
+ #else
+ PyMac_Initialize();
+ #endif
+
+ #ifdef DYNAMIC_PYTHON3
+ get_py3_exceptions();
+--- 547,559 ----
+ Py_SetPythonHome(PYTHON3_HOME);
+ #endif
+
+ #if !defined(MACOS) || defined(MACOS_X_UNIX)
+ Py_Initialize();
+ #else
+ PyMac_Initialize();
+ #endif
++ /* initialise threads, must be after Py_Initialize() */
++ PyEval_InitThreads();
+
+ #ifdef DYNAMIC_PYTHON3
+ get_py3_exceptions();
+*** ../mercurial/vim73/src/auto/configure 2011-05-10 15:41:59.000000000 +0200
+--- src/auto/configure 2011-06-12 21:33:16.000000000 +0200
+***************
+*** 5505,5510 ****
+--- 5505,5527 ----
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python3_version" >&5
+ $as_echo "$vi_cv_var_python3_version" >&6; }
+
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's abiflags" >&5
++ $as_echo_n "checking Python's abiflags... " >&6; }
++ if test "${vi_cv_var_python3_abiflags+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++ else
++
++ vi_cv_var_python3_abiflags=
++ if ${vi_cv_path_python3} -c \
++ "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
++ then
++ vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
++ "import sys; print(sys.abiflags)"`
++ fi
++ fi
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python3_abiflags" >&5
++ $as_echo "$vi_cv_var_python3_abiflags" >&6; }
++
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's install prefix" >&5
+ $as_echo_n "checking Python's install prefix... " >&6; }
+ if test "${vi_cv_path_python3_pfx+set}" = set; then :
+***************
+*** 5555,5563 ****
+ else
+
+ vi_cv_path_python3_conf=
+ for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
+ for subdir in lib64 lib share; do
+! d="${path}/${subdir}/python${vi_cv_var_python3_version}/config"
+ if test -d "$d" && test -f "$d/config.c"; then
+ vi_cv_path_python3_conf="$d"
+ fi
+--- 5572,5584 ----
+ else
+
+ vi_cv_path_python3_conf=
++ config_dir="config"
++ if test "${vi_cv_var_python3_abiflags}" != ""; then
++ config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
++ fi
+ for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
+ for subdir in lib64 lib share; do
+! d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
+ if test -d "$d" && test -f "$d/config.c"; then
+ vi_cv_path_python3_conf="$d"
+ fi
+***************
+*** 5592,5598 ****
+ eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+ rm -f -- "${tmp_mkf}"
+ vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}"
+! vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS} ${python3_LINKFORSHARED}"
+ vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
+ vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
+
+--- 5613,5619 ----
+ eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+ rm -f -- "${tmp_mkf}"
+ vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}"
+! vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
+ vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
+ vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
+
+***************
+*** 5601,5609 ****
+
+ PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
+ if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
+! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ else
+! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ fi
+ PYTHON3_SRC="if_python3.c"
+ if test "x$MACOSX" = "xyes"; then
+--- 5622,5630 ----
+
+ PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
+ if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
+! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ else
+! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ fi
+ PYTHON3_SRC="if_python3.c"
+ if test "x$MACOSX" = "xyes"; then
+*** ../mercurial/vim73/src/configure.in 2011-05-10 15:41:59.000000000 +0200
+--- src/configure.in 2011-06-12 21:31:18.000000000 +0200
+***************
+*** 992,997 ****
+--- 992,1008 ----
+ ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
+ ]])
+
++ dnl -- get abiflags for python 3.2 or higher (PEP 3149)
++ AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
++ [
++ vi_cv_var_python3_abiflags=
++ if ${vi_cv_path_python3} -c \
++ "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
++ then
++ vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
++ "import sys; print(sys.abiflags)"`
++ fi ])
++
+ dnl -- find where python3 thinks it was installed
+ AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
+ [ vi_cv_path_python3_pfx=`
+***************
+*** 1021,1029 ****
+ AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
+ [
+ vi_cv_path_python3_conf=
+ for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
+ for subdir in lib64 lib share; do
+! d="${path}/${subdir}/python${vi_cv_var_python3_version}/config"
+ if test -d "$d" && test -f "$d/config.c"; then
+ vi_cv_path_python3_conf="$d"
+ fi
+--- 1032,1044 ----
+ AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
+ [
+ vi_cv_path_python3_conf=
++ config_dir="config"
++ if test "${vi_cv_var_python3_abiflags}" != ""; then
++ config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
++ fi
+ for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
+ for subdir in lib64 lib share; do
+! d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
+ if test -d "$d" && test -f "$d/config.c"; then
+ vi_cv_path_python3_conf="$d"
+ fi
+***************
+*** 1055,1061 ****
+ eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+ rm -f -- "${tmp_mkf}"
+ vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}"
+! vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS} ${python3_LINKFORSHARED}"
+ dnl remove -ltermcap, it can conflict with an earlier -lncurses
+ vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
+ vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
+--- 1070,1076 ----
+ eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+ rm -f -- "${tmp_mkf}"
+ vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}"
+! vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
+ dnl remove -ltermcap, it can conflict with an earlier -lncurses
+ vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
+ vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
+***************
+*** 1063,1071 ****
+
+ PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
+ if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
+! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ else
+! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ fi
+ PYTHON3_SRC="if_python3.c"
+ dnl For Mac OSX 10.2 config.o is included in the Python library.
+--- 1078,1086 ----
+
+ PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
+ if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
+! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ else
+! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ fi
+ PYTHON3_SRC="if_python3.c"
+ dnl For Mac OSX 10.2 config.o is included in the Python library.
+*** ../vim-7.3.211/src/version.c 2011-06-12 21:24:56.000000000 +0200
+--- src/version.c 2011-06-12 21:35:31.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 212,
+ /**/
+
+--
+In Joseph Heller's novel "Catch-22", the main character tries to get out of a
+war by proving he is crazy. But the mere fact he wants to get out of the war
+only shows he isn't crazy -- creating the original "Catch-22".
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.213 b/source/ap/vim/patches/7.3.213
new file mode 100644
index 000000000..d3ef325e1
--- /dev/null
+++ b/source/ap/vim/patches/7.3.213
@@ -0,0 +1,142 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.213
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.213
+Problem: Javascript object literal is not indented correctly.
+Solution: Make a special case for when "J1" is in 'cino'. (Luc Deschenaux)
+Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../mercurial/vim73/src/misc1.c 2011-05-25 17:29:40.000000000 +0200
+--- src/misc1.c 2011-06-10 04:58:10.000000000 +0200
+***************
+*** 6965,6971 ****
+ * ldfd) {
+ * }
+ */
+! if ((ind_keep_case_label
+ && cin_iscase(skipwhite(ml_get_curline()), FALSE)))
+ amount = get_indent();
+ else
+--- 6965,6971 ----
+ * ldfd) {
+ * }
+ */
+! if (ind_js || (ind_keep_case_label
+ && cin_iscase(skipwhite(ml_get_curline()), FALSE)))
+ amount = get_indent();
+ else
+*** ../mercurial/vim73/src/testdir/test3.in 2011-05-25 15:16:06.000000000 +0200
+--- src/testdir/test3.in 2011-06-12 21:44:12.000000000 +0200
+***************
+*** 1492,1501 ****
+
+ STARTTEST
+ :set cino=N-s
+! /namespaces
+ =/^NAMESPACEEND
+ ENDTEST
+
+ /* valid namespaces with normal indent */
+ namespace
+ {
+--- 1492,1502 ----
+
+ STARTTEST
+ :set cino=N-s
+! /^NAMESPACESTART
+ =/^NAMESPACEEND
+ ENDTEST
+
++ NAMESPACESTART
+ /* valid namespaces with normal indent */
+ namespace
+ {
+***************
+*** 1561,1566 ****
+--- 1562,1588 ----
+
+
+ STARTTEST
++ :set cino=J1
++ /^JSSTART
++ =/^JSEND
++ ENDTEST
++
++ JSSTART
++ var bar = {
++ foo: {
++ that: this,
++ some: ok,
++ },
++ "bar":{
++ a : 2,
++ b: "123abc",
++ x: 4,
++ "y": 5
++ }
++ }
++ JSEND
++
++ STARTTEST
+ :g/^STARTTEST/.,/^ENDTEST/d
+ :1;/start of AUTO/,$wq! test.out
+ ENDTEST
+*** ../mercurial/vim73/src/testdir/test3.ok 2011-05-25 15:16:06.000000000 +0200
+--- src/testdir/test3.ok 2011-06-12 21:44:26.000000000 +0200
+***************
+*** 1337,1342 ****
+--- 1337,1343 ----
+ }
+
+
++ NAMESPACESTART
+ /* valid namespaces with normal indent */
+ namespace
+ {
+***************
+*** 1401,1403 ****
+--- 1402,1420 ----
+ NAMESPACEEND
+
+
++
++ JSSTART
++ var bar = {
++ foo: {
++ that: this,
++ some: ok,
++ },
++ "bar":{
++ a : 2,
++ b: "123abc",
++ x: 4,
++ "y": 5
++ }
++ }
++ JSEND
++
+*** ../vim-7.3.212/src/version.c 2011-06-12 21:37:06.000000000 +0200
+--- src/version.c 2011-06-12 21:48:34.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 213,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+169. You hire a housekeeper for your home page.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.214 b/source/ap/vim/patches/7.3.214
new file mode 100644
index 000000000..a095bbc43
--- /dev/null
+++ b/source/ap/vim/patches/7.3.214
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.214
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.214
+Problem: The text displayed by ":z-" isn't exactly like old Vi.
+Solution: Add one to the start line number. (ChangZhuo Chen)
+Files: src/ex_cmds.c
+
+
+*** ../mercurial/vim73/src/ex_cmds.c 2011-05-19 14:30:07.000000000 +0200
+--- src/ex_cmds.c 2011-05-19 14:23:33.000000000 +0200
+***************
+*** 4097,4104 ****
+ switch (*kind)
+ {
+ case '-':
+! start = lnum - bigness * (linenr_T)(x - kind);
+! end = start + bigness;
+ curs = end;
+ break;
+
+--- 4097,4104 ----
+ switch (*kind)
+ {
+ case '-':
+! start = lnum - bigness * (linenr_T)(x - kind) + 1;
+! end = start + bigness - 1;
+ curs = end;
+ break;
+
+*** ../vim-7.3.213/src/version.c 2011-06-12 21:51:01.000000000 +0200
+--- src/version.c 2011-06-12 22:02:20.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 214,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+170. You introduce your wife as "my_lady@home.wife" and refer to your
+ children as "forked processes."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.215 b/source/ap/vim/patches/7.3.215
new file mode 100644
index 000000000..24d37fbfe
--- /dev/null
+++ b/source/ap/vim/patches/7.3.215
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.215
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.215 (after 7.3.210)
+Problem: Wrong file names in previous patch. (Toothpik)
+Solution: Include the option changes.
+Files: src/option.c, src/option.h
+
+
+*** ../mercurial/vim73/src/option.c 2011-05-19 13:40:47.000000000 +0200
+--- src/option.c 2011-06-12 19:58:17.000000000 +0200
+***************
+*** 901,906 ****
+--- 901,913 ----
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+ SCRIPTID_INIT},
++ {"cscoperelative", "csre", P_BOOL|P_VI_DEF|P_VIM,
++ #ifdef FEAT_CSCOPE
++ (char_u *)&p_csre, PV_NONE,
++ #else
++ (char_u *)NULL, PV_NONE,
++ #endif
++ {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"cscopetag", "cst", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_CSCOPE
+ (char_u *)&p_cst, PV_NONE,
+*** ../mercurial/vim73/src/option.h 2011-05-19 13:40:47.000000000 +0200
+--- src/option.h 2011-06-12 19:58:49.000000000 +0200
+***************
+*** 391,396 ****
+--- 391,397 ----
+ EXTERN char_u *p_cpo; /* 'cpoptions' */
+ #ifdef FEAT_CSCOPE
+ EXTERN char_u *p_csprg; /* 'cscopeprg' */
++ EXTERN int p_csre; /* 'cscoperelative' */
+ # ifdef FEAT_QUICKFIX
+ EXTERN char_u *p_csqf; /* 'cscopequickfix' */
+ # define CSQF_CMDS "sgdctefi"
+*** ../vim-7.3.214/src/version.c 2011-06-12 22:03:15.000000000 +0200
+--- src/version.c 2011-06-12 22:12:34.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 215,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+171. You invent another person and chat with yourself in empty chat rooms.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.216 b/source/ap/vim/patches/7.3.216
new file mode 100644
index 000000000..a52bc936b
--- /dev/null
+++ b/source/ap/vim/patches/7.3.216
@@ -0,0 +1,263 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.216
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.216
+Problem: When recovering a file a range of lines is missing. (Charles Jie)
+Solution: Reset the index when advancing to the next pointer block. Add a
+ test to verify recovery works.
+Files: src/memline.c, src/testdir/test78.in, src/testdir/test78.ok,
+ src/testdir/Makefile, src/testdir/Make_amiga.mak,
+ src/testdir/Make_dos.mak, src/testdir/Make_ming.mak,
+ src/testdir/Make_os2.mak, src/testdir/Make_vms.mms
+
+
+*** ../mercurial/vim73/src/memline.c 2011-05-10 16:41:13.000000000 +0200
+--- src/memline.c 2011-06-13 00:56:09.000000000 +0200
+***************
+*** 1507,1512 ****
+--- 1507,1513 ----
+ bnum = pp->pb_pointer[idx].pe_bnum;
+ line_count = pp->pb_pointer[idx].pe_line_count;
+ page_count = pp->pb_pointer[idx].pe_page_count;
++ idx = 0;
+ continue;
+ }
+ }
+*** ../mercurial/vim73/src/testdir/test78.in 2011-06-13 01:05:54.000000000 +0200
+--- src/testdir/test78.in 2011-06-13 00:54:48.000000000 +0200
+***************
+*** 0 ****
+--- 1,46 ----
++ Inserts 10000 lines with text to fill the swap file with two levels of pointer
++ blocks. Then recovers from the swap file and checks all text is restored.
++
++ We need about 10000 lines of 100 characters to get two levels of pointer
++ blocks.
++
++ STARTTEST
++ :so small.vim
++ :set nocp fileformat=unix undolevels=-1
++ :e! Xtest
++ ggdG
++ :let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoparstuvwxyz0123456789"
++ :let i = 1
++ :let linecount = 10000
++ :while i <= linecount | call append(i - 1, i . text) | let i += 1 | endwhile
++ :preserve
++ :" get the name of the swap file
++ :redir => swapname
++ :swapname
++ :redir END
++ :let swapname = substitute(swapname, '[[:blank:][:cntrl:]]*\(.\{-}\)[[:blank:][:cntrl:]]*$', '\1', '')
++ :" make a copy of the swap file in Xswap
++ :set bin
++ :exe 'sp ' . swapname
++ :w! Xswap
++ :echo swapname
++ :set nobin
++ :new
++ :only!
++ :bwipe! Xtest
++ :call rename('Xswap', swapname)
++ :recover Xtest
++ :call delete(swapname)
++ :new
++ :call append(0, 'recovery start')
++ :wincmd w
++ :let linedollar = line('$')
++ :if linedollar < linecount | exe 'wincmd w' | call append(line('$'), "expected " . linecount . " lines but found only " . linedollar) | exe 'wincmd w' | let linecount = linedollar | endif
++ :let i = 1
++ :while i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call append(line('$'), i . ' differs') | exe 'wincmd w' | endif | let i += 1 | endwhile
++ :q!
++ :call append(line('$'), 'recovery end')
++ :w! test.out
++ :qa!
++ ENDTEST
++
+*** ../mercurial/vim73/src/testdir/test78.ok 2011-06-13 01:05:54.000000000 +0200
+--- src/testdir/test78.ok 2011-06-13 00:25:05.000000000 +0200
+***************
+*** 0 ****
+--- 1,3 ----
++ recovery start
++
++ recovery end
+*** ../mercurial/vim73/src/testdir/Makefile 2011-03-22 18:10:34.000000000 +0100
+--- src/testdir/Makefile 2011-06-13 00:35:46.000000000 +0200
+***************
+*** 25,31 ****
+ test59.out test60.out test61.out test62.out test63.out \
+ test64.out test65.out test66.out test67.out test68.out \
+ test69.out test70.out test71.out test72.out test73.out \
+! test74.out test75.out test76.out test77.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 25,31 ----
+ test59.out test60.out test61.out test62.out test63.out \
+ test64.out test65.out test66.out test67.out test68.out \
+ test69.out test70.out test71.out test72.out test73.out \
+! test74.out test75.out test76.out test77.out test78.out
+
+ SCRIPTS_GUI = test16.out
+
+***************
+*** 71,77 ****
+ fi \
+ else echo $* NO OUTPUT >>test.log; \
+ fi"
+! # -rm -rf X* test.ok viminfo
+
+ test49.out: test49.vim
+
+--- 71,77 ----
+ fi \
+ else echo $* NO OUTPUT >>test.log; \
+ fi"
+! -rm -rf X* test.ok viminfo
+
+ test49.out: test49.vim
+
+*** ../mercurial/vim73/src/testdir/Make_amiga.mak 2011-03-22 18:10:34.000000000 +0100
+--- src/testdir/Make_amiga.mak 2011-06-13 01:00:42.000000000 +0200
+***************
+*** 28,34 ****
+ test61.out test62.out test63.out test64.out test65.out \
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+! test76.out test77.out
+
+ .SUFFIXES: .in .out
+
+--- 28,34 ----
+ test61.out test62.out test63.out test64.out test65.out \
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+! test76.out test77.out test78.out
+
+ .SUFFIXES: .in .out
+
+***************
+*** 125,127 ****
+--- 125,128 ----
+ test75.out: test75.in
+ test76.out: test76.in
+ test77.out: test77.in
++ test78.out: test78.in
+*** ../mercurial/vim73/src/testdir/Make_dos.mak 2011-03-22 18:10:34.000000000 +0100
+--- src/testdir/Make_dos.mak 2011-06-13 01:00:55.000000000 +0200
+***************
+*** 28,34 ****
+ test37.out test38.out test39.out test40.out test41.out \
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+! test74.out test75.out test76.out test77.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 28,34 ----
+ test37.out test38.out test39.out test40.out test41.out \
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+! test74.out test75.out test76.out test77.out test78.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../mercurial/vim73/src/testdir/Make_ming.mak 2011-03-22 18:10:34.000000000 +0100
+--- src/testdir/Make_ming.mak 2011-06-13 01:01:02.000000000 +0200
+***************
+*** 48,54 ****
+ test37.out test38.out test39.out test40.out test41.out \
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+! test74.out test75.out test76.out test77.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 48,54 ----
+ test37.out test38.out test39.out test40.out test41.out \
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+! test74.out test75.out test76.out test77.out test78.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../mercurial/vim73/src/testdir/Make_os2.mak 2011-03-22 18:10:34.000000000 +0100
+--- src/testdir/Make_os2.mak 2011-06-13 01:01:08.000000000 +0200
+***************
+*** 28,34 ****
+ test61.out test62.out test63.out test64.out test65.out \
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+! test76.out test77.out
+
+ .SUFFIXES: .in .out
+
+--- 28,34 ----
+ test61.out test62.out test63.out test64.out test65.out \
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+! test76.out test77.out test78.out
+
+ .SUFFIXES: .in .out
+
+*** ../mercurial/vim73/src/testdir/Make_vms.mms 2011-04-28 19:05:01.000000000 +0200
+--- src/testdir/Make_vms.mms 2011-06-13 01:01:29.000000000 +0200
+***************
+*** 4,10 ****
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2011 Mar 03
+ #
+ # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+ # Edit the lines in the Configuration section below to select.
+--- 4,10 ----
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2011 Jun 13
+ #
+ # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+ # Edit the lines in the Configuration section below to select.
+***************
+*** 75,81 ****
+ test61.out test62.out test63.out test64.out test65.out \
+ test66.out test67.out test68.out test69.out \
+ test71.out test72.out test74.out test75.out test76.out \
+! test77.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+--- 75,81 ----
+ test61.out test62.out test63.out test64.out test65.out \
+ test66.out test67.out test68.out test69.out \
+ test71.out test72.out test74.out test75.out test76.out \
+! test77.out test78.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+*** ../vim-7.3.215/src/version.c 2011-06-12 22:13:37.000000000 +0200
+--- src/version.c 2011-06-13 00:59:02.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 216,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+172. You join listservers just for the extra e-mail.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.217 b/source/ap/vim/patches/7.3.217
new file mode 100644
index 000000000..be04b8634
--- /dev/null
+++ b/source/ap/vim/patches/7.3.217
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.217
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.217
+Problem: Inside an "if" a ":wincmd" causes problems.
+Solution: When skipping commands let ":wincmd" skip over its argument.
+Files: src/ex_docmd.c
+
+
+*** ../mercurial/vim73/src/ex_docmd.c 2011-05-25 12:51:17.000000000 +0200
+--- src/ex_docmd.c 2011-06-13 01:15:17.000000000 +0200
+***************
+*** 2595,2600 ****
+--- 2595,2601 ----
+ case CMD_unlet:
+ case CMD_verbose:
+ case CMD_vertical:
++ case CMD_wincmd:
+ break;
+
+ default: goto doend;
+***************
+*** 8237,8243 ****
+ p = skipwhite(p);
+ if (*p != NUL && *p != '"' && eap->nextcmd == NULL)
+ EMSG(_(e_invarg));
+! else
+ {
+ /* Pass flags on for ":vertical wincmd ]". */
+ postponed_split_flags = cmdmod.split;
+--- 8238,8244 ----
+ p = skipwhite(p);
+ if (*p != NUL && *p != '"' && eap->nextcmd == NULL)
+ EMSG(_(e_invarg));
+! else if (!eap->skip)
+ {
+ /* Pass flags on for ":vertical wincmd ]". */
+ postponed_split_flags = cmdmod.split;
+*** ../vim-7.3.216/src/version.c 2011-06-13 01:07:22.000000000 +0200
+--- src/version.c 2011-06-13 01:18:48.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 217,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+173. You keep tracking down the email addresses of all your friends
+ (even childhood friends).
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.218 b/source/ap/vim/patches/7.3.218
new file mode 100644
index 000000000..1da18d810
--- /dev/null
+++ b/source/ap/vim/patches/7.3.218
@@ -0,0 +1,91 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.218
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.218 (after 7.3.212)
+Problem: Tiny configuration problem with Python 3.
+Solution: Add abiflags in one more place. (Andreas Behr)
+Files: src/auto/configure, src/configure.in
+
+
+*** ../mercurial/vim73/src/auto/configure 2011-06-12 21:37:06.000000000 +0200
+--- src/auto/configure 2011-06-13 01:26:50.000000000 +0200
+***************
+*** 5607,5613 ****
+ @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
+ @echo "python3_LIBS='$(LIBS)'"
+ @echo "python3_SYSLIBS='$(SYSLIBS)'"
+- @echo "python3_LINKFORSHARED='$(LINKFORSHARED)'"
+ @echo "python3_INSTSONAME='$(INSTSONAME)'"
+ eof
+ eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+--- 5607,5612 ----
+***************
+*** 5624,5630 ****
+ if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
+ PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ else
+! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ fi
+ PYTHON3_SRC="if_python3.c"
+ if test "x$MACOSX" = "xyes"; then
+--- 5623,5629 ----
+ if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
+ PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ else
+! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ fi
+ PYTHON3_SRC="if_python3.c"
+ if test "x$MACOSX" = "xyes"; then
+*** ../mercurial/vim73/src/configure.in 2011-06-12 21:37:06.000000000 +0200
+--- src/configure.in 2011-06-13 01:26:35.000000000 +0200
+***************
+*** 1063,1069 ****
+ @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
+ @echo "python3_LIBS='$(LIBS)'"
+ @echo "python3_SYSLIBS='$(SYSLIBS)'"
+- @echo "python3_LINKFORSHARED='$(LINKFORSHARED)'"
+ @echo "python3_INSTSONAME='$(INSTSONAME)'"
+ eof
+ dnl -- delete the lines from make about Entering/Leaving directory
+--- 1063,1068 ----
+***************
+*** 1080,1086 ****
+ if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
+ PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ else
+! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ fi
+ PYTHON3_SRC="if_python3.c"
+ dnl For Mac OSX 10.2 config.o is included in the Python library.
+--- 1079,1085 ----
+ if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
+ PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ else
+! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ fi
+ PYTHON3_SRC="if_python3.c"
+ dnl For Mac OSX 10.2 config.o is included in the Python library.
+*** ../vim-7.3.217/src/version.c 2011-06-13 01:19:48.000000000 +0200
+--- src/version.c 2011-06-13 01:29:42.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 218,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+174. You know what a listserv is.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.219 b/source/ap/vim/patches/7.3.219
new file mode 100644
index 000000000..2ec111799
--- /dev/null
+++ b/source/ap/vim/patches/7.3.219
@@ -0,0 +1,92 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.219
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.219
+Problem: Can't compile with GTK on Mac.
+Solution: Add some #ifdef trickery. (Ben Schmidt)
+Files: src/os_mac_conv.c, src/os_macosx.m, src/vim.h
+
+
+*** ../mercurial/vim73/src/os_mac_conv.c 2010-08-16 21:23:30.000000000 +0200
+--- src/os_mac_conv.c 2011-06-13 01:55:17.000000000 +0200
+***************
+*** 14,19 ****
+--- 14,21 ----
+ */
+
+ #define NO_X11_INCLUDES
++ #define BalloonEval int /* used in header files */
++
+ #include "vim.h"
+ #ifndef FEAT_GUI_MAC
+ # include <CoreServices/CoreServices.h>
+*** ../mercurial/vim73/src/os_macosx.m 2010-10-10 17:08:28.000000000 +0200
+--- src/os_macosx.m 2011-06-13 01:58:47.000000000 +0200
+***************
+*** 18,23 ****
+--- 18,24 ----
+ /* Avoid a conflict for the definition of Boolean between Mac header files and
+ * X11 header files. */
+ #define NO_X11_INCLUDES
++ #define BalloonEval int /* used in header files */
+
+ #include "vim.h"
+ #import <Cocoa/Cocoa.h>
+***************
+*** 27,35 ****
+ * Clipboard support for the console.
+ * Don't include this when building the GUI version, the functions in
+ * gui_mac.c are used then. TODO: remove those instead?
+! * But for MacVim we need these ones.
+ */
+! #if defined(FEAT_CLIPBOARD) && (!defined(FEAT_GUI) || defined(FEAT_GUI_MACVIM))
+
+ /* Used to identify clipboard data copied from Vim. */
+
+--- 28,36 ----
+ * Clipboard support for the console.
+ * Don't include this when building the GUI version, the functions in
+ * gui_mac.c are used then. TODO: remove those instead?
+! * But for MacVim we do need these ones.
+ */
+! #if defined(FEAT_CLIPBOARD) && (!defined(FEAT_GUI_ENABLED) || defined(FEAT_GUI_MACVIM))
+
+ /* Used to identify clipboard data copied from Vim. */
+
+*** ../mercurial/vim73/src/vim.h 2011-05-19 18:26:34.000000000 +0200
+--- src/vim.h 2011-06-13 01:57:17.000000000 +0200
+***************
+*** 121,126 ****
+--- 121,127 ----
+ || defined(FEAT_GUI_W32) \
+ || defined(FEAT_GUI_W16) \
+ || defined(FEAT_GUI_PHOTON)
++ # define FEAT_GUI_ENABLED /* also defined with NO_X11_INCLUDES */
+ # if !defined(FEAT_GUI) && !defined(NO_X11_INCLUDES)
+ # define FEAT_GUI
+ # endif
+*** ../vim-7.3.218/src/version.c 2011-06-13 01:32:42.000000000 +0200
+--- src/version.c 2011-06-13 02:03:02.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 219,
+ /**/
+
+--
+If Microsoft would build a car...
+... the oil, water temperature, and alternator warning lights would
+all be replaced by a single "General Protection Fault" warning light.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.220 b/source/ap/vim/patches/7.3.220
new file mode 100644
index 000000000..0122e7fce
--- /dev/null
+++ b/source/ap/vim/patches/7.3.220
@@ -0,0 +1,1230 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.220
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.220
+Problem: Python 3: vim.error is a 'str' instead of an 'Exception' object,
+ so 'except' or 'raise' it causes a 'SystemError' exception.
+ Buffer objects do not support slice assignment.
+ When exchanging text between Vim and Python, multibyte texts become
+ gabage or cause Unicode Expceptions, etc.
+ 'py3file' tries to read in the file as Unicode, sometimes causes
+ UnicodeDecodeException
+Solution: Fix the problems. (lilydjwg)
+Files: src/if_py_both.h, src/if_python.c, src/if_python3.c
+
+
+*** ../mercurial/vim73/src/if_py_both.h 2011-03-22 15:47:18.000000000 +0100
+--- src/if_py_both.h 2011-06-18 23:54:25.000000000 +0200
+***************
+*** 65,74 ****
+ OutputWrite(PyObject *self, PyObject *args)
+ {
+ int len;
+! char *str;
+ int error = ((OutputObject *)(self))->error;
+
+! if (!PyArg_ParseTuple(args, "s#", &str, &len))
+ return NULL;
+
+ Py_BEGIN_ALLOW_THREADS
+--- 65,74 ----
+ OutputWrite(PyObject *self, PyObject *args)
+ {
+ int len;
+! char *str = NULL;
+ int error = ((OutputObject *)(self))->error;
+
+! if (!PyArg_ParseTuple(args, "es#", p_enc, &str, &len))
+ return NULL;
+
+ Py_BEGIN_ALLOW_THREADS
+***************
+*** 76,81 ****
+--- 76,82 ----
+ writer((writefn)(error ? emsg : msg), (char_u *)str, len);
+ Python_Release_Vim();
+ Py_END_ALLOW_THREADS
++ PyMem_Free(str);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+***************
+*** 104,113 ****
+ for (i = 0; i < n; ++i)
+ {
+ PyObject *line = PyList_GetItem(list, i);
+! char *str;
+ PyInt len;
+
+! if (!PyArg_Parse(line, "s#", &str, &len)) {
+ PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+ Py_DECREF(list);
+ return NULL;
+--- 105,114 ----
+ for (i = 0; i < n; ++i)
+ {
+ PyObject *line = PyList_GetItem(list, i);
+! char *str = NULL;
+ PyInt len;
+
+! if (!PyArg_Parse(line, "es#", p_enc, &str, &len)) {
+ PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+ Py_DECREF(list);
+ return NULL;
+***************
+*** 118,123 ****
+--- 119,125 ----
+ writer((writefn)(error ? emsg : msg), (char_u *)str, len);
+ Python_Release_Vim();
+ Py_END_ALLOW_THREADS
++ PyMem_Free(str);
+ }
+
+ Py_DECREF(list);
+***************
+*** 681,686 ****
+--- 683,689 ----
+ {
+ const char *str;
+ char *save;
++ PyObject *bytes;
+ PyInt len;
+ PyInt i;
+ char *p;
+***************
+*** 691,698 ****
+ return NULL;
+ }
+
+! str = PyString_AsString(obj);
+! len = PyString_Size(obj);
+
+ /*
+ * Error checking: String must not contain newlines, as we
+--- 694,702 ----
+ return NULL;
+ }
+
+! bytes = PyString_AsBytes(obj); /* for Python 2 this does nothing */
+! str = PyString_AsString(bytes);
+! len = PyString_Size(bytes);
+
+ /*
+ * Error checking: String must not contain newlines, as we
+***************
+*** 731,736 ****
+--- 735,741 ----
+ }
+
+ save[i] = '\0';
++ PyString_FreeBytes(bytes); /* Python 2 does nothing here */
+
+ return save;
+ }
+***************
+*** 817,823 ****
+ invalidate_botline();
+ }
+
+! /* Replace a line in the specified buffer. The line number is
+ * in Vim format (1-based). The replacement line is given as
+ * a Python string object. The object is checked for validity
+ * and correct format. Errors are returned as a value of FAIL.
+--- 822,829 ----
+ invalidate_botline();
+ }
+
+! /*
+! * Replace a line in the specified buffer. The line number is
+ * in Vim format (1-based). The replacement line is given as
+ * a Python string object. The object is checked for validity
+ * and correct format. Errors are returned as a value of FAIL.
+***************
+*** 908,913 ****
+--- 914,1106 ----
+ }
+ }
+
++ /* Replace a range of lines in the specified buffer. The line numbers are in
++ * Vim format (1-based). The range is from lo up to, but not including, hi.
++ * The replacement lines are given as a Python list of string objects. The
++ * list is checked for validity and correct format. Errors are returned as a
++ * value of FAIL. The return value is OK on success.
++ * If OK is returned and len_change is not NULL, *len_change
++ * is set to the change in the buffer length.
++ */
++ static int
++ SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_change)
++ {
++ /* First of all, we check the thpe of the supplied Python object.
++ * There are three cases:
++ * 1. NULL, or None - this is a deletion.
++ * 2. A list - this is a replacement.
++ * 3. Anything else - this is an error.
++ */
++ if (list == Py_None || list == NULL)
++ {
++ PyInt i;
++ PyInt n = (int)(hi - lo);
++ buf_T *savebuf = curbuf;
++
++ PyErr_Clear();
++ curbuf = buf;
++
++ if (u_savedel((linenr_T)lo, (long)n) == FAIL)
++ PyErr_SetVim(_("cannot save undo information"));
++ else
++ {
++ for (i = 0; i < n; ++i)
++ {
++ if (ml_delete((linenr_T)lo, FALSE) == FAIL)
++ {
++ PyErr_SetVim(_("cannot delete line"));
++ break;
++ }
++ }
++ if (buf == curwin->w_buffer)
++ py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)-n);
++ deleted_lines_mark((linenr_T)lo, (long)i);
++ }
++
++ curbuf = savebuf;
++
++ if (PyErr_Occurred() || VimErrorCheck())
++ return FAIL;
++
++ if (len_change)
++ *len_change = -n;
++
++ return OK;
++ }
++ else if (PyList_Check(list))
++ {
++ PyInt i;
++ PyInt new_len = PyList_Size(list);
++ PyInt old_len = hi - lo;
++ PyInt extra = 0; /* lines added to text, can be negative */
++ char **array;
++ buf_T *savebuf;
++
++ if (new_len == 0) /* avoid allocating zero bytes */
++ array = NULL;
++ else
++ {
++ array = (char **)alloc((unsigned)(new_len * sizeof(char *)));
++ if (array == NULL)
++ {
++ PyErr_NoMemory();
++ return FAIL;
++ }
++ }
++
++ for (i = 0; i < new_len; ++i)
++ {
++ PyObject *line = PyList_GetItem(list, i);
++
++ array[i] = StringToLine(line);
++ if (array[i] == NULL)
++ {
++ while (i)
++ vim_free(array[--i]);
++ vim_free(array);
++ return FAIL;
++ }
++ }
++
++ savebuf = curbuf;
++
++ PyErr_Clear();
++ curbuf = buf;
++
++ if (u_save((linenr_T)(lo-1), (linenr_T)hi) == FAIL)
++ PyErr_SetVim(_("cannot save undo information"));
++
++ /* If the size of the range is reducing (ie, new_len < old_len) we
++ * need to delete some old_len. We do this at the start, by
++ * repeatedly deleting line "lo".
++ */
++ if (!PyErr_Occurred())
++ {
++ for (i = 0; i < old_len - new_len; ++i)
++ if (ml_delete((linenr_T)lo, FALSE) == FAIL)
++ {
++ PyErr_SetVim(_("cannot delete line"));
++ break;
++ }
++ extra -= i;
++ }
++
++ /* For as long as possible, replace the existing old_len with the
++ * new old_len. This is a more efficient operation, as it requires
++ * less memory allocation and freeing.
++ */
++ if (!PyErr_Occurred())
++ {
++ for (i = 0; i < old_len && i < new_len; ++i)
++ if (ml_replace((linenr_T)(lo+i), (char_u *)array[i], FALSE)
++ == FAIL)
++ {
++ PyErr_SetVim(_("cannot replace line"));
++ break;
++ }
++ }
++ else
++ i = 0;
++
++ /* Now we may need to insert the remaining new old_len. If we do, we
++ * must free the strings as we finish with them (we can't pass the
++ * responsibility to vim in this case).
++ */
++ if (!PyErr_Occurred())
++ {
++ while (i < new_len)
++ {
++ if (ml_append((linenr_T)(lo + i - 1),
++ (char_u *)array[i], 0, FALSE) == FAIL)
++ {
++ PyErr_SetVim(_("cannot insert line"));
++ break;
++ }
++ vim_free(array[i]);
++ ++i;
++ ++extra;
++ }
++ }
++
++ /* Free any left-over old_len, as a result of an error */
++ while (i < new_len)
++ {
++ vim_free(array[i]);
++ ++i;
++ }
++
++ /* Free the array of old_len. All of its contents have now
++ * been dealt with (either freed, or the responsibility passed
++ * to vim.
++ */
++ vim_free(array);
++
++ /* Adjust marks. Invalidate any which lie in the
++ * changed range, and move any in the remainder of the buffer.
++ */
++ mark_adjust((linenr_T)lo, (linenr_T)(hi - 1),
++ (long)MAXLNUM, (long)extra);
++ changed_lines((linenr_T)lo, 0, (linenr_T)hi, (long)extra);
++
++ if (buf == curwin->w_buffer)
++ py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)extra);
++
++ curbuf = savebuf;
++
++ if (PyErr_Occurred() || VimErrorCheck())
++ return FAIL;
++
++ if (len_change)
++ *len_change = new_len - old_len;
++
++ return OK;
++ }
++ else
++ {
++ PyErr_BadArgument();
++ return FAIL;
++ }
++ }
+
+ /* Insert a number of lines into the specified buffer after the specifed line.
+ * The line number is in Vim format (1-based). The lines to be inserted are
+***************
+*** 1108,1113 ****
+--- 1301,1340 ----
+ return -1;
+
+ if (new_end)
++ *new_end = end + len_change;
++
++ return 0;
++ }
++
++ static PyInt
++ RBAsSlice(BufferObject *self, PyInt lo, PyInt hi, PyObject *val, PyInt start, PyInt end, PyInt *new_end)
++ {
++ PyInt size;
++ PyInt len_change;
++
++ /* Self must be a valid buffer */
++ if (CheckBuffer(self))
++ return -1;
++
++ /* Sort out the slice range */
++ size = end - start + 1;
++
++ if (lo < 0)
++ lo = 0;
++ else if (lo > size)
++ lo = size;
++ if (hi < 0)
++ hi = 0;
++ if (hi < lo)
++ hi = lo;
++ else if (hi > size)
++ hi = size;
++
++ if (SetBufferLineList(self->buf, lo + start, hi + start,
++ val, &len_change) == FAIL)
++ return -1;
++
++ if (new_end)
+ *new_end = end + len_change;
+
+ return 0;
+*** ../mercurial/vim73/src/if_python.c 2011-03-26 18:32:00.000000000 +0100
+--- src/if_python.c 2011-06-19 00:02:15.000000000 +0200
+***************
+*** 56,61 ****
+--- 56,65 ----
+
+ static void init_structs(void);
+
++ /* No-op conversion functions, use with care! */
++ #define PyString_AsBytes(obj) (obj)
++ #define PyString_FreeBytes(obj)
++
+ #if !defined(FEAT_PYTHON) && defined(PROTO)
+ /* Use this to be able to generate prototypes without python being used. */
+ # define PyObject Py_ssize_t
+***************
+*** 129,134 ****
+--- 133,139 ----
+ */
+ # define PyArg_Parse dll_PyArg_Parse
+ # define PyArg_ParseTuple dll_PyArg_ParseTuple
++ # define PyMem_Free dll_PyMem_Free
+ # define PyDict_SetItemString dll_PyDict_SetItemString
+ # define PyErr_BadArgument dll_PyErr_BadArgument
+ # define PyErr_Clear dll_PyErr_Clear
+***************
+*** 189,194 ****
+--- 194,200 ----
+ */
+ static int(*dll_PyArg_Parse)(PyObject *, char *, ...);
+ static int(*dll_PyArg_ParseTuple)(PyObject *, char *, ...);
++ static int(*dll_PyMem_Free)(void *);
+ static int(*dll_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item);
+ static int(*dll_PyErr_BadArgument)(void);
+ static void(*dll_PyErr_Clear)(void);
+***************
+*** 271,276 ****
+--- 277,283 ----
+ {
+ {"PyArg_Parse", (PYTHON_PROC*)&dll_PyArg_Parse},
+ {"PyArg_ParseTuple", (PYTHON_PROC*)&dll_PyArg_ParseTuple},
++ {"PyMem_Free", (PYTHON_PROC*)&dll_PyMem_Free},
+ {"PyDict_SetItemString", (PYTHON_PROC*)&dll_PyDict_SetItemString},
+ {"PyErr_BadArgument", (PYTHON_PROC*)&dll_PyErr_BadArgument},
+ {"PyErr_Clear", (PYTHON_PROC*)&dll_PyErr_Clear},
+***************
+*** 833,876 ****
+ static PyObject *CurrentGetattr(PyObject *, char *);
+ static int CurrentSetattr(PyObject *, char *, PyObject *);
+
+- /* Common routines for buffers and line ranges
+- * -------------------------------------------
+- */
+-
+- static PyInt
+- RBAssSlice(BufferObject *self, PyInt lo, PyInt hi, PyObject *val, PyInt start, PyInt end, PyInt *new_end)
+- {
+- PyInt size;
+- PyInt len_change;
+-
+- /* Self must be a valid buffer */
+- if (CheckBuffer(self))
+- return -1;
+-
+- /* Sort out the slice range */
+- size = end - start + 1;
+-
+- if (lo < 0)
+- lo = 0;
+- else if (lo > size)
+- lo = size;
+- if (hi < 0)
+- hi = 0;
+- if (hi < lo)
+- hi = lo;
+- else if (hi > size)
+- hi = size;
+-
+- if (SetBufferLineList(self->buf, lo + start, hi + start,
+- val, &len_change) == FAIL)
+- return -1;
+-
+- if (new_end)
+- *new_end = end + len_change;
+-
+- return 0;
+- }
+-
+ static PySequenceMethods BufferAsSeq = {
+ (PyInquiry) BufferLength, /* sq_length, len(x) */
+ (binaryfunc) 0, /* BufferConcat, */ /* sq_concat, x+y */
+--- 840,845 ----
+***************
+*** 1038,1044 ****
+ static PyInt
+ BufferAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val)
+ {
+! return RBAssSlice((BufferObject *)(self), lo, hi, val, 1,
+ (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count,
+ NULL);
+ }
+--- 1007,1013 ----
+ static PyInt
+ BufferAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val)
+ {
+! return RBAsSlice((BufferObject *)(self), lo, hi, val, 1,
+ (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count,
+ NULL);
+ }
+***************
+*** 1088,1094 ****
+ static PyInt
+ RangeAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val)
+ {
+! return RBAssSlice(((RangeObject *)(self))->buf, lo, hi, val,
+ ((RangeObject *)(self))->start,
+ ((RangeObject *)(self))->end,
+ &((RangeObject *)(self))->end);
+--- 1057,1063 ----
+ static PyInt
+ RangeAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val)
+ {
+! return RBAsSlice(((RangeObject *)(self))->buf, lo, hi, val,
+ ((RangeObject *)(self))->start,
+ ((RangeObject *)(self))->end,
+ &((RangeObject *)(self))->end);
+***************
+*** 1435,1628 ****
+ * 4. Utility functions for handling the interface between Vim and Python.
+ */
+
+- /* Replace a range of lines in the specified buffer. The line numbers are in
+- * Vim format (1-based). The range is from lo up to, but not including, hi.
+- * The replacement lines are given as a Python list of string objects. The
+- * list is checked for validity and correct format. Errors are returned as a
+- * value of FAIL. The return value is OK on success.
+- * If OK is returned and len_change is not NULL, *len_change
+- * is set to the change in the buffer length.
+- */
+- static int
+- SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_change)
+- {
+- /* First of all, we check the thpe of the supplied Python object.
+- * There are three cases:
+- * 1. NULL, or None - this is a deletion.
+- * 2. A list - this is a replacement.
+- * 3. Anything else - this is an error.
+- */
+- if (list == Py_None || list == NULL)
+- {
+- PyInt i;
+- PyInt n = (int)(hi - lo);
+- buf_T *savebuf = curbuf;
+-
+- PyErr_Clear();
+- curbuf = buf;
+-
+- if (u_savedel((linenr_T)lo, (long)n) == FAIL)
+- PyErr_SetVim(_("cannot save undo information"));
+- else
+- {
+- for (i = 0; i < n; ++i)
+- {
+- if (ml_delete((linenr_T)lo, FALSE) == FAIL)
+- {
+- PyErr_SetVim(_("cannot delete line"));
+- break;
+- }
+- }
+- if (buf == curwin->w_buffer)
+- py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)-n);
+- deleted_lines_mark((linenr_T)lo, (long)i);
+- }
+-
+- curbuf = savebuf;
+-
+- if (PyErr_Occurred() || VimErrorCheck())
+- return FAIL;
+-
+- if (len_change)
+- *len_change = -n;
+-
+- return OK;
+- }
+- else if (PyList_Check(list))
+- {
+- PyInt i;
+- PyInt new_len = PyList_Size(list);
+- PyInt old_len = hi - lo;
+- PyInt extra = 0; /* lines added to text, can be negative */
+- char **array;
+- buf_T *savebuf;
+-
+- if (new_len == 0) /* avoid allocating zero bytes */
+- array = NULL;
+- else
+- {
+- array = (char **)alloc((unsigned)(new_len * sizeof(char *)));
+- if (array == NULL)
+- {
+- PyErr_NoMemory();
+- return FAIL;
+- }
+- }
+-
+- for (i = 0; i < new_len; ++i)
+- {
+- PyObject *line = PyList_GetItem(list, i);
+-
+- array[i] = StringToLine(line);
+- if (array[i] == NULL)
+- {
+- while (i)
+- vim_free(array[--i]);
+- vim_free(array);
+- return FAIL;
+- }
+- }
+-
+- savebuf = curbuf;
+-
+- PyErr_Clear();
+- curbuf = buf;
+-
+- if (u_save((linenr_T)(lo-1), (linenr_T)hi) == FAIL)
+- PyErr_SetVim(_("cannot save undo information"));
+-
+- /* If the size of the range is reducing (ie, new_len < old_len) we
+- * need to delete some old_len. We do this at the start, by
+- * repeatedly deleting line "lo".
+- */
+- if (!PyErr_Occurred())
+- {
+- for (i = 0; i < old_len - new_len; ++i)
+- if (ml_delete((linenr_T)lo, FALSE) == FAIL)
+- {
+- PyErr_SetVim(_("cannot delete line"));
+- break;
+- }
+- extra -= i;
+- }
+-
+- /* For as long as possible, replace the existing old_len with the
+- * new old_len. This is a more efficient operation, as it requires
+- * less memory allocation and freeing.
+- */
+- if (!PyErr_Occurred())
+- {
+- for (i = 0; i < old_len && i < new_len; ++i)
+- if (ml_replace((linenr_T)(lo+i), (char_u *)array[i], FALSE)
+- == FAIL)
+- {
+- PyErr_SetVim(_("cannot replace line"));
+- break;
+- }
+- }
+- else
+- i = 0;
+-
+- /* Now we may need to insert the remaining new old_len. If we do, we
+- * must free the strings as we finish with them (we can't pass the
+- * responsibility to vim in this case).
+- */
+- if (!PyErr_Occurred())
+- {
+- while (i < new_len)
+- {
+- if (ml_append((linenr_T)(lo + i - 1),
+- (char_u *)array[i], 0, FALSE) == FAIL)
+- {
+- PyErr_SetVim(_("cannot insert line"));
+- break;
+- }
+- vim_free(array[i]);
+- ++i;
+- ++extra;
+- }
+- }
+-
+- /* Free any left-over old_len, as a result of an error */
+- while (i < new_len)
+- {
+- vim_free(array[i]);
+- ++i;
+- }
+-
+- /* Free the array of old_len. All of its contents have now
+- * been dealt with (either freed, or the responsibility passed
+- * to vim.
+- */
+- vim_free(array);
+-
+- /* Adjust marks. Invalidate any which lie in the
+- * changed range, and move any in the remainder of the buffer.
+- */
+- mark_adjust((linenr_T)lo, (linenr_T)(hi - 1),
+- (long)MAXLNUM, (long)extra);
+- changed_lines((linenr_T)lo, 0, (linenr_T)hi, (long)extra);
+-
+- if (buf == curwin->w_buffer)
+- py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)extra);
+-
+- curbuf = savebuf;
+-
+- if (PyErr_Occurred() || VimErrorCheck())
+- return FAIL;
+-
+- if (len_change)
+- *len_change = new_len - old_len;
+-
+- return OK;
+- }
+- else
+- {
+- PyErr_BadArgument();
+- return FAIL;
+- }
+- }
+-
+ /* Convert a Vim line into a Python string.
+ * All internal newlines are replaced by null characters.
+ *
+--- 1404,1409 ----
+*** ../mercurial/vim73/src/if_python3.c 2011-06-12 21:37:06.000000000 +0200
+--- src/if_python3.c 2011-06-19 00:10:42.000000000 +0200
+***************
+*** 70,77 ****
+
+ #define PyInt Py_ssize_t
+ #define PyString_Check(obj) PyUnicode_Check(obj)
+! #define PyString_AsString(obj) _PyUnicode_AsString(obj)
+! #define PyString_Size(obj) PyUnicode_GET_SIZE(obj)
+ #define PyString_FromString(repr) PyUnicode_FromString(repr)
+
+ #if defined(DYNAMIC_PYTHON3) || defined(PROTO)
+--- 70,79 ----
+
+ #define PyInt Py_ssize_t
+ #define PyString_Check(obj) PyUnicode_Check(obj)
+! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)p_enc, NULL);
+! #define PyString_FreeBytes(obj) Py_XDECREF(bytes)
+! #define PyString_AsString(obj) PyBytes_AsString(obj)
+! #define PyString_Size(obj) PyBytes_GET_SIZE(bytes)
+ #define PyString_FromString(repr) PyUnicode_FromString(repr)
+
+ #if defined(DYNAMIC_PYTHON3) || defined(PROTO)
+***************
+*** 99,104 ****
+--- 101,107 ----
+ # define PyArg_Parse py3_PyArg_Parse
+ # undef PyArg_ParseTuple
+ # define PyArg_ParseTuple py3_PyArg_ParseTuple
++ # define PyMem_Free py3_PyMem_Free
+ # define PyDict_SetItemString py3_PyDict_SetItemString
+ # define PyErr_BadArgument py3_PyErr_BadArgument
+ # define PyErr_Clear py3_PyErr_Clear
+***************
+*** 140,147 ****
+--- 143,155 ----
+ # define PyModule_AddObject py3_PyModule_AddObject
+ # define PyImport_AppendInittab py3_PyImport_AppendInittab
+ # define _PyUnicode_AsString py3__PyUnicode_AsString
++ # undef PyUnicode_AsEncodedString
++ # define PyUnicode_AsEncodedString py3_PyUnicode_AsEncodedString
++ # undef PyBytes_AsString
++ # define PyBytes_AsString py3_PyBytes_AsString
+ # define PyObject_GenericGetAttr py3_PyObject_GenericGetAttr
+ # define PySlice_Type (*py3_PySlice_Type)
++ # define PyErr_NewException py3_PyErr_NewException
+ # ifdef Py_DEBUG
+ # define _Py_NegativeRefcount py3__Py_NegativeRefcount
+ # define _Py_RefTotal (*py3__Py_RefTotal)
+***************
+*** 157,164 ****
+ # define PyModule_Create2 py3_PyModule_Create2
+ # undef PyUnicode_FromString
+ # define PyUnicode_FromString py3_PyUnicode_FromString
+! # undef PyUnicode_FromStringAndSize
+! # define PyUnicode_FromStringAndSize py3_PyUnicode_FromStringAndSize
+
+ # ifdef Py_DEBUG
+ # undef PyObject_NEW
+--- 165,172 ----
+ # define PyModule_Create2 py3_PyModule_Create2
+ # undef PyUnicode_FromString
+ # define PyUnicode_FromString py3_PyUnicode_FromString
+! # undef PyUnicode_Decode
+! # define PyUnicode_Decode py3_PyUnicode_Decode
+
+ # ifdef Py_DEBUG
+ # undef PyObject_NEW
+***************
+*** 199,205 ****
+ static int (*py3_PyType_Ready)(PyTypeObject *type);
+ static int (*py3_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item);
+ static PyObject* (*py3_PyUnicode_FromString)(const char *u);
+! static PyObject* (*py3_PyUnicode_FromStringAndSize)(const char *u, Py_ssize_t size);
+ static long (*py3_PyLong_AsLong)(PyObject *);
+ static void (*py3_PyErr_SetNone)(PyObject *);
+ static void (*py3_PyEval_InitThreads)(void);
+--- 207,214 ----
+ static int (*py3_PyType_Ready)(PyTypeObject *type);
+ static int (*py3_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item);
+ static PyObject* (*py3_PyUnicode_FromString)(const char *u);
+! static PyObject* (*py3_PyUnicode_Decode)(const char *u, Py_ssize_t size,
+! const char *encoding, const char *errors);
+ static long (*py3_PyLong_AsLong)(PyObject *);
+ static void (*py3_PyErr_SetNone)(PyObject *);
+ static void (*py3_PyEval_InitThreads)(void);
+***************
+*** 207,212 ****
+--- 216,222 ----
+ static PyThreadState*(*py3_PyEval_SaveThread)(void);
+ static int (*py3_PyArg_Parse)(PyObject *, char *, ...);
+ static int (*py3_PyArg_ParseTuple)(PyObject *, char *, ...);
++ static int (*py3_PyMem_Free)(void *);
+ static int (*py3_Py_IsInitialized)(void);
+ static void (*py3_PyErr_Clear)(void);
+ static PyObject*(*py3__PyObject_Init)(PyObject *, PyTypeObject *);
+***************
+*** 214,224 ****
+--- 224,237 ----
+ static int (*py3_PyModule_AddObject)(PyObject *m, const char *name, PyObject *o);
+ static int (*py3_PyImport_AppendInittab)(const char *name, PyObject* (*initfunc)(void));
+ static char* (*py3__PyUnicode_AsString)(PyObject *unicode);
++ static PyObject* (*py3_PyUnicode_AsEncodedString)(PyObject *unicode, const char* encoding, const char* errors);
++ static char* (*py3_PyBytes_AsString)(PyObject *bytes);
+ static PyObject* (*py3_PyObject_GenericGetAttr)(PyObject *obj, PyObject *name);
+ static PyObject* (*py3_PyModule_Create2)(struct PyModuleDef* module, int module_api_version);
+ static PyObject* (*py3_PyType_GenericAlloc)(PyTypeObject *type, Py_ssize_t nitems);
+ static PyObject* (*py3_PyType_GenericNew)(PyTypeObject *type, PyObject *args, PyObject *kwds);
+ static PyTypeObject* py3_PySlice_Type;
++ static PyObject* (*py3_PyErr_NewException)(char *name, PyObject *base, PyObject *dict);
+ # ifdef Py_DEBUG
+ static void (*py3__Py_NegativeRefcount)(const char *fname, int lineno, PyObject *op);
+ static Py_ssize_t* py3__Py_RefTotal;
+***************
+*** 259,264 ****
+--- 272,278 ----
+ {"Py_SetPythonHome", (PYTHON_PROC*)&py3_Py_SetPythonHome},
+ {"Py_Initialize", (PYTHON_PROC*)&py3_Py_Initialize},
+ {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple},
++ {"PyMem_Free", (PYTHON_PROC*)&py3_PyMem_Free},
+ {"PyList_New", (PYTHON_PROC*)&py3_PyList_New},
+ {"PyGILState_Ensure", (PYTHON_PROC*)&py3_PyGILState_Ensure},
+ {"PyGILState_Release", (PYTHON_PROC*)&py3_PyGILState_Release},
+***************
+*** 289,295 ****
+ {"PyEval_RestoreThread", (PYTHON_PROC*)&py3_PyEval_RestoreThread},
+ {"PyEval_SaveThread", (PYTHON_PROC*)&py3_PyEval_SaveThread},
+ {"PyArg_Parse", (PYTHON_PROC*)&py3_PyArg_Parse},
+- {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple},
+ {"Py_IsInitialized", (PYTHON_PROC*)&py3_Py_IsInitialized},
+ {"_Py_NoneStruct", (PYTHON_PROC*)&py3__Py_NoneStruct},
+ {"PyErr_Clear", (PYTHON_PROC*)&py3_PyErr_Clear},
+--- 303,308 ----
+***************
+*** 297,307 ****
+--- 310,322 ----
+ {"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject},
+ {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab},
+ {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString},
++ {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString},
+ {"PyObject_GenericGetAttr", (PYTHON_PROC*)&py3_PyObject_GenericGetAttr},
+ {"PyModule_Create2", (PYTHON_PROC*)&py3_PyModule_Create2},
+ {"PyType_GenericAlloc", (PYTHON_PROC*)&py3_PyType_GenericAlloc},
+ {"PyType_GenericNew", (PYTHON_PROC*)&py3_PyType_GenericNew},
+ {"PySlice_Type", (PYTHON_PROC*)&py3_PySlice_Type},
++ {"PyErr_NewException", (PYTHON_PROC*)&py3_PyErr_NewException},
+ # ifdef Py_DEBUG
+ {"_Py_NegativeRefcount", (PYTHON_PROC*)&py3__Py_NegativeRefcount},
+ {"_Py_RefTotal", (PYTHON_PROC*)&py3__Py_RefTotal},
+***************
+*** 337,343 ****
+ py3_runtime_link_init(char *libname, int verbose)
+ {
+ int i;
+! void *ucs_from_string, *ucs_from_string_and_size;
+
+ # if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON)
+ /* Can't have Python and Python3 loaded at the same time.
+--- 352,358 ----
+ py3_runtime_link_init(char *libname, int verbose)
+ {
+ int i;
+! void *ucs_from_string, *ucs_decode, *ucs_as_encoded_string;
+
+ # if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON)
+ /* Can't have Python and Python3 loaded at the same time.
+***************
+*** 377,395 ****
+ /* Load unicode functions separately as only the ucs2 or the ucs4 functions
+ * will be present in the library. */
+ ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_FromString");
+! ucs_from_string_and_size = symbol_from_dll(hinstPy3,
+! "PyUnicodeUCS2_FromStringAndSize");
+! if (!ucs_from_string || !ucs_from_string_and_size)
+ {
+ ucs_from_string = symbol_from_dll(hinstPy3,
+ "PyUnicodeUCS4_FromString");
+! ucs_from_string_and_size = symbol_from_dll(hinstPy3,
+! "PyUnicodeUCS4_FromStringAndSize");
+ }
+! if (ucs_from_string && ucs_from_string_and_size)
+ {
+ py3_PyUnicode_FromString = ucs_from_string;
+! py3_PyUnicode_FromStringAndSize = ucs_from_string_and_size;
+ }
+ else
+ {
+--- 392,415 ----
+ /* Load unicode functions separately as only the ucs2 or the ucs4 functions
+ * will be present in the library. */
+ ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_FromString");
+! ucs_decode = symbol_from_dll(hinstPy3,
+! "PyUnicodeUCS2_Decode");
+! ucs_as_encoded_string = symbol_from_dll(hinstPy3,
+! "PyUnicodeUCS2_AsEncodedString");
+! if (!ucs_from_string || !ucs_decode || !ucs_as_encoded_string)
+ {
+ ucs_from_string = symbol_from_dll(hinstPy3,
+ "PyUnicodeUCS4_FromString");
+! ucs_decode = symbol_from_dll(hinstPy3,
+! "PyUnicodeUCS4_Decode");
+! ucs_as_encoded_string = symbol_from_dll(hinstPy3,
+! "PyUnicodeUCS4_AsEncodedString");
+ }
+! if (ucs_from_string && ucs_decode && ucs_as_encoded_string)
+ {
+ py3_PyUnicode_FromString = ucs_from_string;
+! py3_PyUnicode_Decode = ucs_decode;
+! py3_PyUnicode_AsEncodedString = ucs_as_encoded_string;
+ }
+ else
+ {
+***************
+*** 567,574 ****
+ /* Remove the element from sys.path that was added because of our
+ * argv[0] value in Py3Init_vim(). Previously we used an empty
+ * string, but dependinding on the OS we then get an empty entry or
+! * the current directory in sys.path. */
+! PyRun_SimpleString("import sys; sys.path = list(filter(lambda x: x != '/must>not&exist', sys.path))");
+
+ // lock is created and acquired in PyEval_InitThreads() and thread
+ // state is created in Py_Initialize()
+--- 587,597 ----
+ /* Remove the element from sys.path that was added because of our
+ * argv[0] value in Py3Init_vim(). Previously we used an empty
+ * string, but dependinding on the OS we then get an empty entry or
+! * the current directory in sys.path.
+! * Only after vim has been imported, the element does exist in
+! * sys.path.
+! */
+! PyRun_SimpleString("import vim; import sys; sys.path = list(filter(lambda x: not x.endswith('must>not&exist'), sys.path))");
+
+ // lock is created and acquired in PyEval_InitThreads() and thread
+ // state is created in Py_Initialize()
+***************
+*** 605,610 ****
+--- 628,635 ----
+ #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
+ char *saved_locale;
+ #endif
++ PyObject *cmdstr;
++ PyObject *cmdbytes;
+
+ #if defined(MACOS) && !defined(MACOS_X_UNIX)
+ GetPort(&oldPort);
+***************
+*** 634,640 ****
+
+ pygilstate = PyGILState_Ensure();
+
+! PyRun_SimpleString((char *)(cmd));
+
+ PyGILState_Release(pygilstate);
+
+--- 659,671 ----
+
+ pygilstate = PyGILState_Ensure();
+
+! /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause
+! * SyntaxError (unicode error). */
+! cmdstr = PyUnicode_Decode(cmd, strlen(cmd), (char *)p_enc, NULL);
+! cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", NULL);
+! Py_XDECREF(cmdstr);
+! PyRun_SimpleString(PyBytes_AsString(cmdbytes));
+! Py_XDECREF(cmdbytes);
+
+ PyGILState_Release(pygilstate);
+
+***************
+*** 693,699 ****
+ * different options under Windows, meaning that stdio pointers aren't
+ * compatible between the two. Yuk.
+ *
+! * construct: exec(compile(open('a_filename').read(), 'a_filename', 'exec'))
+ *
+ * We need to escape any backslashes or single quotes in the file name, so that
+ * Python won't mangle the file name.
+--- 724,733 ----
+ * different options under Windows, meaning that stdio pointers aren't
+ * compatible between the two. Yuk.
+ *
+! * construct: exec(compile(open('a_filename', 'rb').read(), 'a_filename', 'exec'))
+! *
+! * Using bytes so that Python can detect the source encoding as it normally
+! * does. The doc does not say "compile" accept bytes, though.
+ *
+ * We need to escape any backslashes or single quotes in the file name, so that
+ * Python won't mangle the file name.
+***************
+*** 716,723 ****
+ return;
+ if (i==0)
+ {
+! strcpy(p,"').read(),'");
+! p += 11;
+ }
+ else
+ {
+--- 750,757 ----
+ return;
+ if (i==0)
+ {
+! strcpy(p,"','rb').read(),'");
+! p += 16;
+ }
+ else
+ {
+***************
+*** 812,819 ****
+
+ static Py_ssize_t BufferLength(PyObject *);
+ static PyObject *BufferItem(PyObject *, Py_ssize_t);
+- static Py_ssize_t BufferAsItem(PyObject *, Py_ssize_t, PyObject *);
+ static PyObject* BufferSubscript(PyObject *self, PyObject* idx);
+
+
+ /* Line range type - Implementation functions
+--- 846,853 ----
+
+ static Py_ssize_t BufferLength(PyObject *);
+ static PyObject *BufferItem(PyObject *, Py_ssize_t);
+ static PyObject* BufferSubscript(PyObject *self, PyObject* idx);
++ static Py_ssize_t BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val);
+
+
+ /* Line range type - Implementation functions
+***************
+*** 835,841 ****
+ (ssizeargfunc) 0, /* sq_repeat, x*n */
+ (ssizeargfunc) BufferItem, /* sq_item, x[i] */
+ 0, /* was_sq_slice, x[i:j] */
+! (ssizeobjargproc) BufferAsItem, /* sq_ass_item, x[i]=v */
+ 0, /* sq_ass_slice, x[i:j]=v */
+ 0, /* sq_contains */
+ 0, /* sq_inplace_concat */
+--- 869,875 ----
+ (ssizeargfunc) 0, /* sq_repeat, x*n */
+ (ssizeargfunc) BufferItem, /* sq_item, x[i] */
+ 0, /* was_sq_slice, x[i:j] */
+! 0, /* sq_ass_item, x[i]=v */
+ 0, /* sq_ass_slice, x[i:j]=v */
+ 0, /* sq_contains */
+ 0, /* sq_inplace_concat */
+***************
+*** 845,851 ****
+ PyMappingMethods BufferAsMapping = {
+ /* mp_length */ (lenfunc)BufferLength,
+ /* mp_subscript */ (binaryfunc)BufferSubscript,
+! /* mp_ass_subscript */ (objobjargproc)0,
+ };
+
+
+--- 879,885 ----
+ PyMappingMethods BufferAsMapping = {
+ /* mp_length */ (lenfunc)BufferLength,
+ /* mp_subscript */ (binaryfunc)BufferSubscript,
+! /* mp_ass_subscript */ (objobjargproc)BufferAsSubscript,
+ };
+
+
+***************
+*** 897,902 ****
+--- 931,938 ----
+
+ if (this->buf && this->buf != INVALID_BUFFER_VALUE)
+ this->buf->b_python3_ref = NULL;
++
++ Py_TYPE(self)->tp_free((PyObject*)self);
+ }
+
+ static PyObject *
+***************
+*** 975,989 ****
+ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count);
+ }
+
+- static Py_ssize_t
+- BufferAsItem(PyObject *self, Py_ssize_t n, PyObject *val)
+- {
+- return RBAsItem((BufferObject *)(self), n, val, 1,
+- (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count,
+- NULL);
+- }
+-
+-
+ static PyObject *
+ BufferSubscript(PyObject *self, PyObject* idx)
+ {
+--- 1011,1016 ----
+***************
+*** 999,1011 ****
+ &step, &slicelen) < 0) {
+ return NULL;
+ }
+! return BufferSlice(self,start,stop+1);
+ } else {
+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+ return NULL;
+ }
+ }
+
+ static PySequenceMethods RangeAsSeq = {
+ (lenfunc) RangeLength, /* sq_length, len(x) */
+ (binaryfunc) 0, /* RangeConcat, sq_concat, x+y */
+--- 1026,1064 ----
+ &step, &slicelen) < 0) {
+ return NULL;
+ }
+! return BufferSlice(self,start,stop);
+ } else {
+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+ return NULL;
+ }
+ }
+
++ static Py_ssize_t
++ BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val)
++ {
++ if (PyLong_Check(idx)) {
++ long n = PyLong_AsLong(idx);
++ return RBAsItem((BufferObject *)(self), n, val, 1,
++ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count,
++ NULL);
++ } else if (PySlice_Check(idx)) {
++ Py_ssize_t start, stop, step, slicelen;
++
++ if (PySlice_GetIndicesEx((PySliceObject *)idx,
++ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1,
++ &start, &stop,
++ &step, &slicelen) < 0) {
++ return -1;
++ }
++ return RBAsSlice((BufferObject *)(self), start, stop, val, 1,
++ (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count,
++ NULL);
++ } else {
++ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
++ return -1;
++ }
++ }
++
+ static PySequenceMethods RangeAsSeq = {
+ (lenfunc) RangeLength, /* sq_length, len(x) */
+ (binaryfunc) 0, /* RangeConcat, sq_concat, x+y */
+***************
+*** 1032,1037 ****
+--- 1085,1091 ----
+ RangeDestructor(PyObject *self)
+ {
+ Py_DECREF(((RangeObject *)(self))->buf);
++ Py_TYPE(self)->tp_free((PyObject*)self);
+ }
+
+ static PyObject *
+***************
+*** 1159,1164 ****
+--- 1213,1220 ----
+
+ if (this->win && this->win != INVALID_WINDOW_VALUE)
+ this->win->w_python3_ref = NULL;
++
++ Py_TYPE(self)->tp_free((PyObject*)self);
+ }
+
+ static PyObject *
+***************
+*** 1350,1357 ****
+ PySys_SetArgv(1, argv);
+
+ mod = PyModule_Create(&vimmodule);
+
+! VimError = Py_BuildValue("s", "vim.error");
+
+ PyModule_AddObject(mod, "error", VimError);
+ Py_INCREF((PyObject *)(void *)&TheBufferList);
+--- 1406,1416 ----
+ PySys_SetArgv(1, argv);
+
+ mod = PyModule_Create(&vimmodule);
++ if (mod == NULL)
++ return NULL;
+
+! VimError = PyErr_NewException("vim.error", NULL, NULL);
+! Py_INCREF(VimError);
+
+ PyModule_AddObject(mod, "error", VimError);
+ Py_INCREF((PyObject *)(void *)&TheBufferList);
+***************
+*** 1404,1410 ****
+ }
+ *p = '\0';
+
+! result = PyUnicode_FromStringAndSize(tmp, len);
+
+ vim_free(tmp);
+ return result;
+--- 1463,1469 ----
+ }
+ *p = '\0';
+
+! result = PyUnicode_Decode(tmp, len, (char *)p_enc, NULL);
+
+ vim_free(tmp);
+ return result;
+*** ../vim-7.3.219/src/version.c 2011-06-13 02:03:55.000000000 +0200
+--- src/version.c 2011-06-19 00:25:38.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 220,
+ /**/
+
+--
+I'm in shape. Round IS a shape.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.221 b/source/ap/vim/patches/7.3.221
new file mode 100644
index 000000000..7211a4a66
--- /dev/null
+++ b/source/ap/vim/patches/7.3.221
@@ -0,0 +1,287 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.221
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.221
+Problem: Text from the clipboard is sometimes handled as linewise, but not
+ consistently.
+Solution: Assume the text is linewise when it ends in a CR or NL.
+Files: src/gui_gtk_x11.c, src/gui_mac.c, src/ops.c, src/os_msdos.c,
+ src/os_mswin.c, src/os_qnx.c, src/ui.c
+
+
+*** ../mercurial/vim73/src/gui_gtk_x11.c 2011-02-25 17:10:22.000000000 +0100
+--- src/gui_gtk_x11.c 2011-06-19 00:58:31.000000000 +0200
+***************
+*** 1173,1179 ****
+ char_u *tmpbuf = NULL;
+ guchar *tmpbuf_utf8 = NULL;
+ int len;
+! int motion_type;
+
+ if (data->selection == clip_plus.gtk_sel_atom)
+ cbd = &clip_plus;
+--- 1173,1179 ----
+ char_u *tmpbuf = NULL;
+ guchar *tmpbuf_utf8 = NULL;
+ int len;
+! int motion_type = MAUTO;
+
+ if (data->selection == clip_plus.gtk_sel_atom)
+ cbd = &clip_plus;
+***************
+*** 1182,1188 ****
+
+ text = (char_u *)data->data;
+ len = data->length;
+- motion_type = MCHAR;
+
+ if (text == NULL || len <= 0)
+ {
+--- 1182,1187 ----
+*** ../mercurial/vim73/src/gui_mac.c 2011-06-12 20:33:30.000000000 +0200
+--- src/gui_mac.c 2011-06-19 00:59:07.000000000 +0200
+***************
+*** 4671,4677 ****
+ if (flavor)
+ type = **textOfClip;
+ else
+! type = (strchr(*textOfClip, '\r') != NULL) ? MLINE : MCHAR;
+
+ tempclip = lalloc(scrapSize + 1, TRUE);
+ mch_memmove(tempclip, *textOfClip + flavor, scrapSize);
+--- 4671,4677 ----
+ if (flavor)
+ type = **textOfClip;
+ else
+! type = MAUTO;
+
+ tempclip = lalloc(scrapSize + 1, TRUE);
+ mch_memmove(tempclip, *textOfClip + flavor, scrapSize);
+*** ../mercurial/vim73/src/ops.c 2011-04-01 16:28:33.000000000 +0200
+--- src/ops.c 2011-06-19 00:59:39.000000000 +0200
+***************
+*** 5733,5739 ****
+ }
+ }
+
+! /* Convert from the GUI selection string into the '*'/'+' register */
+ void
+ clip_yank_selection(type, str, len, cbd)
+ int type;
+--- 5733,5741 ----
+ }
+ }
+
+! /*
+! * Convert from the GUI selection string into the '*'/'+' register.
+! */
+ void
+ clip_yank_selection(type, str, len, cbd)
+ int type;
+***************
+*** 6090,6098 ****
+ if (yank_type == MBLOCK)
+ yank_type = MAUTO;
+ #endif
+- if (yank_type == MAUTO)
+- yank_type = ((len > 0 && (str[len - 1] == '\n' || str[len - 1] == '\r'))
+- ? MLINE : MCHAR);
+ str_to_reg(y_current, yank_type, str, len, block_len);
+
+ # ifdef FEAT_CLIPBOARD
+--- 6092,6097 ----
+***************
+*** 6113,6125 ****
+ * is appended.
+ */
+ static void
+! str_to_reg(y_ptr, type, str, len, blocklen)
+ struct yankreg *y_ptr; /* pointer to yank register */
+! int type; /* MCHAR, MLINE or MBLOCK */
+ char_u *str; /* string to put in register */
+ long len; /* length of string */
+ long blocklen; /* width of Visual block */
+ {
+ int lnum;
+ long start;
+ long i;
+--- 6112,6125 ----
+ * is appended.
+ */
+ static void
+! str_to_reg(y_ptr, yank_type, str, len, blocklen)
+ struct yankreg *y_ptr; /* pointer to yank register */
+! int yank_type; /* MCHAR, MLINE, MBLOCK, MAUTO */
+ char_u *str; /* string to put in register */
+ long len; /* length of string */
+ long blocklen; /* width of Visual block */
+ {
++ int type; /* MCHAR, MLINE or MBLOCK */
+ int lnum;
+ long start;
+ long i;
+***************
+*** 6136,6141 ****
+--- 6136,6147 ----
+ if (y_ptr->y_array == NULL) /* NULL means empty register */
+ y_ptr->y_size = 0;
+
++ if (yank_type == MAUTO)
++ type = ((len > 0 && (str[len - 1] == NL || str[len - 1] == CAR))
++ ? MLINE : MCHAR);
++ else
++ type = yank_type;
++
+ /*
+ * Count the number of lines within the string
+ */
+*** ../mercurial/vim73/src/os_msdos.c 2010-12-17 18:06:00.000000000 +0100
+--- src/os_msdos.c 2011-06-19 01:00:56.000000000 +0200
+***************
+*** 2232,2238 ****
+ void
+ clip_mch_request_selection(VimClipboard *cbd)
+ {
+! int type = MCHAR;
+ char_u *pAllocated = NULL;
+ char_u *pClipText = NULL;
+ int clip_data_format = 0;
+--- 2232,2238 ----
+ void
+ clip_mch_request_selection(VimClipboard *cbd)
+ {
+! int type = MAUTO;
+ char_u *pAllocated = NULL;
+ char_u *pClipText = NULL;
+ int clip_data_format = 0;
+***************
+*** 2280,2293 ****
+ {
+ clip_data_format = CF_TEXT;
+ pClipText = pAllocated;
+- type = (vim_strchr((char*)pClipText, '\r') != NULL) ? MLINE : MCHAR;
+ }
+
+ else if ((pAllocated = Win16GetClipboardData(CF_OEMTEXT)) != NULL)
+ {
+ clip_data_format = CF_OEMTEXT;
+ pClipText = pAllocated;
+- type = (vim_strchr((char*)pClipText, '\r') != NULL) ? MLINE : MCHAR;
+ }
+
+ /* Did we get anything? */
+--- 2280,2291 ----
+*** ../mercurial/vim73/src/os_mswin.c 2011-01-17 20:08:04.000000000 +0100
+--- src/os_mswin.c 2011-06-19 01:01:51.000000000 +0200
+***************
+*** 1410,1418 ****
+ {
+ char_u *temp_clipboard;
+
+! /* If the type is not known guess it. */
+ if (metadata.type == -1)
+! metadata.type = (vim_strchr(str, '\n') == NULL) ? MCHAR : MLINE;
+
+ /* Translate <CR><NL> into <NL>. */
+ temp_clipboard = crnl_to_nl(str, &str_size);
+--- 1410,1418 ----
+ {
+ char_u *temp_clipboard;
+
+! /* If the type is not known detect it. */
+ if (metadata.type == -1)
+! metadata.type = MAUTO;
+
+ /* Translate <CR><NL> into <NL>. */
+ temp_clipboard = crnl_to_nl(str, &str_size);
+*** ../mercurial/vim73/src/os_qnx.c 2010-05-15 21:22:11.000000000 +0200
+--- src/os_qnx.c 2011-06-19 01:02:26.000000000 +0200
+***************
+*** 93,99 ****
+ clip_length = clip_header->length - 1;
+
+ if( clip_text != NULL && is_type_set == FALSE )
+! type = (strchr( clip_text, '\r' ) != NULL) ? MLINE : MCHAR;
+ }
+
+ if( (clip_text != NULL) && (clip_length > 0) )
+--- 93,99 ----
+ clip_length = clip_header->length - 1;
+
+ if( clip_text != NULL && is_type_set == FALSE )
+! type = MAUTO;
+ }
+
+ if( (clip_text != NULL) && (clip_length > 0) )
+*** ../mercurial/vim73/src/ui.c 2010-09-21 22:09:28.000000000 +0200
+--- src/ui.c 2011-06-19 01:03:31.000000000 +0200
+***************
+*** 1609,1615 ****
+
+ #if defined(FEAT_HANGULIN) || defined(PROTO)
+ void
+! push_raw_key (s, len)
+ char_u *s;
+ int len;
+ {
+--- 1609,1615 ----
+
+ #if defined(FEAT_HANGULIN) || defined(PROTO)
+ void
+! push_raw_key(s, len)
+ char_u *s;
+ int len;
+ {
+***************
+*** 2016,2022 ****
+ long_u *length;
+ int *format;
+ {
+! int motion_type;
+ long_u len;
+ char_u *p;
+ char **text_list = NULL;
+--- 2016,2022 ----
+ long_u *length;
+ int *format;
+ {
+! int motion_type = MAUTO;
+ long_u len;
+ char_u *p;
+ char **text_list = NULL;
+***************
+*** 2036,2042 ****
+ *(int *)success = FALSE;
+ return;
+ }
+- motion_type = MCHAR;
+ p = (char_u *)value;
+ len = *length;
+ if (*type == vim_atom)
+--- 2036,2041 ----
+*** ../vim-7.3.220/src/version.c 2011-06-19 00:27:46.000000000 +0200
+--- src/version.c 2011-06-19 01:03:59.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 221,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+190. You quickly hand over your wallet, leather jacket, and car keys
+ during a mugging, then proceed to beat the crap out of your
+ assailant when he asks for your laptop.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.222 b/source/ap/vim/patches/7.3.222
new file mode 100644
index 000000000..87151b5ab
--- /dev/null
+++ b/source/ap/vim/patches/7.3.222
@@ -0,0 +1,71 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.22
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.222
+Problem: Warning for building GvimExt.
+Solution: Comment-out the DESCRIPTION line. (Mike Williams)
+Files: src/GvimExt/gvimext.def, src/GvimExt/gvimext_ming.def
+
+
+*** ../mercurial/vim73/src/GvimExt/gvimext.def 2010-05-15 21:22:11.000000000 +0200
+--- src/GvimExt/gvimext.def 2011-06-15 03:50:55.000000000 +0200
+***************
+*** 1,7 ****
+ ;gvimdef.def : Declares the module parameters for the DLL.
+
+ LIBRARY gvimext
+! DESCRIPTION 'Vim Shell Extension'
+
+ EXPORTS
+ DllCanUnloadNow private
+--- 1,7 ----
+ ;gvimdef.def : Declares the module parameters for the DLL.
+
+ LIBRARY gvimext
+! ; DESCRIPTION 'Vim Shell Extension'
+
+ EXPORTS
+ DllCanUnloadNow private
+*** ../mercurial/vim73/src/GvimExt/gvimext_ming.def 2010-05-15 21:22:11.000000000 +0200
+--- src/GvimExt/gvimext_ming.def 2011-06-15 03:51:05.000000000 +0200
+***************
+*** 3,9 ****
+ ;Hence this is the same file as gvimext.def with private removed
+
+ LIBRARY gvimext
+! DESCRIPTION 'Vim Shell Extension build with MinGW'
+
+ EXPORTS
+ DllCanUnloadNow = DllCanUnloadNow@0
+--- 3,9 ----
+ ;Hence this is the same file as gvimext.def with private removed
+
+ LIBRARY gvimext
+! ; DESCRIPTION 'Vim Shell Extension build with MinGW'
+
+ EXPORTS
+ DllCanUnloadNow = DllCanUnloadNow@0
+*** ../vim-7.3.221/src/version.c 2011-06-19 01:14:23.000000000 +0200
+--- src/version.c 2011-06-19 01:26:57.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 222,
+ /**/
+
+--
+What is the difference between a professional and an amateur?
+The ark was built by an amateur; professionals gave us the Titanic.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.223 b/source/ap/vim/patches/7.3.223
new file mode 100644
index 000000000..e151c5b74
--- /dev/null
+++ b/source/ap/vim/patches/7.3.223
@@ -0,0 +1,387 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.223
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.223
+Problem: MingW cross compilation doesn't work with tiny features.
+Solution: Move acp_to_enc(), enc_to_utf16() and utf16_to_enc() outside of
+ "#ifdef CLIPBOARD". Fix typo in makefile.
+Files: src/Make_ming.mak, src/os_mswin.c
+
+
+*** ../mercurial/vim73/src/Make_ming.mak 2010-12-30 14:50:46.000000000 +0100
+--- src/Make_ming.mak 2011-06-19 01:20:16.000000000 +0200
+***************
+*** 87,93 ****
+
+ # If you are using gettext-0.10.35 from http://sourceforge.net/projects/gettext
+ # or gettext-0.10.37 from http://sourceforge.net/projects/mingwrep/
+! # uncomment the following, but I can't build a static versión with them, ?-(|
+ #GETTEXT=c:/gettext-0.10.37-20010430
+ #STATIC_GETTEXT=USE_STATIC_GETTEXT
+ #DYNAMIC_GETTEXT=DYNAMIC_GETTEXT
+--- 87,93 ----
+
+ # If you are using gettext-0.10.35 from http://sourceforge.net/projects/gettext
+ # or gettext-0.10.37 from http://sourceforge.net/projects/mingwrep/
+! # uncomment the following, but I can't build a static version with them, ?-(|
+ #GETTEXT=c:/gettext-0.10.37-20010430
+ #STATIC_GETTEXT=USE_STATIC_GETTEXT
+ #DYNAMIC_GETTEXT=DYNAMIC_GETTEXT
+*** ../mercurial/vim73/src/os_mswin.c 2011-06-19 01:14:23.000000000 +0200
+--- src/os_mswin.c 2011-06-19 01:25:23.000000000 +0200
+***************
+*** 1105,1236 ****
+ return ret;
+ }
+
+- #if defined(FEAT_MBYTE) || defined(PROTO)
+- /*
+- * Note: the following two functions are only guaranteed to work when using
+- * valid MS-Windows codepages or when iconv() is available.
+- */
+-
+- /*
+- * Convert "str" from 'encoding' to UTF-16.
+- * Input in "str" with length "*lenp". When "lenp" is NULL, use strlen().
+- * Output is returned as an allocated string. "*lenp" is set to the length of
+- * the result. A trailing NUL is always added.
+- * Returns NULL when out of memory.
+- */
+- short_u *
+- enc_to_utf16(char_u *str, int *lenp)
+- {
+- vimconv_T conv;
+- WCHAR *ret;
+- char_u *allocbuf = NULL;
+- int len_loc;
+- int length;
+-
+- if (lenp == NULL)
+- {
+- len_loc = (int)STRLEN(str) + 1;
+- lenp = &len_loc;
+- }
+-
+- if (enc_codepage > 0)
+- {
+- /* We can do any CP### -> UTF-16 in one pass, and we can do it
+- * without iconv() (convert_* may need iconv). */
+- MultiByteToWideChar_alloc(enc_codepage, 0, str, *lenp, &ret, &length);
+- }
+- else
+- {
+- /* Use "latin1" by default, we might be called before we have p_enc
+- * set up. Convert to utf-8 first, works better with iconv(). Does
+- * nothing if 'encoding' is "utf-8". */
+- conv.vc_type = CONV_NONE;
+- if (convert_setup(&conv, p_enc ? p_enc : (char_u *)"latin1",
+- (char_u *)"utf-8") == FAIL)
+- return NULL;
+- if (conv.vc_type != CONV_NONE)
+- {
+- str = allocbuf = string_convert(&conv, str, lenp);
+- if (str == NULL)
+- return NULL;
+- }
+- convert_setup(&conv, NULL, NULL);
+-
+- length = utf8_to_utf16(str, *lenp, NULL, NULL);
+- ret = (WCHAR *)alloc((unsigned)((length + 1) * sizeof(WCHAR)));
+- if (ret != NULL)
+- {
+- utf8_to_utf16(str, *lenp, (short_u *)ret, NULL);
+- ret[length] = 0;
+- }
+-
+- vim_free(allocbuf);
+- }
+-
+- *lenp = length;
+- return (short_u *)ret;
+- }
+-
+- /*
+- * Convert an UTF-16 string to 'encoding'.
+- * Input in "str" with length (counted in wide characters) "*lenp". When
+- * "lenp" is NULL, use wcslen().
+- * Output is returned as an allocated string. If "*lenp" is not NULL it is
+- * set to the length of the result.
+- * Returns NULL when out of memory.
+- */
+- char_u *
+- utf16_to_enc(short_u *str, int *lenp)
+- {
+- vimconv_T conv;
+- char_u *utf8_str = NULL, *enc_str = NULL;
+- int len_loc;
+-
+- if (lenp == NULL)
+- {
+- len_loc = (int)wcslen(str) + 1;
+- lenp = &len_loc;
+- }
+-
+- if (enc_codepage > 0)
+- {
+- /* We can do any UTF-16 -> CP### in one pass. */
+- int length;
+-
+- WideCharToMultiByte_alloc(enc_codepage, 0, str, *lenp,
+- (LPSTR *)&enc_str, &length, 0, 0);
+- *lenp = length;
+- return enc_str;
+- }
+-
+- /* Avoid allocating zero bytes, it generates an error message. */
+- utf8_str = alloc(utf16_to_utf8(str, *lenp == 0 ? 1 : *lenp, NULL));
+- if (utf8_str != NULL)
+- {
+- *lenp = utf16_to_utf8(str, *lenp, utf8_str);
+-
+- /* We might be called before we have p_enc set up. */
+- conv.vc_type = CONV_NONE;
+- convert_setup(&conv, (char_u *)"utf-8",
+- p_enc? p_enc: (char_u *)"latin1");
+- if (conv.vc_type == CONV_NONE)
+- {
+- /* p_enc is utf-8, so we're done. */
+- enc_str = utf8_str;
+- }
+- else
+- {
+- enc_str = string_convert(&conv, utf8_str, lenp);
+- vim_free(utf8_str);
+- }
+-
+- convert_setup(&conv, NULL, NULL);
+- }
+-
+- return enc_str;
+- }
+- #endif /* FEAT_MBYTE */
+-
+ /*
+ * Wait for another process to Close the Clipboard.
+ * Returns TRUE for success.
+--- 1105,1110 ----
+***************
+*** 1436,1467 ****
+ #endif
+ }
+
+- #if (defined(FEAT_MBYTE) && defined(WIN3264)) || defined(PROTO)
+- /*
+- * Convert from the active codepage to 'encoding'.
+- * Input is "str[str_size]".
+- * The result is in allocated memory: "out[outlen]". With terminating NUL.
+- */
+- void
+- acp_to_enc(str, str_size, out, outlen)
+- char_u *str;
+- int str_size;
+- char_u **out;
+- int *outlen;
+-
+- {
+- LPWSTR widestr;
+-
+- MultiByteToWideChar_alloc(GetACP(), 0, str, str_size, &widestr, outlen);
+- if (widestr != NULL)
+- {
+- ++*outlen; /* Include the 0 after the string */
+- *out = utf16_to_enc((short_u *)widestr, outlen);
+- vim_free(widestr);
+- }
+- }
+- #endif
+-
+ /*
+ * Send the current selection to the clipboard.
+ */
+--- 1310,1315 ----
+***************
+*** 1626,1631 ****
+--- 1474,1631 ----
+
+ #endif /* FEAT_CLIPBOARD */
+
++ #if defined(FEAT_MBYTE) || defined(PROTO)
++ /*
++ * Note: the following two functions are only guaranteed to work when using
++ * valid MS-Windows codepages or when iconv() is available.
++ */
++
++ /*
++ * Convert "str" from 'encoding' to UTF-16.
++ * Input in "str" with length "*lenp". When "lenp" is NULL, use strlen().
++ * Output is returned as an allocated string. "*lenp" is set to the length of
++ * the result. A trailing NUL is always added.
++ * Returns NULL when out of memory.
++ */
++ short_u *
++ enc_to_utf16(char_u *str, int *lenp)
++ {
++ vimconv_T conv;
++ WCHAR *ret;
++ char_u *allocbuf = NULL;
++ int len_loc;
++ int length;
++
++ if (lenp == NULL)
++ {
++ len_loc = (int)STRLEN(str) + 1;
++ lenp = &len_loc;
++ }
++
++ if (enc_codepage > 0)
++ {
++ /* We can do any CP### -> UTF-16 in one pass, and we can do it
++ * without iconv() (convert_* may need iconv). */
++ MultiByteToWideChar_alloc(enc_codepage, 0, str, *lenp, &ret, &length);
++ }
++ else
++ {
++ /* Use "latin1" by default, we might be called before we have p_enc
++ * set up. Convert to utf-8 first, works better with iconv(). Does
++ * nothing if 'encoding' is "utf-8". */
++ conv.vc_type = CONV_NONE;
++ if (convert_setup(&conv, p_enc ? p_enc : (char_u *)"latin1",
++ (char_u *)"utf-8") == FAIL)
++ return NULL;
++ if (conv.vc_type != CONV_NONE)
++ {
++ str = allocbuf = string_convert(&conv, str, lenp);
++ if (str == NULL)
++ return NULL;
++ }
++ convert_setup(&conv, NULL, NULL);
++
++ length = utf8_to_utf16(str, *lenp, NULL, NULL);
++ ret = (WCHAR *)alloc((unsigned)((length + 1) * sizeof(WCHAR)));
++ if (ret != NULL)
++ {
++ utf8_to_utf16(str, *lenp, (short_u *)ret, NULL);
++ ret[length] = 0;
++ }
++
++ vim_free(allocbuf);
++ }
++
++ *lenp = length;
++ return (short_u *)ret;
++ }
++
++ /*
++ * Convert an UTF-16 string to 'encoding'.
++ * Input in "str" with length (counted in wide characters) "*lenp". When
++ * "lenp" is NULL, use wcslen().
++ * Output is returned as an allocated string. If "*lenp" is not NULL it is
++ * set to the length of the result.
++ * Returns NULL when out of memory.
++ */
++ char_u *
++ utf16_to_enc(short_u *str, int *lenp)
++ {
++ vimconv_T conv;
++ char_u *utf8_str = NULL, *enc_str = NULL;
++ int len_loc;
++
++ if (lenp == NULL)
++ {
++ len_loc = (int)wcslen(str) + 1;
++ lenp = &len_loc;
++ }
++
++ if (enc_codepage > 0)
++ {
++ /* We can do any UTF-16 -> CP### in one pass. */
++ int length;
++
++ WideCharToMultiByte_alloc(enc_codepage, 0, str, *lenp,
++ (LPSTR *)&enc_str, &length, 0, 0);
++ *lenp = length;
++ return enc_str;
++ }
++
++ /* Avoid allocating zero bytes, it generates an error message. */
++ utf8_str = alloc(utf16_to_utf8(str, *lenp == 0 ? 1 : *lenp, NULL));
++ if (utf8_str != NULL)
++ {
++ *lenp = utf16_to_utf8(str, *lenp, utf8_str);
++
++ /* We might be called before we have p_enc set up. */
++ conv.vc_type = CONV_NONE;
++ convert_setup(&conv, (char_u *)"utf-8",
++ p_enc? p_enc: (char_u *)"latin1");
++ if (conv.vc_type == CONV_NONE)
++ {
++ /* p_enc is utf-8, so we're done. */
++ enc_str = utf8_str;
++ }
++ else
++ {
++ enc_str = string_convert(&conv, utf8_str, lenp);
++ vim_free(utf8_str);
++ }
++
++ convert_setup(&conv, NULL, NULL);
++ }
++
++ return enc_str;
++ }
++ #endif /* FEAT_MBYTE */
++
++ #if (defined(FEAT_MBYTE) && defined(WIN3264)) || defined(PROTO)
++ /*
++ * Convert from the active codepage to 'encoding'.
++ * Input is "str[str_size]".
++ * The result is in allocated memory: "out[outlen]". With terminating NUL.
++ */
++ void
++ acp_to_enc(str, str_size, out, outlen)
++ char_u *str;
++ int str_size;
++ char_u **out;
++ int *outlen;
++
++ {
++ LPWSTR widestr;
++
++ MultiByteToWideChar_alloc(GetACP(), 0, str, str_size, &widestr, outlen);
++ if (widestr != NULL)
++ {
++ ++*outlen; /* Include the 0 after the string */
++ *out = utf16_to_enc((short_u *)widestr, outlen);
++ vim_free(widestr);
++ }
++ }
++ #endif
++
+
+ /*
+ * Debugging helper: expose the MCH_WRITE_DUMP stuff to other modules
+*** ../vim-7.3.222/src/version.c 2011-06-19 01:27:29.000000000 +0200
+--- src/version.c 2011-06-19 01:28:41.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 223,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+191. You rate eating establishments not by the quality of the food,
+ but by the availability of electrical outlets for your PowerBook.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.224 b/source/ap/vim/patches/7.3.224
new file mode 100644
index 000000000..1673f4768
--- /dev/null
+++ b/source/ap/vim/patches/7.3.224
@@ -0,0 +1,162 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.224
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.224
+Problem: Can't pass dict to sort function.
+Solution: Add the optional {dict} argument to sort(). (ZyX)
+Files: runtime/doc/eval.txt, src/eval.c
+
+
+*** ../mercurial/vim73/runtime/doc/eval.txt 2011-05-19 17:25:36.000000000 +0200
+--- runtime/doc/eval.txt 2011-06-19 02:42:52.000000000 +0200
+***************
+*** 1919,1925 ****
+ simplify( {filename}) String simplify filename as much as possible
+ sin( {expr}) Float sine of {expr}
+ sinh( {expr}) Float hyperbolic sine of {expr}
+! sort( {list} [, {func}]) List sort {list}, using {func} to compare
+ soundfold( {word}) String sound-fold {word}
+ spellbadword() String badly spelled word at cursor
+ spellsuggest( {word} [, {max} [, {capital}]])
+--- 1922,1929 ----
+ simplify( {filename}) String simplify filename as much as possible
+ sin( {expr}) Float sine of {expr}
+ sinh( {expr}) Float hyperbolic sine of {expr}
+! sort( {list} [, {func} [, {dict}]])
+! List sort {list}, using {func} to compare
+ soundfold( {word}) String sound-fold {word}
+ spellbadword() String badly spelled word at cursor
+ spellsuggest( {word} [, {max} [, {capital}]])
+***************
+*** 5275,5281 ****
+ {only available when compiled with the |+float| feature}
+
+
+! sort({list} [, {func}]) *sort()* *E702*
+ Sort the items in {list} in-place. Returns {list}. If you
+ want a list to remain unmodified make a copy first: >
+ :let sortedlist = sort(copy(mylist))
+--- 5279,5285 ----
+ {only available when compiled with the |+float| feature}
+
+
+! sort({list} [, {func} [, {dict}]]) *sort()* *E702*
+ Sort the items in {list} in-place. Returns {list}. If you
+ want a list to remain unmodified make a copy first: >
+ :let sortedlist = sort(copy(mylist))
+***************
+*** 5283,5288 ****
+--- 5287,5294 ----
+ Numbers sort after Strings, |Lists| after Numbers.
+ For sorting text in the current buffer use |:sort|.
+ When {func} is given and it is one then case is ignored.
++ {dict} is for functions with the "dict" attribute. It will be
++ used to set the local variable "self". |Dictionary-function|
+ When {func} is a |Funcref| or a function name, this function
+ is called to compare items. The function is invoked with two
+ items as argument and must return zero if they are equal, 1 or
+*** ../mercurial/vim73/src/eval.c 2011-05-19 18:26:34.000000000 +0200
+--- src/eval.c 2011-06-19 02:51:13.000000000 +0200
+***************
+*** 7930,7936 ****
+ {"sin", 1, 1, f_sin},
+ {"sinh", 1, 1, f_sinh},
+ #endif
+! {"sort", 1, 2, f_sort},
+ {"soundfold", 1, 1, f_soundfold},
+ {"spellbadword", 0, 1, f_spellbadword},
+ {"spellsuggest", 1, 3, f_spellsuggest},
+--- 7930,7936 ----
+ {"sin", 1, 1, f_sin},
+ {"sinh", 1, 1, f_sinh},
+ #endif
+! {"sort", 1, 3, f_sort},
+ {"soundfold", 1, 1, f_soundfold},
+ {"spellbadword", 0, 1, f_spellbadword},
+ {"spellsuggest", 1, 3, f_spellsuggest},
+***************
+*** 16366,16371 ****
+--- 16366,16372 ----
+
+ static int item_compare_ic;
+ static char_u *item_compare_func;
++ static dict_T *item_compare_selfdict;
+ static int item_compare_func_err;
+ #define ITEM_COMPARE_FAIL 999
+
+***************
+*** 16425,16431 ****
+
+ rettv.v_type = VAR_UNKNOWN; /* clear_tv() uses this */
+ res = call_func(item_compare_func, (int)STRLEN(item_compare_func),
+! &rettv, 2, argv, 0L, 0L, &dummy, TRUE, NULL);
+ clear_tv(&argv[0]);
+ clear_tv(&argv[1]);
+
+--- 16426,16433 ----
+
+ rettv.v_type = VAR_UNKNOWN; /* clear_tv() uses this */
+ res = call_func(item_compare_func, (int)STRLEN(item_compare_func),
+! &rettv, 2, argv, 0L, 0L, &dummy, TRUE,
+! item_compare_selfdict);
+ clear_tv(&argv[0]);
+ clear_tv(&argv[1]);
+
+***************
+*** 16471,16478 ****
+--- 16473,16482 ----
+
+ item_compare_ic = FALSE;
+ item_compare_func = NULL;
++ item_compare_selfdict = NULL;
+ if (argvars[1].v_type != VAR_UNKNOWN)
+ {
++ /* optional second argument: {func} */
+ if (argvars[1].v_type == VAR_FUNC)
+ item_compare_func = argvars[1].vval.v_string;
+ else
+***************
+*** 16487,16492 ****
+--- 16491,16507 ----
+ else
+ item_compare_func = get_tv_string(&argvars[1]);
+ }
++
++ if (argvars[2].v_type != VAR_UNKNOWN)
++ {
++ /* optional third argument: {dict} */
++ if (argvars[2].v_type != VAR_DICT)
++ {
++ EMSG(_(e_dictreq));
++ return;
++ }
++ item_compare_selfdict = argvars[2].vval.v_dict;
++ }
+ }
+
+ /* Make an array with each entry pointing to an item in the List. */
+*** ../vim-7.3.223/src/version.c 2011-06-19 01:30:01.000000000 +0200
+--- src/version.c 2011-06-19 02:52:46.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 224,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+193. You ask your girlfriend to drive home so you can sit back with
+ your PDA and download the information to your laptop
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.225 b/source/ap/vim/patches/7.3.225
new file mode 100644
index 000000000..5a32b9a62
--- /dev/null
+++ b/source/ap/vim/patches/7.3.225
Binary files differ
diff --git a/source/ap/vim/patches/7.3.226 b/source/ap/vim/patches/7.3.226
new file mode 100644
index 000000000..0002aa77f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.226
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.226
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.226
+Problem: On a 64 bit system "syn sync fromstart" is very slow. (Bjorn
+ Steinbrink)
+Solution: Store the state when starting to parse from the first line.
+Files: src/syntax.c
+
+
+*** ../mercurial/vim73/src/syntax.c 2011-05-25 17:56:23.000000000 +0200
+--- src/syntax.c 2011-06-19 04:47:08.000000000 +0200
+***************
+*** 559,565 ****
+ if (INVALID_STATE(&current_state))
+ {
+ syn_sync(wp, lnum, last_valid);
+! first_stored = current_lnum + syn_block->b_syn_sync_minlines;
+ }
+ else
+ first_stored = current_lnum;
+--- 559,571 ----
+ if (INVALID_STATE(&current_state))
+ {
+ syn_sync(wp, lnum, last_valid);
+! if (current_lnum == 1)
+! /* First line is always valid, no matter "minlines". */
+! first_stored = 1;
+! else
+! /* Need to parse "minlines" lines before state can be considered
+! * valid to store. */
+! first_stored = current_lnum + syn_block->b_syn_sync_minlines;
+ }
+ else
+ first_stored = current_lnum;
+*** ../vim-7.3.225/src/version.c 2011-06-19 04:31:54.000000000 +0200
+--- src/version.c 2011-06-19 04:49:53.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 226,
+ /**/
+
+--
+Press any key to continue, press any other key to quit.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.227 b/source/ap/vim/patches/7.3.227
new file mode 100644
index 000000000..55d5a9c6b
--- /dev/null
+++ b/source/ap/vim/patches/7.3.227
@@ -0,0 +1,109 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.227
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.227 (after 7.3.221)
+Problem: Mac OS doesn't have the linewise clipboard fix.
+Solution: Also change the Mac OS file. (Bjorn Winckler)
+Files: src/os_macosx.m
+
+
+*** ../mercurial/vim73/src/os_macosx.m 2011-06-13 02:03:55.000000000 +0200
+--- src/os_macosx.m 2011-06-20 00:23:57.000000000 +0200
+***************
+*** 65,71 ****
+ NSString *bestType = [pb availableTypeFromArray:supportedTypes];
+ if (!bestType) goto releasepool;
+
+! int motion_type = MCHAR;
+ NSString *string = nil;
+
+ if ([bestType isEqual:VimPboardType])
+--- 65,71 ----
+ NSString *bestType = [pb availableTypeFromArray:supportedTypes];
+ if (!bestType) goto releasepool;
+
+! int motion_type = MAUTO;
+ NSString *string = nil;
+
+ if ([bestType isEqual:VimPboardType])
+***************
+*** 89,97 ****
+
+ if (!string)
+ {
+! /* Use NSStringPboardType. The motion type is set to line-wise if the
+! * string contains at least one EOL character, otherwise it is set to
+! * character-wise (block-wise is never used).
+ */
+ NSMutableString *mstring =
+ [[pb stringForType:NSStringPboardType] mutableCopy];
+--- 89,95 ----
+
+ if (!string)
+ {
+! /* Use NSStringPboardType. The motion type is detected automatically.
+ */
+ NSMutableString *mstring =
+ [[pb stringForType:NSStringPboardType] mutableCopy];
+***************
+*** 108,126 ****
+ options:0 range:range];
+ }
+
+- /* Scan for newline character to decide whether the string should be
+- * pasted line-wise or character-wise.
+- */
+- motion_type = MCHAR;
+- if (0 < n || NSNotFound != [mstring rangeOfString:@"\n"].location)
+- motion_type = MLINE;
+-
+ string = mstring;
+ }
+
+ if (!(MCHAR == motion_type || MLINE == motion_type || MBLOCK == motion_type
+ || MAUTO == motion_type))
+! motion_type = MCHAR;
+
+ char_u *str = (char_u*)[string UTF8String];
+ int len = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
+--- 106,118 ----
+ options:0 range:range];
+ }
+
+ string = mstring;
+ }
+
++ /* Default to MAUTO, uses MCHAR or MLINE depending on trailing NL. */
+ if (!(MCHAR == motion_type || MLINE == motion_type || MBLOCK == motion_type
+ || MAUTO == motion_type))
+! motion_type = MAUTO;
+
+ char_u *str = (char_u*)[string UTF8String];
+ int len = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
+*** ../vim-7.3.226/src/version.c 2011-06-19 04:54:17.000000000 +0200
+--- src/version.c 2011-06-20 00:21:53.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 227,
+ /**/
+
+--
+Some of the well know MS-Windows errors:
+ EMULTI Multitasking attempted, system confused
+ EKEYBOARD Keyboard locked, try getting out of this one!
+ EXPLAIN Unexplained error, please tell us what happened
+ EFUTURE Reserved for our future mistakes
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.228 b/source/ap/vim/patches/7.3.228
new file mode 100644
index 000000000..3edede597
--- /dev/null
+++ b/source/ap/vim/patches/7.3.228
@@ -0,0 +1,45 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.228
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.228
+Problem: "2gj" does not always move to the correct position.
+Solution: Get length of line after moving to a next line. (James Vega)
+Files: src/normal.c
+
+
+*** ../mercurial/vim73/src/normal.c 2011-05-10 17:29:28.000000000 +0200
+--- src/normal.c 2011-06-20 00:41:43.000000000 +0200
+***************
+*** 4533,4538 ****
+--- 4533,4539 ----
+ }
+ curwin->w_cursor.lnum++;
+ curwin->w_curswant %= width2;
++ linelen = linetabsize(ml_get_curline());
+ }
+ }
+ }
+*** ../vim-7.3.227/src/version.c 2011-06-20 00:25:37.000000000 +0200
+--- src/version.c 2011-06-20 00:45:15.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 228,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+197. Your desk collapses under the weight of your computer peripherals.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.229 b/source/ap/vim/patches/7.3.229
new file mode 100644
index 000000000..b133f7a48
--- /dev/null
+++ b/source/ap/vim/patches/7.3.229
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.229
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.229
+Problem: Using fork() makes gvim crash on Mac when build with
+ CoreFoundation.
+Solution: Disallow fork() when __APPLE__ is defined. (Hisashi T Fujinaka)
+Files: src/gui.c
+
+
+*** ../mercurial/vim73/src/gui.c 2011-05-10 16:41:13.000000000 +0200
+--- src/gui.c 2011-06-20 00:51:21.000000000 +0200
+***************
+*** 59,65 ****
+ gui_start()
+ {
+ char_u *old_term;
+! #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X)
+ # define MAY_FORK
+ int dofork = TRUE;
+ #endif
+--- 59,66 ----
+ gui_start()
+ {
+ char_u *old_term;
+! #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X) \
+! && !defined(__APPLE__)
+ # define MAY_FORK
+ int dofork = TRUE;
+ #endif
+*** ../vim-7.3.228/src/version.c 2011-06-20 00:45:55.000000000 +0200
+--- src/version.c 2011-06-20 00:50:42.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 229,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+198. You read all the quotes at Netaholics Anonymous and keep thinking
+ "What's wrong with that?"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.230 b/source/ap/vim/patches/7.3.230
new file mode 100644
index 000000000..80fcdf130
--- /dev/null
+++ b/source/ap/vim/patches/7.3.230
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.230
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.230
+Problem: ":wundo" and ":rundo" don't unescape their argument. (Aaron
+ Thoma)
+Solution: Use FILE1 instead of XFILE.
+Files: src/ex_cmds.h
+
+
+*** ../mercurial/vim73/src/ex_cmds.h 2010-08-20 11:09:02.000000000 +0200
+--- src/ex_cmds.h 2011-06-20 04:44:13.000000000 +0200
+***************
+*** 788,794 ****
+ EX(CMD_rubyfile, "rubyfile", ex_rubyfile,
+ RANGE|FILE1|NEEDARG|CMDWIN),
+ EX(CMD_rundo, "rundo", ex_rundo,
+! NEEDARG|EXTRA|XFILE),
+ EX(CMD_rviminfo, "rviminfo", ex_viminfo,
+ BANG|FILE1|TRLBAR|CMDWIN),
+ EX(CMD_substitute, "substitute", do_sub,
+--- 788,794 ----
+ EX(CMD_rubyfile, "rubyfile", ex_rubyfile,
+ RANGE|FILE1|NEEDARG|CMDWIN),
+ EX(CMD_rundo, "rundo", ex_rundo,
+! NEEDARG|FILE1),
+ EX(CMD_rviminfo, "rviminfo", ex_viminfo,
+ BANG|FILE1|TRLBAR|CMDWIN),
+ EX(CMD_substitute, "substitute", do_sub,
+***************
+*** 1078,1084 ****
+ EX(CMD_wsverb, "wsverb", ex_wsverb,
+ EXTRA|NOTADR|NEEDARG),
+ EX(CMD_wundo, "wundo", ex_wundo,
+! BANG|NEEDARG|EXTRA|XFILE),
+ EX(CMD_wviminfo, "wviminfo", ex_viminfo,
+ BANG|FILE1|TRLBAR|CMDWIN),
+ EX(CMD_xit, "xit", ex_exit,
+--- 1078,1084 ----
+ EX(CMD_wsverb, "wsverb", ex_wsverb,
+ EXTRA|NOTADR|NEEDARG),
+ EX(CMD_wundo, "wundo", ex_wundo,
+! BANG|NEEDARG|FILE1),
+ EX(CMD_wviminfo, "wviminfo", ex_viminfo,
+ BANG|FILE1|TRLBAR|CMDWIN),
+ EX(CMD_xit, "xit", ex_exit,
+*** ../vim-7.3.229/src/version.c 2011-06-20 00:53:10.000000000 +0200
+--- src/version.c 2011-06-20 05:02:40.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 230,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+201. When somebody asks you where you are, you tell them in which chat room.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.231 b/source/ap/vim/patches/7.3.231
new file mode 100644
index 000000000..266d0a2bc
--- /dev/null
+++ b/source/ap/vim/patches/7.3.231
@@ -0,0 +1,128 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.231
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Note: this is a weird patch, it redoes patches from 7.3.202 and 7.3.203
+that failed when applied as a patch, but the mercurial repository
+already had this, thus won't change anything there.
+
+
+Patch 7.3.231
+Problem: Runtime file patches failed.
+Solution: Redo the patches made against the patched files instead of the
+ files in the mercurial repository.
+Files: runtime/doc/indent.txt, runtime/doc/os_win32.txt
+
+
+*** ../vim-7.3.230/runtime/doc/indent.txt 2011-05-25 15:16:06.000000000 +0200
+--- runtime/doc/indent.txt 2011-05-31 22:23:39.000000000 +0200
+***************
+*** 356,363 ****
+ BaseClass(3) BaseClass(3)
+ {} {}
+ <
+! +N Indent a continuation line (a line that spills onto the next) N
+! additional characters. (default 'shiftwidth').
+
+ cino= cino=+10 >
+ a = b + 9 * a = b + 9 *
+--- 357,368 ----
+ BaseClass(3) BaseClass(3)
+ {} {}
+ <
+! *cino-+*
+! +N Indent a continuation line (a line that spills onto the next)
+! inside a function N additional characters. (default
+! 'shiftwidth').
+! Outside of a function, when the previous line ended in a
+! backslash, the 2 * N is used.
+
+ cino= cino=+10 >
+ a = b + 9 * a = b + 9 *
+***************
+*** 509,522 ****
+--- 514,532 ----
+ }
+ }
+ <
++ *cino-)*
+ )N Vim searches for unclosed parentheses at most N lines away.
+ This limits the time needed to search for parentheses. (default
+ 20 lines).
+
++ *cino-star*
+ *N Vim searches for unclosed comments at most N lines away. This
+ limits the time needed to search for the start of a comment.
++ If your /* */ comments stop indenting afer N lines this is the
++ value you will want to change.
+ (default 70 lines).
+
++ *cino-#*
+ #N When N is non-zero recognize shell/Perl comments, starting with
+ '#'. Default N is zero: don't recognizes '#' comments. Note
+ that lines starting with # will still be seen as preprocessor
+*** ../vim-7.3.230/runtime/doc/os_win32.txt 2010-08-15 21:57:16.000000000 +0200
+--- runtime/doc/os_win32.txt 2011-05-28 18:17:58.000000000 +0200
+***************
+*** 313,318 ****
+--- 313,349 ----
+ with :!start do not get passed Vim's open file handles, which means they do
+ not have to be closed before Vim.
+ To avoid this special treatment, use ":! start".
++ There are two optional arguments (see the next Q):
++ /min the window will be minimized.
++ /b" no console window will be opened
++ You can only one of these flags at a time. A second second one will be
++ treated as the start of the command.
++
++ Q. How do I avoid getting a window for programs that I run asynchronously?
++ A. You have two possible solutions depending on what exactly do you want:
++ 1) You may use the /min flag in order to run program in a minimized state
++ with no other changes. It will work equally for console and GUI
++ applications.
++ 2) You can use the /b flag to run console applications without creating a
++ console window for them (GUI applications are not affected). But you
++ should use this flag only if the application you run doesn't require any
++ input. Otherwise it will get an EOF error because its input stream
++ (stdin) would be redirected to \\.\NUL (stdoud and stderr too).
++
++ Example for a console application, run Exuberant ctags: >
++ :!start /min ctags -R .
++ < When it has finished you should see file named "tags" in your current
++ directory. You should notice the window title blinking on your taskbar.
++ This is more noticable for commands that take longer.
++ Now delete the "tags" file and run this command: >
++ :!start /b ctags -R .
++ < You should have the same "tags" file, but this time there will be no
++ blinking on the taskbar.
++ Example for a GUI application: >
++ :!start /min notepad
++ :!start /b notepad
++ < The first command runs notepad minimized and the second one runs it
++ normally.
+
+ Q. I'm using Win32s, and when I try to run an external command like "make",
+ Vim doesn't wait for it to finish! Help!
+*** ../vim-7.3.230/src/version.c 2011-06-20 05:02:53.000000000 +0200
+--- src/version.c 2011-06-26 03:14:03.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 231,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+222. You send more than 20 personal e-mails a day.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.232 b/source/ap/vim/patches/7.3.232
new file mode 100644
index 000000000..982d7478c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.232
@@ -0,0 +1,84 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.232
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.232
+Problem: Python doesn't compile without +multi_byte
+Solution: Use "latin1" when MULTI_BYTE is not defined.
+Files: src/if_py_both.h
+
+
+*** ../vim-7.3.231/src/if_py_both.h 2011-06-19 00:27:46.000000000 +0200
+--- src/if_py_both.h 2011-06-26 03:58:07.000000000 +0200
+***************
+*** 12,17 ****
+--- 12,23 ----
+ * Common code for if_python.c and if_python3.c.
+ */
+
++ #ifdef FEAT_MBYTE
++ # define ENC_OPT p_enc
++ #else
++ # define ENC_OPT "latin1"
++ #endif
++
+ /*
+ * obtain a lock on the Vim data structures
+ */
+***************
+*** 68,74 ****
+ char *str = NULL;
+ int error = ((OutputObject *)(self))->error;
+
+! if (!PyArg_ParseTuple(args, "es#", p_enc, &str, &len))
+ return NULL;
+
+ Py_BEGIN_ALLOW_THREADS
+--- 74,80 ----
+ char *str = NULL;
+ int error = ((OutputObject *)(self))->error;
+
+! if (!PyArg_ParseTuple(args, "es#", ENC_OPT, &str, &len))
+ return NULL;
+
+ Py_BEGIN_ALLOW_THREADS
+***************
+*** 108,114 ****
+ char *str = NULL;
+ PyInt len;
+
+! if (!PyArg_Parse(line, "es#", p_enc, &str, &len)) {
+ PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+ Py_DECREF(list);
+ return NULL;
+--- 114,120 ----
+ char *str = NULL;
+ PyInt len;
+
+! if (!PyArg_Parse(line, "es#", ENC_OPT, &str, &len)) {
+ PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+ Py_DECREF(list);
+ return NULL;
+*** ../vim-7.3.231/src/version.c 2011-06-26 03:16:58.000000000 +0200
+--- src/version.c 2011-06-26 04:00:40.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 232,
+ /**/
+
+--
+If evolution theories are correct, humans will soon grow a third
+hand for operating the mouse.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.233 b/source/ap/vim/patches/7.3.233
new file mode 100644
index 000000000..2dcbf89ac
--- /dev/null
+++ b/source/ap/vim/patches/7.3.233
@@ -0,0 +1,81 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.233
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.233
+Problem: ":scriptnames" and ":breaklist" show long file names.
+Solution: Shorten to use "~/" when possible. (Jean-Rene David)
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.3.232/src/ex_cmds2.c 2011-05-19 18:26:34.000000000 +0200
+--- src/ex_cmds2.c 2011-06-26 04:20:24.000000000 +0200
+***************
+*** 682,691 ****
+ for (i = 0; i < dbg_breakp.ga_len; ++i)
+ {
+ bp = &BREAKP(i);
+ smsg((char_u *)_("%3d %s %s line %ld"),
+ bp->dbg_nr,
+ bp->dbg_type == DBG_FUNC ? "func" : "file",
+! bp->dbg_name,
+ (long)bp->dbg_lnum);
+ }
+ }
+--- 682,693 ----
+ for (i = 0; i < dbg_breakp.ga_len; ++i)
+ {
+ bp = &BREAKP(i);
++ if (bp->dbg_type == DBG_FILE)
++ home_replace(NULL, bp->dbg_name, NameBuff, MAXPATHL, TRUE);
+ smsg((char_u *)_("%3d %s %s line %ld"),
+ bp->dbg_nr,
+ bp->dbg_type == DBG_FUNC ? "func" : "file",
+! bp->dbg_type == DBG_FUNC ? bp->dbg_name : NameBuff,
+ (long)bp->dbg_lnum);
+ }
+ }
+***************
+*** 3268,3274 ****
+
+ for (i = 1; i <= script_items.ga_len && !got_int; ++i)
+ if (SCRIPT_ITEM(i).sn_name != NULL)
+! smsg((char_u *)"%3d: %s", i, SCRIPT_ITEM(i).sn_name);
+ }
+
+ # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO)
+--- 3270,3280 ----
+
+ for (i = 1; i <= script_items.ga_len && !got_int; ++i)
+ if (SCRIPT_ITEM(i).sn_name != NULL)
+! {
+! home_replace(NULL, SCRIPT_ITEM(i).sn_name,
+! NameBuff, MAXPATHL, TRUE);
+! smsg((char_u *)"%3d: %s", i, NameBuff);
+! }
+ }
+
+ # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO)
+*** ../vim-7.3.232/src/version.c 2011-06-26 04:01:37.000000000 +0200
+--- src/version.c 2011-06-26 04:23:48.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 233,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+223. You set up a web-cam as your home's security system.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.234 b/source/ap/vim/patches/7.3.234
new file mode 100644
index 000000000..a60df3db1
--- /dev/null
+++ b/source/ap/vim/patches/7.3.234
@@ -0,0 +1,178 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.234
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.234
+Problem: With GTK menu may be popping down.
+Solution: Use event time instead of GDK_CURRENT_TIME. (Hong Xu)
+Files: src/gui.c, src/gui.h, src/gui_gtk.c, src/gui_gtk_x11.c
+
+
+*** ../vim-7.3.233/src/gui.c 2011-06-20 00:53:10.000000000 +0200
+--- src/gui.c 2011-06-26 04:38:09.000000000 +0200
+***************
+*** 84,89 ****
+--- 84,93 ----
+ gui.starting = TRUE;
+ full_screen = FALSE;
+
++ #ifdef FEAT_GUI_GTK
++ gui.event_time = GDK_CURRENT_TIME;
++ #endif
++
+ #ifdef MAY_FORK
+ if (!gui.dofork || vim_strchr(p_go, GO_FORG) || recursive)
+ dofork = FALSE;
+*** ../vim-7.3.233/src/gui.h 2011-05-10 16:41:13.000000000 +0200
+--- src/gui.h 2011-06-26 04:41:21.000000000 +0200
+***************
+*** 401,406 ****
+--- 401,408 ----
+ GtkAccelGroup *accel_group;
+ GtkWidget *filedlg; /* file selection dialog */
+ char_u *browse_fname; /* file name from filedlg */
++
++ guint32 event_time;
+ #endif /* FEAT_GUI_GTK */
+
+ #if defined(FEAT_GUI_TABLINE) \
+*** ../vim-7.3.233/src/gui_gtk.c 2011-01-17 20:08:03.000000000 +0100
+--- src/gui_gtk.c 2011-06-26 04:38:09.000000000 +0200
+***************
+*** 1391,1397 ****
+ gtk_menu_popup(GTK_MENU(menu->submenu_id),
+ NULL, NULL,
+ (GtkMenuPositionFunc)NULL, NULL,
+! 3U, (guint32)GDK_CURRENT_TIME);
+ }
+
+ /* Ugly global variable to pass "mouse_pos" flag from gui_make_popup() to
+--- 1391,1397 ----
+ gtk_menu_popup(GTK_MENU(menu->submenu_id),
+ NULL, NULL,
+ (GtkMenuPositionFunc)NULL, NULL,
+! 3U, gui.event_time);
+ }
+
+ /* Ugly global variable to pass "mouse_pos" flag from gui_make_popup() to
+*** ../vim-7.3.233/src/gui_gtk_x11.c 2011-06-19 01:14:22.000000000 +0200
+--- src/gui_gtk_x11.c 2011-06-26 04:39:57.000000000 +0200
+***************
+*** 88,95 ****
+ # include <X11/Sunkeysym.h>
+ #endif
+
+- static guint32 clipboard_event_time = CurrentTime;
+-
+ /*
+ * Easy-to-use macro for multihead support.
+ */
+--- 88,93 ----
+***************
+*** 934,940 ****
+ guint state;
+ char_u *s, *d;
+
+! clipboard_event_time = event->time;
+ key_sym = event->keyval;
+ state = event->state;
+
+--- 932,938 ----
+ guint state;
+ char_u *s, *d;
+
+! gui.event_time = event->time;
+ key_sym = event->keyval;
+ state = event->state;
+
+***************
+*** 1129,1135 ****
+ GdkEventKey *event,
+ gpointer data UNUSED)
+ {
+! clipboard_event_time = event->time;
+ /*
+ * GTK+ 2 input methods may do fancy stuff on key release events too.
+ * With the default IM for instance, you can enter any UCS code point
+--- 1127,1133 ----
+ GdkEventKey *event,
+ gpointer data UNUSED)
+ {
+! gui.event_time = event->time;
+ /*
+ * GTK+ 2 input methods may do fancy stuff on key release events too.
+ * With the default IM for instance, you can enter any UCS code point
+***************
+*** 1622,1628 ****
+ int x, y;
+ int_u vim_modifiers;
+
+! clipboard_event_time = event->time;
+
+ /* Make sure we have focus now we've been selected */
+ if (gtk_socket_id != 0 && !GTK_WIDGET_HAS_FOCUS(widget))
+--- 1620,1626 ----
+ int x, y;
+ int_u vim_modifiers;
+
+! gui.event_time = event->time;
+
+ /* Make sure we have focus now we've been selected */
+ if (gtk_socket_id != 0 && !GTK_WIDGET_HAS_FOCUS(widget))
+***************
+*** 1733,1739 ****
+ int x, y;
+ int_u vim_modifiers;
+
+! clipboard_event_time = event->time;
+
+ /* Remove any motion "machine gun" timers used for automatic further
+ extension of allocation areas if outside of the applications window
+--- 1731,1737 ----
+ int x, y;
+ int_u vim_modifiers;
+
+! gui.event_time = event->time;
+
+ /* Remove any motion "machine gun" timers used for automatic further
+ extension of allocation areas if outside of the applications window
+***************
+*** 5654,5660 ****
+ int success;
+
+ success = gtk_selection_owner_set(gui.drawarea, cbd->gtk_sel_atom,
+! clipboard_event_time);
+ gui_mch_update();
+ return (success) ? OK : FAIL;
+ }
+--- 5652,5658 ----
+ int success;
+
+ success = gtk_selection_owner_set(gui.drawarea, cbd->gtk_sel_atom,
+! gui.event_time);
+ gui_mch_update();
+ return (success) ? OK : FAIL;
+ }
+*** ../vim-7.3.233/src/version.c 2011-06-26 04:25:24.000000000 +0200
+--- src/version.c 2011-06-26 04:47:02.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 234,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+225. You sign up for free subscriptions for all the computer magazines
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.235 b/source/ap/vim/patches/7.3.235
new file mode 100644
index 000000000..a852c852a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.235
@@ -0,0 +1,360 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.235
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.235
+Problem: ";" gets stuck on a "t" command, it's not useful.
+Solution: Add the ';' flag in 'cpo'. (Christian Brabandt)
+Files: runtime/doc/motion.txt, runtime/doc/options.txt, src/option.h,
+ src/search.c src/testdir/test81.in, src/testdir/test81.ok,
+ src/testdir/Makefile, src/testdir/Make_amiga.mak,
+ src/testdir/Make_dos.mak, src/testdir/Make_ming.mak,
+ src/testdir/Make_os2.mak, src/testdir/Make_vms.mms
+
+
+*** ../vim-7.3.234/runtime/doc/motion.txt 2010-08-15 21:57:17.000000000 +0200
+--- runtime/doc/motion.txt 2011-06-26 05:15:58.000000000 +0200
+***************
+*** 269,279 ****
+ {char} can be entered like with the |f| command.
+
+ *;*
+! ; Repeat latest f, t, F or T [count] times.
+
+ *,*
+ , Repeat latest f, t, F or T in opposite direction
+! [count] times.
+
+ ==============================================================================
+ 3. Up-down motions *up-down-motions*
+--- 269,279 ----
+ {char} can be entered like with the |f| command.
+
+ *;*
+! ; Repeat latest f, t, F or T [count] times. See |cpo-;|
+
+ *,*
+ , Repeat latest f, t, F or T in opposite direction
+! [count] times. See also |cpo-;|
+
+ ==============================================================================
+ 3. Up-down motions *up-down-motions*
+*** ../vim-7.3.234/runtime/doc/options.txt 2011-06-12 20:42:17.000000000 +0200
+--- runtime/doc/options.txt 2011-06-26 05:15:58.000000000 +0200
+***************
+*** 2090,2095 ****
+--- 2117,2128 ----
+ *cpo->*
+ > When appending to a register, put a line break before
+ the appended text.
++ *cpo-;*
++ ; When using |,| or |;| to repeat the last |t| search
++ and the cursor is right in front of the searched
++ character, the cursor won't move. When not included,
++ the cursor would skip over it and jump to the
++ following occurence.
+
+ POSIX flags. These are not included in the Vi default value, except
+ when $VIM_POSIX was set on startup. |posix|
+*** ../vim-7.3.234/src/option.h 2011-06-12 22:13:37.000000000 +0200
+--- src/option.h 2011-06-26 05:17:58.000000000 +0200
+***************
+*** 169,178 ****
+ #define CPO_SUBPERCENT '/' /* % in :s string uses previous one */
+ #define CPO_BACKSL '\\' /* \ is not special in [] */
+ #define CPO_CHDIR '.' /* don't chdir if buffer is modified */
+ /* default values for Vim, Vi and POSIX */
+ #define CPO_VIM "aABceFs"
+! #define CPO_VI "aAbBcCdDeEfFgHiIjJkKlLmMnoOpPqrRsStuvwWxXyZ$!%*-+<>"
+! #define CPO_ALL "aAbBcCdDeEfFgHiIjJkKlLmMnoOpPqrRsStuvwWxXyZ$!%*-+<>#{|&/\\."
+
+ /* characters for p_ww option: */
+ #define WW_ALL "bshl<>[],~"
+--- 169,180 ----
+ #define CPO_SUBPERCENT '/' /* % in :s string uses previous one */
+ #define CPO_BACKSL '\\' /* \ is not special in [] */
+ #define CPO_CHDIR '.' /* don't chdir if buffer is modified */
++ #define CPO_SCOLON ';' /* using "," and ";" will skip over char if
++ * cursor would not move */
+ /* default values for Vim, Vi and POSIX */
+ #define CPO_VIM "aABceFs"
+! #define CPO_VI "aAbBcCdDeEfFgHiIjJkKlLmMnoOpPqrRsStuvwWxXyZ$!%*-+<>;"
+! #define CPO_ALL "aAbBcCdDeEfFgHiIjJkKlLmMnoOpPqrRsStuvwWxXyZ$!%*-+<>#{|&/\\.;"
+
+ /* characters for p_ww option: */
+ #define WW_ALL "bshl<>[],~"
+*** ../vim-7.3.234/src/search.c 2011-05-10 16:41:13.000000000 +0200
+--- src/search.c 2011-06-26 05:20:45.000000000 +0200
+***************
+*** 1546,1551 ****
+--- 1546,1552 ----
+ int col;
+ char_u *p;
+ int len;
++ int stop = TRUE;
+ #ifdef FEAT_MBYTE
+ static char_u bytes[MB_MAXBYTES];
+ static int bytelen = 1; /* >1 for multi-byte char */
+***************
+*** 1580,1585 ****
+--- 1581,1592 ----
+ t_cmd = last_t_cmd;
+ c = lastc;
+ /* For multi-byte re-use last bytes[] and bytelen. */
++
++ /* Force a move of at least one char, so ";" and "," will move the
++ * cursor, even if the cursor is right in front of char we are looking
++ * at. */
++ if (vim_strchr(p_cpo, CPO_SCOLON) == NULL && count == 1)
++ stop = FALSE;
+ }
+
+ if (dir == BACKWARD)
+***************
+*** 1612,1625 ****
+ }
+ if (bytelen == 1)
+ {
+! if (p[col] == c)
+ break;
+ }
+ else
+ {
+! if (vim_memcmp(p + col, bytes, bytelen) == 0)
+ break;
+ }
+ }
+ }
+ else
+--- 1619,1633 ----
+ }
+ if (bytelen == 1)
+ {
+! if (p[col] == c && stop)
+ break;
+ }
+ else
+ {
+! if (vim_memcmp(p + col, bytes, bytelen) == 0 && stop)
+ break;
+ }
++ stop = TRUE;
+ }
+ }
+ else
+***************
+*** 1629,1636 ****
+ {
+ if ((col += dir) < 0 || col >= len)
+ return FAIL;
+! if (p[col] == c)
+ break;
+ }
+ }
+ }
+--- 1637,1645 ----
+ {
+ if ((col += dir) < 0 || col >= len)
+ return FAIL;
+! if (p[col] == c && stop)
+ break;
++ stop = TRUE;
+ }
+ }
+ }
+*** ../vim-7.3.234/src/testdir/test81.in 2011-06-26 05:34:33.000000000 +0200
+--- src/testdir/test81.in 2011-06-26 05:30:31.000000000 +0200
+***************
+*** 0 ****
+--- 1,18 ----
++ Test for t movement command and 'cpo-;' setting
++
++ STARTTEST
++ :set nocompatible
++ :set cpo-=;
++ /firstline/
++ j0tt;D
++ $Ty;D:set cpo+=;
++ j0tt;;D
++ $Ty;;D:?firstline?+1,$w! test.out
++ :qa!
++ ENDTEST
++
++ firstline
++ aaa two three four
++ bbb yee yoo four
++ ccc two three four
++ ddd yee yoo four
+*** ../vim-7.3.234/src/testdir/test81.ok 2011-06-26 05:34:33.000000000 +0200
+--- src/testdir/test81.ok 2011-06-26 05:31:33.000000000 +0200
+***************
+*** 0 ****
+--- 1,4 ----
++ aaa two
++ bbb y
++ ccc
++ ddd yee y
+*** ../vim-7.3.234/src/testdir/Makefile 2011-06-19 04:31:54.000000000 +0200
+--- src/testdir/Makefile 2011-06-26 05:09:56.000000000 +0200
+***************
+*** 26,32 ****
+ test64.out test65.out test66.out test67.out test68.out \
+ test69.out test70.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 26,32 ----
+ test64.out test65.out test66.out test67.out test68.out \
+ test69.out test70.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out
+
+ SCRIPTS_GUI = test16.out
+
+*** ../vim-7.3.234/src/testdir/Make_amiga.mak 2011-06-19 04:31:54.000000000 +0200
+--- src/testdir/Make_amiga.mak 2011-06-26 05:09:07.000000000 +0200
+***************
+*** 28,34 ****
+ test61.out test62.out test63.out test64.out test65.out \
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+! test76.out test77.out test78.out test79.out test80.out
+
+ .SUFFIXES: .in .out
+
+--- 28,35 ----
+ test61.out test62.out test63.out test64.out test65.out \
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+! test76.out test77.out test78.out test79.out test80.out \
+! test81.out
+
+ .SUFFIXES: .in .out
+
+***************
+*** 128,130 ****
+--- 129,132 ----
+ test78.out: test78.in
+ test79.out: test79.in
+ test80.out: test80.in
++ test81.out: test81.in
+*** ../vim-7.3.234/src/testdir/Make_dos.mak 2011-06-19 04:31:54.000000000 +0200
+--- src/testdir/Make_dos.mak 2011-06-26 05:09:16.000000000 +0200
+***************
+*** 29,35 ****
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 29,35 ----
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.3.234/src/testdir/Make_ming.mak 2011-06-19 04:31:54.000000000 +0200
+--- src/testdir/Make_ming.mak 2011-06-26 05:09:24.000000000 +0200
+***************
+*** 49,55 ****
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 49,55 ----
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.3.234/src/testdir/Make_os2.mak 2011-06-19 04:31:54.000000000 +0200
+--- src/testdir/Make_os2.mak 2011-06-26 05:09:33.000000000 +0200
+***************
+*** 28,34 ****
+ test61.out test62.out test63.out test64.out test65.out \
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+! test76.out test77.out test78.out test79.out test80.out
+
+ .SUFFIXES: .in .out
+
+--- 28,35 ----
+ test61.out test62.out test63.out test64.out test65.out \
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+! test76.out test77.out test78.out test79.out test80.out \
+! test81.out
+
+ .SUFFIXES: .in .out
+
+*** ../vim-7.3.234/src/testdir/Make_vms.mms 2011-06-19 04:31:54.000000000 +0200
+--- src/testdir/Make_vms.mms 2011-06-26 05:09:42.000000000 +0200
+***************
+*** 4,10 ****
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2011 Jun 19
+ #
+ # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+ # Edit the lines in the Configuration section below to select.
+--- 4,10 ----
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2011 Jun 26
+ #
+ # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+ # Edit the lines in the Configuration section below to select.
+***************
+*** 75,81 ****
+ test61.out test62.out test63.out test64.out test65.out \
+ test66.out test67.out test68.out test69.out \
+ test71.out test72.out test74.out test75.out test76.out \
+! test77.out test78.out test79.out test80.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+--- 75,81 ----
+ test61.out test62.out test63.out test64.out test65.out \
+ test66.out test67.out test68.out test69.out \
+ test71.out test72.out test74.out test75.out test76.out \
+! test77.out test78.out test79.out test80.out test81.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+*** ../vim-7.3.234/src/version.c 2011-06-26 04:48:56.000000000 +0200
+--- src/version.c 2011-06-26 05:33:53.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 235,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+226. You sit down at the computer right after dinner and your spouse
+ says "See you in the morning."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.236 b/source/ap/vim/patches/7.3.236
new file mode 100644
index 000000000..3be69e302
--- /dev/null
+++ b/source/ap/vim/patches/7.3.236
@@ -0,0 +1,87 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.236
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.236 (after 7.3.232)
+Problem: Python 3 doesn't compile without +multi_byte
+Solution: Use "latin1" when MULTI_BYTE is not defined. (lilydjwg)
+Files: src/if_python3.c
+
+
+*** ../vim-7.3.235/src/if_python3.c 2011-06-19 00:27:46.000000000 +0200
+--- src/if_python3.c 2011-06-26 19:10:57.000000000 +0200
+***************
+*** 70,76 ****
+
+ #define PyInt Py_ssize_t
+ #define PyString_Check(obj) PyUnicode_Check(obj)
+! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)p_enc, NULL);
+ #define PyString_FreeBytes(obj) Py_XDECREF(bytes)
+ #define PyString_AsString(obj) PyBytes_AsString(obj)
+ #define PyString_Size(obj) PyBytes_GET_SIZE(bytes)
+--- 70,76 ----
+
+ #define PyInt Py_ssize_t
+ #define PyString_Check(obj) PyUnicode_Check(obj)
+! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, NULL);
+ #define PyString_FreeBytes(obj) Py_XDECREF(bytes)
+ #define PyString_AsString(obj) PyBytes_AsString(obj)
+ #define PyString_Size(obj) PyBytes_GET_SIZE(bytes)
+***************
+*** 661,667 ****
+
+ /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause
+ * SyntaxError (unicode error). */
+! cmdstr = PyUnicode_Decode(cmd, strlen(cmd), (char *)p_enc, NULL);
+ cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", NULL);
+ Py_XDECREF(cmdstr);
+ PyRun_SimpleString(PyBytes_AsString(cmdbytes));
+--- 661,667 ----
+
+ /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause
+ * SyntaxError (unicode error). */
+! cmdstr = PyUnicode_Decode(cmd, strlen(cmd), (char *)ENC_OPT, NULL);
+ cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", NULL);
+ Py_XDECREF(cmdstr);
+ PyRun_SimpleString(PyBytes_AsString(cmdbytes));
+***************
+*** 1463,1469 ****
+ }
+ *p = '\0';
+
+! result = PyUnicode_Decode(tmp, len, (char *)p_enc, NULL);
+
+ vim_free(tmp);
+ return result;
+--- 1463,1469 ----
+ }
+ *p = '\0';
+
+! result = PyUnicode_Decode(tmp, len, (char *)ENC_OPT, NULL);
+
+ vim_free(tmp);
+ return result;
+*** ../vim-7.3.235/src/version.c 2011-06-26 05:36:07.000000000 +0200
+--- src/version.c 2011-06-26 19:12:12.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 236,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+228. You spend Saturday night making the counter on your home page
+ pass that 2000 mark.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.237 b/source/ap/vim/patches/7.3.237
new file mode 100644
index 000000000..ead50ca6a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.237
@@ -0,0 +1,222 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.237
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.237
+Problem: "filetype" completion doesn't work on Windows. (Yue Wu)
+Solution: Don't use a glob pattern for the directories, use a list of
+ directories. (Dominique Pelle)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.3.236/src/ex_getln.c 2011-05-19 18:26:34.000000000 +0200
+--- src/ex_getln.c 2011-06-26 19:36:36.000000000 +0200
+***************
+*** 110,116 ****
+ static int expand_showtail __ARGS((expand_T *xp));
+ #ifdef FEAT_CMDL_COMPL
+ static int expand_shellcmd __ARGS((char_u *filepat, int *num_file, char_u ***file, int flagsarg));
+! static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname));
+ # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
+ static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
+ static int ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file));
+--- 110,116 ----
+ static int expand_showtail __ARGS((expand_T *xp));
+ #ifdef FEAT_CMDL_COMPL
+ static int expand_shellcmd __ARGS((char_u *filepat, int *num_file, char_u ***file, int flagsarg));
+! static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname[]));
+ # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
+ static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
+ static int ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file));
+***************
+*** 4536,4548 ****
+ || xp->xp_context == EXPAND_TAGS_LISTFILES)
+ return expand_tags(xp->xp_context == EXPAND_TAGS, pat, num_file, file);
+ if (xp->xp_context == EXPAND_COLORS)
+! return ExpandRTDir(pat, num_file, file, "colors");
+ if (xp->xp_context == EXPAND_COMPILER)
+! return ExpandRTDir(pat, num_file, file, "compiler");
+ if (xp->xp_context == EXPAND_OWNSYNTAX)
+! return ExpandRTDir(pat, num_file, file, "syntax");
+ if (xp->xp_context == EXPAND_FILETYPE)
+! return ExpandRTDir(pat, num_file, file, "{syntax,indent,ftplugin}");
+ # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
+ if (xp->xp_context == EXPAND_USER_LIST)
+ return ExpandUserList(xp, num_file, file);
+--- 4536,4560 ----
+ || xp->xp_context == EXPAND_TAGS_LISTFILES)
+ return expand_tags(xp->xp_context == EXPAND_TAGS, pat, num_file, file);
+ if (xp->xp_context == EXPAND_COLORS)
+! {
+! char *directories[] = {"colors", NULL};
+! return ExpandRTDir(pat, num_file, file, directories);
+! }
+ if (xp->xp_context == EXPAND_COMPILER)
+! {
+! char *directories[] = {"colors", NULL};
+! return ExpandRTDir(pat, num_file, file, directories);
+! }
+ if (xp->xp_context == EXPAND_OWNSYNTAX)
+! {
+! char *directories[] = {"syntax", NULL};
+! return ExpandRTDir(pat, num_file, file, directories);
+! }
+ if (xp->xp_context == EXPAND_FILETYPE)
+! {
+! char *directories[] = {"syntax", "indent", "ftplugin", NULL};
+! return ExpandRTDir(pat, num_file, file, directories);
+! }
+ # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
+ if (xp->xp_context == EXPAND_USER_LIST)
+ return ExpandUserList(xp, num_file, file);
+***************
+*** 4995,5051 ****
+ /*
+ * Expand color scheme, compiler or filetype names:
+ * 'runtimepath'/{dirnames}/{pat}.vim
+! * dirnames may contain one directory (ex: "colorscheme") or can be a glob
+! * expression matching multiple directories (ex: "{syntax,ftplugin,indent}").
+ */
+ static int
+ ExpandRTDir(pat, num_file, file, dirnames)
+ char_u *pat;
+ int *num_file;
+ char_u ***file;
+! char *dirnames;
+ {
+! char_u *all;
+ char_u *s;
+ char_u *e;
+ garray_T ga;
+
+ *num_file = 0;
+ *file = NULL;
+! s = alloc((unsigned)(STRLEN(pat) + STRLEN(dirnames) + 7));
+! if (s == NULL)
+! return FAIL;
+! sprintf((char *)s, "%s/%s*.vim", dirnames, pat);
+! all = globpath(p_rtp, s, 0);
+! vim_free(s);
+! if (all == NULL)
+! return FAIL;
+
+! ga_init2(&ga, (int)sizeof(char *), 3);
+! for (s = all; *s != NUL; s = e)
+ {
+! e = vim_strchr(s, '\n');
+! if (e == NULL)
+! e = s + STRLEN(s);
+! if (ga_grow(&ga, 1) == FAIL)
+! break;
+! if (e - 4 > s && STRNICMP(e - 4, ".vim", 4) == 0)
+ {
+! for (s = e - 4; s > all; mb_ptr_back(all, s))
+! if (*s == '\n' || vim_ispathsep(*s))
+! break;
+! ++s;
+! ((char_u **)ga.ga_data)[ga.ga_len] =
+ vim_strnsave(s, (int)(e - s - 4));
+! ++ga.ga_len;
+ }
+! if (*e != NUL)
+! ++e;
+ }
+! vim_free(all);
+
+ /* Sort and remove duplicates which can happen when specifying multiple
+! * directories in dirnames such as "{syntax,ftplugin,indent}". */
+ remove_duplicates(&ga);
+
+ *file = ga.ga_data;
+--- 5007,5074 ----
+ /*
+ * Expand color scheme, compiler or filetype names:
+ * 'runtimepath'/{dirnames}/{pat}.vim
+! * "dirnames" is an array with one or more directory names.
+ */
+ static int
+ ExpandRTDir(pat, num_file, file, dirnames)
+ char_u *pat;
+ int *num_file;
+ char_u ***file;
+! char *dirnames[];
+ {
+! char_u *matches;
+ char_u *s;
+ char_u *e;
+ garray_T ga;
++ int i;
++ int pat_len;
+
+ *num_file = 0;
+ *file = NULL;
+! pat_len = STRLEN(pat);
+! ga_init2(&ga, (int)sizeof(char *), 10);
+
+! for (i = 0; dirnames[i] != NULL; ++i)
+ {
+! s = alloc((unsigned)(STRLEN(dirnames[i]) + pat_len + 7));
+! if (s == NULL)
+ {
+! ga_clear_strings(&ga);
+! return FAIL;
+! }
+! sprintf((char *)s, "%s/%s*.vim", dirnames[i], pat);
+! matches = globpath(p_rtp, s, 0);
+! vim_free(s);
+! if (matches == NULL)
+! continue;
+!
+! for (s = matches; *s != NUL; s = e)
+! {
+! e = vim_strchr(s, '\n');
+! if (e == NULL)
+! e = s + STRLEN(s);
+! if (ga_grow(&ga, 1) == FAIL)
+! break;
+! if (e - 4 > s && STRNICMP(e - 4, ".vim", 4) == 0)
+! {
+! for (s = e - 4; s > matches; mb_ptr_back(matches, s))
+! if (*s == '\n' || vim_ispathsep(*s))
+! break;
+! ++s;
+! ((char_u **)ga.ga_data)[ga.ga_len] =
+ vim_strnsave(s, (int)(e - s - 4));
+! ++ga.ga_len;
+! }
+! if (*e != NUL)
+! ++e;
+ }
+! vim_free(matches);
+ }
+! if (ga.ga_len == 0)
+! return FAIL;
+
+ /* Sort and remove duplicates which can happen when specifying multiple
+! * directories in dirnames. */
+ remove_duplicates(&ga);
+
+ *file = ga.ga_data;
+*** ../vim-7.3.236/src/version.c 2011-06-26 19:13:33.000000000 +0200
+--- src/version.c 2011-06-26 19:39:39.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 237,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+230. You spend your Friday nights typing away at your keyboard
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.238 b/source/ap/vim/patches/7.3.238
new file mode 100644
index 000000000..289b1a432
--- /dev/null
+++ b/source/ap/vim/patches/7.3.238
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.238
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.238
+Problem: Compiler warning for conversion.
+Solution: Add type cast. (Mike Williams)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.3.237/src/ex_getln.c 2011-06-26 19:40:14.000000000 +0200
+--- src/ex_getln.c 2011-07-04 14:23:27.000000000 +0200
+***************
+*** 5025,5031 ****
+
+ *num_file = 0;
+ *file = NULL;
+! pat_len = STRLEN(pat);
+ ga_init2(&ga, (int)sizeof(char *), 10);
+
+ for (i = 0; dirnames[i] != NULL; ++i)
+--- 5025,5031 ----
+
+ *num_file = 0;
+ *file = NULL;
+! pat_len = (int)STRLEN(pat);
+ ga_init2(&ga, (int)sizeof(char *), 10);
+
+ for (i = 0; dirnames[i] != NULL; ++i)
+*** ../vim-7.3.237/src/version.c 2011-06-26 19:40:14.000000000 +0200
+--- src/version.c 2011-07-07 15:04:00.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 238,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+255. You work for a newspaper and your editor asks you to write an
+ article about Internet addiction...in the "first person."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.239 b/source/ap/vim/patches/7.3.239
new file mode 100644
index 000000000..1c03da3f6
--- /dev/null
+++ b/source/ap/vim/patches/7.3.239
@@ -0,0 +1,321 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.239
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.239
+Problem: Python corrects the cursor column without taking 'virtualedit'
+ into account. (lilydjwg)
+Solution: Call check_cursor_col_win().
+Files: src/if_py_both.h, src/mbyte.c, src/misc2.c, src/normal.c,
+ src/proto/mbyte.pro, src/proto/misc2.pro
+
+
+*** ../vim-7.3.238/src/if_py_both.h 2011-06-26 04:01:37.000000000 +0200
+--- src/if_py_both.h 2011-07-07 14:28:19.000000000 +0200
+***************
+*** 534,540 ****
+ {
+ long lnum;
+ long col;
+- long len;
+
+ if (!PyArg_Parse(val, "(ll)", &lnum, &col))
+ return -1;
+--- 534,539 ----
+***************
+*** 549,566 ****
+ if (VimErrorCheck())
+ return -1;
+
+- /* When column is out of range silently correct it. */
+- len = (long)STRLEN(ml_get_buf(this->win->w_buffer, lnum, FALSE));
+- if (col > len)
+- col = len;
+-
+ this->win->w_cursor.lnum = lnum;
+ this->win->w_cursor.col = col;
+ #ifdef FEAT_VIRTUALEDIT
+ this->win->w_cursor.coladd = 0;
+ #endif
+! update_screen(VALID);
+
+ return 0;
+ }
+ else if (strcmp(name, "height") == 0)
+--- 548,562 ----
+ if (VimErrorCheck())
+ return -1;
+
+ this->win->w_cursor.lnum = lnum;
+ this->win->w_cursor.col = col;
+ #ifdef FEAT_VIRTUALEDIT
+ this->win->w_cursor.coladd = 0;
+ #endif
+! /* When column is out of range silently correct it. */
+! check_cursor_col_win(this->win);
+
++ update_screen(VALID);
+ return 0;
+ }
+ else if (strcmp(name, "height") == 0)
+*** ../vim-7.3.238/src/mbyte.c 2011-04-11 14:29:13.000000000 +0200
+--- src/mbyte.c 2011-07-07 14:27:07.000000000 +0200
+***************
+*** 3563,3569 ****
+ void
+ mb_adjust_cursor()
+ {
+! mb_adjustpos(&curwin->w_cursor);
+ }
+
+ /*
+--- 3563,3569 ----
+ void
+ mb_adjust_cursor()
+ {
+! mb_adjustpos(curbuf, &curwin->w_cursor);
+ }
+
+ /*
+***************
+*** 3571,3577 ****
+ * If it points to a tail byte it's moved backwards to the head byte.
+ */
+ void
+! mb_adjustpos(lp)
+ pos_T *lp;
+ {
+ char_u *p;
+--- 3571,3578 ----
+ * If it points to a tail byte it's moved backwards to the head byte.
+ */
+ void
+! mb_adjustpos(buf, lp)
+! buf_T *buf;
+ pos_T *lp;
+ {
+ char_u *p;
+***************
+*** 3582,3588 ****
+ #endif
+ )
+ {
+! p = ml_get(lp->lnum);
+ lp->col -= (*mb_head_off)(p, p + lp->col);
+ #ifdef FEAT_VIRTUALEDIT
+ /* Reset "coladd" when the cursor would be on the right half of a
+--- 3583,3589 ----
+ #endif
+ )
+ {
+! p = ml_get_buf(buf, lp->lnum, FALSE);
+ lp->col -= (*mb_head_off)(p, p + lp->col);
+ #ifdef FEAT_VIRTUALEDIT
+ /* Reset "coladd" when the cursor would be on the right half of a
+*** ../vim-7.3.238/src/misc2.c 2011-04-11 16:56:29.000000000 +0200
+--- src/misc2.c 2011-07-07 14:27:50.000000000 +0200
+***************
+*** 333,339 ****
+ #ifdef FEAT_MBYTE
+ /* prevent from moving onto a trail byte */
+ if (has_mbyte)
+! mb_adjustpos(pos);
+ #endif
+
+ if (col < wcol)
+--- 333,339 ----
+ #ifdef FEAT_MBYTE
+ /* prevent from moving onto a trail byte */
+ if (has_mbyte)
+! mb_adjustpos(curbuf, pos);
+ #endif
+
+ if (col < wcol)
+***************
+*** 544,559 ****
+ void
+ check_cursor_col()
+ {
+ colnr_T len;
+ #ifdef FEAT_VIRTUALEDIT
+! colnr_T oldcol = curwin->w_cursor.col;
+! colnr_T oldcoladd = curwin->w_cursor.col + curwin->w_cursor.coladd;
+ #endif
+
+! len = (colnr_T)STRLEN(ml_get_curline());
+ if (len == 0)
+! curwin->w_cursor.col = 0;
+! else if (curwin->w_cursor.col >= len)
+ {
+ /* Allow cursor past end-of-line when:
+ * - in Insert mode or restarting Insert mode
+--- 544,569 ----
+ void
+ check_cursor_col()
+ {
++ check_cursor_col_win(curwin);
++ }
++
++ /*
++ * Make sure win->w_cursor.col is valid.
++ */
++ void
++ check_cursor_col_win(win)
++ win_T *win;
++ {
+ colnr_T len;
+ #ifdef FEAT_VIRTUALEDIT
+! colnr_T oldcol = win->w_cursor.col;
+! colnr_T oldcoladd = win->w_cursor.col + win->w_cursor.coladd;
+ #endif
+
+! len = (colnr_T)STRLEN(ml_get_buf(win->w_buffer, win->w_cursor.lnum, FALSE));
+ if (len == 0)
+! win->w_cursor.col = 0;
+! else if (win->w_cursor.col >= len)
+ {
+ /* Allow cursor past end-of-line when:
+ * - in Insert mode or restarting Insert mode
+***************
+*** 567,599 ****
+ || (ve_flags & VE_ONEMORE)
+ #endif
+ || virtual_active())
+! curwin->w_cursor.col = len;
+ else
+ {
+! curwin->w_cursor.col = len - 1;
+ #ifdef FEAT_MBYTE
+! /* prevent cursor from moving on the trail byte */
+ if (has_mbyte)
+! mb_adjust_cursor();
+ #endif
+ }
+ }
+! else if (curwin->w_cursor.col < 0)
+! curwin->w_cursor.col = 0;
+
+ #ifdef FEAT_VIRTUALEDIT
+ /* If virtual editing is on, we can leave the cursor on the old position,
+ * only we must set it to virtual. But don't do it when at the end of the
+ * line. */
+ if (oldcol == MAXCOL)
+! curwin->w_cursor.coladd = 0;
+ else if (ve_flags == VE_ALL)
+ {
+! if (oldcoladd > curwin->w_cursor.col)
+! curwin->w_cursor.coladd = oldcoladd - curwin->w_cursor.col;
+ else
+ /* avoid weird number when there is a miscalculation or overflow */
+! curwin->w_cursor.coladd = 0;
+ }
+ #endif
+ }
+--- 577,609 ----
+ || (ve_flags & VE_ONEMORE)
+ #endif
+ || virtual_active())
+! win->w_cursor.col = len;
+ else
+ {
+! win->w_cursor.col = len - 1;
+ #ifdef FEAT_MBYTE
+! /* Move the cursor to the head byte. */
+ if (has_mbyte)
+! mb_adjustpos(win->w_buffer, &win->w_cursor);
+ #endif
+ }
+ }
+! else if (win->w_cursor.col < 0)
+! win->w_cursor.col = 0;
+
+ #ifdef FEAT_VIRTUALEDIT
+ /* If virtual editing is on, we can leave the cursor on the old position,
+ * only we must set it to virtual. But don't do it when at the end of the
+ * line. */
+ if (oldcol == MAXCOL)
+! win->w_cursor.coladd = 0;
+ else if (ve_flags == VE_ALL)
+ {
+! if (oldcoladd > win->w_cursor.col)
+! win->w_cursor.coladd = oldcoladd - win->w_cursor.col;
+ else
+ /* avoid weird number when there is a miscalculation or overflow */
+! win->w_cursor.coladd = 0;
+ }
+ #endif
+ }
+*** ../vim-7.3.238/src/normal.c 2011-06-20 00:45:55.000000000 +0200
+--- src/normal.c 2011-07-07 14:27:57.000000000 +0200
+***************
+*** 8774,8780 ****
+ {
+ --pp->col;
+ #ifdef FEAT_MBYTE
+! mb_adjustpos(pp);
+ #endif
+ }
+ else if (pp->lnum > 1)
+--- 8774,8780 ----
+ {
+ --pp->col;
+ #ifdef FEAT_MBYTE
+! mb_adjustpos(curbuf, pp);
+ #endif
+ }
+ else if (pp->lnum > 1)
+*** ../vim-7.3.238/src/proto/mbyte.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/mbyte.pro 2011-07-07 14:27:09.000000000 +0200
+***************
+*** 56,62 ****
+ int utf_valid_string __ARGS((char_u *s, char_u *end));
+ int dbcs_screen_tail_off __ARGS((char_u *base, char_u *p));
+ void mb_adjust_cursor __ARGS((void));
+! void mb_adjustpos __ARGS((pos_T *lp));
+ char_u *mb_prevptr __ARGS((char_u *line, char_u *p));
+ int mb_charlen __ARGS((char_u *str));
+ int mb_charlen_len __ARGS((char_u *str, int len));
+--- 56,62 ----
+ int utf_valid_string __ARGS((char_u *s, char_u *end));
+ int dbcs_screen_tail_off __ARGS((char_u *base, char_u *p));
+ void mb_adjust_cursor __ARGS((void));
+! void mb_adjustpos __ARGS((buf_T *buf, pos_T *lp));
+ char_u *mb_prevptr __ARGS((char_u *line, char_u *p));
+ int mb_charlen __ARGS((char_u *str));
+ int mb_charlen_len __ARGS((char_u *str, int len));
+*** ../vim-7.3.238/src/proto/misc2.pro 2011-04-11 16:56:29.000000000 +0200
+--- src/proto/misc2.pro 2011-07-07 14:26:57.000000000 +0200
+***************
+*** 14,19 ****
+--- 14,20 ----
+ linenr_T get_cursor_rel_lnum __ARGS((win_T *wp, linenr_T lnum));
+ void check_cursor_lnum __ARGS((void));
+ void check_cursor_col __ARGS((void));
++ void check_cursor_col_win __ARGS((win_T *win));
+ void check_cursor __ARGS((void));
+ void adjust_cursor_col __ARGS((void));
+ int leftcol_changed __ARGS((void));
+*** ../vim-7.3.238/src/version.c 2011-07-07 15:04:38.000000000 +0200
+--- src/version.c 2011-07-07 15:05:49.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 239,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+256. You are able to write down over 250 symptoms of being an internet
+ addict, even though they only asked for 101.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.240 b/source/ap/vim/patches/7.3.240
new file mode 100644
index 000000000..7048ac1f3
--- /dev/null
+++ b/source/ap/vim/patches/7.3.240
@@ -0,0 +1,795 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.240
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Note: I haven't verified this works or even compiles. Please send me a
+patch if you see a problem and can fix it.
+
+Patch 7.3.240
+Problem: External commands can't use pipes on MS-Windows.
+Solution: Implement pipes and use them when 'shelltemp' isn't set. (Vincent
+ Berthoux)
+Files: src/eval.c, src/ex_cmds.c, src/misc2.c, src/os_unix.c,
+ src/os_win32.c, src/proto/misc2.pro, src/ui.c
+
+
+*** ../vim-7.3.239/src/eval.c 2011-06-19 02:55:32.000000000 +0200
+--- src/eval.c 2011-07-07 15:44:56.000000000 +0200
+***************
+*** 11931,11937 ****
+ #ifdef FEAT_SEARCHPATH
+ "file_in_path",
+ #endif
+! #if defined(UNIX) && !defined(USE_SYSTEM)
+ "filterpipe",
+ #endif
+ #ifdef FEAT_FIND_ID
+--- 11931,11937 ----
+ #ifdef FEAT_SEARCHPATH
+ "file_in_path",
+ #endif
+! #if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264)
+ "filterpipe",
+ #endif
+ #ifdef FEAT_FIND_ID
+*** ../vim-7.3.239/src/ex_cmds.c 2011-06-12 22:03:15.000000000 +0200
+--- src/ex_cmds.c 2011-07-07 15:44:56.000000000 +0200
+***************
+*** 1107,1113 ****
+ if (do_out)
+ shell_flags |= SHELL_DOOUT;
+
+! #if !defined(USE_SYSTEM) && defined(UNIX)
+ if (!do_in && do_out && !p_stmp)
+ {
+ /* Use a pipe to fetch stdout of the command, do not use a temp file. */
+--- 1107,1113 ----
+ if (do_out)
+ shell_flags |= SHELL_DOOUT;
+
+! #if (!defined(USE_SYSTEM) && defined(UNIX)) || defined(WIN3264)
+ if (!do_in && do_out && !p_stmp)
+ {
+ /* Use a pipe to fetch stdout of the command, do not use a temp file. */
+*** ../vim-7.3.239/src/misc2.c 2011-07-07 15:08:53.000000000 +0200
+--- src/misc2.c 2011-07-07 15:55:42.000000000 +0200
+***************
+*** 2146,2151 ****
+--- 2146,2170 ----
+ }
+ }
+
++ #if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264)
++ /*
++ * Append the text in "gap" below the cursor line and clear "gap".
++ */
++ void
++ append_ga_line(gap)
++ garray_T *gap;
++ {
++ /* Remove trailing CR. */
++ if (gap->ga_len > 0
++ && !curbuf->b_p_bin
++ && ((char_u *)gap->ga_data)[gap->ga_len - 1] == CAR)
++ --gap->ga_len;
++ ga_append(gap, NUL);
++ ml_append(curwin->w_cursor.lnum++, gap->ga_data, 0, FALSE);
++ gap->ga_len = 0;
++ }
++ #endif
++
+ /************************************************************************
+ * functions that use lookup tables for various things, generally to do with
+ * special key codes.
+*** ../vim-7.3.239/src/os_unix.c 2011-04-11 16:56:29.000000000 +0200
+--- src/os_unix.c 2011-07-07 15:54:58.000000000 +0200
+***************
+*** 3660,3686 ****
+ /* Nothing to do. */
+ }
+
+- #ifndef USE_SYSTEM
+- static void append_ga_line __ARGS((garray_T *gap));
+-
+- /*
+- * Append the text in "gap" below the cursor line and clear "gap".
+- */
+- static void
+- append_ga_line(gap)
+- garray_T *gap;
+- {
+- /* Remove trailing CR. */
+- if (gap->ga_len > 0
+- && !curbuf->b_p_bin
+- && ((char_u *)gap->ga_data)[gap->ga_len - 1] == CAR)
+- --gap->ga_len;
+- ga_append(gap, NUL);
+- ml_append(curwin->w_cursor.lnum++, gap->ga_data, 0, FALSE);
+- gap->ga_len = 0;
+- }
+- #endif
+-
+ int
+ mch_call_shell(cmd, options)
+ char_u *cmd;
+--- 3660,3665 ----
+*** ../vim-7.3.239/src/os_win32.c 2011-05-25 17:06:16.000000000 +0200
+--- src/os_win32.c 2011-07-07 16:08:30.000000000 +0200
+***************
+*** 417,422 ****
+--- 417,427 ----
+ static PGNSECINFO pGetNamedSecurityInfo;
+ #endif
+
++ typedef BOOL (WINAPI *PSETHANDLEINFORMATION)(HANDLE, DWORD, DWORD);
++
++ static BOOL allowPiping = FALSE;
++ static PSETHANDLEINFORMATION pSetHandleInformation;
++
+ /*
+ * Set g_PlatformId to VER_PLATFORM_WIN32_NT (NT) or
+ * VER_PLATFORM_WIN32_WINDOWS (Win95).
+***************
+*** 467,472 ****
+--- 472,489 ----
+ }
+ }
+ #endif
++ /*
++ * If we are on windows NT, try to load the pipe functions, only
++ * available from Win2K.
++ */
++ if (g_PlatformId == VER_PLATFORM_WIN32_NT)
++ {
++ HANDLE kernel32 = GetModuleHandle("kernel32");
++ pSetHandleInformation = (PSETHANDLEINFORMATION)GetProcAddress(
++ kernel32, "SetHandleInformation");
++
++ allowPiping = pSetHandleInformation != NULL;
++ }
+ done = TRUE;
+ }
+ }
+***************
+*** 1635,1641 ****
+ }
+
+ #if ((defined(__MINGW32__) || defined (__CYGWIN32__)) && \
+! __MSVCRT_VERSION__ >= 0x800) || (defined(_MSC_VER) && _MSC_VER >= 1400)
+ /*
+ * Bad parameter handler.
+ *
+--- 1652,1658 ----
+ }
+
+ #if ((defined(__MINGW32__) || defined (__CYGWIN32__)) && \
+! __MSVCRT_VERSION__ >= 0x800) || (defined(_MSC_VER) && _MSC_VER >= 1400)
+ /*
+ * Bad parameter handler.
+ *
+***************
+*** 3210,3216 ****
+ * 4. Prompt the user to press a key to close the console window
+ */
+ static int
+! mch_system(char *cmd, int options)
+ {
+ STARTUPINFO si;
+ PROCESS_INFORMATION pi;
+--- 3227,3233 ----
+ * 4. Prompt the user to press a key to close the console window
+ */
+ static int
+! mch_system_classic(char *cmd, int options)
+ {
+ STARTUPINFO si;
+ PROCESS_INFORMATION pi;
+***************
+*** 3315,3320 ****
+--- 3332,3829 ----
+
+ return ret;
+ }
++
++ /*
++ * Thread launched by the gui to send the current buffer data to the
++ * process. This way avoid to hang up vim totally if the children
++ * process take a long time to process the lines.
++ */
++ static DWORD WINAPI
++ sub_process_writer(LPVOID param)
++ {
++ HANDLE g_hChildStd_IN_Wr = param;
++ linenr_T lnum = curbuf->b_op_start.lnum;
++ DWORD len = 0;
++ DWORD l;
++ char_u *lp = ml_get(lnum);
++ char_u *s;
++ int written = 0;
++
++ for (;;)
++ {
++ l = (DWORD)STRLEN(lp + written);
++ if (l == 0)
++ len = 0;
++ else if (lp[written] == NL)
++ {
++ /* NL -> NUL translation */
++ WriteFile(g_hChildStd_IN_Wr, "", 1, &len, NULL);
++ }
++ else
++ {
++ s = vim_strchr(lp + written, NL);
++ WriteFile(g_hChildStd_IN_Wr, (char *)lp + written,
++ s == NULL ? l : (DWORD)(s - (lp + written)),
++ &len, NULL);
++ }
++ if (len == (int)l)
++ {
++ /* Finished a line, add a NL, unless this line should not have
++ * one. */
++ if (lnum != curbuf->b_op_end.lnum
++ || !curbuf->b_p_bin
++ || (lnum != curbuf->b_no_eol_lnum
++ && (lnum != curbuf->b_ml.ml_line_count
++ || curbuf->b_p_eol)))
++ {
++ WriteFile(g_hChildStd_IN_Wr, "\n", 1, &ignored, NULL);
++ }
++
++ ++lnum;
++ if (lnum > curbuf->b_op_end.lnum)
++ break;
++
++ lp = ml_get(lnum);
++ written = 0;
++ }
++ else if (len > 0)
++ written += len;
++ }
++
++ /* finished all the lines, close pipe */
++ CloseHandle(g_hChildStd_IN_Wr);
++ ExitThread(0);
++ }
++
++
++ # define BUFLEN 100 /* length for buffer, stolen from unix version */
++
++ /*
++ * This function read from the children's stdout and write the
++ * data on screen or in the buffer accordingly.
++ */
++ static void
++ dump_pipe(int options,
++ HANDLE g_hChildStd_OUT_Rd,
++ garray_T *ga,
++ char_u buffer[],
++ DWORD *buffer_off)
++ {
++ DWORD availableBytes = 0;
++ DWORD i;
++ int c;
++ char_u *p;
++ int ret;
++ DWORD len;
++ DWORD toRead;
++ int repeatCount;
++
++ /* we query the pipe to see if there is any data to read
++ * to avoid to perform a blocking read */
++ ret = PeekNamedPipe(g_hChildStd_OUT_Rd, /* pipe to query */
++ NULL, /* optional buffer */
++ 0, /* buffe size */
++ NULL, /* number of read bytes */
++ &availableBytes, /* available bytes total */
++ NULL); /* byteLeft */
++
++ repeatCount = 0;
++ /* We got real data in the pipe, read it */
++ while (ret != 0 && availableBytes > 0 && availableBytes > 0)
++ {
++ repeatCount++;
++ toRead =
++ # ifdef FEAT_MBYTE
++ (DWORD)(BUFLEN - *buffer_off);
++ # else
++ (DWORD)BUFLEN;
++ # endif
++ toRead = availableBytes < toRead ? availableBytes : toRead;
++ ReadFile(g_hChildStd_OUT_Rd, buffer
++ # ifdef FEAT_MBYTE
++ + *buffer_off, toRead
++ # else
++ , toRead
++ # endif
++ , &len, NULL);
++
++ /* If we haven't read anything, there is a problem */
++ if (len == 0)
++ break;
++
++ availableBytes -= len;
++
++ if (options & SHELL_READ)
++ {
++ /* Do NUL -> NL translation, append NL separated
++ * lines to the current buffer. */
++ for (i = 0; i < len; ++i)
++ {
++ if (buffer[i] == NL)
++ append_ga_line(ga);
++ else if (buffer[i] == NUL)
++ ga_append(ga, NL);
++ else
++ ga_append(ga, buffer[i]);
++ }
++ }
++ # ifdef FEAT_MBYTE
++ else if (has_mbyte)
++ {
++ int l;
++
++ len += *buffer_off;
++ buffer[len] = NUL;
++
++ /* Check if the last character in buffer[] is
++ * incomplete, keep these bytes for the next
++ * round. */
++ for (p = buffer; p < buffer + len; p += l)
++ {
++ l = mb_cptr2len(p);
++ if (l == 0)
++ l = 1; /* NUL byte? */
++ else if (MB_BYTE2LEN(*p) != l)
++ break;
++ }
++ if (p == buffer) /* no complete character */
++ {
++ /* avoid getting stuck at an illegal byte */
++ if (len >= 12)
++ ++p;
++ else
++ {
++ *buffer_off = len;
++ return;
++ }
++ }
++ c = *p;
++ *p = NUL;
++ msg_puts(buffer);
++ if (p < buffer + len)
++ {
++ *p = c;
++ *buffer_off = (DWORD)((buffer + len) - p);
++ mch_memmove(buffer, p, *buffer_off);
++ return;
++ }
++ *buffer_off = 0;
++ }
++ # endif /* FEAT_MBYTE */
++ else
++ {
++ buffer[len] = NUL;
++ msg_puts(buffer);
++ }
++
++ windgoto(msg_row, msg_col);
++ cursor_on();
++ out_flush();
++ }
++ }
++
++ /*
++ * Version of system to use for windows NT > 5.0 (Win2K), use pipe
++ * for communication and doesn't open any new window.
++ */
++ static int
++ mch_system_piped(char *cmd, int options)
++ {
++ STARTUPINFO si;
++ PROCESS_INFORMATION pi;
++ DWORD ret = 0;
++
++ HANDLE g_hChildStd_IN_Rd = NULL;
++ HANDLE g_hChildStd_IN_Wr = NULL;
++ HANDLE g_hChildStd_OUT_Rd = NULL;
++ HANDLE g_hChildStd_OUT_Wr = NULL;
++
++ char_u buffer[BUFLEN + 1]; /* reading buffer + size */
++ DWORD len;
++
++ /* buffer used to receive keys */
++ char_u ta_buf[BUFLEN + 1]; /* TypeAHead */
++ int ta_len = 0; /* valid bytes in ta_buf[] */
++
++ DWORD i;
++ int c;
++ int noread_cnt = 0;
++ garray_T ga;
++ int delay = 1;
++ # ifdef FEAT_MBYTE
++ DWORD buffer_off = 0; /* valid bytes in buffer[] */
++ # endif
++
++ SECURITY_ATTRIBUTES saAttr;
++
++ /* Set the bInheritHandle flag so pipe handles are inherited. */
++ saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
++ saAttr.bInheritHandle = TRUE;
++ saAttr.lpSecurityDescriptor = NULL;
++
++ if ( ! CreatePipe(&g_hChildStd_OUT_Rd, &g_hChildStd_OUT_Wr, &saAttr, 0)
++ /* Ensure the read handle to the pipe for STDOUT is not inherited. */
++ || ! pSetHandleInformation(g_hChildStd_OUT_Rd, HANDLE_FLAG_INHERIT, 0)
++ /* Create a pipe for the child process's STDIN. */
++ || ! CreatePipe(&g_hChildStd_IN_Rd, &g_hChildStd_IN_Wr, &saAttr, 0)
++ /* Ensure the write handle to the pipe for STDIN is not inherited. */
++ || ! pSetHandleInformation(g_hChildStd_IN_Wr, HANDLE_FLAG_INHERIT, 0) )
++ {
++ CloseHandle(g_hChildStd_IN_Rd);
++ CloseHandle(g_hChildStd_IN_Wr);
++ CloseHandle(g_hChildStd_OUT_Rd);
++ CloseHandle(g_hChildStd_OUT_Wr);
++ MSG_PUTS(_("\nCannot create pipes\n"));
++ }
++
++ si.cb = sizeof(si);
++ si.lpReserved = NULL;
++ si.lpDesktop = NULL;
++ si.lpTitle = NULL;
++ si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
++
++ /* set-up our file redirection */
++ si.hStdError = g_hChildStd_OUT_Wr;
++ si.hStdOutput = g_hChildStd_OUT_Wr;
++ si.hStdInput = g_hChildStd_IN_Rd;
++ si.wShowWindow = SW_HIDE;
++ si.cbReserved2 = 0;
++ si.lpReserved2 = NULL;
++
++ if (options & SHELL_READ)
++ ga_init2(&ga, 1, BUFLEN);
++
++ /* Now, run the command */
++ CreateProcess(NULL, /* Executable name */
++ cmd, /* Command to execute */
++ NULL, /* Process security attributes */
++ NULL, /* Thread security attributes */
++
++ // this command can be litigeous, handle inheritence was
++ // deactivated for pending temp file, but, if we deactivate
++ // it, the pipes don't work for some reason.
++ TRUE, /* Inherit handles, first deactivated,
++ * but needed */
++ CREATE_DEFAULT_ERROR_MODE, /* Creation flags */
++ NULL, /* Environment */
++ NULL, /* Current directory */
++ &si, /* Startup information */
++ &pi); /* Process information */
++
++
++ /* Close our unused side of the pipes */
++ CloseHandle(g_hChildStd_IN_Rd);
++ CloseHandle(g_hChildStd_OUT_Wr);
++
++ if (options & SHELL_WRITE)
++ {
++ HANDLE thread =
++ CreateThread(NULL, /* security attributes */
++ 0, /* default stack size */
++ sub_process_writer, /* function to be executed */
++ g_hChildStd_IN_Wr, /* parameter */
++ 0, /* creation flag, start immediately */
++ NULL); /* we don't care about thread id */
++ CloseHandle(thread);
++ g_hChildStd_IN_Wr = NULL;
++ }
++
++ /* Keep updating the window while waiting for the shell to finish. */
++ for (;;)
++ {
++ MSG msg;
++
++ if (PeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE))
++ {
++ TranslateMessage(&msg);
++ DispatchMessage(&msg);
++ }
++
++ /* write pipe information in the window */
++ if ((options & (SHELL_READ|SHELL_WRITE))
++ # ifdef FEAT_GUI
++ || gui.in_use
++ # endif
++ )
++ {
++ len = 0;
++ if (!(options & SHELL_EXPAND)
++ && ((options &
++ (SHELL_READ|SHELL_WRITE|SHELL_COOKED))
++ != (SHELL_READ|SHELL_WRITE|SHELL_COOKED)
++ # ifdef FEAT_GUI
++ || gui.in_use
++ # endif
++ )
++ && (ta_len > 0 || noread_cnt > 4))
++ {
++ if (ta_len == 0)
++ {
++ /* Get extra characters when we don't have any. Reset the
++ * counter and timer. */
++ noread_cnt = 0;
++ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
++ gettimeofday(&start_tv, NULL);
++ # endif
++ len = ui_inchar(ta_buf, BUFLEN, 10L, 0);
++ }
++ if (ta_len > 0 || len > 0)
++ {
++ /*
++ * For pipes: Check for CTRL-C: send interrupt signal to
++ * child. Check for CTRL-D: EOF, close pipe to child.
++ */
++ if (len == 1 && cmd != NULL)
++ {
++ if (ta_buf[ta_len] == Ctrl_C)
++ {
++ /* Learn what exit code is expected, for
++ * now put 9 as SIGKILL */
++ TerminateProcess(pi.hProcess, 9);
++ }
++ if (ta_buf[ta_len] == Ctrl_D)
++ {
++ CloseHandle(g_hChildStd_IN_Wr);
++ g_hChildStd_IN_Wr = NULL;
++ }
++ }
++
++ /* replace K_BS by <BS> and K_DEL by <DEL> */
++ for (i = ta_len; i < ta_len + len; ++i)
++ {
++ if (ta_buf[i] == CSI && len - i > 2)
++ {
++ c = TERMCAP2KEY(ta_buf[i + 1], ta_buf[i + 2]);
++ if (c == K_DEL || c == K_KDEL || c == K_BS)
++ {
++ mch_memmove(ta_buf + i + 1, ta_buf + i + 3,
++ (size_t)(len - i - 2));
++ if (c == K_DEL || c == K_KDEL)
++ ta_buf[i] = DEL;
++ else
++ ta_buf[i] = Ctrl_H;
++ len -= 2;
++ }
++ }
++ else if (ta_buf[i] == '\r')
++ ta_buf[i] = '\n';
++ # ifdef FEAT_MBYTE
++ if (has_mbyte)
++ i += (*mb_ptr2len_len)(ta_buf + i,
++ ta_len + len - i) - 1;
++ # endif
++ }
++
++ /*
++ * For pipes: echo the typed characters. For a pty this
++ * does not seem to work.
++ */
++ for (i = ta_len; i < ta_len + len; ++i)
++ {
++ if (ta_buf[i] == '\n' || ta_buf[i] == '\b')
++ msg_putchar(ta_buf[i]);
++ # ifdef FEAT_MBYTE
++ else if (has_mbyte)
++ {
++ int l = (*mb_ptr2len)(ta_buf + i);
++
++ msg_outtrans_len(ta_buf + i, l);
++ i += l - 1;
++ }
++ # endif
++ else
++ msg_outtrans_len(ta_buf + i, 1);
++ }
++ windgoto(msg_row, msg_col);
++ out_flush();
++
++ ta_len += len;
++
++ /*
++ * Write the characters to the child, unless EOF has been
++ * typed for pipes. Write one character at a time, to
++ * avoid losing too much typeahead. When writing buffer
++ * lines, drop the typed characters (only check for
++ * CTRL-C).
++ */
++ if (options & SHELL_WRITE)
++ ta_len = 0;
++ else if (g_hChildStd_IN_Wr != NULL)
++ {
++ WriteFile(g_hChildStd_IN_Wr, (char*)ta_buf,
++ 1, &len, NULL);
++ // if we are typing in, we want to keep things reactive
++ delay = 1;
++ if (len > 0)
++ {
++ ta_len -= len;
++ mch_memmove(ta_buf, ta_buf + len, ta_len);
++ }
++ }
++ }
++ }
++ }
++
++ if (ta_len)
++ ui_inchar_undo(ta_buf, ta_len);
++
++ if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT)
++ {
++ dump_pipe(options, g_hChildStd_OUT_Rd,
++ &ga, buffer, &buffer_off);
++ break;
++ }
++
++ ++noread_cnt;
++ dump_pipe(options, g_hChildStd_OUT_Rd,
++ &ga, buffer, &buffer_off);
++
++ /* We start waiting for a very short time and then increase it, so
++ * that we respond quickly when the process is quick, and don't
++ * consume too much overhead when it's slow. */
++ if (delay < 50)
++ delay += 10;
++ }
++
++ /* Close the pipe */
++ CloseHandle(g_hChildStd_OUT_Rd);
++ if (g_hChildStd_IN_Wr != NULL)
++ CloseHandle(g_hChildStd_IN_Wr);
++
++ WaitForSingleObject(pi.hProcess, INFINITE);
++
++ /* Get the command exit code */
++ GetExitCodeProcess(pi.hProcess, &ret);
++
++ if (options & SHELL_READ)
++ {
++ if (ga.ga_len > 0)
++ {
++ append_ga_line(&ga);
++ /* remember that the NL was missing */
++ curbuf->b_no_eol_lnum = curwin->w_cursor.lnum;
++ }
++ else
++ curbuf->b_no_eol_lnum = 0;
++ ga_clear(&ga);
++ }
++
++ /* Close the handles to the subprocess, so that it goes away */
++ CloseHandle(pi.hThread);
++ CloseHandle(pi.hProcess);
++
++ return ret;
++ }
++
++ static int
++ mch_system(char *cmd, int options)
++ {
++ /* if we can pipe and the shelltemp option is off */
++ if (allowPiping && !p_stmp)
++ return mch_system_piped(cmd, options);
++ else
++ return mch_system_classic(cmd, options);
++ }
+ #else
+
+ # define mch_system(c, o) system(c)
+***************
+*** 3388,3394 ****
+ char_u *newcmd;
+ long_u cmdlen = (
+ #ifdef FEAT_GUI_W32
+! STRLEN(vimrun_path) +
+ #endif
+ STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10);
+
+--- 3897,3903 ----
+ char_u *newcmd;
+ long_u cmdlen = (
+ #ifdef FEAT_GUI_W32
+! (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) +
+ #endif
+ STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10);
+
+***************
+*** 3497,3503 ****
+ MB_ICONWARNING);
+ need_vimrun_warning = FALSE;
+ }
+! if (!s_dont_use_vimrun)
+ /* Use vimrun to execute the command. It opens a console
+ * window, which can be closed without killing Vim. */
+ vim_snprintf((char *)newcmd, cmdlen, "%s%s%s %s %s",
+--- 4006,4012 ----
+ MB_ICONWARNING);
+ need_vimrun_warning = FALSE;
+ }
+! if (!s_dont_use_vimrun && (!allowPiping || p_stmp))
+ /* Use vimrun to execute the command. It opens a console
+ * window, which can be closed without killing Vim. */
+ vim_snprintf((char *)newcmd, cmdlen, "%s%s%s %s %s",
+***************
+*** 3521,3527 ****
+ /* Print the return value, unless "vimrun" was used. */
+ if (x != 0 && !(options & SHELL_SILENT) && !emsg_silent
+ #if defined(FEAT_GUI_W32)
+! && ((options & SHELL_DOOUT) || s_dont_use_vimrun)
+ #endif
+ )
+ {
+--- 4030,4037 ----
+ /* Print the return value, unless "vimrun" was used. */
+ if (x != 0 && !(options & SHELL_SILENT) && !emsg_silent
+ #if defined(FEAT_GUI_W32)
+! && ((options & SHELL_DOOUT) || s_dont_use_vimrun
+! || (allowPiping && !p_stmp))
+ #endif
+ )
+ {
+*** ../vim-7.3.239/src/proto/misc2.pro 2011-07-07 15:08:53.000000000 +0200
+--- src/proto/misc2.pro 2011-07-07 15:56:16.000000000 +0200
+***************
+*** 58,63 ****
+--- 58,64 ----
+ char_u *ga_concat_strings __ARGS((garray_T *gap));
+ void ga_concat __ARGS((garray_T *gap, char_u *s));
+ void ga_append __ARGS((garray_T *gap, int c));
++ void append_ga_line __ARGS((garray_T *gap));
+ int name_to_mod_mask __ARGS((int c));
+ int simplify_key __ARGS((int key, int *modifiers));
+ int handle_x_keys __ARGS((int key));
+*** ../vim-7.3.239/src/ui.c 2011-06-19 01:14:23.000000000 +0200
+--- src/ui.c 2011-07-07 15:44:56.000000000 +0200
+***************
+*** 58,64 ****
+ #endif
+ }
+
+! #if defined(UNIX) || defined(VMS) || defined(PROTO)
+ /*
+ * When executing an external program, there may be some typed characters that
+ * are not consumed by it. Give them back to ui_inchar() and they are stored
+--- 58,64 ----
+ #endif
+ }
+
+! #if defined(UNIX) || defined(VMS) || defined(PROTO) || defined(WIN3264)
+ /*
+ * When executing an external program, there may be some typed characters that
+ * are not consumed by it. Give them back to ui_inchar() and they are stored
+*** ../vim-7.3.239/src/version.c 2011-07-07 15:08:53.000000000 +0200
+--- src/version.c 2011-07-07 16:14:20.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 240,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+257. Your "hundred-and-one" lists include well over 101 items, since you
+ automatically interpret all numbers in hexadecimal notation.
+ (hex 101 = decimal 257)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.241 b/source/ap/vim/patches/7.3.241
new file mode 100644
index 000000000..3b73c4de1
--- /dev/null
+++ b/source/ap/vim/patches/7.3.241
@@ -0,0 +1,71 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.241
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.241
+Problem: Using CTRL-R CTRL-W on the command line may insert only part of
+ the word.
+Solution: Use the cursor position instead of assuming it is at the end of
+ the command. (Tyru)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.3.240/src/ex_getln.c 2011-07-07 15:04:38.000000000 +0200
+--- src/ex_getln.c 2011-07-07 16:38:50.000000000 +0200
+***************
+*** 3046,3052 ****
+ int len;
+
+ /* Locate start of last word in the cmd buffer. */
+! for (w = ccline.cmdbuff + ccline.cmdlen; w > ccline.cmdbuff; )
+ {
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+--- 3046,3052 ----
+ int len;
+
+ /* Locate start of last word in the cmd buffer. */
+! for (w = ccline.cmdbuff + ccline.cmdpos; w > ccline.cmdbuff; )
+ {
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+***************
+*** 3064,3070 ****
+ --w;
+ }
+ }
+! len = (int)((ccline.cmdbuff + ccline.cmdlen) - w);
+ if (p_ic ? STRNICMP(w, arg, len) == 0 : STRNCMP(w, arg, len) == 0)
+ p += len;
+ }
+--- 3064,3070 ----
+ --w;
+ }
+ }
+! len = (int)((ccline.cmdbuff + ccline.cmdpos) - w);
+ if (p_ic ? STRNICMP(w, arg, len) == 0 : STRNCMP(w, arg, len) == 0)
+ p += len;
+ }
+*** ../vim-7.3.240/src/version.c 2011-07-07 16:20:45.000000000 +0200
+--- src/version.c 2011-07-07 16:41:29.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 241,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+258. When you want to see your girlfriend, you surf to her homepage.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.242 b/source/ap/vim/patches/7.3.242
new file mode 100644
index 000000000..0cf4db920
--- /dev/null
+++ b/source/ap/vim/patches/7.3.242
@@ -0,0 +1,71 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.242
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.242
+Problem: Illegal memory access in after_pathsep().
+Solution: Check that the pointer is not at the start of the file name.
+ (Dominique Pelle)
+Files: src/misc2.c
+
+
+*** ../vim-7.3.241/src/misc2.c 2011-07-07 16:20:45.000000000 +0200
+--- src/misc2.c 2011-07-07 17:05:41.000000000 +0200
+***************
+*** 3247,3253 ****
+ #if defined(FEAT_MBYTE) || defined(PROTO)
+ /*
+ * Return TRUE if "p" points to just after a path separator.
+! * Take care of multi-byte characters.
+ * "b" must point to the start of the file name
+ */
+ int
+--- 3247,3253 ----
+ #if defined(FEAT_MBYTE) || defined(PROTO)
+ /*
+ * Return TRUE if "p" points to just after a path separator.
+! * Takes care of multi-byte characters.
+ * "b" must point to the start of the file name
+ */
+ int
+***************
+*** 3255,3261 ****
+ char_u *b;
+ char_u *p;
+ {
+! return vim_ispathsep(p[-1])
+ && (!has_mbyte || (*mb_head_off)(b, p - 1) == 0);
+ }
+ #endif
+--- 3255,3261 ----
+ char_u *b;
+ char_u *p;
+ {
+! return p > b && vim_ispathsep(p[-1])
+ && (!has_mbyte || (*mb_head_off)(b, p - 1) == 0);
+ }
+ #endif
+*** ../vim-7.3.241/src/version.c 2011-07-07 16:44:33.000000000 +0200
+--- src/version.c 2011-07-07 17:05:49.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 242,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+260. Co-workers have to E-mail you about the fire alarm to get
+ you out of the building.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.243 b/source/ap/vim/patches/7.3.243
new file mode 100644
index 000000000..f1f913d48
--- /dev/null
+++ b/source/ap/vim/patches/7.3.243
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.243
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.243
+Problem: Illegal memory access in readline().
+Solution: Swap the conditions. (Dominique Pelle)
+Files: src/eval.c
+
+
+*** ../vim-7.3.242/src/eval.c 2011-07-07 16:20:45.000000000 +0200
+--- src/eval.c 2011-07-07 17:32:16.000000000 +0200
+***************
+*** 14318,14324 ****
+ tolist = 0;
+ for ( ; filtd < buflen || readlen <= 0; ++filtd)
+ {
+! if (buf[filtd] == '\n' || readlen <= 0)
+ {
+ /* In binary mode add an empty list item when the last
+ * non-empty line ends in a '\n'. */
+--- 14318,14324 ----
+ tolist = 0;
+ for ( ; filtd < buflen || readlen <= 0; ++filtd)
+ {
+! if (readlen <= 0 || buf[filtd] == '\n')
+ {
+ /* In binary mode add an empty list item when the last
+ * non-empty line ends in a '\n'. */
+*** ../vim-7.3.242/src/version.c 2011-07-07 17:15:29.000000000 +0200
+--- src/version.c 2011-07-07 17:32:30.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 243,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+261. You find diskettes in your pockets when doing laundry.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.244 b/source/ap/vim/patches/7.3.244
new file mode 100644
index 000000000..4cff94f2f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.244
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.244
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.244
+Problem: MS-Windows: Build problem with old compiler. (John Beckett)
+Solution: Only use HandleToLong() when available. (Mike Williams)
+Files: src/gui_w32.c
+
+
+*** ../vim-7.3.243/src/gui_w32.c 2011-05-25 21:18:02.000000000 +0200
+--- src/gui_w32.c 2011-07-07 17:42:36.000000000 +0200
+***************
+*** 1574,1579 ****
+--- 1574,1583 ----
+ #endif
+
+ #ifdef FEAT_EVAL
++ # if _MSC_VER < 1400
++ /* HandleToLong() only exists in compilers that can do 64 bit builds */
++ # define HandleToLong(h) ((long)(h))
++ # endif
+ /* set the v:windowid variable */
+ set_vim_var_nr(VV_WINDOWID, HandleToLong(s_hwnd));
+ #endif
+*** ../vim-7.3.243/src/version.c 2011-07-07 17:36:52.000000000 +0200
+--- src/version.c 2011-07-07 17:43:21.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 244,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+262. Your computer has it's own phone line - but your daughter doesn't.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.245 b/source/ap/vim/patches/7.3.245
new file mode 100644
index 000000000..b05fe433a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.245
@@ -0,0 +1,81 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.245
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.245
+Problem: Python 3.2 libraries not correctly detected.
+Solution: Add the suffix to the library name. (Niclas Zeising)
+Files: src/auto/configure, src/configure.in
+
+
+*** ../vim-7.3.244/src/auto/configure 2011-06-13 01:32:42.000000000 +0200
+--- src/auto/configure 2011-07-13 17:57:05.000000000 +0200
+***************
+*** 5611,5617 ****
+ eof
+ eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+ rm -f -- "${tmp_mkf}"
+! vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}"
+ vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
+ vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
+ vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
+--- 5611,5617 ----
+ eof
+ eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+ rm -f -- "${tmp_mkf}"
+! vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
+ vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
+ vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
+ vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
+*** ../vim-7.3.244/src/configure.in 2011-06-13 01:32:42.000000000 +0200
+--- src/configure.in 2011-07-13 17:57:01.000000000 +0200
+***************
+*** 1068,1074 ****
+ dnl -- delete the lines from make about Entering/Leaving directory
+ eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+ rm -f -- "${tmp_mkf}"
+! vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}"
+ vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
+ dnl remove -ltermcap, it can conflict with an earlier -lncurses
+ vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
+--- 1068,1074 ----
+ dnl -- delete the lines from make about Entering/Leaving directory
+ eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+ rm -f -- "${tmp_mkf}"
+! vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
+ vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
+ dnl remove -ltermcap, it can conflict with an earlier -lncurses
+ vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
+*** ../vim-7.3.244/src/version.c 2011-07-07 17:43:37.000000000 +0200
+--- src/version.c 2011-07-15 13:09:17.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 245,
+ /**/
+
+
+--
+ When danger reared its ugly head,
+ He bravely turned his tail and fled
+ Yes, Brave Sir Robin turned about
+ And gallantly he chickened out
+ Bravely taking to his feet
+ He beat a very brave retreat
+ Bravest of the brave Sir Robin
+ Petrified of being dead
+ Soiled his pants then brave Sir Robin
+ Turned away and fled.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.246 b/source/ap/vim/patches/7.3.246
new file mode 100644
index 000000000..d9982ea04
--- /dev/null
+++ b/source/ap/vim/patches/7.3.246
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.246
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.246 (after 7.3.235)
+Problem: Repeating "f4" in "4444" skips one 4.
+Solution: Check the t_cmd flag. (Christian Brabandt)
+Files: src/search.c
+
+
+*** ../vim-7.3.245/src/search.c 2011-06-26 05:36:07.000000000 +0200
+--- src/search.c 2011-07-15 13:16:49.000000000 +0200
+***************
+*** 1585,1591 ****
+ /* Force a move of at least one char, so ";" and "," will move the
+ * cursor, even if the cursor is right in front of char we are looking
+ * at. */
+! if (vim_strchr(p_cpo, CPO_SCOLON) == NULL && count == 1)
+ stop = FALSE;
+ }
+
+--- 1585,1591 ----
+ /* Force a move of at least one char, so ";" and "," will move the
+ * cursor, even if the cursor is right in front of char we are looking
+ * at. */
+! if (vim_strchr(p_cpo, CPO_SCOLON) == NULL && count == 1 && t_cmd)
+ stop = FALSE;
+ }
+
+*** ../vim-7.3.245/src/version.c 2011-07-15 13:09:46.000000000 +0200
+--- src/version.c 2011-07-15 13:20:40.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 246,
+ /**/
+
+--
+ GALAHAD turns back. We see from his POV the lovely ZOOT standing by him
+ smiling enchantingly and a number of equally delectable GIRLIES draped
+ around in the seductively poulticed room. They look at him smilingly and
+ wave.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.247 b/source/ap/vim/patches/7.3.247
new file mode 100644
index 000000000..a0cb566c7
--- /dev/null
+++ b/source/ap/vim/patches/7.3.247
@@ -0,0 +1,95 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.247
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.247
+Problem: Running tests changes the users viminfo file. Test for patch
+ 7.3.246 missing.
+Solution: Add "nviminfo" to the 'viminfo' option. Include the test.
+Files: src/testdir/test78.in, src/testdir/test81.in
+
+
+*** ../vim-7.3.246/src/testdir/test78.in 2011-06-13 01:07:22.000000000 +0200
+--- src/testdir/test78.in 2011-07-15 13:26:22.000000000 +0200
+***************
+*** 6,12 ****
+
+ STARTTEST
+ :so small.vim
+! :set nocp fileformat=unix undolevels=-1
+ :e! Xtest
+ ggdG
+ :let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoparstuvwxyz0123456789"
+--- 6,12 ----
+
+ STARTTEST
+ :so small.vim
+! :set nocp fileformat=unix undolevels=-1 viminfo+=nviminfo
+ :e! Xtest
+ ggdG
+ :let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoparstuvwxyz0123456789"
+*** ../vim-7.3.246/src/testdir/test81.in 2011-06-26 05:36:07.000000000 +0200
+--- src/testdir/test81.in 2011-07-15 13:25:00.000000000 +0200
+***************
+*** 1,10 ****
+ Test for t movement command and 'cpo-;' setting
+
+ STARTTEST
+! :set nocompatible
+ :set cpo-=;
+ /firstline/
+ j0tt;D
+ $Ty;D:set cpo+=;
+ j0tt;;D
+ $Ty;;D:?firstline?+1,$w! test.out
+--- 1,12 ----
+ Test for t movement command and 'cpo-;' setting
+
+ STARTTEST
+! :set nocompatible viminfo+=nviminfo
+ :set cpo-=;
+ /firstline/
+ j0tt;D
++ 0fz;D
++ $Fy;D
+ $Ty;D:set cpo+=;
+ j0tt;;D
+ $Ty;;D:?firstline?+1,$w! test.out
+***************
+*** 13,18 ****
+--- 15,22 ----
+
+ firstline
+ aaa two three four
++ zzz
++ yyy
+ bbb yee yoo four
+ ccc two three four
+ ddd yee yoo four
+*** ../vim-7.3.246/src/version.c 2011-07-15 13:21:24.000000000 +0200
+--- src/version.c 2011-07-15 13:31:14.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 247,
+ /**/
+
+--
+ZOOT: I'm afraid our life must seem very dull and quiet compared to yours.
+ We are but eightscore young blondes, all between sixteen and
+ nineteen-and-a-half, cut off in this castle, with no one to protect us.
+ Oooh. It is a lonely life ... bathing ... dressing ... undressing ...
+ making exciting underwear....
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.248 b/source/ap/vim/patches/7.3.248
new file mode 100644
index 000000000..6fbf3f6cd
--- /dev/null
+++ b/source/ap/vim/patches/7.3.248
@@ -0,0 +1,129 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.248
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.248
+Problem: PC Install instructions missing install instructions.
+Solution: Step-by-step explanation. (Michael Soyka)
+Files: src/INSTALLpc.txt
+
+
+*** ../vim-7.3.247/src/INSTALLpc.txt 2011-06-12 20:36:00.000000000 +0200
+--- src/INSTALLpc.txt 2011-07-15 13:49:46.000000000 +0200
+***************
+*** 11,19 ****
+ this, then you will get the default behavior as is documented, which should
+ be fine for most people.
+
+! With the exception of the last two sections (Windows 3.1 and MS-DOS),
+! this document assumes that you are building Vim for Win32
+! (Windows NT/2000/XP/2003/Vista and Windows 95/98/Me)
+
+
+ Contents:
+--- 11,19 ----
+ this, then you will get the default behavior as is documented, which should
+ be fine for most people.
+
+! With the exception of two sections (Windows 3.1 and MS-DOS), this document
+! assumes that you are building Vim for Win32 or later.
+! (Windows 95/98/Me/NT/2000/XP/2003/Vista/7)
+
+
+ Contents:
+***************
+*** 27,32 ****
+--- 27,35 ----
+ 8. Windows 3.1
+ 9. MS-DOS
+
++ 10. Installing after building from sources
++
++
+ The currently preferred method is using the free Visual C++ Toolkit 2008
+ |msvc-2008-express|, the produced binary runs on most MS-Windows systems. If
+ you need the executable to run on Windows 98 or ME, use the 2003 one
+***************
+*** 409,411 ****
+--- 412,470 ----
+
+ If you get all kinds of strange error messages when compiling, try adding
+ changing the file format from "unix" to "dos".
++
++
++ 10. Installing after building from sources
++ ==========================================
++
++ [provided by Michael Soyka]
++
++ After you've built the Vim binaries as described above, you're ready to
++ install Vim on your system. However, if you've obtained the Vim sources
++ using Mercurial or by downloading them as a unix tar file, you must first
++ create a "vim73" directory. If you instead downloaded the sources as
++ zip files, you can skip this setup as the zip archives already have the
++ correct directory structure.
++
++ A. Create a Vim "runtime" subdirectory named "vim73"
++ -----------------------------------------------------
++ If you obtained your Vim sources as zip files, you can skip this step.
++ Otherwise, continue reading.
++
++ Go to the directory that contains the Vim "src" and "runtime"
++ directories and create a new subdirectory named "vim73".
++
++ Copy the "runtime" files into "vim73":
++ copy runtime\* vim73
++
++ B. Copy the new binaries into the "vim73" directory
++ ----------------------------------------------------
++ Regardless of how you installed the Vim sources, you need to copy the
++ new binaries you created above into "vim73":
++
++ copy src\*.exe vim73
++ copy src\GvimExt\gvimext.dll vim73
++ copy src\xxd\xxd.exe vim73
++
++ C. Move the "vim73" directory into the Vim installation subdirectory
++ ---------------------------------------------------------------------
++ Move the "vim73" subdirectory into the subdirectory where you want Vim
++ to be installed. Typically, this subdirectory will be named "vim".
++ If you already have a "vim73" subdirectory in "vim", delete it first
++ by running its unstal.exe program.
++
++ D. Install Vim
++ ---------------
++ "cd" to your Vim installation subdirectory "vim\vim73" and run the
++ "install.exe" program. It will ask you a number of questions about
++ how you would like to have your Vim setup. Among these are:
++ - You can tell it to write a "_vimrc" file with your preferences in the
++ parent directory.
++ - It can also install an "Edit with Vim" entry in the Windows Explorer
++ popup menu.
++ - You can have it create batch files, so that you can run Vim from the
++ console or in a shell. You can select one of the directories in your
++ PATH or add the directory to PATH using the Windows Control Panel.
++ - Create entries for Vim on the desktop and in the Start menu.
++
++ Happy Vimming!
+*** ../vim-7.3.247/src/version.c 2011-07-15 13:33:17.000000000 +0200
+--- src/version.c 2011-07-15 13:51:03.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 248,
+ /**/
+
+--
+Linux is just like a wigwam: no Windows, no Gates and an Apache inside.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.249 b/source/ap/vim/patches/7.3.249
new file mode 100644
index 000000000..661f97977
--- /dev/null
+++ b/source/ap/vim/patches/7.3.249
@@ -0,0 +1,134 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.249
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.249
+Problem: Wrong indenting for array initializer.
+Solution: Detect '}' in a better way. (Lech Lorens)
+Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.248/src/misc1.c 2011-06-12 21:51:01.000000000 +0200
+--- src/misc1.c 2011-07-15 14:06:44.000000000 +0200
+***************
+*** 7945,7952 ****
+ * If we're at the end of a block, skip to the start of
+ * that block.
+ */
+! curwin->w_cursor.col = 0;
+! if (*cin_skipcomment(l) == '}'
+ && (trypos = find_start_brace(ind_maxcomment))
+ != NULL) /* XXX */
+ {
+--- 7945,7951 ----
+ * If we're at the end of a block, skip to the start of
+ * that block.
+ */
+! if (find_last_paren(l, '{', '}')
+ && (trypos = find_start_brace(ind_maxcomment))
+ != NULL) /* XXX */
+ {
+*** ../vim-7.3.248/src/testdir/test3.in 2011-06-12 21:51:01.000000000 +0200
+--- src/testdir/test3.in 2011-07-15 14:03:41.000000000 +0200
+***************
+*** 1452,1457 ****
+--- 1452,1487 ----
+
+ STARTTEST
+ :set cino&
++ :set cino+=l1
++ 2kdd=][
++ ENDTEST
++
++ void func(void)
++ {
++ int tab[] =
++ {
++ 1, 2, 3,
++ 4, 5, 6};
++
++ printf("Indent this line correctly!\n");
++
++ switch (foo)
++ {
++ case bar:
++ printf("bar");
++ break;
++ case baz: {
++ printf("baz");
++ break;
++ }
++ case quux:
++ printf("But don't break the indentation of this instruction\n");
++ break;
++ }
++ }
++
++ STARTTEST
++ :set cino&
+ 2kdd=][
+ ENDTEST
+
+*** ../vim-7.3.248/src/testdir/test3.ok 2011-06-12 21:51:01.000000000 +0200
+--- src/testdir/test3.ok 2011-07-15 14:03:41.000000000 +0200
+***************
+*** 1310,1315 ****
+--- 1310,1340 ----
+
+ void func(void)
+ {
++ int tab[] =
++ {
++ 1, 2, 3,
++ 4, 5, 6};
++
++ printf("Indent this line correctly!\n");
++
++ switch (foo)
++ {
++ case bar:
++ printf("bar");
++ break;
++ case baz: {
++ printf("baz");
++ break;
++ }
++ case quux:
++ printf("But don't break the indentation of this instruction\n");
++ break;
++ }
++ }
++
++
++ void func(void)
++ {
+ cout << "a"
+ << "b"
+ << ") :"
+*** ../vim-7.3.248/src/version.c 2011-07-15 13:51:57.000000000 +0200
+--- src/version.c 2011-07-15 14:12:05.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 249,
+ /**/
+
+--
+ GALAHAD hurries to the door and pushes through it. As he leaves the room
+ we CUT TO the reverse to show that he is now in a room full of bathing
+ and romping GIRLIES, all innocent, wide-eyed and beautiful. They smile
+ enchantingly at him as he tries to keep walking without being diverted by
+ the lovely sights assaulting his eyeballs.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.250 b/source/ap/vim/patches/7.3.250
new file mode 100644
index 000000000..fc33328bd
--- /dev/null
+++ b/source/ap/vim/patches/7.3.250
@@ -0,0 +1,104 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.250
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.250
+Problem: Python: Errors in Unicode characters not handled nicely.
+Solution: Add the surrogateescape error handler. (lilydjwg)
+Files: src/if_python3.c
+
+
+*** ../vim-7.3.249/src/if_python3.c 2011-06-26 19:13:33.000000000 +0200
+--- src/if_python3.c 2011-07-15 15:50:01.000000000 +0200
+***************
+*** 68,76 ****
+
+ static void init_structs(void);
+
+ #define PyInt Py_ssize_t
+ #define PyString_Check(obj) PyUnicode_Check(obj)
+! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, NULL);
+ #define PyString_FreeBytes(obj) Py_XDECREF(bytes)
+ #define PyString_AsString(obj) PyBytes_AsString(obj)
+ #define PyString_Size(obj) PyBytes_GET_SIZE(bytes)
+--- 68,83 ----
+
+ static void init_structs(void);
+
++ /* The "surrogateescape" error handler is new in Python 3.1 */
++ #if PY_VERSION_HEX >= 0x030100f0
++ # define CODEC_ERROR_HANDLER "surrogateescape"
++ #else
++ # define CODEC_ERROR_HANDLER NULL
++ #endif
++
+ #define PyInt Py_ssize_t
+ #define PyString_Check(obj) PyUnicode_Check(obj)
+! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, CODEC_ERROR_HANDLER);
+ #define PyString_FreeBytes(obj) Py_XDECREF(bytes)
+ #define PyString_AsString(obj) PyBytes_AsString(obj)
+ #define PyString_Size(obj) PyBytes_GET_SIZE(bytes)
+***************
+*** 661,668 ****
+
+ /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause
+ * SyntaxError (unicode error). */
+! cmdstr = PyUnicode_Decode(cmd, strlen(cmd), (char *)ENC_OPT, NULL);
+! cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", NULL);
+ Py_XDECREF(cmdstr);
+ PyRun_SimpleString(PyBytes_AsString(cmdbytes));
+ Py_XDECREF(cmdbytes);
+--- 668,676 ----
+
+ /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause
+ * SyntaxError (unicode error). */
+! cmdstr = PyUnicode_Decode(cmd, strlen(cmd),
+! (char *)ENC_OPT, CODEC_ERROR_HANDLER);
+! cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", CODEC_ERROR_HANDLER);
+ Py_XDECREF(cmdstr);
+ PyRun_SimpleString(PyBytes_AsString(cmdbytes));
+ Py_XDECREF(cmdbytes);
+***************
+*** 1463,1469 ****
+ }
+ *p = '\0';
+
+! result = PyUnicode_Decode(tmp, len, (char *)ENC_OPT, NULL);
+
+ vim_free(tmp);
+ return result;
+--- 1471,1477 ----
+ }
+ *p = '\0';
+
+! result = PyUnicode_Decode(tmp, len, (char *)ENC_OPT, CODEC_ERROR_HANDLER);
+
+ vim_free(tmp);
+ return result;
+*** ../vim-7.3.249/src/version.c 2011-07-15 14:12:25.000000000 +0200
+--- src/version.c 2011-07-15 15:46:19.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 250,
+ /**/
+
+--
+DINGO: You must spank her well and after you have spanked her you
+ may deal with her as you like and then ... spank me.
+AMAZING: And spank me!
+STUNNER: And me.
+LOVELY: And me.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.251 b/source/ap/vim/patches/7.3.251
new file mode 100644
index 000000000..43aa41487
--- /dev/null
+++ b/source/ap/vim/patches/7.3.251
@@ -0,0 +1,184 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.251
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.251
+Problem: "gH<Del>" deletes the current line, except when it's the last
+ line.
+Solution: Set the "include" flag to indicate the last line is to be deleted.
+Files: src/normal.c, src/ops.c
+
+
+*** ../vim-7.3.250/src/normal.c 2011-07-07 15:08:53.000000000 +0200
+--- src/normal.c 2011-07-15 16:53:12.000000000 +0200
+***************
+*** 1795,1811 ****
+ {
+ oap->inclusive = FALSE;
+ /* Try to include the newline, unless it's an operator
+! * that works on lines only */
+! if (*p_sel != 'o'
+! && !op_on_lines(oap->op_type)
+! && oap->end.lnum < curbuf->b_ml.ml_line_count)
+ {
+! ++oap->end.lnum;
+! oap->end.col = 0;
+ # ifdef FEAT_VIRTUALEDIT
+! oap->end.coladd = 0;
+ # endif
+! ++oap->line_count;
+ }
+ }
+ }
+--- 1795,1819 ----
+ {
+ oap->inclusive = FALSE;
+ /* Try to include the newline, unless it's an operator
+! * that works on lines only. */
+! if (*p_sel != 'o' && !op_on_lines(oap->op_type))
+ {
+! if (oap->end.lnum < curbuf->b_ml.ml_line_count)
+! {
+! ++oap->end.lnum;
+! oap->end.col = 0;
+ # ifdef FEAT_VIRTUALEDIT
+! oap->end.coladd = 0;
+ # endif
+! ++oap->line_count;
+! }
+! else
+! {
+! /* Cannot move below the last line, make the op
+! * inclusive to tell the operation to include the
+! * line break. */
+! oap->inclusive = TRUE;
+! }
+ }
+ }
+ }
+*** ../vim-7.3.250/src/ops.c 2011-06-19 01:14:22.000000000 +0200
+--- src/ops.c 2011-07-15 17:28:28.000000000 +0200
+***************
+*** 1650,1656 ****
+ && oap->line_count > 1
+ && oap->op_type == OP_DELETE)
+ {
+! ptr = ml_get(oap->end.lnum) + oap->end.col + oap->inclusive;
+ ptr = skipwhite(ptr);
+ if (*ptr == NUL && inindent(0))
+ oap->motion_type = MLINE;
+--- 1650,1658 ----
+ && oap->line_count > 1
+ && oap->op_type == OP_DELETE)
+ {
+! ptr = ml_get(oap->end.lnum) + oap->end.col;
+! if (*ptr != NUL)
+! ptr += oap->inclusive;
+ ptr = skipwhite(ptr);
+ if (*ptr == NUL && inindent(0))
+ oap->motion_type = MLINE;
+***************
+*** 1920,1930 ****
+ curwin->w_cursor.coladd = 0;
+ }
+ #endif
+! (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE
+ #ifdef FEAT_VISUAL
+ && !oap->is_VIsual
+ #endif
+ );
+ }
+ else /* delete characters between lines */
+ {
+--- 1922,1941 ----
+ curwin->w_cursor.coladd = 0;
+ }
+ #endif
+! if (oap->inclusive && oap->end.lnum == curbuf->b_ml.ml_line_count
+! && n > (int)STRLEN(ml_get(oap->end.lnum)))
+! {
+! /* Special case: gH<Del> deletes the last line. */
+! del_lines(1L, FALSE);
+! }
+! else
+! {
+! (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE
+ #ifdef FEAT_VISUAL
+ && !oap->is_VIsual
+ #endif
+ );
++ }
+ }
+ else /* delete characters between lines */
+ {
+***************
+*** 1941,1957 ****
+ ++curwin->w_cursor.lnum;
+ del_lines((long)(oap->line_count - 2), FALSE);
+
+! /* delete from start of line until op_end */
+! curwin->w_cursor.col = 0;
+! (void)del_bytes((long)(oap->end.col + 1 - !oap->inclusive),
+! !virtual_op, oap->op_type == OP_DELETE
+ #ifdef FEAT_VISUAL
+ && !oap->is_VIsual
+ #endif
+ );
+! curwin->w_cursor = curpos; /* restore curwin->w_cursor */
+!
+! (void)do_join(2, FALSE, FALSE);
+ }
+ }
+
+--- 1952,1980 ----
+ ++curwin->w_cursor.lnum;
+ del_lines((long)(oap->line_count - 2), FALSE);
+
+! n = (oap->end.col + 1 - !oap->inclusive);
+! if (oap->inclusive && oap->end.lnum == curbuf->b_ml.ml_line_count
+! && n > (int)STRLEN(ml_get(oap->end.lnum)))
+! {
+! /* Special case: gH<Del> deletes the last line. */
+! del_lines(1L, FALSE);
+! curwin->w_cursor = curpos; /* restore curwin->w_cursor */
+! if (curwin->w_cursor.lnum > 1)
+! --curwin->w_cursor.lnum;
+! }
+! else
+! {
+! /* delete from start of line until op_end */
+! curwin->w_cursor.col = 0;
+! (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE
+ #ifdef FEAT_VISUAL
+ && !oap->is_VIsual
+ #endif
+ );
+! curwin->w_cursor = curpos; /* restore curwin->w_cursor */
+! }
+! if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
+! (void)do_join(2, FALSE, FALSE);
+ }
+ }
+
+*** ../vim-7.3.250/src/version.c 2011-07-15 15:54:39.000000000 +0200
+--- src/version.c 2011-07-15 17:35:18.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 251,
+ /**/
+
+--
+ ### Hiroshima 45, Chernobyl 86, Windows 95 ###
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.252 b/source/ap/vim/patches/7.3.252
new file mode 100644
index 000000000..e24b73be7
--- /dev/null
+++ b/source/ap/vim/patches/7.3.252
@@ -0,0 +1,43 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.252
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.252 (after 7.3.247)
+Problem: Tests fail. (David Northfield)
+Solution: Add missing update for .ok file.
+Files: src/testdir/test81.ok
+
+
+*** ../vim-7.3.251/src/testdir/test81.ok 2011-06-26 05:36:07.000000000 +0200
+--- src/testdir/test81.ok 2011-07-15 13:14:27.000000000 +0200
+***************
+*** 1,4 ****
+--- 1,6 ----
+ aaa two
++ z
++ y
+ bbb y
+ ccc
+ ddd yee y
+*** ../vim-7.3.251/src/version.c 2011-07-15 17:51:30.000000000 +0200
+--- src/version.c 2011-07-15 17:55:25.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 252,
+ /**/
+
+--
+You cannot propel yourself forward by patting yourself on the back.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.253 b/source/ap/vim/patches/7.3.253
new file mode 100644
index 000000000..70e415b5d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.253
@@ -0,0 +1,539 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.253
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.253
+Problem: "echo 'abc' > ''" returns 0 or 1, depending on 'ignorecase'.
+ Checks in mb_strnicmp() for illegal and truncated bytes are
+ wrong. Should not assume that byte length is equal before case
+ folding.
+Solution: Add utf_safe_read_char_adv() and utf_strnicmp(). Add a test for
+ this. (Ivan Krasilnikov)
+Files: src/mbyte.c src/testdir/test82.in, src/testdir/test82.ok,
+ src/testdir/Makefile, src/testdir/Make_amiga.mak,
+ src/testdir/Make_dos.mak, src/testdir/Make_ming.mak,
+ src/testdir/Make_os2.mak, src/testdir/Make_vms.mms
+
+
+*** ../vim-7.3.252/src/mbyte.c 2011-07-07 15:08:53.000000000 +0200
+--- src/mbyte.c 2011-07-15 20:13:52.000000000 +0200
+***************
+*** 132,137 ****
+--- 132,138 ----
+ static int dbcs_char2cells __ARGS((int c));
+ static int dbcs_ptr2cells_len __ARGS((char_u *p, int size));
+ static int dbcs_ptr2char __ARGS((char_u *p));
++ static int utf_safe_read_char_adv __ARGS((char_u **s, size_t *n));
+
+ /*
+ * Lookup table to quickly get the length in bytes of a UTF-8 character from
+***************
+*** 1701,1706 ****
+--- 1702,1767 ----
+ }
+
+ /*
++ * Convert a UTF-8 byte sequence to a wide character.
++ * String is assumed to be terminated by NUL or after "n" bytes, whichever
++ * comes first.
++ * The function is safe in the sense that it never accesses memory beyond the
++ * first "n" bytes of "s".
++ *
++ * On success, returns decoded codepoint, advances "s" to the beginning of
++ * next character and decreases "n" accordingly.
++ *
++ * If end of string was reached, returns 0 and, if "n" > 0, advances "s" past
++ * NUL byte.
++ *
++ * If byte sequence is illegal or incomplete, returns -1 and does not advance
++ * "s".
++ */
++ static int
++ utf_safe_read_char_adv(s, n)
++ char_u **s;
++ size_t *n;
++ {
++ int c, k;
++
++ if (*n == 0) /* end of buffer */
++ return 0;
++
++ k = utf8len_tab_zero[**s];
++
++ if (k == 1)
++ {
++ /* ASCII character or NUL */
++ (*n)--;
++ return *(*s)++;
++ }
++
++ if ((size_t)k <= *n)
++ {
++ /* We have a multibyte sequence and it isn't truncated by buffer
++ * limits so utf_ptr2char() is safe to use. Or the first byte is
++ * illegal (k=0), and it's also safe to use utf_ptr2char(). */
++ c = utf_ptr2char(*s);
++
++ /* On failure, utf_ptr2char() returns the first byte, so here we
++ * check equality with the first byte. The only non-ASCII character
++ * which equals the first byte of its own UTF-8 representation is
++ * U+00C3 (UTF-8: 0xC3 0x83), so need to check that special case too.
++ * It's safe even if n=1, else we would have k=2 > n. */
++ if (c != (int)(**s) || (c == 0xC3 && (*s)[1] == 0x83))
++ {
++ /* byte sequence was successfully decoded */
++ *s += k;
++ *n -= k;
++ return c;
++ }
++ }
++
++ /* byte sequence is incomplete or illegal */
++ return -1;
++ }
++
++ /*
+ * Get character at **pp and advance *pp to the next character.
+ * Note: composing characters are skipped!
+ */
+***************
+*** 2667,2673 ****
+ {0x10400,0x10427,1,40}
+ };
+
+! static int utf_convert(int a, convertStruct table[], int tableSize);
+
+ /*
+ * Generic conversion function for case operations.
+--- 2728,2735 ----
+ {0x10400,0x10427,1,40}
+ };
+
+! static int utf_convert __ARGS((int a, convertStruct table[], int tableSize));
+! static int utf_strnicmp __ARGS((char_u *s1, char_u *s2, size_t n1, size_t n2));
+
+ /*
+ * Generic conversion function for case operations.
+***************
+*** 3079,3084 ****
+--- 3141,3220 ----
+ return (utf_tolower(a) != a);
+ }
+
++ static int
++ utf_strnicmp(s1, s2, n1, n2)
++ char_u *s1, *s2;
++ size_t n1, n2;
++ {
++ int c1, c2, cdiff;
++ char_u buffer[6];
++
++ for (;;)
++ {
++ c1 = utf_safe_read_char_adv(&s1, &n1);
++ c2 = utf_safe_read_char_adv(&s2, &n2);
++
++ if (c1 <= 0 || c2 <= 0)
++ break;
++
++ if (c1 == c2)
++ continue;
++
++ cdiff = utf_fold(c1) - utf_fold(c2);
++ if (cdiff != 0)
++ return cdiff;
++ }
++
++ /* some string ended or has an incomplete/illegal character sequence */
++
++ if (c1 == 0 || c2 == 0)
++ {
++ /* some string ended. shorter string is smaller */
++ if (c1 == 0 && c2 == 0)
++ return 0;
++ return c1 == 0 ? -1 : 1;
++ }
++
++ /* Continue with bytewise comparison to produce some result that
++ * would make comparison operations involving this function transitive.
++ *
++ * If only one string had an error, comparison should be made with
++ * folded version of the other string. In this case it is enough
++ * to fold just one character to determine the result of comparison. */
++
++ if (c1 != -1 && c2 == -1)
++ {
++ n1 = utf_char2bytes(utf_fold(c1), buffer);
++ s1 = buffer;
++ }
++ else if (c2 != -1 && c1 == -1)
++ {
++ n2 = utf_char2bytes(utf_fold(c2), buffer);
++ s2 = buffer;
++ }
++
++ while (n1 > 0 && n2 > 0 && *s1 != NUL && *s2 != NUL)
++ {
++ cdiff = (int)(*s1) - (int)(*s2);
++ if (cdiff != 0)
++ return cdiff;
++
++ s1++;
++ s2++;
++ n1--;
++ n2--;
++ }
++
++ if (n1 > 0 && *s1 == NUL)
++ n1 = 0;
++ if (n2 > 0 && *s2 == NUL)
++ n2 = 0;
++
++ if (n1 == 0 && n2 == 0)
++ return 0;
++ return n1 == 0 ? -1 : 1;
++ }
++
+ /*
+ * Version of strnicmp() that handles multi-byte characters.
+ * Needed for Big5, Sjift-JIS and UTF-8 encoding. Other DBCS encodings can
+***************
+*** 3092,3140 ****
+ char_u *s1, *s2;
+ size_t nn;
+ {
+! int i, j, l;
+ int cdiff;
+- int incomplete = FALSE;
+ int n = (int)nn;
+
+! for (i = 0; i < n; i += l)
+ {
+! if (s1[i] == NUL && s2[i] == NUL) /* both strings end */
+! return 0;
+! if (enc_utf8)
+! {
+! l = utf_byte2len(s1[i]);
+! if (l > n - i)
+! {
+! l = n - i; /* incomplete character */
+! incomplete = TRUE;
+! }
+! /* Check directly first, it's faster. */
+! for (j = 0; j < l; ++j)
+! {
+! if (s1[i + j] != s2[i + j])
+! break;
+! if (s1[i + j] == 0)
+! /* Both stings have the same bytes but are incomplete or
+! * have illegal bytes, accept them as equal. */
+! l = j;
+! }
+! if (j < l)
+! {
+! /* If one of the two characters is incomplete return -1. */
+! if (incomplete || i + utf_byte2len(s2[i]) > n)
+! return -1;
+! /* Don't case-fold illegal bytes or truncated characters. */
+! if (utf_ptr2len(s1 + i) < l || utf_ptr2len(s2 + i) < l)
+! return -1;
+! cdiff = utf_fold(utf_ptr2char(s1 + i))
+! - utf_fold(utf_ptr2char(s2 + i));
+! if (cdiff != 0)
+! return cdiff;
+! }
+! }
+! else
+ {
+ l = (*mb_ptr2len)(s1 + i);
+ if (l <= 1)
+ {
+--- 3228,3248 ----
+ char_u *s1, *s2;
+ size_t nn;
+ {
+! int i, l;
+ int cdiff;
+ int n = (int)nn;
+
+! if (enc_utf8)
+ {
+! return utf_strnicmp(s1, s2, nn, nn);
+! }
+! else
+! {
+! for (i = 0; i < n; i += l)
+ {
++ if (s1[i] == NUL && s2[i] == NUL) /* both strings end */
++ return 0;
++
+ l = (*mb_ptr2len)(s1 + i);
+ if (l <= 1)
+ {
+*** ../vim-7.3.252/src/testdir/test82.in 2011-07-15 21:16:03.000000000 +0200
+--- src/testdir/test82.in 2011-07-15 18:22:46.000000000 +0200
+***************
+*** 0 ****
+--- 1,93 ----
++ Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)
++
++ STARTTEST
++ :so small.vim
++ :if !has("multi_byte")
++ : e! test.ok
++ : w! test.out
++ : qa!
++ :endif
++ :set enc=utf8
++ ggdG
++ :
++ :function! Ch(a, op, b, expected)
++ : if eval(printf('"%s" %s "%s"', a:a, a:op, a:b)) != a:expected
++ : call append(line('$'), printf('"%s" %s "%s" should return %d', a:a, a:op, a:b, a:expected))
++ : else
++ : let b:passed += 1
++ : endif
++ :endfunction
++ :
++ :function! Chk(a, b, result)
++ : if a:result == 0
++ : call Ch(a:a, '==?', a:b, 1)
++ : call Ch(a:a, '!=?', a:b, 0)
++ : call Ch(a:a, '<=?', a:b, 1)
++ : call Ch(a:a, '>=?', a:b, 1)
++ : call Ch(a:a, '<?', a:b, 0)
++ : call Ch(a:a, '>?', a:b, 0)
++ : elseif a:result > 0
++ : call Ch(a:a, '==?', a:b, 0)
++ : call Ch(a:a, '!=?', a:b, 1)
++ : call Ch(a:a, '<=?', a:b, 0)
++ : call Ch(a:a, '>=?', a:b, 1)
++ : call Ch(a:a, '<?', a:b, 0)
++ : call Ch(a:a, '>?', a:b, 1)
++ : else
++ : call Ch(a:a, '==?', a:b, 0)
++ : call Ch(a:a, '!=?', a:b, 1)
++ : call Ch(a:a, '<=?', a:b, 1)
++ : call Ch(a:a, '>=?', a:b, 0)
++ : call Ch(a:a, '<?', a:b, 1)
++ : call Ch(a:a, '>?', a:b, 0)
++ : endif
++ :endfunction
++ :
++ :function! Check(a, b, result)
++ : call Chk(a:a, a:b, a:result)
++ : call Chk(a:b, a:a, -a:result)
++ :endfunction
++ :
++ :function! LT(a, b)
++ : call Check(a:a, a:b, -1)
++ :endfunction
++ :
++ :function! GT(a, b)
++ : call Check(a:a, a:b, 1)
++ :endfunction
++ :
++ :function! EQ(a, b)
++ : call Check(a:a, a:b, 0)
++ :endfunction
++ :
++ :let b:passed=0
++ :call EQ('', '')
++ :call LT('', 'a')
++ :call EQ('abc', 'abc')
++ :call EQ('Abc', 'abC')
++ :call LT('ab', 'abc')
++ :call LT('AB', 'abc')
++ :call LT('ab', 'aBc')
++ :call EQ('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xb9\xd0\xa6\xd0\xa3\xd0\xba\xd0\x95\xd0\xbd')
++ :call LT('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xaf\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd')
++ :call EQ('\xe2\x84\xaa', 'k')
++ :call LT('\xe2\x84\xaa', 'kkkkkk')
++ :call EQ('\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa', 'kkk')
++ :call LT('kk', '\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa')
++ :call EQ('\xe2\x84\xaa\xe2\x84\xa6k\xe2\x84\xaak\xcf\x89', 'k\xcf\x89\xe2\x84\xaakk\xe2\x84\xa6')
++ :call EQ('Abc\x80', 'AbC\x80')
++ :call LT('Abc\x80', 'AbC\x81')
++ :call LT('Abc', 'AbC\x80')
++ :call LT('abc\x80DEF', 'abc\x80def') " case folding stops at the first bad character
++ :call LT('\xc3XYZ', '\xc3xyz')
++ :call EQ('\xef\xbc\xba', '\xef\xbd\x9a') " FF3A (upper), FF5A (lower)
++ :call GT('\xef\xbc\xba', '\xef\xbc\xff') " first string is ok and equals \xef\xbd\x9a after folding, second string is illegal and was left unchanged, then the strings were bytewise compared
++ :call LT('\xc3', '\xc3\x83')
++ :call EQ('\xc3\xa3xYz', '\xc3\x83XyZ')
++ :for n in range(0x60, 0xFF) | call LT(printf('xYz\x%.2X', n-1), printf('XyZ\x%.2X', n)) | endfor
++ :for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) | endfor
++ :for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) | endfor
++ :call append(0, printf('%d checks passed', b:passed))
++ :wq! test.out
++ ENDTEST
++
+*** ../vim-7.3.252/src/testdir/test82.ok 2011-07-15 21:16:03.000000000 +0200
+--- src/testdir/test82.ok 2011-07-15 18:37:33.000000000 +0200
+***************
+*** 0 ****
+--- 1,2 ----
++ 3732 checks passed
++
+*** ../vim-7.3.252/src/testdir/Makefile 2011-06-26 05:36:07.000000000 +0200
+--- src/testdir/Makefile 2011-07-15 18:30:08.000000000 +0200
+***************
+*** 26,32 ****
+ test64.out test65.out test66.out test67.out test68.out \
+ test69.out test70.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 26,32 ----
+ test64.out test65.out test66.out test67.out test68.out \
+ test69.out test70.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out test82.out
+
+ SCRIPTS_GUI = test16.out
+
+*** ../vim-7.3.252/src/testdir/Make_amiga.mak 2011-06-26 05:36:07.000000000 +0200
+--- src/testdir/Make_amiga.mak 2011-07-15 18:29:50.000000000 +0200
+***************
+*** 29,35 ****
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+ test76.out test77.out test78.out test79.out test80.out \
+! test81.out
+
+ .SUFFIXES: .in .out
+
+--- 29,35 ----
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+ test76.out test77.out test78.out test79.out test80.out \
+! test81.out test82.out
+
+ .SUFFIXES: .in .out
+
+***************
+*** 130,132 ****
+--- 130,133 ----
+ test79.out: test79.in
+ test80.out: test80.in
+ test81.out: test81.in
++ test82.out: test82.in
+*** ../vim-7.3.252/src/testdir/Make_dos.mak 2011-06-26 05:36:07.000000000 +0200
+--- src/testdir/Make_dos.mak 2011-07-15 18:30:02.000000000 +0200
+***************
+*** 29,35 ****
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 29,35 ----
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out test82.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.3.252/src/testdir/Make_ming.mak 2011-06-26 05:36:07.000000000 +0200
+--- src/testdir/Make_ming.mak 2011-07-15 18:30:15.000000000 +0200
+***************
+*** 49,55 ****
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 49,55 ----
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out test82.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.3.252/src/testdir/Make_os2.mak 2011-06-26 05:36:07.000000000 +0200
+--- src/testdir/Make_os2.mak 2011-07-15 18:30:25.000000000 +0200
+***************
+*** 29,35 ****
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+ test76.out test77.out test78.out test79.out test80.out \
+! test81.out
+
+ .SUFFIXES: .in .out
+
+--- 29,35 ----
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+ test76.out test77.out test78.out test79.out test80.out \
+! test81.out test82.out
+
+ .SUFFIXES: .in .out
+
+*** ../vim-7.3.252/src/testdir/Make_vms.mms 2011-06-26 05:36:07.000000000 +0200
+--- src/testdir/Make_vms.mms 2011-07-15 18:30:33.000000000 +0200
+***************
+*** 4,10 ****
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2011 Jun 26
+ #
+ # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+ # Edit the lines in the Configuration section below to select.
+--- 4,10 ----
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2011 Jul 15
+ #
+ # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+ # Edit the lines in the Configuration section below to select.
+***************
+*** 75,81 ****
+ test61.out test62.out test63.out test64.out test65.out \
+ test66.out test67.out test68.out test69.out \
+ test71.out test72.out test74.out test75.out test76.out \
+! test77.out test78.out test79.out test80.out test81.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+--- 75,82 ----
+ test61.out test62.out test63.out test64.out test65.out \
+ test66.out test67.out test68.out test69.out \
+ test71.out test72.out test74.out test75.out test76.out \
+! test77.out test78.out test79.out test80.out test81.out \
+! test82.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+*** ../vim-7.3.252/src/version.c 2011-07-15 17:56:11.000000000 +0200
+--- src/version.c 2011-07-15 21:12:26.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 253,
+ /**/
+
+--
+"Intelligence has much less practical application than you'd think."
+ -- Scott Adams, Dilbert.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.254 b/source/ap/vim/patches/7.3.254
new file mode 100644
index 000000000..85176a7a6
--- /dev/null
+++ b/source/ap/vim/patches/7.3.254
@@ -0,0 +1,47 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.254
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.254
+Problem: The coladd field is not reset when setting the line number for a
+ ":call" command.
+Solution: Reset it.
+Files: src/eval.c
+
+
+*** ../vim-7.3.253/src/eval.c 2011-07-07 17:36:52.000000000 +0200
+--- src/eval.c 2011-07-07 17:51:42.000000000 +0200
+***************
+*** 3430,3435 ****
+--- 3430,3438 ----
+ {
+ curwin->w_cursor.lnum = lnum;
+ curwin->w_cursor.col = 0;
++ #ifdef FEAT_VIRTUALEDIT
++ curwin->w_cursor.coladd = 0;
++ #endif
+ }
+ arg = startarg;
+ if (get_func_tv(name, (int)STRLEN(name), &rettv, &arg,
+*** ../vim-7.3.253/src/version.c 2011-07-15 21:16:54.000000000 +0200
+--- src/version.c 2011-07-15 21:23:16.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 254,
+ /**/
+
+--
+Eight Megabytes And Continually Swapping.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.255 b/source/ap/vim/patches/7.3.255
new file mode 100644
index 000000000..c01a585ec
--- /dev/null
+++ b/source/ap/vim/patches/7.3.255
@@ -0,0 +1,81 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.255
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.255
+Problem: When editing a file such as "File[2010-08-15].vim" an E16 error is
+ given. (Manuel Stol)
+Solution: Don't give an error for failing to compile the regexp.
+Files: src/ex_docmd.c, src/misc1.c, src/vim.h
+
+
+*** ../vim-7.3.254/src/ex_docmd.c 2011-06-13 01:19:48.000000000 +0200
+--- src/ex_docmd.c 2011-07-20 14:48:01.000000000 +0200
+***************
+*** 7069,7075 ****
+ old_arg_count = GARGCOUNT;
+ if (expand_wildcards(old_arg_count, old_arg_files,
+ &new_arg_file_count, &new_arg_files,
+! EW_FILE|EW_NOTFOUND|EW_ADDSLASH) == OK
+ && new_arg_file_count > 0)
+ {
+ alist_set(&global_alist, new_arg_file_count, new_arg_files,
+--- 7069,7075 ----
+ old_arg_count = GARGCOUNT;
+ if (expand_wildcards(old_arg_count, old_arg_files,
+ &new_arg_file_count, &new_arg_files,
+! EW_FILE|EW_NOTFOUND|EW_ADDSLASH|EW_NOERROR) == OK
+ && new_arg_file_count > 0)
+ {
+ alist_set(&global_alist, new_arg_file_count, new_arg_files,
+*** ../vim-7.3.254/src/misc1.c 2011-07-15 14:12:25.000000000 +0200
+--- src/misc1.c 2011-07-20 14:55:09.000000000 +0200
+***************
+*** 9043,9050 ****
+--- 9043,9054 ----
+ }
+
+ /* compile the regexp into a program */
++ if (flags & EW_NOERROR)
++ ++emsg_silent;
+ regmatch.rm_ic = TRUE; /* Always ignore case */
+ regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
++ if (flags & EW_NOERROR)
++ --emsg_silent;
+ vim_free(pat);
+
+ if (regmatch.regprog == NULL)
+*** ../vim-7.3.254/src/vim.h 2011-06-13 02:03:55.000000000 +0200
+--- src/vim.h 2011-07-20 14:50:13.000000000 +0200
+***************
+*** 815,820 ****
+--- 815,821 ----
+ #define EW_EXEC 0x40 /* executable files */
+ #define EW_PATH 0x80 /* search in 'path' too */
+ #define EW_ICASE 0x100 /* ignore case */
++ #define EW_NOERROR 0x200 /* no error for bad regexp */
+ /* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND
+ * is used when executing commands and EW_SILENT for interactive expanding. */
+
+*** ../vim-7.3.254/src/version.c 2011-07-15 21:24:06.000000000 +0200
+--- src/version.c 2011-07-20 15:03:52.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 255,
+ /**/
+
+--
+Not too long ago, a program was something you watched on TV...
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.256 b/source/ap/vim/patches/7.3.256
new file mode 100644
index 000000000..b8c9f00d1
--- /dev/null
+++ b/source/ap/vim/patches/7.3.256
@@ -0,0 +1,322 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.256
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.256
+Problem: Javascript indenting not sufficiently tested.
+Solution: Add more tests. (Luc Deschenaux) Mark the lines that are indented
+ wrong.
+Files: src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.255/src/testdir/test3.in 2011-07-15 14:12:25.000000000 +0200
+--- src/testdir/test3.in 2011-07-15 21:05:49.000000000 +0200
+***************
+*** 1592,1598 ****
+
+
+ STARTTEST
+! :set cino=J1
+ /^JSSTART
+ =/^JSEND
+ ENDTEST
+--- 1592,1598 ----
+
+
+ STARTTEST
+! :set cino=j1,J1
+ /^JSSTART
+ =/^JSEND
+ ENDTEST
+***************
+*** 1613,1618 ****
+--- 1613,1757 ----
+ JSEND
+
+ STARTTEST
++ :set cino=j1,J1
++ /^JSSTART
++ =/^JSEND
++ ENDTEST
++
++ JSSTART
++ var foo = [
++ 1, // indent 8 more
++ 2,
++ 3
++ ]; // indent 8 less
++ JSEND
++
++ STARTTEST
++ :set cino=j1,J1
++ /^JSSTART
++ =/^JSEND
++ ENDTEST
++
++ JSSTART
++ function bar() {
++ var foo = [
++ 1,
++ 2,
++ 3
++ ]; // indent 16 less
++ }
++ JSEND
++
++ STARTTEST
++ :set cino=j1,J1
++ /^JSSTART
++ =/^JSEND
++ ENDTEST
++
++ JSSTART
++ (function($){
++
++ var class_name='myclass';
++
++ function private_method() {
++ }
++
++ var public_method={
++ method: function(options,args){
++ private_method();
++ }
++ }
++
++ function init(options) {
++
++ $(this).data(class_name+'_public',$.extend({},{
++ foo: 'bar',
++ bar: 2, // indent 8 more
++ foobar: [ // indent 8 more
++ 1, // indent 8 more
++ 2, // indent 16 more
++ 3 // indent 16 more
++ ],
++ callback: function(){ // indent 8 more
++ return true; // indent 8 more
++ } // indent 8 more
++ }, options||{}));
++ }
++
++ $.fn[class_name]=function() {
++
++ var _arguments=arguments;
++ return this.each(function(){
++
++ var options=$(this).data(class_name+'_public');
++ if (!options) {
++ init.apply(this,_arguments);
++
++ } else {
++ var method=public_method[_arguments[0]];
++
++ if (typeof(method)!='function') {
++ console.log(class_name+' has no method "'+_arguments[0]+'"');
++ return false;
++ }
++ _arguments[0]=options;
++ method.apply(this,_arguments);
++ }
++ });
++ }
++
++ })(jQuery);
++ JSEND
++
++ STARTTEST
++ :set cino=j1,J1
++ /^JSSTART
++ =/^JSEND
++ ENDTEST
++
++ JSSTART
++ function init(options) {
++ $(this).data(class_name+'_public',$.extend({},{
++ foo: 'bar',
++ bar: 2,
++ foobar: [
++ 1, // indent 8 more
++ 2, // indent 8 more
++ 3 // indent 8 more
++ ],
++ callback: function(){
++ return true;
++ }
++ }, options||{}));
++ }
++ JSEND
++
++ STARTTEST
++ :set cino=j1,J1
++ /^JSSTART
++ =/^JSEND
++ ENDTEST
++
++ JSSTART
++ (function($){
++ function init(options) {
++ $(this).data(class_name+'_public',$.extend({},{
++ foo: 'bar',
++ bar: 2, // indent 8 more
++ foobar: [ // indent 8 more
++ 1, // indent 8 more
++ 2, // indent 16 more
++ 3 // indent 16 more
++ ],
++ callback: function(){ // indent 8 more
++ return true; // indent 8 more
++ } // indent 8 more
++ }, options||{}));
++ }
++ })(jQuery);
++ JSEND
++
++ STARTTEST
+ :g/^STARTTEST/.,/^ENDTEST/d
+ :1;/start of AUTO/,$wq! test.out
+ ENDTEST
+*** ../vim-7.3.255/src/testdir/test3.ok 2011-07-15 14:12:25.000000000 +0200
+--- src/testdir/test3.ok 2011-07-15 21:06:38.000000000 +0200
+***************
+*** 1443,1445 ****
+--- 1443,1559 ----
+ }
+ JSEND
+
++
++ JSSTART
++ var foo = [
++ 1, // indent 8 more
++ 2,
++ 3
++ ]; // indent 8 less
++ JSEND
++
++
++ JSSTART
++ function bar() {
++ var foo = [
++ 1,
++ 2,
++ 3
++ ]; // indent 16 less
++ }
++ JSEND
++
++
++ JSSTART
++ (function($){
++
++ var class_name='myclass';
++
++ function private_method() {
++ }
++
++ var public_method={
++ method: function(options,args){
++ private_method();
++ }
++ }
++
++ function init(options) {
++
++ $(this).data(class_name+'_public',$.extend({},{
++ foo: 'bar',
++ bar: 2, // indent 8 more
++ foobar: [ // indent 8 more
++ 1, // indent 8 more
++ 2, // indent 16 more
++ 3 // indent 16 more
++ ],
++ callback: function(){ // indent 8 more
++ return true; // indent 8 more
++ } // indent 8 more
++ }, options||{}));
++ }
++
++ $.fn[class_name]=function() {
++
++ var _arguments=arguments;
++ return this.each(function(){
++
++ var options=$(this).data(class_name+'_public');
++ if (!options) {
++ init.apply(this,_arguments);
++
++ } else {
++ var method=public_method[_arguments[0]];
++
++ if (typeof(method)!='function') {
++ console.log(class_name+' has no method "'+_arguments[0]+'"');
++ return false;
++ }
++ _arguments[0]=options;
++ method.apply(this,_arguments);
++ }
++ });
++ }
++
++ })(jQuery);
++ JSEND
++
++
++ JSSTART
++ function init(options) {
++ $(this).data(class_name+'_public',$.extend({},{
++ foo: 'bar',
++ bar: 2,
++ foobar: [
++ 1, // indent 8 more
++ 2, // indent 8 more
++ 3 // indent 8 more
++ ],
++ callback: function(){
++ return true;
++ }
++ }, options||{}));
++ }
++ JSEND
++
++
++ JSSTART
++ (function($){
++ function init(options) {
++ $(this).data(class_name+'_public',$.extend({},{
++ foo: 'bar',
++ bar: 2, // indent 8 more
++ foobar: [ // indent 8 more
++ 1, // indent 8 more
++ 2, // indent 16 more
++ 3 // indent 16 more
++ ],
++ callback: function(){ // indent 8 more
++ return true; // indent 8 more
++ } // indent 8 more
++ }, options||{}));
++ }
++ })(jQuery);
++ JSEND
++
+*** ../vim-7.3.255/src/version.c 2011-07-20 15:04:52.000000000 +0200
+--- src/version.c 2011-07-20 15:08:13.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 256,
+ /**/
+
+--
+Not too long ago, a keyboard was something to make music with...
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.257 b/source/ap/vim/patches/7.3.257
new file mode 100644
index 000000000..f6292bf8d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.257
@@ -0,0 +1,97 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.257
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.257
+Problem: Not all completions are available to user commands.
+Solution: Add "color", "compiler", "file_in_path" and "locale". (Dominique
+ Pelle)
+Files: src/ex_docmd.c, runtime/doc/map.txt
+
+
+*** ../vim-7.3.256/src/ex_docmd.c 2011-07-20 15:04:52.000000000 +0200
+--- src/ex_docmd.c 2011-07-20 16:10:28.000000000 +0200
+***************
+*** 5297,5303 ****
+--- 5297,5305 ----
+ {
+ {EXPAND_AUGROUP, "augroup"},
+ {EXPAND_BUFFERS, "buffer"},
++ {EXPAND_COLORS, "color"},
+ {EXPAND_COMMANDS, "command"},
++ {EXPAND_COMPILER, "compiler"},
+ #if defined(FEAT_CSCOPE)
+ {EXPAND_CSCOPE, "cscope"},
+ #endif
+***************
+*** 5310,5319 ****
+--- 5312,5326 ----
+ {EXPAND_EVENTS, "event"},
+ {EXPAND_EXPRESSION, "expression"},
+ {EXPAND_FILES, "file"},
++ {EXPAND_FILES_IN_PATH, "file_in_path"},
+ {EXPAND_FILETYPE, "filetype"},
+ {EXPAND_FUNCTIONS, "function"},
+ {EXPAND_HELP, "help"},
+ {EXPAND_HIGHLIGHT, "highlight"},
++ #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
++ && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
++ {EXPAND_LOCALES, "locale"},
++ #endif
+ {EXPAND_MAPPINGS, "mapping"},
+ {EXPAND_MENUS, "menu"},
+ {EXPAND_OWNSYNTAX, "syntax"},
+*** ../vim-7.3.256/runtime/doc/map.txt 2011-05-19 17:25:36.000000000 +0200
+--- runtime/doc/map.txt 2011-07-20 16:10:28.000000000 +0200
+***************
+*** 1202,1221 ****
+--- 1211,1236 ----
+
+ -complete=augroup autocmd groups
+ -complete=buffer buffer names
++ -complete=color color schemes
+ -complete=command Ex command (and arguments)
++ -complete=compiler compilers
++ -complete=cscope |:cscope| suboptions
+ -complete=dir directory names
+ -complete=environment environment variable names
+ -complete=event autocommand events
+ -complete=expression Vim expression
+ -complete=file file and directory names
++ -complete=file_in_path file and directory names in |'path'|
+ -complete=filetype filetype names |'filetype'|
+ -complete=function function name
+ -complete=help help subjects
+ -complete=highlight highlight groups
++ -complete=locale locale names (as output of locale -a)
+ -complete=mapping mapping name
+ -complete=menu menus
+ -complete=option options
+ -complete=shellcmd Shell command
++ -complete=sign |:sign| suboptions
+ -complete=syntax syntax file names |'syntax'|
+ -complete=tag tags
+ -complete=tag_listfiles tags, file names are shown when CTRL-D is hit
+*** ../vim-7.3.256/src/version.c 2011-07-20 15:09:38.000000000 +0200
+--- src/version.c 2011-07-20 16:30:31.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 257,
+ /**/
+
+--
+I have to exercise early in the morning before my brain
+figures out what I'm doing.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.258 b/source/ap/vim/patches/7.3.258
new file mode 100644
index 000000000..277cbe774
--- /dev/null
+++ b/source/ap/vim/patches/7.3.258
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.258
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.258
+Problem: MS-Windows: The edit with existing vim context menu entries can be
+ unwanted.
+Solution: Let a registry entry disable them. (Jerome Vuarand)
+Files: src/GvimExt/gvimext.cpp
+
+
+*** ../vim-7.3.257/src/GvimExt/gvimext.cpp 2010-08-15 21:57:29.000000000 +0200
+--- src/GvimExt/gvimext.cpp 2011-07-20 16:48:09.000000000 +0200
+***************
+*** 586,593 ****
+
+ // Initialize m_cntOfHWnd to 0
+ m_cntOfHWnd = 0;
+! // Retrieve all the vim instances
+! EnumWindows(EnumWindowsProc, (LPARAM)this);
+
+ if (cbFiles > 1)
+ {
+--- 586,608 ----
+
+ // Initialize m_cntOfHWnd to 0
+ m_cntOfHWnd = 0;
+!
+! HKEY keyhandle;
+! bool showExisting = true;
+!
+! // Check whether "Edit with existing Vim" entries are disabled.
+! if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Vim\\Gvim", 0,
+! KEY_READ, &keyhandle) == ERROR_SUCCESS)
+! {
+! if (RegQueryValueEx(keyhandle, "DisableEditWithExisting", 0, NULL,
+! NULL, NULL) == ERROR_SUCCESS)
+! showExisting = false;
+! RegCloseKey(keyhandle);
+! }
+!
+! // Retrieve all the vim instances, unless disabled.
+! if (showExisting)
+! EnumWindows(EnumWindowsProc, (LPARAM)this);
+
+ if (cbFiles > 1)
+ {
+*** ../vim-7.3.257/src/version.c 2011-07-20 16:36:35.000000000 +0200
+--- src/version.c 2011-07-20 16:54:34.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 258,
+ /**/
+
+--
+What the word 'politics' means: 'Poli' in Latin meaning 'many' and 'tics'
+meaning 'bloodsucking creatures'.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.259 b/source/ap/vim/patches/7.3.259
new file mode 100644
index 000000000..91f9dfa13
--- /dev/null
+++ b/source/ap/vim/patches/7.3.259
@@ -0,0 +1,503 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.259
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.259
+Problem: Equivalence classes only work for latin characters.
+Solution: Add the Unicode equivalence characters. (Dominique Pelle)
+Files: runtime/doc/pattern.txt, src/regexp.c, src/testdir/test44.in,
+ src/testdir/test44.ok
+
+
+*** ../vim-7.3.258/runtime/doc/pattern.txt 2010-08-15 21:57:14.000000000 +0200
+--- runtime/doc/pattern.txt 2011-07-20 17:44:03.000000000 +0200
+***************
+*** 1027,1037 ****
+ These items only work for 8-bit characters.
+ */[[=* *[==]*
+ - An equivalence class. This means that characters are matched that
+! have almost the same meaning, e.g., when ignoring accents. The form
+! is:
+ [=a=]
+- Currently this is only implemented for latin1. Also works for the
+- latin1 characters in utf-8 and latin9.
+ */[[.* *[..]*
+ - A collation element. This currently simply accepts a single
+ character in the form:
+--- 1036,1044 ----
+ These items only work for 8-bit characters.
+ */[[=* *[==]*
+ - An equivalence class. This means that characters are matched that
+! have almost the same meaning, e.g., when ignoring accents. This
+! only works for Unicode, latin1 and latin9. The form is:
+ [=a=]
+ */[[.* *[..]*
+ - A collation element. This currently simply accepts a single
+ character in the form:
+*** ../vim-7.3.258/src/regexp.c 2011-06-19 04:31:54.000000000 +0200
+--- src/regexp.c 2011-07-20 17:56:52.000000000 +0200
+***************
+*** 666,673 ****
+--- 666,677 ----
+ static void regc __ARGS((int b));
+ #ifdef FEAT_MBYTE
+ static void regmbc __ARGS((int c));
++ # define REGMBC(x) regmbc(x);
++ # define CASEMBC(x) case x:
+ #else
+ # define regmbc(c) regc(c)
++ # define REGMBC(x)
++ # define CASEMBC(x)
+ #endif
+ static void reginsert __ARGS((int, char_u *));
+ static void reginsert_limits __ARGS((int, long, long, char_u *));
+***************
+*** 787,854 ****
+ switch (c)
+ {
+ case 'A': case '\300': case '\301': case '\302':
+ case '\303': case '\304': case '\305':
+ regmbc('A'); regmbc('\300'); regmbc('\301');
+ regmbc('\302'); regmbc('\303'); regmbc('\304');
+ regmbc('\305');
+ return;
+ case 'C': case '\307':
+ regmbc('C'); regmbc('\307');
+ return;
+ case 'E': case '\310': case '\311': case '\312': case '\313':
+ regmbc('E'); regmbc('\310'); regmbc('\311');
+ regmbc('\312'); regmbc('\313');
+ return;
+ case 'I': case '\314': case '\315': case '\316': case '\317':
+ regmbc('I'); regmbc('\314'); regmbc('\315');
+ regmbc('\316'); regmbc('\317');
+ return;
+ case 'N': case '\321':
+ regmbc('N'); regmbc('\321');
+ return;
+ case 'O': case '\322': case '\323': case '\324': case '\325':
+! case '\326':
+ regmbc('O'); regmbc('\322'); regmbc('\323');
+ regmbc('\324'); regmbc('\325'); regmbc('\326');
+ return;
+ case 'U': case '\331': case '\332': case '\333': case '\334':
+ regmbc('U'); regmbc('\331'); regmbc('\332');
+ regmbc('\333'); regmbc('\334');
+ return;
+ case 'Y': case '\335':
+ regmbc('Y'); regmbc('\335');
+ return;
+ case 'a': case '\340': case '\341': case '\342':
+ case '\343': case '\344': case '\345':
+ regmbc('a'); regmbc('\340'); regmbc('\341');
+ regmbc('\342'); regmbc('\343'); regmbc('\344');
+ regmbc('\345');
+ return;
+ case 'c': case '\347':
+ regmbc('c'); regmbc('\347');
+ return;
+ case 'e': case '\350': case '\351': case '\352': case '\353':
+ regmbc('e'); regmbc('\350'); regmbc('\351');
+ regmbc('\352'); regmbc('\353');
+ return;
+ case 'i': case '\354': case '\355': case '\356': case '\357':
+ regmbc('i'); regmbc('\354'); regmbc('\355');
+ regmbc('\356'); regmbc('\357');
+ return;
+ case 'n': case '\361':
+ regmbc('n'); regmbc('\361');
+ return;
+ case 'o': case '\362': case '\363': case '\364': case '\365':
+! case '\366':
+ regmbc('o'); regmbc('\362'); regmbc('\363');
+ regmbc('\364'); regmbc('\365'); regmbc('\366');
+ return;
+ case 'u': case '\371': case '\372': case '\373': case '\374':
+ regmbc('u'); regmbc('\371'); regmbc('\372');
+ regmbc('\373'); regmbc('\374');
+ return;
+ case 'y': case '\375': case '\377':
+ regmbc('y'); regmbc('\375'); regmbc('\377');
+ return;
+ }
+ #endif
+--- 791,1085 ----
+ switch (c)
+ {
+ case 'A': case '\300': case '\301': case '\302':
++ CASEMBC(0x100) CASEMBC(0x102) CASEMBC(0x104) CASEMBC(0x1cd)
++ CASEMBC(0x1de) CASEMBC(0x1e0) CASEMBC(0x1ea2)
+ case '\303': case '\304': case '\305':
+ regmbc('A'); regmbc('\300'); regmbc('\301');
+ regmbc('\302'); regmbc('\303'); regmbc('\304');
+ regmbc('\305');
++ REGMBC(0x100) REGMBC(0x102) REGMBC(0x104)
++ REGMBC(0x1cd) REGMBC(0x1de) REGMBC(0x1e0)
++ REGMBC(0x1ea2)
++ return;
++ case 'B': CASEMBC(0x1e02) CASEMBC(0x1e06)
++ regmbc('B'); REGMBC(0x1e02) REGMBC(0x1e06)
+ return;
+ case 'C': case '\307':
++ CASEMBC(0x106) CASEMBC(0x108) CASEMBC(0x10a) CASEMBC(0x10c)
+ regmbc('C'); regmbc('\307');
++ REGMBC(0x106) REGMBC(0x108) REGMBC(0x10a)
++ REGMBC(0x10c)
++ return;
++ case 'D': CASEMBC(0x10e) CASEMBC(0x110) CASEMBC(0x1e0a)
++ CASEMBC(0x1e0e) CASEMBC(0x1e10)
++ regmbc('D'); REGMBC(0x10e) REGMBC(0x110)
++ REGMBC(0x1e0a) REGMBC(0x1e0e) REGMBC(0x1e10)
+ return;
+ case 'E': case '\310': case '\311': case '\312': case '\313':
++ CASEMBC(0x112) CASEMBC(0x114) CASEMBC(0x116) CASEMBC(0x118)
++ CASEMBC(0x11a) CASEMBC(0x1eba) CASEMBC(0x1ebc)
+ regmbc('E'); regmbc('\310'); regmbc('\311');
+ regmbc('\312'); regmbc('\313');
++ REGMBC(0x112) REGMBC(0x114) REGMBC(0x116)
++ REGMBC(0x118) REGMBC(0x11a) REGMBC(0x1eba)
++ REGMBC(0x1ebc)
++ return;
++ case 'F': CASEMBC(0x1e1e)
++ regmbc('F'); REGMBC(0x1e1e)
++ return;
++ case 'G': CASEMBC(0x11c) CASEMBC(0x11e) CASEMBC(0x120)
++ CASEMBC(0x122) CASEMBC(0x1e4) CASEMBC(0x1e6) CASEMBC(0x1f4)
++ CASEMBC(0x1e20)
++ regmbc('G'); REGMBC(0x11c) REGMBC(0x11e)
++ REGMBC(0x120) REGMBC(0x122) REGMBC(0x1e4)
++ REGMBC(0x1e6) REGMBC(0x1f4) REGMBC(0x1e20)
++ return;
++ case 'H': CASEMBC(0x124) CASEMBC(0x126) CASEMBC(0x1e22)
++ CASEMBC(0x1e26) CASEMBC(0x1e28)
++ regmbc('H'); REGMBC(0x124) REGMBC(0x126)
++ REGMBC(0x1e22) REGMBC(0x1e26) REGMBC(0x1e28)
+ return;
+ case 'I': case '\314': case '\315': case '\316': case '\317':
++ CASEMBC(0x128) CASEMBC(0x12a) CASEMBC(0x12c) CASEMBC(0x12e)
++ CASEMBC(0x130) CASEMBC(0x1cf) CASEMBC(0x1ec8)
+ regmbc('I'); regmbc('\314'); regmbc('\315');
+ regmbc('\316'); regmbc('\317');
++ REGMBC(0x128) REGMBC(0x12a) REGMBC(0x12c)
++ REGMBC(0x12e) REGMBC(0x130) REGMBC(0x1cf)
++ REGMBC(0x1ec8)
++ return;
++ case 'J': CASEMBC(0x134)
++ regmbc('J'); REGMBC(0x134)
++ return;
++ case 'K': CASEMBC(0x136) CASEMBC(0x1e8) CASEMBC(0x1e30)
++ CASEMBC(0x1e34)
++ regmbc('K'); REGMBC(0x136) REGMBC(0x1e8)
++ REGMBC(0x1e30) REGMBC(0x1e34)
++ return;
++ case 'L': CASEMBC(0x139) CASEMBC(0x13b) CASEMBC(0x13d)
++ CASEMBC(0x13f) CASEMBC(0x141) CASEMBC(0x1e3a)
++ regmbc('L'); REGMBC(0x139) REGMBC(0x13b)
++ REGMBC(0x13d) REGMBC(0x13f) REGMBC(0x141)
++ REGMBC(0x1e3a)
++ return;
++ case 'M': CASEMBC(0x1e3e) CASEMBC(0x1e40)
++ regmbc('M'); REGMBC(0x1e3e) REGMBC(0x1e40)
+ return;
+ case 'N': case '\321':
++ CASEMBC(0x143) CASEMBC(0x145) CASEMBC(0x147) CASEMBC(0x1e44)
++ CASEMBC(0x1e48)
+ regmbc('N'); regmbc('\321');
++ REGMBC(0x143) REGMBC(0x145) REGMBC(0x147)
++ REGMBC(0x1e44) REGMBC(0x1e48)
+ return;
+ case 'O': case '\322': case '\323': case '\324': case '\325':
+! case '\326': case '\330':
+! CASEMBC(0x14c) CASEMBC(0x14e) CASEMBC(0x150) CASEMBC(0x1a0)
+! CASEMBC(0x1d1) CASEMBC(0x1ea) CASEMBC(0x1ec) CASEMBC(0x1ece)
+ regmbc('O'); regmbc('\322'); regmbc('\323');
+ regmbc('\324'); regmbc('\325'); regmbc('\326');
++ regmbc('\330');
++ REGMBC(0x14c) REGMBC(0x14e) REGMBC(0x150)
++ REGMBC(0x1a0) REGMBC(0x1d1) REGMBC(0x1ea)
++ REGMBC(0x1ec) REGMBC(0x1ece)
++ return;
++ case 'P': case 0x1e54: case 0x1e56:
++ regmbc('P'); REGMBC(0x1e54) REGMBC(0x1e56)
++ return;
++ case 'R': CASEMBC(0x154) CASEMBC(0x156) CASEMBC(0x158)
++ CASEMBC(0x1e58) CASEMBC(0x1e5e)
++ regmbc('R'); REGMBC(0x154) REGMBC(0x156) REGMBC(0x158)
++ REGMBC(0x1e58) REGMBC(0x1e5e)
++ return;
++ case 'S': CASEMBC(0x15a) CASEMBC(0x15c) CASEMBC(0x15e)
++ CASEMBC(0x160) CASEMBC(0x1e60)
++ regmbc('S'); REGMBC(0x15a) REGMBC(0x15c)
++ REGMBC(0x15e) REGMBC(0x160) REGMBC(0x1e60)
++ return;
++ case 'T': CASEMBC(0x162) CASEMBC(0x164) CASEMBC(0x166)
++ CASEMBC(0x1e6a) CASEMBC(0x1e6e)
++ regmbc('T'); REGMBC(0x162) REGMBC(0x164)
++ REGMBC(0x166) REGMBC(0x1e6a) REGMBC(0x1e6e)
+ return;
+ case 'U': case '\331': case '\332': case '\333': case '\334':
++ CASEMBC(0x168) CASEMBC(0x16a) CASEMBC(0x16c) CASEMBC(0x16e)
++ CASEMBC(0x170) CASEMBC(0x172) CASEMBC(0x1af) CASEMBC(0x1d3)
++ CASEMBC(0x1ee6)
+ regmbc('U'); regmbc('\331'); regmbc('\332');
+ regmbc('\333'); regmbc('\334');
++ REGMBC(0x168) REGMBC(0x16a) REGMBC(0x16c)
++ REGMBC(0x16e) REGMBC(0x170) REGMBC(0x172)
++ REGMBC(0x1af) REGMBC(0x1d3) REGMBC(0x1ee6)
++ return;
++ case 'V': CASEMBC(0x1e7c)
++ regmbc('V'); REGMBC(0x1e7c)
++ return;
++ case 'W': CASEMBC(0x174) CASEMBC(0x1e80) CASEMBC(0x1e82)
++ CASEMBC(0x1e84) CASEMBC(0x1e86)
++ regmbc('W'); REGMBC(0x174) REGMBC(0x1e80)
++ REGMBC(0x1e82) REGMBC(0x1e84) REGMBC(0x1e86)
++ return;
++ case 'X': CASEMBC(0x1e8a) CASEMBC(0x1e8c)
++ regmbc('X'); REGMBC(0x1e8a) REGMBC(0x1e8c)
+ return;
+ case 'Y': case '\335':
++ CASEMBC(0x176) CASEMBC(0x178) CASEMBC(0x1e8e) CASEMBC(0x1ef2)
++ CASEMBC(0x1ef6) CASEMBC(0x1ef8)
+ regmbc('Y'); regmbc('\335');
++ REGMBC(0x176) REGMBC(0x178) REGMBC(0x1e8e)
++ REGMBC(0x1ef2) REGMBC(0x1ef6) REGMBC(0x1ef8)
++ return;
++ case 'Z': CASEMBC(0x179) CASEMBC(0x17b) CASEMBC(0x17d)
++ CASEMBC(0x1b5) CASEMBC(0x1e90) CASEMBC(0x1e94)
++ regmbc('Z'); REGMBC(0x179) REGMBC(0x17b)
++ REGMBC(0x17d) REGMBC(0x1b5) REGMBC(0x1e90)
++ REGMBC(0x1e94)
+ return;
+ case 'a': case '\340': case '\341': case '\342':
+ case '\343': case '\344': case '\345':
++ CASEMBC(0x101) CASEMBC(0x103) CASEMBC(0x105) CASEMBC(0x1ce)
++ CASEMBC(0x1df) CASEMBC(0x1e1) CASEMBC(0x1ea3)
+ regmbc('a'); regmbc('\340'); regmbc('\341');
+ regmbc('\342'); regmbc('\343'); regmbc('\344');
+ regmbc('\345');
++ REGMBC(0x101) REGMBC(0x103) REGMBC(0x105)
++ REGMBC(0x1ce) REGMBC(0x1df) REGMBC(0x1e1)
++ REGMBC(0x1ea3)
++ return;
++ case 'b': CASEMBC(0x1e03) CASEMBC(0x1e07)
++ regmbc('b'); REGMBC(0x1e03) REGMBC(0x1e07)
+ return;
+ case 'c': case '\347':
++ CASEMBC(0x107) CASEMBC(0x109) CASEMBC(0x10b) CASEMBC(0x10d)
+ regmbc('c'); regmbc('\347');
++ REGMBC(0x107) REGMBC(0x109) REGMBC(0x10b)
++ REGMBC(0x10d)
++ return;
++ case 'd': CASEMBC(0x10f) CASEMBC(0x111) CASEMBC(0x1d0b)
++ CASEMBC(0x1e11)
++ regmbc('d'); REGMBC(0x10f) REGMBC(0x111)
++ REGMBC(0x1e0b) REGMBC(0x01e0f) REGMBC(0x1e11)
+ return;
+ case 'e': case '\350': case '\351': case '\352': case '\353':
++ CASEMBC(0x113) CASEMBC(0x115) CASEMBC(0x117) CASEMBC(0x119)
++ CASEMBC(0x11b) CASEMBC(0x1ebb) CASEMBC(0x1ebd)
+ regmbc('e'); regmbc('\350'); regmbc('\351');
+ regmbc('\352'); regmbc('\353');
++ REGMBC(0x113) REGMBC(0x115) REGMBC(0x117)
++ REGMBC(0x119) REGMBC(0x11b) REGMBC(0x1ebb)
++ REGMBC(0x1ebd)
++ return;
++ case 'f': CASEMBC(0x1e1f)
++ regmbc('f'); REGMBC(0x1e1f)
++ return;
++ case 'g': CASEMBC(0x11d) CASEMBC(0x11f) CASEMBC(0x121)
++ CASEMBC(0x123) CASEMBC(0x1e5) CASEMBC(0x1e7) CASEMBC(0x1f5)
++ CASEMBC(0x1e21)
++ regmbc('g'); REGMBC(0x11d) REGMBC(0x11f)
++ REGMBC(0x121) REGMBC(0x123) REGMBC(0x1e5)
++ REGMBC(0x1e7) REGMBC(0x1f5) REGMBC(0x1e21)
++ return;
++ case 'h': CASEMBC(0x125) CASEMBC(0x127) CASEMBC(0x1e23)
++ CASEMBC(0x1e27) CASEMBC(0x1e29) CASEMBC(0x1e96)
++ regmbc('h'); REGMBC(0x125) REGMBC(0x127)
++ REGMBC(0x1e23) REGMBC(0x1e27) REGMBC(0x1e29)
++ REGMBC(0x1e96)
+ return;
+ case 'i': case '\354': case '\355': case '\356': case '\357':
++ CASEMBC(0x129) CASEMBC(0x12b) CASEMBC(0x12d) CASEMBC(0x12f)
++ CASEMBC(0x1d0) CASEMBC(0x1ec9)
+ regmbc('i'); regmbc('\354'); regmbc('\355');
+ regmbc('\356'); regmbc('\357');
++ REGMBC(0x129) REGMBC(0x12b) REGMBC(0x12d)
++ REGMBC(0x12f) REGMBC(0x1d0) REGMBC(0x1ec9)
++ return;
++ case 'j': CASEMBC(0x135) CASEMBC(0x1f0)
++ regmbc('j'); REGMBC(0x135) REGMBC(0x1f0)
++ return;
++ case 'k': CASEMBC(0x137) CASEMBC(0x1e9) CASEMBC(0x1e31)
++ CASEMBC(0x1e35)
++ regmbc('k'); REGMBC(0x137) REGMBC(0x1e9)
++ REGMBC(0x1e31) REGMBC(0x1e35)
++ return;
++ case 'l': CASEMBC(0x13a) CASEMBC(0x13c) CASEMBC(0x13e)
++ CASEMBC(0x140) CASEMBC(0x142) CASEMBC(0x1e3b)
++ regmbc('l'); REGMBC(0x13a) REGMBC(0x13c)
++ REGMBC(0x13e) REGMBC(0x140) REGMBC(0x142)
++ REGMBC(0x1e3b)
++ return;
++ case 'm': CASEMBC(0x1e3f) CASEMBC(0x1e41)
++ regmbc('m'); REGMBC(0x1e3f) REGMBC(0x1e41)
+ return;
+ case 'n': case '\361':
++ CASEMBC(0x144) CASEMBC(0x146) CASEMBC(0x148) CASEMBC(0x149)
++ CASEMBC(0x1e45) CASEMBC(0x1e49)
+ regmbc('n'); regmbc('\361');
++ REGMBC(0x144) REGMBC(0x146) REGMBC(0x148)
++ REGMBC(0x149) REGMBC(0x1e45) REGMBC(0x1e49)
+ return;
+ case 'o': case '\362': case '\363': case '\364': case '\365':
+! case '\366': case '\370':
+! CASEMBC(0x14d) CASEMBC(0x14f) CASEMBC(0x151) CASEMBC(0x1a1)
+! CASEMBC(0x1d2) CASEMBC(0x1eb) CASEMBC(0x1ed) CASEMBC(0x1ecf)
+ regmbc('o'); regmbc('\362'); regmbc('\363');
+ regmbc('\364'); regmbc('\365'); regmbc('\366');
++ regmbc('\370');
++ REGMBC(0x14d) REGMBC(0x14f) REGMBC(0x151)
++ REGMBC(0x1a1) REGMBC(0x1d2) REGMBC(0x1eb)
++ REGMBC(0x1ed) REGMBC(0x1ecf)
++ return;
++ case 'p': CASEMBC(0x1e55) CASEMBC(0x1e57)
++ regmbc('p'); REGMBC(0x1e55) REGMBC(0x1e57)
++ return;
++ case 'r': CASEMBC(0x155) CASEMBC(0x157) CASEMBC(0x159)
++ CASEMBC(0x1e59) CASEMBC(0x1e5f)
++ regmbc('r'); REGMBC(0x155) REGMBC(0x157) REGMBC(0x159)
++ REGMBC(0x1e59) REGMBC(0x1e5f)
++ return;
++ case 's': CASEMBC(0x15b) CASEMBC(0x15d) CASEMBC(0x15f)
++ CASEMBC(0x161) CASEMBC(0x1e61)
++ regmbc('s'); REGMBC(0x15b) REGMBC(0x15d)
++ REGMBC(0x15f) REGMBC(0x161) REGMBC(0x1e61)
++ return;
++ case 't': CASEMBC(0x163) CASEMBC(0x165) CASEMBC(0x167)
++ CASEMBC(0x1e6b) CASEMBC(0x1e6f) CASEMBC(0x1e97)
++ regmbc('t'); REGMBC(0x163) REGMBC(0x165) REGMBC(0x167)
++ REGMBC(0x1e6b) REGMBC(0x1e6f) REGMBC(0x1e97)
+ return;
+ case 'u': case '\371': case '\372': case '\373': case '\374':
++ CASEMBC(0x169) CASEMBC(0x16b) CASEMBC(0x16d) CASEMBC(0x16f)
++ CASEMBC(0x171) CASEMBC(0x173) CASEMBC(0x1b0) CASEMBC(0x1d4)
++ CASEMBC(0x1ee7)
+ regmbc('u'); regmbc('\371'); regmbc('\372');
+ regmbc('\373'); regmbc('\374');
++ REGMBC(0x169) REGMBC(0x16b) REGMBC(0x16d)
++ REGMBC(0x16f) REGMBC(0x171) REGMBC(0x173)
++ REGMBC(0x1b0) REGMBC(0x1d4) REGMBC(0x1ee7)
++ return;
++ case 'v': CASEMBC(0x1e7d)
++ regmbc('v'); REGMBC(0x1e7d)
++ return;
++ case 'w': CASEMBC(0x175) CASEMBC(0x1e81) CASEMBC(0x1e83)
++ CASEMBC(0x1e85) CASEMBC(0x1e87) CASEMBC(0x1e98)
++ regmbc('w'); REGMBC(0x175) REGMBC(0x1e81)
++ REGMBC(0x1e83) REGMBC(0x1e85) REGMBC(0x1e87)
++ REGMBC(0x1e98)
++ return;
++ case 'x': CASEMBC(0x1e8b) CASEMBC(0x1e8d)
++ regmbc('x'); REGMBC(0x1e8b) REGMBC(0x1e8d)
+ return;
+ case 'y': case '\375': case '\377':
++ CASEMBC(0x177) CASEMBC(0x1e8f) CASEMBC(0x1e99)
++ CASEMBC(0x1ef3) CASEMBC(0x1ef7) CASEMBC(0x1ef9)
+ regmbc('y'); regmbc('\375'); regmbc('\377');
++ REGMBC(0x177) REGMBC(0x1e8f) REGMBC(0x1e99)
++ REGMBC(0x1ef3) REGMBC(0x1ef7) REGMBC(0x1ef9)
++ return;
++ case 'z': CASEMBC(0x17a) CASEMBC(0x17c) CASEMBC(0x17e)
++ CASEMBC(0x1b6) CASEMBC(0x1e91) CASEMBC(0x1e95)
++ regmbc('z'); REGMBC(0x17a) REGMBC(0x17c)
++ REGMBC(0x17e) REGMBC(0x1b6) REGMBC(0x1e91)
++ REGMBC(0x1e95)
+ return;
+ }
+ #endif
+***************
+*** 2468,2473 ****
+--- 2699,2706 ----
+ regmbc(c)
+ int c;
+ {
++ if (!has_mbyte && c > 0xff)
++ return;
+ if (regcode == JUST_CALC_SIZE)
+ regsize += (*mb_char2len)(c);
+ else
+***************
+*** 2588,2594 ****
+ else
+ offset = (int)(val - scan);
+ /* When the offset uses more than 16 bits it can no longer fit in the two
+! * bytes avaliable. Use a global flag to avoid having to check return
+ * values in too many places. */
+ if (offset > 0xffff)
+ reg_toolong = TRUE;
+--- 2821,2827 ----
+ else
+ offset = (int)(val - scan);
+ /* When the offset uses more than 16 bits it can no longer fit in the two
+! * bytes available. Use a global flag to avoid having to check return
+ * values in too many places. */
+ if (offset > 0xffff)
+ reg_toolong = TRUE;
+*** ../vim-7.3.258/src/testdir/test44.in 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test44.in 2011-07-20 17:36:49.000000000 +0200
+***************
+*** 27,32 ****
+--- 27,34 ----
+ x/\%U12345678
+ x/[\U1234abcd\u1234\uabcd]
+ x/\%d21879b
++ x/ [[=A=]]* [[=B=]]* [[=C=]]* [[=D=]]* [[=E=]]* [[=F=]]* [[=G=]]* [[=H=]]* [[=I=]]* [[=J=]]* [[=K=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R=]]* [[=S=]]* [[=T=]]* [[=U=]]* [[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/e
++ x/ [[=a=]]* [[=b=]]* [[=c=]]* [[=d=]]* [[=e=]]* [[=f=]]* [[=g=]]* [[=h=]]* [[=i=]]* [[=j=]]* [[=k=]]* [[=l=]]* [[=m=]]* [[=n=]]* [[=o=]]* [[=p=]]* [[=q=]]* [[=r=]]* [[=s=]]* [[=t=]]* [[=u=]]* [[=v=]]* [[=w=]]* [[=x=]]* [[=y=]]* [[=z=]]*/e
+ x:?^1?,$w! test.out
+ :e! test.out
+ G:put =matchstr(\"×בגד\", \".\", 0, 2) " ב
+***************
+*** 53,55 ****
+--- 55,59 ----
+ e ü’…™¸y
+ f ü’Š¯z
+ g aå•·bb
++ h AÀÃÂÃÄÅĀĂĄÇǞǠẢ BḂḆ CÇĆĈĊČ DÄŽÄḊḎḠEÈÉÊËĒĔĖĘĚẺẼ FḞ GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÃŒÃÃŽÃĨĪĬĮİÇỈ JÄ´ KĶǨḰḴ LĹĻĽĿÅḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎÅƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ Vá¹¼ WŴẀẂẄẆ XẊẌ YÃŶŸẎỲỶỸ ZŹŻŽƵáºáº”
++ i aàáâãäåÄăąǎǟǡả bḃḇ cÃ§Ä‡Ä‰Ä‹Ä dÄđḋá¸á¸‘ eèéêëēĕėęěẻẽ fḟ gÄğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįÇỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṠnñńņňʼnṅṉ oòóôõöøÅÅÅ‘Æ¡Ç’Ç«Ç­á» pṕṗ q rŕŗřṙṟ sÅ›Åşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ vá¹½ wŵáºáºƒáº…ẇẘ xẋẠyýÿŷáºáº™á»³á»·á»¹ zźżžƶẑẕ
+*** ../vim-7.3.258/src/testdir/test44.ok 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test44.ok 2011-07-20 17:36:49.000000000 +0200
+***************
+*** 14,19 ****
+--- 14,21 ----
+ e y
+ f z
+ g abb
++ h AÀÃÂÃÄÅĀĂĄÇǞǠẢ BḂḆ CÇĆĈĊČ DÄŽÄḊḎḠEÈÉÊËĒĔĖĘĚẺẼ FḞ GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÃŒÃÃŽÃĨĪĬĮİÇỈ JÄ´ KĶǨḰḴ LĹĻĽĿÅḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎÅƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ Vá¹¼ WŴẀẂẄẆ XẊẌ YÃŶŸẎỲỶỸ ZŹŻŽƵáº
++ i aàáâãäåÄăąǎǟǡả bḃḇ cÃ§Ä‡Ä‰Ä‹Ä dÄđḋá¸á¸‘ eèéêëēĕėęěẻẽ fḟ gÄğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįÇỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṠnñńņňʼnṅṉ oòóôõöøÅÅÅ‘Æ¡Ç’Ç«Ç­á» pṕṗ q rŕŗřṙṟ sÅ›Åşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ vá¹½ wŵáºáºƒáº…ẇẘ xẋẠyýÿŷáºáº™á»³á»·á»¹ zźżžƶẑ
+ ב
+ בג
+ ×
+*** ../vim-7.3.258/src/version.c 2011-07-20 17:27:17.000000000 +0200
+--- src/version.c 2011-07-20 17:38:32.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 259,
+ /**/
+
+--
+Not too long ago, compress was something you did to garbage...
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.260 b/source/ap/vim/patches/7.3.260
new file mode 100644
index 000000000..ba9af57aa
--- /dev/null
+++ b/source/ap/vim/patches/7.3.260
@@ -0,0 +1,69 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.260
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.260
+Problem: CursorHold triggers on an incomplete mapping. (Will Gray)
+Solution: Don't trigger CursorHold when there is typeahead.
+Files: src/fileio.c
+
+
+*** ../vim-7.3.259/src/fileio.c 2011-05-19 17:25:36.000000000 +0200
+--- src/fileio.c 2011-07-20 18:22:16.000000000 +0200
+***************
+*** 9044,9050 ****
+ {
+ int state;
+
+! if (!did_cursorhold && has_cursorhold() && !Recording
+ #ifdef FEAT_INS_EXPAND
+ && !ins_compl_active()
+ #endif
+--- 9044,9053 ----
+ {
+ int state;
+
+! if (!did_cursorhold
+! && has_cursorhold()
+! && !Recording
+! && typebuf.tb_len == 0
+ #ifdef FEAT_INS_EXPAND
+ && !ins_compl_active()
+ #endif
+***************
+*** 9935,9940 ****
+--- 9938,9945 ----
+ if ((c == ';' || c == '>') && match == FALSE)
+ {
+ *pattern = NUL; /* Terminate the string */
++ /* TODO: match with 'filetype' of buffer that "fname" comes
++ * from. */
+ match = mch_check_filetype(fname, type_start);
+ *pattern = c; /* Restore the terminator */
+ type_start = pattern + 1;
+*** ../vim-7.3.259/src/version.c 2011-07-20 17:58:14.000000000 +0200
+--- src/version.c 2011-07-20 18:25:15.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 260,
+ /**/
+
+--
+LAUNCELOT: At last! A call! A cry of distress ...
+ (he draws his sword, and turns to CONCORDE)
+ Concorde! Brave, Concorde ... you shall not have died in vain!
+CONCORDE: I'm not quite dead, sir ...
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.261 b/source/ap/vim/patches/7.3.261
new file mode 100644
index 000000000..4c03f6b57
--- /dev/null
+++ b/source/ap/vim/patches/7.3.261
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.261
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.261
+Problem: G++ error message errornously recognized as error.
+Solution: Ignore "In file included from" line also when it ends in a colon.
+ (Fernando Castillo)
+Files: src/option.h
+
+
+*** ../vim-7.3.260/src/option.h 2011-06-26 05:36:07.000000000 +0200
+--- src/option.h 2011-07-27 13:44:08.000000000 +0200
+***************
+*** 33,39 ****
+ # ifdef EBCDIC
+ #define DFLT_EFM "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+ # else
+! #define DFLT_EFM "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-Gfrom %f:%l:%c,%-Gfrom %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+ # endif
+ # endif
+ # endif
+--- 33,39 ----
+ # ifdef EBCDIC
+ #define DFLT_EFM "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+ # else
+! #define DFLT_EFM "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-Gfrom %f:%l:%c,%-Gfrom %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+ # endif
+ # endif
+ # endif
+*** ../vim-7.3.260/src/version.c 2011-07-20 18:29:33.000000000 +0200
+--- src/version.c 2011-07-27 13:46:23.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 261,
+ /**/
+
+--
+Have you heard about the new Barbie doll? It's called Divorce
+Barbie. It comes with all of Ken's stuff.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.262 b/source/ap/vim/patches/7.3.262
new file mode 100644
index 000000000..b3bd5cd81
--- /dev/null
+++ b/source/ap/vim/patches/7.3.262
@@ -0,0 +1,1356 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.262
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.262
+Problem: Photon code style doesn't match Vim style.
+Solution: Clean up some of it. (Elias Diem)
+Files: src/gui_photon.c
+
+
+*** ../vim-7.3.261/src/gui_photon.c 2011-01-17 20:08:03.000000000 +0100
+--- src/gui_photon.c 2011-07-27 14:07:02.000000000 +0200
+***************
+*** 32,40 ****
+ #endif
+
+ #define ARRAY_LENGTH(a) (sizeof(a) / sizeof(a[0]))
+! #define RGB(r,g,b) PgRGB(r,g,b)
+
+! #define EVENT_BUFFER_SIZE sizeof( PhEvent_t ) + 1000
+
+ /* Some defines for gui_mch_mousehide() */
+ #define MOUSE_HIDE TRUE
+--- 32,40 ----
+ #endif
+
+ #define ARRAY_LENGTH(a) (sizeof(a) / sizeof(a[0]))
+! #define RGB(r, g, b) PgRGB(r, g, b)
+
+! #define EVENT_BUFFER_SIZE sizeof(PhEvent_t) + 1000
+
+ /* Some defines for gui_mch_mousehide() */
+ #define MOUSE_HIDE TRUE
+***************
+*** 206,258 ****
+ static PtCallbackF_t gui_ph_handle_menu_unrealized;
+
+ #ifdef USE_PANEL_GROUP
+! static void gui_ph_get_panelgroup_margins( short*, short*, short*, short* );
+ #endif
+
+ #ifdef FEAT_TOOLBAR
+! static PhImage_t *gui_ph_toolbar_find_icon( vimmenu_T *menu );
+ #endif
+
+! static void gui_ph_draw_start( void );
+! static void gui_ph_draw_end( void );
+
+ /* Set the text for the balloon */
+! static PtWidget_t * gui_ph_show_tooltip( PtWidget_t *window,
+ PtWidget_t *widget,
+ int position,
+ char *text,
+ char *font,
+ PgColor_t fill_color,
+! PgColor_t text_color );
+
+ /****************************************************************************/
+
+! static PtWidget_t * gui_ph_show_tooltip( PtWidget_t *window,
+ PtWidget_t *widget,
+ int position,
+ char *text,
+ char *font,
+ PgColor_t fill_color,
+! PgColor_t text_color )
+ {
+ PtArg_t arg;
+ vimmenu_T *menu;
+ char_u *tooltip;
+
+! PtSetArg( &arg, Pt_ARG_POINTER, &menu, 0 );
+! PtGetResources( widget, 1, &arg );
+
+ /* Override the text and position */
+
+ tooltip = text;
+! if( menu != NULL )
+ {
+ int index = MENU_INDEX_TIP;
+! if( menu->strings[ index ] != NULL )
+ tooltip = menu->strings[ index ];
+ }
+
+! return( PtInflateBalloon(
+ window,
+ widget,
+ /* Don't put the balloon at the bottom,
+--- 206,258 ----
+ static PtCallbackF_t gui_ph_handle_menu_unrealized;
+
+ #ifdef USE_PANEL_GROUP
+! static void gui_ph_get_panelgroup_margins(short*, short*, short*, short*);
+ #endif
+
+ #ifdef FEAT_TOOLBAR
+! static PhImage_t *gui_ph_toolbar_find_icon(vimmenu_T *menu);
+ #endif
+
+! static void gui_ph_draw_start(void);
+! static void gui_ph_draw_end(void);
+
+ /* Set the text for the balloon */
+! static PtWidget_t * gui_ph_show_tooltip(PtWidget_t *window,
+ PtWidget_t *widget,
+ int position,
+ char *text,
+ char *font,
+ PgColor_t fill_color,
+! PgColor_t text_color);
+
+ /****************************************************************************/
+
+! static PtWidget_t * gui_ph_show_tooltip(PtWidget_t *window,
+ PtWidget_t *widget,
+ int position,
+ char *text,
+ char *font,
+ PgColor_t fill_color,
+! PgColor_t text_color)
+ {
+ PtArg_t arg;
+ vimmenu_T *menu;
+ char_u *tooltip;
+
+! PtSetArg(&arg, Pt_ARG_POINTER, &menu, 0);
+! PtGetResources(widget, 1, &arg);
+
+ /* Override the text and position */
+
+ tooltip = text;
+! if (menu != NULL)
+ {
+ int index = MENU_INDEX_TIP;
+! if (menu->strings[ index ] != NULL)
+ tooltip = menu->strings[ index ];
+ }
+
+! return PtInflateBalloon(
+ window,
+ widget,
+ /* Don't put the balloon at the bottom,
+***************
+*** 261,285 ****
+ tooltip,
+ font,
+ fill_color,
+! text_color ) );
+ }
+
+ static void
+! gui_ph_resize_container( void )
+ {
+ PhArea_t area;
+
+! PtWidgetArea( gui.vimWindow, &area );
+! PtWidgetPos ( gui.vimContainer, &area.pos );
+
+! PtSetResource( gui.vimContainer, Pt_ARG_AREA, &area, 0 );
+ }
+
+ static int
+ gui_ph_handle_menu_resize(
+ PtWidget_t *widget,
+ void *other,
+! PtCallbackInfo_t *info )
+ {
+ PtContainerCallback_t *sizes = info->cbdata;
+ PtWidget_t *container;
+--- 261,285 ----
+ tooltip,
+ font,
+ fill_color,
+! text_color);
+ }
+
+ static void
+! gui_ph_resize_container(void)
+ {
+ PhArea_t area;
+
+! PtWidgetArea(gui.vimWindow, &area);
+! PtWidgetPos (gui.vimContainer, &area.pos);
+
+! PtSetResource(gui.vimContainer, Pt_ARG_AREA, &area, 0);
+ }
+
+ static int
+ gui_ph_handle_menu_resize(
+ PtWidget_t *widget,
+ void *other,
+! PtCallbackInfo_t *info)
+ {
+ PtContainerCallback_t *sizes = info->cbdata;
+ PtWidget_t *container;
+***************
+*** 291,297 ****
+ /* Because vim treats the toolbar and menubar separately,
+ * and here they're lumped together into a PtToolbarGroup,
+ * we only need either menu_height or toolbar_height set at once */
+! if( gui.menu_is_active )
+ {
+ gui.menu_height = height;
+ gui.toolbar_height = 0;
+--- 291,297 ----
+ /* Because vim treats the toolbar and menubar separately,
+ * and here they're lumped together into a PtToolbarGroup,
+ * we only need either menu_height or toolbar_height set at once */
+! if (gui.menu_is_active)
+ {
+ gui.menu_height = height;
+ gui.toolbar_height = 0;
+***************
+*** 310,325 ****
+ container = gui.vimContainer;
+ #endif
+
+! PtSetResource( container, Pt_ARG_POS, &below_menu, 0 );
+
+ gui_ph_resize_container();
+
+ #ifdef USE_PANEL_GROUP
+ gui_ph_get_panelgroup_margins(
+ &pg_margin_top, &pg_margin_bottom,
+! &pg_margin_left, &pg_margin_right );
+ #endif
+! return( Pt_CONTINUE );
+ }
+
+ /*
+--- 310,325 ----
+ container = gui.vimContainer;
+ #endif
+
+! PtSetResource(container, Pt_ARG_POS, &below_menu, 0);
+
+ gui_ph_resize_container();
+
+ #ifdef USE_PANEL_GROUP
+ gui_ph_get_panelgroup_margins(
+ &pg_margin_top, &pg_margin_bottom,
+! &pg_margin_left, &pg_margin_right);
+ #endif
+! return Pt_CONTINUE;
+ }
+
+ /*
+***************
+*** 330,352 ****
+ gui_ph_handle_timer_cursor(
+ PtWidget_t *widget,
+ void *data,
+! PtCallbackInfo_t *info )
+ {
+! if( blink_state == BLINK_ON )
+ {
+ gui_undraw_cursor();
+ blink_state = BLINK_OFF;
+! PtSetResource( gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL,
+! blink_offtime, 0 );
+ }
+ else
+ {
+ gui_update_cursor(TRUE, FALSE);
+ blink_state = BLINK_ON;
+! PtSetResource( gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL,
+! blink_ontime, 0 );
+ }
+! return( Pt_CONTINUE );
+ }
+
+ static int
+--- 330,352 ----
+ gui_ph_handle_timer_cursor(
+ PtWidget_t *widget,
+ void *data,
+! PtCallbackInfo_t *info)
+ {
+! if (blink_state == BLINK_ON)
+ {
+ gui_undraw_cursor();
+ blink_state = BLINK_OFF;
+! PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL,
+! blink_offtime, 0);
+ }
+ else
+ {
+ gui_update_cursor(TRUE, FALSE);
+ blink_state = BLINK_ON;
+! PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL,
+! blink_ontime, 0);
+ }
+! return Pt_CONTINUE;
+ }
+
+ static int
+***************
+*** 354,360 ****
+ {
+ is_timeout = TRUE;
+
+! return( Pt_CONTINUE );
+ }
+
+ static int
+--- 354,360 ----
+ {
+ is_timeout = TRUE;
+
+! return Pt_CONTINUE;
+ }
+
+ static int
+***************
+*** 402,408 ****
+ break;
+ }
+
+! return( Pt_CONTINUE );
+ }
+
+ static int
+--- 402,408 ----
+ break;
+ }
+
+! return Pt_CONTINUE;
+ }
+
+ static int
+***************
+*** 426,438 ****
+
+ case Pt_SCROLL_SET:
+ /* FIXME: return straight away here? */
+! return( Pt_CONTINUE );
+ break;
+ }
+
+ gui_drag_scrollbar(sb, value, dragging);
+ }
+! return( Pt_CONTINUE );
+ }
+
+ static int
+--- 426,438 ----
+
+ case Pt_SCROLL_SET:
+ /* FIXME: return straight away here? */
+! return Pt_CONTINUE;
+ break;
+ }
+
+ gui_drag_scrollbar(sb, value, dragging);
+ }
+! return Pt_CONTINUE;
+ }
+
+ static int
+***************
+*** 453,459 ****
+ /* We're a good lil photon program, aren't we? yes we are, yeess wee arrr */
+ if( key->key_flags & Pk_KF_Compose )
+ {
+! return( Pt_CONTINUE );
+ }
+
+ if( (key->key_flags & Pk_KF_Cap_Valid) &&
+--- 453,459 ----
+ /* We're a good lil photon program, aren't we? yes we are, yeess wee arrr */
+ if( key->key_flags & Pk_KF_Compose )
+ {
+! return Pt_CONTINUE;
+ }
+
+ if( (key->key_flags & Pk_KF_Cap_Valid) &&
+***************
+*** 473,479 ****
+ gui_is_menu_shortcut( key->key_cap ) ) ) )
+ {
+ /* Fallthrough and let photon look for the hotkey */
+! return( Pt_CONTINUE );
+ }
+ #endif
+
+--- 473,479 ----
+ gui_is_menu_shortcut( key->key_cap ) ) ) )
+ {
+ /* Fallthrough and let photon look for the hotkey */
+! return Pt_CONTINUE;
+ }
+ #endif
+
+***************
+*** 544,550 ****
+ add_to_input_buf( string, len );
+ }
+
+! return( Pt_CONSUME );
+ }
+ len = 0;
+ #endif
+--- 544,550 ----
+ add_to_input_buf( string, len );
+ }
+
+! return Pt_CONSUME;
+ }
+ len = 0;
+ #endif
+***************
+*** 579,585 ****
+ }
+ else
+ {
+! return( Pt_CONTINUE );
+ }
+ }
+ else
+--- 579,585 ----
+ }
+ else
+ {
+! return Pt_CONTINUE;
+ }
+ }
+ else
+***************
+*** 622,632 ****
+ if( len > 0 )
+ {
+ add_to_input_buf( string, len );
+! return( Pt_CONSUME );
+ }
+ }
+
+! return( Pt_CONTINUE );
+ }
+
+ static int
+--- 622,632 ----
+ if( len > 0 )
+ {
+ add_to_input_buf( string, len );
+! return Pt_CONSUME;
+ }
+ }
+
+! return Pt_CONTINUE;
+ }
+
+ static int
+***************
+*** 652,658 ****
+ if( info->event->type == Ph_EV_PTR_MOTION_NOBUTTON )
+ {
+ gui_mouse_moved( mouse_x, mouse_y );
+! return( Pt_CONTINUE );
+ }
+
+ if( pointer->key_mods & Pk_KM_Shift )
+--- 652,658 ----
+ if( info->event->type == Ph_EV_PTR_MOTION_NOBUTTON )
+ {
+ gui_mouse_moved( mouse_x, mouse_y );
+! return Pt_CONTINUE;
+ }
+
+ if( pointer->key_mods & Pk_KM_Shift )
+***************
+*** 702,708 ****
+ gui_send_mouse_event( button , mouse_x, mouse_y, repeated_click, modifiers );
+ }
+
+! return( Pt_CONTINUE );
+ }
+
+ /* Handle a focus change of the PtRaw widget */
+--- 702,708 ----
+ gui_send_mouse_event( button , mouse_x, mouse_y, repeated_click, modifiers );
+ }
+
+! return Pt_CONTINUE;
+ }
+
+ /* Handle a focus change of the PtRaw widget */
+***************
+*** 721,727 ****
+ PtAddEventHandler( gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON,
+ gui_ph_handle_mouse, NULL );
+ }
+! return( Pt_CONTINUE );
+ }
+
+ static void
+--- 721,727 ----
+ PtAddEventHandler( gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON,
+ gui_ph_handle_mouse, NULL );
+ }
+! return Pt_CONTINUE;
+ }
+
+ static void
+***************
+*** 793,799 ****
+ PtRealizeWidget( menu->submenu_id );
+ }
+
+! return( Pt_CONTINUE );
+ }
+
+ /* This is used for pulldown/popup menus and also toolbar buttons */
+--- 793,799 ----
+ PtRealizeWidget( menu->submenu_id );
+ }
+
+! return Pt_CONTINUE;
+ }
+
+ /* This is used for pulldown/popup menus and also toolbar buttons */
+***************
+*** 805,811 ****
+ vimmenu_T *menu = (vimmenu_T *) data;
+ gui_menu_cb( menu );
+ }
+! return( Pt_CONTINUE );
+ }
+
+ /* Stop focus from disappearing into the menubar... */
+--- 805,811 ----
+ vimmenu_T *menu = (vimmenu_T *) data;
+ gui_menu_cb( menu );
+ }
+! return Pt_CONTINUE;
+ }
+
+ /* Stop focus from disappearing into the menubar... */
+***************
+*** 816,822 ****
+ PtCallbackInfo_t *info )
+ {
+ PtGiveFocus( gui.vimTextArea, NULL );
+! return( Pt_CONTINUE );
+ }
+
+ static int
+--- 816,822 ----
+ PtCallbackInfo_t *info )
+ {
+ PtGiveFocus( gui.vimTextArea, NULL );
+! return Pt_CONTINUE;
+ }
+
+ static int
+***************
+*** 826,832 ****
+ PtCallbackInfo_t *info )
+ {
+ gui_set_shellsize( FALSE, TRUE, RESIZE_BOTH );
+! return( Pt_CONTINUE );
+ }
+
+ /****************************************************************************/
+--- 826,832 ----
+ PtCallbackInfo_t *info )
+ {
+ gui_set_shellsize( FALSE, TRUE, RESIZE_BOTH );
+! return Pt_CONTINUE;
+ }
+
+ /****************************************************************************/
+***************
+*** 878,884 ****
+ ( STRCMP( items->dname, name ) != 0 ) )
+ items = items->next;
+ }
+! return( items );
+ }
+
+ static void
+--- 878,884 ----
+ ( STRCMP( items->dname, name ) != 0 ) )
+ items = items->next;
+ }
+! return items;
+ }
+
+ static void
+***************
+*** 927,933 ****
+ gui_menu_cb( menu );
+ }
+ }
+! return( Pt_CONTINUE );
+ }
+
+ static void
+--- 927,933 ----
+ gui_menu_cb( menu );
+ }
+ }
+! return Pt_CONTINUE;
+ }
+
+ static void
+***************
+*** 974,983 ****
+ mark++;
+
+ if( *mark == ')' )
+! return( TRUE);
+ }
+ }
+! return( FALSE );
+ }
+
+ static void
+--- 974,983 ----
+ mark++;
+
+ if( *mark == ')' )
+! return TRUE;
+ }
+ }
+! return FALSE;
+ }
+
+ static void
+***************
+*** 1057,1063 ****
+ gui_ph_pg_remove_buffer( menu->dname );
+ }
+
+! return( Pt_CONTINUE );
+ }
+ #endif
+
+--- 1057,1063 ----
+ gui_ph_pg_remove_buffer( menu->dname );
+ }
+
+! return Pt_CONTINUE;
+ }
+ #endif
+
+***************
+*** 1071,1077 ****
+ PtContainerHold( gui.vimContainer );
+ }
+
+! return( Pt_CONTINUE );
+ }
+
+ /****************************************************************************/
+--- 1071,1077 ----
+ PtContainerHold( gui.vimContainer );
+ }
+
+! return Pt_CONTINUE;
+ }
+
+ /****************************************************************************/
+***************
+*** 1126,1132 ****
+
+ gui.event_buffer = (PhEvent_t *) alloc( EVENT_BUFFER_SIZE );
+ if( gui.event_buffer == NULL )
+! return( FAIL );
+
+ /* Get a translation so we can convert from ISO Latin-1 to UTF */
+ charset_translate = PxTranslateSet( NULL, "latin1" );
+--- 1126,1132 ----
+
+ gui.event_buffer = (PhEvent_t *) alloc( EVENT_BUFFER_SIZE );
+ if( gui.event_buffer == NULL )
+! return FAIL;
+
+ /* Get a translation so we can convert from ISO Latin-1 to UTF */
+ charset_translate = PxTranslateSet( NULL, "latin1" );
+***************
+*** 1141,1147 ****
+ PtSetArg( &args[ n++ ], Pt_ARG_DIM, &window_size, 0 );
+ gui.vimWindow = PtCreateWidget( PtWindow, NULL, n, args );
+ if( gui.vimWindow == NULL )
+! return( FAIL );
+
+ PtAddCallback( gui.vimWindow, Pt_CB_WINDOW, gui_ph_handle_window_cb, NULL );
+ PtAddCallback( gui.vimWindow, Pt_CB_WINDOW_OPENING,
+--- 1141,1147 ----
+ PtSetArg( &args[ n++ ], Pt_ARG_DIM, &window_size, 0 );
+ gui.vimWindow = PtCreateWidget( PtWindow, NULL, n, args );
+ if( gui.vimWindow == NULL )
+! return FAIL;
+
+ PtAddCallback( gui.vimWindow, Pt_CB_WINDOW, gui_ph_handle_window_cb, NULL );
+ PtAddCallback( gui.vimWindow, Pt_CB_WINDOW_OPENING,
+***************
+*** 1158,1164 ****
+
+ gui.vimPanelGroup = PtCreateWidget( PtPanelGroup, gui.vimWindow, n, args );
+ if( gui.vimPanelGroup == NULL )
+! return( FAIL );
+
+ PtAddCallback( gui.vimPanelGroup, Pt_CB_PG_PANEL_SWITCHING,
+ gui_ph_handle_pg_change, NULL );
+--- 1158,1164 ----
+
+ gui.vimPanelGroup = PtCreateWidget( PtPanelGroup, gui.vimWindow, n, args );
+ if( gui.vimPanelGroup == NULL )
+! return FAIL;
+
+ PtAddCallback( gui.vimPanelGroup, Pt_CB_PG_PANEL_SWITCHING,
+ gui_ph_handle_pg_change, NULL );
+***************
+*** 1172,1178 ****
+
+ gui.vimContainer = PtCreateWidget( PtPane, gui.vimWindow, n, args );
+ if( gui.vimContainer == NULL )
+! return( FAIL );
+
+ PtAddCallback( gui.vimContainer, Pt_CB_RESIZE, gui_ph_pane_resize, NULL );
+ #endif
+--- 1172,1178 ----
+
+ gui.vimContainer = PtCreateWidget( PtPane, gui.vimWindow, n, args );
+ if( gui.vimContainer == NULL )
+! return FAIL;
+
+ PtAddCallback( gui.vimContainer, Pt_CB_RESIZE, gui_ph_pane_resize, NULL );
+ #endif
+***************
+*** 1195,1201 ****
+
+ gui.vimTextArea = PtCreateWidget( PtRaw, Pt_DFLT_PARENT, n, args );
+ if( gui.vimTextArea == NULL)
+! return( FAIL );
+
+ /* TODO: use PtAddEventHandlers instead? */
+ /* Not using Ph_EV_BUT_REPEAT because vim wouldn't use it anyway */
+--- 1195,1201 ----
+
+ gui.vimTextArea = PtCreateWidget( PtRaw, Pt_DFLT_PARENT, n, args );
+ if( gui.vimTextArea == NULL)
+! return FAIL;
+
+ /* TODO: use PtAddEventHandlers instead? */
+ /* Not using Ph_EV_BUT_REPEAT because vim wouldn't use it anyway */
+***************
+*** 1220,1230 ****
+ */
+ gui_ph_timer_cursor = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL );
+ if( gui_ph_timer_cursor == NULL )
+! return( FAIL );
+
+ gui_ph_timer_timeout = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL );
+ if( gui_ph_timer_timeout == NULL )
+! return( FAIL );
+
+ PtAddCallback( gui_ph_timer_cursor, Pt_CB_TIMER_ACTIVATE,
+ gui_ph_handle_timer_cursor, NULL);
+--- 1220,1230 ----
+ */
+ gui_ph_timer_cursor = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL );
+ if( gui_ph_timer_cursor == NULL )
+! return FAIL;
+
+ gui_ph_timer_timeout = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL );
+ if( gui_ph_timer_timeout == NULL )
+! return FAIL;
+
+ PtAddCallback( gui_ph_timer_cursor, Pt_CB_TIMER_ACTIVATE,
+ gui_ph_handle_timer_cursor, NULL);
+***************
+*** 1239,1245 ****
+ gui.vimToolBarGroup = PtCreateWidget( PtToolbarGroup, gui.vimWindow,
+ n, args );
+ if( gui.vimToolBarGroup == NULL )
+! return( FAIL );
+
+ PtAddCallback( gui.vimToolBarGroup, Pt_CB_RESIZE,
+ gui_ph_handle_menu_resize, NULL );
+--- 1239,1245 ----
+ gui.vimToolBarGroup = PtCreateWidget( PtToolbarGroup, gui.vimWindow,
+ n, args );
+ if( gui.vimToolBarGroup == NULL )
+! return FAIL;
+
+ PtAddCallback( gui.vimToolBarGroup, Pt_CB_RESIZE,
+ gui_ph_handle_menu_resize, NULL );
+***************
+*** 1254,1260 ****
+ }
+ gui.vimMenuBar = PtCreateWidget( PtMenuBar, gui.vimToolBarGroup, n, args );
+ if( gui.vimMenuBar == NULL )
+! return( FAIL );
+
+ # ifdef FEAT_TOOLBAR
+ n = 0;
+--- 1254,1260 ----
+ }
+ gui.vimMenuBar = PtCreateWidget( PtMenuBar, gui.vimToolBarGroup, n, args );
+ if( gui.vimMenuBar == NULL )
+! return FAIL;
+
+ # ifdef FEAT_TOOLBAR
+ n = 0;
+***************
+*** 1273,1279 ****
+
+ gui.vimToolBar = PtCreateWidget( PtToolbar, gui.vimToolBarGroup, n, args );
+ if( gui.vimToolBar == NULL )
+! return( FAIL );
+
+ /*
+ * Size for the toolbar is fetched in gui_mch_show_toolbar, after
+--- 1273,1279 ----
+
+ gui.vimToolBar = PtCreateWidget( PtToolbar, gui.vimToolBarGroup, n, args );
+ if( gui.vimToolBar == NULL )
+! return FAIL;
+
+ /*
+ * Size for the toolbar is fetched in gui_mch_show_toolbar, after
+***************
+*** 1284,1296 ****
+
+ #endif
+
+! return( OK );
+ }
+
+ int
+ gui_mch_init_check(void)
+ {
+! return( (is_photon_available == TRUE) ? OK : FAIL );
+ }
+
+ int
+--- 1284,1296 ----
+
+ #endif
+
+! return OK;
+ }
+
+ int
+ gui_mch_init_check(void)
+ {
+! return (is_photon_available == TRUE) ? OK : FAIL;
+ }
+
+ int
+***************
+*** 1310,1316 ****
+ if (gui_win_x != -1 && gui_win_y != -1)
+ gui_mch_set_winpos(gui_win_x, gui_win_y);
+
+! return( (PtRealizeWidget( gui.vimWindow ) == 0) ? OK : FAIL );
+ }
+
+ void
+--- 1310,1316 ----
+ if (gui_win_x != -1 && gui_win_y != -1)
+ gui_mch_set_winpos(gui_win_x, gui_win_y);
+
+! return (PtRealizeWidget( gui.vimWindow ) == 0) ? OK : FAIL;
+ }
+
+ void
+***************
+*** 1336,1342 ****
+ exit_gui_mch_update( void *data )
+ {
+ *(int *)data = FALSE;
+! return( Pt_END );
+ }
+
+ void
+--- 1336,1342 ----
+ exit_gui_mch_update( void *data )
+ {
+ *(int *)data = FALSE;
+! return Pt_END;
+ }
+
+ void
+***************
+*** 1365,1374 ****
+ if( input_available() )
+ {
+ PtSetResource( gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, 0, 0 );
+! return( OK );
+ }
+ else if( is_timeout == TRUE )
+! return( FAIL );
+ }
+ }
+
+--- 1365,1374 ----
+ if( input_available() )
+ {
+ PtSetResource( gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, 0, 0 );
+! return OK;
+ }
+ else if( is_timeout == TRUE )
+! return FAIL;
+ }
+ }
+
+***************
+*** 1446,1454 ****
+ vim_free( default_path );
+
+ if( file.ret == Pt_FSDIALOG_BTN1 )
+! return( vim_strsave( file.path ) );
+ }
+! return( NULL );
+ }
+ #endif
+
+--- 1446,1454 ----
+ vim_free( default_path );
+
+ if( file.ret == Pt_FSDIALOG_BTN1 )
+! return vim_strsave(file.path);
+ }
+! return NULL;
+ }
+ #endif
+
+***************
+*** 1470,1476 ****
+
+ PtModalUnblock( modal_ctrl, (void *) button );
+
+! return( Pt_TRUE );
+ }
+
+ static int
+--- 1470,1476 ----
+
+ PtModalUnblock( modal_ctrl, (void *) button );
+
+! return Pt_TRUE;
+ }
+
+ static int
+***************
+*** 1478,1484 ****
+ {
+ if( info->reason_subtype == Pt_EDIT_ACTIVATE )
+ gui_ph_dialog_close( 1, data );
+! return( Pt_CONTINUE );
+ }
+
+ static int
+--- 1478,1484 ----
+ {
+ if( info->reason_subtype == Pt_EDIT_ACTIVATE )
+ gui_ph_dialog_close( 1, data );
+! return Pt_CONTINUE;
+ }
+
+ static int
+***************
+*** 1490,1498 ****
+ if( ( key->key_flags & Pk_KF_Cap_Valid ) && ( key->key_cap == Pk_Escape ) )
+ {
+ gui_ph_dialog_close( 0, data );
+! return( Pt_CONSUME );
+ }
+! return( Pt_PROCESS );
+ }
+
+ int
+--- 1490,1498 ----
+ if( ( key->key_flags & Pk_KF_Cap_Valid ) && ( key->key_cap == Pk_Escape ) )
+ {
+ gui_ph_dialog_close( 0, data );
+! return Pt_CONSUME;
+ }
+! return Pt_PROCESS;
+ }
+
+ int
+***************
+*** 1519,1525 ****
+ button_count = len = i = 0;
+
+ if( buttons == NULL || *buttons == NUL )
+! return( -1 );
+
+ /* There is one less separator than buttons, so bump up the button count */
+ button_count = 1;
+--- 1519,1525 ----
+ button_count = len = i = 0;
+
+ if( buttons == NULL || *buttons == NUL )
+! return -1;
+
+ /* There is one less separator than buttons, so bump up the button count */
+ button_count = 1;
+***************
+*** 1637,1643 ****
+ vim_free( button_array );
+ vim_free( buttons_copy );
+
+! return( dialog_result );
+ }
+ #endif
+ /****************************************************************************/
+--- 1637,1643 ----
+ vim_free( button_array );
+ vim_free( buttons_copy );
+
+! return dialog_result;
+ }
+ #endif
+ /****************************************************************************/
+***************
+*** 1653,1659 ****
+ *x = pos->x;
+ *y = pos->y;
+
+! return( OK );
+ }
+
+ void
+--- 1653,1659 ----
+ *x = pos->x;
+ *y = pos->y;
+
+! return OK;
+ }
+
+ void
+***************
+*** 1975,1985 ****
+ hex_digit(int c)
+ {
+ if (VIM_ISDIGIT(c))
+! return( c - '0' );
+ c = TOLOWER_ASC(c);
+ if (c >= 'a' && c <= 'f')
+! return( c - 'a' + 10 );
+! return( -1000 );
+ }
+
+
+--- 1975,1985 ----
+ hex_digit(int c)
+ {
+ if (VIM_ISDIGIT(c))
+! return c - '0';
+ c = TOLOWER_ASC(c);
+ if (c >= 'a' && c <= 'f')
+! return c - 'a' + 10;
+! return -1000;
+ }
+
+
+***************
+*** 2065,2077 ****
+ b = hex_digit( name[5] ) * 16 + hex_digit( name[6] );
+ if( r < 0 || g < 0 || b < 0 )
+ return INVALCOLOR;
+! return( RGB( r, g, b ) );
+ }
+
+ for( i = 0; i < ARRAY_LENGTH( table ); i++ )
+ {
+ if( STRICMP( name, table[i].name ) == 0 )
+! return( table[i].colour );
+ }
+
+ /*
+--- 2065,2077 ----
+ b = hex_digit( name[5] ) * 16 + hex_digit( name[6] );
+ if( r < 0 || g < 0 || b < 0 )
+ return INVALCOLOR;
+! return RGB(r, g, b);
+ }
+
+ for( i = 0; i < ARRAY_LENGTH( table ); i++ )
+ {
+ if( STRICMP( name, table[i].name ) == 0 )
+! return table[i].colour;
+ }
+
+ /*
+***************
+*** 2115,2121 ****
+ if (STRICMP(color, name) == 0)
+ {
+ fclose(fd);
+! return( (guicolor_T) RGB(r,g,b) );
+ }
+ }
+
+--- 2115,2121 ----
+ if (STRICMP(color, name) == 0)
+ {
+ fclose(fd);
+! return (guicolor_T)RGB(r, g, b);
+ }
+ }
+
+***************
+*** 2451,2458 ****
+ for (i = 0; special_keys[i].key_sym != 0; i++)
+ if (name[0] == special_keys[i].vim_code0 &&
+ name[1] == special_keys[i].vim_code1)
+! return( OK );
+! return( FAIL );
+ }
+
+ /****************************************************************************/
+--- 2451,2458 ----
+ for (i = 0; special_keys[i].key_sym != 0; i++)
+ if (name[0] == special_keys[i].vim_code0 &&
+ name[1] == special_keys[i].vim_code1)
+! return OK;
+! return FAIL;
+ }
+
+ /****************************************************************************/
+***************
+*** 2512,2518 ****
+
+ temp_phi = &external_icon;
+ }
+! return( temp_phi );
+ }
+
+ /*
+--- 2512,2518 ----
+
+ temp_phi = &external_icon;
+ }
+! return temp_phi;
+ }
+
+ /*
+***************
+*** 2541,2556 ****
+ icon = gui_ph_toolbar_load_icon( full_pathname );
+
+ if( icon != NULL )
+! return( icon );
+ }
+
+ if( menu->iconidx >= 0 &&
+ ( menu->iconidx < ARRAY_LENGTH( gui_ph_toolbar_images ) ) )
+ {
+! return( gui_ph_toolbar_images[ menu->iconidx ] );
+ }
+
+! return( NULL );
+ }
+ #endif
+
+--- 2541,2556 ----
+ icon = gui_ph_toolbar_load_icon( full_pathname );
+
+ if( icon != NULL )
+! return icon;
+ }
+
+ if( menu->iconidx >= 0 &&
+ ( menu->iconidx < ARRAY_LENGTH( gui_ph_toolbar_images ) ) )
+ {
+! return gui_ph_toolbar_images[menu->iconidx];
+ }
+
+! return NULL;
+ }
+ #endif
+
+***************
+*** 2895,2905 ****
+ * at least has the bits we're checking for */
+ if( font_size == info.size &&
+ style == (info.style & style) )
+! return( (GuiFont) font_tag );
+ }
+ vim_free( font_tag );
+ }
+! return( NULL );
+ }
+
+ /*
+--- 2895,2905 ----
+ * at least has the bits we're checking for */
+ if( font_size == info.size &&
+ style == (info.style & style) )
+! return (GuiFont)font_tag;
+ }
+ vim_free( font_tag );
+ }
+! return NULL;
+ }
+
+ /*
+***************
+*** 2957,2965 ****
+ }
+ }
+ }
+! return( TRUE );
+ }
+! return( FALSE );
+ }
+
+ int
+--- 2957,2965 ----
+ }
+ }
+ }
+! return TRUE;
+ }
+! return FALSE;
+ }
+
+ int
+***************
+*** 2985,2991 ****
+ "pcterm12", -1, PHFONT_FIXED, NULL );
+
+ if( font_tag == NULL )
+! return( FAIL );
+
+ gui_mch_free_font( gui.norm_font );
+ gui.norm_font = font_tag;
+--- 2985,2991 ----
+ "pcterm12", -1, PHFONT_FIXED, NULL );
+
+ if( font_tag == NULL )
+! return FAIL;
+
+ gui_mch_free_font( gui.norm_font );
+ gui.norm_font = font_tag;
+***************
+*** 2997,3009 ****
+ {
+ if( gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags,
+ &font_size ) == FALSE )
+! return( FAIL );
+
+ font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 );
+ if( font_tag == NULL )
+ {
+ vim_free( font_name );
+! return( FAIL );
+ }
+
+ gui_mch_free_font( gui.norm_font );
+--- 2997,3009 ----
+ {
+ if( gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags,
+ &font_size ) == FALSE )
+! return FAIL;
+
+ font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 );
+ if( font_tag == NULL )
+ {
+ vim_free( font_name );
+! return FAIL;
+ }
+
+ gui_mch_free_font( gui.norm_font );
+***************
+*** 3026,3032 ****
+ gui.char_ascent = - extent.ul.y;
+
+ vim_free( font_name );
+! return( OK );
+ }
+
+ /*
+--- 3026,3032 ----
+ gui.char_ascent = - extent.ul.y;
+
+ vim_free( font_name );
+! return OK;
+ }
+
+ /*
+***************
+*** 3042,3048 ****
+ gui.char_height = - info.ascender + info.descender + p_linespace;
+ gui.char_ascent = - info.ascender + p_linespace / 2;
+
+! return( OK );
+ }
+
+ GuiFont
+--- 3042,3048 ----
+ gui.char_height = - info.ascender + info.descender + p_linespace;
+ gui.char_ascent = - info.ascender + p_linespace / 2;
+
+! return OK;
+ }
+
+ GuiFont
+***************
+*** 3060,3072 ****
+ vim_free( font_name );
+
+ if( font_tag != NULL )
+! return( (GuiFont) font_tag );
+ }
+
+ if( report_error )
+ EMSG2(e_font, vim_font_name );
+
+! return( FAIL );
+ }
+
+ #if defined(FEAT_EVAL) || defined(PROTO)
+--- 3060,3072 ----
+ vim_free( font_name );
+
+ if( font_tag != NULL )
+! return (GuiFont)font_tag;
+ }
+
+ if( report_error )
+ EMSG2(e_font, vim_font_name );
+
+! return FAIL;
+ }
+
+ #if defined(FEAT_EVAL) || defined(PROTO)
+*** ../vim-7.3.261/src/version.c 2011-07-27 13:59:12.000000000 +0200
+--- src/version.c 2011-07-27 14:08:08.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 262,
+ /**/
+
+--
+You know you use Vim too much when you have this alias in your
+~/.bashrc file: alias :e=/bin/vim (Eljay Love-Jensen)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.263 b/source/ap/vim/patches/7.3.263
new file mode 100644
index 000000000..98850988c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.263
@@ -0,0 +1,162 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.263
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.263
+Problem: Perl and Tcl have a few code style problems.
+Solution: Clean it up. (Elias Diem)
+Files: src/if_perl.xs, src/if_tcl.c
+
+
+*** ../vim-7.3.262/src/if_perl.xs 2010-10-23 14:02:48.000000000 +0200
+--- src/if_perl.xs 2011-07-27 14:11:03.000000000 +0200
+***************
+*** 755,761 ****
+ #ifdef HAVE_SANDBOX
+ if (sandbox)
+ {
+! safe = perl_get_sv( "VIM::safe", FALSE );
+ # ifndef MAKE_TEST /* avoid a warning for unreachable code */
+ if (safe == NULL || !SvTRUE(safe))
+ EMSG(_("E299: Perl evaluation forbidden in sandbox without the Safe module"));
+--- 755,761 ----
+ #ifdef HAVE_SANDBOX
+ if (sandbox)
+ {
+! safe = perl_get_sv("VIM::safe", FALSE);
+ # ifndef MAKE_TEST /* avoid a warning for unreachable code */
+ if (safe == NULL || !SvTRUE(safe))
+ EMSG(_("E299: Perl evaluation forbidden in sandbox without the Safe module"));
+***************
+*** 1108,1114 ****
+ VIWIN win
+
+ PPCODE:
+! if(items == 1)
+ {
+ EXTEND(sp, 2);
+ if (!win_valid(win))
+--- 1108,1114 ----
+ VIWIN win
+
+ PPCODE:
+! if (items == 1)
+ {
+ EXTEND(sp, 2);
+ if (!win_valid(win))
+***************
+*** 1116,1122 ****
+ PUSHs(sv_2mortal(newSViv(win->w_cursor.lnum)));
+ PUSHs(sv_2mortal(newSViv(win->w_cursor.col)));
+ }
+! else if(items == 3)
+ {
+ int lnum, col;
+
+--- 1116,1122 ----
+ PUSHs(sv_2mortal(newSViv(win->w_cursor.lnum)));
+ PUSHs(sv_2mortal(newSViv(win->w_cursor.col)));
+ }
+! else if (items == 3)
+ {
+ int lnum, col;
+
+***************
+*** 1249,1257 ****
+ {
+ lnum = SvIV(ST(1));
+ count = 1 + SvIV(ST(2)) - lnum;
+! if(count == 0)
+ count = 1;
+! if(count < 0)
+ {
+ lnum -= count;
+ count = -count;
+--- 1249,1257 ----
+ {
+ lnum = SvIV(ST(1));
+ count = 1 + SvIV(ST(2)) - lnum;
+! if (count == 0)
+ count = 1;
+! if (count < 0)
+ {
+ lnum -= count;
+ count = -count;
+*** ../vim-7.3.262/src/if_tcl.c 2010-12-17 20:23:56.000000000 +0100
+--- src/if_tcl.c 2011-07-27 14:11:03.000000000 +0200
+***************
+*** 1884,1897 ****
+ {
+ int newerr = OK;
+
+! if (error == TCL_EXIT )
+ {
+ int retval;
+ char buf[50];
+ Tcl_Obj *robj;
+
+ robj = Tcl_GetObjResult(tclinfo.interp);
+! if( Tcl_GetIntFromObj(tclinfo.interp, robj, &retval) != TCL_OK )
+ {
+ EMSG(_("E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org"));
+ newerr = FAIL;
+--- 1884,1897 ----
+ {
+ int newerr = OK;
+
+! if (error == TCL_EXIT)
+ {
+ int retval;
+ char buf[50];
+ Tcl_Obj *robj;
+
+ robj = Tcl_GetObjResult(tclinfo.interp);
+! if (Tcl_GetIntFromObj(tclinfo.interp, robj, &retval) != TCL_OK)
+ {
+ EMSG(_("E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org"));
+ newerr = FAIL;
+***************
+*** 1900,1906 ****
+ {
+ sprintf(buf, _("E572: exit code %d"), retval);
+ tclerrmsg(buf);
+! if (retval == 0 )
+ {
+ did_emsg = 0;
+ newerr = OK;
+--- 1900,1906 ----
+ {
+ sprintf(buf, _("E572: exit code %d"), retval);
+ tclerrmsg(buf);
+! if (retval == 0)
+ {
+ did_emsg = 0;
+ newerr = OK;
+*** ../vim-7.3.262/src/version.c 2011-07-27 14:09:05.000000000 +0200
+--- src/version.c 2011-07-27 14:12:05.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 263,
+ /**/
+
+--
+DEAD PERSON: I don't want to go in the cart!
+CUSTOMER: Oh, don't be such a baby.
+MORTICIAN: I can't take him...
+DEAD PERSON: I feel fine!
+CUSTOMER: Oh, do us a favor...
+MORTICIAN: I can't.
+ The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.264 b/source/ap/vim/patches/7.3.264
new file mode 100644
index 000000000..71ec851f3
--- /dev/null
+++ b/source/ap/vim/patches/7.3.264
@@ -0,0 +1,159 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.264
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.264
+Problem: When the current directory name contains wildcard characters, such
+ as "foo[with]bar", the tags file can't be found. (Jeremy
+ Erickson)
+Solution: When searching for matching files also match without expanding
+ wildcards. This is a bit of a hack.
+Files: src/vim.h, src/misc1.c, src/misc2.c
+
+
+*** ../vim-7.3.263/src/vim.h 2011-07-20 15:04:52.000000000 +0200
+--- src/vim.h 2011-07-27 16:21:38.000000000 +0200
+***************
+*** 816,821 ****
+--- 816,822 ----
+ #define EW_PATH 0x80 /* search in 'path' too */
+ #define EW_ICASE 0x100 /* ignore case */
+ #define EW_NOERROR 0x200 /* no error for bad regexp */
++ #define EW_NOTWILD 0x400 /* add match with literal name if exists */
+ /* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND
+ * is used when executing commands and EW_SILENT for interactive expanding. */
+
+*** ../vim-7.3.263/src/misc1.c 2011-07-20 15:04:52.000000000 +0200
+--- src/misc1.c 2011-07-27 17:24:39.000000000 +0200
+***************
+*** 9119,9125 ****
+ * all entries found with "matchname". */
+ if ((p[0] != '.' || starts_with_dot)
+ && (matchname == NULL
+! || vim_regexec(&regmatch, p, (colnr_T)0)))
+ {
+ #ifdef WIN3264
+ STRCPY(s, p);
+--- 9119,9127 ----
+ * all entries found with "matchname". */
+ if ((p[0] != '.' || starts_with_dot)
+ && (matchname == NULL
+! || vim_regexec(&regmatch, p, (colnr_T)0)
+! || ((flags & EW_NOTWILD)
+! && fnamencmp(path + (s - buf), p, e - s) == 0)))
+ {
+ #ifdef WIN3264
+ STRCPY(s, p);
+***************
+*** 9323,9329 ****
+ e = p;
+ *e = NUL;
+
+! /* now we have one wildcard component between "s" and "e" */
+ /* Remove backslashes between "wildoff" and the start of the wildcard
+ * component. */
+ for (p = buf + wildoff; p < s; ++p)
+--- 9325,9331 ----
+ e = p;
+ *e = NUL;
+
+! /* Now we have one wildcard component between "s" and "e". */
+ /* Remove backslashes between "wildoff" and the start of the wildcard
+ * component. */
+ for (p = buf + wildoff; p < s; ++p)
+***************
+*** 9390,9396 ****
+ if (dp == NULL)
+ break;
+ if ((dp->d_name[0] != '.' || starts_with_dot)
+! && vim_regexec(&regmatch, (char_u *)dp->d_name, (colnr_T)0))
+ {
+ STRCPY(s, dp->d_name);
+ len = STRLEN(buf);
+--- 9392,9400 ----
+ if (dp == NULL)
+ break;
+ if ((dp->d_name[0] != '.' || starts_with_dot)
+! && (vim_regexec(&regmatch, (char_u *)dp->d_name, (colnr_T)0)
+! || ((flags & EW_NOTWILD)
+! && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0)))
+ {
+ STRCPY(s, dp->d_name);
+ len = STRLEN(buf);
+*** ../vim-7.3.263/src/misc2.c 2011-07-07 17:15:29.000000000 +0200
+--- src/misc2.c 2011-07-27 17:21:10.000000000 +0200
+***************
+*** 4653,4661 ****
+ {
+ if (r_ptr[0] == '\\' && r_ptr[1] == ';')
+ {
+! /* overwrite the escape char,
+! * use STRLEN(r_ptr) to move the trailing '\0'
+! */
+ STRMOVE(r_ptr, r_ptr + 1);
+ r_ptr++;
+ }
+--- 4653,4660 ----
+ {
+ if (r_ptr[0] == '\\' && r_ptr[1] == ';')
+ {
+! /* Overwrite the escape char,
+! * use STRLEN(r_ptr) to move the trailing '\0'. */
+ STRMOVE(r_ptr, r_ptr + 1);
+ r_ptr++;
+ }
+***************
+*** 4914,4923 ****
+ stackp->ffs_filearray_size = 0;
+ }
+ else
+ expand_wildcards((dirptrs[1] == NULL) ? 1 : 2, dirptrs,
+ &stackp->ffs_filearray_size,
+ &stackp->ffs_filearray,
+! EW_DIR|EW_ADDSLASH|EW_SILENT);
+
+ stackp->ffs_filearray_cur = 0;
+ stackp->ffs_stage = 0;
+--- 4913,4925 ----
+ stackp->ffs_filearray_size = 0;
+ }
+ else
++ /* Add EW_NOTWILD because the expanded path may contain
++ * wildcard characters that are to be taken literally.
++ * This is a bit of a hack. */
+ expand_wildcards((dirptrs[1] == NULL) ? 1 : 2, dirptrs,
+ &stackp->ffs_filearray_size,
+ &stackp->ffs_filearray,
+! EW_DIR|EW_ADDSLASH|EW_SILENT|EW_NOTWILD);
+
+ stackp->ffs_filearray_cur = 0;
+ stackp->ffs_stage = 0;
+*** ../vim-7.3.263/src/version.c 2011-07-27 14:15:41.000000000 +0200
+--- src/version.c 2011-07-27 17:25:44.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 264,
+ /**/
+
+--
+CUSTOMER: You're not fooling anyone y'know. Look, isn't there something
+ you can do?
+DEAD PERSON: I feel happy... I feel happy.
+ [whop]
+CUSTOMER: Ah, thanks very much.
+MORTICIAN: Not at all. See you on Thursday.
+CUSTOMER: Right.
+ The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.265 b/source/ap/vim/patches/7.3.265
new file mode 100644
index 000000000..98cb1b4e0
--- /dev/null
+++ b/source/ap/vim/patches/7.3.265
@@ -0,0 +1,145 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.265
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.265
+Problem: When storing a pattern in search history there is no proper check
+ for the separator character.
+Solution: Pass the separator character to in_history(). (Muraoka Taro)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.3.264/src/ex_getln.c 2011-07-07 16:44:33.000000000 +0200
+--- src/ex_getln.c 2011-07-27 17:50:35.000000000 +0200
+***************
+*** 67,73 ****
+
+ static int hist_char2type __ARGS((int c));
+
+! static int in_history __ARGS((int, char_u *, int));
+ # ifdef FEAT_EVAL
+ static int calc_hist_idx __ARGS((int histype, int num));
+ # endif
+--- 67,73 ----
+
+ static int hist_char2type __ARGS((int c));
+
+! static int in_history __ARGS((int, char_u *, int, int));
+ # ifdef FEAT_EVAL
+ static int calc_hist_idx __ARGS((int histype, int num));
+ # endif
+***************
+*** 5289,5301 ****
+ * If 'move_to_front' is TRUE, matching entry is moved to end of history.
+ */
+ static int
+! in_history(type, str, move_to_front)
+ int type;
+ char_u *str;
+ int move_to_front; /* Move the entry to the front if it exists */
+ {
+ int i;
+ int last_i = -1;
+
+ if (hisidx[type] < 0)
+ return FALSE;
+--- 5289,5303 ----
+ * If 'move_to_front' is TRUE, matching entry is moved to end of history.
+ */
+ static int
+! in_history(type, str, move_to_front, sep)
+ int type;
+ char_u *str;
+ int move_to_front; /* Move the entry to the front if it exists */
++ int sep;
+ {
+ int i;
+ int last_i = -1;
++ char_u *p;
+
+ if (hisidx[type] < 0)
+ return FALSE;
+***************
+*** 5304,5310 ****
+ {
+ if (history[type][i].hisstr == NULL)
+ return FALSE;
+! if (STRCMP(str, history[type][i].hisstr) == 0)
+ {
+ if (!move_to_front)
+ return TRUE;
+--- 5306,5317 ----
+ {
+ if (history[type][i].hisstr == NULL)
+ return FALSE;
+!
+! /* For search history, check that the separator character matches as
+! * well. */
+! p = history[type][i].hisstr;
+! if (STRCMP(str, p) == 0
+! && (type != HIST_SEARCH || sep == p[STRLEN(p) + 1]))
+ {
+ if (!move_to_front)
+ return TRUE;
+***************
+*** 5398,5404 ****
+ }
+ last_maptick = -1;
+ }
+! if (!in_history(histype, new_entry, TRUE))
+ {
+ if (++hisidx[histype] == hislen)
+ hisidx[histype] = 0;
+--- 5405,5411 ----
+ }
+ last_maptick = -1;
+ }
+! if (!in_history(histype, new_entry, TRUE, sep))
+ {
+ if (++hisidx[histype] == hislen)
+ hisidx[histype] = 0;
+***************
+*** 5977,5983 ****
+ if (val != NULL && *val != NUL)
+ {
+ if (!in_history(type, val + (type == HIST_SEARCH),
+! viminfo_add_at_front))
+ {
+ /* Need to re-allocate to append the separator byte. */
+ len = STRLEN(val);
+--- 5984,5990 ----
+ if (val != NULL && *val != NUL)
+ {
+ if (!in_history(type, val + (type == HIST_SEARCH),
+! viminfo_add_at_front, *val))
+ {
+ /* Need to re-allocate to append the separator byte. */
+ len = STRLEN(val);
+*** ../vim-7.3.264/src/version.c 2011-07-27 17:31:42.000000000 +0200
+--- src/version.c 2011-07-27 17:58:22.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 265,
+ /**/
+
+--
+ [clop clop]
+MORTICIAN: Who's that then?
+CUSTOMER: I don't know.
+MORTICIAN: Must be a king.
+CUSTOMER: Why?
+MORTICIAN: He hasn't got shit all over him.
+ The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.266 b/source/ap/vim/patches/7.3.266
new file mode 100644
index 000000000..373280ee4
--- /dev/null
+++ b/source/ap/vim/patches/7.3.266
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.266
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.266
+Problem: In Gvim with iBus typing space in Insert mode doesn't work.
+Solution: Clear xim_expected_char after checking it.
+Files: src/mbyte.c
+
+
+*** ../vim-7.3.265/src/mbyte.c 2011-07-15 21:16:54.000000000 +0200
+--- src/mbyte.c 2011-07-27 18:21:13.000000000 +0200
+***************
+*** 5170,5175 ****
+--- 5170,5179 ----
+ /* We had a keypad key, and XIM tried to thieve it */
+ return FALSE;
+
++ /* This is supposed to fix a problem with iBus, that space
++ * characters don't work in input mode. */
++ xim_expected_char = NUL;
++
+ /* Normal processing */
+ return imresult;
+ }
+*** ../vim-7.3.265/src/version.c 2011-07-27 17:58:42.000000000 +0200
+--- src/version.c 2011-07-27 18:23:00.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 266,
+ /**/
+
+--
+ [clop clop]
+ARTHUR: Old woman!
+DENNIS: Man!
+ARTHUR: Man, sorry. What knight lives in that castle over there?
+DENNIS: I'm thirty seven.
+ARTHUR: What?
+DENNIS: I'm thirty seven -- I'm not old!
+ The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.267 b/source/ap/vim/patches/7.3.267
new file mode 100644
index 000000000..d986e5036
--- /dev/null
+++ b/source/ap/vim/patches/7.3.267
@@ -0,0 +1,67 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.267
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.267
+Problem: Ruby on Mac OS X 10.7 may crash.
+Solution: Avoid alloc(0). (Bjorn Winckler)
+Files: src/if_ruby.c
+
+
+*** ../vim-7.3.266/src/if_ruby.c 2011-01-17 19:53:20.000000000 +0100
+--- src/if_ruby.c 2011-08-04 18:57:43.000000000 +0200
+***************
+*** 761,771 ****
+ char *buff, *p;
+
+ str = rb_obj_as_string(str);
+! buff = ALLOCA_N(char, RSTRING_LEN(str));
+! strcpy(buff, RSTRING_PTR(str));
+! p = strchr(buff, '\n');
+! if (p) *p = '\0';
+! MSG(buff);
+ return Qnil;
+ }
+
+--- 761,779 ----
+ char *buff, *p;
+
+ str = rb_obj_as_string(str);
+! if (RSTRING_LEN(str) > 0)
+! {
+! /* Only do this when the string isn't empty, alloc(0) causes trouble. */
+! buff = ALLOCA_N(char, RSTRING_LEN(str));
+! strcpy(buff, RSTRING_PTR(str));
+! p = strchr(buff, '\n');
+! if (p) *p = '\0';
+! MSG(buff);
+! }
+! else
+! {
+! MSG("");
+! }
+ return Qnil;
+ }
+
+*** ../vim-7.3.266/src/version.c 2011-07-27 18:25:40.000000000 +0200
+--- src/version.c 2011-08-04 19:07:45.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 267,
+ /**/
+
+--
+There are 10 kinds of people: Those who understand binary and those who don't.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.268 b/source/ap/vim/patches/7.3.268
new file mode 100644
index 000000000..aa848770c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.268
@@ -0,0 +1,69 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.268
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.268
+Problem: Vim freezes when executing an external command with zsh.
+Solution: Use O_NOCTTY both in the master and slave. (Bjorn Winckler)
+Files: src/os_unix.c
+
+
+*** ../vim-7.3.267/src/os_unix.c 2011-07-07 16:20:45.000000000 +0200
+--- src/os_unix.c 2011-08-04 19:06:14.000000000 +0200
+***************
+*** 3889,3899 ****
+ if (p_guipty && !(options & (SHELL_READ|SHELL_WRITE)))
+ {
+ pty_master_fd = OpenPTY(&tty_name); /* open pty */
+! if (pty_master_fd >= 0 && ((pty_slave_fd =
+! open(tty_name, O_RDWR | O_EXTRA, 0)) < 0))
+ {
+! close(pty_master_fd);
+! pty_master_fd = -1;
+ }
+ }
+ /*
+--- 3889,3909 ----
+ if (p_guipty && !(options & (SHELL_READ|SHELL_WRITE)))
+ {
+ pty_master_fd = OpenPTY(&tty_name); /* open pty */
+! if (pty_master_fd >= 0)
+ {
+! /* Leaving out O_NOCTTY may lead to waitpid() always returning
+! * 0 on Mac OS X 10.7 thereby causing freezes. Let's assume
+! * adding O_NOCTTY always works when defined. */
+! #ifdef O_NOCTTY
+! pty_slave_fd = open(tty_name, O_RDWR | O_NOCTTY | O_EXTRA, 0);
+! #else
+! pty_slave_fd = open(tty_name, O_RDWR | O_EXTRA, 0);
+! #endif
+! if (pty_slave_fd < 0)
+! {
+! close(pty_master_fd);
+! pty_master_fd = -1;
+! }
+ }
+ }
+ /*
+*** ../vim-7.3.267/src/version.c 2011-08-04 19:34:55.000000000 +0200
+--- src/version.c 2011-08-04 19:36:00.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 268,
+ /**/
+
+--
+Mental Floss prevents moral decay!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.269 b/source/ap/vim/patches/7.3.269
new file mode 100644
index 000000000..a0bfc473c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.269
@@ -0,0 +1,112 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.269
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.269
+Problem: 'shellcmdflag' only works with one flag.
+Solution: Split into multiple arguments. (Gary Johnson)
+Files: src/os_unix.c
+
+
+*** ../vim-7.3.268/src/os_unix.c 2011-08-04 19:36:47.000000000 +0200
+--- src/os_unix.c 2011-08-04 20:27:13.000000000 +0200
+***************
+*** 3795,3802 ****
+--- 3795,3804 ----
+ int retval = -1;
+ char **argv = NULL;
+ int argc;
++ char_u *p_shcf_copy = NULL;
+ int i;
+ char_u *p;
++ char_u *s;
+ int inquote;
+ int pty_master_fd = -1; /* for pty's */
+ # ifdef FEAT_GUI
+***************
+*** 3855,3860 ****
+--- 3857,3875 ----
+ }
+ if (argv == NULL)
+ {
++ /*
++ * Account for possible multiple args in p_shcf.
++ */
++ p = p_shcf;
++ for (;;)
++ {
++ p = skiptowhite(p);
++ if (*p == NUL)
++ break;
++ ++argc;
++ p = skipwhite(p);
++ }
++
+ argv = (char **)alloc((unsigned)((argc + 4) * sizeof(char *)));
+ if (argv == NULL) /* out of memory */
+ goto error;
+***************
+*** 3864,3870 ****
+ {
+ if (extra_shell_arg != NULL)
+ argv[argc++] = (char *)extra_shell_arg;
+! argv[argc++] = (char *)p_shcf;
+ argv[argc++] = (char *)cmd;
+ }
+ argv[argc] = NULL;
+--- 3879,3901 ----
+ {
+ if (extra_shell_arg != NULL)
+ argv[argc++] = (char *)extra_shell_arg;
+!
+! /* Break 'shellcmdflag' into white separated parts. This doesn't
+! * handle quoted strings, they are very unlikely to appear. */
+! p_shcf_copy = alloc((unsigned)STRLEN(p_shcf) + 1);
+! if (p_shcf_copy == NULL) /* out of memory */
+! goto error;
+! s = p_shcf_copy;
+! p = p_shcf;
+! while (*p != NUL)
+! {
+! argv[argc++] = (char *)s;
+! while (*p && *p != ' ' && *p != TAB)
+! *s++ = *p++;
+! *s++ = NUL;
+! p = skipwhite(p);
+! }
+!
+ argv[argc++] = (char *)cmd;
+ }
+ argv[argc] = NULL;
+***************
+*** 4677,4682 ****
+--- 4708,4714 ----
+ }
+ }
+ vim_free(argv);
++ vim_free(p_shcf_copy);
+
+ error:
+ if (!did_settmode)
+*** ../vim-7.3.268/src/version.c 2011-08-04 19:36:47.000000000 +0200
+--- src/version.c 2011-08-04 20:30:44.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 269,
+ /**/
+
+--
+Be nice to your kids... they'll be the ones choosing your nursing home.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.270 b/source/ap/vim/patches/7.3.270
new file mode 100644
index 000000000..3eaf6bfa0
--- /dev/null
+++ b/source/ap/vim/patches/7.3.270
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.270
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.270
+Problem: Illegal memory access.
+Solution: Swap conditions. (Dominique Pelle)
+Files: src/ops.c
+
+
+*** ../vim-7.3.269/src/ops.c 2011-07-15 17:51:30.000000000 +0200
+--- src/ops.c 2011-08-10 12:07:22.000000000 +0200
+***************
+*** 6311,6317 ****
+ *wc += words;
+
+ /* Add eol_size if the end of line was reached before hitting limit. */
+! if (line[i] == NUL && i < limit)
+ {
+ i += eol_size;
+ chars += eol_size;
+--- 6311,6317 ----
+ *wc += words;
+
+ /* Add eol_size if the end of line was reached before hitting limit. */
+! if (i < limit && line[i] == NUL)
+ {
+ i += eol_size;
+ chars += eol_size;
+*** ../vim-7.3.269/src/version.c 2011-08-04 20:31:50.000000000 +0200
+--- src/version.c 2011-08-10 12:09:30.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 270,
+ /**/
+
+--
+An indication you must be a manager:
+You give constructive feedback to your dog.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.271 b/source/ap/vim/patches/7.3.271
new file mode 100644
index 000000000..c42d19a82
--- /dev/null
+++ b/source/ap/vim/patches/7.3.271
@@ -0,0 +1,504 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.271
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.271
+Problem: Code not following Vim coding style.
+Solution: Fix the style. (Elias Diem)
+Files: src/gui_photon.c
+
+
+*** ../vim-7.3.270/src/gui_photon.c 2011-07-27 14:09:05.000000000 +0200
+--- src/gui_photon.c 2011-08-10 12:18:35.000000000 +0200
+***************
+*** 358,378 ****
+ }
+
+ static int
+! gui_ph_handle_window_cb( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
+ {
+ PhWindowEvent_t *we = info->cbdata;
+ ushort_t *width, *height;
+
+! switch( we->event_f ) {
+ case Ph_WM_CLOSE:
+ gui_shell_closed();
+ break;
+
+ case Ph_WM_FOCUS:
+ /* Just in case it's hidden and needs to be shown */
+! gui_mch_mousehide( MOUSE_SHOW );
+
+! if( we->event_state == Ph_WM_EVSTATE_FOCUS )
+ {
+ gui_focus_change(TRUE);
+ gui_mch_start_blink();
+--- 358,378 ----
+ }
+
+ static int
+! gui_ph_handle_window_cb(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
+ {
+ PhWindowEvent_t *we = info->cbdata;
+ ushort_t *width, *height;
+
+! switch (we->event_f) {
+ case Ph_WM_CLOSE:
+ gui_shell_closed();
+ break;
+
+ case Ph_WM_FOCUS:
+ /* Just in case it's hidden and needs to be shown */
+! gui_mch_mousehide(MOUSE_SHOW);
+
+! if (we->event_state == Ph_WM_EVSTATE_FOCUS)
+ {
+ gui_focus_change(TRUE);
+ gui_mch_start_blink();
+***************
+*** 385,401 ****
+ break;
+
+ case Ph_WM_RESIZE:
+! PtGetResource( gui.vimWindow, Pt_ARG_WIDTH, &width, 0 );
+! PtGetResource( gui.vimWindow, Pt_ARG_HEIGHT, &height, 0 );
+ #ifdef USE_PANEL_GROUP
+ width -= (pg_margin_left + pg_margin_right);
+ height -= (pg_margin_top + pg_margin_bottom);
+ #endif
+! gui_resize_shell( *width, *height );
+! gui_set_shellsize( FALSE, FALSE, RESIZE_BOTH );
+ is_ignore_draw = FALSE;
+! PtEndFlux( gui.vimContainer );
+! PtContainerRelease( gui.vimContainer );
+ break;
+
+ default:
+--- 385,401 ----
+ break;
+
+ case Ph_WM_RESIZE:
+! PtGetResource(gui.vimWindow, Pt_ARG_WIDTH, &width, 0);
+! PtGetResource(gui.vimWindow, Pt_ARG_HEIGHT, &height, 0);
+ #ifdef USE_PANEL_GROUP
+ width -= (pg_margin_left + pg_margin_right);
+ height -= (pg_margin_top + pg_margin_bottom);
+ #endif
+! gui_resize_shell(*width, *height);
+! gui_set_shellsize(FALSE, FALSE, RESIZE_BOTH);
+ is_ignore_draw = FALSE;
+! PtEndFlux(gui.vimContainer);
+! PtContainerRelease(gui.vimContainer);
+ break;
+
+ default:
+***************
+*** 406,412 ****
+ }
+
+ static int
+! gui_ph_handle_scrollbar( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
+ {
+ PtScrollbarCallback_t *scroll;
+ scrollbar_T *sb;
+--- 406,412 ----
+ }
+
+ static int
+! gui_ph_handle_scrollbar(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
+ {
+ PtScrollbarCallback_t *scroll;
+ scrollbar_T *sb;
+***************
+*** 415,424 ****
+ scroll = info->cbdata;
+
+ sb = (scrollbar_T *) data;
+! if( sb != NULL )
+ {
+ value = scroll->position;
+! switch( scroll->action )
+ {
+ case Pt_SCROLL_DRAGGED:
+ dragging = TRUE;
+--- 415,424 ----
+ scroll = info->cbdata;
+
+ sb = (scrollbar_T *) data;
+! if (sb != NULL)
+ {
+ value = scroll->position;
+! switch (scroll->action)
+ {
+ case Pt_SCROLL_DRAGGED:
+ dragging = TRUE;
+***************
+*** 436,532 ****
+ }
+
+ static int
+! gui_ph_handle_keyboard( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
+ {
+ PhKeyEvent_t *key;
+ unsigned char string[6];
+ int len, i;
+ int ch, modifiers;
+
+! key = PhGetData( info->event );
+
+ ch = modifiers = len = 0;
+
+! if( p_mh )
+! gui_mch_mousehide( MOUSE_HIDE );
+
+ /* We're a good lil photon program, aren't we? yes we are, yeess wee arrr */
+! if( key->key_flags & Pk_KF_Compose )
+ {
+ return Pt_CONTINUE;
+ }
+
+! if( (key->key_flags & Pk_KF_Cap_Valid) &&
+! PkIsKeyDown( key->key_flags ) )
+ {
+ #ifdef FEAT_MENU
+ /*
+ * Only show the menu if the Alt key is down, and the Shift & Ctrl
+ * keys aren't down, as well as the other conditions
+ */
+! if( ( ( key->key_mods & Pk_KM_Alt ) &&
+! !( key->key_mods & Pk_KM_Shift ) &&
+! !( key->key_mods & Pk_KM_Ctrl ) ) &&
+ gui.menu_is_active &&
+! ( *p_wak == 'y' ||
+! ( *p_wak == 'm' &&
+! gui_is_menu_shortcut( key->key_cap ) ) ) )
+ {
+ /* Fallthrough and let photon look for the hotkey */
+ return Pt_CONTINUE;
+ }
+ #endif
+
+! for( i = 0; special_keys[i].key_sym != 0; i++ )
+ {
+! if( special_keys[i].key_sym == key->key_cap )
+ {
+ len = 0;
+! if( special_keys[i].vim_code1 == NUL )
+ ch = special_keys[i].vim_code0;
+ else
+ {
+ /* Detect if a keypad number key has been pressed
+ * and change the key if Num Lock is on */
+! if( key->key_cap >= Pk_KP_Enter && key->key_cap <= Pk_KP_9
+! && ( key->key_mods & Pk_KM_Num_Lock ) )
+ {
+ /* FIXME: For now, just map the key to a ascii value
+ * (see <photon/PkKeyDef.h>) */
+ ch = key->key_cap - 0xf080;
+ }
+ else
+! ch = TO_SPECIAL( special_keys[i].vim_code0,
+! special_keys[i].vim_code1 );
+ }
+ break;
+ }
+ }
+
+! if( key->key_mods & Pk_KM_Ctrl )
+ modifiers |= MOD_MASK_CTRL;
+! if( key->key_mods & Pk_KM_Alt )
+ modifiers |= MOD_MASK_ALT;
+! if( key->key_mods & Pk_KM_Shift )
+ modifiers |= MOD_MASK_SHIFT;
+
+ /* Is this not a special key? */
+! if( special_keys[i].key_sym == 0 )
+ {
+! ch = PhTo8859_1( key );
+! if( ch == -1
+ #ifdef FEAT_MBYTE
+! || ( enc_utf8 && ch > 127 )
+ #endif
+ )
+ {
+ #ifdef FEAT_MBYTE
+! len = PhKeyToMb( string, key );
+! if( len > 0 )
+ {
+ static char buf[6];
+ int src_taken, dst_made;
+! if( enc_utf8 != TRUE )
+ {
+ PxTranslateFromUTF(
+ charset_translate,
+--- 436,532 ----
+ }
+
+ static int
+! gui_ph_handle_keyboard(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
+ {
+ PhKeyEvent_t *key;
+ unsigned char string[6];
+ int len, i;
+ int ch, modifiers;
+
+! key = PhGetData(info->event);
+
+ ch = modifiers = len = 0;
+
+! if (p_mh)
+! gui_mch_mousehide(MOUSE_HIDE);
+
+ /* We're a good lil photon program, aren't we? yes we are, yeess wee arrr */
+! if (key->key_flags & Pk_KF_Compose)
+ {
+ return Pt_CONTINUE;
+ }
+
+! if ((key->key_flags & Pk_KF_Cap_Valid) &&
+! PkIsKeyDown(key->key_flags))
+ {
+ #ifdef FEAT_MENU
+ /*
+ * Only show the menu if the Alt key is down, and the Shift & Ctrl
+ * keys aren't down, as well as the other conditions
+ */
+! if (((key->key_mods & Pk_KM_Alt) &&
+! !(key->key_mods & Pk_KM_Shift) &&
+! !(key->key_mods & Pk_KM_Ctrl)) &&
+ gui.menu_is_active &&
+! (*p_wak == 'y' ||
+! (*p_wak == 'm' &&
+! gui_is_menu_shortcut(key->key_cap))))
+ {
+ /* Fallthrough and let photon look for the hotkey */
+ return Pt_CONTINUE;
+ }
+ #endif
+
+! for(i = 0; special_keys[i].key_sym != 0; i++)
+ {
+! if (special_keys[i].key_sym == key->key_cap)
+ {
+ len = 0;
+! if (special_keys[i].vim_code1 == NUL)
+ ch = special_keys[i].vim_code0;
+ else
+ {
+ /* Detect if a keypad number key has been pressed
+ * and change the key if Num Lock is on */
+! if (key->key_cap >= Pk_KP_Enter && key->key_cap <= Pk_KP_9
+! && (key->key_mods & Pk_KM_Num_Lock))
+ {
+ /* FIXME: For now, just map the key to a ascii value
+ * (see <photon/PkKeyDef.h>) */
+ ch = key->key_cap - 0xf080;
+ }
+ else
+! ch = TO_SPECIAL(special_keys[i].vim_code0,
+! special_keys[i].vim_code1);
+ }
+ break;
+ }
+ }
+
+! if (key->key_mods & Pk_KM_Ctrl)
+ modifiers |= MOD_MASK_CTRL;
+! if (key->key_mods & Pk_KM_Alt)
+ modifiers |= MOD_MASK_ALT;
+! if (key->key_mods & Pk_KM_Shift)
+ modifiers |= MOD_MASK_SHIFT;
+
+ /* Is this not a special key? */
+! if (special_keys[i].key_sym == 0)
+ {
+! ch = PhTo8859_1(key);
+! if (ch == -1
+ #ifdef FEAT_MBYTE
+! || (enc_utf8 && ch > 127)
+ #endif
+ )
+ {
+ #ifdef FEAT_MBYTE
+! len = PhKeyToMb(string, key);
+! if (len > 0)
+ {
+ static char buf[6];
+ int src_taken, dst_made;
+! if (enc_utf8 != TRUE)
+ {
+ PxTranslateFromUTF(
+ charset_translate,
+***************
+*** 2931,2943 ****
+ name_len = (int_u) ( mark - vim_font );
+
+ *font_name = vim_strnsave( vim_font, name_len );
+! if( *font_name != NULL )
+ {
+! if( mark != NULL )
+ {
+! while( *mark != NUL && *mark++ == ':')
+ {
+! switch( tolower( *mark++ ) )
+ {
+ case 'a': *font_flags |= PF_STYLE_ANTIALIAS; break;
+ case 'b': *font_flags |= PF_STYLE_BOLD; break;
+--- 2931,2943 ----
+ name_len = (int_u) ( mark - vim_font );
+
+ *font_name = vim_strnsave( vim_font, name_len );
+! if (*font_name != NULL)
+ {
+! if (mark != NULL)
+ {
+! while (*mark != NUL && *mark++ == ':')
+ {
+! switch (tolower(*mark++))
+ {
+ case 'a': *font_flags |= PF_STYLE_ANTIALIAS; break;
+ case 'b': *font_flags |= PF_STYLE_BOLD; break;
+***************
+*** 2946,2952 ****
+ case 's':
+ size = getdigits( &mark );
+ /* Restrict the size to some vague limits */
+! if( size < 1 || size > 100 )
+ size = 8;
+
+ *font_size = size;
+--- 2946,2952 ----
+ case 's':
+ size = getdigits( &mark );
+ /* Restrict the size to some vague limits */
+! if (size < 1 || size > 100)
+ size = 8;
+
+ *font_size = size;
+***************
+*** 2973,2990 ****
+ FontQueryInfo info;
+ PhRect_t extent;
+
+! if( vim_font_name == NULL )
+ {
+ /* Default font */
+ vim_font_name = "PC Terminal";
+ }
+
+! if( STRCMP( vim_font_name, "*" ) == 0 )
+ {
+ font_tag = PtFontSelection( gui.vimWindow, NULL, NULL,
+ "pcterm12", -1, PHFONT_FIXED, NULL );
+
+! if( font_tag == NULL )
+ return FAIL;
+
+ gui_mch_free_font( gui.norm_font );
+--- 2973,2990 ----
+ FontQueryInfo info;
+ PhRect_t extent;
+
+! if (vim_font_name == NULL)
+ {
+ /* Default font */
+ vim_font_name = "PC Terminal";
+ }
+
+! if (STRCMP( vim_font_name, "*" ) == 0)
+ {
+ font_tag = PtFontSelection( gui.vimWindow, NULL, NULL,
+ "pcterm12", -1, PHFONT_FIXED, NULL );
+
+! if (font_tag == NULL)
+ return FAIL;
+
+ gui_mch_free_font( gui.norm_font );
+***************
+*** 2995,3006 ****
+ }
+ else
+ {
+! if( gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags,
+! &font_size ) == FALSE )
+ return FAIL;
+
+ font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 );
+! if( font_tag == NULL )
+ {
+ vim_free( font_name );
+ return FAIL;
+--- 2995,3006 ----
+ }
+ else
+ {
+! if (gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags,
+! &font_size ) == FALSE)
+ return FAIL;
+
+ font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 );
+! if (font_tag == NULL)
+ {
+ vim_free( font_name );
+ return FAIL;
+***************
+*** 3053,3069 ****
+ int_u font_size = 12;
+ int_u font_flags = 0;
+
+! if( gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags,
+! &font_size ) != FALSE )
+ {
+ font_tag = gui_ph_get_font( font_name, font_flags, font_size, -1 );
+ vim_free( font_name );
+
+! if( font_tag != NULL )
+ return (GuiFont)font_tag;
+ }
+
+! if( report_error )
+ EMSG2(e_font, vim_font_name );
+
+ return FAIL;
+--- 3053,3069 ----
+ int_u font_size = 12;
+ int_u font_flags = 0;
+
+! if (gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags,
+! &font_size ) != FALSE)
+ {
+ font_tag = gui_ph_get_font( font_name, font_flags, font_size, -1 );
+ vim_free( font_name );
+
+! if (font_tag != NULL)
+ return (GuiFont)font_tag;
+ }
+
+! if (report_error)
+ EMSG2(e_font, vim_font_name );
+
+ return FAIL;
+*** ../vim-7.3.270/src/version.c 2011-08-10 12:10:55.000000000 +0200
+--- src/version.c 2011-08-10 12:17:06.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 271,
+ /**/
+
+--
+An indication you must be a manager:
+You believe you never have any problems in your life, just
+"issues" and "improvement opportunities".
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.272 b/source/ap/vim/patches/7.3.272
new file mode 100644
index 000000000..b512a1fd7
--- /dev/null
+++ b/source/ap/vim/patches/7.3.272
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.272
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.272
+Problem: ":put =list" does not add an empty line for a trailing empty
+ item.
+Solution: Add a trailing NL when turning a list into a string.
+Files: src/eval.c
+
+
+*** ../vim-7.3.271/src/eval.c 2011-07-15 21:24:06.000000000 +0200
+--- src/eval.c 2011-08-10 12:31:51.000000000 +0200
+***************
+*** 1357,1363 ****
+--- 1357,1367 ----
+ {
+ ga_init2(&ga, (int)sizeof(char), 80);
+ if (tv.vval.v_list != NULL)
++ {
+ list_join(&ga, tv.vval.v_list, (char_u *)"\n", TRUE, 0);
++ if (tv.vval.v_list->lv_len > 0)
++ ga_append(&ga, NL);
++ }
+ ga_append(&ga, NUL);
+ retval = (char_u *)ga.ga_data;
+ }
+*** ../vim-7.3.271/src/version.c 2011-08-10 12:19:00.000000000 +0200
+--- src/version.c 2011-08-10 12:36:41.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 272,
+ /**/
+
+--
+Lose weight, NEVER Diet again with
+ The "Invisible Weight Loss Patch"
+ (spam e-mail)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.273 b/source/ap/vim/patches/7.3.273
new file mode 100644
index 000000000..e74eb5a2a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.273
@@ -0,0 +1,124 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.273
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.273
+Problem: A BOM in an error file is seen as text. (Aleksey Baibarin)
+Solution: Remove the BOM from the text before evaluating. (idea by Christian
+ Brabandt)
+Files: src/quickfix.c, src/mbyte.c, src/proto/mbyte.pro,
+ src/testdir/test10.in
+
+
+*** ../vim-7.3.272/src/quickfix.c 2011-05-19 17:42:54.000000000 +0200
+--- src/quickfix.c 2011-08-10 12:56:15.000000000 +0200
+***************
+*** 561,566 ****
+--- 561,570 ----
+ break;
+
+ IObuff[CMDBUFFSIZE - 2] = NUL; /* for very long lines */
++ #ifdef FEAT_MBYTE
++ remove_bom(IObuff);
++ #endif
++
+ if ((efmp = vim_strrchr(IObuff, '\n')) != NULL)
+ *efmp = NUL;
+ #ifdef USE_CRNL
+*** ../vim-7.3.272/src/mbyte.c 2011-07-27 18:25:40.000000000 +0200
+--- src/mbyte.c 2011-08-10 13:11:56.000000000 +0200
+***************
+*** 838,843 ****
+--- 838,864 ----
+ }
+
+ /*
++ * Remove all BOM from "s" by moving remaining text.
++ */
++ void
++ remove_bom(s)
++ char_u *s;
++ {
++ if (enc_utf8)
++ {
++ char_u *p = s;
++
++ while ((p = vim_strbyte(p, 0xef)) != NULL)
++ {
++ if (p[1] == 0xbb && p[2] == 0xbf)
++ STRMOVE(p, p + 3);
++ else
++ ++p;
++ }
++ }
++ }
++
++ /*
+ * Get class of pointer:
+ * 0 for blank or NUL
+ * 1 for punctuation
+*** ../vim-7.3.272/src/proto/mbyte.pro 2011-07-07 15:08:53.000000000 +0200
+--- src/proto/mbyte.pro 2011-08-10 12:50:44.000000000 +0200
+***************
+*** 2,7 ****
+--- 2,8 ----
+ int enc_canon_props __ARGS((char_u *name));
+ char_u *mb_init __ARGS((void));
+ int bomb_size __ARGS((void));
++ void remove_bom __ARGS((char_u *s));
+ int mb_get_class __ARGS((char_u *p));
+ int dbcs_class __ARGS((unsigned lead, unsigned trail));
+ int latin_char2len __ARGS((int c));
+*** ../vim-7.3.272/src/testdir/test10.in 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test10.in 2011-08-10 13:01:46.000000000 +0200
+***************
+*** 2,7 ****
+--- 2,10 ----
+
+ STARTTEST
+ :so small.vim
++ :" Also test a BOM is ignored.
++ :so mbyte.vim
++ :set encoding=utf-8
+ :/start of errorfile/,/end of errorfile/w! Xerrorfile
+ :/start of testfile/,/end of testfile/w! Xtestfile
+ :cf Xerrorfile
+***************
+*** 20,26 ****
+
+ start of errorfile
+ "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set.
+! "Xtestfile", line 7 col 19; this is an error
+ gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c
+ Xtestfile:13: parse error before `asd'
+ make: *** [vim] Error 1
+--- 23,29 ----
+
+ start of errorfile
+ "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set.
+! "Xtestfile", line 7 col 19; this is an error
+ gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c
+ Xtestfile:13: parse error before `asd'
+ make: *** [vim] Error 1
+*** ../vim-7.3.272/src/version.c 2011-08-10 12:38:02.000000000 +0200
+--- src/version.c 2011-08-10 13:14:35.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 273,
+ /**/
+
+--
+Compilation process failed successfully.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.274 b/source/ap/vim/patches/7.3.274
new file mode 100644
index 000000000..48faf3cf0
--- /dev/null
+++ b/source/ap/vim/patches/7.3.274
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.274
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.274
+Problem: With concealed characters tabs do not have the right size.
+Solution: Use VCOL_HLC instead of vcol. (Eiichi Sato)
+Files: src/screen.c
+
+
+*** ../vim-7.3.273/src/screen.c 2011-03-22 13:29:20.000000000 +0100
+--- src/screen.c 2011-08-10 14:22:47.000000000 +0200
+***************
+*** 4252,4258 ****
+ {
+ /* tab amount depends on current column */
+ n_extra = (int)wp->w_buffer->b_p_ts
+! - vcol % (int)wp->w_buffer->b_p_ts - 1;
+ #ifdef FEAT_MBYTE
+ mb_utf8 = FALSE; /* don't draw as UTF-8 */
+ #endif
+--- 4252,4258 ----
+ {
+ /* tab amount depends on current column */
+ n_extra = (int)wp->w_buffer->b_p_ts
+! - VCOL_HLC % (int)wp->w_buffer->b_p_ts - 1;
+ #ifdef FEAT_MBYTE
+ mb_utf8 = FALSE; /* don't draw as UTF-8 */
+ #endif
+*** ../vim-7.3.273/src/version.c 2011-08-10 13:21:30.000000000 +0200
+--- src/version.c 2011-08-10 14:23:38.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 274,
+ /**/
+
+--
+ Arthur pulls Pin out. The MONK blesses the grenade as ...
+ARTHUR: (quietly) One, two, five ...
+GALAHAD: Three, sir!
+ARTHUR: Three.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.275 b/source/ap/vim/patches/7.3.275
new file mode 100644
index 000000000..2bdd145b9
--- /dev/null
+++ b/source/ap/vim/patches/7.3.275
@@ -0,0 +1,77 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.275
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.275
+Problem: MS-Windows: When using a black background some screen updates
+ cause the window to flicker.
+Solution: Add WS_CLIPCHILDREN to CreateWindow(). (René Aguirre)
+Files: src/gui_w32.c
+
+
+*** ../vim-7.3.274/src/gui_w32.c 2011-07-07 17:43:37.000000000 +0200
+--- src/gui_w32.c 2011-08-10 14:40:58.000000000 +0200
+***************
+*** 1379,1385 ****
+ s_hwnd = CreateWindowEx(
+ WS_EX_MDICHILD,
+ szVimWndClass, "Vim MSWindows GUI",
+! WS_OVERLAPPEDWINDOW | WS_CHILD | WS_CLIPSIBLINGS | 0xC000,
+ gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x,
+ gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y,
+ 100, /* Any value will do */
+--- 1379,1386 ----
+ s_hwnd = CreateWindowEx(
+ WS_EX_MDICHILD,
+ szVimWndClass, "Vim MSWindows GUI",
+! WS_OVERLAPPEDWINDOW | WS_CHILD
+! | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | 0xC000,
+ gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x,
+ gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y,
+ 100, /* Any value will do */
+***************
+*** 1410,1416 ****
+ * titlebar, it will be reparented below. */
+ s_hwnd = CreateWindow(
+ szVimWndClass, "Vim MSWindows GUI",
+! win_socket_id == 0 ? WS_OVERLAPPEDWINDOW : WS_POPUP,
+ gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x,
+ gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y,
+ 100, /* Any value will do */
+--- 1411,1418 ----
+ * titlebar, it will be reparented below. */
+ s_hwnd = CreateWindow(
+ szVimWndClass, "Vim MSWindows GUI",
+! (win_socket_id == 0 ? WS_OVERLAPPEDWINDOW : WS_POPUP)
+! | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
+ gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x,
+ gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y,
+ 100, /* Any value will do */
+*** ../vim-7.3.274/src/version.c 2011-08-10 14:32:33.000000000 +0200
+--- src/version.c 2011-08-10 14:39:14.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 275,
+ /**/
+
+--
+ARTHUR: What does it say?
+BROTHER MAYNARD: It reads ... "Here may be found the last words of Joseph of
+ Aramathea." "He who is valorous and pure of heart may find
+ the Holy Grail in the aaaaarrrrrrggghhh..."
+ARTHUR: What?
+BROTHER MAYNARD: "The Aaaaarrrrrrggghhh..."
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.276 b/source/ap/vim/patches/7.3.276
new file mode 100644
index 000000000..3af02457d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.276
@@ -0,0 +1,130 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.276
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.276
+Problem: GvimExt sets $LANG in the wrong way.
+Solution: Save the environment and use it for gvim. (Yasuhiro Matsumoto)
+Files: src/GvimExt/gvimext.cpp
+
+
+*** ../vim-7.3.275/src/GvimExt/gvimext.cpp 2011-07-20 17:27:17.000000000 +0200
+--- src/GvimExt/gvimext.cpp 2011-08-10 16:25:32.000000000 +0200
+***************
+*** 142,147 ****
+--- 142,148 ----
+ static int dyn_libintl_init(char *dir);
+ static void dyn_libintl_end(void);
+
++ static wchar_t *oldenv = NULL;
+ static HINSTANCE hLibintlDLL = 0;
+ static char *(*dyn_libintl_gettext)(const char *) = null_libintl_gettext;
+ static char *(*dyn_libintl_textdomain)(const char *) = null_libintl_textdomain;
+***************
+*** 339,346 ****
+ inc_cRefThisDLL()
+ {
+ #ifdef FEAT_GETTEXT
+! if (g_cRefThisDll == 0)
+ dyn_gettext_load();
+ #endif
+ InterlockedIncrement((LPLONG)&g_cRefThisDll);
+ }
+--- 340,349 ----
+ inc_cRefThisDLL()
+ {
+ #ifdef FEAT_GETTEXT
+! if (g_cRefThisDll == 0) {
+ dyn_gettext_load();
++ oldenv = GetEnvironmentStringsW();
++ }
+ #endif
+ InterlockedIncrement((LPLONG)&g_cRefThisDll);
+ }
+***************
+*** 349,356 ****
+ dec_cRefThisDLL()
+ {
+ #ifdef FEAT_GETTEXT
+! if (InterlockedDecrement((LPLONG)&g_cRefThisDll) == 0)
+ dyn_gettext_free();
+ #else
+ InterlockedDecrement((LPLONG)&g_cRefThisDll);
+ #endif
+--- 352,364 ----
+ dec_cRefThisDLL()
+ {
+ #ifdef FEAT_GETTEXT
+! if (InterlockedDecrement((LPLONG)&g_cRefThisDll) == 0) {
+ dyn_gettext_free();
++ if (oldenv != NULL) {
++ FreeEnvironmentStringsW(oldenv);
++ oldenv = NULL;
++ }
++ }
+ #else
+ InterlockedDecrement((LPLONG)&g_cRefThisDll);
+ #endif
+***************
+*** 905,912 ****
+ NULL, // Process handle not inheritable.
+ NULL, // Thread handle not inheritable.
+ FALSE, // Set handle inheritance to FALSE.
+! 0, // No creation flags.
+! NULL, // Use parent's environment block.
+ NULL, // Use parent's starting directory.
+ &si, // Pointer to STARTUPINFO structure.
+ &pi) // Pointer to PROCESS_INFORMATION structure.
+--- 913,920 ----
+ NULL, // Process handle not inheritable.
+ NULL, // Thread handle not inheritable.
+ FALSE, // Set handle inheritance to FALSE.
+! oldenv == NULL ? 0 : CREATE_UNICODE_ENVIRONMENT,
+! oldenv, // Use unmodified environment block.
+ NULL, // Use parent's starting directory.
+ &si, // Pointer to STARTUPINFO structure.
+ &pi) // Pointer to PROCESS_INFORMATION structure.
+***************
+*** 987,994 ****
+ NULL, // Process handle not inheritable.
+ NULL, // Thread handle not inheritable.
+ FALSE, // Set handle inheritance to FALSE.
+! 0, // No creation flags.
+! NULL, // Use parent's environment block.
+ NULL, // Use parent's starting directory.
+ &si, // Pointer to STARTUPINFO structure.
+ &pi) // Pointer to PROCESS_INFORMATION structure.
+--- 995,1002 ----
+ NULL, // Process handle not inheritable.
+ NULL, // Thread handle not inheritable.
+ FALSE, // Set handle inheritance to FALSE.
+! oldenv == NULL ? 0 : CREATE_UNICODE_ENVIRONMENT,
+! oldenv, // Use unmodified environment block.
+ NULL, // Use parent's starting directory.
+ &si, // Pointer to STARTUPINFO structure.
+ &pi) // Pointer to PROCESS_INFORMATION structure.
+*** ../vim-7.3.275/src/version.c 2011-08-10 15:56:24.000000000 +0200
+--- src/version.c 2011-08-10 16:28:42.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 276,
+ /**/
+
+--
+User: I'm having problems with my text editor.
+Help desk: Which editor are you using?
+User: I don't know, but it's version VI (pronounced: 6).
+Help desk: Oh, then you should upgrade to version VIM (pronounced: 994).
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.277 b/source/ap/vim/patches/7.3.277
new file mode 100644
index 000000000..3509a1a6f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.277
@@ -0,0 +1,348 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.277
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.277
+Problem: MS-Windows: some characters do not show in dialogs.
+Solution: Use the wide methods when available. (Yanwei Jia)
+Files: src/gui_w32.c, src/gui_w48.c, src/os_mswin.c, src/os_win32.c,
+ src/os_win32.h
+
+
+*** ../vim-7.3.276/src/gui_w32.c 2011-08-10 15:56:24.000000000 +0200
+--- src/gui_w32.c 2011-08-10 16:52:55.000000000 +0200
+***************
+*** 1270,1275 ****
+--- 1270,1294 ----
+ pGetMonitorInfo = (TGetMonitorInfo)GetProcAddress(user32_lib,
+ "GetMonitorInfoA");
+ }
++
++ #ifdef FEAT_MBYTE
++ /* If the OS is Windows NT, use wide functions;
++ * this enables common dialogs input unicode from IME. */
++ if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT)
++ {
++ pDispatchMessage = DispatchMessageW;
++ pGetMessage = GetMessageW;
++ pIsDialogMessage = IsDialogMessageW;
++ pPeekMessage = PeekMessageW;
++ }
++ else
++ {
++ pDispatchMessage = DispatchMessageA;
++ pGetMessage = GetMessageA;
++ pIsDialogMessage = IsDialogMessageA;
++ pPeekMessage = PeekMessageA;
++ }
++ #endif
+ }
+
+ /*
+*** ../vim-7.3.276/src/gui_w48.c 2010-10-20 21:22:17.000000000 +0200
+--- src/gui_w48.c 2011-08-10 16:49:39.000000000 +0200
+***************
+*** 390,396 ****
+ KillTimer(NULL, idEvent);
+
+ /* Eat spurious WM_TIMER messages */
+! while (PeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
+ ;
+
+ if (blink_state == BLINK_ON)
+--- 390,396 ----
+ KillTimer(NULL, idEvent);
+
+ /* Eat spurious WM_TIMER messages */
+! while (pPeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
+ ;
+
+ if (blink_state == BLINK_ON)
+***************
+*** 418,424 ****
+ {
+ KillTimer(NULL, blink_timer);
+ /* Eat spurious WM_TIMER messages */
+! while (PeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
+ ;
+ blink_timer = 0;
+ }
+--- 418,424 ----
+ {
+ KillTimer(NULL, blink_timer);
+ /* Eat spurious WM_TIMER messages */
+! while (pPeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
+ ;
+ blink_timer = 0;
+ }
+***************
+*** 476,482 ****
+ s_timed_out = TRUE;
+
+ /* Eat spurious WM_TIMER messages */
+! while (PeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
+ ;
+ if (idEvent == s_wait_timer)
+ s_wait_timer = 0;
+--- 476,482 ----
+ s_timed_out = TRUE;
+
+ /* Eat spurious WM_TIMER messages */
+! while (pPeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
+ ;
+ if (idEvent == s_wait_timer)
+ s_wait_timer = 0;
+***************
+*** 1707,1713 ****
+ static char_u k10[] = {K_SPECIAL, 'k', ';', 0};
+ #endif
+
+! GetMessage(&msg, NULL, 0, 0);
+
+ #ifdef FEAT_OLE
+ /* Look after OLE Automation commands */
+--- 1707,1713 ----
+ static char_u k10[] = {K_SPECIAL, 'k', ';', 0};
+ #endif
+
+! pGetMessage(&msg, NULL, 0, 0);
+
+ #ifdef FEAT_OLE
+ /* Look after OLE Automation commands */
+***************
+*** 1718,1724 ****
+ {
+ /* Message can't be ours, forward it. Fixes problem with Ultramon
+ * 3.0.4 */
+! DispatchMessage(&msg);
+ }
+ else
+ {
+--- 1718,1724 ----
+ {
+ /* Message can't be ours, forward it. Fixes problem with Ultramon
+ * 3.0.4 */
+! pDispatchMessage(&msg);
+ }
+ else
+ {
+***************
+*** 1749,1762 ****
+ if (msg.message == WM_USER)
+ {
+ MyTranslateMessage(&msg);
+! DispatchMessage(&msg);
+ return;
+ }
+ #endif
+
+ #ifdef MSWIN_FIND_REPLACE
+ /* Don't process messages used by the dialog */
+! if (s_findrep_hwnd != NULL && IsDialogMessage(s_findrep_hwnd, &msg))
+ {
+ HandleMouseHide(msg.message, msg.lParam);
+ return;
+--- 1749,1762 ----
+ if (msg.message == WM_USER)
+ {
+ MyTranslateMessage(&msg);
+! pDispatchMessage(&msg);
+ return;
+ }
+ #endif
+
+ #ifdef MSWIN_FIND_REPLACE
+ /* Don't process messages used by the dialog */
+! if (s_findrep_hwnd != NULL && pIsDialogMessage(s_findrep_hwnd, &msg))
+ {
+ HandleMouseHide(msg.message, msg.lParam);
+ return;
+***************
+*** 1928,1934 ****
+ if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE,
+ NULL, NULL) == NULL)
+ #endif
+! DispatchMessage(&msg);
+ }
+
+ /*
+--- 1928,1934 ----
+ if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE,
+ NULL, NULL) == NULL)
+ #endif
+! pDispatchMessage(&msg);
+ }
+
+ /*
+***************
+*** 1943,1949 ****
+ MSG msg;
+
+ if (!s_busy_processing)
+! while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)
+ && !vim_is_input_buf_full())
+ process_message();
+ }
+--- 1943,1949 ----
+ MSG msg;
+
+ if (!s_busy_processing)
+! while (pPeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)
+ && !vim_is_input_buf_full())
+ process_message();
+ }
+***************
+*** 2019,2025 ****
+ KillTimer(NULL, s_wait_timer);
+
+ /* Eat spurious WM_TIMER messages */
+! while (PeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
+ ;
+ s_wait_timer = 0;
+ }
+--- 2019,2025 ----
+ KillTimer(NULL, s_wait_timer);
+
+ /* Eat spurious WM_TIMER messages */
+! while (pPeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
+ ;
+ s_wait_timer = 0;
+ }
+*** ../vim-7.3.276/src/os_mswin.c 2011-06-19 01:30:01.000000000 +0200
+--- src/os_mswin.c 2011-08-10 16:45:24.000000000 +0200
+***************
+*** 1856,1867 ****
+ {
+ MSG msg;
+
+! while (!*bUserAbort && PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
+ {
+! if (!hDlgPrint || !IsDialogMessage(hDlgPrint, &msg))
+ {
+ TranslateMessage(&msg);
+! DispatchMessage(&msg);
+ }
+ }
+ return !*bUserAbort;
+--- 1856,1867 ----
+ {
+ MSG msg;
+
+! while (!*bUserAbort && pPeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
+ {
+! if (!hDlgPrint || !pIsDialogMessage(hDlgPrint, &msg))
+ {
+ TranslateMessage(&msg);
+! pDispatchMessage(&msg);
+ }
+ }
+ return !*bUserAbort;
+***************
+*** 3132,3141 ****
+ {
+ MSG msg;
+
+! while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
+ {
+ TranslateMessage(&msg);
+! DispatchMessage(&msg);
+ }
+ }
+
+--- 3132,3141 ----
+ {
+ MSG msg;
+
+! while (pPeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
+ {
+ TranslateMessage(&msg);
+! pDispatchMessage(&msg);
+ }
+ }
+
+*** ../vim-7.3.276/src/os_win32.c 2011-07-07 16:20:45.000000000 +0200
+--- src/os_win32.c 2011-08-10 16:54:50.000000000 +0200
+***************
+*** 152,157 ****
+--- 152,165 ----
+ # define wcsicmp(a, b) wcscmpi((a), (b))
+ #endif
+
++ /* Enable common dialogs input unicode from IME if posible. */
++ #ifdef FEAT_MBYTE
++ LRESULT (WINAPI *pDispatchMessage)(LPMSG) = DispatchMessage;
++ BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT) = GetMessage;
++ BOOL (WINAPI *pIsDialogMessage)(HWND, LPMSG) = IsDialogMessage;
++ BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT) = PeekMessage;
++ #endif
++
+ #ifndef FEAT_GUI_W32
+ /* Win32 Console handles for input and output */
+ static HANDLE g_hConIn = INVALID_HANDLE_VALUE;
+***************
+*** 3284,3293 ****
+ {
+ MSG msg;
+
+! if (PeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE))
+ {
+ TranslateMessage(&msg);
+! DispatchMessage(&msg);
+ }
+ if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT)
+ break;
+--- 3292,3301 ----
+ {
+ MSG msg;
+
+! if (pPeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE))
+ {
+ TranslateMessage(&msg);
+! pDispatchMessage(&msg);
+ }
+ if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT)
+ break;
+*** ../vim-7.3.276/src/os_win32.h 2011-05-05 18:31:54.000000000 +0200
+--- src/os_win32.h 2011-08-10 16:51:58.000000000 +0200
+***************
+*** 193,195 ****
+--- 193,209 ----
+ #else
+ # define vim_mkdir(x, y) mch_mkdir(x)
+ #endif
++
++ /* Enable common dialogs input unicode from IME if posible. */
++ #ifdef FEAT_MBYTE
++ /* The variables are defined in os_win32.c. */
++ extern LRESULT (WINAPI *pDispatchMessage)(LPMSG);
++ extern BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT);
++ extern BOOL (WINAPI *pIsDialogMessage)(HWND, LPMSG);
++ extern BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT);
++ #else
++ # define pDispatchMessage DispatchMessage
++ # define pGetMessage GetMessage
++ # define pIsDialogMessage IsDialogMessage
++ # define pPeekMessage PeekMessage
++ #endif
+*** ../vim-7.3.276/src/version.c 2011-08-10 16:31:18.000000000 +0200
+--- src/version.c 2011-08-10 17:06:55.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 277,
+ /**/
+
+--
+Veni, Vidi, VW -- I came, I saw, I drove around in a little car.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.278 b/source/ap/vim/patches/7.3.278
new file mode 100644
index 000000000..60bc0ac87
--- /dev/null
+++ b/source/ap/vim/patches/7.3.278
@@ -0,0 +1,73 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.278
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.278
+Problem: Passing the file name to open in VisVim doesn't work.
+Solution: Adjust the index and check for end of buffer. (Jiri Sedlak)
+Files: src/VisVim/Commands.cpp
+
+
+*** ../vim-7.3.277/src/VisVim/Commands.cpp 2010-08-15 21:57:27.000000000 +0200
+--- src/VisVim/Commands.cpp 2011-08-10 17:21:27.000000000 +0200
+***************
+*** 549,555 ****
+ if (g_bNewTabs)
+ {
+ sprintf(VimCmd, ":tab drop ");
+! s = VimCmd + 11;
+ }
+ else
+ {
+--- 549,555 ----
+ if (g_bNewTabs)
+ {
+ sprintf(VimCmd, ":tab drop ");
+! s = VimCmd + 10;
+ }
+ else
+ {
+***************
+*** 557,564 ****
+ s = VimCmd + 6;
+ }
+ sprintf(FileNameTmp, "%S", (char *)FileName);
+! for (p = FileNameTmp; *p != '\0' && s < FileNameTmp + MAX_OLE_STR - 4;
+! ++p)
+ if (*p == '\\')
+ *s++ = '/';
+ else
+--- 557,563 ----
+ s = VimCmd + 6;
+ }
+ sprintf(FileNameTmp, "%S", (char *)FileName);
+! for (p = FileNameTmp; *p != '\0' && s < VimCmd + MAX_OLE_STR - 4; ++p)
+ if (*p == '\\')
+ *s++ = '/';
+ else
+*** ../vim-7.3.277/src/version.c 2011-08-10 17:07:56.000000000 +0200
+--- src/version.c 2011-08-10 17:25:20.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 278,
+ /**/
+
+--
+ARTHUR: But if he was dying, he wouldn't bother to carve
+ "Aaaaarrrrrrggghhh". He'd just say it.
+BROTHER MAYNARD: It's down there carved in stone.
+GALAHAD: Perhaps he was dictating.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.279 b/source/ap/vim/patches/7.3.279
new file mode 100644
index 000000000..6a8814b62
--- /dev/null
+++ b/source/ap/vim/patches/7.3.279
@@ -0,0 +1,118 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.279
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.279
+Problem: With GTK, when gvim is full-screen and a tab is opened and using a
+ specific monitor configuration the window is too big.
+Solution: Adjust the window size like on MS-Windows. (Yukihiro Nakadaira)
+Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro
+
+
+*** ../vim-7.3.278/src/gui.c 2011-06-26 04:48:56.000000000 +0200
+--- src/gui.c 2011-08-10 17:40:31.000000000 +0200
+***************
+*** 1407,1413 ****
+ if (!gui.shell_created)
+ return;
+
+! #ifdef MSWIN
+ /* If not setting to a user specified size and maximized, calculate the
+ * number of characters that fit in the maximized window. */
+ if (!mustset && gui_mch_maximized())
+--- 1407,1413 ----
+ if (!gui.shell_created)
+ return;
+
+! #if defined(MSWIN) || defined(FEAT_GUI_GTK)
+ /* If not setting to a user specified size and maximized, calculate the
+ * number of characters that fit in the maximized window. */
+ if (!mustset && gui_mch_maximized())
+*** ../vim-7.3.278/src/gui_gtk_x11.c 2011-06-26 04:48:56.000000000 +0200
+--- src/gui_gtk_x11.c 2011-08-10 17:42:19.000000000 +0200
+***************
+*** 3900,3905 ****
+--- 3900,3920 ----
+ }
+
+ /*
++ * Called when the font changed while the window is maximized. Compute the
++ * new Rows and Columns. This is like resizing the window.
++ */
++ void
++ gui_mch_newfont()
++ {
++ int w, h;
++
++ gtk_window_get_size(GTK_WINDOW(gui.mainwin), &w, &h);
++ w -= get_menu_tool_width();
++ h -= get_menu_tool_height();
++ gui_resize_shell(w, h);
++ }
++
++ /*
+ * Set the windows size.
+ */
+ void
+***************
+*** 4409,4422 ****
+
+ if (gui_mch_maximized())
+ {
+- int w, h;
+-
+ /* Update lines and columns in accordance with the new font, keep the
+ * window maximized. */
+! gtk_window_get_size(GTK_WINDOW(gui.mainwin), &w, &h);
+! w -= get_menu_tool_width();
+! h -= get_menu_tool_height();
+! gui_resize_shell(w, h);
+ }
+ else
+ {
+--- 4424,4432 ----
+
+ if (gui_mch_maximized())
+ {
+ /* Update lines and columns in accordance with the new font, keep the
+ * window maximized. */
+! gui_mch_newfont();
+ }
+ else
+ {
+*** ../vim-7.3.278/src/proto/gui_gtk_x11.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/gui_gtk_x11.pro 2011-08-10 17:42:29.000000000 +0200
+***************
+*** 20,25 ****
+--- 20,26 ----
+ void gui_mch_set_winpos __ARGS((int x, int y));
+ int gui_mch_maximized __ARGS((void));
+ void gui_mch_unmaximize __ARGS((void));
++ void gui_mch_newfont __ARGS((void));
+ void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction));
+ void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
+ void gui_mch_settitle __ARGS((char_u *title, char_u *icon));
+*** ../vim-7.3.278/src/version.c 2011-08-10 17:25:48.000000000 +0200
+--- src/version.c 2011-08-10 17:43:22.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 279,
+ /**/
+
+--
+LAUNCELOT: Isn't there a St. Aaaaarrrrrrggghhh's in Cornwall?
+ARTHUR: No, that's Saint Ives.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.280 b/source/ap/vim/patches/7.3.280
new file mode 100644
index 000000000..1c1387aee
--- /dev/null
+++ b/source/ap/vim/patches/7.3.280
@@ -0,0 +1,181 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.280
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.280
+Problem: ":lmake" does not update the quickfix window title.
+Solution: Update the title. (Lech Lorens)
+Files: src/quickfix.c, src/testdir/test10.in, src/testdir/test10.ok
+
+
+*** ../vim-7.3.279/src/quickfix.c 2011-08-10 13:21:30.000000000 +0200
+--- src/quickfix.c 2011-08-10 18:09:19.000000000 +0200
+***************
+*** 126,131 ****
+--- 126,132 ----
+ static win_T *qf_find_win __ARGS((qf_info_T *qi));
+ static buf_T *qf_find_buf __ARGS((qf_info_T *qi));
+ static void qf_update_buffer __ARGS((qf_info_T *qi));
++ static void qf_set_title __ARGS((qf_info_T *qi));
+ static void qf_fill_buffer __ARGS((qf_info_T *qi));
+ #endif
+ static char_u *get_mef_name __ARGS((void));
+***************
+*** 2388,2395 ****
+ qf_fill_buffer(qi);
+
+ if (qi->qf_lists[qi->qf_curlist].qf_title != NULL)
+! set_internal_string_var((char_u *)"w:quickfix_title",
+! qi->qf_lists[qi->qf_curlist].qf_title);
+
+ curwin->w_cursor.lnum = qi->qf_lists[qi->qf_curlist].qf_index;
+ curwin->w_cursor.col = 0;
+--- 2389,2395 ----
+ qf_fill_buffer(qi);
+
+ if (qi->qf_lists[qi->qf_curlist].qf_title != NULL)
+! qf_set_title(qi);
+
+ curwin->w_cursor.lnum = qi->qf_lists[qi->qf_curlist].qf_index;
+ curwin->w_cursor.col = 0;
+***************
+*** 2526,2531 ****
+--- 2526,2533 ----
+ qf_info_T *qi;
+ {
+ buf_T *buf;
++ win_T *win;
++ win_T *curwin_save;
+ aco_save_T aco;
+
+ /* Check if a buffer for the quickfix list exists. Update it. */
+***************
+*** 2537,2542 ****
+--- 2539,2554 ----
+
+ qf_fill_buffer(qi);
+
++ if (qi->qf_lists[qi->qf_curlist].qf_title != NULL
++ && (win = qf_find_win(qi)) != NULL)
++ {
++ curwin_save = curwin;
++ curwin = win;
++ qf_set_title(qi);
++ curwin = curwin_save;
++
++ }
++
+ /* restore curwin/curbuf and a few other things */
+ aucmd_restbuf(&aco);
+
+***************
+*** 2544,2549 ****
+--- 2556,2569 ----
+ }
+ }
+
++ static void
++ qf_set_title(qi)
++ qf_info_T *qi;
++ {
++ set_internal_string_var((char_u *)"w:quickfix_title",
++ qi->qf_lists[qi->qf_curlist].qf_title);
++ }
++
+ /*
+ * Fill current buffer with quickfix errors, replacing any previous contents.
+ * curbuf must be the quickfix buffer!
+*** ../vim-7.3.279/src/testdir/test10.in 2011-08-10 13:21:30.000000000 +0200
+--- src/testdir/test10.in 2011-08-10 18:28:31.000000000 +0200
+***************
+*** 5,13 ****
+ :" Also test a BOM is ignored.
+ :so mbyte.vim
+ :set encoding=utf-8
+! :/start of errorfile/,/end of errorfile/w! Xerrorfile
+ :/start of testfile/,/end of testfile/w! Xtestfile
+! :cf Xerrorfile
+ rA
+ :cn
+ rB
+--- 5,20 ----
+ :" Also test a BOM is ignored.
+ :so mbyte.vim
+ :set encoding=utf-8
+! :7/start of errorfile/,/end of errorfile/w! Xerrorfile1
+! :7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2
+ :/start of testfile/,/end of testfile/w! Xtestfile
+! :cf Xerrorfile2
+! :clast
+! :copen
+! :let a=w:quickfix_title
+! :wincmd p
+! gR=a 
+! :cf Xerrorfile1
+ rA
+ :cn
+ rB
+***************
+*** 17,22 ****
+--- 24,34 ----
+ rD
+ :cn
+ rE
++ :cn
++ :wincmd w
++ :let a=w:quickfix_title
++ :wincmd p
++ gR=a 
+ :w! test.out " Write contents of this file
+ :qa!
+ ENDTEST
+***************
+*** 33,38 ****
+--- 45,52 ----
+ "Xtestfile", linenr 19: yet another problem
+
+ Does anyone know what is the problem and how to correction it?
++ "Xtestfile", line 21 col 9: What is the title of the quickfix window?
++ "Xtestfile", line 22 col 9: What is the title of the quickfix window?
+ end of errorfile
+
+ start of testfile
+*** ../vim-7.3.279/src/testdir/test10.ok 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test10.ok 2011-08-10 18:03:53.000000000 +0200
+***************
+*** 18,23 ****
+ line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ Eine 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 21 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 22 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ end of testfile
+--- 18,23 ----
+ line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ Eine 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 21 :cf Xerrorfile1xxxxxxxxxxxxxxx
+! line 22 :cf Xerrorfile2xxxxxxxxxxxxxxx
+ end of testfile
+*** ../vim-7.3.279/src/version.c 2011-08-10 17:44:41.000000000 +0200
+--- src/version.c 2011-08-10 18:35:52.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 280,
+ /**/
+
+--
+"When I die, I want a tombstone that says "GAME OVER" - Ton Richters
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.281 b/source/ap/vim/patches/7.3.281
new file mode 100644
index 000000000..f90e95e13
--- /dev/null
+++ b/source/ap/vim/patches/7.3.281
@@ -0,0 +1,134 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.281
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.281
+Problem: After using "expand('%:8')" the buffer name is changed.
+Solution: Make a copy of the file name before shortening it.
+Files: src/eval.c
+
+
+*** ../vim-7.3.280/src/eval.c 2011-08-10 12:38:02.000000000 +0200
+--- src/eval.c 2011-08-17 15:12:39.000000000 +0200
+***************
+*** 23205,23210 ****
+--- 23205,23211 ----
+ int c;
+ int has_fullname = 0;
+ #ifdef WIN3264
++ char_u *fname_start = *fnamep;
+ int has_shortname = 0;
+ #endif
+
+***************
+*** 23379,23402 ****
+ }
+
+ #ifdef WIN3264
+! /* Check shortname after we have done 'heads' and before we do 'tails'
+ */
+ if (has_shortname)
+ {
+! pbuf = NULL;
+! /* Copy the string if it is shortened by :h */
+! if (*fnamelen < (int)STRLEN(*fnamep))
+ {
+ p = vim_strnsave(*fnamep, *fnamelen);
+! if (p == 0)
+ return -1;
+ vim_free(*bufp);
+ *bufp = *fnamep = p;
+ }
+
+ /* Split into two implementations - makes it easier. First is where
+! * there isn't a full name already, second is where there is.
+! */
+ if (!has_fullname && !vim_isAbsName(*fnamep))
+ {
+ if (shortpath_for_partial(fnamep, bufp, fnamelen) == FAIL)
+--- 23380,23404 ----
+ }
+
+ #ifdef WIN3264
+! /*
+! * Handle ":8" after we have done 'heads' and before we do 'tails'.
+ */
+ if (has_shortname)
+ {
+! /* Copy the string if it is shortened by :h and when it wasn't copied
+! * yet, because we are going to change it in place. Avoids changing
+! * the buffer name for "%:8". */
+! if (*fnamelen < (int)STRLEN(*fnamep) || *fnamep == fname_start)
+ {
+ p = vim_strnsave(*fnamep, *fnamelen);
+! if (p == NULL)
+ return -1;
+ vim_free(*bufp);
+ *bufp = *fnamep = p;
+ }
+
+ /* Split into two implementations - makes it easier. First is where
+! * there isn't a full name already, second is where there is. */
+ if (!has_fullname && !vim_isAbsName(*fnamep))
+ {
+ if (shortpath_for_partial(fnamep, bufp, fnamelen) == FAIL)
+***************
+*** 23404,23421 ****
+ }
+ else
+ {
+! int l;
+
+! /* Simple case, already have the full-name
+ * Nearly always shorter, so try first time. */
+- l = *fnamelen;
+ if (get_short_pathname(fnamep, bufp, &l) == FAIL)
+ return -1;
+
+ if (l == 0)
+ {
+! /* Couldn't find the filename.. search the paths.
+! */
+ l = *fnamelen;
+ if (shortpath_for_invalid_fname(fnamep, bufp, &l) == FAIL)
+ return -1;
+--- 23406,23421 ----
+ }
+ else
+ {
+! int l = *fnamelen;
+
+! /* Simple case, already have the full-name.
+ * Nearly always shorter, so try first time. */
+ if (get_short_pathname(fnamep, bufp, &l) == FAIL)
+ return -1;
+
+ if (l == 0)
+ {
+! /* Couldn't find the filename, search the paths. */
+ l = *fnamelen;
+ if (shortpath_for_invalid_fname(fnamep, bufp, &l) == FAIL)
+ return -1;
+*** ../vim-7.3.280/src/version.c 2011-08-10 18:36:49.000000000 +0200
+--- src/version.c 2011-08-17 15:21:41.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 281,
+ /**/
+
+--
+Kisses may last for as much as, but no more than, five minutes.
+ [real standing law in Iowa, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.282 b/source/ap/vim/patches/7.3.282
new file mode 100644
index 000000000..dcd16806e
--- /dev/null
+++ b/source/ap/vim/patches/7.3.282
@@ -0,0 +1,60 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.282
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.282
+Problem: When using input() and :echo in a loop the displayed text is
+ incorrect. (Benjamin Fritz)
+Solution: Only restore the cursor position when there is a command line.
+ (Ben Schmidt)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.3.281/src/ex_getln.c 2011-07-27 17:58:42.000000000 +0200
+--- src/ex_getln.c 2011-08-17 15:57:39.000000000 +0200
+***************
+*** 1969,1976 ****
+ # endif
+ s = getcmdline(firstc, 1L, 0);
+ restore_cmdline(&save_ccline);
+! /* Restore msg_col, the prompt from input() may have changed it. */
+! msg_col = msg_col_save;
+
+ return s;
+ }
+--- 1969,1980 ----
+ # endif
+ s = getcmdline(firstc, 1L, 0);
+ restore_cmdline(&save_ccline);
+! /* Restore msg_col, the prompt from input() may have changed it.
+! * But only if called recursively and the commandline is therefore being
+! * restored to an old one; if not, the input() prompt stays on the screen,
+! * so we need its modified msg_col left intact. */
+! if (ccline.cmdbuff != NULL)
+! msg_col = msg_col_save;
+
+ return s;
+ }
+*** ../vim-7.3.281/src/version.c 2011-08-17 15:23:16.000000000 +0200
+--- src/version.c 2011-08-17 16:24:04.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 282,
+ /**/
+
+--
+Why don't cannibals eat clowns?
+Because they taste funny.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.283 b/source/ap/vim/patches/7.3.283
new file mode 100644
index 000000000..1a3a6358c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.283
@@ -0,0 +1,114 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.283
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.283
+Problem: An expression mapping with a multi-byte character containing a
+ 0x80 byte gets messed up. (ZyX)
+Solution: Unescape the expression before evaluating it (Yukihiro Nakadaira)
+Files: src/getchar.c
+
+
+*** ../vim-7.3.282/src/getchar.c 2011-04-28 17:30:05.000000000 +0200
+--- src/getchar.c 2011-08-17 17:04:38.000000000 +0200
+***************
+*** 3262,3270 ****
+ validate_maphash();
+
+ /*
+! * find end of keys and skip CTRL-Vs (and backslashes) in it
+ * Accept backslash like CTRL-V when 'cpoptions' does not contain 'B'.
+! * with :unmap white space is included in the keys, no argument possible
+ */
+ p = keys;
+ do_backslash = (vim_strchr(p_cpo, CPO_BSLASH) == NULL);
+--- 3262,3270 ----
+ validate_maphash();
+
+ /*
+! * Find end of keys and skip CTRL-Vs (and backslashes) in it.
+ * Accept backslash like CTRL-V when 'cpoptions' does not contain 'B'.
+! * with :unmap white space is included in the keys, no argument possible.
+ */
+ p = keys;
+ do_backslash = (vim_strchr(p_cpo, CPO_BSLASH) == NULL);
+***************
+*** 4506,4517 ****
+--- 4506,4528 ----
+ {
+ char_u *res;
+ char_u *p;
++ char_u *expr;
+ char_u *save_cmd;
+ pos_T save_cursor;
+
++ /* Remove escaping of CSI, because "str" is in a format to be used as
++ * typeahead. */
++ expr = vim_strsave(str);
++ if (expr == NULL)
++ return NULL;
++ vim_unescape_csi(expr);
++
+ save_cmd = save_cmdline_alloc();
+ if (save_cmd == NULL)
++ {
++ vim_free(expr);
+ return NULL;
++ }
+
+ /* Forbid changing text or using ":normal" to avoid most of the bad side
+ * effects. Also restore the cursor position. */
+***************
+*** 4521,4527 ****
+ #endif
+ set_vim_var_char(c); /* set v:char to the typed character */
+ save_cursor = curwin->w_cursor;
+! p = eval_to_string(str, NULL, FALSE);
+ --textlock;
+ #ifdef FEAT_EX_EXTRA
+ --ex_normal_lock;
+--- 4532,4538 ----
+ #endif
+ set_vim_var_char(c); /* set v:char to the typed character */
+ save_cursor = curwin->w_cursor;
+! p = eval_to_string(expr, NULL, FALSE);
+ --textlock;
+ #ifdef FEAT_EX_EXTRA
+ --ex_normal_lock;
+***************
+*** 4529,4536 ****
+--- 4540,4550 ----
+ curwin->w_cursor = save_cursor;
+
+ restore_cmdline_alloc(save_cmd);
++ vim_free(expr);
++
+ if (p == NULL)
+ return NULL;
++ /* Escape CSI in the result to be able to use the string as typeahead. */
+ res = vim_strsave_escape_csi(p);
+ vim_free(p);
+
+*** ../vim-7.3.282/src/version.c 2011-08-17 16:25:43.000000000 +0200
+--- src/version.c 2011-08-17 17:17:03.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 283,
+ /**/
+
+--
+bashian roulette:
+$ ((RANDOM%6)) || rm -rf ~
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.284 b/source/ap/vim/patches/7.3.284
new file mode 100644
index 000000000..c621ced63
--- /dev/null
+++ b/source/ap/vim/patches/7.3.284
@@ -0,0 +1,211 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.284
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.284
+Problem: The str2special() function doesn't handle multi-byte characters
+ properly.
+Solution: Recognize multi-byte characters. (partly by Vladimir Vichniakov)
+Files: src/getchar.c, src/message.c, src/misc2.c
+
+
+*** ../vim-7.3.283/src/getchar.c 2011-08-17 17:18:14.000000000 +0200
+--- src/getchar.c 2011-08-17 20:11:58.000000000 +0200
+***************
+*** 3964,3970 ****
+ if (*mp->m_str == NUL)
+ msg_puts_attr((char_u *)"<Nop>", hl_attr(HLF_8));
+ else
+! msg_outtrans_special(mp->m_str, FALSE);
+ #ifdef FEAT_EVAL
+ if (p_verbose > 0)
+ last_set_msg(mp->m_script_ID);
+--- 3964,3980 ----
+ if (*mp->m_str == NUL)
+ msg_puts_attr((char_u *)"<Nop>", hl_attr(HLF_8));
+ else
+! {
+! /* Remove escaping of CSI, because "m_str" is in a format to be used
+! * as typeahead. */
+! char_u *s = vim_strsave(mp->m_str);
+! if (s != NULL)
+! {
+! vim_unescape_csi(s);
+! msg_outtrans_special(s, FALSE);
+! vim_free(s);
+! }
+! }
+ #ifdef FEAT_EVAL
+ if (p_verbose > 0)
+ last_set_msg(mp->m_script_ID);
+*** ../vim-7.3.283/src/message.c 2011-03-22 13:07:19.000000000 +0100
+--- src/message.c 2011-08-17 18:40:10.000000000 +0200
+***************
+*** 1547,1562 ****
+ if (IS_SPECIAL(c) || modifiers) /* special key */
+ special = TRUE;
+ }
+- *sp = str + 1;
+
+ #ifdef FEAT_MBYTE
+! /* For multi-byte characters check for an illegal byte. */
+! if (has_mbyte && MB_BYTE2LEN(*str) > (*mb_ptr2len)(str))
+ {
+! transchar_nonprint(buf, c);
+! return buf;
+ }
+ #endif
+
+ /* Make unprintable characters in <> form, also <M-Space> and <Tab>.
+ * Use <Space> only for lhs of a mapping. */
+--- 1547,1573 ----
+ if (IS_SPECIAL(c) || modifiers) /* special key */
+ special = TRUE;
+ }
+
+ #ifdef FEAT_MBYTE
+! if (has_mbyte && !IS_SPECIAL(c))
+ {
+! int len = (*mb_ptr2len)(str);
+!
+! /* For multi-byte characters check for an illegal byte. */
+! if (has_mbyte && MB_BYTE2LEN(*str) > len)
+! {
+! transchar_nonprint(buf, c);
+! *sp = str + 1;
+! return buf;
+! }
+! /* Since 'special' is TRUE the multi-byte character 'c' will be
+! * processed by get_special_key_name() */
+! c = (*mb_ptr2char)(str);
+! *sp = str + len;
+ }
++ else
+ #endif
++ *sp = str + 1;
+
+ /* Make unprintable characters in <> form, also <M-Space> and <Tab>.
+ * Use <Space> only for lhs of a mapping. */
+*** ../vim-7.3.283/src/misc2.c 2011-07-27 17:31:42.000000000 +0200
+--- src/misc2.c 2011-08-17 20:27:30.000000000 +0200
+***************
+*** 2754,2759 ****
+--- 2754,2760 ----
+ int bit;
+ int key;
+ unsigned long n;
++ int l;
+
+ src = *srcp;
+ if (src[0] != '<')
+***************
+*** 2766,2773 ****
+ if (*bp == '-')
+ {
+ last_dash = bp;
+! if (bp[1] != NUL && bp[2] == '>')
+! ++bp; /* anything accepted, like <C-?> */
+ }
+ if (bp[0] == 't' && bp[1] == '_' && bp[2] && bp[3])
+ bp += 3; /* skip t_xx, xx may be '-' or '>' */
+--- 2767,2783 ----
+ if (*bp == '-')
+ {
+ last_dash = bp;
+! if (bp[1] != NUL)
+! {
+! #ifdef FEAT_MBYTE
+! if (has_mbyte)
+! l = mb_ptr2len(bp + 1);
+! else
+! #endif
+! l = 1;
+! if (bp[l + 1] == '>')
+! bp += l; /* anything accepted, like <C-?> */
+! }
+ }
+ if (bp[0] == 't' && bp[1] == '_' && bp[2] && bp[3])
+ bp += 3; /* skip t_xx, xx may be '-' or '>' */
+***************
+*** 2777,2791 ****
+ {
+ end_of_name = bp + 1;
+
+- if (STRNICMP(src + 1, "char-", 5) == 0 && VIM_ISDIGIT(src[6]))
+- {
+- /* <Char-123> or <Char-033> or <Char-0x33> */
+- vim_str2nr(src + 6, NULL, NULL, TRUE, TRUE, NULL, &n);
+- *modp = 0;
+- *srcp = end_of_name;
+- return (int)n;
+- }
+-
+ /* Which modifiers are given? */
+ modifiers = 0x0;
+ for (bp = src + 1; bp < last_dash; bp++)
+--- 2787,2792 ----
+***************
+*** 2804,2814 ****
+ */
+ if (bp >= last_dash)
+ {
+ /*
+ * Modifier with single letter, or special key name.
+ */
+! if (modifiers != 0 && last_dash[2] == '>')
+! key = last_dash[1];
+ else
+ {
+ key = get_special_key_code(last_dash + 1);
+--- 2805,2831 ----
+ */
+ if (bp >= last_dash)
+ {
++ if (STRNICMP(last_dash + 1, "char-", 5) == 0
++ && VIM_ISDIGIT(last_dash[6]))
++ {
++ /* <Char-123> or <Char-033> or <Char-0x33> */
++ vim_str2nr(last_dash + 6, NULL, NULL, TRUE, TRUE, NULL, &n);
++ *modp = modifiers;
++ *srcp = end_of_name;
++ return (int)n;
++ }
++
+ /*
+ * Modifier with single letter, or special key name.
+ */
+! #ifdef FEAT_MBYTE
+! if (has_mbyte)
+! l = mb_ptr2len(last_dash + 1);
+! else
+! #endif
+! l = 1;
+! if (modifiers != 0 && last_dash[l + 1] == '>')
+! key = PTR2CHAR(last_dash + 1);
+ else
+ {
+ key = get_special_key_code(last_dash + 1);
+*** ../vim-7.3.283/src/version.c 2011-08-17 17:18:14.000000000 +0200
+--- src/version.c 2011-08-17 20:27:47.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 284,
+ /**/
+
+--
+Snoring is prohibited unless all bedroom windows are closed and securely
+locked.
+ [real standing law in Massachusetts, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.285 b/source/ap/vim/patches/7.3.285
new file mode 100644
index 000000000..24be28bc0
--- /dev/null
+++ b/source/ap/vim/patches/7.3.285
@@ -0,0 +1,144 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.285
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.285 (after 7.3.284)
+Problem: Mapping <Char-123> no longer works.
+Solution: Properly check for "char-". Add a test for it.
+Files: src/misc2.c, src/testdir/test75.in, src/testdir/test75.ok
+
+
+*** ../vim-7.3.284/src/misc2.c 2011-08-17 20:33:18.000000000 +0200
+--- src/misc2.c 2011-08-19 22:08:37.000000000 +0200
+***************
+*** 2781,2786 ****
+--- 2781,2792 ----
+ }
+ if (bp[0] == 't' && bp[1] == '_' && bp[2] && bp[3])
+ bp += 3; /* skip t_xx, xx may be '-' or '>' */
++ else if (STRNICMP(bp, "char-", 5) == 0)
++ {
++ vim_str2nr(bp + 5, NULL, &l, TRUE, TRUE, NULL, NULL);
++ bp += l + 5;
++ break;
++ }
+ }
+
+ if (*bp == '>') /* found matching '>' */
+***************
+*** 2810,2836 ****
+ {
+ /* <Char-123> or <Char-033> or <Char-0x33> */
+ vim_str2nr(last_dash + 6, NULL, NULL, TRUE, TRUE, NULL, &n);
+! *modp = modifiers;
+! *srcp = end_of_name;
+! return (int)n;
+ }
+-
+- /*
+- * Modifier with single letter, or special key name.
+- */
+- #ifdef FEAT_MBYTE
+- if (has_mbyte)
+- l = mb_ptr2len(last_dash + 1);
+- else
+- #endif
+- l = 1;
+- if (modifiers != 0 && last_dash[l + 1] == '>')
+- key = PTR2CHAR(last_dash + 1);
+ else
+ {
+! key = get_special_key_code(last_dash + 1);
+! if (!keep_x_key)
+! key = handle_x_keys(key);
+ }
+
+ /*
+--- 2816,2842 ----
+ {
+ /* <Char-123> or <Char-033> or <Char-0x33> */
+ vim_str2nr(last_dash + 6, NULL, NULL, TRUE, TRUE, NULL, &n);
+! key = (int)n;
+ }
+ else
+ {
+! /*
+! * Modifier with single letter, or special key name.
+! */
+! #ifdef FEAT_MBYTE
+! if (has_mbyte)
+! l = mb_ptr2len(last_dash + 1);
+! else
+! #endif
+! l = 1;
+! if (modifiers != 0 && last_dash[l + 1] == '>')
+! key = PTR2CHAR(last_dash + 1);
+! else
+! {
+! key = get_special_key_code(last_dash + 1);
+! if (!keep_x_key)
+! key = handle_x_keys(key);
+! }
+ }
+
+ /*
+*** ../vim-7.3.284/src/testdir/test75.in 2010-10-20 21:22:17.000000000 +0200
+--- src/testdir/test75.in 2011-08-19 22:05:13.000000000 +0200
+***************
+*** 2,7 ****
+--- 2,8 ----
+
+ STARTTEST
+ :so small.vim
++ :set cpo-=<
+ :" Test maparg() with a string result
+ :map foo<C-V> is<F4>foo
+ :vnoremap <script> <buffer> <expr> <silent> bar isbar
+***************
+*** 9,14 ****
+--- 10,20 ----
+ :call append('$', string(maparg('foo<C-V>', '', 0, 1)))
+ :call append('$', string(maparg('bar', '', 0, 1)))
+ :"
++ :map abc x<char-114>x
++ :call append('$', maparg('abc'))
++ :map abc y<S-char-114>y
++ :call append('$', maparg('abc'))
++ :"
+ :/^eof/+1,$w! test.out
+ :qa!
+ ENDTEST
+*** ../vim-7.3.284/src/testdir/test75.ok 2010-10-20 21:22:17.000000000 +0200
+--- src/testdir/test75.ok 2011-08-19 21:53:26.000000000 +0200
+***************
+*** 1,3 ****
+--- 1,5 ----
+ is<F4>foo
+ {'silent': 0, 'noremap': 0, 'lhs': 'foo<C-V>', 'mode': ' ', 'expr': 0, 'sid': 0, 'rhs': 'is<F4>foo', 'buffer': 0}
+ {'silent': 1, 'noremap': 1, 'lhs': 'bar', 'mode': 'v', 'expr': 1, 'sid': 0, 'rhs': 'isbar', 'buffer': 1}
++ xrx
++ yRy
+*** ../vim-7.3.284/src/version.c 2011-08-17 20:33:18.000000000 +0200
+--- src/version.c 2011-08-19 22:15:22.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 285,
+ /**/
+
+
+--
+No man may purchase alcohol without written consent from his wife.
+ [real standing law in Pennsylvania, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.286 b/source/ap/vim/patches/7.3.286
new file mode 100644
index 000000000..308d5105c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.286
@@ -0,0 +1,84 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.286
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.286
+Problem: Crash when using "zd" on a large number of folds. (Sam King)
+Solution: Recompute pointer after reallocating array. Move fewer entries
+ when making room.
+Files: src/fold.c
+
+
+*** ../vim-7.3.285/src/fold.c 2010-08-15 21:57:27.000000000 +0200
+--- src/fold.c 2011-08-26 16:03:56.000000000 +0200
+***************
+*** 1469,1479 ****
+ }
+ else
+ {
+! /* move nested folds one level up, to overwrite the fold that is
+ * deleted. */
+ moved = fp->fd_nested.ga_len;
+ if (ga_grow(gap, (int)(moved - 1)) == OK)
+ {
+ /* adjust fd_top and fd_flags for the moved folds */
+ nfp = (fold_T *)fp->fd_nested.ga_data;
+ for (i = 0; i < moved; ++i)
+--- 1469,1482 ----
+ }
+ else
+ {
+! /* Move nested folds one level up, to overwrite the fold that is
+ * deleted. */
+ moved = fp->fd_nested.ga_len;
+ if (ga_grow(gap, (int)(moved - 1)) == OK)
+ {
++ /* Get "fp" again, the array may have been reallocated. */
++ fp = (fold_T *)gap->ga_data + idx;
++
+ /* adjust fd_top and fd_flags for the moved folds */
+ nfp = (fold_T *)fp->fd_nested.ga_data;
+ for (i = 0; i < moved; ++i)
+***************
+*** 1486,1494 ****
+ }
+
+ /* move the existing folds down to make room */
+! if (idx < gap->ga_len)
+ mch_memmove(fp + moved, fp + 1,
+! sizeof(fold_T) * (gap->ga_len - idx));
+ /* move the contained folds one level up */
+ mch_memmove(fp, nfp, (size_t)(sizeof(fold_T) * moved));
+ vim_free(nfp);
+--- 1489,1497 ----
+ }
+
+ /* move the existing folds down to make room */
+! if (idx + 1 < gap->ga_len)
+ mch_memmove(fp + moved, fp + 1,
+! sizeof(fold_T) * (gap->ga_len - (idx + 1)));
+ /* move the contained folds one level up */
+ mch_memmove(fp, nfp, (size_t)(sizeof(fold_T) * moved));
+ vim_free(nfp);
+*** ../vim-7.3.285/src/version.c 2011-08-19 22:28:58.000000000 +0200
+--- src/version.c 2011-08-26 16:07:59.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 286,
+ /**/
+
+--
+To keep milk from turning sour: Keep it in the cow.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.287 b/source/ap/vim/patches/7.3.287
new file mode 100644
index 000000000..5c6da035f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.287
@@ -0,0 +1,100 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.287
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.287
+Problem: Can't compile with MSVC and tiny options.
+Solution: Move variables and #ifdefs. (Sergey Khorev)
+Files: src/os_win32.c
+
+
+*** ../vim-7.3.286/src/os_win32.c 2011-08-10 17:07:56.000000000 +0200
+--- src/os_win32.c 2011-08-27 15:07:28.000000000 +0200
+***************
+*** 3419,3426 ****
+ {
+ DWORD availableBytes = 0;
+ DWORD i;
+- int c;
+- char_u *p;
+ int ret;
+ DWORD len;
+ DWORD toRead;
+--- 3419,3424 ----
+***************
+*** 3479,3484 ****
+--- 3477,3484 ----
+ else if (has_mbyte)
+ {
+ int l;
++ int c;
++ char_u *p;
+
+ len += *buffer_off;
+ buffer[len] = NUL;
+***************
+*** 3558,3566 ****
+ int noread_cnt = 0;
+ garray_T ga;
+ int delay = 1;
+- # ifdef FEAT_MBYTE
+ DWORD buffer_off = 0; /* valid bytes in buffer[] */
+- # endif
+
+ SECURITY_ATTRIBUTES saAttr;
+
+--- 3558,3564 ----
+***************
+*** 3777,3790 ****
+
+ if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT)
+ {
+! dump_pipe(options, g_hChildStd_OUT_Rd,
+! &ga, buffer, &buffer_off);
+ break;
+ }
+
+ ++noread_cnt;
+! dump_pipe(options, g_hChildStd_OUT_Rd,
+! &ga, buffer, &buffer_off);
+
+ /* We start waiting for a very short time and then increase it, so
+ * that we respond quickly when the process is quick, and don't
+--- 3775,3786 ----
+
+ if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT)
+ {
+! dump_pipe(options, g_hChildStd_OUT_Rd, &ga, buffer, &buffer_off);
+ break;
+ }
+
+ ++noread_cnt;
+! dump_pipe(options, g_hChildStd_OUT_Rd, &ga, buffer, &buffer_off);
+
+ /* We start waiting for a very short time and then increase it, so
+ * that we respond quickly when the process is quick, and don't
+*** ../vim-7.3.286/src/version.c 2011-08-26 16:12:55.000000000 +0200
+--- src/version.c 2011-08-27 15:08:27.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 287,
+ /**/
+
+--
+SUPERIMPOSE "England AD 787". After a few more seconds we hear hoofbeats in
+the distance. They come slowly closer. Then out of the mist comes KING
+ARTHUR followed by a SERVANT who is banging two half coconuts together.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.288 b/source/ap/vim/patches/7.3.288
new file mode 100644
index 000000000..d1f662681
--- /dev/null
+++ b/source/ap/vim/patches/7.3.288
@@ -0,0 +1,76 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.288
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.288
+Problem: has('python') may give an error message for not being able to load
+ the library after using python3.
+Solution: Only give the error when the verbose argument is true.
+Files: src/if_python.c, src/if_python3.c
+
+
+*** ../vim-7.3.287/src/if_python.c 2011-06-19 00:27:46.000000000 +0200
+--- src/if_python.c 2011-08-21 17:03:52.000000000 +0200
+***************
+*** 368,374 ****
+ * standard C extension libraries of one or both python versions. */
+ if (python3_loaded())
+ {
+! EMSG(_("E836: This Vim cannot execute :python after using :py3"));
+ return FAIL;
+ }
+ #endif
+--- 368,375 ----
+ * standard C extension libraries of one or both python versions. */
+ if (python3_loaded())
+ {
+! if (verbose)
+! EMSG(_("E836: This Vim cannot execute :python after using :py3"));
+ return FAIL;
+ }
+ #endif
+*** ../vim-7.3.287/src/if_python3.c 2011-07-15 15:54:39.000000000 +0200
+--- src/if_python3.c 2011-08-21 17:05:19.000000000 +0200
+***************
+*** 367,373 ****
+ * standard C extension libraries of one or both python versions. */
+ if (python_loaded())
+ {
+! EMSG(_("E837: This Vim cannot execute :py3 after using :python"));
+ return FAIL;
+ }
+ # endif
+--- 367,374 ----
+ * standard C extension libraries of one or both python versions. */
+ if (python_loaded())
+ {
+! if (verbose)
+! EMSG(_("E837: This Vim cannot execute :py3 after using :python"));
+ return FAIL;
+ }
+ # endif
+*** ../vim-7.3.287/src/version.c 2011-08-27 15:10:00.000000000 +0200
+--- src/version.c 2011-08-28 15:59:11.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 288,
+ /**/
+
+--
+FIRST SOLDIER: So they wouldn't be able to bring a coconut back anyway.
+SECOND SOLDIER: Wait a minute! Suppose two swallows carried it together?
+FIRST SOLDIER: No, they'd have to have it on a line.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.289 b/source/ap/vim/patches/7.3.289
new file mode 100644
index 000000000..30258e429
--- /dev/null
+++ b/source/ap/vim/patches/7.3.289
@@ -0,0 +1,56 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.289
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.289
+Problem: Complete function isn't called when the leader changed.
+Solution: Call ins_compl_restart() when the leader changed. (Taro Muraoka)
+Files: src/edit.c
+
+
+*** ../vim-7.3.288/src/edit.c 2011-05-19 17:25:36.000000000 +0200
+--- src/edit.c 2011-08-28 15:53:47.000000000 +0200
+***************
+*** 3367,3372 ****
+--- 3367,3381 ----
+ ins_bytes(compl_leader + ins_compl_len());
+ compl_used_match = FALSE;
+
++ #ifdef FEAT_COMPL_FUNC
++ /*
++ * To call eval 'completefunc' when leader is changed, restart completion
++ * every time.
++ */
++ if (ctrl_x_mode == CTRL_X_FUNCTION || ctrl_x_mode == CTRL_X_OMNI)
++ ins_compl_restart();
++ #endif
++
+ if (compl_started)
+ ins_compl_set_original_text(compl_leader);
+ else
+*** ../vim-7.3.288/src/version.c 2011-08-28 16:00:14.000000000 +0200
+--- src/version.c 2011-08-28 16:01:22.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 289,
+ /**/
+
+--
+THEOREM: VI is perfect.
+PROOF: VI in roman numerals is 6. The natural numbers < 6 which divide 6 are
+1, 2, and 3. 1+2+3 = 6. So 6 is a perfect number. Therefore, VI is perfect.
+QED
+ -- Arthur Tateishi
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.290 b/source/ap/vim/patches/7.3.290
new file mode 100644
index 000000000..b50cacfc4
--- /dev/null
+++ b/source/ap/vim/patches/7.3.290
@@ -0,0 +1,75 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.290
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.290
+Problem: When a BufWriteCmd autocommand resets 'modified' this doesn't
+ change older buffer states to be marked as 'modified' like
+ ":write" does. (Yukihiro Nakadaira)
+Solution: When the BufWriteCmd resets 'modified' then adjust the undo
+ information like ":write" does.
+Files: src/fileio.c
+
+
+*** ../vim-7.3.289/src/fileio.c 2011-07-20 18:29:33.000000000 +0200
+--- src/fileio.c 2011-08-29 21:49:27.000000000 +0200
+***************
+*** 3342,3349 ****
+ }
+ else if (reset_changed && whole)
+ {
+! if (!(did_cmd = apply_autocmds_exarg(EVENT_BUFWRITECMD,
+! sfname, sfname, FALSE, curbuf, eap)))
+ {
+ #ifdef FEAT_QUICKFIX
+ if (overwriting && bt_nofile(curbuf))
+--- 3342,3363 ----
+ }
+ else if (reset_changed && whole)
+ {
+! int was_changed = curbufIsChanged();
+!
+! did_cmd = apply_autocmds_exarg(EVENT_BUFWRITECMD,
+! sfname, sfname, FALSE, curbuf, eap);
+! if (did_cmd)
+! {
+! if (was_changed && !curbufIsChanged())
+! {
+! /* Written everything correctly and BufWriteCmd has reset
+! * 'modified': Correct the undo information so that an
+! * undo now sets 'modified'. */
+! u_unchanged(curbuf);
+! u_update_save_nr(curbuf);
+! }
+! }
+! else
+ {
+ #ifdef FEAT_QUICKFIX
+ if (overwriting && bt_nofile(curbuf))
+*** ../vim-7.3.289/src/version.c 2011-08-28 16:02:23.000000000 +0200
+--- src/version.c 2011-09-02 11:37:25.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 290,
+ /**/
+
+--
+OLD WOMAN: Well, how did you become king, then?
+ARTHUR: The Lady of the Lake, her arm clad in the purest shimmering samite,
+ held Excalibur aloft from the bosom of the water to signify by Divine
+ Providence ... that I, Arthur, was to carry Excalibur ... That is
+ why I am your king!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.291 b/source/ap/vim/patches/7.3.291
new file mode 100644
index 000000000..1d394e4c9
--- /dev/null
+++ b/source/ap/vim/patches/7.3.291
@@ -0,0 +1,125 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.291
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.291
+Problem: Configure doesn't work properly with Python3.
+Solution: Put -ldl before $LDFLAGS. Add PY3_NO_RTLD_GLOBAL. (Roland
+ Puntaier)
+Files: src/config.h.in, src/auto/configure, src/configure.in
+
+
+*** ../vim-7.3.290/src/config.h.in 2010-10-27 16:49:41.000000000 +0200
+--- src/config.h.in 2011-09-02 11:22:21.000000000 +0200
+***************
+*** 346,351 ****
+--- 346,354 ----
+ /* Define if dynamic python does not require RTLD_GLOBAL */
+ #undef PY_NO_RTLD_GLOBAL
+
++ /* Define if dynamic python3 does not require RTLD_GLOBAL */
++ #undef PY3_NO_RTLD_GLOBAL
++
+ /* Define if you want to include the Ruby interpreter. */
+ #undef FEAT_RUBY
+
+*** ../vim-7.3.290/src/auto/configure 2011-07-15 13:09:46.000000000 +0200
+--- src/auto/configure 2011-09-02 11:23:15.000000000 +0200
+***************
+*** 5733,5739 ****
+ cflags_save=$CFLAGS
+ CFLAGS="$CFLAGS $PYTHON_CFLAGS"
+ ldflags_save=$LDFLAGS
+! LDFLAGS="$LDFLAGS -ldl"
+ if test "$cross_compiling" = yes; then :
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+--- 5733,5739 ----
+ cflags_save=$CFLAGS
+ CFLAGS="$CFLAGS $PYTHON_CFLAGS"
+ ldflags_save=$LDFLAGS
+! LDFLAGS="-ldl $LDFLAGS"
+ if test "$cross_compiling" = yes; then :
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+***************
+*** 5798,5804 ****
+ cflags_save=$CFLAGS
+ CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
+ ldflags_save=$LDFLAGS
+! LDFLAGS="$LDFLAGS -ldl"
+ if test "$cross_compiling" = yes; then :
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+--- 5798,5804 ----
+ cflags_save=$CFLAGS
+ CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
+ ldflags_save=$LDFLAGS
+! LDFLAGS="-ldl $LDFLAGS"
+ if test "$cross_compiling" = yes; then :
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+*** ../vim-7.3.290/src/configure.in 2011-07-15 13:09:46.000000000 +0200
+--- src/configure.in 2011-09-02 11:19:51.000000000 +0200
+***************
+*** 1161,1167 ****
+ cflags_save=$CFLAGS
+ CFLAGS="$CFLAGS $PYTHON_CFLAGS"
+ ldflags_save=$LDFLAGS
+! LDFLAGS="$LDFLAGS -ldl"
+ AC_RUN_IFELSE([
+ #include <dlfcn.h>
+ /* If this program fails, then RTLD_GLOBAL is needed.
+--- 1161,1168 ----
+ cflags_save=$CFLAGS
+ CFLAGS="$CFLAGS $PYTHON_CFLAGS"
+ ldflags_save=$LDFLAGS
+! dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
+! LDFLAGS="-ldl $LDFLAGS"
+ AC_RUN_IFELSE([
+ #include <dlfcn.h>
+ /* If this program fails, then RTLD_GLOBAL is needed.
+***************
+*** 1205,1211 ****
+ cflags_save=$CFLAGS
+ CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
+ ldflags_save=$LDFLAGS
+! LDFLAGS="$LDFLAGS -ldl"
+ AC_RUN_IFELSE([
+ #include <dlfcn.h>
+ #include <wchar.h>
+--- 1206,1213 ----
+ cflags_save=$CFLAGS
+ CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
+ ldflags_save=$LDFLAGS
+! dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
+! LDFLAGS="-ldl $LDFLAGS"
+ AC_RUN_IFELSE([
+ #include <dlfcn.h>
+ #include <wchar.h>
+*** ../vim-7.3.290/src/version.c 2011-09-02 11:56:15.000000000 +0200
+--- src/version.c 2011-09-02 12:25:13.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 291,
+ /**/
+
+--
+DENNIS: Look, strange women lying on their backs in ponds handing out
+ swords ... that's no basis for a system of government. Supreme
+ executive power derives from a mandate from the masses, not from some
+ farcical aquatic ceremony.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.292 b/source/ap/vim/patches/7.3.292
new file mode 100644
index 000000000..fc9480fee
--- /dev/null
+++ b/source/ap/vim/patches/7.3.292
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.292
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.292
+Problem: Crash when using fold markers and selecting a visual block that
+ includes a folded line and goes to end of line. (Sam Lidder)
+Solution: Check for the column to be MAXCOL. (James Vega)
+Files: src/screen.c
+
+
+*** ../vim-7.3.291/src/screen.c 2011-08-10 14:32:33.000000000 +0200
+--- src/screen.c 2011-09-02 13:58:18.000000000 +0200
+***************
+*** 2531,2537 ****
+ /* Visual block mode: highlight the chars part of the block */
+ if (wp->w_old_cursor_fcol + txtcol < (colnr_T)W_WIDTH(wp))
+ {
+! if (wp->w_old_cursor_lcol + txtcol < (colnr_T)W_WIDTH(wp))
+ len = wp->w_old_cursor_lcol;
+ else
+ len = W_WIDTH(wp) - txtcol;
+--- 2531,2539 ----
+ /* Visual block mode: highlight the chars part of the block */
+ if (wp->w_old_cursor_fcol + txtcol < (colnr_T)W_WIDTH(wp))
+ {
+! if (wp->w_old_cursor_lcol != MAXCOL
+! && wp->w_old_cursor_lcol + txtcol
+! < (colnr_T)W_WIDTH(wp))
+ len = wp->w_old_cursor_lcol;
+ else
+ len = W_WIDTH(wp) - txtcol;
+*** ../vim-7.3.291/src/version.c 2011-09-02 12:27:20.000000000 +0200
+--- src/version.c 2011-09-02 14:00:03.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 292,
+ /**/
+
+--
+Hacker: Someone skilled in computer programming (good guy).
+Cracker: A hacker that uses his skills to crack software (bad guy).
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.293 b/source/ap/vim/patches/7.3.293
new file mode 100644
index 000000000..4072e32f1
--- /dev/null
+++ b/source/ap/vim/patches/7.3.293
@@ -0,0 +1,74 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.293
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.293
+Problem: MSVC compiler has a problem with non-ASCII characters.
+Solution: Avoid non-ASCII characters. (Hong Xu)
+Files: src/ascii.h, src/spell.c
+
+
+*** ../vim-7.3.292/src/ascii.h 2011-05-10 16:41:13.000000000 +0200
+--- src/ascii.h 2011-09-02 14:12:48.000000000 +0200
+***************
+*** 123,129 ****
+ #define DCS 0x90 /* Device Control String */
+ #define STERM 0x9c /* String Terminator */
+
+! #define POUND '£'
+
+ #define CTRL_F_STR "\056"
+ #define CTRL_H_STR "\026"
+--- 123,129 ----
+ #define DCS 0x90 /* Device Control String */
+ #define STERM 0x9c /* String Terminator */
+
+! #define POUND '\xA3'
+
+ #define CTRL_F_STR "\056"
+ #define CTRL_H_STR "\026"
+*** ../vim-7.3.292/src/spell.c 2011-04-11 21:35:03.000000000 +0200
+--- src/spell.c 2011-09-02 14:13:30.000000000 +0200
+***************
+*** 11197,11203 ****
+ c = *s++;
+
+ #ifdef FEAT_MBYTE
+! /* We only change ß to SS when we are certain latin1 is used. It
+ * would cause weird errors in other 8-bit encodings. */
+ if (enc_latin1like && c == 0xdf)
+ {
+--- 11197,11203 ----
+ c = *s++;
+
+ #ifdef FEAT_MBYTE
+! /* We only change 0xdf to SS when we are certain latin1 is used. It
+ * would cause weird errors in other 8-bit encodings. */
+ if (enc_latin1like && c == 0xdf)
+ {
+*** ../vim-7.3.292/src/version.c 2011-09-02 14:07:31.000000000 +0200
+--- src/version.c 2011-09-02 14:13:57.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 293,
+ /**/
+
+--
+ A village. Sound of chanting of Latin canon, punctuated by short, sharp
+ cracks. It comes nearer. We see it is a line of MONKS ala SEVENTH SEAL
+ flagellation scene, chanting and banging themselves on the foreheads with
+ wooden boards.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.294 b/source/ap/vim/patches/7.3.294
new file mode 100644
index 000000000..84252ba3e
--- /dev/null
+++ b/source/ap/vim/patches/7.3.294
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.294
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.294 (after 7.3.289)
+Problem: Patch 289 causes more problems than it solves.
+Solution: Rever the patch untill a better solution is found.
+Files: src/edit.c
+
+
+*** ../vim-7.3.293/src/edit.c 2011-08-28 16:02:23.000000000 +0200
+--- src/edit.c 2011-09-05 20:07:49.000000000 +0200
+***************
+*** 3367,3381 ****
+ ins_bytes(compl_leader + ins_compl_len());
+ compl_used_match = FALSE;
+
+- #ifdef FEAT_COMPL_FUNC
+- /*
+- * To call eval 'completefunc' when leader is changed, restart completion
+- * every time.
+- */
+- if (ctrl_x_mode == CTRL_X_FUNCTION || ctrl_x_mode == CTRL_X_OMNI)
+- ins_compl_restart();
+- #endif
+-
+ if (compl_started)
+ ins_compl_set_original_text(compl_leader);
+ else
+--- 3367,3372 ----
+*** ../vim-7.3.293/src/version.c 2011-09-02 14:18:14.000000000 +0200
+--- src/version.c 2011-09-05 20:08:27.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 294,
+ /**/
+
+--
+Scientists decoded the first message from an alien civilization:
+ SIMPLY SEND 6 TIMES 10 TO THE 50 ATOMS OF HYDROGEN TO THE STAR
+SYSTEM AT THE TOP OF THE LIST, CROSS OFF THAT STAR SYSTEM, THEN PUT
+YOUR STAR SYSTEM AT THE BOTTOM OF THE LIST AND SEND IT TO 100 OTHER
+STAR SYSTEMS. WITHIN ONE TENTH GALACTIC ROTATION YOU WILL RECEIVE
+ENOUGH HYDROGREN TO POWER YOUR CIVILIZATION UNTIL ENTROPY REACHES ITS
+MAXIMUM! IT REALLY WORKS!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.295 b/source/ap/vim/patches/7.3.295
new file mode 100644
index 000000000..fad7ea3e4
--- /dev/null
+++ b/source/ap/vim/patches/7.3.295
@@ -0,0 +1,109 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.295
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.295
+Problem: When filtering text with an external command Vim may not read all
+ the output.
+Solution: When select() is interrupted loop and try again. (James Vega)
+Files: src/os_unix.c
+
+
+*** ../vim-7.3.294/src/os_unix.c 2011-08-04 20:31:50.000000000 +0200
+--- src/os_unix.c 2011-09-07 13:34:09.000000000 +0200
+***************
+*** 4819,4825 ****
+
+ /*
+ * Wait "msec" msec until a character is available from file descriptor "fd".
+! * Time == -1 will block forever.
+ * When a GUI is being used, this will not be used for input -- webb
+ * Returns also, when a request from Sniff is waiting -- toni.
+ * Or when a Linux GPM mouse event is waiting.
+--- 4819,4826 ----
+
+ /*
+ * Wait "msec" msec until a character is available from file descriptor "fd".
+! * "msec" == 0 will check for characters once.
+! * "msec" == -1 will block until a character is available.
+ * When a GUI is being used, this will not be used for input -- webb
+ * Returns also, when a request from Sniff is waiting -- toni.
+ * Or when a Linux GPM mouse event is waiting.
+***************
+*** 5057,5063 ****
+ /*
+ * Select on ready for reading and exceptional condition (end of file).
+ */
+! FD_ZERO(&rfds); /* calls bzero() on a sun */
+ FD_ZERO(&efds);
+ FD_SET(fd, &rfds);
+ # if !defined(__QNX__) && !defined(__CYGWIN32__)
+--- 5058,5065 ----
+ /*
+ * Select on ready for reading and exceptional condition (end of file).
+ */
+! select_eintr:
+! FD_ZERO(&rfds);
+ FD_ZERO(&efds);
+ FD_SET(fd, &rfds);
+ # if !defined(__QNX__) && !defined(__CYGWIN32__)
+***************
+*** 5117,5122 ****
+--- 5119,5132 ----
+ # else
+ ret = select(maxfd + 1, &rfds, NULL, &efds, tvp);
+ # endif
++ # ifdef EINTR
++ if (ret == -1 && errno == EINTR)
++ /* Interrupted by a signal, need to try again. We ignore msec
++ * here, because we do want to check even after a timeout if
++ * characters are available. Needed for reading output of an
++ * external command after the process has finished. */
++ goto select_eintr;
++ # endif
+ # ifdef __TANDEM
+ if (ret == -1 && errno == ENOTSUP)
+ {
+***************
+*** 5124,5130 ****
+ FD_ZERO(&efds);
+ ret = 0;
+ }
+! #endif
+ # ifdef FEAT_MZSCHEME
+ if (ret == 0 && mzquantum_used)
+ /* loop if MzThreads must be scheduled and timeout occurred */
+--- 5134,5140 ----
+ FD_ZERO(&efds);
+ ret = 0;
+ }
+! # endif
+ # ifdef FEAT_MZSCHEME
+ if (ret == 0 && mzquantum_used)
+ /* loop if MzThreads must be scheduled and timeout occurred */
+*** ../vim-7.3.294/src/version.c 2011-09-05 20:13:37.000000000 +0200
+--- src/version.c 2011-09-07 14:05:05.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 295,
+ /**/
+
+--
+"You're fired." (1980)
+"You're laid off." (1985)
+"You're downsized." (1990)
+"You're rightsized." (1992)
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.296 b/source/ap/vim/patches/7.3.296
new file mode 100644
index 000000000..80369d1af
--- /dev/null
+++ b/source/ap/vim/patches/7.3.296
@@ -0,0 +1,222 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.296
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.296
+Problem: When writing to an external command a zombie process may be left
+ behind.
+Solution: Wait on the process. (James Vega)
+Files: src/os_unix.c
+
+
+*** ../vim-7.3.295/src/os_unix.c 2011-09-07 14:06:38.000000000 +0200
+--- src/os_unix.c 2011-09-07 14:54:11.000000000 +0200
+***************
+*** 154,159 ****
+--- 154,166 ----
+
+ static void may_core_dump __ARGS((void));
+
++ #ifdef HAVE_UNION_WAIT
++ typedef union wait waitstatus;
++ #else
++ typedef int waitstatus;
++ #endif
++ static int wait4pid __ARGS((pid_t, waitstatus *));
++
+ static int WaitForChar __ARGS((long));
+ #if defined(__BEOS__)
+ int RealWaitForChar __ARGS((int, long, int *));
+***************
+*** 3660,3665 ****
+--- 3667,3713 ----
+ /* Nothing to do. */
+ }
+
++ /*
++ * Wait for process "child" to end.
++ * Return "child" if it exited properly, <= 0 on error.
++ */
++ static pid_t
++ wait4pid(child, status)
++ pid_t child;
++ waitstatus *status;
++ {
++ pid_t wait_pid = 0;
++
++ while (wait_pid != child)
++ {
++ # ifdef _THREAD_SAFE
++ /* Ugly hack: when compiled with Python threads are probably
++ * used, in which case wait() sometimes hangs for no obvious
++ * reason. Use waitpid() instead and loop (like the GUI). */
++ # ifdef __NeXT__
++ wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0);
++ # else
++ wait_pid = waitpid(child, status, WNOHANG);
++ # endif
++ if (wait_pid == 0)
++ {
++ /* Wait for 1/100 sec before trying again. */
++ mch_delay(10L, TRUE);
++ continue;
++ }
++ # else
++ wait_pid = wait(status);
++ # endif
++ if (wait_pid <= 0
++ # ifdef ECHILD
++ && errno == ECHILD
++ # endif
++ )
++ break;
++ }
++ return wait_pid;
++ }
++
+ int
+ mch_call_shell(cmd, options)
+ char_u *cmd;
+***************
+*** 4234,4240 ****
+ {
+ MSG_PUTS(_("\nCannot fork\n"));
+ }
+! else if (wpid == 0)
+ {
+ linenr_T lnum = curbuf->b_op_start.lnum;
+ int written = 0;
+--- 4282,4288 ----
+ {
+ MSG_PUTS(_("\nCannot fork\n"));
+ }
+! else if (wpid == 0) /* child */
+ {
+ linenr_T lnum = curbuf->b_op_start.lnum;
+ int written = 0;
+***************
+*** 4242,4248 ****
+ char_u *s;
+ size_t l;
+
+- /* child */
+ close(fromshell_fd);
+ for (;;)
+ {
+--- 4290,4295 ----
+***************
+*** 4287,4293 ****
+ }
+ _exit(0);
+ }
+! else
+ {
+ close(toshell_fd);
+ toshell_fd = -1;
+--- 4334,4340 ----
+ }
+ _exit(0);
+ }
+! else /* parent */
+ {
+ close(toshell_fd);
+ toshell_fd = -1;
+***************
+*** 4584,4590 ****
+ * typed characters (otherwise we would lose typeahead).
+ */
+ # ifdef __NeXT__
+! wait_pid = wait4(pid, &status, WNOHANG, (struct rusage *) 0);
+ # else
+ wait_pid = waitpid(pid, &status, WNOHANG);
+ # endif
+--- 4631,4637 ----
+ * typed characters (otherwise we would lose typeahead).
+ */
+ # ifdef __NeXT__
+! wait_pid = wait4(pid, &status, WNOHANG, (struct rusage *)0);
+ # else
+ wait_pid = waitpid(pid, &status, WNOHANG);
+ # endif
+***************
+*** 4633,4665 ****
+ * Don't wait if wait_pid was already set above, indicating the
+ * child already exited.
+ */
+! while (wait_pid != pid)
+! {
+! # ifdef _THREAD_SAFE
+! /* Ugly hack: when compiled with Python threads are probably
+! * used, in which case wait() sometimes hangs for no obvious
+! * reason. Use waitpid() instead and loop (like the GUI). */
+! # ifdef __NeXT__
+! wait_pid = wait4(pid, &status, WNOHANG, (struct rusage *)0);
+! # else
+! wait_pid = waitpid(pid, &status, WNOHANG);
+! # endif
+! if (wait_pid == 0)
+! {
+! /* Wait for 1/100 sec before trying again. */
+! mch_delay(10L, TRUE);
+! continue;
+! }
+! # else
+! wait_pid = wait(&status);
+! # endif
+! if (wait_pid <= 0
+! # ifdef ECHILD
+! && errno == ECHILD
+! # endif
+! )
+! break;
+! }
+
+ # ifdef FEAT_GUI
+ /* Close slave side of pty. Only do this after the child has
+--- 4680,4687 ----
+ * Don't wait if wait_pid was already set above, indicating the
+ * child already exited.
+ */
+! if (wait_pid != pid)
+! wait_pid = wait4pid(pid, &status);
+
+ # ifdef FEAT_GUI
+ /* Close slave side of pty. Only do this after the child has
+***************
+*** 4672,4678 ****
+--- 4694,4703 ----
+ /* Make sure the child that writes to the external program is
+ * dead. */
+ if (wpid > 0)
++ {
+ kill(wpid, SIGKILL);
++ wait4pid(wpid, NULL);
++ }
+
+ /*
+ * Set to raw mode right now, otherwise a CTRL-C after
+*** ../vim-7.3.295/src/version.c 2011-09-07 14:06:39.000000000 +0200
+--- src/version.c 2011-09-07 15:03:24.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 296,
+ /**/
+
+--
+If your company is not involved in something called "ISO 9000" you probably
+have no idea what it is. If your company _is_ involved in ISO 9000 then you
+definitely have no idea what it is.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.297 b/source/ap/vim/patches/7.3.297
new file mode 100644
index 000000000..09be76841
--- /dev/null
+++ b/source/ap/vim/patches/7.3.297
@@ -0,0 +1,130 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.297
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.297
+Problem: Can't load Perl 5.14 dynamically.
+Solution: Add code in #ifdefs. (Charles Cooper)
+Files: if_perl.xs
+
+
+*** ../vim-7.3.296/src/if_perl.xs 2011-07-27 14:15:41.000000000 +0200
+--- src/if_perl.xs 2011-09-07 18:47:07.000000000 +0200
+***************
+*** 147,153 ****
+--- 147,158 ----
+ # define Perl_save_int dll_Perl_save_int
+ # define Perl_stack_grow dll_Perl_stack_grow
+ # define Perl_set_context dll_Perl_set_context
++ # if (PERL_REVISION == 5) && (PERL_VERSION >= 14)
++ # define Perl_sv_2bool_flags dll_Perl_sv_2bool_flags
++ # define Perl_xs_apiversion_bootcheck dll_Perl_xs_apiversion_bootcheck
++ # else
+ # define Perl_sv_2bool dll_Perl_sv_2bool
++ # endif
+ # define Perl_sv_2iv dll_Perl_sv_2iv
+ # define Perl_sv_2mortal dll_Perl_sv_2mortal
+ # if (PERL_REVISION == 5) && (PERL_VERSION >= 8)
+***************
+*** 252,258 ****
+--- 257,268 ----
+ static void (*Perl_save_int)(pTHX_ int*);
+ static SV** (*Perl_stack_grow)(pTHX_ SV**, SV**p, int);
+ static SV** (*Perl_set_context)(void*);
++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 14)
++ static bool (*Perl_sv_2bool_flags)(pTHX_ SV*, I32);
++ static void (*Perl_xs_apiversion_bootcheck)(pTHX_ SV *module, const char *api_p, STRLEN api_len);
++ #else
+ static bool (*Perl_sv_2bool)(pTHX_ SV*);
++ #endif
+ static IV (*Perl_sv_2iv)(pTHX_ SV*);
+ static SV* (*Perl_sv_2mortal)(pTHX_ SV*);
+ #if (PERL_REVISION == 5) && (PERL_VERSION >= 8)
+***************
+*** 360,366 ****
+--- 370,381 ----
+ {"Perl_save_int", (PERL_PROC*)&Perl_save_int},
+ {"Perl_stack_grow", (PERL_PROC*)&Perl_stack_grow},
+ {"Perl_set_context", (PERL_PROC*)&Perl_set_context},
++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 14)
++ {"Perl_sv_2bool_flags", (PERL_PROC*)&Perl_sv_2bool_flags},
++ {"Perl_xs_apiversion_bootcheck",(PERL_PROC*)&Perl_xs_apiversion_bootcheck},
++ #else
+ {"Perl_sv_2bool", (PERL_PROC*)&Perl_sv_2bool},
++ #endif
+ {"Perl_sv_2iv", (PERL_PROC*)&Perl_sv_2iv},
+ {"Perl_sv_2mortal", (PERL_PROC*)&Perl_sv_2mortal},
+ #if (PERL_REVISION == 5) && (PERL_VERSION >= 8)
+***************
+*** 407,412 ****
+--- 422,430 ----
+ {"Perl_sv_free2", (PERL_PROC*)&Perl_sv_free2},
+ {"Perl_sys_init", (PERL_PROC*)&Perl_sys_init},
+ {"Perl_sys_term", (PERL_PROC*)&Perl_sys_term},
++ {"Perl_call_list", (PERL_PROC*)&Perl_call_list},
++ # if (PERL_REVISION == 5) && (PERL_VERSION >= 14)
++ # else
+ {"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr},
+ {"Perl_Istack_max_ptr", (PERL_PROC*)&Perl_Istack_max_ptr},
+ {"Perl_Istack_base_ptr", (PERL_PROC*)&Perl_Istack_base_ptr},
+***************
+*** 418,432 ****
+ {"Perl_Imarkstack_max_ptr", (PERL_PROC*)&Perl_Imarkstack_max_ptr},
+ {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr},
+ {"Perl_Iop_ptr", (PERL_PROC*)&Perl_Iop_ptr},
+- {"Perl_call_list", (PERL_PROC*)&Perl_call_list},
+ {"Perl_Iscopestack_ix_ptr", (PERL_PROC*)&Perl_Iscopestack_ix_ptr},
+ {"Perl_Iunitcheckav_ptr", (PERL_PROC*)&Perl_Iunitcheckav_ptr},
+ #endif
+ {"Perl_Idefgv_ptr", (PERL_PROC*)&Perl_Idefgv_ptr},
+ {"Perl_Ierrgv_ptr", (PERL_PROC*)&Perl_Ierrgv_ptr},
+ {"Perl_Isv_yes_ptr", (PERL_PROC*)&Perl_Isv_yes_ptr},
+- {"boot_DynaLoader", (PERL_PROC*)&boot_DynaLoader},
+ {"Perl_Gthr_key_ptr", (PERL_PROC*)&Perl_Gthr_key_ptr},
+ {"", NULL},
+ };
+
+--- 436,453 ----
+ {"Perl_Imarkstack_max_ptr", (PERL_PROC*)&Perl_Imarkstack_max_ptr},
+ {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr},
+ {"Perl_Iop_ptr", (PERL_PROC*)&Perl_Iop_ptr},
+ {"Perl_Iscopestack_ix_ptr", (PERL_PROC*)&Perl_Iscopestack_ix_ptr},
+ {"Perl_Iunitcheckav_ptr", (PERL_PROC*)&Perl_Iunitcheckav_ptr},
++ # endif
+ #endif
++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 14)
++ #else
+ {"Perl_Idefgv_ptr", (PERL_PROC*)&Perl_Idefgv_ptr},
+ {"Perl_Ierrgv_ptr", (PERL_PROC*)&Perl_Ierrgv_ptr},
+ {"Perl_Isv_yes_ptr", (PERL_PROC*)&Perl_Isv_yes_ptr},
+ {"Perl_Gthr_key_ptr", (PERL_PROC*)&Perl_Gthr_key_ptr},
++ #endif
++ {"boot_DynaLoader", (PERL_PROC*)&boot_DynaLoader},
+ {"", NULL},
+ };
+
+*** ../vim-7.3.296/src/version.c 2011-09-07 15:04:26.000000000 +0200
+--- src/version.c 2011-09-07 18:45:28.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 297,
+ /**/
+
+--
+At some point in the project somebody will start whining about the need to
+determine the project "requirements". This involves interviewing people who
+don't know what they want but, curiously, know exactly when they need it.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.298 b/source/ap/vim/patches/7.3.298
new file mode 100644
index 000000000..65a51aa04
--- /dev/null
+++ b/source/ap/vim/patches/7.3.298
@@ -0,0 +1,167 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.298
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.298
+Problem: Built-in colors are different from rgb.txt.
+Solution: Adjust the color values. (Benjamin Haskell)
+Files: src/gui_photon.c, src/gui_w48.c
+
+
+*** ../vim-7.3.297/src/gui_photon.c 2011-08-10 12:19:00.000000000 +0200
+--- src/gui_photon.c 2011-09-07 18:55:09.000000000 +0200
+***************
+*** 2007,2014 ****
+ static GuiColourTable table[] =
+ {
+ {"Black", RGB(0x00, 0x00, 0x00)},
+! {"DarkGray", RGB(0x80, 0x80, 0x80)},
+! {"DarkGrey", RGB(0x80, 0x80, 0x80)},
+ {"Gray", RGB(0xC0, 0xC0, 0xC0)},
+ {"Grey", RGB(0xC0, 0xC0, 0xC0)},
+ {"LightGray", RGB(0xD3, 0xD3, 0xD3)},
+--- 2007,2014 ----
+ static GuiColourTable table[] =
+ {
+ {"Black", RGB(0x00, 0x00, 0x00)},
+! {"DarkGray", RGB(0xA9, 0xA9, 0xA9)},
+! {"DarkGrey", RGB(0xA9, 0xA9, 0xA9)},
+ {"Gray", RGB(0xC0, 0xC0, 0xC0)},
+ {"Grey", RGB(0xC0, 0xC0, 0xC0)},
+ {"LightGray", RGB(0xD3, 0xD3, 0xD3)},
+***************
+*** 2037,2055 ****
+ {"LightRed", RGB(0xFF, 0xA0, 0xA0)},
+ {"DarkBlue", RGB(0x00, 0x00, 0x80)},
+ {"Blue", RGB(0x00, 0x00, 0xFF)},
+! {"LightBlue", RGB(0xA0, 0xA0, 0xFF)},
+ {"DarkGreen", RGB(0x00, 0x80, 0x00)},
+ {"Green", RGB(0x00, 0xFF, 0x00)},
+! {"LightGreen", RGB(0xA0, 0xFF, 0xA0)},
+ {"DarkCyan", RGB(0x00, 0x80, 0x80)},
+ {"Cyan", RGB(0x00, 0xFF, 0xFF)},
+! {"LightCyan", RGB(0xA0, 0xFF, 0xFF)},
+ {"DarkMagenta", RGB(0x80, 0x00, 0x80)},
+ {"Magenta", RGB(0xFF, 0x00, 0xFF)},
+ {"LightMagenta", RGB(0xFF, 0xA0, 0xFF)},
+ {"Brown", RGB(0x80, 0x40, 0x40)},
+ {"Yellow", RGB(0xFF, 0xFF, 0x00)},
+! {"LightYellow", RGB(0xFF, 0xFF, 0xA0)},
+ {"SeaGreen", RGB(0x2E, 0x8B, 0x57)},
+ {"Orange", RGB(0xFF, 0xA5, 0x00)},
+ {"Purple", RGB(0xA0, 0x20, 0xF0)},
+--- 2037,2055 ----
+ {"LightRed", RGB(0xFF, 0xA0, 0xA0)},
+ {"DarkBlue", RGB(0x00, 0x00, 0x80)},
+ {"Blue", RGB(0x00, 0x00, 0xFF)},
+! {"LightBlue", RGB(0xAD, 0xD8, 0xE6)},
+ {"DarkGreen", RGB(0x00, 0x80, 0x00)},
+ {"Green", RGB(0x00, 0xFF, 0x00)},
+! {"LightGreen", RGB(0x90, 0xEE, 0x90)},
+ {"DarkCyan", RGB(0x00, 0x80, 0x80)},
+ {"Cyan", RGB(0x00, 0xFF, 0xFF)},
+! {"LightCyan", RGB(0xE0, 0xFF, 0xFF)},
+ {"DarkMagenta", RGB(0x80, 0x00, 0x80)},
+ {"Magenta", RGB(0xFF, 0x00, 0xFF)},
+ {"LightMagenta", RGB(0xFF, 0xA0, 0xFF)},
+ {"Brown", RGB(0x80, 0x40, 0x40)},
+ {"Yellow", RGB(0xFF, 0xFF, 0x00)},
+! {"LightYellow", RGB(0xFF, 0xFF, 0xE0)},
+ {"SeaGreen", RGB(0x2E, 0x8B, 0x57)},
+ {"Orange", RGB(0xFF, 0xA5, 0x00)},
+ {"Purple", RGB(0xA0, 0x20, 0xF0)},
+*** ../vim-7.3.297/src/gui_w48.c 2011-08-10 17:07:56.000000000 +0200
+--- src/gui_w48.c 2011-09-07 18:55:09.000000000 +0200
+***************
+*** 1411,1422 ****
+ static guicolor_tTable table[] =
+ {
+ {"Black", RGB(0x00, 0x00, 0x00)},
+! {"DarkGray", RGB(0x80, 0x80, 0x80)},
+! {"DarkGrey", RGB(0x80, 0x80, 0x80)},
+ {"Gray", RGB(0xC0, 0xC0, 0xC0)},
+ {"Grey", RGB(0xC0, 0xC0, 0xC0)},
+! {"LightGray", RGB(0xE0, 0xE0, 0xE0)},
+! {"LightGrey", RGB(0xE0, 0xE0, 0xE0)},
+ {"Gray10", RGB(0x1A, 0x1A, 0x1A)},
+ {"Grey10", RGB(0x1A, 0x1A, 0x1A)},
+ {"Gray20", RGB(0x33, 0x33, 0x33)},
+--- 1411,1422 ----
+ static guicolor_tTable table[] =
+ {
+ {"Black", RGB(0x00, 0x00, 0x00)},
+! {"DarkGray", RGB(0xA9, 0xA9, 0xA9)},
+! {"DarkGrey", RGB(0xA9, 0xA9, 0xA9)},
+ {"Gray", RGB(0xC0, 0xC0, 0xC0)},
+ {"Grey", RGB(0xC0, 0xC0, 0xC0)},
+! {"LightGray", RGB(0xD3, 0xD3, 0xD3)},
+! {"LightGrey", RGB(0xD3, 0xD3, 0xD3)},
+ {"Gray10", RGB(0x1A, 0x1A, 0x1A)},
+ {"Grey10", RGB(0x1A, 0x1A, 0x1A)},
+ {"Gray20", RGB(0x33, 0x33, 0x33)},
+***************
+*** 1441,1459 ****
+ {"LightRed", RGB(0xFF, 0xA0, 0xA0)},
+ {"DarkBlue", RGB(0x00, 0x00, 0x80)},
+ {"Blue", RGB(0x00, 0x00, 0xFF)},
+! {"LightBlue", RGB(0xA0, 0xA0, 0xFF)},
+ {"DarkGreen", RGB(0x00, 0x80, 0x00)},
+ {"Green", RGB(0x00, 0xFF, 0x00)},
+! {"LightGreen", RGB(0xA0, 0xFF, 0xA0)},
+ {"DarkCyan", RGB(0x00, 0x80, 0x80)},
+ {"Cyan", RGB(0x00, 0xFF, 0xFF)},
+! {"LightCyan", RGB(0xA0, 0xFF, 0xFF)},
+ {"DarkMagenta", RGB(0x80, 0x00, 0x80)},
+ {"Magenta", RGB(0xFF, 0x00, 0xFF)},
+ {"LightMagenta", RGB(0xFF, 0xA0, 0xFF)},
+ {"Brown", RGB(0x80, 0x40, 0x40)},
+ {"Yellow", RGB(0xFF, 0xFF, 0x00)},
+! {"LightYellow", RGB(0xFF, 0xFF, 0xA0)},
+ {"DarkYellow", RGB(0xBB, 0xBB, 0x00)},
+ {"SeaGreen", RGB(0x2E, 0x8B, 0x57)},
+ {"Orange", RGB(0xFF, 0xA5, 0x00)},
+--- 1441,1459 ----
+ {"LightRed", RGB(0xFF, 0xA0, 0xA0)},
+ {"DarkBlue", RGB(0x00, 0x00, 0x80)},
+ {"Blue", RGB(0x00, 0x00, 0xFF)},
+! {"LightBlue", RGB(0xAD, 0xD8, 0xE6)},
+ {"DarkGreen", RGB(0x00, 0x80, 0x00)},
+ {"Green", RGB(0x00, 0xFF, 0x00)},
+! {"LightGreen", RGB(0x90, 0xEE, 0x90)},
+ {"DarkCyan", RGB(0x00, 0x80, 0x80)},
+ {"Cyan", RGB(0x00, 0xFF, 0xFF)},
+! {"LightCyan", RGB(0xE0, 0xFF, 0xFF)},
+ {"DarkMagenta", RGB(0x80, 0x00, 0x80)},
+ {"Magenta", RGB(0xFF, 0x00, 0xFF)},
+ {"LightMagenta", RGB(0xFF, 0xA0, 0xFF)},
+ {"Brown", RGB(0x80, 0x40, 0x40)},
+ {"Yellow", RGB(0xFF, 0xFF, 0x00)},
+! {"LightYellow", RGB(0xFF, 0xFF, 0xE0)},
+ {"DarkYellow", RGB(0xBB, 0xBB, 0x00)},
+ {"SeaGreen", RGB(0x2E, 0x8B, 0x57)},
+ {"Orange", RGB(0xFF, 0xA5, 0x00)},
+*** ../vim-7.3.297/src/version.c 2011-09-07 18:47:19.000000000 +0200
+--- src/version.c 2011-09-07 18:55:27.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 298,
+ /**/
+
+--
+You can test a person's importance in the organization by asking how much RAM
+his computer has. Anybody who knows the answer to that question is not a
+decision-maker.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.299 b/source/ap/vim/patches/7.3.299
new file mode 100644
index 000000000..4f755d909
--- /dev/null
+++ b/source/ap/vim/patches/7.3.299
@@ -0,0 +1,516 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.299
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.299
+Problem: Source code not in Vim style.
+Solution: Adjust the style. (Elias Diem)
+Files: src/gui_photon.c
+
+
+*** ../vim-7.3.298/src/gui_photon.c 2011-09-07 18:58:24.000000000 +0200
+--- src/gui_photon.c 2011-09-07 19:02:59.000000000 +0200
+***************
+*** 535,547 ****
+ &src_taken,
+ buf,
+ 6,
+! &dst_made );
+
+! add_to_input_buf( buf, dst_made );
+ }
+ else
+ {
+! add_to_input_buf( string, len );
+ }
+
+ return Pt_CONSUME;
+--- 535,547 ----
+ &src_taken,
+ buf,
+ 6,
+! &dst_made);
+
+! add_to_input_buf(buf, dst_made);
+ }
+ else
+ {
+! add_to_input_buf(string, len);
+ }
+
+ return Pt_CONSUME;
+***************
+*** 549,579 ****
+ len = 0;
+ #endif
+ ch = key->key_cap;
+! if( ch < 0xff )
+ {
+ /* FIXME: is this the right thing to do? */
+! if( modifiers & MOD_MASK_CTRL )
+ {
+ modifiers &= ~MOD_MASK_CTRL;
+
+! if( ( ch >= 'a' && ch <= 'z' ) ||
+ ch == '[' ||
+ ch == ']' ||
+! ch == '\\' )
+! ch = Ctrl_chr( ch );
+! else if( ch == '2' )
+ ch = NUL;
+! else if( ch == '6' )
+ ch = 0x1e;
+! else if( ch == '-' )
+ ch = 0x1f;
+ else
+ modifiers |= MOD_MASK_CTRL;
+ }
+
+! if( modifiers & MOD_MASK_ALT )
+ {
+! ch = Meta( ch );
+ modifiers &= ~MOD_MASK_ALT;
+ }
+ }
+--- 549,579 ----
+ len = 0;
+ #endif
+ ch = key->key_cap;
+! if (ch < 0xff)
+ {
+ /* FIXME: is this the right thing to do? */
+! if (modifiers & MOD_MASK_CTRL)
+ {
+ modifiers &= ~MOD_MASK_CTRL;
+
+! if ((ch >= 'a' && ch <= 'z') ||
+ ch == '[' ||
+ ch == ']' ||
+! ch == '\\')
+! ch = Ctrl_chr(ch);
+! else if (ch == '2')
+ ch = NUL;
+! else if (ch == '6')
+ ch = 0x1e;
+! else if (ch == '-')
+ ch = 0x1f;
+ else
+ modifiers |= MOD_MASK_CTRL;
+ }
+
+! if (modifiers & MOD_MASK_ALT)
+ {
+! ch = Meta(ch);
+ modifiers &= ~MOD_MASK_ALT;
+ }
+ }
+***************
+*** 586,604 ****
+ modifiers &= ~MOD_MASK_SHIFT;
+ }
+
+! ch = simplify_key( ch, &modifiers );
+! if( modifiers )
+ {
+ string[ len++ ] = CSI;
+ string[ len++ ] = KS_MODIFIER;
+ string[ len++ ] = modifiers;
+ }
+
+! if( IS_SPECIAL( ch ) )
+ {
+ string[ len++ ] = CSI;
+! string[ len++ ] = K_SECOND( ch );
+! string[ len++ ] = K_THIRD( ch );
+ }
+ else
+ {
+--- 586,604 ----
+ modifiers &= ~MOD_MASK_SHIFT;
+ }
+
+! ch = simplify_key(ch, &modifiers);
+! if (modifiers)
+ {
+ string[ len++ ] = CSI;
+ string[ len++ ] = KS_MODIFIER;
+ string[ len++ ] = modifiers;
+ }
+
+! if (IS_SPECIAL(ch))
+ {
+ string[ len++ ] = CSI;
+! string[ len++ ] = K_SECOND(ch);
+! string[ len++ ] = K_THIRD(ch);
+ }
+ else
+ {
+***************
+*** 619,627 ****
+ string[ len++ ] = KE_CSI;
+ }
+
+! if( len > 0 )
+ {
+! add_to_input_buf( string, len );
+ return Pt_CONSUME;
+ }
+ }
+--- 619,627 ----
+ string[ len++ ] = KE_CSI;
+ }
+
+! if (len > 0)
+ {
+! add_to_input_buf(string, len);
+ return Pt_CONSUME;
+ }
+ }
+***************
+*** 630,646 ****
+ }
+
+ static int
+! gui_ph_handle_mouse( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
+ {
+ PhPointerEvent_t *pointer;
+ PhRect_t *pos;
+ int button = 0, repeated_click, modifiers = 0x0;
+ short mouse_x, mouse_y;
+
+! pointer = PhGetData( info->event );
+! pos = PhGetRects( info->event );
+
+! gui_mch_mousehide( MOUSE_SHOW );
+
+ /*
+ * Coordinates need to be relative to the base window,
+--- 630,646 ----
+ }
+
+ static int
+! gui_ph_handle_mouse(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
+ {
+ PhPointerEvent_t *pointer;
+ PhRect_t *pos;
+ int button = 0, repeated_click, modifiers = 0x0;
+ short mouse_x, mouse_y;
+
+! pointer = PhGetData(info->event);
+! pos = PhGetRects(info->event);
+
+! gui_mch_mousehide(MOUSE_SHOW);
+
+ /*
+ * Coordinates need to be relative to the base window,
+***************
+*** 649,675 ****
+ mouse_x = pos->ul.x + gui.border_width;
+ mouse_y = pos->ul.y + gui.border_width;
+
+! if( info->event->type == Ph_EV_PTR_MOTION_NOBUTTON )
+ {
+! gui_mouse_moved( mouse_x, mouse_y );
+ return Pt_CONTINUE;
+ }
+
+! if( pointer->key_mods & Pk_KM_Shift )
+ modifiers |= MOUSE_SHIFT;
+! if( pointer->key_mods & Pk_KM_Ctrl )
+ modifiers |= MOUSE_CTRL;
+! if( pointer->key_mods & Pk_KM_Alt )
+ modifiers |= MOUSE_ALT;
+
+ /*
+ * FIXME More than one button may be involved, but for
+ * now just deal with one
+ */
+! if( pointer->buttons & Ph_BUTTON_SELECT )
+ button = MOUSE_LEFT;
+
+! if( pointer->buttons & Ph_BUTTON_MENU )
+ {
+ button = MOUSE_RIGHT;
+ /* Need the absolute coordinates for the popup menu */
+--- 649,675 ----
+ mouse_x = pos->ul.x + gui.border_width;
+ mouse_y = pos->ul.y + gui.border_width;
+
+! if (info->event->type == Ph_EV_PTR_MOTION_NOBUTTON)
+ {
+! gui_mouse_moved(mouse_x, mouse_y);
+ return Pt_CONTINUE;
+ }
+
+! if (pointer->key_mods & Pk_KM_Shift)
+ modifiers |= MOUSE_SHIFT;
+! if (pointer->key_mods & Pk_KM_Ctrl)
+ modifiers |= MOUSE_CTRL;
+! if (pointer->key_mods & Pk_KM_Alt)
+ modifiers |= MOUSE_ALT;
+
+ /*
+ * FIXME More than one button may be involved, but for
+ * now just deal with one
+ */
+! if (pointer->buttons & Ph_BUTTON_SELECT)
+ button = MOUSE_LEFT;
+
+! if (pointer->buttons & Ph_BUTTON_MENU)
+ {
+ button = MOUSE_RIGHT;
+ /* Need the absolute coordinates for the popup menu */
+***************
+*** 677,705 ****
+ abs_mouse.y = pointer->pos.y;
+ }
+
+! if( pointer->buttons & Ph_BUTTON_ADJUST )
+ button = MOUSE_MIDDLE;
+
+ /* Catch a real release (not phantom or other releases */
+! if( info->event->type == Ph_EV_BUT_RELEASE )
+ button = MOUSE_RELEASE;
+
+! if( info->event->type & Ph_EV_PTR_MOTION_BUTTON )
+ button = MOUSE_DRAG;
+
+ #if 0
+ /* Vim doesn't use button repeats */
+! if( info->event->type & Ph_EV_BUT_REPEAT )
+ button = MOUSE_DRAG;
+ #endif
+
+ /* Don't do anything if it is one of the phantom mouse release events */
+! if( ( button != MOUSE_RELEASE ) ||
+! ( info->event->subtype == Ph_EV_RELEASE_REAL ) )
+ {
+ repeated_click = (pointer->click_count >= 2) ? TRUE : FALSE;
+
+! gui_send_mouse_event( button , mouse_x, mouse_y, repeated_click, modifiers );
+ }
+
+ return Pt_CONTINUE;
+--- 677,705 ----
+ abs_mouse.y = pointer->pos.y;
+ }
+
+! if (pointer->buttons & Ph_BUTTON_ADJUST)
+ button = MOUSE_MIDDLE;
+
+ /* Catch a real release (not phantom or other releases */
+! if (info->event->type == Ph_EV_BUT_RELEASE)
+ button = MOUSE_RELEASE;
+
+! if (info->event->type & Ph_EV_PTR_MOTION_BUTTON)
+ button = MOUSE_DRAG;
+
+ #if 0
+ /* Vim doesn't use button repeats */
+! if (info->event->type & Ph_EV_BUT_REPEAT)
+ button = MOUSE_DRAG;
+ #endif
+
+ /* Don't do anything if it is one of the phantom mouse release events */
+! if ((button != MOUSE_RELEASE) ||
+! (info->event->subtype == Ph_EV_RELEASE_REAL))
+ {
+ repeated_click = (pointer->click_count >= 2) ? TRUE : FALSE;
+
+! gui_send_mouse_event(button , mouse_x, mouse_y, repeated_click, modifiers);
+ }
+
+ return Pt_CONTINUE;
+***************
+*** 707,741 ****
+
+ /* Handle a focus change of the PtRaw widget */
+ static int
+! gui_ph_handle_focus( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
+ {
+! if( info->reason == Pt_CB_LOST_FOCUS )
+ {
+! PtRemoveEventHandler( gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON,
+! gui_ph_handle_mouse, NULL );
+
+! gui_mch_mousehide( MOUSE_SHOW );
+ }
+ else
+ {
+! PtAddEventHandler( gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON,
+! gui_ph_handle_mouse, NULL );
+ }
+ return Pt_CONTINUE;
+ }
+
+ static void
+! gui_ph_handle_raw_draw( PtWidget_t *widget, PhTile_t *damage )
+ {
+ PhRect_t *r;
+ PhPoint_t offset;
+ PhPoint_t translation;
+
+! if( is_ignore_draw == TRUE )
+ return;
+
+! PtSuperClassDraw( PtBasic, widget, damage );
+! PgGetTranslation( &translation );
+ PgClearTranslation();
+
+ #if 0
+--- 707,741 ----
+
+ /* Handle a focus change of the PtRaw widget */
+ static int
+! gui_ph_handle_focus(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
+ {
+! if (info->reason == Pt_CB_LOST_FOCUS)
+ {
+! PtRemoveEventHandler(gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON,
+! gui_ph_handle_mouse, NULL);
+
+! gui_mch_mousehide(MOUSE_SHOW);
+ }
+ else
+ {
+! PtAddEventHandler(gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON,
+! gui_ph_handle_mouse, NULL);
+ }
+ return Pt_CONTINUE;
+ }
+
+ static void
+! gui_ph_handle_raw_draw(PtWidget_t *widget, PhTile_t *damage)
+ {
+ PhRect_t *r;
+ PhPoint_t offset;
+ PhPoint_t translation;
+
+! if (is_ignore_draw == TRUE)
+ return;
+
+! PtSuperClassDraw(PtBasic, widget, damage);
+! PgGetTranslation(&translation);
+ PgClearTranslation();
+
+ #if 0
+***************
+*** 750,770 ****
+ out_flush();
+ #endif
+
+! PtWidgetOffset( widget, &offset );
+! PhTranslatePoint( &offset, PtWidgetPos( gui.vimTextArea, NULL ) );
+
+ #if 1
+ /* Redraw individual damage regions */
+! if( damage->next != NULL )
+ damage = damage->next;
+
+! while( damage != NULL )
+ {
+ r = &damage->rect;
+ gui_redraw(
+ r->ul.x - offset.x, r->ul.y - offset.y,
+ r->lr.x - r->ul.x + 1,
+! r->lr.y - r->ul.y + 1 );
+ damage = damage->next;
+ }
+ #else
+--- 750,770 ----
+ out_flush();
+ #endif
+
+! PtWidgetOffset(widget, &offset);
+! PhTranslatePoint(&offset, PtWidgetPos(gui.vimTextArea, NULL));
+
+ #if 1
+ /* Redraw individual damage regions */
+! if (damage->next != NULL)
+ damage = damage->next;
+
+! while(damage != NULL)
+ {
+ r = &damage->rect;
+ gui_redraw(
+ r->ul.x - offset.x, r->ul.y - offset.y,
+ r->lr.x - r->ul.x + 1,
+! r->lr.y - r->ul.y + 1);
+ damage = damage->next;
+ }
+ #else
+***************
+*** 773,796 ****
+ gui_redraw(
+ r->ul.x - offset.x, r->ul.y - offset.y,
+ r->lr.x - r->ul.x + 1,
+! r->lr.y - r->ul.y + 1 );
+ #endif
+
+! PgSetTranslation( &translation, 0 );
+ }
+
+ static int
+ gui_ph_handle_pulldown_menu(
+ PtWidget_t *widget,
+ void *data,
+! PtCallbackInfo_t *info )
+ {
+! if( data != NULL )
+ {
+ vimmenu_T *menu = (vimmenu_T *) data;
+
+! PtPositionMenu( menu->submenu_id, NULL );
+! PtRealizeWidget( menu->submenu_id );
+ }
+
+ return Pt_CONTINUE;
+--- 773,796 ----
+ gui_redraw(
+ r->ul.x - offset.x, r->ul.y - offset.y,
+ r->lr.x - r->ul.x + 1,
+! r->lr.y - r->ul.y + 1);
+ #endif
+
+! PgSetTranslation(&translation, 0);
+ }
+
+ static int
+ gui_ph_handle_pulldown_menu(
+ PtWidget_t *widget,
+ void *data,
+! PtCallbackInfo_t *info)
+ {
+! if (data != NULL)
+ {
+ vimmenu_T *menu = (vimmenu_T *) data;
+
+! PtPositionMenu(menu->submenu_id, NULL);
+! PtRealizeWidget(menu->submenu_id);
+ }
+
+ return Pt_CONTINUE;
+*** ../vim-7.3.298/src/version.c 2011-09-07 18:58:24.000000000 +0200
+--- src/version.c 2011-09-07 19:01:17.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 299,
+ /**/
+
+--
+The only way the average employee can speak to an executive is by taking a
+second job as a golf caddie.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.300 b/source/ap/vim/patches/7.3.300
new file mode 100644
index 000000000..132b14a74
--- /dev/null
+++ b/source/ap/vim/patches/7.3.300
@@ -0,0 +1,74 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.300
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.300
+Problem: Python doesn't parse multi-byte argument correctly.
+Solution: Use "t" instead of "s". (lilydjwg)
+Files: src/if_py_both.h
+
+
+*** ../vim-7.3.299/src/if_py_both.h 2011-07-07 15:08:53.000000000 +0200
+--- src/if_py_both.h 2011-09-07 19:25:12.000000000 +0200
+***************
+*** 74,80 ****
+ char *str = NULL;
+ int error = ((OutputObject *)(self))->error;
+
+! if (!PyArg_ParseTuple(args, "es#", ENC_OPT, &str, &len))
+ return NULL;
+
+ Py_BEGIN_ALLOW_THREADS
+--- 74,80 ----
+ char *str = NULL;
+ int error = ((OutputObject *)(self))->error;
+
+! if (!PyArg_ParseTuple(args, "et#", ENC_OPT, &str, &len))
+ return NULL;
+
+ Py_BEGIN_ALLOW_THREADS
+***************
+*** 114,120 ****
+ char *str = NULL;
+ PyInt len;
+
+! if (!PyArg_Parse(line, "es#", ENC_OPT, &str, &len)) {
+ PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+ Py_DECREF(list);
+ return NULL;
+--- 114,120 ----
+ char *str = NULL;
+ PyInt len;
+
+! if (!PyArg_Parse(line, "et#", ENC_OPT, &str, &len)) {
+ PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+ Py_DECREF(list);
+ return NULL;
+*** ../vim-7.3.299/src/version.c 2011-09-07 19:08:57.000000000 +0200
+--- src/version.c 2011-09-07 19:26:05.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 300,
+ /**/
+
+--
+A salesperson says: Translation:
+"backward compatible" Old technology
+"Premium" Overpriced
+"Can't keep it on the shelf" Unavailable
+"Stands alone" Piece of shit
+"Proprietary" Incompatible
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.301 b/source/ap/vim/patches/7.3.301
new file mode 100644
index 000000000..bb52974dc
--- /dev/null
+++ b/source/ap/vim/patches/7.3.301
@@ -0,0 +1,97 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.301
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.301
+Problem: When 'smartindent' and 'copyindent' are set a Tab is used even
+ though 'expandtab' is set.
+Solution: Do not insert Tabs. Add a test. (Christian Brabandt)
+Files: src/misc1.c, src/testdir/test19.in, src/testdir/test19.ok
+
+
+*** ../vim-7.3.300/src/misc1.c 2011-07-27 17:31:42.000000000 +0200
+--- src/misc1.c 2011-09-07 19:37:04.000000000 +0200
+***************
+*** 363,369 ****
+
+ /* Fill to next tabstop with a tab, if possible */
+ tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts);
+! if (todo >= tab_pad)
+ {
+ todo -= tab_pad;
+ ++ind_len;
+--- 363,369 ----
+
+ /* Fill to next tabstop with a tab, if possible */
+ tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts);
+! if (todo >= tab_pad && !curbuf->b_p_et)
+ {
+ todo -= tab_pad;
+ ++ind_len;
+***************
+*** 372,378 ****
+ }
+
+ /* Add tabs required for indent */
+! while (todo >= (int)curbuf->b_p_ts)
+ {
+ todo -= (int)curbuf->b_p_ts;
+ ++ind_len;
+--- 372,378 ----
+ }
+
+ /* Add tabs required for indent */
+! while (todo >= (int)curbuf->b_p_ts && !curbuf->b_p_et)
+ {
+ todo -= (int)curbuf->b_p_ts;
+ ++ind_len;
+*** ../vim-7.3.300/src/testdir/test19.in 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test19.in 2011-09-07 19:46:17.000000000 +0200
+***************
+*** 12,17 ****
+--- 12,20 ----
+ 0wR 
+ :" Test replacing with Tabs
+ 0wR 
++ :" Test that copyindent works with expandtab set
++ :set expandtab smartindent copyindent ts=8 sw=8 sts=8
++ :exe "norm! o{\<cr>x"
+ :?^start?,$w! test.out
+ :qa!
+ ENDTEST
+*** ../vim-7.3.300/src/testdir/test19.ok 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test19.ok 2011-09-07 19:37:04.000000000 +0200
+***************
+*** 5,7 ****
+--- 5,9 ----
+ a cde
+ hi
+ test text
++ {
++ x
+*** ../vim-7.3.300/src/version.c 2011-09-07 19:30:17.000000000 +0200
+--- src/version.c 2011-09-07 19:38:48.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 301,
+ /**/
+
+--
+I recommend ordering large cargo containers of paper towels to make up
+whatever budget underruns you have. Paper products are always useful and they
+have the advantage of being completely flushable if you need to make room in
+the storage area later.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.302 b/source/ap/vim/patches/7.3.302
new file mode 100644
index 000000000..f8d2c2499
--- /dev/null
+++ b/source/ap/vim/patches/7.3.302
@@ -0,0 +1,68 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.302
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.302 (after 7.3.301)
+Problem: Test 19 fails without 'smartindent' and +eval.
+Solution: Don't use ":exe". Source small.vim.
+Files: src/testdir/test19.in
+
+
+*** ../vim-7.3.301/src/testdir/test19.in 2011-09-07 19:58:04.000000000 +0200
+--- src/testdir/test19.in 2011-09-08 20:32:33.000000000 +0200
+***************
+*** 1,6 ****
+--- 1,7 ----
+ Tests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set.
+
+ STARTTEST
++ :so small.vim
+ :set smarttab expandtab ts=8 sw=4
+ :" make sure that backspace works, no matter what termcap is used
+ :set t_kD=x7f t_kb=x08
+***************
+*** 14,21 ****
+ 0wR 
+ :" Test that copyindent works with expandtab set
+ :set expandtab smartindent copyindent ts=8 sw=8 sts=8
+! :exe "norm! o{\<cr>x"
+! :?^start?,$w! test.out
+ :qa!
+ ENDTEST
+
+--- 15,22 ----
+ 0wR 
+ :" Test that copyindent works with expandtab set
+ :set expandtab smartindent copyindent ts=8 sw=8 sts=8
+! o{
+! x:?^start?,$w! test.out
+ :qa!
+ ENDTEST
+
+*** ../vim-7.3.301/src/version.c 2011-09-07 19:58:04.000000000 +0200
+--- src/version.c 2011-09-08 23:22:01.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 302,
+ /**/
+
+--
+Engineers are always delighted to share wisdom, even in areas in which they
+have no experience whatsoever. Their logic provides them with inherent
+insight into any field of expertise. This can be a problem when dealing with
+the illogical people who believe that knowledge can only be derived through
+experience.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.303 b/source/ap/vim/patches/7.3.303
new file mode 100644
index 000000000..f85bf68d6
--- /dev/null
+++ b/source/ap/vim/patches/7.3.303
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.303
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.303 (after 7.3.296)
+Problem: Compilation error.
+Solution: Correct return type from int to pid_t. (Danek Duvall)
+Files: src/os_unix.c
+
+
+*** ../vim-7.3.302/src/os_unix.c 2011-09-07 15:04:26.000000000 +0200
+--- src/os_unix.c 2011-09-08 20:47:47.000000000 +0200
+***************
+*** 159,165 ****
+ #else
+ typedef int waitstatus;
+ #endif
+! static int wait4pid __ARGS((pid_t, waitstatus *));
+
+ static int WaitForChar __ARGS((long));
+ #if defined(__BEOS__)
+--- 159,165 ----
+ #else
+ typedef int waitstatus;
+ #endif
+! static pid_t wait4pid __ARGS((pid_t, waitstatus *));
+
+ static int WaitForChar __ARGS((long));
+ #if defined(__BEOS__)
+*** ../vim-7.3.302/src/version.c 2011-09-08 23:22:35.000000000 +0200
+--- src/version.c 2011-09-08 23:23:43.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 303,
+ /**/
+
+--
+For humans, honesty is a matter of degree. Engineers are always honest in
+matters of technology and human relationships. That's why it's a good idea
+to keep engineers away from customers, romantic interests, and other people
+who can't handle the truth.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.304 b/source/ap/vim/patches/7.3.304
new file mode 100644
index 000000000..6abfe9cc2
--- /dev/null
+++ b/source/ap/vim/patches/7.3.304
@@ -0,0 +1,103 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.304
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.304
+Problem: Strawberry Perl doesn't work on MS-Windows.
+Solution: Use xsubpp if needed. (Yasuhiro Matsumoto)
+Files: src/Make_ming.mak, src/Make_mvc.mak
+
+
+*** ../vim-7.3.303/src/Make_ming.mak 2011-06-19 01:30:01.000000000 +0200
+--- src/Make_ming.mak 2011-09-14 10:44:55.000000000 +0200
+***************
+*** 108,113 ****
+--- 108,120 ----
+ # on NT, it's here:
+ PERLLIB=$(PERL)/lib
+ PERLLIBS=$(PERLLIB)/Core
++ XSUBPP=$(PERLLIB)/ExtUtils/xsubpp
++ XSUBPP_EXISTS=$(shell perl -e "print 1 unless -e '$(XSUBPP)'")
++ ifeq "$(XSUBPP_EXISTS)" ""
++ XSUBPP=perl $(XSUBPP)
++ else
++ XSUBPP=xsubpp
++ endif
+ endif
+
+ # uncomment 'LUA' if you want a Lua-enabled version
+***************
+*** 696,702 ****
+ endif
+
+ if_perl.c: if_perl.xs typemap
+! perl $(PERLLIB)/ExtUtils/xsubpp -prototypes -typemap \
+ $(PERLLIB)/ExtUtils/typemap if_perl.xs > $@
+
+ $(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC)
+--- 703,709 ----
+ endif
+
+ if_perl.c: if_perl.xs typemap
+! $(XSUBPP) -prototypes -typemap \
+ $(PERLLIB)/ExtUtils/typemap if_perl.xs > $@
+
+ $(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC)
+*** ../vim-7.3.303/src/Make_mvc.mak 2011-06-12 20:31:25.000000000 +0200
+--- src/Make_mvc.mak 2011-09-14 10:46:08.000000000 +0200
+***************
+*** 785,790 ****
+--- 785,795 ----
+ PERL_INC = /I $(PERL_INCDIR)
+ PERL_OBJ = $(OUTDIR)\if_perl.obj $(OUTDIR)\if_perlsfio.obj
+ XSUBPP = $(PERL)\lib\ExtUtils\xsubpp
++ !if exist($(XSUBPP)
++ XSUBPP = $(PERL_EXE) $(XSUBPP)
++ !else
++ XSUBPP = xsubpp
++ !endif
+ XSUBPP_TYPEMAP = $(PERL)\lib\ExtUtils\typemap
+
+ !endif
+***************
+*** 1041,1047 ****
+ $(CC) $(CFLAGS) $(LUA_INC) if_lua.c
+
+ if_perl.c : if_perl.xs typemap
+! $(PERL_EXE) $(XSUBPP) -prototypes -typemap $(XSUBPP_TYPEMAP) \
+ -typemap typemap if_perl.xs > if_perl.c
+
+ $(OUTDIR)/if_perl.obj: $(OUTDIR) if_perl.c $(INCL)
+--- 1046,1052 ----
+ $(CC) $(CFLAGS) $(LUA_INC) if_lua.c
+
+ if_perl.c : if_perl.xs typemap
+! $(XSUBPP) -prototypes -typemap $(XSUBPP_TYPEMAP) \
+ -typemap typemap if_perl.xs > if_perl.c
+
+ $(OUTDIR)/if_perl.obj: $(OUTDIR) if_perl.c $(INCL)
+*** ../vim-7.3.303/src/version.c 2011-09-08 23:24:09.000000000 +0200
+--- src/version.c 2011-09-14 10:47:41.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 304,
+ /**/
+
+--
+It's totally unfair to suggest - as many have - that engineers are socially
+inept. Engineers simply have different objectives when it comes to social
+interaction.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.305 b/source/ap/vim/patches/7.3.305
new file mode 100644
index 000000000..e70fd5940
--- /dev/null
+++ b/source/ap/vim/patches/7.3.305
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.305
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.305
+Problem: Auto-loading a function while editing the command line causes
+ scrolling up the display.
+Solution: Don't set msg_scroll when defining a function and the user is not
+ typing. (Yasuhiro Matsumoto)
+Files: src/eval.c
+
+
+*** ../vim-7.3.304/src/eval.c 2011-08-17 15:23:16.000000000 +0200
+--- src/eval.c 2011-09-14 14:28:21.000000000 +0200
+***************
+*** 20786,20792 ****
+ nesting = 0;
+ for (;;)
+ {
+! msg_scroll = TRUE;
+ need_wait_return = FALSE;
+ sourcing_lnum_off = sourcing_lnum;
+
+--- 20786,20793 ----
+ nesting = 0;
+ for (;;)
+ {
+! if (KeyTyped)
+! msg_scroll = TRUE;
+ need_wait_return = FALSE;
+ sourcing_lnum_off = sourcing_lnum;
+
+*** ../vim-7.3.304/src/version.c 2011-09-14 10:49:44.000000000 +0200
+--- src/version.c 2011-09-14 14:30:49.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 305,
+ /**/
+
+--
+If someone questions your market projections, simply point out that your
+target market is "People who are nuts" and "People who will buy any damn
+thing". Nobody is going to tell you there aren't enough of those people
+to go around.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.306 b/source/ap/vim/patches/7.3.306
new file mode 100644
index 000000000..62bd4cfce
--- /dev/null
+++ b/source/ap/vim/patches/7.3.306
@@ -0,0 +1,244 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.306
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.306
+Problem: When closing a window there is a chance that deleting a scrollbar
+ triggers a GUI resize, which uses the window while it is not in a
+ valid state.
+Solution: Set the buffer pointer to NULL to be able to detect the invalid
+ situation. Fix a few places that used the buffer pointer
+ incorrectly.
+Files: src/buffer.c, src/ex_cmds.c, src/term.c, src/window.c
+
+
+*** ../vim-7.3.305/src/buffer.c 2011-05-19 13:40:47.000000000 +0200
+--- src/buffer.c 2011-09-10 13:46:59.000000000 +0200
+***************
+*** 416,421 ****
+--- 416,423 ----
+ #endif
+
+ buf_freeall(buf, (del_buf ? BFA_DEL : 0) + (wipe_buf ? BFA_WIPE : 0));
++ if (win_valid(win) && win->w_buffer == buf)
++ win->w_buffer = NULL; /* make sure we don't use the buffer now */
+
+ #ifdef FEAT_AUTOCMD
+ /* Autocommands may have deleted the buffer. */
+***************
+*** 560,565 ****
+--- 562,571 ----
+ #ifdef FEAT_DIFF
+ diff_buf_delete(buf); /* Can't use 'diff' for unloaded buffer. */
+ #endif
++ #ifdef FEAT_SYN_HL
++ if (curwin->w_buffer == buf)
++ reset_synblock(curwin); /* remove any ownsyntax */
++ #endif
+
+ #ifdef FEAT_FOLDING
+ /* No folds in an empty buffer. */
+***************
+*** 1346,1351 ****
+--- 1352,1361 ----
+ # endif
+ #endif
+ {
++ #ifdef FEAT_SYN_HL
++ if (prevbuf == curwin->w_buffer)
++ reset_synblock(curwin);
++ #endif
+ #ifdef FEAT_WINDOWS
+ if (unload)
+ close_windows(prevbuf, FALSE);
+***************
+*** 1395,1404 ****
+ foldUpdateAll(curwin); /* update folds (later). */
+ #endif
+
+- #ifdef FEAT_SYN_HL
+- reset_synblock(curwin);
+- curwin->w_s = &(buf->b_s);
+- #endif
+ /* Get the buffer in the current window. */
+ curwin->w_buffer = buf;
+ curbuf = buf;
+--- 1405,1410 ----
+***************
+*** 1409,1414 ****
+--- 1415,1424 ----
+ diff_buf_add(curbuf);
+ #endif
+
++ #ifdef FEAT_SYN_HL
++ curwin->w_s = &(buf->b_s);
++ #endif
++
+ /* Cursor on first line by default. */
+ curwin->w_cursor.lnum = 1;
+ curwin->w_cursor.col = 0;
+*** ../vim-7.3.305/src/ex_cmds.c 2011-07-07 16:20:45.000000000 +0200
+--- src/ex_cmds.c 2011-09-10 13:39:13.000000000 +0200
+***************
+*** 3619,3628 ****
+ */
+ check_arg_idx(curwin);
+
+- #ifdef FEAT_SYN_HL
+- reset_synblock(curwin); /* remove any ownsyntax */
+- #endif
+-
+ #ifdef FEAT_AUTOCMD
+ if (!auto_buf)
+ #endif
+--- 3619,3624 ----
+*** ../vim-7.3.305/src/term.c 2011-05-10 16:41:13.000000000 +0200
+--- src/term.c 2011-09-14 14:39:39.000000000 +0200
+***************
+*** 3017,3028 ****
+ if (width < 0 || height < 0) /* just checking... */
+ return;
+
+! if (State == HITRETURN || State == SETWSIZE) /* postpone the resizing */
+ {
+ State = SETWSIZE;
+ return;
+ }
+
+ ++busy;
+
+ #ifdef AMIGA
+--- 3017,3036 ----
+ if (width < 0 || height < 0) /* just checking... */
+ return;
+
+! if (State == HITRETURN || State == SETWSIZE)
+ {
++ /* postpone the resizing */
+ State = SETWSIZE;
+ return;
+ }
+
++ /* curwin->w_buffer can be NULL when we are closing a window and the
++ * buffer has already been closed and removing a scrollbar causes a resize
++ * event. Don't resize then, it will happen after entering another buffer.
++ */
++ if (curwin->w_buffer == NULL)
++ return;
++
+ ++busy;
+
+ #ifdef AMIGA
+*** ../vim-7.3.305/src/window.c 2011-01-08 14:45:57.000000000 +0100
+--- src/window.c 2011-09-10 14:04:56.000000000 +0200
+***************
+*** 1226,1240 ****
+ }
+ newp->w_tagstackidx = oldp->w_tagstackidx;
+ newp->w_tagstacklen = oldp->w_tagstacklen;
+! # ifdef FEAT_FOLDING
+ copyFoldingState(oldp, newp);
+! # endif
+
+ win_init_some(newp, oldp);
+
+! # ifdef FEAT_SYN_HL
+ check_colorcolumn(newp);
+! # endif
+ }
+
+ /*
+--- 1226,1240 ----
+ }
+ newp->w_tagstackidx = oldp->w_tagstackidx;
+ newp->w_tagstacklen = oldp->w_tagstacklen;
+! #ifdef FEAT_FOLDING
+ copyFoldingState(oldp, newp);
+! #endif
+
+ win_init_some(newp, oldp);
+
+! #ifdef FEAT_SYN_HL
+ check_colorcolumn(newp);
+! #endif
+ }
+
+ /*
+***************
+*** 2212,2217 ****
+--- 2212,2222 ----
+ out_flush();
+ #endif
+
++ #ifdef FEAT_SYN_HL
++ /* Free independent synblock before the buffer is freed. */
++ reset_synblock(win);
++ #endif
++
+ /*
+ * Close the link to the buffer.
+ */
+***************
+*** 2222,2228 ****
+ if (!win_valid(win) || last_window() || curtab != prev_curtab)
+ return;
+
+! /* Free the memory used for the window. */
+ wp = win_free_mem(win, &dir, NULL);
+
+ /* Make sure curwin isn't invalid. It can cause severe trouble when
+--- 2227,2234 ----
+ if (!win_valid(win) || last_window() || curtab != prev_curtab)
+ return;
+
+! /* Free the memory used for the window and get the window that received
+! * the screen space. */
+ wp = win_free_mem(win, &dir, NULL);
+
+ /* Make sure curwin isn't invalid. It can cause severe trouble when
+***************
+*** 3247,3252 ****
+--- 3253,3261 ----
+ else
+ wp->w_farsi = W_CONV;
+ #endif
++ #ifdef FEAT_SYN_HL
++ wp->w_s = &wp->w_buffer->b_s;
++ #endif
+ }
+
+ /*
+***************
+*** 4437,4443 ****
+ #endif /* FEAT_GUI */
+
+ #ifdef FEAT_SYN_HL
+- reset_synblock(wp); /* free independent synblock */
+ vim_free(wp->w_p_cc_cols);
+ #endif
+
+--- 4446,4451 ----
+*** ../vim-7.3.305/src/version.c 2011-09-14 14:33:47.000000000 +0200
+--- src/version.c 2011-09-14 14:35:30.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 306,
+ /**/
+
+--
+A consultant is a person who takes your money and annoys your employees while
+tirelessly searching for the best way to extend the consulting contract.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.307 b/source/ap/vim/patches/7.3.307
new file mode 100644
index 000000000..3fd95e112
--- /dev/null
+++ b/source/ap/vim/patches/7.3.307
@@ -0,0 +1,180 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.307
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.307
+Problem: Python 3 doesn't support slice assignment.
+Solution: Implement slices. (Brett Overesch, Roland Puntaier)
+Files: src/if_python3.c
+
+
+*** ../vim-7.3.306/src/if_python3.c 2011-08-28 16:00:14.000000000 +0200
+--- src/if_python3.c 2011-09-14 15:01:26.000000000 +0200
+***************
+*** 855,862 ****
+
+ static Py_ssize_t BufferLength(PyObject *);
+ static PyObject *BufferItem(PyObject *, Py_ssize_t);
+! static PyObject* BufferSubscript(PyObject *self, PyObject* idx);
+! static Py_ssize_t BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val);
+
+
+ /* Line range type - Implementation functions
+--- 855,862 ----
+
+ static Py_ssize_t BufferLength(PyObject *);
+ static PyObject *BufferItem(PyObject *, Py_ssize_t);
+! static PyObject* BufferSubscript(PyObject *self, PyObject *idx);
+! static Py_ssize_t BufferAsSubscript(PyObject *self, PyObject *idx, PyObject *val);
+
+
+ /* Line range type - Implementation functions
+***************
+*** 865,872 ****
+
+ #define RangeType_Check(obj) ((obj)->ob_base.ob_type == &RangeType)
+
+! static PyObject* RangeSubscript(PyObject *self, PyObject* idx);
+ static Py_ssize_t RangeAsItem(PyObject *, Py_ssize_t, PyObject *);
+
+ /* Current objects type - Implementation functions
+ * -----------------------------------------------
+--- 865,873 ----
+
+ #define RangeType_Check(obj) ((obj)->ob_base.ob_type == &RangeType)
+
+! static PyObject* RangeSubscript(PyObject *self, PyObject *idx);
+ static Py_ssize_t RangeAsItem(PyObject *, Py_ssize_t, PyObject *);
++ static Py_ssize_t RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val);
+
+ /* Current objects type - Implementation functions
+ * -----------------------------------------------
+***************
+*** 1035,1041 ****
+ &step, &slicelen) < 0) {
+ return NULL;
+ }
+! return BufferSlice(self,start,stop);
+ } else {
+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+ return NULL;
+--- 1036,1042 ----
+ &step, &slicelen) < 0) {
+ return NULL;
+ }
+! return BufferSlice(self, start, stop);
+ } else {
+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+ return NULL;
+***************
+*** 1084,1090 ****
+ PyMappingMethods RangeAsMapping = {
+ /* mp_length */ (lenfunc)RangeLength,
+ /* mp_subscript */ (binaryfunc)RangeSubscript,
+! /* mp_ass_subscript */ (objobjargproc)0,
+ };
+
+ /* Line range object - Implementation
+--- 1085,1091 ----
+ PyMappingMethods RangeAsMapping = {
+ /* mp_length */ (lenfunc)RangeLength,
+ /* mp_subscript */ (binaryfunc)RangeSubscript,
+! /* mp_ass_subscript */ (objobjargproc)RangeAsSubscript,
+ };
+
+ /* Line range object - Implementation
+***************
+*** 1123,1128 ****
+--- 1124,1138 ----
+ &((RangeObject *)(self))->end);
+ }
+
++ static Py_ssize_t
++ RangeAsSlice(PyObject *self, Py_ssize_t lo, Py_ssize_t hi, PyObject *val)
++ {
++ return RBAsSlice(((RangeObject *)(self))->buf, lo, hi, val,
++ ((RangeObject *)(self))->start,
++ ((RangeObject *)(self))->end,
++ &((RangeObject *)(self))->end);
++ }
++
+ static PyObject *
+ RangeSubscript(PyObject *self, PyObject* idx)
+ {
+***************
+*** 1138,1150 ****
+ &step, &slicelen) < 0) {
+ return NULL;
+ }
+! return RangeSlice(self,start,stop+1);
+ } else {
+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+ return NULL;
+ }
+ }
+
+ /* Buffer list object - Definitions
+ */
+
+--- 1148,1183 ----
+ &step, &slicelen) < 0) {
+ return NULL;
+ }
+! return RangeSlice(self, start, stop);
+ } else {
+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+ return NULL;
+ }
+ }
+
++ static Py_ssize_t
++ RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val)
++ {
++ if (PyLong_Check(idx)) {
++ long n = PyLong_AsLong(idx);
++ return RangeAsItem(self, n, val);
++ } else if (PySlice_Check(idx)) {
++ Py_ssize_t start, stop, step, slicelen;
++
++ if (PySlice_GetIndicesEx((PySliceObject *)idx,
++ ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1,
++ &start, &stop,
++ &step, &slicelen) < 0) {
++ return -1;
++ }
++ return RangeAsSlice(self, start, stop, val);
++ } else {
++ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
++ return -1;
++ }
++ }
++
++
+ /* Buffer list object - Definitions
+ */
+
+*** ../vim-7.3.306/src/version.c 2011-09-14 14:43:21.000000000 +0200
+--- src/version.c 2011-09-14 14:58:16.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 307,
+ /**/
+
+--
+The process for understanding customers primarily involves sitting around with
+other marketing people and talking about what you would to if you were dumb
+enough to be a customer.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.308 b/source/ap/vim/patches/7.3.308
new file mode 100644
index 000000000..36e5de516
--- /dev/null
+++ b/source/ap/vim/patches/7.3.308
@@ -0,0 +1,260 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.308
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.308
+Problem: Writing to 'verbosefile' has problems, e.g. for :highlight.
+Solution: Do not use a separate verbose_write() function but write with the
+ same code that does redirecting. (Yasuhiro Matsumoto)
+Files: src/message.c
+
+
+*** ../vim-7.3.307/src/message.c 2011-08-17 20:33:18.000000000 +0200
+--- src/message.c 2011-09-14 15:32:57.000000000 +0200
+***************
+*** 39,45 ****
+ static void msg_screen_putchar __ARGS((int c, int attr));
+ static int msg_check_screen __ARGS((void));
+ static void redir_write __ARGS((char_u *s, int maxlen));
+- static void verbose_write __ARGS((char_u *s, int maxlen));
+ #ifdef FEAT_CON_DIALOG
+ static char_u *msg_show_console_dialog __ARGS((char_u *message, char_u *buttons, int dfltbutton));
+ static int confirm_msg_used = FALSE; /* displaying confirm_msg */
+--- 39,44 ----
+***************
+*** 58,63 ****
+--- 57,65 ----
+ static struct msg_hist *last_msg_hist = NULL;
+ static int msg_hist_len = 0;
+
++ static FILE *verbose_fd = NULL;
++ static int verbose_did_open = FALSE;
++
+ /*
+ * When writing messages to the screen, there are many different situations.
+ * A number of variables is used to remember the current state:
+***************
+*** 1551,1557 ****
+ #ifdef FEAT_MBYTE
+ if (has_mbyte && !IS_SPECIAL(c))
+ {
+! int len = (*mb_ptr2len)(str);
+
+ /* For multi-byte characters check for an illegal byte. */
+ if (has_mbyte && MB_BYTE2LEN(*str) > len)
+--- 1553,1559 ----
+ #ifdef FEAT_MBYTE
+ if (has_mbyte && !IS_SPECIAL(c))
+ {
+! int len = (*mb_ptr2len)(str);
+
+ /* For multi-byte characters check for an illegal byte. */
+ if (has_mbyte && MB_BYTE2LEN(*str) > len)
+***************
+*** 1560,1569 ****
+ *sp = str + 1;
+ return buf;
+ }
+! /* Since 'special' is TRUE the multi-byte character 'c' will be
+! * processed by get_special_key_name() */
+! c = (*mb_ptr2char)(str);
+! *sp = str + len;
+ }
+ else
+ #endif
+--- 1562,1571 ----
+ *sp = str + 1;
+ return buf;
+ }
+! /* Since 'special' is TRUE the multi-byte character 'c' will be
+! * processed by get_special_key_name() */
+! c = (*mb_ptr2char)(str);
+! *sp = str + len;
+ }
+ else
+ #endif
+***************
+*** 3065,3076 ****
+ if (redir_off)
+ return;
+
+! /*
+! * If 'verbosefile' is set write message in that file.
+! * Must come before the rest because of updating "msg_col".
+! */
+! if (*p_vfile != NUL)
+! verbose_write(s, maxlen);
+
+ if (redirecting())
+ {
+--- 3067,3075 ----
+ if (redir_off)
+ return;
+
+! /* If 'verbosefile' is set prepare for writing in that file. */
+! if (*p_vfile != NUL && verbose_fd == NULL)
+! verbose_open();
+
+ if (redirecting())
+ {
+***************
+*** 3084,3092 ****
+ write_reg_contents(redir_reg, (char_u *)" ", -1, TRUE);
+ else if (redir_vname)
+ var_redir_str((char_u *)" ", -1);
+! else if (redir_fd)
+ #endif
+ fputs(" ", redir_fd);
+ ++cur_col;
+ }
+ }
+--- 3083,3094 ----
+ write_reg_contents(redir_reg, (char_u *)" ", -1, TRUE);
+ else if (redir_vname)
+ var_redir_str((char_u *)" ", -1);
+! else
+ #endif
++ if (redir_fd != NULL)
+ fputs(" ", redir_fd);
++ if (verbose_fd != NULL)
++ fputs(" ", verbose_fd);
+ ++cur_col;
+ }
+ }
+***************
+*** 3098,3110 ****
+ var_redir_str(s, maxlen);
+ #endif
+
+! /* Adjust the current column */
+ while (*s != NUL && (maxlen < 0 || (int)(s - str) < maxlen))
+ {
+ #ifdef FEAT_EVAL
+! if (!redir_reg && !redir_vname && redir_fd != NULL)
+ #endif
+! putc(*s, redir_fd);
+ if (*s == '\r' || *s == '\n')
+ cur_col = 0;
+ else if (*s == '\t')
+--- 3100,3115 ----
+ var_redir_str(s, maxlen);
+ #endif
+
+! /* Write and adjust the current column. */
+ while (*s != NUL && (maxlen < 0 || (int)(s - str) < maxlen))
+ {
+ #ifdef FEAT_EVAL
+! if (!redir_reg && !redir_vname)
+ #endif
+! if (redir_fd != NULL)
+! putc(*s, redir_fd);
+! if (verbose_fd != NULL)
+! putc(*s, verbose_fd);
+ if (*s == '\r' || *s == '\n')
+ cur_col = 0;
+ else if (*s == '\t')
+***************
+*** 3122,3128 ****
+ int
+ redirecting()
+ {
+! return redir_fd != NULL
+ #ifdef FEAT_EVAL
+ || redir_reg || redir_vname
+ #endif
+--- 3127,3133 ----
+ int
+ redirecting()
+ {
+! return redir_fd != NULL || *p_vfile != NUL
+ #ifdef FEAT_EVAL
+ || redir_reg || redir_vname
+ #endif
+***************
+*** 3180,3188 ****
+ cmdline_row = msg_row;
+ }
+
+- static FILE *verbose_fd = NULL;
+- static int verbose_did_open = FALSE;
+-
+ /*
+ * Called when 'verbosefile' is set: stop writing to the file.
+ */
+--- 3185,3190 ----
+***************
+*** 3220,3268 ****
+ }
+
+ /*
+- * Write a string to 'verbosefile'.
+- * When "maxlen" is -1 write the whole string, otherwise up to "maxlen" bytes.
+- */
+- static void
+- verbose_write(str, maxlen)
+- char_u *str;
+- int maxlen;
+- {
+- char_u *s = str;
+- static int cur_col = 0;
+-
+- /* Open the file when called the first time. */
+- if (verbose_fd == NULL)
+- verbose_open();
+-
+- if (verbose_fd != NULL)
+- {
+- /* If the string doesn't start with CR or NL, go to msg_col */
+- if (*s != '\n' && *s != '\r')
+- {
+- while (cur_col < msg_col)
+- {
+- fputs(" ", verbose_fd);
+- ++cur_col;
+- }
+- }
+-
+- /* Adjust the current column */
+- while (*s != NUL && (maxlen < 0 || (int)(s - str) < maxlen))
+- {
+- putc(*s, verbose_fd);
+- if (*s == '\r' || *s == '\n')
+- cur_col = 0;
+- else if (*s == '\t')
+- cur_col += (8 - cur_col % 8);
+- else
+- ++cur_col;
+- ++s;
+- }
+- }
+- }
+-
+- /*
+ * Give a warning message (for searching).
+ * Use 'w' highlighting and may repeat the message after redrawing
+ */
+--- 3222,3227 ----
+*** ../vim-7.3.307/src/version.c 2011-09-14 15:01:54.000000000 +0200
+--- src/version.c 2011-09-14 15:38:31.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 308,
+ /**/
+
+--
+The average life of an organization chart is six months. You can safely
+ignore any order from your boss that would take six months to complete.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.309 b/source/ap/vim/patches/7.3.309
new file mode 100644
index 000000000..f274284bd
--- /dev/null
+++ b/source/ap/vim/patches/7.3.309
@@ -0,0 +1,105 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.309
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.309 (after 7.3.307)
+Problem: Warnings for pointer types.
+Solution: Change PySliceObject to PyObject.
+Files: src/if_python3.c
+
+
+*** ../vim-7.3.308/src/if_python3.c 2011-09-14 15:01:54.000000000 +0200
+--- src/if_python3.c 2011-09-14 15:30:45.000000000 +0200
+***************
+*** 1030,1036 ****
+ } else if (PySlice_Check(idx)) {
+ Py_ssize_t start, stop, step, slicelen;
+
+! if (PySlice_GetIndicesEx((PySliceObject *)idx,
+ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1,
+ &start, &stop,
+ &step, &slicelen) < 0) {
+--- 1030,1036 ----
+ } else if (PySlice_Check(idx)) {
+ Py_ssize_t start, stop, step, slicelen;
+
+! if (PySlice_GetIndicesEx((PyObject *)idx,
+ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1,
+ &start, &stop,
+ &step, &slicelen) < 0) {
+***************
+*** 1054,1060 ****
+ } else if (PySlice_Check(idx)) {
+ Py_ssize_t start, stop, step, slicelen;
+
+! if (PySlice_GetIndicesEx((PySliceObject *)idx,
+ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1,
+ &start, &stop,
+ &step, &slicelen) < 0) {
+--- 1054,1060 ----
+ } else if (PySlice_Check(idx)) {
+ Py_ssize_t start, stop, step, slicelen;
+
+! if (PySlice_GetIndicesEx((PyObject *)idx,
+ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1,
+ &start, &stop,
+ &step, &slicelen) < 0) {
+***************
+*** 1142,1148 ****
+ } else if (PySlice_Check(idx)) {
+ Py_ssize_t start, stop, step, slicelen;
+
+! if (PySlice_GetIndicesEx((PySliceObject *)idx,
+ ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1,
+ &start, &stop,
+ &step, &slicelen) < 0) {
+--- 1142,1148 ----
+ } else if (PySlice_Check(idx)) {
+ Py_ssize_t start, stop, step, slicelen;
+
+! if (PySlice_GetIndicesEx((PyObject *)idx,
+ ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1,
+ &start, &stop,
+ &step, &slicelen) < 0) {
+***************
+*** 1164,1170 ****
+ } else if (PySlice_Check(idx)) {
+ Py_ssize_t start, stop, step, slicelen;
+
+! if (PySlice_GetIndicesEx((PySliceObject *)idx,
+ ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1,
+ &start, &stop,
+ &step, &slicelen) < 0) {
+--- 1164,1170 ----
+ } else if (PySlice_Check(idx)) {
+ Py_ssize_t start, stop, step, slicelen;
+
+! if (PySlice_GetIndicesEx((PyObject *)idx,
+ ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1,
+ &start, &stop,
+ &step, &slicelen) < 0) {
+*** ../vim-7.3.308/src/version.c 2011-09-14 15:39:26.000000000 +0200
+--- src/version.c 2011-09-14 15:40:17.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 309,
+ /**/
+
+--
+Never enter the boss's office unless it's absolutely necessary. Every boss
+saves one corner of the desk for useless assignments that are doled out like
+Halloween candy to each visitor.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.310 b/source/ap/vim/patches/7.3.310
new file mode 100644
index 000000000..e3ffa5a4c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.310
@@ -0,0 +1,3524 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.310
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.310
+Problem: Code not following Vim style.
+Solution: Fix the style. (Elias Diem)
+Files: src/gui_photon.c
+
+
+*** ../vim-7.3.309/src/gui_photon.c 2011-09-07 19:08:57.000000000 +0200
+--- src/gui_photon.c 2011-09-14 16:01:55.000000000 +0200
+***************
+*** 477,483 ****
+ }
+ #endif
+
+! for(i = 0; special_keys[i].key_sym != 0; i++)
+ {
+ if (special_keys[i].key_sym == key->key_cap)
+ {
+--- 477,483 ----
+ }
+ #endif
+
+! for (i = 0; special_keys[i].key_sym != 0; i++)
+ {
+ if (special_keys[i].key_sym == key->key_cap)
+ {
+***************
+*** 758,764 ****
+ if (damage->next != NULL)
+ damage = damage->next;
+
+! while(damage != NULL)
+ {
+ r = &damage->rect;
+ gui_redraw(
+--- 758,764 ----
+ if (damage->next != NULL)
+ damage = damage->next;
+
+! while (damage != NULL)
+ {
+ r = &damage->rect;
+ gui_redraw(
+***************
+*** 798,809 ****
+
+ /* This is used for pulldown/popup menus and also toolbar buttons */
+ static int
+! gui_ph_handle_menu( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
+ {
+! if( data != NULL )
+ {
+ vimmenu_T *menu = (vimmenu_T *) data;
+! gui_menu_cb( menu );
+ }
+ return Pt_CONTINUE;
+ }
+--- 798,809 ----
+
+ /* This is used for pulldown/popup menus and also toolbar buttons */
+ static int
+! gui_ph_handle_menu(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
+ {
+! if (data != NULL)
+ {
+ vimmenu_T *menu = (vimmenu_T *) data;
+! gui_menu_cb(menu);
+ }
+ return Pt_CONTINUE;
+ }
+***************
+*** 813,821 ****
+ gui_ph_handle_menu_unrealized(
+ PtWidget_t *widget,
+ void *data,
+! PtCallbackInfo_t *info )
+ {
+! PtGiveFocus( gui.vimTextArea, NULL );
+ return Pt_CONTINUE;
+ }
+
+--- 813,821 ----
+ gui_ph_handle_menu_unrealized(
+ PtWidget_t *widget,
+ void *data,
+! PtCallbackInfo_t *info)
+ {
+! PtGiveFocus(gui.vimTextArea, NULL);
+ return Pt_CONTINUE;
+ }
+
+***************
+*** 823,831 ****
+ gui_ph_handle_window_open(
+ PtWidget_t *widget,
+ void *data,
+! PtCallbackInfo_t *info )
+ {
+! gui_set_shellsize( FALSE, TRUE, RESIZE_BOTH );
+ return Pt_CONTINUE;
+ }
+
+--- 823,831 ----
+ gui_ph_handle_window_open(
+ PtWidget_t *widget,
+ void *data,
+! PtCallbackInfo_t *info)
+ {
+! gui_set_shellsize(FALSE, TRUE, RESIZE_BOTH);
+ return Pt_CONTINUE;
+ }
+
+***************
+*** 836,909 ****
+
+ /* TODO: Set a clipping rect? */
+ static void
+! gui_ph_draw_start( void )
+ {
+ PhGC_t *gc;
+
+ gc = PgGetGC();
+! PgSetRegion( PtWidgetRid( PtFindDisjoint( gui.vimTextArea ) ) );
+! PgClearClippingsCx( gc );
+! PgClearTranslationCx( gc );
+
+! PtWidgetOffset( gui.vimTextArea, &gui_ph_raw_offset );
+! PhTranslatePoint( &gui_ph_raw_offset, PtWidgetPos( gui.vimTextArea, NULL ) );
+
+! PgSetTranslation( &gui_ph_raw_offset, Pg_RELATIVE );
+ }
+
+ static void
+! gui_ph_draw_end( void )
+ {
+ gui_ph_raw_offset.x = -gui_ph_raw_offset.x;
+ gui_ph_raw_offset.y = -gui_ph_raw_offset.y;
+! PgSetTranslation( &gui_ph_raw_offset, Pg_RELATIVE );
+ }
+
+ #ifdef USE_PANEL_GROUP
+ static vimmenu_T *
+! gui_ph_find_buffer_item( char_u *name )
+ {
+ vimmenu_T *top_level = root_menu;
+ vimmenu_T *items = NULL;
+
+! while( top_level != NULL &&
+! ( STRCMP( top_level->dname, "Buffers" ) != 0 ) )
+ top_level = top_level->next;
+
+! if( top_level != NULL )
+ {
+ items = top_level->children;
+
+! while( items != NULL &&
+! ( STRCMP( items->dname, name ) != 0 ) )
+ items = items->next;
+ }
+ return items;
+ }
+
+ static void
+! gui_ph_pg_set_buffer_num( int_u buf_num )
+ {
+ int i;
+ char search[16];
+ char *mark;
+
+! if( gui.vimTextArea == NULL || buf_num == 0 )
+ return;
+
+ search[0] = '(';
+! ultoa( buf_num, &search[1], 10 );
+! STRCAT( search, ")" );
+
+! for( i = 0; i < num_panels; i++ )
+ {
+ /* find the last "(" in the panel title and see if the buffer
+ * number in the title matches the one we're looking for */
+! mark = STRRCHR( panel_titles[ i ], '(' );
+! if( mark != NULL && STRCMP( mark, search ) == 0 )
+ {
+! PtSetResource( gui.vimPanelGroup, Pt_ARG_PG_CURRENT_INDEX,
+! i, 0 );
+ }
+ }
+ }
+--- 836,909 ----
+
+ /* TODO: Set a clipping rect? */
+ static void
+! gui_ph_draw_start(void)
+ {
+ PhGC_t *gc;
+
+ gc = PgGetGC();
+! PgSetRegion(PtWidgetRid(PtFindDisjoint(gui.vimTextArea)));
+! PgClearClippingsCx(gc);
+! PgClearTranslationCx(gc);
+
+! PtWidgetOffset(gui.vimTextArea, &gui_ph_raw_offset);
+! PhTranslatePoint(&gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL));
+
+! PgSetTranslation(&gui_ph_raw_offset, Pg_RELATIVE);
+ }
+
+ static void
+! gui_ph_draw_end(void)
+ {
+ gui_ph_raw_offset.x = -gui_ph_raw_offset.x;
+ gui_ph_raw_offset.y = -gui_ph_raw_offset.y;
+! PgSetTranslation(&gui_ph_raw_offset, Pg_RELATIVE);
+ }
+
+ #ifdef USE_PANEL_GROUP
+ static vimmenu_T *
+! gui_ph_find_buffer_item(char_u *name)
+ {
+ vimmenu_T *top_level = root_menu;
+ vimmenu_T *items = NULL;
+
+! while (top_level != NULL &&
+! (STRCMP(top_level->dname, "Buffers") != 0))
+ top_level = top_level->next;
+
+! if (top_level != NULL)
+ {
+ items = top_level->children;
+
+! while (items != NULL &&
+! (STRCMP(items->dname, name) != 0))
+ items = items->next;
+ }
+ return items;
+ }
+
+ static void
+! gui_ph_pg_set_buffer_num(int_u buf_num)
+ {
+ int i;
+ char search[16];
+ char *mark;
+
+! if (gui.vimTextArea == NULL || buf_num == 0)
+ return;
+
+ search[0] = '(';
+! ultoa(buf_num, &search[1], 10);
+! STRCAT(search, ")");
+
+! for (i = 0; i < num_panels; i++)
+ {
+ /* find the last "(" in the panel title and see if the buffer
+ * number in the title matches the one we're looking for */
+! mark = STRRCHR(panel_titles[ i ], '(');
+! if (mark != NULL && STRCMP(mark, search) == 0)
+ {
+! PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_CURRENT_INDEX,
+! i, 0);
+ }
+ }
+ }
+***************
+*** 912,930 ****
+ gui_ph_handle_pg_change(
+ PtWidget_t *widget,
+ void *data,
+! PtCallbackInfo_t *info )
+ {
+ vimmenu_T *menu;
+ PtPanelGroupCallback_t *panel;
+
+! if( info->event != NULL )
+ {
+ panel = info->cbdata;
+! if( panel->new_panel != NULL )
+ {
+! menu = gui_ph_find_buffer_item( panel->new_panel );
+! if( menu )
+! gui_menu_cb( menu );
+ }
+ }
+ return Pt_CONTINUE;
+--- 912,930 ----
+ gui_ph_handle_pg_change(
+ PtWidget_t *widget,
+ void *data,
+! PtCallbackInfo_t *info)
+ {
+ vimmenu_T *menu;
+ PtPanelGroupCallback_t *panel;
+
+! if (info->event != NULL)
+ {
+ panel = info->cbdata;
+! if (panel->new_panel != NULL)
+ {
+! menu = gui_ph_find_buffer_item(panel->new_panel);
+! if (menu)
+! gui_menu_cb(menu);
+ }
+ }
+ return Pt_CONTINUE;
+***************
+*** 935,951 ****
+ short *top,
+ short *bottom,
+ short *left,
+! short *right )
+ {
+ unsigned short abs_raw_x, abs_raw_y, abs_panel_x, abs_panel_y;
+ const unsigned short *margin_top, *margin_bottom;
+ const unsigned short *margin_left, *margin_right;
+
+! PtGetAbsPosition( gui.vimTextArea, &abs_raw_x, &abs_raw_y );
+! PtGetAbsPosition( gui.vimPanelGroup, &abs_panel_x, &abs_panel_y );
+
+! PtGetResource( gui.vimPanelGroup, Pt_ARG_MARGIN_RIGHT, &margin_right, 0 );
+! PtGetResource( gui.vimPanelGroup, Pt_ARG_MARGIN_BOTTOM, &margin_bottom, 0 );
+
+ abs_raw_x -= abs_panel_x;
+ abs_raw_y -= abs_panel_y;
+--- 935,951 ----
+ short *top,
+ short *bottom,
+ short *left,
+! short *right)
+ {
+ unsigned short abs_raw_x, abs_raw_y, abs_panel_x, abs_panel_y;
+ const unsigned short *margin_top, *margin_bottom;
+ const unsigned short *margin_left, *margin_right;
+
+! PtGetAbsPosition(gui.vimTextArea, &abs_raw_x, &abs_raw_y);
+! PtGetAbsPosition(gui.vimPanelGroup, &abs_panel_x, &abs_panel_y);
+
+! PtGetResource(gui.vimPanelGroup, Pt_ARG_MARGIN_RIGHT, &margin_right, 0);
+! PtGetResource(gui.vimPanelGroup, Pt_ARG_MARGIN_BOTTOM, &margin_bottom, 0);
+
+ abs_raw_x -= abs_panel_x;
+ abs_raw_y -= abs_panel_y;
+***************
+*** 959,979 ****
+
+ /* Used for the tabs for PtPanelGroup */
+ static int
+! gui_ph_is_buffer_item( vimmenu_T *menu, vimmenu_T *parent )
+ {
+ char *mark;
+
+! if( STRCMP( parent->dname, "Buffers" ) == 0 )
+ {
+ /* Look for '(' digits ')' */
+! mark = vim_strchr( menu->dname, '(' );
+! if( mark != NULL )
+ {
+ mark++;
+! while( isdigit( *mark ) )
+ mark++;
+
+! if( *mark == ')' )
+ return TRUE;
+ }
+ }
+--- 959,979 ----
+
+ /* Used for the tabs for PtPanelGroup */
+ static int
+! gui_ph_is_buffer_item(vimmenu_T *menu, vimmenu_T *parent)
+ {
+ char *mark;
+
+! if (STRCMP(parent->dname, "Buffers") == 0)
+ {
+ /* Look for '(' digits ')' */
+! mark = vim_strchr(menu->dname, '(');
+! if (mark != NULL)
+ {
+ mark++;
+! while (isdigit(*mark))
+ mark++;
+
+! if (*mark == ')')
+ return TRUE;
+ }
+ }
+***************
+*** 981,1043 ****
+ }
+
+ static void
+! gui_ph_pg_add_buffer(char *name )
+ {
+ char **new_titles = NULL;
+
+! new_titles = (char **) alloc( ( num_panels + 1 ) * sizeof( char ** ) );
+! if( new_titles != NULL )
+ {
+! if( num_panels > 0 )
+! memcpy( new_titles, panel_titles, num_panels * sizeof( char ** ) );
+
+ new_titles[ num_panels++ ] = name;
+
+! PtSetResource( gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles,
+! num_panels );
+
+! vim_free( panel_titles );
+ panel_titles = new_titles;
+ }
+ }
+
+ static void
+! gui_ph_pg_remove_buffer( char *name )
+ {
+ int i;
+ char **new_titles = NULL;
+
+ /* If there is only 1 panel, we just use the temporary place holder */
+! if( num_panels > 1 )
+ {
+! new_titles = (char **) alloc( ( num_panels - 1 ) * sizeof( char ** ) );
+! if( new_titles != NULL )
+ {
+ char **s = new_titles;
+ /* Copy all the titles except the one we're removing */
+! for( i = 0; i < num_panels; i++ )
+ {
+! if( STRCMP( panel_titles[ i ], name ) != 0 )
+ {
+ *s++ = panel_titles[ i ];
+ }
+ }
+ num_panels--;
+
+! PtSetResource( gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles,
+! num_panels );
+
+! vim_free( panel_titles );
+ panel_titles = new_titles;
+ }
+ }
+ else
+ {
+ num_panels--;
+! PtSetResource( gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, &empty_title,
+! 1 );
+
+! vim_free( panel_titles );
+ panel_titles = NULL;
+ }
+ }
+--- 981,1043 ----
+ }
+
+ static void
+! gui_ph_pg_add_buffer(char *name)
+ {
+ char **new_titles = NULL;
+
+! new_titles = (char **) alloc((num_panels + 1) * sizeof(char **));
+! if (new_titles != NULL)
+ {
+! if (num_panels > 0)
+! memcpy(new_titles, panel_titles, num_panels * sizeof(char **));
+
+ new_titles[ num_panels++ ] = name;
+
+! PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles,
+! num_panels);
+
+! vim_free(panel_titles);
+ panel_titles = new_titles;
+ }
+ }
+
+ static void
+! gui_ph_pg_remove_buffer(char *name)
+ {
+ int i;
+ char **new_titles = NULL;
+
+ /* If there is only 1 panel, we just use the temporary place holder */
+! if (num_panels > 1)
+ {
+! new_titles = (char **) alloc((num_panels - 1) * sizeof(char **));
+! if (new_titles != NULL)
+ {
+ char **s = new_titles;
+ /* Copy all the titles except the one we're removing */
+! for (i = 0; i < num_panels; i++)
+ {
+! if (STRCMP(panel_titles[ i ], name) != 0)
+ {
+ *s++ = panel_titles[ i ];
+ }
+ }
+ num_panels--;
+
+! PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles,
+! num_panels);
+
+! vim_free(panel_titles);
+ panel_titles = new_titles;
+ }
+ }
+ else
+ {
+ num_panels--;
+! PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, &empty_title,
+! 1);
+
+! vim_free(panel_titles);
+ panel_titles = NULL;
+ }
+ }
+***************
+*** 1047,1060 ****
+ gui_ph_handle_buffer_remove(
+ PtWidget_t *widget,
+ void *data,
+! PtCallbackInfo_t *info )
+ {
+ vimmenu_T *menu;
+
+! if( data != NULL )
+ {
+ menu = (vimmenu_T *) data;
+! gui_ph_pg_remove_buffer( menu->dname );
+ }
+
+ return Pt_CONTINUE;
+--- 1047,1060 ----
+ gui_ph_handle_buffer_remove(
+ PtWidget_t *widget,
+ void *data,
+! PtCallbackInfo_t *info)
+ {
+ vimmenu_T *menu;
+
+! if (data != NULL)
+ {
+ menu = (vimmenu_T *) data;
+! gui_ph_pg_remove_buffer(menu->dname);
+ }
+
+ return Pt_CONTINUE;
+***************
+*** 1062,1074 ****
+ #endif
+
+ static int
+! gui_ph_pane_resize( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
+ {
+! if( PtWidgetIsRealized( widget ) )
+ {
+ is_ignore_draw = TRUE;
+! PtStartFlux( gui.vimContainer );
+! PtContainerHold( gui.vimContainer );
+ }
+
+ return Pt_CONTINUE;
+--- 1062,1074 ----
+ #endif
+
+ static int
+! gui_ph_pane_resize(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
+ {
+! if (PtWidgetIsRealized(widget))
+ {
+ is_ignore_draw = TRUE;
+! PtStartFlux(gui.vimContainer);
+! PtContainerHold(gui.vimContainer);
+ }
+
+ return Pt_CONTINUE;
+***************
+*** 1078,1084 ****
+
+ #ifdef FEAT_MBYTE
+ void
+! gui_ph_encoding_changed( int new_encoding )
+ {
+ /* Default encoding is latin1 */
+ char *charset = "latin1";
+--- 1078,1084 ----
+
+ #ifdef FEAT_MBYTE
+ void
+! gui_ph_encoding_changed(int new_encoding)
+ {
+ /* Default encoding is latin1 */
+ char *charset = "latin1";
+***************
+*** 1094,1106 ****
+ { DBCS_CHS, "gb" }
+ };
+
+! for( i = 0; i < ARRAY_LENGTH( charsets ); i++ )
+ {
+! if( new_encoding == charsets[ i ].encoding )
+ charset = charsets[ i ].name;
+ }
+
+! charset_translate = PxTranslateSet( charset_translate, charset );
+ }
+ #endif
+
+--- 1094,1106 ----
+ { DBCS_CHS, "gb" }
+ };
+
+! for (i = 0; i < ARRAY_LENGTH(charsets); i++)
+ {
+! if (new_encoding == charsets[ i ].encoding)
+ charset = charsets[ i ].name;
+ }
+
+! charset_translate = PxTranslateSet(charset_translate, charset);
+ }
+ #endif
+
+***************
+*** 1112,1118 ****
+ int *argc;
+ char **argv;
+ {
+! PtInit( NULL );
+ }
+
+ int
+--- 1112,1118 ----
+ int *argc;
+ char **argv;
+ {
+! PtInit(NULL);
+ }
+
+ int
+***************
+*** 1124,1213 ****
+ PhDim_t window_size = {100, 100}; /* Arbitrary values */
+ PhPoint_t pos = {0, 0};
+
+! gui.event_buffer = (PhEvent_t *) alloc( EVENT_BUFFER_SIZE );
+! if( gui.event_buffer == NULL )
+ return FAIL;
+
+ /* Get a translation so we can convert from ISO Latin-1 to UTF */
+! charset_translate = PxTranslateSet( NULL, "latin1" );
+
+ /* The +2 is for the 1 pixel dark line on each side */
+ gui.border_offset = gui.border_width = GUI_PH_MARGIN + 2;
+
+ /* Handle close events ourselves */
+! PtSetArg( &args[ n++ ], Pt_ARG_WINDOW_MANAGED_FLAGS, Pt_FALSE, Ph_WM_CLOSE );
+! PtSetArg( &args[ n++ ], Pt_ARG_WINDOW_NOTIFY_FLAGS, Pt_TRUE,
+! Ph_WM_CLOSE | Ph_WM_RESIZE | Ph_WM_FOCUS );
+! PtSetArg( &args[ n++ ], Pt_ARG_DIM, &window_size, 0 );
+! gui.vimWindow = PtCreateWidget( PtWindow, NULL, n, args );
+! if( gui.vimWindow == NULL )
+ return FAIL;
+
+! PtAddCallback( gui.vimWindow, Pt_CB_WINDOW, gui_ph_handle_window_cb, NULL );
+! PtAddCallback( gui.vimWindow, Pt_CB_WINDOW_OPENING,
+! gui_ph_handle_window_open, NULL );
+
+ n = 0;
+! PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS, Pt_ANCHOR_ALL, Pt_IS_ANCHORED );
+! PtSetArg( &args[ n++ ], Pt_ARG_DIM, &window_size, 0 );
+! PtSetArg( &args[ n++ ], Pt_ARG_POS, &pos, 0 );
+
+ #ifdef USE_PANEL_GROUP
+ /* Put in a temprary place holder title */
+! PtSetArg( &args[ n++ ], Pt_ARG_PG_PANEL_TITLES, &empty_title, 1 );
+
+! gui.vimPanelGroup = PtCreateWidget( PtPanelGroup, gui.vimWindow, n, args );
+! if( gui.vimPanelGroup == NULL )
+ return FAIL;
+
+! PtAddCallback( gui.vimPanelGroup, Pt_CB_PG_PANEL_SWITCHING,
+! gui_ph_handle_pg_change, NULL );
+ #else
+ /* Turn off all edge decorations */
+! PtSetArg( &args[ n++ ], Pt_ARG_BASIC_FLAGS, Pt_FALSE, Pt_ALL );
+! PtSetArg( &args[ n++ ], Pt_ARG_BEVEL_WIDTH, 0, 0 );
+! PtSetArg( &args[ n++ ], Pt_ARG_MARGIN_WIDTH, 0, 0 );
+! PtSetArg( &args[ n++ ], Pt_ARG_MARGIN_HEIGHT, 0, 0 );
+! PtSetArg( &args[ n++ ], Pt_ARG_CONTAINER_FLAGS, Pt_TRUE, Pt_AUTO_EXTENT );
+
+! gui.vimContainer = PtCreateWidget( PtPane, gui.vimWindow, n, args );
+! if( gui.vimContainer == NULL )
+ return FAIL;
+
+! PtAddCallback( gui.vimContainer, Pt_CB_RESIZE, gui_ph_pane_resize, NULL );
+ #endif
+
+ /* Size for the text area is set in gui_mch_set_text_area_pos */
+ n = 0;
+
+! PtSetArg( &args[ n++ ], Pt_ARG_RAW_DRAW_F, gui_ph_handle_raw_draw, 1 );
+! PtSetArg( &args[ n++ ], Pt_ARG_BEVEL_WIDTH, GUI_PH_MARGIN, 0 );
+ /*
+ * Using focus render also causes the whole widget to be redrawn
+ * whenever it changes focus, which is very annoying :p
+ */
+! PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_TRUE,
+! Pt_GETS_FOCUS | Pt_HIGHLIGHTED );
+ #ifndef FEAT_MOUSESHAPE
+! PtSetArg( &args[ n++ ], Pt_ARG_CURSOR_TYPE, GUI_PH_MOUSE_TYPE, 0 );
+! PtSetArg( &args[ n++ ], Pt_ARG_CURSOR_COLOR, gui_ph_mouse_color, 0 );
+ #endif
+
+! gui.vimTextArea = PtCreateWidget( PtRaw, Pt_DFLT_PARENT, n, args );
+! if( gui.vimTextArea == NULL)
+ return FAIL;
+
+ /* TODO: use PtAddEventHandlers instead? */
+ /* Not using Ph_EV_BUT_REPEAT because vim wouldn't use it anyway */
+! PtAddEventHandler( gui.vimTextArea,
+ Ph_EV_BUT_PRESS | Ph_EV_BUT_RELEASE | Ph_EV_PTR_MOTION_BUTTON,
+! gui_ph_handle_mouse, NULL );
+! PtAddEventHandler( gui.vimTextArea, Ph_EV_KEY,
+! gui_ph_handle_keyboard, NULL );
+! PtAddCallback( gui.vimTextArea, Pt_CB_GOT_FOCUS,
+! gui_ph_handle_focus, NULL );
+! PtAddCallback( gui.vimTextArea, Pt_CB_LOST_FOCUS,
+! gui_ph_handle_focus, NULL );
+
+ /*
+ * Now that the text area widget has been created, set up the colours,
+--- 1124,1213 ----
+ PhDim_t window_size = {100, 100}; /* Arbitrary values */
+ PhPoint_t pos = {0, 0};
+
+! gui.event_buffer = (PhEvent_t *) alloc(EVENT_BUFFER_SIZE);
+! if (gui.event_buffer == NULL)
+ return FAIL;
+
+ /* Get a translation so we can convert from ISO Latin-1 to UTF */
+! charset_translate = PxTranslateSet(NULL, "latin1");
+
+ /* The +2 is for the 1 pixel dark line on each side */
+ gui.border_offset = gui.border_width = GUI_PH_MARGIN + 2;
+
+ /* Handle close events ourselves */
+! PtSetArg(&args[ n++ ], Pt_ARG_WINDOW_MANAGED_FLAGS, Pt_FALSE, Ph_WM_CLOSE);
+! PtSetArg(&args[ n++ ], Pt_ARG_WINDOW_NOTIFY_FLAGS, Pt_TRUE,
+! Ph_WM_CLOSE | Ph_WM_RESIZE | Ph_WM_FOCUS);
+! PtSetArg(&args[ n++ ], Pt_ARG_DIM, &window_size, 0);
+! gui.vimWindow = PtCreateWidget(PtWindow, NULL, n, args);
+! if (gui.vimWindow == NULL)
+ return FAIL;
+
+! PtAddCallback(gui.vimWindow, Pt_CB_WINDOW, gui_ph_handle_window_cb, NULL);
+! PtAddCallback(gui.vimWindow, Pt_CB_WINDOW_OPENING,
+! gui_ph_handle_window_open, NULL);
+
+ n = 0;
+! PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, Pt_ANCHOR_ALL, Pt_IS_ANCHORED);
+! PtSetArg(&args[ n++ ], Pt_ARG_DIM, &window_size, 0);
+! PtSetArg(&args[ n++ ], Pt_ARG_POS, &pos, 0);
+
+ #ifdef USE_PANEL_GROUP
+ /* Put in a temprary place holder title */
+! PtSetArg(&args[ n++ ], Pt_ARG_PG_PANEL_TITLES, &empty_title, 1);
+
+! gui.vimPanelGroup = PtCreateWidget(PtPanelGroup, gui.vimWindow, n, args);
+! if (gui.vimPanelGroup == NULL)
+ return FAIL;
+
+! PtAddCallback(gui.vimPanelGroup, Pt_CB_PG_PANEL_SWITCHING,
+! gui_ph_handle_pg_change, NULL);
+ #else
+ /* Turn off all edge decorations */
+! PtSetArg(&args[ n++ ], Pt_ARG_BASIC_FLAGS, Pt_FALSE, Pt_ALL);
+! PtSetArg(&args[ n++ ], Pt_ARG_BEVEL_WIDTH, 0, 0);
+! PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_WIDTH, 0, 0);
+! PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_HEIGHT, 0, 0);
+! PtSetArg(&args[ n++ ], Pt_ARG_CONTAINER_FLAGS, Pt_TRUE, Pt_AUTO_EXTENT);
+
+! gui.vimContainer = PtCreateWidget(PtPane, gui.vimWindow, n, args);
+! if (gui.vimContainer == NULL)
+ return FAIL;
+
+! PtAddCallback(gui.vimContainer, Pt_CB_RESIZE, gui_ph_pane_resize, NULL);
+ #endif
+
+ /* Size for the text area is set in gui_mch_set_text_area_pos */
+ n = 0;
+
+! PtSetArg(&args[ n++ ], Pt_ARG_RAW_DRAW_F, gui_ph_handle_raw_draw, 1);
+! PtSetArg(&args[ n++ ], Pt_ARG_BEVEL_WIDTH, GUI_PH_MARGIN, 0);
+ /*
+ * Using focus render also causes the whole widget to be redrawn
+ * whenever it changes focus, which is very annoying :p
+ */
+! PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_TRUE,
+! Pt_GETS_FOCUS | Pt_HIGHLIGHTED);
+ #ifndef FEAT_MOUSESHAPE
+! PtSetArg(&args[ n++ ], Pt_ARG_CURSOR_TYPE, GUI_PH_MOUSE_TYPE, 0);
+! PtSetArg(&args[ n++ ], Pt_ARG_CURSOR_COLOR, gui_ph_mouse_color, 0);
+ #endif
+
+! gui.vimTextArea = PtCreateWidget(PtRaw, Pt_DFLT_PARENT, n, args);
+! if (gui.vimTextArea == NULL)
+ return FAIL;
+
+ /* TODO: use PtAddEventHandlers instead? */
+ /* Not using Ph_EV_BUT_REPEAT because vim wouldn't use it anyway */
+! PtAddEventHandler(gui.vimTextArea,
+ Ph_EV_BUT_PRESS | Ph_EV_BUT_RELEASE | Ph_EV_PTR_MOTION_BUTTON,
+! gui_ph_handle_mouse, NULL);
+! PtAddEventHandler(gui.vimTextArea, Ph_EV_KEY,
+! gui_ph_handle_keyboard, NULL);
+! PtAddCallback(gui.vimTextArea, Pt_CB_GOT_FOCUS,
+! gui_ph_handle_focus, NULL);
+! PtAddCallback(gui.vimTextArea, Pt_CB_LOST_FOCUS,
+! gui_ph_handle_focus, NULL);
+
+ /*
+ * Now that the text area widget has been created, set up the colours,
+***************
+*** 1218,1278 ****
+ * Create the two timers, not as accurate as using the kernel timer
+ * functions, but good enough
+ */
+! gui_ph_timer_cursor = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL );
+! if( gui_ph_timer_cursor == NULL )
+ return FAIL;
+
+! gui_ph_timer_timeout = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL );
+! if( gui_ph_timer_timeout == NULL )
+ return FAIL;
+
+! PtAddCallback( gui_ph_timer_cursor, Pt_CB_TIMER_ACTIVATE,
+ gui_ph_handle_timer_cursor, NULL);
+! PtAddCallback( gui_ph_timer_timeout, Pt_CB_TIMER_ACTIVATE,
+ gui_ph_handle_timer_timeout, NULL);
+
+ #ifdef FEAT_MENU
+ n = 0;
+! PtSetArg( &args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0 );
+! PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS, Pt_ANCHOR_LEFT_RIGHT,
+! Pt_IS_ANCHORED );
+! gui.vimToolBarGroup = PtCreateWidget( PtToolbarGroup, gui.vimWindow,
+! n, args );
+! if( gui.vimToolBarGroup == NULL )
+ return FAIL;
+
+! PtAddCallback( gui.vimToolBarGroup, Pt_CB_RESIZE,
+! gui_ph_handle_menu_resize, NULL );
+
+ n = 0;
+ flags = 0;
+! PtSetArg( &args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0 );
+! if( ! vim_strchr( p_go, GO_MENUS ) )
+ {
+ flags |= Pt_DELAY_REALIZE;
+! PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_TRUE, flags );
+ }
+! gui.vimMenuBar = PtCreateWidget( PtMenuBar, gui.vimToolBarGroup, n, args );
+! if( gui.vimMenuBar == NULL )
+ return FAIL;
+
+ # ifdef FEAT_TOOLBAR
+ n = 0;
+
+! PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS,
+! Pt_ANCHOR_LEFT_RIGHT |Pt_TOP_ANCHORED_TOP, Pt_IS_ANCHORED );
+! PtSetArg( &args[ n++ ], Pt_ARG_RESIZE_FLAGS, Pt_TRUE,
+! Pt_RESIZE_Y_AS_REQUIRED );
+! PtSetArg( &args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0 );
+
+ flags = Pt_GETS_FOCUS;
+! if( ! vim_strchr( p_go, GO_TOOLBAR ) )
+ flags |= Pt_DELAY_REALIZE;
+
+! PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_DELAY_REALIZE, flags );
+
+! gui.vimToolBar = PtCreateWidget( PtToolbar, gui.vimToolBarGroup, n, args );
+! if( gui.vimToolBar == NULL )
+ return FAIL;
+
+ /*
+--- 1218,1278 ----
+ * Create the two timers, not as accurate as using the kernel timer
+ * functions, but good enough
+ */
+! gui_ph_timer_cursor = PtCreateWidget(PtTimer, gui.vimWindow, 0, NULL);
+! if (gui_ph_timer_cursor == NULL)
+ return FAIL;
+
+! gui_ph_timer_timeout = PtCreateWidget(PtTimer, gui.vimWindow, 0, NULL);
+! if (gui_ph_timer_timeout == NULL)
+ return FAIL;
+
+! PtAddCallback(gui_ph_timer_cursor, Pt_CB_TIMER_ACTIVATE,
+ gui_ph_handle_timer_cursor, NULL);
+! PtAddCallback(gui_ph_timer_timeout, Pt_CB_TIMER_ACTIVATE,
+ gui_ph_handle_timer_timeout, NULL);
+
+ #ifdef FEAT_MENU
+ n = 0;
+! PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0);
+! PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, Pt_ANCHOR_LEFT_RIGHT,
+! Pt_IS_ANCHORED);
+! gui.vimToolBarGroup = PtCreateWidget(PtToolbarGroup, gui.vimWindow,
+! n, args);
+! if (gui.vimToolBarGroup == NULL)
+ return FAIL;
+
+! PtAddCallback(gui.vimToolBarGroup, Pt_CB_RESIZE,
+! gui_ph_handle_menu_resize, NULL);
+
+ n = 0;
+ flags = 0;
+! PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0);
+! if (! vim_strchr(p_go, GO_MENUS))
+ {
+ flags |= Pt_DELAY_REALIZE;
+! PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_TRUE, flags);
+ }
+! gui.vimMenuBar = PtCreateWidget(PtMenuBar, gui.vimToolBarGroup, n, args);
+! if (gui.vimMenuBar == NULL)
+ return FAIL;
+
+ # ifdef FEAT_TOOLBAR
+ n = 0;
+
+! PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS,
+! Pt_ANCHOR_LEFT_RIGHT |Pt_TOP_ANCHORED_TOP, Pt_IS_ANCHORED);
+! PtSetArg(&args[ n++ ], Pt_ARG_RESIZE_FLAGS, Pt_TRUE,
+! Pt_RESIZE_Y_AS_REQUIRED);
+! PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0);
+
+ flags = Pt_GETS_FOCUS;
+! if (! vim_strchr(p_go, GO_TOOLBAR))
+ flags |= Pt_DELAY_REALIZE;
+
+! PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_DELAY_REALIZE, flags);
+
+! gui.vimToolBar = PtCreateWidget(PtToolbar, gui.vimToolBarGroup, n, args);
+! if (gui.vimToolBar == NULL)
+ return FAIL;
+
+ /*
+***************
+*** 1310,1329 ****
+ if (gui_win_x != -1 && gui_win_y != -1)
+ gui_mch_set_winpos(gui_win_x, gui_win_y);
+
+! return (PtRealizeWidget( gui.vimWindow ) == 0) ? OK : FAIL;
+ }
+
+ void
+ gui_mch_exit(int rc)
+ {
+! PtDestroyWidget( gui.vimWindow );
+
+! PxTranslateSet( charset_translate, NULL );
+
+! vim_free( gui.event_buffer );
+
+ #ifdef USE_PANEL_GROUPS
+! vim_free( panel_titles );
+ #endif
+ }
+
+--- 1310,1329 ----
+ if (gui_win_x != -1 && gui_win_y != -1)
+ gui_mch_set_winpos(gui_win_x, gui_win_y);
+
+! return (PtRealizeWidget(gui.vimWindow) == 0) ? OK : FAIL;
+ }
+
+ void
+ gui_mch_exit(int rc)
+ {
+! PtDestroyWidget(gui.vimWindow);
+
+! PxTranslateSet(charset_translate, NULL);
+
+! vim_free(gui.event_buffer);
+
+ #ifdef USE_PANEL_GROUPS
+! vim_free(panel_titles);
+ #endif
+ }
+
+***************
+*** 1333,1339 ****
+ /* When no events are available, photon will call this function, working is
+ * set to FALSE, and the gui_mch_update loop will exit. */
+ static int
+! exit_gui_mch_update( void *data )
+ {
+ *(int *)data = FALSE;
+ return Pt_END;
+--- 1333,1339 ----
+ /* When no events are available, photon will call this function, working is
+ * set to FALSE, and the gui_mch_update loop will exit. */
+ static int
+! exit_gui_mch_update(void *data)
+ {
+ *(int *)data = FALSE;
+ return Pt_END;
+***************
+*** 1344,1351 ****
+ {
+ int working = TRUE;
+
+! PtAppAddWorkProc( NULL, exit_gui_mch_update, &working );
+! while( ( working == TRUE ) && !vim_is_input_buf_full())
+ {
+ PtProcessEvent();
+ }
+--- 1344,1351 ----
+ {
+ int working = TRUE;
+
+! PtAppAddWorkProc(NULL, exit_gui_mch_update, &working);
+! while ((working == TRUE) && !vim_is_input_buf_full())
+ {
+ PtProcessEvent();
+ }
+***************
+*** 1356,1378 ****
+ {
+ is_timeout = FALSE;
+
+! if( wtime > 0 )
+! PtSetResource( gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, wtime, 0 );
+
+! while( 1 )
+ {
+ PtProcessEvent();
+! if( input_available() )
+ {
+! PtSetResource( gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, 0, 0 );
+ return OK;
+ }
+! else if( is_timeout == TRUE )
+ return FAIL;
+ }
+ }
+
+! #if defined( FEAT_BROWSE ) || defined( PROTO )
+ /*
+ * Put up a file requester.
+ * Returns the selected name in allocated memory, or NULL for Cancel.
+--- 1356,1378 ----
+ {
+ is_timeout = FALSE;
+
+! if (wtime > 0)
+! PtSetResource(gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, wtime, 0);
+
+! while (1)
+ {
+ PtProcessEvent();
+! if (input_available())
+ {
+! PtSetResource(gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, 0, 0);
+ return OK;
+ }
+! else if (is_timeout == TRUE)
+ return FAIL;
+ }
+ }
+
+! #if defined(FEAT_BROWSE) || defined(PROTO)
+ /*
+ * Put up a file requester.
+ * Returns the selected name in allocated memory, or NULL for Cancel.
+***************
+*** 1398,1409 ****
+ char_u *open_text = NULL;
+
+ flags = 0;
+! memset( &file, 0, sizeof( file ) );
+
+! default_path = alloc( MAXPATHL + 1 + NAME_MAX + 1 );
+! if( default_path != NULL )
+ {
+! if( saving == TRUE )
+ {
+ /* Don't need Pt_FSR_CONFIRM_EXISTING, vim will ask anyway */
+ flags |= Pt_FSR_NO_FCHECK;
+--- 1398,1409 ----
+ char_u *open_text = NULL;
+
+ flags = 0;
+! memset(&file, 0, sizeof(file));
+
+! default_path = alloc(MAXPATHL + 1 + NAME_MAX + 1);
+! if (default_path != NULL)
+ {
+! if (saving == TRUE)
+ {
+ /* Don't need Pt_FSR_CONFIRM_EXISTING, vim will ask anyway */
+ flags |= Pt_FSR_NO_FCHECK;
+***************
+*** 1411,1433 ****
+ }
+
+ /* combine the directory and filename into a single path */
+! if( initdir == NULL || *initdir == NUL )
+ {
+! mch_dirname( default_path, MAXPATHL );
+ initdir = default_path;
+ }
+ else
+ {
+! STRCPY( default_path, initdir );
+ initdir = default_path;
+ }
+
+! if( default_name != NULL )
+ {
+! if( default_path[ STRLEN( default_path ) - 1 ] != '/' )
+! STRCAT( default_path, "/" );
+
+! STRCAT( default_path, default_name );
+ }
+
+ /* TODO: add a filter? */
+--- 1411,1433 ----
+ }
+
+ /* combine the directory and filename into a single path */
+! if (initdir == NULL || *initdir == NUL)
+ {
+! mch_dirname(default_path, MAXPATHL);
+ initdir = default_path;
+ }
+ else
+ {
+! STRCPY(default_path, initdir);
+ initdir = default_path;
+ }
+
+! if (default_name != NULL)
+ {
+! if (default_path[ STRLEN(default_path) - 1 ] != '/')
+! STRCAT(default_path, "/");
+
+! STRCAT(default_path, default_name);
+ }
+
+ /* TODO: add a filter? */
+***************
+*** 1441,1495 ****
+ NULL,
+ NULL,
+ &file,
+! flags );
+
+! vim_free( default_path );
+
+! if( file.ret == Pt_FSDIALOG_BTN1 )
+ return vim_strsave(file.path);
+ }
+ return NULL;
+ }
+ #endif
+
+! #if defined( FEAT_GUI_DIALOG ) || defined( PROTO )
+ static PtWidget_t *gui_ph_dialog_text = NULL;
+
+ static int
+! gui_ph_dialog_close( int button, void *data )
+ {
+ PtModalCtrl_t *modal_ctrl = data;
+ char_u *dialog_text, *vim_text;
+
+! if( gui_ph_dialog_text != NULL )
+ {
+! PtGetResource( gui_ph_dialog_text, Pt_ARG_TEXT_STRING, &dialog_text, 0 );
+! PtGetResource( gui_ph_dialog_text, Pt_ARG_POINTER, &vim_text, 0 );
+! STRNCPY( vim_text, dialog_text, IOSIZE - 1 );
+ }
+
+! PtModalUnblock( modal_ctrl, (void *) button );
+
+ return Pt_TRUE;
+ }
+
+ static int
+! gui_ph_dialog_text_enter( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
+ {
+! if( info->reason_subtype == Pt_EDIT_ACTIVATE )
+! gui_ph_dialog_close( 1, data );
+ return Pt_CONTINUE;
+ }
+
+ static int
+! gui_ph_dialog_esc( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
+ {
+ PhKeyEvent_t *key;
+
+! key = PhGetData( info->event );
+! if( ( key->key_flags & Pk_KF_Cap_Valid ) && ( key->key_cap == Pk_Escape ) )
+ {
+! gui_ph_dialog_close( 0, data );
+ return Pt_CONSUME;
+ }
+ return Pt_PROCESS;
+--- 1441,1495 ----
+ NULL,
+ NULL,
+ &file,
+! flags);
+
+! vim_free(default_path);
+
+! if (file.ret == Pt_FSDIALOG_BTN1)
+ return vim_strsave(file.path);
+ }
+ return NULL;
+ }
+ #endif
+
+! #if defined(FEAT_GUI_DIALOG) || defined(PROTO)
+ static PtWidget_t *gui_ph_dialog_text = NULL;
+
+ static int
+! gui_ph_dialog_close(int button, void *data)
+ {
+ PtModalCtrl_t *modal_ctrl = data;
+ char_u *dialog_text, *vim_text;
+
+! if (gui_ph_dialog_text != NULL)
+ {
+! PtGetResource(gui_ph_dialog_text, Pt_ARG_TEXT_STRING, &dialog_text, 0);
+! PtGetResource(gui_ph_dialog_text, Pt_ARG_POINTER, &vim_text, 0);
+! STRNCPY(vim_text, dialog_text, IOSIZE - 1);
+ }
+
+! PtModalUnblock(modal_ctrl, (void *) button);
+
+ return Pt_TRUE;
+ }
+
+ static int
+! gui_ph_dialog_text_enter(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
+ {
+! if (info->reason_subtype == Pt_EDIT_ACTIVATE)
+! gui_ph_dialog_close(1, data);
+ return Pt_CONTINUE;
+ }
+
+ static int
+! gui_ph_dialog_esc(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
+ {
+ PhKeyEvent_t *key;
+
+! key = PhGetData(info->event);
+! if ((key->key_flags & Pk_KF_Cap_Valid) && (key->key_cap == Pk_Escape))
+ {
+! gui_ph_dialog_close(0, data);
+ return Pt_CONSUME;
+ }
+ return Pt_PROCESS;
+***************
+*** 1518,1557 ****
+
+ button_count = len = i = 0;
+
+! if( buttons == NULL || *buttons == NUL )
+ return -1;
+
+ /* There is one less separator than buttons, so bump up the button count */
+ button_count = 1;
+
+ /* Count string length and number of seperators */
+! for( str = buttons; *str; str++ )
+ {
+ len++;
+! if( *str == DLG_BUTTON_SEP )
+ button_count++;
+ }
+
+! if ( title == NULL )
+ title = "Vim";
+
+! buttons_copy = alloc( len + 1 );
+! button_array = (char_u **) alloc( button_count * sizeof( char_u * ) );
+! if( buttons_copy != NULL && button_array != NULL )
+ {
+! STRCPY( buttons_copy, buttons );
+
+ /*
+ * Convert DLG_BUTTON_SEP into NUL's and fill in
+ * button_array with the pointer to each NUL terminated string
+ */
+ str = buttons_copy;
+! for( i = 0; i < button_count; i++ )
+ {
+ button_array[ i ] = str;
+! for( ; *str; str++ )
+ {
+! if( *str == DLG_BUTTON_SEP )
+ {
+ *str++ = NUL;
+ break;
+--- 1518,1557 ----
+
+ button_count = len = i = 0;
+
+! if (buttons == NULL || *buttons == NUL)
+ return -1;
+
+ /* There is one less separator than buttons, so bump up the button count */
+ button_count = 1;
+
+ /* Count string length and number of seperators */
+! for (str = buttons; *str; str++)
+ {
+ len++;
+! if (*str == DLG_BUTTON_SEP)
+ button_count++;
+ }
+
+! if (title == NULL)
+ title = "Vim";
+
+! buttons_copy = alloc(len + 1);
+! button_array = (char_u **) alloc(button_count * sizeof(char_u *));
+! if (buttons_copy != NULL && button_array != NULL)
+ {
+! STRCPY(buttons_copy, buttons);
+
+ /*
+ * Convert DLG_BUTTON_SEP into NUL's and fill in
+ * button_array with the pointer to each NUL terminated string
+ */
+ str = buttons_copy;
+! for (i = 0; i < button_count; i++)
+ {
+ button_array[ i ] = str;
+! for (; *str; str++)
+ {
+! if (*str == DLG_BUTTON_SEP)
+ {
+ *str++ = NUL;
+ break;
+***************
+*** 1565,1571 ****
+ NULL,
+ message, NULL,
+ button_count, (const char **) button_array, NULL,
+! default_button, 0, Pt_MODAL );
+ #else
+ /* Writing the dialog ourselves lets us add extra features, like
+ * trapping the escape key and returning 0 to vim */
+--- 1565,1571 ----
+ NULL,
+ message, NULL,
+ button_count, (const char **) button_array, NULL,
+! default_button, 0, Pt_MODAL);
+ #else
+ /* Writing the dialog ourselves lets us add extra features, like
+ * trapping the escape key and returning 0 to vim */
+***************
+*** 1576,1607 ****
+ PtModalCtrl_t modal_ctrl;
+ PtDialogInfo_t di;
+
+! memset( &di, 0, sizeof( di ) );
+! memset( &modal_ctrl, 0, sizeof( modal_ctrl ) );
+
+ n = 0;
+! PtSetArg( &args[n++], Pt_ARG_GROUP_ROWS_COLS, 0, 0 );
+! PtSetArg( &args[n++], Pt_ARG_WIDTH, 350, 0 );
+! PtSetArg( &args[n++], Pt_ARG_GROUP_ORIENTATION,
+! Pt_GROUP_VERTICAL, 0 );
+! PtSetArg( &args[n++], Pt_ARG_GROUP_FLAGS,
+! Pt_TRUE, Pt_GROUP_NO_KEYS | Pt_GROUP_STRETCH_HORIZONTAL );
+! PtSetArg( &args[n++], Pt_ARG_CONTAINER_FLAGS, Pt_FALSE, Pt_TRUE );
+! pane = PtCreateWidget( PtGroup, NULL, n, args );
+
+ n = 0;
+! PtSetArg( &args[n++], Pt_ARG_TEXT_STRING, message, 0 );
+! PtCreateWidget( PtLabel, pane, n, args );
+
+! if( textfield != NULL )
+ {
+ n = 0;
+! PtSetArg( &args[n++], Pt_ARG_MAX_LENGTH, IOSIZE - 1, 0 );
+! PtSetArg( &args[n++], Pt_ARG_TEXT_STRING, textfield, 0 );
+! PtSetArg( &args[n++], Pt_ARG_POINTER, textfield, 0 );
+! gui_ph_dialog_text = PtCreateWidget( PtText, pane, n, args );
+! PtAddCallback( gui_ph_dialog_text, Pt_CB_ACTIVATE,
+! gui_ph_dialog_text_enter, &modal_ctrl );
+ }
+
+ di.parent = gui.vimWindow;
+--- 1576,1607 ----
+ PtModalCtrl_t modal_ctrl;
+ PtDialogInfo_t di;
+
+! memset(&di, 0, sizeof(di));
+! memset(&modal_ctrl, 0, sizeof(modal_ctrl));
+
+ n = 0;
+! PtSetArg(&args[n++], Pt_ARG_GROUP_ROWS_COLS, 0, 0);
+! PtSetArg(&args[n++], Pt_ARG_WIDTH, 350, 0);
+! PtSetArg(&args[n++], Pt_ARG_GROUP_ORIENTATION,
+! Pt_GROUP_VERTICAL, 0);
+! PtSetArg(&args[n++], Pt_ARG_GROUP_FLAGS,
+! Pt_TRUE, Pt_GROUP_NO_KEYS | Pt_GROUP_STRETCH_HORIZONTAL);
+! PtSetArg(&args[n++], Pt_ARG_CONTAINER_FLAGS, Pt_FALSE, Pt_TRUE);
+! pane = PtCreateWidget(PtGroup, NULL, n, args);
+
+ n = 0;
+! PtSetArg(&args[n++], Pt_ARG_TEXT_STRING, message, 0);
+! PtCreateWidget(PtLabel, pane, n, args);
+
+! if (textfield != NULL)
+ {
+ n = 0;
+! PtSetArg(&args[n++], Pt_ARG_MAX_LENGTH, IOSIZE - 1, 0);
+! PtSetArg(&args[n++], Pt_ARG_TEXT_STRING, textfield, 0);
+! PtSetArg(&args[n++], Pt_ARG_POINTER, textfield, 0);
+! gui_ph_dialog_text = PtCreateWidget(PtText, pane, n, args);
+! PtAddCallback(gui_ph_dialog_text, Pt_CB_ACTIVATE,
+! gui_ph_dialog_text_enter, &modal_ctrl);
+ }
+
+ di.parent = gui.vimWindow;
+***************
+*** 1616,1641 ****
+ di.callback = gui_ph_dialog_close;
+ di.data = &modal_ctrl;
+
+! dialog = PtCreateDialog( &di );
+! PtAddFilterCallback( dialog, Ph_EV_KEY,
+! gui_ph_dialog_esc, &modal_ctrl );
+
+! if( gui_ph_dialog_text != NULL )
+! PtGiveFocus( gui_ph_dialog_text, NULL );
+
+ /* Open dialog, block the vim window and wait for the dialog to close */
+! PtRealizeWidget( dialog );
+! PtMakeModal( dialog, Ph_CURSOR_NOINPUT, Ph_CURSOR_DEFAULT_COLOR );
+! dialog_result = (int) PtModalBlock( &modal_ctrl, 0 );
+
+! PtDestroyWidget( dialog );
+ gui_ph_dialog_text = NULL;
+ }
+ #endif
+ }
+
+! vim_free( button_array );
+! vim_free( buttons_copy );
+
+ return dialog_result;
+ }
+--- 1616,1641 ----
+ di.callback = gui_ph_dialog_close;
+ di.data = &modal_ctrl;
+
+! dialog = PtCreateDialog(&di);
+! PtAddFilterCallback(dialog, Ph_EV_KEY,
+! gui_ph_dialog_esc, &modal_ctrl);
+
+! if (gui_ph_dialog_text != NULL)
+! PtGiveFocus(gui_ph_dialog_text, NULL);
+
+ /* Open dialog, block the vim window and wait for the dialog to close */
+! PtRealizeWidget(dialog);
+! PtMakeModal(dialog, Ph_CURSOR_NOINPUT, Ph_CURSOR_DEFAULT_COLOR);
+! dialog_result = (int) PtModalBlock(&modal_ctrl, 0);
+
+! PtDestroyWidget(dialog);
+ gui_ph_dialog_text = NULL;
+ }
+ #endif
+ }
+
+! vim_free(button_array);
+! vim_free(buttons_copy);
+
+ return dialog_result;
+ }
+***************
+*** 1648,1654 ****
+ {
+ PhPoint_t *pos;
+
+! pos = PtWidgetPos( gui.vimWindow, NULL );
+
+ *x = pos->x;
+ *y = pos->y;
+--- 1648,1654 ----
+ {
+ PhPoint_t *pos;
+
+! pos = PtWidgetPos(gui.vimWindow, NULL);
+
+ *x = pos->x;
+ *y = pos->y;
+***************
+*** 1661,1667 ****
+ {
+ PhPoint_t pos = { x, y };
+
+! PtSetResource( gui.vimWindow, Pt_ARG_POS, &pos, 0 );
+ }
+
+ void
+--- 1661,1667 ----
+ {
+ PhPoint_t pos = { x, y };
+
+! PtSetResource(gui.vimWindow, Pt_ARG_POS, &pos, 0);
+ }
+
+ void
+***************
+*** 1677,1686 ****
+ window_size.h += pg_margin_top + pg_margin_bottom;
+ #endif
+
+! PtSetResource( gui.vimWindow, Pt_ARG_MINIMUM_DIM, &min_size, 0 );
+! PtSetResource( gui.vimWindow, Pt_ARG_DIM, &window_size, 0 );
+
+! if( ! PtWidgetIsRealized( gui.vimWindow ) )
+ gui_ph_resize_container();
+ }
+
+--- 1677,1686 ----
+ window_size.h += pg_margin_top + pg_margin_bottom;
+ #endif
+
+! PtSetResource(gui.vimWindow, Pt_ARG_MINIMUM_DIM, &min_size, 0);
+! PtSetResource(gui.vimWindow, Pt_ARG_DIM, &window_size, 0);
+
+! if (! PtWidgetIsRealized(gui.vimWindow))
+ gui_ph_resize_container();
+ }
+
+***************
+*** 1693,1700 ****
+ {
+ PhRect_t console;
+
+! PhWindowQueryVisible( Ph_QUERY_WORKSPACE, 0,
+! PhInputGroup( NULL ), &console );
+
+ *screen_w = console.lr.x - console.ul.x + 1;
+ *screen_h = console.lr.y - console.ul.y + 1;
+--- 1693,1700 ----
+ {
+ PhRect_t console;
+
+! PhWindowQueryVisible(Ph_QUERY_WORKSPACE, 0,
+! PhInputGroup(NULL), &console);
+
+ *screen_w = console.lr.x - console.ul.x + 1;
+ *screen_h = console.lr.y - console.ul.y + 1;
+***************
+*** 1705,1715 ****
+ {
+ PhWindowEvent_t event;
+
+! memset( &event, 0, sizeof (event) );
+ event.event_f = Ph_WM_HIDE;
+ event.event_state = Ph_WM_EVSTATE_HIDE;
+! event.rid = PtWidgetRid( gui.vimWindow );
+! PtForwardWindowEvent( &event );
+ }
+
+ #if defined(FEAT_EVAL) || defined(PROTO)
+--- 1705,1715 ----
+ {
+ PhWindowEvent_t event;
+
+! memset(&event, 0, sizeof (event));
+ event.event_f = Ph_WM_HIDE;
+ event.event_state = Ph_WM_EVSTATE_HIDE;
+! event.rid = PtWidgetRid(gui.vimWindow);
+! PtForwardWindowEvent(&event);
+ }
+
+ #if defined(FEAT_EVAL) || defined(PROTO)
+***************
+*** 1721,1731 ****
+ {
+ PhWindowEvent_t event;
+
+! memset( &event, 0, sizeof (event) );
+ event.event_f = Ph_WM_TOFRONT;
+ event.event_state = Ph_WM_EVSTATE_FFRONT;
+! event.rid = PtWidgetRid( gui.vimWindow );
+! PtForwardWindowEvent( &event );
+ }
+ #endif
+
+--- 1721,1731 ----
+ {
+ PhWindowEvent_t event;
+
+! memset(&event, 0, sizeof (event));
+ event.event_f = Ph_WM_TOFRONT;
+ event.event_state = Ph_WM_EVSTATE_FFRONT;
+! event.rid = PtWidgetRid(gui.vimWindow);
+! PtForwardWindowEvent(&event);
+ }
+ #endif
+
+***************
+*** 1733,1741 ****
+ gui_mch_settitle(char_u *title, char_u *icon)
+ {
+ #ifdef USE_PANEL_GROUP
+! gui_ph_pg_set_buffer_num( curwin->w_buffer->b_fnum );
+ #endif
+! PtSetResource( gui.vimWindow, Pt_ARG_WINDOW_TITLE, title, 0 );
+ /* Not sure what to do with the icon text, set balloon text somehow? */
+ }
+
+--- 1733,1741 ----
+ gui_mch_settitle(char_u *title, char_u *icon)
+ {
+ #ifdef USE_PANEL_GROUP
+! gui_ph_pg_set_buffer_num(curwin->w_buffer->b_fnum);
+ #endif
+! PtSetResource(gui.vimWindow, Pt_ARG_WINDOW_TITLE, title, 0);
+ /* Not sure what to do with the icon text, set balloon text somehow? */
+ }
+
+***************
+*** 1748,1757 ****
+ int n = 0;
+ PtArg_t args[3];
+
+! PtSetArg( &args[ n++ ], Pt_ARG_MAXIMUM, max, 0 );
+! PtSetArg( &args[ n++ ], Pt_ARG_SLIDER_SIZE, size, 0 );
+! PtSetArg( &args[ n++ ], Pt_ARG_GAUGE_VALUE, val, 0 );
+! PtSetResources( sb->id, n, args );
+ }
+
+ void
+--- 1748,1757 ----
+ int n = 0;
+ PtArg_t args[3];
+
+! PtSetArg(&args[ n++ ], Pt_ARG_MAXIMUM, max, 0);
+! PtSetArg(&args[ n++ ], Pt_ARG_SLIDER_SIZE, size, 0);
+! PtSetArg(&args[ n++ ], Pt_ARG_GAUGE_VALUE, val, 0);
+! PtSetResources(sb->id, n, args);
+ }
+
+ void
+***************
+*** 1759,1765 ****
+ {
+ PhArea_t area = {{ x, y }, { w, h }};
+
+! PtSetResource( sb->id, Pt_ARG_AREA, &area, 0 );
+ }
+
+ void
+--- 1759,1765 ----
+ {
+ PhArea_t area = {{ x, y }, { w, h }};
+
+! PtSetResource(sb->id, Pt_ARG_AREA, &area, 0);
+ }
+
+ void
+***************
+*** 1775,1786 ****
+ *
+ * Also, don't let the scrollbar get focus
+ */
+! PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_DELAY_REALIZE,
+! Pt_DELAY_REALIZE | Pt_GETS_FOCUS );
+! PtSetArg( &args[ n++ ], Pt_ARG_SCROLLBAR_FLAGS, Pt_SCROLLBAR_SHOW_ARROWS, 0);
+ #if 0
+ /* Don't need this anchoring for the scrollbars */
+! if( orient == SBAR_HORIZ )
+ {
+ anchor_flags = Pt_BOTTOM_ANCHORED_BOTTOM |
+ Pt_LEFT_ANCHORED_LEFT | Pt_RIGHT_ANCHORED_RIGHT;
+--- 1775,1786 ----
+ *
+ * Also, don't let the scrollbar get focus
+ */
+! PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_DELAY_REALIZE,
+! Pt_DELAY_REALIZE | Pt_GETS_FOCUS);
+! PtSetArg(&args[ n++ ], Pt_ARG_SCROLLBAR_FLAGS, Pt_SCROLLBAR_SHOW_ARROWS, 0);
+ #if 0
+ /* Don't need this anchoring for the scrollbars */
+! if (orient == SBAR_HORIZ)
+ {
+ anchor_flags = Pt_BOTTOM_ANCHORED_BOTTOM |
+ Pt_LEFT_ANCHORED_LEFT | Pt_RIGHT_ANCHORED_RIGHT;
+***************
+*** 1788,1827 ****
+ else
+ {
+ anchor_flags = Pt_BOTTOM_ANCHORED_BOTTOM | Pt_TOP_ANCHORED_TOP;
+! if( sb->wp != NULL )
+ {
+! if( sb == &sb->wp->w_scrollbars[ SBAR_LEFT ] )
+ anchor_flags |= Pt_LEFT_ANCHORED_LEFT;
+ else
+ anchor_flags |= Pt_RIGHT_ANCHORED_RIGHT;
+ }
+ }
+! PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS, anchor_flags, Pt_IS_ANCHORED );
+ #endif
+! PtSetArg( &args[ n++ ], Pt_ARG_ORIENTATION,
+! (orient == SBAR_HORIZ) ? Pt_HORIZONTAL : Pt_VERTICAL, 0 );
+ #ifdef USE_PANEL_GROUP
+! sb->id = PtCreateWidget( PtScrollbar, gui.vimPanelGroup, n, args );
+ #else
+! sb->id = PtCreateWidget( PtScrollbar, gui.vimContainer, n, args );
+ #endif
+
+! PtAddCallback( sb->id, Pt_CB_SCROLLBAR_MOVE, gui_ph_handle_scrollbar, sb );
+ }
+
+ void
+ gui_mch_enable_scrollbar(scrollbar_T *sb, int flag)
+ {
+! if( flag != 0 )
+! PtRealizeWidget( sb->id );
+ else
+! PtUnrealizeWidget( sb->id );
+ }
+
+ void
+ gui_mch_destroy_scrollbar(scrollbar_T *sb)
+ {
+! PtDestroyWidget( sb->id );
+ sb->id = NULL;
+ }
+
+--- 1788,1827 ----
+ else
+ {
+ anchor_flags = Pt_BOTTOM_ANCHORED_BOTTOM | Pt_TOP_ANCHORED_TOP;
+! if (sb->wp != NULL)
+ {
+! if (sb == &sb->wp->w_scrollbars[ SBAR_LEFT ])
+ anchor_flags |= Pt_LEFT_ANCHORED_LEFT;
+ else
+ anchor_flags |= Pt_RIGHT_ANCHORED_RIGHT;
+ }
+ }
+! PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, anchor_flags, Pt_IS_ANCHORED);
+ #endif
+! PtSetArg(&args[ n++ ], Pt_ARG_ORIENTATION,
+! (orient == SBAR_HORIZ) ? Pt_HORIZONTAL : Pt_VERTICAL, 0);
+ #ifdef USE_PANEL_GROUP
+! sb->id = PtCreateWidget(PtScrollbar, gui.vimPanelGroup, n, args);
+ #else
+! sb->id = PtCreateWidget(PtScrollbar, gui.vimContainer, n, args);
+ #endif
+
+! PtAddCallback(sb->id, Pt_CB_SCROLLBAR_MOVE, gui_ph_handle_scrollbar, sb);
+ }
+
+ void
+ gui_mch_enable_scrollbar(scrollbar_T *sb, int flag)
+ {
+! if (flag != 0)
+! PtRealizeWidget(sb->id);
+ else
+! PtUnrealizeWidget(sb->id);
+ }
+
+ void
+ gui_mch_destroy_scrollbar(scrollbar_T *sb)
+ {
+! PtDestroyWidget(sb->id);
+ sb->id = NULL;
+ }
+
+***************
+*** 1866,1873 ****
+ return;
+
+ if (shape == MSHAPE_HIDE || gui.pointer_hidden)
+! PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_TYPE, Ph_CURSOR_NONE,
+! 0 );
+ else
+ {
+ if (shape >= MSHAPE_NUMBERED)
+--- 1866,1873 ----
+ return;
+
+ if (shape == MSHAPE_HIDE || gui.pointer_hidden)
+! PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE, Ph_CURSOR_NONE,
+! 0);
+ else
+ {
+ if (shape >= MSHAPE_NUMBERED)
+***************
+*** 1875,1881 ****
+ else
+ id = mshape_ids[shape];
+
+! PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_TYPE, id, 0 );
+ }
+ if (shape != MSHAPE_HIDE)
+ last_shape = shape;
+--- 1875,1881 ----
+ else
+ id = mshape_ids[shape];
+
+! PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE, id, 0);
+ }
+ if (shape != MSHAPE_HIDE)
+ last_shape = shape;
+***************
+*** 1885,1903 ****
+ void
+ gui_mch_mousehide(int hide)
+ {
+! if( gui.pointer_hidden != hide )
+ {
+ gui.pointer_hidden = hide;
+ #ifdef FEAT_MOUSESHAPE
+! if( hide )
+! PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_TYPE,
+! Ph_CURSOR_NONE, 0 );
+ else
+! mch_set_mouse_shape( last_shape );
+ #else
+! PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_TYPE,
+! ( hide == MOUSE_SHOW ) ? GUI_PH_MOUSE_TYPE : Ph_CURSOR_NONE,
+! 0 );
+ #endif
+ }
+ }
+--- 1885,1903 ----
+ void
+ gui_mch_mousehide(int hide)
+ {
+! if (gui.pointer_hidden != hide)
+ {
+ gui.pointer_hidden = hide;
+ #ifdef FEAT_MOUSESHAPE
+! if (hide)
+! PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE,
+! Ph_CURSOR_NONE, 0);
+ else
+! mch_set_mouse_shape(last_shape);
+ #else
+! PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE,
+! (hide == MOUSE_SHOW) ? GUI_PH_MOUSE_TYPE : Ph_CURSOR_NONE,
+! 0);
+ #endif
+ }
+ }
+***************
+*** 1910,1917 ****
+
+ /* FIXME: does this return the correct position,
+ * with respect to the border? */
+! PhQueryCursor( PhInputGroup( NULL ), &info );
+! PtGetAbsPosition( gui.vimTextArea , &ix, &iy );
+
+ *x = info.pos.x - ix;
+ *y = info.pos.y - iy;
+--- 1910,1917 ----
+
+ /* FIXME: does this return the correct position,
+ * with respect to the border? */
+! PhQueryCursor(PhInputGroup(NULL), &info);
+! PtGetAbsPosition(gui.vimTextArea , &ix, &iy);
+
+ *x = info.pos.x - ix;
+ *y = info.pos.y - iy;
+***************
+*** 1922,1930 ****
+ {
+ short abs_x, abs_y;
+
+! PtGetAbsPosition( gui.vimTextArea, &abs_x, &abs_y );
+ /* Add the border offset? */
+! PhMoveCursorAbs( PhInputGroup( NULL ), abs_x + x, abs_y + y );
+ }
+
+ /****************************************************************************/
+--- 1922,1930 ----
+ {
+ short abs_x, abs_y;
+
+! PtGetAbsPosition(gui.vimTextArea, &abs_x, &abs_y);
+ /* Add the border offset? */
+! PhMoveCursorAbs(PhInputGroup(NULL), abs_x + x, abs_y + y);
+ }
+
+ /****************************************************************************/
+***************
+*** 1952,1974 ****
+ color_diff = gui_get_lightness(gui_ph_mouse_color)
+ - gui_get_lightness(gui.back_pixel);
+
+! if( abs( color_diff ) < 64 )
+ {
+ short r, g, b;
+ /* not a great algorithm... */
+! r = PgRedValue( gui_ph_mouse_color ) ^ 255;
+! g = PgGreenValue( gui_ph_mouse_color ) ^ 255;
+! b = PgBlueValue( gui_ph_mouse_color ) ^ 255;
+
+ #ifndef FEAT_MOUSESHAPE
+! gui_ph_mouse_color = PgRGB( r, g, b );
+! PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_COLOR,
+! gui_ph_mouse_color, 0 );
+ #endif
+ }
+ #endif
+
+! PtSetResource( gui.vimTextArea, Pt_ARG_FILL_COLOR, gui.back_pixel, 0 );
+ }
+
+ static int
+--- 1952,1974 ----
+ color_diff = gui_get_lightness(gui_ph_mouse_color)
+ - gui_get_lightness(gui.back_pixel);
+
+! if (abs(color_diff) < 64)
+ {
+ short r, g, b;
+ /* not a great algorithm... */
+! r = PgRedValue(gui_ph_mouse_color) ^ 255;
+! g = PgGreenValue(gui_ph_mouse_color) ^ 255;
+! b = PgBlueValue(gui_ph_mouse_color) ^ 255;
+
+ #ifndef FEAT_MOUSESHAPE
+! gui_ph_mouse_color = PgRGB(r, g, b);
+! PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_COLOR,
+! gui_ph_mouse_color, 0);
+ #endif
+ }
+ #endif
+
+! PtSetResource(gui.vimTextArea, Pt_ARG_FILL_COLOR, gui.back_pixel, 0);
+ }
+
+ static int
+***************
+*** 2058,2076 ****
+ };
+
+ /* is name #rrggbb format? */
+! if( name[0] == '#' && STRLEN( name ) == 7 )
+ {
+! r = hex_digit( name[1] ) * 16 + hex_digit( name[2] );
+! g = hex_digit( name[3] ) * 16 + hex_digit( name[4] );
+! b = hex_digit( name[5] ) * 16 + hex_digit( name[6] );
+! if( r < 0 || g < 0 || b < 0 )
+ return INVALCOLOR;
+ return RGB(r, g, b);
+ }
+
+! for( i = 0; i < ARRAY_LENGTH( table ); i++ )
+ {
+! if( STRICMP( name, table[i].name ) == 0 )
+ return table[i].colour;
+ }
+
+--- 2058,2076 ----
+ };
+
+ /* is name #rrggbb format? */
+! if (name[0] == '#' && STRLEN(name) == 7)
+ {
+! r = hex_digit(name[1]) * 16 + hex_digit(name[2]);
+! g = hex_digit(name[3]) * 16 + hex_digit(name[4]);
+! b = hex_digit(name[5]) * 16 + hex_digit(name[6]);
+! if (r < 0 || g < 0 || b < 0)
+ return INVALCOLOR;
+ return RGB(r, g, b);
+ }
+
+! for (i = 0; i < ARRAY_LENGTH(table); i++)
+ {
+! if (STRICMP(name, table[i].name) == 0)
+ return table[i].colour;
+ }
+
+***************
+*** 2129,2141 ****
+ void
+ gui_mch_set_fg_color(guicolor_T color)
+ {
+! PgSetTextColor( color );
+ }
+
+ void
+ gui_mch_set_bg_color(guicolor_T color)
+ {
+! PgSetFillColor( color );
+ }
+
+ void
+--- 2129,2141 ----
+ void
+ gui_mch_set_fg_color(guicolor_T color)
+ {
+! PgSetTextColor(color);
+ }
+
+ void
+ gui_mch_set_bg_color(guicolor_T color)
+ {
+! PgSetFillColor(color);
+ }
+
+ void
+***************
+*** 2148,2168 ****
+ {
+ PhRect_t rect;
+
+! rect.ul.x = FILL_X( col );
+! rect.ul.y = FILL_Y( row );
+
+ /* FIXME: This has an off by one pixel problem */
+ rect.lr.x = rect.ul.x + nc * gui.char_width;
+ rect.lr.y = rect.ul.y + nr * gui.char_height;
+! if( nc > 0 )
+ rect.lr.x -= 1;
+! if( nr > 0 )
+ rect.lr.y -= 1;
+
+ DRAW_START;
+! PgSetDrawMode( Pg_DrawModeDSTINVERT );
+! PgDrawRect( &rect, Pg_DRAW_FILL );
+! PgSetDrawMode( Pg_DrawModeSRCCOPY );
+ DRAW_END;
+ }
+
+--- 2148,2168 ----
+ {
+ PhRect_t rect;
+
+! rect.ul.x = FILL_X(col);
+! rect.ul.y = FILL_Y(row);
+
+ /* FIXME: This has an off by one pixel problem */
+ rect.lr.x = rect.ul.x + nc * gui.char_width;
+ rect.lr.y = rect.ul.y + nr * gui.char_height;
+! if (nc > 0)
+ rect.lr.x -= 1;
+! if (nr > 0)
+ rect.lr.y -= 1;
+
+ DRAW_START;
+! PgSetDrawMode(Pg_DrawModeDSTINVERT);
+! PgDrawRect(&rect, Pg_DRAW_FILL);
+! PgSetDrawMode(Pg_DrawModeSRCCOPY);
+ DRAW_END;
+ }
+
+***************
+*** 2170,2182 ****
+ gui_mch_clear_block(int row1, int col1, int row2, int col2)
+ {
+ PhRect_t block = {
+! { FILL_X( col1 ), FILL_Y( row1 ) },
+! { FILL_X( col2 + 1 ) - 1, FILL_Y( row2 + 1 ) - 1}
+ };
+
+ DRAW_START;
+! gui_mch_set_bg_color( gui.back_pixel );
+! PgDrawRect( &block, Pg_DRAW_FILL );
+ DRAW_END;
+ }
+
+--- 2170,2182 ----
+ gui_mch_clear_block(int row1, int col1, int row2, int col2)
+ {
+ PhRect_t block = {
+! { FILL_X(col1), FILL_Y(row1) },
+! { FILL_X(col2 + 1) - 1, FILL_Y(row2 + 1) - 1}
+ };
+
+ DRAW_START;
+! gui_mch_set_bg_color(gui.back_pixel);
+! PgDrawRect(&block, Pg_DRAW_FILL);
+ DRAW_END;
+ }
+
+***************
+*** 2189,2200 ****
+ Rows * gui.char_height + gui.border_width - 1 }
+ };
+
+! if( is_ignore_draw == TRUE )
+ return;
+
+ DRAW_START;
+! gui_mch_set_bg_color( gui.back_pixel );
+! PgDrawRect( &text_rect, Pg_DRAW_FILL );
+ DRAW_END;
+ }
+
+--- 2189,2200 ----
+ Rows * gui.char_height + gui.border_width - 1 }
+ };
+
+! if (is_ignore_draw == TRUE)
+ return;
+
+ DRAW_START;
+! gui_mch_set_bg_color(gui.back_pixel);
+! PgDrawRect(&text_rect, Pg_DRAW_FILL);
+ DRAW_END;
+ }
+
+***************
+*** 2204,2231 ****
+ PhRect_t rect;
+ PhPoint_t delta;
+
+! rect.ul.x = FILL_X( gui.scroll_region_left );
+! rect.ul.y = FILL_Y( row + num_lines );
+
+! rect.lr.x = FILL_X( gui.scroll_region_right + 1 ) - 1;
+! rect.lr.y = FILL_Y( gui.scroll_region_bot + 1) - 1;
+
+! PtWidgetOffset( gui.vimTextArea, &gui_ph_raw_offset );
+! PhTranslatePoint( &gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL));
+! PhTranslateRect( &rect, &gui_ph_raw_offset );
+
+ delta.x = 0;
+ delta.y = -num_lines * gui.char_height;
+
+ PgFlush();
+
+! PhBlit( PtWidgetRid( PtFindDisjoint( gui.vimTextArea ) ), &rect, &delta );
+
+ gui_clear_block(
+ gui.scroll_region_bot - num_lines + 1,
+ gui.scroll_region_left,
+ gui.scroll_region_bot,
+! gui.scroll_region_right );
+ }
+
+ void
+--- 2204,2231 ----
+ PhRect_t rect;
+ PhPoint_t delta;
+
+! rect.ul.x = FILL_X(gui.scroll_region_left);
+! rect.ul.y = FILL_Y(row + num_lines);
+
+! rect.lr.x = FILL_X(gui.scroll_region_right + 1) - 1;
+! rect.lr.y = FILL_Y(gui.scroll_region_bot + 1) - 1;
+
+! PtWidgetOffset(gui.vimTextArea, &gui_ph_raw_offset);
+! PhTranslatePoint(&gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL));
+! PhTranslateRect(&rect, &gui_ph_raw_offset);
+
+ delta.x = 0;
+ delta.y = -num_lines * gui.char_height;
+
+ PgFlush();
+
+! PhBlit(PtWidgetRid(PtFindDisjoint(gui.vimTextArea)), &rect, &delta);
+
+ gui_clear_block(
+ gui.scroll_region_bot - num_lines + 1,
+ gui.scroll_region_left,
+ gui.scroll_region_bot,
+! gui.scroll_region_right);
+ }
+
+ void
+***************
+*** 2234,2258 ****
+ PhRect_t rect;
+ PhPoint_t delta;
+
+! rect.ul.x = FILL_X( gui.scroll_region_left );
+! rect.ul.y = FILL_Y( row );
+
+! rect.lr.x = FILL_X( gui.scroll_region_right + 1 ) - 1;
+! rect.lr.y = FILL_Y( gui.scroll_region_bot - num_lines + 1 ) - 1;
+
+! PtWidgetOffset( gui.vimTextArea, &gui_ph_raw_offset );
+! PhTranslatePoint( &gui_ph_raw_offset, PtWidgetPos( gui.vimTextArea, NULL ) );
+! PhTranslateRect( &rect, &gui_ph_raw_offset );
+
+ delta.x = 0;
+ delta.y = num_lines * gui.char_height;
+
+ PgFlush();
+
+! PhBlit( PtWidgetRid( PtFindDisjoint( gui.vimTextArea ) ) , &rect, &delta );
+
+! gui_clear_block( row, gui.scroll_region_left,
+! row + num_lines - 1, gui.scroll_region_right );
+ }
+
+ void
+--- 2234,2258 ----
+ PhRect_t rect;
+ PhPoint_t delta;
+
+! rect.ul.x = FILL_X(gui.scroll_region_left);
+! rect.ul.y = FILL_Y(row);
+
+! rect.lr.x = FILL_X(gui.scroll_region_right + 1) - 1;
+! rect.lr.y = FILL_Y(gui.scroll_region_bot - num_lines + 1) - 1;
+
+! PtWidgetOffset(gui.vimTextArea, &gui_ph_raw_offset);
+! PhTranslatePoint(&gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL));
+! PhTranslateRect(&rect, &gui_ph_raw_offset);
+
+ delta.x = 0;
+ delta.y = num_lines * gui.char_height;
+
+ PgFlush();
+
+! PhBlit(PtWidgetRid(PtFindDisjoint(gui.vimTextArea)) , &rect, &delta);
+
+! gui_clear_block(row, gui.scroll_region_left,
+! row + num_lines - 1, gui.scroll_region_right);
+ }
+
+ void
+***************
+*** 2261,2297 ****
+ static char *utf8_buffer = NULL;
+ static int utf8_len = 0;
+
+! PhPoint_t pos = { TEXT_X( col ), TEXT_Y( row ) };
+ PhRect_t rect;
+
+! if( is_ignore_draw == TRUE )
+ return;
+
+ DRAW_START;
+
+! if( !( flags & DRAW_TRANSP ) )
+ {
+ PgDrawIRect(
+! FILL_X( col ), FILL_Y( row ),
+! FILL_X( col + len ) - 1, FILL_Y( row + 1 ) - 1,
+! Pg_DRAW_FILL );
+ }
+
+! if( flags & DRAW_UNDERL )
+! PgSetUnderline( gui.norm_pixel, Pg_TRANSPARENT, 0 );
+
+! if( charset_translate != NULL
+ #ifdef FEAT_MBYTE
+ && enc_utf8 == 0
+ #endif
+! )
+ {
+ int src_taken, dst_made;
+
+ /* Use a static buffer to avoid large amounts of de/allocations */
+! if( utf8_len < len )
+ {
+! utf8_buffer = realloc( utf8_buffer, len * MB_LEN_MAX );
+ utf8_len = len;
+ }
+
+--- 2261,2297 ----
+ static char *utf8_buffer = NULL;
+ static int utf8_len = 0;
+
+! PhPoint_t pos = { TEXT_X(col), TEXT_Y(row) };
+ PhRect_t rect;
+
+! if (is_ignore_draw == TRUE)
+ return;
+
+ DRAW_START;
+
+! if (!(flags & DRAW_TRANSP))
+ {
+ PgDrawIRect(
+! FILL_X(col), FILL_Y(row),
+! FILL_X(col + len) - 1, FILL_Y(row + 1) - 1,
+! Pg_DRAW_FILL);
+ }
+
+! if (flags & DRAW_UNDERL)
+! PgSetUnderline(gui.norm_pixel, Pg_TRANSPARENT, 0);
+
+! if (charset_translate != NULL
+ #ifdef FEAT_MBYTE
+ && enc_utf8 == 0
+ #endif
+! )
+ {
+ int src_taken, dst_made;
+
+ /* Use a static buffer to avoid large amounts of de/allocations */
+! if (utf8_len < len)
+ {
+! utf8_buffer = realloc(utf8_buffer, len * MB_LEN_MAX);
+ utf8_len = len;
+ }
+
+***************
+*** 2302,2337 ****
+ &src_taken,
+ utf8_buffer,
+ utf8_len,
+! &dst_made );
+ s = utf8_buffer;
+ len = dst_made;
+ }
+
+! PgDrawText( s, len, &pos, 0 );
+
+! if( flags & DRAW_BOLD )
+ {
+ /* FIXME: try and only calculate these values once... */
+! rect.ul.x = FILL_X( col ) + 1;
+! rect.ul.y = FILL_Y( row );
+! rect.lr.x = FILL_X( col + len ) - 1;
+! rect.lr.y = FILL_Y( row + 1) - 1;
+! /* PgSetUserClip( NULL ) causes the scrollbar to not redraw... */
+ #if 0
+ pos.x++;
+
+! PgSetUserClip( &rect );
+! PgDrawText( s, len, &pos, 0 );
+! PgSetUserClip( NULL );
+ #else
+! rect.lr.y -= ( p_linespace + 1 ) / 2;
+ /* XXX: DrawTextArea doesn't work with phditto */
+! PgDrawTextArea( s, len, &rect, Pg_TEXT_BOTTOM );
+ #endif
+ }
+
+! if( flags & DRAW_UNDERL )
+! PgSetUnderline( Pg_TRANSPARENT, Pg_TRANSPARENT, 0 );
+
+ DRAW_END;
+ }
+--- 2302,2337 ----
+ &src_taken,
+ utf8_buffer,
+ utf8_len,
+! &dst_made);
+ s = utf8_buffer;
+ len = dst_made;
+ }
+
+! PgDrawText(s, len, &pos, 0);
+
+! if (flags & DRAW_BOLD)
+ {
+ /* FIXME: try and only calculate these values once... */
+! rect.ul.x = FILL_X(col) + 1;
+! rect.ul.y = FILL_Y(row);
+! rect.lr.x = FILL_X(col + len) - 1;
+! rect.lr.y = FILL_Y(row + 1) - 1;
+! /* PgSetUserClip(NULL) causes the scrollbar to not redraw... */
+ #if 0
+ pos.x++;
+
+! PgSetUserClip(&rect);
+! PgDrawText(s, len, &pos, 0);
+! PgSetUserClip(NULL);
+ #else
+! rect.lr.y -= (p_linespace + 1) / 2;
+ /* XXX: DrawTextArea doesn't work with phditto */
+! PgDrawTextArea(s, len, &rect, Pg_TEXT_BOTTOM);
+ #endif
+ }
+
+! if (flags & DRAW_UNDERL)
+! PgSetUnderline(Pg_TRANSPARENT, Pg_TRANSPARENT, 0);
+
+ DRAW_END;
+ }
+***************
+*** 2346,2359 ****
+
+ /* FIXME: Double width characters */
+
+! r.ul.x = FILL_X( gui.col );
+! r.ul.y = FILL_Y( gui.row );
+ r.lr.x = r.ul.x + gui.char_width - 1;
+ r.lr.y = r.ul.y + gui.char_height - 1;
+
+ DRAW_START;
+! PgSetStrokeColor( color );
+! PgDrawRect( &r, Pg_DRAW_STROKE );
+ DRAW_END;
+ }
+
+--- 2346,2359 ----
+
+ /* FIXME: Double width characters */
+
+! r.ul.x = FILL_X(gui.col);
+! r.ul.y = FILL_Y(gui.row);
+ r.lr.x = r.ul.x + gui.char_width - 1;
+ r.lr.y = r.ul.y + gui.char_height - 1;
+
+ DRAW_START;
+! PgSetStrokeColor(color);
+! PgDrawRect(&r, Pg_DRAW_STROKE);
+ DRAW_END;
+ }
+
+***************
+*** 2362,2375 ****
+ {
+ PhRect_t r;
+
+! r.ul.x = FILL_X( gui.col );
+! r.ul.y = FILL_Y( gui.row ) + gui.char_height - h;
+ r.lr.x = r.ul.x + w - 1;
+ r.lr.y = r.ul.y + h - 1;
+
+ DRAW_START;
+! gui_mch_set_bg_color( color );
+! PgDrawRect( &r, Pg_DRAW_FILL );
+ DRAW_END;
+ }
+
+--- 2362,2375 ----
+ {
+ PhRect_t r;
+
+! r.ul.x = FILL_X(gui.col);
+! r.ul.y = FILL_Y(gui.row) + gui.char_height - h;
+ r.lr.x = r.ul.x + w - 1;
+ r.lr.y = r.ul.y + h - 1;
+
+ DRAW_START;
+! gui_mch_set_bg_color(color);
+! PgDrawRect(&r, Pg_DRAW_FILL);
+ DRAW_END;
+ }
+
+***************
+*** 2385,2394 ****
+ gui_mch_start_blink(void)
+ {
+ /* Only turn on the timer on if none of the times are zero */
+! if( blink_waittime && blink_ontime && blink_offtime && gui.in_focus)
+ {
+! PtSetResource( gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL,
+! blink_waittime, 0 );
+ blink_state = BLINK_ON;
+ gui_update_cursor(TRUE, FALSE);
+ }
+--- 2385,2394 ----
+ gui_mch_start_blink(void)
+ {
+ /* Only turn on the timer on if none of the times are zero */
+! if (blink_waittime && blink_ontime && blink_offtime && gui.in_focus)
+ {
+! PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL,
+! blink_waittime, 0);
+ blink_state = BLINK_ON;
+ gui_update_cursor(TRUE, FALSE);
+ }
+***************
+*** 2397,2405 ****
+ void
+ gui_mch_stop_blink(void)
+ {
+! PtSetResource( gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, 0, 0 );
+
+! if( blink_state == BLINK_OFF )
+ gui_update_cursor(TRUE, FALSE);
+
+ blink_state = BLINK_NONE;
+--- 2397,2405 ----
+ void
+ gui_mch_stop_blink(void)
+ {
+! PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, 0, 0);
+
+! if (blink_state == BLINK_OFF)
+ gui_update_cursor(TRUE, FALSE);
+
+ blink_state = BLINK_NONE;
+***************
+*** 2417,2431 ****
+ void
+ gui_mch_flash(int msec)
+ {
+! PgSetFillXORColor( Pg_BLACK, Pg_WHITE );
+! PgSetDrawMode( Pg_DRAWMODE_XOR );
+ gui_mch_clear_all();
+ gui_mch_flush();
+
+! ui_delay( (long) msec, TRUE );
+
+ gui_mch_clear_all();
+! PgSetDrawMode( Pg_DRAWMODE_OPAQUE );
+ gui_mch_flush();
+ }
+
+--- 2417,2431 ----
+ void
+ gui_mch_flash(int msec)
+ {
+! PgSetFillXORColor(Pg_BLACK, Pg_WHITE);
+! PgSetDrawMode(Pg_DRAWMODE_XOR);
+ gui_mch_clear_all();
+ gui_mch_flush();
+
+! ui_delay((long) msec, TRUE);
+
+ gui_mch_clear_all();
+! PgSetDrawMode(Pg_DRAWMODE_OPAQUE);
+ gui_mch_flush();
+ }
+
+***************
+*** 2440,2446 ****
+ {
+ PhArea_t area = {{x, y}, {w, h}};
+
+! PtSetResource( gui.vimTextArea, Pt_ARG_AREA, &area, 0 );
+ }
+
+ int
+--- 2440,2446 ----
+ {
+ PhArea_t area = {{x, y}, {w, h}};
+
+! PtSetResource(gui.vimTextArea, Pt_ARG_AREA, &area, 0);
+ }
+
+ int
+***************
+*** 2496,2514 ****
+ };
+
+ static PhImage_t *
+! gui_ph_toolbar_load_icon( char_u *iconfile )
+ {
+ static PhImage_t external_icon;
+ PhImage_t *temp_phi = NULL;
+
+! temp_phi = PxLoadImage( iconfile, NULL );
+! if( temp_phi != NULL )
+ {
+ /* The label widget will free the image/palette/etc. for us when
+ * it's destroyed */
+ temp_phi->flags |= Ph_RELEASE_IMAGE_ALL;
+! memcpy( &external_icon, temp_phi, sizeof( external_icon ) );
+! free( temp_phi );
+
+ temp_phi = &external_icon;
+ }
+--- 2496,2514 ----
+ };
+
+ static PhImage_t *
+! gui_ph_toolbar_load_icon(char_u *iconfile)
+ {
+ static PhImage_t external_icon;
+ PhImage_t *temp_phi = NULL;
+
+! temp_phi = PxLoadImage(iconfile, NULL);
+! if (temp_phi != NULL)
+ {
+ /* The label widget will free the image/palette/etc. for us when
+ * it's destroyed */
+ temp_phi->flags |= Ph_RELEASE_IMAGE_ALL;
+! memcpy(&external_icon, temp_phi, sizeof(external_icon));
+! free(temp_phi);
+
+ temp_phi = &external_icon;
+ }
+***************
+*** 2523,2551 ****
+ * PhImage_t are copied, and the original PhImage_t aren't needed anymore).
+ */
+ static PhImage_t *
+! gui_ph_toolbar_find_icon( vimmenu_T *menu )
+ {
+ char_u full_pathname[ MAXPATHL + 1 ];
+ PhImage_t *icon = NULL;
+
+! if( menu->icon_builtin == FALSE )
+ {
+! if( menu->iconfile != NULL )
+ /* TODO: use gui_find_iconfile() */
+! icon = gui_ph_toolbar_load_icon( menu->iconfile );
+
+ /* TODO: Restrict loading to just .png? Search for any format? */
+! if( ( icon == NULL ) &&
+! ( ( gui_find_bitmap( menu->name, full_pathname, "gif" ) == OK ) ||
+! ( gui_find_bitmap( menu->name, full_pathname, "png" ) == OK ) ) )
+! icon = gui_ph_toolbar_load_icon( full_pathname );
+
+! if( icon != NULL )
+ return icon;
+ }
+
+! if( menu->iconidx >= 0 &&
+! ( menu->iconidx < ARRAY_LENGTH( gui_ph_toolbar_images ) ) )
+ {
+ return gui_ph_toolbar_images[menu->iconidx];
+ }
+--- 2523,2551 ----
+ * PhImage_t are copied, and the original PhImage_t aren't needed anymore).
+ */
+ static PhImage_t *
+! gui_ph_toolbar_find_icon(vimmenu_T *menu)
+ {
+ char_u full_pathname[ MAXPATHL + 1 ];
+ PhImage_t *icon = NULL;
+
+! if (menu->icon_builtin == FALSE)
+ {
+! if (menu->iconfile != NULL)
+ /* TODO: use gui_find_iconfile() */
+! icon = gui_ph_toolbar_load_icon(menu->iconfile);
+
+ /* TODO: Restrict loading to just .png? Search for any format? */
+! if ((icon == NULL) &&
+! ((gui_find_bitmap(menu->name, full_pathname, "gif") == OK) ||
+! (gui_find_bitmap(menu->name, full_pathname, "png") == OK)))
+! icon = gui_ph_toolbar_load_icon(full_pathname);
+
+! if (icon != NULL)
+ return icon;
+ }
+
+! if (menu->iconidx >= 0 &&
+! (menu->iconidx < ARRAY_LENGTH(gui_ph_toolbar_images)))
+ {
+ return gui_ph_toolbar_images[menu->iconidx];
+ }
+***************
+*** 2554,2567 ****
+ }
+ #endif
+
+! #if defined( FEAT_MENU ) || defined( PROTO )
+ void
+ gui_mch_enable_menu(int flag)
+ {
+! if( flag != 0 )
+! PtRealizeWidget( gui.vimMenuBar );
+ else
+! PtUnrealizeWidget( gui.vimMenuBar );
+ }
+
+ void
+--- 2554,2567 ----
+ }
+ #endif
+
+! #if defined(FEAT_MENU) || defined(PROTO)
+ void
+ gui_mch_enable_menu(int flag)
+ {
+! if (flag != 0)
+! PtRealizeWidget(gui.vimMenuBar);
+ else
+! PtUnrealizeWidget(gui.vimMenuBar);
+ }
+
+ void
+***************
+*** 2572,2601 ****
+
+ /* Change the position of a menu button in the parent */
+ static void
+! gui_ph_position_menu( PtWidget_t *widget, int priority )
+ {
+ PtWidget_t *traverse;
+ vimmenu_T *menu;
+
+! traverse = PtWidgetChildBack( PtWidgetParent( widget ) );
+
+ /* Iterate through the list of widgets in traverse, until
+ * we find the position we want to insert our widget into */
+ /* TODO: traverse from front to back, possible speedup? */
+! while( traverse != NULL )
+ {
+! PtGetResource( traverse, Pt_ARG_POINTER, &menu, 0 );
+
+! if( menu != NULL &&
+ priority < menu->priority &&
+! widget != traverse )
+ {
+ /* Insert the widget before the current traverse widget */
+! PtWidgetInsert( widget, traverse, 1 );
+ return;
+ }
+
+! traverse = PtWidgetBrotherInFront( traverse );
+ }
+ }
+
+--- 2572,2601 ----
+
+ /* Change the position of a menu button in the parent */
+ static void
+! gui_ph_position_menu(PtWidget_t *widget, int priority)
+ {
+ PtWidget_t *traverse;
+ vimmenu_T *menu;
+
+! traverse = PtWidgetChildBack(PtWidgetParent(widget));
+
+ /* Iterate through the list of widgets in traverse, until
+ * we find the position we want to insert our widget into */
+ /* TODO: traverse from front to back, possible speedup? */
+! while (traverse != NULL)
+ {
+! PtGetResource(traverse, Pt_ARG_POINTER, &menu, 0);
+
+! if (menu != NULL &&
+ priority < menu->priority &&
+! widget != traverse)
+ {
+ /* Insert the widget before the current traverse widget */
+! PtWidgetInsert(widget, traverse, 1);
+ return;
+ }
+
+! traverse = PtWidgetBrotherInFront(traverse);
+ }
+ }
+
+***************
+*** 2611,2621 ****
+
+ menu->submenu_id = menu->id = NULL;
+
+! if( menu_is_menubar( menu->name ) )
+ {
+
+! accel_key = vim_strchr( menu->name, '&' );
+! if( accel_key != NULL )
+ {
+ mnemonic_str[0] = accel_key[1];
+ mnemonic_str[1] = NUL;
+--- 2611,2621 ----
+
+ menu->submenu_id = menu->id = NULL;
+
+! if (menu_is_menubar(menu->name))
+ {
+
+! accel_key = vim_strchr(menu->name, '&');
+! if (accel_key != NULL)
+ {
+ mnemonic_str[0] = accel_key[1];
+ mnemonic_str[1] = NUL;
+***************
+*** 2623,2673 ****
+
+ /* Create the menu button */
+ n = 0;
+! PtSetArg( &args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0 );
+! PtSetArg( &args[ n++ ], Pt_ARG_ACCEL_TEXT, menu->actext, 0 );
+! if( accel_key != NULL )
+! PtSetArg( &args[ n++ ], Pt_ARG_ACCEL_KEY, mnemonic_str, 0 );
+! PtSetArg( &args[ n++ ], Pt_ARG_POINTER, menu, 0 );
+
+! if( parent != NULL )
+! PtSetArg( &args[ n++ ], Pt_ARG_BUTTON_TYPE, Pt_MENU_RIGHT, 0 );
+
+! menu->id = PtCreateWidget( PtMenuButton,
+ (parent == NULL) ? gui.vimMenuBar : parent->submenu_id,
+! n, args );
+
+! PtAddCallback( menu->id, Pt_CB_ARM, gui_ph_handle_pulldown_menu, menu );
+
+ /* Create the actual menu */
+ n = 0;
+! if( parent != NULL )
+! PtSetArg( &args[ n++ ], Pt_ARG_MENU_FLAGS, Pt_TRUE, Pt_MENU_CHILD );
+
+! menu->submenu_id = PtCreateWidget( PtMenu, menu->id, n, args );
+
+! if( parent == NULL )
+ {
+! PtAddCallback( menu->submenu_id, Pt_CB_UNREALIZED,
+! gui_ph_handle_menu_unrealized, menu );
+
+! if( menu->mnemonic != 0 )
+ {
+! PtAddHotkeyHandler( gui.vimWindow, tolower( menu->mnemonic ),
+! Pk_KM_Alt, 0, menu, gui_ph_handle_pulldown_menu );
+ }
+ }
+
+! gui_ph_position_menu( menu->id, menu->priority );
+
+ /* Redraw menubar here instead of gui_mch_draw_menubar */
+! if( gui.menu_is_active )
+! PtRealizeWidget( menu->id );
+ }
+! else if( menu_is_popup( menu->name ) )
+ {
+! menu->submenu_id = PtCreateWidget( PtMenu, gui.vimWindow, 0, NULL );
+! PtAddCallback( menu->submenu_id, Pt_CB_UNREALIZED,
+! gui_ph_handle_menu_unrealized, menu );
+ }
+ }
+
+--- 2623,2673 ----
+
+ /* Create the menu button */
+ n = 0;
+! PtSetArg(&args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0);
+! PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_TEXT, menu->actext, 0);
+! if (accel_key != NULL)
+! PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_KEY, mnemonic_str, 0);
+! PtSetArg(&args[ n++ ], Pt_ARG_POINTER, menu, 0);
+
+! if (parent != NULL)
+! PtSetArg(&args[ n++ ], Pt_ARG_BUTTON_TYPE, Pt_MENU_RIGHT, 0);
+
+! menu->id = PtCreateWidget(PtMenuButton,
+ (parent == NULL) ? gui.vimMenuBar : parent->submenu_id,
+! n, args);
+
+! PtAddCallback(menu->id, Pt_CB_ARM, gui_ph_handle_pulldown_menu, menu);
+
+ /* Create the actual menu */
+ n = 0;
+! if (parent != NULL)
+! PtSetArg(&args[ n++ ], Pt_ARG_MENU_FLAGS, Pt_TRUE, Pt_MENU_CHILD);
+
+! menu->submenu_id = PtCreateWidget(PtMenu, menu->id, n, args);
+
+! if (parent == NULL)
+ {
+! PtAddCallback(menu->submenu_id, Pt_CB_UNREALIZED,
+! gui_ph_handle_menu_unrealized, menu);
+
+! if (menu->mnemonic != 0)
+ {
+! PtAddHotkeyHandler(gui.vimWindow, tolower(menu->mnemonic),
+! Pk_KM_Alt, 0, menu, gui_ph_handle_pulldown_menu);
+ }
+ }
+
+! gui_ph_position_menu(menu->id, menu->priority);
+
+ /* Redraw menubar here instead of gui_mch_draw_menubar */
+! if (gui.menu_is_active)
+! PtRealizeWidget(menu->id);
+ }
+! else if (menu_is_popup(menu->name))
+ {
+! menu->submenu_id = PtCreateWidget(PtMenu, gui.vimWindow, 0, NULL);
+! PtAddCallback(menu->submenu_id, Pt_CB_UNREALIZED,
+! gui_ph_handle_menu_unrealized, menu);
+ }
+ }
+
+***************
+*** 2681,2784 ****
+ PtArg_t args[13];
+
+ n = 0;
+! PtSetArg( &args[ n++ ], Pt_ARG_POINTER, menu, 0 );
+
+ #ifdef FEAT_TOOLBAR
+! if( menu_is_toolbar( parent->name ) )
+ {
+! if( menu_is_separator( menu->name ) )
+ {
+! PtSetArg( &args[ n++ ], Pt_ARG_SEP_FLAGS,
+! Pt_SEP_VERTICAL, Pt_SEP_ORIENTATION );
+! PtSetArg( &args[ n++ ], Pt_ARG_SEP_TYPE, Pt_ETCHED_IN, 0 );
+! PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS,
+! Pt_TRUE, Pt_ANCHOR_TOP_BOTTOM );
+! PtSetArg( &args[ n++ ], Pt_ARG_WIDTH, 2, 0 );
+! menu->id = PtCreateWidget( PtSeparator, gui.vimToolBar, n, args );
+ }
+ else
+ {
+! if( strstr( (const char *) p_toolbar, "text" ) != NULL )
+ {
+! PtSetArg( &args[ n++ ], Pt_ARG_BALLOON_POSITION,
+! Pt_BALLOON_BOTTOM, 0 );
+! PtSetArg( &args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0 );
+! PtSetArg( &args[ n++ ], Pt_ARG_TEXT_FONT, "TextFont08", 0 );
+ }
+! if( ( strstr( (const char *) p_toolbar, "icons" ) != NULL ) &&
+! ( gui_ph_toolbar_images != NULL ) )
+ {
+! PtSetArg( &args[ n++ ], Pt_ARG_LABEL_IMAGE,
+! gui_ph_toolbar_find_icon( menu ), 0 );
+! PtSetArg( &args[ n++ ], Pt_ARG_LABEL_TYPE, Pt_TEXT_IMAGE, 0 );
+! PtSetArg( &args[ n++ ], Pt_ARG_TEXT_IMAGE_SPACING, 0, 0 );
+ }
+! if( strstr( (const char *) p_toolbar, "tooltips" ) != NULL )
+ {
+! PtSetArg( &args[ n++ ], Pt_ARG_LABEL_BALLOON,
+! gui_ph_show_tooltip, 0 );
+! PtSetArg( &args[ n++ ], Pt_ARG_LABEL_FLAGS,
+! Pt_TRUE, Pt_SHOW_BALLOON );
+ }
+! PtSetArg( &args[ n++ ], Pt_ARG_MARGIN_HEIGHT, 1, 0 );
+! PtSetArg( &args[ n++ ], Pt_ARG_MARGIN_WIDTH, 1, 0 );
+! PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_FALSE,
+! Pt_HIGHLIGHTED | Pt_GETS_FOCUS );
+! PtSetArg( &args[ n++ ], Pt_ARG_FILL_COLOR, Pg_TRANSPARENT, 0 );
+! menu->id = PtCreateWidget( PtButton, gui.vimToolBar, n, args );
+
+! PtAddCallback( menu->id, Pt_CB_ACTIVATE, gui_ph_handle_menu, menu );
+ }
+ /* Update toolbar if it's open */
+! if( PtWidgetIsRealized( gui.vimToolBar ) )
+! PtRealizeWidget( menu->id );
+ }
+ else
+ #endif
+! if( menu_is_separator( menu->name ) )
+ {
+! menu->id = PtCreateWidget( PtSeparator, parent->submenu_id, n, args );
+ }
+ else
+ {
+! accel_key = vim_strchr( menu->name, '&' );
+! if( accel_key != NULL )
+ {
+ mnemonic_str[0] = accel_key[1];
+ mnemonic_str[1] = NUL;
+ }
+
+! PtSetArg( &args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0 );
+! if( accel_key != NULL )
+! PtSetArg( &args[ n++ ], Pt_ARG_ACCEL_KEY, mnemonic_str,
+! 0 );
+
+! PtSetArg( &args[ n++ ], Pt_ARG_ACCEL_TEXT, menu->actext, 0 );
+
+! menu->id = PtCreateWidget( PtMenuButton, parent->submenu_id, n, args );
+
+! PtAddCallback( menu->id, Pt_CB_ACTIVATE, gui_ph_handle_menu, menu );
+
+ #ifdef USE_PANEL_GROUP
+! if( gui_ph_is_buffer_item( menu, parent ) == TRUE )
+ {
+! PtAddCallback( menu->id, Pt_CB_DESTROYED,
+! gui_ph_handle_buffer_remove, menu );
+! gui_ph_pg_add_buffer( menu->dname );
+ }
+ #endif
+ }
+
+! gui_ph_position_menu( menu->id, menu->priority );
+ }
+
+ void
+ gui_mch_destroy_menu(vimmenu_T *menu)
+ {
+! if( menu->submenu_id != NULL )
+! PtDestroyWidget( menu->submenu_id );
+! if( menu->id != NULL )
+! PtDestroyWidget( menu->id );
+
+ menu->submenu_id = NULL;
+ menu->id = NULL;
+--- 2681,2784 ----
+ PtArg_t args[13];
+
+ n = 0;
+! PtSetArg(&args[ n++ ], Pt_ARG_POINTER, menu, 0);
+
+ #ifdef FEAT_TOOLBAR
+! if (menu_is_toolbar(parent->name))
+ {
+! if (menu_is_separator(menu->name))
+ {
+! PtSetArg(&args[ n++ ], Pt_ARG_SEP_FLAGS,
+! Pt_SEP_VERTICAL, Pt_SEP_ORIENTATION);
+! PtSetArg(&args[ n++ ], Pt_ARG_SEP_TYPE, Pt_ETCHED_IN, 0);
+! PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS,
+! Pt_TRUE, Pt_ANCHOR_TOP_BOTTOM);
+! PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, 2, 0);
+! menu->id = PtCreateWidget(PtSeparator, gui.vimToolBar, n, args);
+ }
+ else
+ {
+! if (strstr((const char *) p_toolbar, "text") != NULL)
+ {
+! PtSetArg(&args[ n++ ], Pt_ARG_BALLOON_POSITION,
+! Pt_BALLOON_BOTTOM, 0);
+! PtSetArg(&args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0);
+! PtSetArg(&args[ n++ ], Pt_ARG_TEXT_FONT, "TextFont08", 0);
+ }
+! if ((strstr((const char *) p_toolbar, "icons") != NULL) &&
+! (gui_ph_toolbar_images != NULL))
+ {
+! PtSetArg(&args[ n++ ], Pt_ARG_LABEL_IMAGE,
+! gui_ph_toolbar_find_icon(menu), 0);
+! PtSetArg(&args[ n++ ], Pt_ARG_LABEL_TYPE, Pt_TEXT_IMAGE, 0);
+! PtSetArg(&args[ n++ ], Pt_ARG_TEXT_IMAGE_SPACING, 0, 0);
+ }
+! if (strstr((const char *) p_toolbar, "tooltips") != NULL)
+ {
+! PtSetArg(&args[ n++ ], Pt_ARG_LABEL_BALLOON,
+! gui_ph_show_tooltip, 0);
+! PtSetArg(&args[ n++ ], Pt_ARG_LABEL_FLAGS,
+! Pt_TRUE, Pt_SHOW_BALLOON);
+ }
+! PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_HEIGHT, 1, 0);
+! PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_WIDTH, 1, 0);
+! PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_FALSE,
+! Pt_HIGHLIGHTED | Pt_GETS_FOCUS);
+! PtSetArg(&args[ n++ ], Pt_ARG_FILL_COLOR, Pg_TRANSPARENT, 0);
+! menu->id = PtCreateWidget(PtButton, gui.vimToolBar, n, args);
+
+! PtAddCallback(menu->id, Pt_CB_ACTIVATE, gui_ph_handle_menu, menu);
+ }
+ /* Update toolbar if it's open */
+! if (PtWidgetIsRealized(gui.vimToolBar))
+! PtRealizeWidget(menu->id);
+ }
+ else
+ #endif
+! if (menu_is_separator(menu->name))
+ {
+! menu->id = PtCreateWidget(PtSeparator, parent->submenu_id, n, args);
+ }
+ else
+ {
+! accel_key = vim_strchr(menu->name, '&');
+! if (accel_key != NULL)
+ {
+ mnemonic_str[0] = accel_key[1];
+ mnemonic_str[1] = NUL;
+ }
+
+! PtSetArg(&args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0);
+! if (accel_key != NULL)
+! PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_KEY, mnemonic_str,
+! 0);
+
+! PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_TEXT, menu->actext, 0);
+
+! menu->id = PtCreateWidget(PtMenuButton, parent->submenu_id, n, args);
+
+! PtAddCallback(menu->id, Pt_CB_ACTIVATE, gui_ph_handle_menu, menu);
+
+ #ifdef USE_PANEL_GROUP
+! if (gui_ph_is_buffer_item(menu, parent) == TRUE)
+ {
+! PtAddCallback(menu->id, Pt_CB_DESTROYED,
+! gui_ph_handle_buffer_remove, menu);
+! gui_ph_pg_add_buffer(menu->dname);
+ }
+ #endif
+ }
+
+! gui_ph_position_menu(menu->id, menu->priority);
+ }
+
+ void
+ gui_mch_destroy_menu(vimmenu_T *menu)
+ {
+! if (menu->submenu_id != NULL)
+! PtDestroyWidget(menu->submenu_id);
+! if (menu->id != NULL)
+! PtDestroyWidget(menu->id);
+
+ menu->submenu_id = NULL;
+ menu->id = NULL;
+***************
+*** 2789,2800 ****
+ {
+ long flags, mask, fields;
+
+! if( menu->id == NULL )
+ return;
+
+! flags = PtWidgetFlags( menu->id );
+! if( PtWidgetIsClass( menu->id, PtMenuButton ) &&
+! PtWidgetIsClass( PtWidgetParent( menu->id ), PtMenu ) )
+ {
+ fields = Pt_FALSE;
+ mask = Pt_SELECTABLE | Pt_HIGHLIGHTED;
+--- 2789,2800 ----
+ {
+ long flags, mask, fields;
+
+! if (menu->id == NULL)
+ return;
+
+! flags = PtWidgetFlags(menu->id);
+! if (PtWidgetIsClass(menu->id, PtMenuButton) &&
+! PtWidgetIsClass(PtWidgetParent(menu->id), PtMenu))
+ {
+ fields = Pt_FALSE;
+ mask = Pt_SELECTABLE | Pt_HIGHLIGHTED;
+***************
+*** 2805,2815 ****
+ mask = Pt_BLOCKED | Pt_GHOST;
+ }
+
+! if( ! grey )
+ fields = ~fields;
+
+! PtSetResource( menu->id, Pt_ARG_FLAGS, fields,
+! mask );
+ }
+
+ void
+--- 2805,2815 ----
+ mask = Pt_BLOCKED | Pt_GHOST;
+ }
+
+! if (! grey)
+ fields = ~fields;
+
+! PtSetResource(menu->id, Pt_ARG_FLAGS, fields,
+! mask);
+ }
+
+ void
+***************
+*** 2830,2837 ****
+ void
+ gui_mch_show_popupmenu(vimmenu_T *menu)
+ {
+! PtSetResource( menu->submenu_id, Pt_ARG_POS, &abs_mouse, 0 );
+! PtRealizeWidget( menu->submenu_id );
+ }
+
+ void
+--- 2830,2837 ----
+ void
+ gui_mch_show_popupmenu(vimmenu_T *menu)
+ {
+! PtSetResource(menu->submenu_id, Pt_ARG_POS, &abs_mouse, 0);
+! PtRealizeWidget(menu->submenu_id);
+ }
+
+ void
+***************
+*** 2842,2855 ****
+
+ #endif
+
+! #if defined( FEAT_TOOLBAR ) || defined( PROTO )
+ void
+ gui_mch_show_toolbar(int showit)
+ {
+! if( showit )
+! PtRealizeWidget( gui.vimToolBar );
+ else
+! PtUnrealizeWidget( gui.vimToolBar );
+ }
+ #endif
+
+--- 2842,2855 ----
+
+ #endif
+
+! #if defined(FEAT_TOOLBAR) || defined(PROTO)
+ void
+ gui_mch_show_toolbar(int showit)
+ {
+! if (showit)
+! PtRealizeWidget(gui.vimToolBar);
+ else
+! PtUnrealizeWidget(gui.vimToolBar);
+ }
+ #endif
+
+***************
+*** 2870,2903 ****
+ FontQueryInfo info;
+ int_u style;
+
+! font_tag = alloc( MAX_FONT_TAG );
+! if( font_tag != NULL )
+ {
+! if( PfGenerateFontName( font_name, font_flags, font_size,
+! font_tag ) != NULL )
+ {
+ /* Enforce some limits on the font used */
+ style = PHFONT_INFO_FIXED;
+
+! if( enforce & PF_STYLE_BOLD )
+ style |= PHFONT_INFO_BOLD;
+! if( enforce & PF_STYLE_ANTIALIAS )
+ style |= PHFONT_INFO_ALIAS;
+! if( enforce & PF_STYLE_ITALIC )
+ style |= PHFONT_INFO_ITALIC;
+
+! PfQueryFontInfo( font_tag, &info );
+
+! if( info.size == 0 )
+ font_size = 0;
+
+ /* Make sure font size matches, and that the font style
+ * at least has the bits we're checking for */
+! if( font_size == info.size &&
+! style == (info.style & style) )
+ return (GuiFont)font_tag;
+ }
+! vim_free( font_tag );
+ }
+ return NULL;
+ }
+--- 2870,2903 ----
+ FontQueryInfo info;
+ int_u style;
+
+! font_tag = alloc(MAX_FONT_TAG);
+! if (font_tag != NULL)
+ {
+! if (PfGenerateFontName(font_name, font_flags, font_size,
+! font_tag) != NULL)
+ {
+ /* Enforce some limits on the font used */
+ style = PHFONT_INFO_FIXED;
+
+! if (enforce & PF_STYLE_BOLD)
+ style |= PHFONT_INFO_BOLD;
+! if (enforce & PF_STYLE_ANTIALIAS)
+ style |= PHFONT_INFO_ALIAS;
+! if (enforce & PF_STYLE_ITALIC)
+ style |= PHFONT_INFO_ITALIC;
+
+! PfQueryFontInfo(font_tag, &info);
+
+! if (info.size == 0)
+ font_size = 0;
+
+ /* Make sure font size matches, and that the font style
+ * at least has the bits we're checking for */
+! if (font_size == info.size &&
+! style == (info.style & style))
+ return (GuiFont)font_tag;
+ }
+! vim_free(font_tag);
+ }
+ return NULL;
+ }
+***************
+*** 2919,2936 ****
+ char_u *vim_font,
+ char_u **font_name,
+ int_u *font_flags,
+! int_u *font_size )
+ {
+ char_u *mark;
+ int_u name_len, size;
+
+! mark = vim_strchr( vim_font, ':' );
+! if( mark == NULL )
+! name_len = STRLEN( vim_font );
+ else
+! name_len = (int_u) ( mark - vim_font );
+
+! *font_name = vim_strnsave( vim_font, name_len );
+ if (*font_name != NULL)
+ {
+ if (mark != NULL)
+--- 2919,2936 ----
+ char_u *vim_font,
+ char_u **font_name,
+ int_u *font_flags,
+! int_u *font_size)
+ {
+ char_u *mark;
+ int_u name_len, size;
+
+! mark = vim_strchr(vim_font, ':');
+! if (mark == NULL)
+! name_len = STRLEN(vim_font);
+ else
+! name_len = (int_u) (mark - vim_font);
+
+! *font_name = vim_strnsave(vim_font, name_len);
+ if (*font_name != NULL)
+ {
+ if (mark != NULL)
+***************
+*** 2944,2950 ****
+ case 'i': *font_flags |= PF_STYLE_ITALIC; break;
+
+ case 's':
+! size = getdigits( &mark );
+ /* Restrict the size to some vague limits */
+ if (size < 1 || size > 100)
+ size = 8;
+--- 2944,2950 ----
+ case 'i': *font_flags |= PF_STYLE_ITALIC; break;
+
+ case 's':
+! size = getdigits(&mark);
+ /* Restrict the size to some vague limits */
+ if (size < 1 || size > 100)
+ size = 8;
+***************
+*** 2979,3031 ****
+ vim_font_name = "PC Terminal";
+ }
+
+! if (STRCMP( vim_font_name, "*" ) == 0)
+ {
+! font_tag = PtFontSelection( gui.vimWindow, NULL, NULL,
+! "pcterm12", -1, PHFONT_FIXED, NULL );
+
+ if (font_tag == NULL)
+ return FAIL;
+
+! gui_mch_free_font( gui.norm_font );
+ gui.norm_font = font_tag;
+
+! PfQueryFontInfo( font_tag, &info );
+! font_name = vim_strsave( info.font );
+ }
+ else
+ {
+! if (gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags,
+! &font_size ) == FALSE)
+ return FAIL;
+
+! font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 );
+ if (font_tag == NULL)
+ {
+! vim_free( font_name );
+ return FAIL;
+ }
+
+! gui_mch_free_font( gui.norm_font );
+ gui.norm_font = font_tag;
+ }
+
+! gui_mch_free_font( gui.bold_font );
+! gui.bold_font = gui_ph_get_font( font_name, font_flags | PF_STYLE_BOLD,
+! font_size, PF_STYLE_BOLD );
+!
+! gui_mch_free_font( gui.ital_font );
+! gui.ital_font = gui_ph_get_font( font_name, font_flags | PF_STYLE_ITALIC,
+! font_size, PF_STYLE_ITALIC );
+
+ /* This extent was brought to you by the letter 'g' */
+! PfExtentText( &extent, NULL, font_tag, "g", 1 );
+
+ gui.char_width = extent.lr.x - extent.ul.x + 1;
+ gui.char_height = (- extent.ul.y) + extent.lr.y + 1;
+ gui.char_ascent = - extent.ul.y;
+
+! vim_free( font_name );
+ return OK;
+ }
+
+--- 2979,3031 ----
+ vim_font_name = "PC Terminal";
+ }
+
+! if (STRCMP(vim_font_name, "*") == 0)
+ {
+! font_tag = PtFontSelection(gui.vimWindow, NULL, NULL,
+! "pcterm12", -1, PHFONT_FIXED, NULL);
+
+ if (font_tag == NULL)
+ return FAIL;
+
+! gui_mch_free_font(gui.norm_font);
+ gui.norm_font = font_tag;
+
+! PfQueryFontInfo(font_tag, &info);
+! font_name = vim_strsave(info.font);
+ }
+ else
+ {
+! if (gui_ph_parse_font_name(vim_font_name, &font_name, &font_flags,
+! &font_size) == FALSE)
+ return FAIL;
+
+! font_tag = gui_ph_get_font(font_name, font_flags, font_size, 0);
+ if (font_tag == NULL)
+ {
+! vim_free(font_name);
+ return FAIL;
+ }
+
+! gui_mch_free_font(gui.norm_font);
+ gui.norm_font = font_tag;
+ }
+
+! gui_mch_free_font(gui.bold_font);
+! gui.bold_font = gui_ph_get_font(font_name, font_flags | PF_STYLE_BOLD,
+! font_size, PF_STYLE_BOLD);
+!
+! gui_mch_free_font(gui.ital_font);
+! gui.ital_font = gui_ph_get_font(font_name, font_flags | PF_STYLE_ITALIC,
+! font_size, PF_STYLE_ITALIC);
+
+ /* This extent was brought to you by the letter 'g' */
+! PfExtentText(&extent, NULL, font_tag, "g", 1);
+
+ gui.char_width = extent.lr.x - extent.ul.x + 1;
+ gui.char_height = (- extent.ul.y) + extent.lr.y + 1;
+ gui.char_ascent = - extent.ul.y;
+
+! vim_free(font_name);
+ return OK;
+ }
+
+***************
+*** 3037,3043 ****
+ {
+ FontQueryInfo info;
+
+! PfQueryFontInfo( gui.norm_font, &info );
+
+ gui.char_height = - info.ascender + info.descender + p_linespace;
+ gui.char_ascent = - info.ascender + p_linespace / 2;
+--- 3037,3043 ----
+ {
+ FontQueryInfo info;
+
+! PfQueryFontInfo(gui.norm_font, &info);
+
+ gui.char_height = - info.ascender + info.descender + p_linespace;
+ gui.char_ascent = - info.ascender + p_linespace / 2;
+***************
+*** 3053,3070 ****
+ int_u font_size = 12;
+ int_u font_flags = 0;
+
+! if (gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags,
+! &font_size ) != FALSE)
+ {
+! font_tag = gui_ph_get_font( font_name, font_flags, font_size, -1 );
+! vim_free( font_name );
+
+ if (font_tag != NULL)
+ return (GuiFont)font_tag;
+ }
+
+ if (report_error)
+! EMSG2(e_font, vim_font_name );
+
+ return FAIL;
+ }
+--- 3053,3070 ----
+ int_u font_size = 12;
+ int_u font_flags = 0;
+
+! if (gui_ph_parse_font_name(vim_font_name, &font_name, &font_flags,
+! &font_size) != FALSE)
+ {
+! font_tag = gui_ph_get_font(font_name, font_flags, font_size, -1);
+! vim_free(font_name);
+
+ if (font_tag != NULL)
+ return (GuiFont)font_tag;
+ }
+
+ if (report_error)
+! EMSG2(e_font, vim_font_name);
+
+ return FAIL;
+ }
+***************
+*** 3088,3099 ****
+ void
+ gui_mch_set_font(GuiFont font)
+ {
+! PgSetFont( font );
+ }
+
+ void
+ gui_mch_free_font(GuiFont font)
+ {
+! vim_free( font );
+ }
+
+--- 3088,3099 ----
+ void
+ gui_mch_set_font(GuiFont font)
+ {
+! PgSetFont(font);
+ }
+
+ void
+ gui_mch_free_font(GuiFont font)
+ {
+! vim_free(font);
+ }
+
+*** ../vim-7.3.309/src/version.c 2011-09-14 15:41:54.000000000 +0200
+--- src/version.c 2011-09-14 16:01:50.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 310,
+ /**/
+
+--
+An operatingsystem is just a name you give to the rest of bloating
+idiosyncratic machine-based-features you left out of your editor.
+ (author unknown)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.311 b/source/ap/vim/patches/7.3.311
new file mode 100644
index 000000000..13aec74a9
--- /dev/null
+++ b/source/ap/vim/patches/7.3.311
@@ -0,0 +1,351 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.311
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.311 (replaces 7.3.289)
+Problem: Complete function isn't called when the leader changed.
+Solution: Allow the complete function to return a dictionary with a flag
+ that indicates ins_compl_restart() is to be called when the leader
+ changes. (Taro Muraoka)
+Files: runtime/insert.txt, src/edit.c, src/eval.c, src/proto/eval.pro
+
+
+*** ../vim-7.3.310/src/edit.c 2011-09-05 20:13:37.000000000 +0200
+--- src/edit.c 2011-09-14 16:43:14.000000000 +0200
+***************
+*** 135,140 ****
+--- 135,142 ----
+ static int compl_cont_mode = 0;
+ static expand_T compl_xp;
+
++ static int compl_opt_refresh_always = FALSE;
++
+ static void ins_ctrl_x __ARGS((void));
+ static int has_compl_option __ARGS((int dict_opt));
+ static int ins_compl_accept_char __ARGS((int c));
+***************
+*** 153,161 ****
+ static void ins_compl_free __ARGS((void));
+ static void ins_compl_clear __ARGS((void));
+ static int ins_compl_bs __ARGS((void));
+ static void ins_compl_new_leader __ARGS((void));
+ static void ins_compl_addleader __ARGS((int c));
+! static int ins_compl_len __ARGS((void));
+ static void ins_compl_restart __ARGS((void));
+ static void ins_compl_set_original_text __ARGS((char_u *str));
+ static void ins_compl_addfrommatch __ARGS((void));
+--- 155,164 ----
+ static void ins_compl_free __ARGS((void));
+ static void ins_compl_clear __ARGS((void));
+ static int ins_compl_bs __ARGS((void));
++ static int ins_compl_need_restart __ARGS((void));
+ static void ins_compl_new_leader __ARGS((void));
+ static void ins_compl_addleader __ARGS((int c));
+! static int ins_compl_len __ARGS((void));
+ static void ins_compl_restart __ARGS((void));
+ static void ins_compl_set_original_text __ARGS((char_u *str));
+ static void ins_compl_addfrommatch __ARGS((void));
+***************
+*** 163,168 ****
+--- 166,172 ----
+ static buf_T *ins_compl_next_buf __ARGS((buf_T *buf, int flag));
+ #if defined(FEAT_COMPL_FUNC) || defined(FEAT_EVAL)
+ static void ins_compl_add_list __ARGS((list_T *list));
++ static void ins_compl_add_dict __ARGS((dict_T *dict));
+ #endif
+ static int ins_compl_get_exp __ARGS((pos_T *ini));
+ static void ins_compl_delete __ARGS((void));
+***************
+*** 3341,3347 ****
+ /* Deleted more than what was used to find matches or didn't finish
+ * finding all matches: need to look for matches all over again. */
+ if (curwin->w_cursor.col <= compl_col + compl_length
+! || compl_was_interrupted)
+ ins_compl_restart();
+
+ vim_free(compl_leader);
+--- 3345,3351 ----
+ /* Deleted more than what was used to find matches or didn't finish
+ * finding all matches: need to look for matches all over again. */
+ if (curwin->w_cursor.col <= compl_col + compl_length
+! || ins_compl_need_restart())
+ ins_compl_restart();
+
+ vim_free(compl_leader);
+***************
+*** 3355,3360 ****
+--- 3359,3378 ----
+ }
+
+ /*
++ * Return TRUE when we need to find matches again, ins_compl_restart() is to
++ * be called.
++ */
++ static int
++ ins_compl_need_restart()
++ {
++ /* Return TRUE if we didn't complete finding matches or when the
++ * 'completefunc' returned "always" in the "refresh" dictionary item. */
++ return compl_was_interrupted
++ || ((ctrl_x_mode == CTRL_X_FUNCTION || ctrl_x_mode == CTRL_X_OMNI)
++ && compl_opt_refresh_always);
++ }
++
++ /*
+ * Called after changing "compl_leader".
+ * Show the popup menu with a different set of matches.
+ * May also search for matches again if the previous search was interrupted.
+***************
+*** 3443,3449 ****
+ ins_char(c);
+
+ /* If we didn't complete finding matches we must search again. */
+! if (compl_was_interrupted)
+ ins_compl_restart();
+
+ vim_free(compl_leader);
+--- 3461,3467 ----
+ ins_char(c);
+
+ /* If we didn't complete finding matches we must search again. */
+! if (ins_compl_need_restart())
+ ins_compl_restart();
+
+ vim_free(compl_leader);
+***************
+*** 3871,3882 ****
+ int type; /* CTRL_X_OMNI or CTRL_X_FUNCTION */
+ char_u *base;
+ {
+! list_T *matchlist;
+ char_u *args[2];
+ char_u *funcname;
+ pos_T pos;
+ win_T *curwin_save;
+ buf_T *curbuf_save;
+
+ funcname = (type == CTRL_X_FUNCTION) ? curbuf->b_p_cfu : curbuf->b_p_ofu;
+ if (*funcname == NUL)
+--- 3889,3902 ----
+ int type; /* CTRL_X_OMNI or CTRL_X_FUNCTION */
+ char_u *base;
+ {
+! list_T *matchlist = NULL;
+! dict_T *matchdict = NULL;
+ char_u *args[2];
+ char_u *funcname;
+ pos_T pos;
+ win_T *curwin_save;
+ buf_T *curbuf_save;
++ typval_T rettv;
+
+ funcname = (type == CTRL_X_FUNCTION) ? curbuf->b_p_cfu : curbuf->b_p_ofu;
+ if (*funcname == NUL)
+***************
+*** 3889,3895 ****
+ pos = curwin->w_cursor;
+ curwin_save = curwin;
+ curbuf_save = curbuf;
+! matchlist = call_func_retlist(funcname, 2, args, FALSE);
+ if (curwin_save != curwin || curbuf_save != curbuf)
+ {
+ EMSG(_(e_complwin));
+--- 3909,3933 ----
+ pos = curwin->w_cursor;
+ curwin_save = curwin;
+ curbuf_save = curbuf;
+!
+! /* Call a function, which returns a list or dict. */
+! if (call_vim_function(funcname, 2, args, FALSE, &rettv) == OK)
+! {
+! switch (rettv.v_type)
+! {
+! case VAR_LIST:
+! matchlist = rettv.vval.v_list;
+! break;
+! case VAR_DICT:
+! matchdict = rettv.vval.v_dict;
+! break;
+! default:
+! /* TODO: Give error message? */
+! clear_tv(&rettv);
+! break;
+! }
+! }
+!
+ if (curwin_save != curwin || curbuf_save != curbuf)
+ {
+ EMSG(_(e_complwin));
+***************
+*** 3902,3911 ****
+--- 3940,3954 ----
+ EMSG(_(e_compldel));
+ goto theend;
+ }
++
+ if (matchlist != NULL)
+ ins_compl_add_list(matchlist);
++ else if (matchdict != NULL)
++ ins_compl_add_dict(matchdict);
+
+ theend:
++ if (matchdict != NULL)
++ dict_unref(matchdict);
+ if (matchlist != NULL)
+ list_unref(matchlist);
+ }
+***************
+*** 3934,3939 ****
+--- 3977,4009 ----
+ }
+
+ /*
++ * Add completions from a dict.
++ */
++ static void
++ ins_compl_add_dict(dict)
++ dict_T *dict;
++ {
++ dictitem_T *refresh;
++ dictitem_T *words;
++
++ /* Check for optional "refresh" item. */
++ compl_opt_refresh_always = FALSE;
++ refresh = dict_find(dict, (char_u *)"refresh", 7);
++ if (refresh != NULL && refresh->di_tv.v_type == VAR_STRING)
++ {
++ char_u *v = refresh->di_tv.vval.v_string;
++
++ if (v != NULL && STRCMP(v, (char_u *)"always") == 0)
++ compl_opt_refresh_always = TRUE;
++ }
++
++ /* Add completions from a "words" list. */
++ words = dict_find(dict, (char_u *)"words", 5);
++ if (words != NULL && words->di_tv.v_type == VAR_LIST)
++ ins_compl_add_list(words->di_tv.vval.v_list);
++ }
++
++ /*
+ * Add a match to the list of matches from a typeval_T.
+ * If the given string is already in the list of completions, then return
+ * NOTDONE, otherwise add it to the list and return OK. If there is an error,
+***************
+*** 5088,5093 ****
+--- 5158,5169 ----
+ return FAIL;
+ }
+
++ /*
++ * Reset extended parameters of completion, when start new
++ * completion.
++ */
++ compl_opt_refresh_always = FALSE;
++
+ if (col < 0)
+ col = curs_col;
+ compl_col = col;
+*** ../vim-7.3.310/src/eval.c 2011-09-14 14:33:47.000000000 +0200
+--- src/eval.c 2011-09-14 16:16:47.000000000 +0200
+***************
+*** 380,388 ****
+
+ static void prepare_vimvar __ARGS((int idx, typval_T *save_tv));
+ static void restore_vimvar __ARGS((int idx, typval_T *save_tv));
+- #if defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL)
+- static int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, typval_T *rettv));
+- #endif
+ static int ex_let_vars __ARGS((char_u *arg, typval_T *tv, int copy, int semicolon, int var_count, char_u *nextchars));
+ static char_u *skip_var_list __ARGS((char_u *arg, int *var_count, int *semicolon));
+ static char_u *skip_var_one __ARGS((char_u *arg));
+--- 380,385 ----
+***************
+*** 451,457 ****
+ static void set_ref_in_list __ARGS((list_T *l, int copyID));
+ static void set_ref_in_item __ARGS((typval_T *tv, int copyID));
+ static int rettv_dict_alloc __ARGS((typval_T *rettv));
+- static void dict_unref __ARGS((dict_T *d));
+ static void dict_free __ARGS((dict_T *d, int recurse));
+ static dictitem_T *dictitem_copy __ARGS((dictitem_T *org));
+ static void dictitem_remove __ARGS((dict_T *dict, dictitem_T *item));
+--- 448,453 ----
+***************
+*** 1563,1569 ****
+ * arguments are currently supported.
+ * Returns OK or FAIL.
+ */
+! static int
+ call_vim_function(func, argc, argv, safe, rettv)
+ char_u *func;
+ int argc;
+--- 1559,1565 ----
+ * arguments are currently supported.
+ * Returns OK or FAIL.
+ */
+! int
+ call_vim_function(func, argc, argv, safe, rettv)
+ char_u *func;
+ int argc;
+***************
+*** 6903,6909 ****
+ * Unreference a Dictionary: decrement the reference count and free it when it
+ * becomes zero.
+ */
+! static void
+ dict_unref(d)
+ dict_T *d;
+ {
+--- 6899,6905 ----
+ * Unreference a Dictionary: decrement the reference count and free it when it
+ * becomes zero.
+ */
+! void
+ dict_unref(d)
+ dict_T *d;
+ {
+*** ../vim-7.3.310/src/proto/eval.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/eval.pro 2011-09-14 16:16:47.000000000 +0200
+***************
+*** 23,28 ****
+--- 23,29 ----
+ list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr));
+ int get_spellword __ARGS((list_T *list, char_u **pp));
+ typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd));
++ int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, typval_T *rettv));
+ void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe));
+ long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe));
+ void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe));
+***************
+*** 52,57 ****
+--- 53,59 ----
+ int list_append_string __ARGS((list_T *l, char_u *str, int len));
+ int garbage_collect __ARGS((void));
+ dict_T *dict_alloc __ARGS((void));
++ void dict_unref __ARGS((dict_T *d));
+ dictitem_T *dictitem_alloc __ARGS((char_u *key));
+ void dictitem_free __ARGS((dictitem_T *item));
+ int dict_add __ARGS((dict_T *d, dictitem_T *item));
+*** ../vim-7.3.310/src/version.c 2011-09-14 16:04:52.000000000 +0200
+--- src/version.c 2011-09-14 16:25:08.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 311,
+ /**/
+
+--
+Contrary to popular belief, it's often your clothing that gets promoted, not
+you.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.312 b/source/ap/vim/patches/7.3.312
new file mode 100644
index 000000000..d2480e093
--- /dev/null
+++ b/source/ap/vim/patches/7.3.312
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.312
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.312 (after 7.3.306)
+Problem: Can't compile with tiny features.
+Solution: Add #ifdef around win_valid().
+Files: src/buffer.c
+
+
+*** ../vim-7.3.311/src/buffer.c 2011-09-14 14:43:21.000000000 +0200
+--- src/buffer.c 2011-09-14 17:46:24.000000000 +0200
+***************
+*** 416,422 ****
+ #endif
+
+ buf_freeall(buf, (del_buf ? BFA_DEL : 0) + (wipe_buf ? BFA_WIPE : 0));
+! if (win_valid(win) && win->w_buffer == buf)
+ win->w_buffer = NULL; /* make sure we don't use the buffer now */
+
+ #ifdef FEAT_AUTOCMD
+--- 416,426 ----
+ #endif
+
+ buf_freeall(buf, (del_buf ? BFA_DEL : 0) + (wipe_buf ? BFA_WIPE : 0));
+! if (
+! #ifdef FEAT_WINDOWS
+! win_valid(win) &&
+! #endif
+! win->w_buffer == buf)
+ win->w_buffer = NULL; /* make sure we don't use the buffer now */
+
+ #ifdef FEAT_AUTOCMD
+*** ../vim-7.3.311/src/version.c 2011-09-14 16:52:02.000000000 +0200
+--- src/version.c 2011-09-14 17:27:24.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 312,
+ /**/
+
+--
+You have heard the saying that if you put a thousand monkeys in a room with a
+thousand typewriters and waited long enough, eventually you would have a room
+full of dead monkeys.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.313 b/source/ap/vim/patches/7.3.313
new file mode 100644
index 000000000..ca818b8b8
--- /dev/null
+++ b/source/ap/vim/patches/7.3.313
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.313
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.313 (after 7.3.307)
+Problem: One more warning when compiling with dynamic Python 3.
+Solution: Change PySliceObject to PyObject.
+Files: src/if_python3.c
+
+
+*** ../vim-7.3.312/src/if_python3.c 2011-09-14 15:41:54.000000000 +0200
+--- src/if_python3.c 2011-09-14 18:54:49.000000000 +0200
+***************
+*** 194,200 ****
+ static int (*py3_PySys_SetObject)(char *, PyObject *);
+ static PyObject* (*py3_PyList_Append)(PyObject *, PyObject *);
+ static Py_ssize_t (*py3_PyList_Size)(PyObject *);
+! static int (*py3_PySlice_GetIndicesEx)(PySliceObject *r, Py_ssize_t length,
+ Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength);
+ static PyObject* (*py3_PyErr_NoMemory)(void);
+ static void (*py3_Py_Finalize)(void);
+--- 194,200 ----
+ static int (*py3_PySys_SetObject)(char *, PyObject *);
+ static PyObject* (*py3_PyList_Append)(PyObject *, PyObject *);
+ static Py_ssize_t (*py3_PyList_Size)(PyObject *);
+! static int (*py3_PySlice_GetIndicesEx)(PyObject *r, Py_ssize_t length,
+ Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength);
+ static PyObject* (*py3_PyErr_NoMemory)(void);
+ static void (*py3_Py_Finalize)(void);
+*** ../vim-7.3.312/src/version.c 2011-09-14 17:50:05.000000000 +0200
+--- src/version.c 2011-09-14 18:56:03.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 313,
+ /**/
+
+--
+All good vision statements are created by groups of people with bloated
+bladders who would rather be doing anything else.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.314 b/source/ap/vim/patches/7.3.314
new file mode 100644
index 000000000..76415d65b
--- /dev/null
+++ b/source/ap/vim/patches/7.3.314
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.314
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.314 (after 7.3.304)
+Problem: Missing parenthesis.
+Solution: Add it. (Benjamin R. Haskell)
+Files: src/Make_mvc.mak
+
+
+*** ../vim-7.3.313/src/Make_mvc.mak 2011-09-14 10:49:44.000000000 +0200
+--- src/Make_mvc.mak 2011-09-14 18:56:24.000000000 +0200
+***************
+*** 785,791 ****
+ PERL_INC = /I $(PERL_INCDIR)
+ PERL_OBJ = $(OUTDIR)\if_perl.obj $(OUTDIR)\if_perlsfio.obj
+ XSUBPP = $(PERL)\lib\ExtUtils\xsubpp
+! !if exist($(XSUBPP)
+ XSUBPP = $(PERL_EXE) $(XSUBPP)
+ !else
+ XSUBPP = xsubpp
+--- 785,791 ----
+ PERL_INC = /I $(PERL_INCDIR)
+ PERL_OBJ = $(OUTDIR)\if_perl.obj $(OUTDIR)\if_perlsfio.obj
+ XSUBPP = $(PERL)\lib\ExtUtils\xsubpp
+! !if exist($(XSUBPP))
+ XSUBPP = $(PERL_EXE) $(XSUBPP)
+ !else
+ XSUBPP = xsubpp
+*** ../vim-7.3.313/src/version.c 2011-09-14 18:59:35.000000000 +0200
+--- src/version.c 2011-09-14 19:01:12.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 314,
+ /**/
+
+--
+Often you're less important than your furniture. If you think about it, you
+can get fired but your furniture stays behind, gainfully employed at the
+company that didn't need _you_ anymore.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.315 b/source/ap/vim/patches/7.3.315
new file mode 100644
index 000000000..2240f7b74
--- /dev/null
+++ b/source/ap/vim/patches/7.3.315
@@ -0,0 +1,475 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.315
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.315
+Problem: Opening a window before forking causes problems for GTK.
+Solution: Fork first, create the window in the child and report back to the
+ parent process whether it worked. If successful the parent exits,
+ if unsuccessful the child exits and the parent continues in the
+ terminal. (Tim Starling)
+Files: src/gui.c
+
+
+*** ../vim-7.3.314/src/gui.c 2011-08-10 17:44:41.000000000 +0200
+--- src/gui.c 2011-09-14 17:34:30.000000000 +0200
+***************
+*** 37,42 ****
+--- 37,60 ----
+ static void gui_set_bg_color __ARGS((char_u *name));
+ static win_T *xy2win __ARGS((int x, int y));
+
++ #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X) \
++ && !defined(__APPLE__)
++ # define MAY_FORK
++ static void gui_do_fork __ARGS((void));
++
++ static int gui_read_child_pipe __ARGS((int fd));
++
++ /* Return values for gui_read_child_pipe */
++ enum {
++ GUI_CHILD_IO_ERROR,
++ GUI_CHILD_OK,
++ GUI_CHILD_FAILED
++ };
++
++ #endif /* MAY_FORK */
++
++ static void gui_attempt_start __ARGS((void));
++
+ static int can_update_cursor = TRUE; /* can display the cursor */
+
+ /*
+***************
+*** 59,105 ****
+ gui_start()
+ {
+ char_u *old_term;
+- #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X) \
+- && !defined(__APPLE__)
+- # define MAY_FORK
+- int dofork = TRUE;
+- #endif
+ static int recursive = 0;
+
+ old_term = vim_strsave(T_NAME);
+
+- /*
+- * Set_termname() will call gui_init() to start the GUI.
+- * Set the "starting" flag, to indicate that the GUI will start.
+- *
+- * We don't want to open the GUI shell until after we've read .gvimrc,
+- * otherwise we don't know what font we will use, and hence we don't know
+- * what size the shell should be. So if there are errors in the .gvimrc
+- * file, they will have to go to the terminal: Set full_screen to FALSE.
+- * full_screen will be set to TRUE again by a successful termcapinit().
+- */
+ settmode(TMODE_COOK); /* stop RAW mode */
+ if (full_screen)
+ cursor_on(); /* needed for ":gui" in .vimrc */
+- gui.starting = TRUE;
+ full_screen = FALSE;
+
+! #ifdef FEAT_GUI_GTK
+! gui.event_time = GDK_CURRENT_TIME;
+! #endif
+
+ #ifdef MAY_FORK
+! if (!gui.dofork || vim_strchr(p_go, GO_FORG) || recursive)
+! dofork = FALSE;
+ #endif
+! ++recursive;
+!
+! termcapinit((char_u *)"builtin_gui");
+! gui.starting = recursive - 1;
+
+ if (!gui.in_use) /* failed to start GUI */
+ {
+! termcapinit(old_term); /* back to old term settings */
+ settmode(TMODE_RAW); /* restart RAW mode */
+ #ifdef FEAT_TITLE
+ set_title_defaults(); /* set 'title' and 'icon' again */
+--- 77,123 ----
+ gui_start()
+ {
+ char_u *old_term;
+ static int recursive = 0;
+
+ old_term = vim_strsave(T_NAME);
+
+ settmode(TMODE_COOK); /* stop RAW mode */
+ if (full_screen)
+ cursor_on(); /* needed for ":gui" in .vimrc */
+ full_screen = FALSE;
+
+! ++recursive;
+
+ #ifdef MAY_FORK
+! /*
+! * Quit the current process and continue in the child.
+! * Makes "gvim file" disconnect from the shell it was started in.
+! * Don't do this when Vim was started with "-f" or the 'f' flag is present
+! * in 'guioptions'.
+! */
+! if (gui.dofork && !vim_strchr(p_go, GO_FORG) && recursive <= 1)
+! {
+! gui_do_fork();
+! }
+! else
+ #endif
+! {
+! gui_attempt_start();
+! }
+
+ if (!gui.in_use) /* failed to start GUI */
+ {
+! /* Back to old term settings
+! *
+! * FIXME: If we got here because a child process failed and flagged to
+! * the parent to resume, and X11 is enabled with FEAT_TITLE, this will
+! * hit an X11 I/O error and do a longjmp(), leaving recursive
+! * permanently set to 1. This is probably not as big a problem as it
+! * sounds, because gui_mch_init() in both gui_x11.c and gui_gtk_x11.c
+! * return "OK" unconditionally, so it would be very difficult to
+! * actually hit this case.
+! */
+! termcapinit(old_term);
+ settmode(TMODE_RAW); /* restart RAW mode */
+ #ifdef FEAT_TITLE
+ set_title_defaults(); /* set 'title' and 'icon' again */
+***************
+*** 108,113 ****
+--- 126,166 ----
+
+ vim_free(old_term);
+
++ #ifdef FEAT_AUTOCMD
++ /* If the GUI started successfully, trigger the GUIEnter event, otherwise
++ * the GUIFailed event. */
++ gui_mch_update();
++ apply_autocmds(gui.in_use ? EVENT_GUIENTER : EVENT_GUIFAILED,
++ NULL, NULL, FALSE, curbuf);
++ #endif
++ --recursive;
++ }
++
++ /*
++ * Set_termname() will call gui_init() to start the GUI.
++ * Set the "starting" flag, to indicate that the GUI will start.
++ *
++ * We don't want to open the GUI shell until after we've read .gvimrc,
++ * otherwise we don't know what font we will use, and hence we don't know
++ * what size the shell should be. So if there are errors in the .gvimrc
++ * file, they will have to go to the terminal: Set full_screen to FALSE.
++ * full_screen will be set to TRUE again by a successful termcapinit().
++ */
++ static void
++ gui_attempt_start()
++ {
++ static int recursive = 0;
++
++ ++recursive;
++ gui.starting = TRUE;
++
++ #ifdef FEAT_GUI_GTK
++ gui.event_time = GDK_CURRENT_TIME;
++ #endif
++
++ termcapinit((char_u *)"builtin_gui");
++ gui.starting = recursive - 1;
++
+ #if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_X11)
+ if (gui.in_use)
+ {
+***************
+*** 123,218 ****
+ display_errors();
+ }
+ #endif
+
+! #if defined(MAY_FORK) && !defined(__QNXNTO__)
+! /*
+! * Quit the current process and continue in the child.
+! * Makes "gvim file" disconnect from the shell it was started in.
+! * Don't do this when Vim was started with "-f" or the 'f' flag is present
+! * in 'guioptions'.
+! */
+! if (gui.in_use && dofork)
+ {
+! int pipefd[2]; /* pipe between parent and child */
+! int pipe_error;
+! char dummy;
+! pid_t pid = -1;
+!
+! /* Setup a pipe between the child and the parent, so that the parent
+! * knows when the child has done the setsid() call and is allowed to
+! * exit. */
+! pipe_error = (pipe(pipefd) < 0);
+! pid = fork();
+! if (pid > 0) /* Parent */
+ {
+! /* Give the child some time to do the setsid(), otherwise the
+! * exit() may kill the child too (when starting gvim from inside a
+! * gvim). */
+! if (pipe_error)
+! ui_delay(300L, TRUE);
+! else
+ {
+! /* The read returns when the child closes the pipe (or when
+! * the child dies for some reason). */
+! close(pipefd[1]);
+! ignored = (int)read(pipefd[0], &dummy, (size_t)1);
+! close(pipefd[0]);
+ }
+!
+! /* When swapping screens we may need to go to the next line, e.g.,
+! * after a hit-enter prompt and using ":gui". */
+! if (newline_on_exit)
+! mch_errmsg("\r\n");
+!
+! /*
+! * The parent must skip the normal exit() processing, the child
+! * will do it. For example, GTK messes up signals when exiting.
+! */
+! _exit(0);
+ }
+
+! # if defined(HAVE_SETSID) || defined(HAVE_SETPGID)
+ /*
+! * Change our process group. On some systems/shells a CTRL-C in the
+! * shell where Vim was started would otherwise kill gvim!
+ */
+! if (pid == 0) /* child */
+ # if defined(HAVE_SETSID)
+! (void)setsid();
+ # else
+! (void)setpgid(0, 0);
+ # endif
+ # endif
+! if (!pipe_error)
+! {
+! close(pipefd[0]);
+! close(pipefd[1]);
+! }
+
+ # if defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION)
+! /* Tell the session manager our new PID */
+! gui_mch_forked();
+ # endif
+ }
+- #else
+- # if defined(__QNXNTO__)
+- if (gui.in_use && dofork)
+- procmgr_daemon(0, PROCMGR_DAEMON_KEEPUMASK | PROCMGR_DAEMON_NOCHDIR |
+- PROCMGR_DAEMON_NOCLOSE | PROCMGR_DAEMON_NODEVNULL);
+- # endif
+- #endif
+
+! #ifdef FEAT_AUTOCMD
+! /* If the GUI started successfully, trigger the GUIEnter event, otherwise
+! * the GUIFailed event. */
+! gui_mch_update();
+! apply_autocmds(gui.in_use ? EVENT_GUIENTER : EVENT_GUIFAILED,
+! NULL, NULL, FALSE, curbuf);
+ #endif
+
+! --recursive;
+ }
+
+ /*
+ * Call this when vim starts up, whether or not the GUI is started
+ */
+--- 176,346 ----
+ display_errors();
+ }
+ #endif
++ --recursive;
++ }
+
+! #ifdef MAY_FORK
+!
+! /* for waitpid() */
+! # if defined(HAVE_SYS_WAIT_H) || defined(HAVE_UNION_WAIT)
+! # include <sys/wait.h>
+! # endif
+!
+! /*
+! * Create a new process, by forking. In the child, start the GUI, and in
+! * the parent, exit.
+! *
+! * If something goes wrong, this will return with gui.in_use still set
+! * to FALSE, in which case the caller should continue execution without
+! * the GUI.
+! *
+! * If the child fails to start the GUI, then the child will exit and the
+! * parent will return. If the child succeeds, then the parent will exit
+! * and the child will return.
+! */
+! static void
+! gui_do_fork()
+! {
+! #ifdef __QNXNTO__
+! procmgr_daemon(0, PROCMGR_DAEMON_KEEPUMASK | PROCMGR_DAEMON_NOCHDIR |
+! PROCMGR_DAEMON_NOCLOSE | PROCMGR_DAEMON_NODEVNULL);
+! gui_attempt_start();
+! return;
+! #else
+! int pipefd[2]; /* pipe between parent and child */
+! int pipe_error;
+! int status;
+! int exit_status;
+! pid_t pid = -1;
+! FILE *parent_file;
+!
+! /* Setup a pipe between the child and the parent, so that the parent
+! * knows when the child has done the setsid() call and is allowed to
+! * exit. */
+! pipe_error = (pipe(pipefd) < 0);
+! pid = fork();
+! if (pid < 0) /* Fork error */
+ {
+! EMSG(_("E851: Failed to create a new process for the GUI"));
+! return;
+! }
+! else if (pid > 0) /* Parent */
+! {
+! /* Give the child some time to do the setsid(), otherwise the
+! * exit() may kill the child too (when starting gvim from inside a
+! * gvim). */
+! if (!pipe_error)
+ {
+! /* The read returns when the child closes the pipe (or when
+! * the child dies for some reason). */
+! close(pipefd[1]);
+! status = gui_read_child_pipe(pipefd[0]);
+! if (status == GUI_CHILD_FAILED)
+ {
+! /* The child failed to start the GUI, so the caller must
+! * continue. There may be more error information written
+! * to stderr by the child. */
+! # ifdef __NeXT__
+! wait4(pid, &exit_status, 0, (struct rusage *)0);
+! # else
+! waitpid(pid, &exit_status, 0);
+! # endif
+! EMSG(_("E852: The child process failed to start the GUI"));
+! return;
+ }
+! else if (status == GUI_CHILD_IO_ERROR)
+! {
+! pipe_error = TRUE;
+! }
+! /* else GUI_CHILD_OK: parent exit */
+ }
+
+! if (pipe_error)
+! ui_delay(300L, TRUE);
+!
+! /* When swapping screens we may need to go to the next line, e.g.,
+! * after a hit-enter prompt and using ":gui". */
+! if (newline_on_exit)
+! mch_errmsg("\r\n");
+!
+ /*
+! * The parent must skip the normal exit() processing, the child
+! * will do it. For example, GTK messes up signals when exiting.
+ */
+! _exit(0);
+! }
+! /* Child */
+!
+! # if defined(HAVE_SETSID) || defined(HAVE_SETPGID)
+! /*
+! * Change our process group. On some systems/shells a CTRL-C in the
+! * shell where Vim was started would otherwise kill gvim!
+! */
+ # if defined(HAVE_SETSID)
+! (void)setsid();
+ # else
+! (void)setpgid(0, 0);
+ # endif
+ # endif
+! if (!pipe_error)
+! close(pipefd[0]);
+
+ # if defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION)
+! /* Tell the session manager our new PID */
+! gui_mch_forked();
+ # endif
++
++ if (!pipe_error)
++ parent_file = fdopen(pipefd[1], "w");
++ else
++ parent_file = NULL;
++
++ /* Try to start the GUI */
++ gui_attempt_start();
++
++ /* Notify the parent */
++ if (parent_file != NULL)
++ {
++ fputs(gui.in_use ? "ok" : "fail", parent_file);
++ fclose(parent_file);
+ }
+
+! /* If we failed to start the GUI, exit now. */
+! if (!gui.in_use)
+! exit(1);
+ #endif
++ }
+
+! /*
+! * Read from a pipe assumed to be connected to the child process (this
+! * function is called from the parent).
+! * Return GUI_CHILD_OK if the child successfully started the GUI,
+! * GUY_CHILD_FAILED if the child failed, or GUI_CHILD_IO_ERROR if there was
+! * some other error.
+! *
+! * The file descriptor will be closed before the function returns.
+! */
+! static int
+! gui_read_child_pipe(int fd)
+! {
+! size_t bytes_read;
+! FILE *file;
+! char buffer[10];
+!
+! file = fdopen(fd, "r");
+! if (!file)
+! return GUI_CHILD_IO_ERROR;
+!
+! bytes_read = fread(buffer, sizeof(char), sizeof(buffer)-1, file);
+! buffer[bytes_read] = '\0';
+! fclose(file);
+! if (strcmp(buffer, "ok") == 0)
+! return GUI_CHILD_OK;
+! return GUI_CHILD_FAILED;
+ }
+
++ #endif /* MAY_FORK */
++
+ /*
+ * Call this when vim starts up, whether or not the GUI is started
+ */
+*** ../vim-7.3.314/src/version.c 2011-09-14 19:01:38.000000000 +0200
+--- src/version.c 2011-09-14 19:02:45.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 315,
+ /**/
+
+--
+A)bort, R)etry, B)ang it with a large hammer
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.316 b/source/ap/vim/patches/7.3.316
new file mode 100644
index 000000000..96a7d42b3
--- /dev/null
+++ b/source/ap/vim/patches/7.3.316
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.316
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.316 (after 7.3.306)
+Problem: Crash when 'colorcolumn' is set and closing buffer.
+Solution: Check for w_buffer to be NULL. (Yasuhiro Matsumoto)
+Files: src/option.c
+
+
+*** ../vim-7.3.315/src/option.c 2011-06-12 22:13:37.000000000 +0200
+--- src/option.c 2011-09-21 13:26:31.000000000 +0200
+***************
+*** 7036,7041 ****
+--- 7036,7044 ----
+ int i;
+ int j = 0;
+
++ if (wp->w_buffer == NULL)
++ return NULL; /* buffer was closed */
++
+ for (s = wp->w_p_cc; *s != NUL && count < 255;)
+ {
+ if (*s == '-' || *s == '+')
+*** ../vim-7.3.315/src/version.c 2011-09-14 19:04:35.000000000 +0200
+--- src/version.c 2011-09-21 13:40:05.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 316,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+25. You believe nothing looks sexier than a man in boxer shorts illuminated
+ only by a 17" inch svga monitor.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.317 b/source/ap/vim/patches/7.3.317
new file mode 100644
index 000000000..220cae218
--- /dev/null
+++ b/source/ap/vim/patches/7.3.317
@@ -0,0 +1,116 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.317
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.317
+Problem: Calling debug.debug() in Lua may cause Vim to hang.
+Solution: Add a better debug method. (Rob Hoelz, Luis Carvalho)
+Files: src/if_lua.c
+
+
+*** ../vim-7.3.316/src/if_lua.c 2011-01-17 19:53:20.000000000 +0100
+--- src/if_lua.c 2011-09-21 17:15:21.000000000 +0200
+***************
+*** 100,105 ****
+--- 100,106 ----
+ #define lua_setfield dll_lua_setfield
+ #define lua_rawset dll_lua_rawset
+ #define lua_rawseti dll_lua_rawseti
++ #define lua_remove dll_lua_remove
+ #define lua_setmetatable dll_lua_setmetatable
+ #define lua_call dll_lua_call
+ #define lua_pcall dll_lua_pcall
+***************
+*** 161,166 ****
+--- 162,168 ----
+ void (*dll_lua_setfield) (lua_State *L, int idx, const char *k);
+ void (*dll_lua_rawset) (lua_State *L, int idx);
+ void (*dll_lua_rawseti) (lua_State *L, int idx, int n);
++ void (*dll_lua_remove) (lua_State *L, int idx);
+ int (*dll_lua_setmetatable) (lua_State *L, int objindex);
+ void (*dll_lua_call) (lua_State *L, int nargs, int nresults);
+ int (*dll_lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc);
+***************
+*** 229,234 ****
+--- 231,237 ----
+ {"lua_setfield", (luaV_function) &dll_lua_setfield},
+ {"lua_rawset", (luaV_function) &dll_lua_rawset},
+ {"lua_rawseti", (luaV_function) &dll_lua_rawseti},
++ {"lua_remove", (luaV_function) &dll_lua_remove},
+ {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable},
+ {"lua_call", (luaV_function) &dll_lua_call},
+ {"lua_pcall", (luaV_function) &dll_lua_pcall},
+***************
+*** 924,929 ****
+--- 927,957 ----
+ }
+
+ static int
++ luaV_debug(lua_State *L)
++ {
++ lua_settop(L, 0);
++ lua_getglobal(L, "vim");
++ lua_getfield(L, -1, "eval");
++ lua_remove(L, -2); /* vim.eval at position 1 */
++ for (;;)
++ {
++ const char *input;
++ size_t l;
++ lua_pushvalue(L, 1); /* vim.eval */
++ lua_pushliteral(L, "input('lua_debug> ')");
++ lua_call(L, 1, 1); /* return string */
++ input = lua_tolstring(L, -1, &l);
++ if (l == 0 || strcmp(input, "cont") == 0)
++ return 0;
++ msg_putchar('\n'); /* avoid outputting on input line */
++ if (luaL_loadbuffer(L, input, l, "=(debug command)")
++ || lua_pcall(L, 0, 0, 0))
++ luaV_emsg(L);
++ lua_settop(L, 1); /* remove eventual returns, but keep vim.eval */
++ }
++ }
++
++ static int
+ luaV_command(lua_State *L)
+ {
+ do_cmdline_cmd((char_u *) luaL_checkstring(L, 1));
+***************
+*** 1082,1087 ****
+--- 1110,1120 ----
+ /* print */
+ lua_pushcfunction(L, luaV_print);
+ lua_setglobal(L, "print");
++ /* debug.debug */
++ lua_getglobal(L, "debug");
++ lua_pushcfunction(L, luaV_debug);
++ lua_setfield(L, -2, "debug");
++ lua_pop(L, 1);
+ /* free */
+ lua_pushlightuserdata(L, (void *) LUAVIM_FREE);
+ lua_pushcfunction(L, luaV_free);
+*** ../vim-7.3.316/src/version.c 2011-09-21 13:40:13.000000000 +0200
+--- src/version.c 2011-09-21 17:14:01.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 317,
+ /**/
+
+--
+Q: What is the difference betwee open-source and commercial software?
+A: If you have a problem with commercial software you can call a phone
+ number and they will tell you it might be solved in a future version.
+ For open-source software there isn't a phone number to call, but you
+ get the solution within a day.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.318 b/source/ap/vim/patches/7.3.318
new file mode 100644
index 000000000..369448023
--- /dev/null
+++ b/source/ap/vim/patches/7.3.318
@@ -0,0 +1,90 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.318
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.318
+Problem: "C" on the last line deletes that line if it's blank.
+Solution: Only delete the last line for a delete operation. (James Vega)
+Files: src/ops.c
+
+
+*** ../vim-7.3.317/src/ops.c 2011-08-10 12:10:55.000000000 +0200
+--- src/ops.c 2011-09-21 17:32:36.000000000 +0200
+***************
+*** 1922,1928 ****
+ curwin->w_cursor.coladd = 0;
+ }
+ #endif
+! if (oap->inclusive && oap->end.lnum == curbuf->b_ml.ml_line_count
+ && n > (int)STRLEN(ml_get(oap->end.lnum)))
+ {
+ /* Special case: gH<Del> deletes the last line. */
+--- 1922,1930 ----
+ curwin->w_cursor.coladd = 0;
+ }
+ #endif
+! if (oap->op_type == OP_DELETE
+! && oap->inclusive
+! && oap->end.lnum == curbuf->b_ml.ml_line_count
+ && n > (int)STRLEN(ml_get(oap->end.lnum)))
+ {
+ /* Special case: gH<Del> deletes the last line. */
+***************
+*** 3331,3338 ****
+ if (regname == '=')
+ {
+ /* For the = register we need to split the string at NL
+! * characters. */
+! /* Loop twice: count the number of lines and save them. */
+ for (;;)
+ {
+ y_size = 0;
+--- 3333,3340 ----
+ if (regname == '=')
+ {
+ /* For the = register we need to split the string at NL
+! * characters.
+! * Loop twice: count the number of lines and save them. */
+ for (;;)
+ {
+ y_size = 0;
+***************
+*** 3348,3354 ****
+ if (y_array != NULL)
+ *ptr = NUL;
+ ++ptr;
+! /* A trailing '\n' makes the string linewise */
+ if (*ptr == NUL)
+ {
+ y_type = MLINE;
+--- 3350,3356 ----
+ if (y_array != NULL)
+ *ptr = NUL;
+ ++ptr;
+! /* A trailing '\n' makes the register linewise. */
+ if (*ptr == NUL)
+ {
+ y_type = MLINE;
+*** ../vim-7.3.317/src/version.c 2011-09-21 17:15:34.000000000 +0200
+--- src/version.c 2011-09-21 17:31:48.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 318,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+26. You check your mail. It says "no new messages." So you check it again.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.319 b/source/ap/vim/patches/7.3.319
new file mode 100644
index 000000000..68448ab63
--- /dev/null
+++ b/source/ap/vim/patches/7.3.319
@@ -0,0 +1,154 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.319
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.319 (after 7.3.311)
+Problem: Redobuff doesn't always include changes of the completion leader.
+Solution: Insert backspaces as needed. (idea by Taro Muraoka)
+Files: src/edit.c
+
+
+*** ../vim-7.3.318/src/edit.c 2011-09-14 16:52:02.000000000 +0200
+--- src/edit.c 2011-09-21 17:59:10.000000000 +0200
+***************
+*** 163,168 ****
+--- 163,169 ----
+ static void ins_compl_set_original_text __ARGS((char_u *str));
+ static void ins_compl_addfrommatch __ARGS((void));
+ static int ins_compl_prep __ARGS((int c));
++ static void ins_compl_fixRedoBufForLeader __ARGS((char_u *ptr_arg));
+ static buf_T *ins_compl_next_buf __ARGS((buf_T *buf, int flag));
+ #if defined(FEAT_COMPL_FUNC) || defined(FEAT_EVAL)
+ static void ins_compl_add_list __ARGS((list_T *list));
+***************
+*** 3713,3721 ****
+ * memory that was used, and make sure we can redo the insert. */
+ if (compl_curr_match != NULL || compl_leader != NULL || c == Ctrl_E)
+ {
+- char_u *p;
+- int temp = 0;
+-
+ /*
+ * If any of the original typed text has been changed, eg when
+ * ignorecase is set, we must add back-spaces to the redo
+--- 3714,3719 ----
+***************
+*** 3726,3750 ****
+ */
+ if (compl_curr_match != NULL && compl_used_match && c != Ctrl_E)
+ ptr = compl_curr_match->cp_str;
+- else if (compl_leader != NULL)
+- ptr = compl_leader;
+ else
+! ptr = compl_orig_text;
+! if (compl_orig_text != NULL)
+! {
+! p = compl_orig_text;
+! for (temp = 0; p[temp] != NUL && p[temp] == ptr[temp];
+! ++temp)
+! ;
+! #ifdef FEAT_MBYTE
+! if (temp > 0)
+! temp -= (*mb_head_off)(compl_orig_text, p + temp);
+! #endif
+! for (p += temp; *p != NUL; mb_ptr_adv(p))
+! AppendCharToRedobuff(K_BS);
+! }
+! if (ptr != NULL)
+! AppendToRedobuffLit(ptr + temp, -1);
+ }
+
+ #ifdef FEAT_CINDENT
+--- 3724,3732 ----
+ */
+ if (compl_curr_match != NULL && compl_used_match && c != Ctrl_E)
+ ptr = compl_curr_match->cp_str;
+ else
+! ptr = NULL;
+! ins_compl_fixRedoBufForLeader(ptr);
+ }
+
+ #ifdef FEAT_CINDENT
+***************
+*** 3834,3839 ****
+--- 3816,3859 ----
+ }
+
+ /*
++ * Fix the redo buffer for the completion leader replacing some of the typed
++ * text. This inserts backspaces and appends the changed text.
++ * "ptr" is the known leader text or NUL.
++ */
++ static void
++ ins_compl_fixRedoBufForLeader(ptr_arg)
++ char_u *ptr_arg;
++ {
++ int len;
++ char_u *p;
++ char_u *ptr = ptr_arg;
++
++ if (ptr == NULL)
++ {
++ if (compl_leader != NULL)
++ ptr = compl_leader;
++ else
++ return; /* nothing to do */
++ }
++ if (compl_orig_text != NULL)
++ {
++ p = compl_orig_text;
++ for (len = 0; p[len] != NUL && p[len] == ptr[len]; ++len)
++ ;
++ #ifdef FEAT_MBYTE
++ if (len > 0)
++ len -= (*mb_head_off)(p, p + len);
++ #endif
++ for (p += len; *p != NUL; mb_ptr_adv(p))
++ AppendCharToRedobuff(K_BS);
++ }
++ else
++ len = 0;
++ if (ptr != NULL)
++ AppendToRedobuffLit(ptr + len, -1);
++ }
++
++ /*
+ * Loops through the list of windows, loaded-buffers or non-loaded-buffers
+ * (depending on flag) starting from buf and looking for a non-scanned
+ * buffer (other than curbuf). curbuf is special, if it is called with
+***************
+*** 5241,5246 ****
+--- 5261,5270 ----
+ else
+ edit_submode = (char_u *)_(CTRL_X_MSG(ctrl_x_mode));
+
++ /* If any of the original typed text has been changed we need to fix
++ * the redo buffer. */
++ ins_compl_fixRedoBufForLeader(NULL);
++
+ /* Always add completion for the original text. */
+ vim_free(compl_orig_text);
+ compl_orig_text = vim_strnsave(line + compl_col, compl_length);
+*** ../vim-7.3.318/src/version.c 2011-09-21 17:33:49.000000000 +0200
+--- src/version.c 2011-09-21 18:21:07.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 319,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+27. You refer to your age as 3.x.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.320 b/source/ap/vim/patches/7.3.320
new file mode 100644
index 000000000..3b957c290
--- /dev/null
+++ b/source/ap/vim/patches/7.3.320
@@ -0,0 +1,130 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.320
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.320
+Problem: When a 0xa0 character is in a sourced file the error message for
+ unrecognized command does not show the problem.
+Solution: Display 0xa0 as <a0>.
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.3.319/src/ex_docmd.c 2011-07-20 16:36:35.000000000 +0200
+--- src/ex_docmd.c 2011-09-21 19:02:15.000000000 +0200
+***************
+*** 61,66 ****
+--- 61,67 ----
+ static char_u *do_one_cmd __ARGS((char_u **, int, char_u *(*fgetline)(int, void *, int), void *cookie));
+ static int if_level = 0; /* depth in :if */
+ #endif
++ static void append_command __ARGS((char_u *cmd));
+ static char_u *find_command __ARGS((exarg_T *eap, int *full));
+
+ static void ex_abbreviate __ARGS((exarg_T *eap));
+***************
+*** 2136,2145 ****
+ {
+ STRCPY(IObuff, _("E492: Not an editor command"));
+ if (!sourcing)
+! {
+! STRCAT(IObuff, ": ");
+! STRNCAT(IObuff, *cmdlinep, 40);
+! }
+ errormsg = IObuff;
+ }
+ goto doend;
+--- 2137,2143 ----
+ {
+ STRCPY(IObuff, _("E492: Not an editor command"));
+ if (!sourcing)
+! append_command(*cmdlinep);
+ errormsg = IObuff;
+ }
+ goto doend;
+***************
+*** 2708,2715 ****
+ STRCPY(IObuff, errormsg);
+ errormsg = IObuff;
+ }
+! STRCAT(errormsg, ": ");
+! STRNCAT(errormsg, *cmdlinep, IOSIZE - STRLEN(IObuff) - 1);
+ }
+ emsg(errormsg);
+ }
+--- 2706,2712 ----
+ STRCPY(IObuff, errormsg);
+ errormsg = IObuff;
+ }
+! append_command(*cmdlinep);
+ }
+ emsg(errormsg);
+ }
+***************
+*** 2797,2802 ****
+--- 2794,2835 ----
+ }
+
+ /*
++ * Append "cmd" to the error message in IObuff.
++ * Takes care of limiting the length and handling 0xa0, which would be
++ * invisible otherwise.
++ */
++ static void
++ append_command(cmd)
++ char_u *cmd;
++ {
++ char_u *s = cmd;
++ char_u *d;
++
++ STRCAT(IObuff, ": ");
++ d = IObuff + STRLEN(IObuff);
++ while (*s != NUL && d - IObuff < IOSIZE - 7)
++ {
++ if (
++ #ifdef FEAT_MBYTE
++ enc_utf8 ? (s[0] == 0xc2 && s[1] == 0xa0) :
++ #endif
++ *s == 0xa0)
++ {
++ s +=
++ #ifdef FEAT_MBYTE
++ enc_utf8 ? 2 :
++ #endif
++ 1;
++ STRCPY(d, "<a0>");
++ d += 4;
++ }
++ else
++ MB_COPY_CHAR(s, d);
++ }
++ *d = NUL;
++ }
++
++ /*
+ * Find an Ex command by its name, either built-in or user.
+ * Start of the name can be found at eap->cmd.
+ * Returns pointer to char after the command name.
+*** ../vim-7.3.319/src/version.c 2011-09-21 18:23:02.000000000 +0200
+--- src/version.c 2011-09-21 19:04:35.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 320,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+28. You have comandeered your teenager's phone line for the net and even his
+ friends know not to call on his line anymore.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.321 b/source/ap/vim/patches/7.3.321
new file mode 100644
index 000000000..6303b013c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.321
@@ -0,0 +1,304 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.321
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.321
+Problem: Code not following Vim style.
+Solution: Fix the style. (Elias Diem)
+Files: src/os_qnx.c
+
+
+*** ../vim-7.3.320/src/os_qnx.c 2011-06-19 01:14:22.000000000 +0200
+--- src/os_qnx.c 2011-09-21 19:48:08.000000000 +0200
+***************
+*** 24,33 ****
+ #if defined(FEAT_GUI_PHOTON)
+ PhChannelParms_t parms;
+
+! memset( &parms, 0, sizeof( parms ) );
+ parms.flags = Ph_DYNAMIC_BUFFER;
+
+! is_photon_available = (PhAttach( NULL, &parms ) != NULL) ? TRUE : FALSE;
+ #endif
+ }
+
+--- 24,33 ----
+ #if defined(FEAT_GUI_PHOTON)
+ PhChannelParms_t parms;
+
+! memset(&parms, 0, sizeof(parms));
+ parms.flags = Ph_DYNAMIC_BUFFER;
+
+! is_photon_available = (PhAttach(NULL, &parms) != NULL) ? TRUE : FALSE;
+ #endif
+ }
+
+***************
+*** 39,46 ****
+ /* Turn on the clipboard for a console vim when photon is running */
+ void qnx_clip_init()
+ {
+! if( is_photon_available == TRUE && !gui.in_use)
+! clip_init( TRUE );
+ }
+
+ /*****************************************************************************/
+--- 39,46 ----
+ /* Turn on the clipboard for a console vim when photon is running */
+ void qnx_clip_init()
+ {
+! if (is_photon_available == TRUE && !gui.in_use)
+! clip_init(TRUE);
+ }
+
+ /*****************************************************************************/
+***************
+*** 48,79 ****
+
+ /* No support for owning the clipboard */
+ int
+! clip_mch_own_selection( VimClipboard *cbd )
+ {
+ return FALSE;
+ }
+
+ void
+! clip_mch_lose_selection( VimClipboard *cbd )
+ {
+ }
+
+ void
+! clip_mch_request_selection( VimClipboard *cbd )
+ {
+ int type = MLINE, clip_length = 0, is_type_set = FALSE;
+ void *cbdata;
+ PhClipHeader *clip_header;
+ char_u *clip_text = NULL;
+
+! cbdata = PhClipboardPasteStart( PhInputGroup( NULL ));
+! if( cbdata != NULL )
+ {
+ /* Look for the vim specific clip first */
+! clip_header = PhClipboardPasteType( cbdata, CLIP_TYPE_VIM );
+! if( clip_header != NULL && clip_header->data != NULL )
+ {
+! switch( *(char *) clip_header->data )
+ {
+ default: /* fallthrough to line type */
+ case 'L': type = MLINE; break;
+--- 48,79 ----
+
+ /* No support for owning the clipboard */
+ int
+! clip_mch_own_selection(VimClipboard *cbd)
+ {
+ return FALSE;
+ }
+
+ void
+! clip_mch_lose_selection(VimClipboard *cbd)
+ {
+ }
+
+ void
+! clip_mch_request_selection(VimClipboard *cbd)
+ {
+ int type = MLINE, clip_length = 0, is_type_set = FALSE;
+ void *cbdata;
+ PhClipHeader *clip_header;
+ char_u *clip_text = NULL;
+
+! cbdata = PhClipboardPasteStart(PhInputGroup(NULL));
+! if (cbdata != NULL)
+ {
+ /* Look for the vim specific clip first */
+! clip_header = PhClipboardPasteType(cbdata, CLIP_TYPE_VIM);
+! if (clip_header != NULL && clip_header->data != NULL)
+ {
+! switch(*(char *) clip_header->data)
+ {
+ default: /* fallthrough to line type */
+ case 'L': type = MLINE; break;
+***************
+*** 86,112 ****
+ }
+
+ /* Try for just normal text */
+! clip_header = PhClipboardPasteType( cbdata, CLIP_TYPE_TEXT );
+! if( clip_header != NULL )
+ {
+ clip_text = clip_header->data;
+ clip_length = clip_header->length - 1;
+
+! if( clip_text != NULL && is_type_set == FALSE )
+ type = MAUTO;
+ }
+
+! if( (clip_text != NULL) && (clip_length > 0) )
+ {
+! clip_yank_selection( type, clip_text, clip_length, cbd );
+ }
+
+! PhClipboardPasteFinish( cbdata );
+ }
+ }
+
+ void
+! clip_mch_set_selection( VimClipboard *cbd )
+ {
+ int type;
+ long_u len;
+--- 86,112 ----
+ }
+
+ /* Try for just normal text */
+! clip_header = PhClipboardPasteType(cbdata, CLIP_TYPE_TEXT);
+! if (clip_header != NULL)
+ {
+ clip_text = clip_header->data;
+ clip_length = clip_header->length - 1;
+
+! if (clip_text != NULL && is_type_set == FALSE)
+ type = MAUTO;
+ }
+
+! if ((clip_text != NULL) && (clip_length > 0))
+ {
+! clip_yank_selection(type, clip_text, clip_length, cbd);
+ }
+
+! PhClipboardPasteFinish(cbdata);
+ }
+ }
+
+ void
+! clip_mch_set_selection(VimClipboard *cbd)
+ {
+ int type;
+ long_u len;
+***************
+*** 114,144 ****
+ PhClipHeader clip_header[2];
+
+ /* Prevent recursion from clip_get_selection() */
+! if( cbd->owned == TRUE )
+ return;
+
+ cbd->owned = TRUE;
+! clip_get_selection( cbd );
+ cbd->owned = FALSE;
+
+! type = clip_convert_selection( &str, &len, cbd );
+! if( type >= 0 )
+ {
+! text_clip = lalloc( len + 1, TRUE ); /* Normal text */
+
+! if( text_clip && vim_clip )
+ {
+! memset( clip_header, 0, sizeof( clip_header ) );
+
+! STRNCPY( clip_header[0].type, CLIP_TYPE_VIM, 8 );
+! clip_header[0].length = sizeof( vim_clip );
+ clip_header[0].data = vim_clip;
+
+! STRNCPY( clip_header[1].type, CLIP_TYPE_TEXT, 8 );
+ clip_header[1].length = len + 1;
+ clip_header[1].data = text_clip;
+
+! switch( type )
+ {
+ default: /* fallthrough to MLINE */
+ case MLINE: *vim_clip = 'L'; break;
+--- 114,144 ----
+ PhClipHeader clip_header[2];
+
+ /* Prevent recursion from clip_get_selection() */
+! if (cbd->owned == TRUE)
+ return;
+
+ cbd->owned = TRUE;
+! clip_get_selection(cbd);
+ cbd->owned = FALSE;
+
+! type = clip_convert_selection(&str, &len, cbd);
+! if (type >= 0)
+ {
+! text_clip = lalloc(len + 1, TRUE); /* Normal text */
+
+! if (text_clip && vim_clip)
+ {
+! memset(clip_header, 0, sizeof(clip_header));
+
+! STRNCPY(clip_header[0].type, CLIP_TYPE_VIM, 8);
+! clip_header[0].length = sizeof(vim_clip);
+ clip_header[0].data = vim_clip;
+
+! STRNCPY(clip_header[1].type, CLIP_TYPE_TEXT, 8);
+ clip_header[1].length = len + 1;
+ clip_header[1].data = text_clip;
+
+! switch(type)
+ {
+ default: /* fallthrough to MLINE */
+ case MLINE: *vim_clip = 'L'; break;
+***************
+*** 148,161 ****
+ #endif
+ }
+
+! vim_strncpy( text_clip, str, len );
+
+ vim_clip[ 1 ] = NUL;
+
+! PhClipboardCopy( PhInputGroup( NULL ), 2, clip_header);
+ }
+! vim_free( text_clip );
+ }
+! vim_free( str );
+ }
+ #endif
+--- 148,161 ----
+ #endif
+ }
+
+! vim_strncpy(text_clip, str, len);
+
+ vim_clip[ 1 ] = NUL;
+
+! PhClipboardCopy(PhInputGroup(NULL), 2, clip_header);
+ }
+! vim_free(text_clip);
+ }
+! vim_free(str);
+ }
+ #endif
+*** ../vim-7.3.320/src/version.c 2011-09-21 19:10:42.000000000 +0200
+--- src/version.c 2011-09-21 19:47:50.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 321,
+ /**/
+
+--
+Bypasses are devices that allow some people to dash from point A to
+point B very fast while other people dash from point B to point A very
+fast. People living at point C, being a point directly in between, are
+often given to wonder what's so great about point A that so many people
+from point B are so keen to get there and what's so great about point B
+that so many people from point A are so keen to get there. They often
+wish that people would just once and for all work out where the hell
+they wanted to be.
+ -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.322 b/source/ap/vim/patches/7.3.322
new file mode 100644
index 000000000..d81b9ec63
--- /dev/null
+++ b/source/ap/vim/patches/7.3.322
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.322
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.322
+Problem: #ifdef for PDP_RETVAL doesn't work, INT_PTR can be a typedef.
+Solution: Check the MSC version and 64 bit flags. (Sergiu Dotenco)
+Files: src/os_mswin.c
+
+
+*** ../vim-7.3.321/src/os_mswin.c 2011-08-10 17:07:56.000000000 +0200
+--- src/os_mswin.c 2011-09-21 20:09:05.000000000 +0200
+***************
+*** 1781,1787 ****
+ }
+
+ /* Attempt to make this work for old and new compilers */
+! #if !defined(_MSC_VER) || (_MSC_VER < 1300) || !defined(INT_PTR)
+ # define PDP_RETVAL BOOL
+ #else
+ # define PDP_RETVAL INT_PTR
+--- 1781,1787 ----
+ }
+
+ /* Attempt to make this work for old and new compilers */
+! #if !defined(_WIN64) && (!defined(_MSC_VER) || _MSC_VER < 1300)
+ # define PDP_RETVAL BOOL
+ #else
+ # define PDP_RETVAL INT_PTR
+*** ../vim-7.3.321/src/version.c 2011-09-21 19:50:00.000000000 +0200
+--- src/version.c 2011-09-21 20:08:29.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 322,
+ /**/
+
+--
+Don't Panic!
+ -- The Hitchhiker's Guide to the Galaxy
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.323 b/source/ap/vim/patches/7.3.323
new file mode 100644
index 000000000..10f6d1939
--- /dev/null
+++ b/source/ap/vim/patches/7.3.323
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.323
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.323
+Problem: The default 'errorformat' does not ignore some "included from"
+ lines.
+Solution: Add a few more patterns. (Ben Boeckel)
+Files: src/option.h
+
+
+*** ../vim-7.3.322/src/option.h 2011-07-27 13:59:12.000000000 +0200
+--- src/option.h 2011-09-30 14:32:13.000000000 +0200
+***************
+*** 33,39 ****
+ # ifdef EBCDIC
+ #define DFLT_EFM "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+ # else
+! #define DFLT_EFM "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-Gfrom %f:%l:%c,%-Gfrom %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+ # endif
+ # endif
+ # endif
+--- 33,39 ----
+ # ifdef EBCDIC
+ #define DFLT_EFM "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+ # else
+! #define DFLT_EFM "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c\\,,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-G%*[ ]from %f:%l:%c,%-G%*[ ]from %f:%l:,%-G%*[ ]from %f:%l\\,,%-G%*[ ]from %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+ # endif
+ # endif
+ # endif
+*** ../vim-7.3.322/src/version.c 2011-09-21 20:09:38.000000000 +0200
+--- src/version.c 2011-09-30 14:38:59.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 323,
+ /**/
+
+--
+Due knot trussed yore spell chequer two fined awl miss steaks.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.324 b/source/ap/vim/patches/7.3.324
new file mode 100644
index 000000000..59b5c6c07
--- /dev/null
+++ b/source/ap/vim/patches/7.3.324
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.324
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.324 (after 7.3.237)
+Problem: Completion for ":compiler" shows color scheme names.
+Solution: Fix the directory name. (James Vega)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.3.323/src/ex_getln.c 2011-08-17 16:25:43.000000000 +0200
+--- src/ex_getln.c 2011-09-30 16:22:14.000000000 +0200
+***************
+*** 4546,4552 ****
+ }
+ if (xp->xp_context == EXPAND_COMPILER)
+ {
+! char *directories[] = {"colors", NULL};
+ return ExpandRTDir(pat, num_file, file, directories);
+ }
+ if (xp->xp_context == EXPAND_OWNSYNTAX)
+--- 4546,4552 ----
+ }
+ if (xp->xp_context == EXPAND_COMPILER)
+ {
+! char *directories[] = {"compiler", NULL};
+ return ExpandRTDir(pat, num_file, file, directories);
+ }
+ if (xp->xp_context == EXPAND_OWNSYNTAX)
+*** ../vim-7.3.323/src/version.c 2011-09-30 14:44:49.000000000 +0200
+--- src/version.c 2011-09-30 16:23:15.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 324,
+ /**/
+
+
+--
+hundred-and-one symptoms of being an internet addict:
+31. You code your homework in HTML and give your instructor the URL.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.325 b/source/ap/vim/patches/7.3.325
new file mode 100644
index 000000000..80ebc6deb
--- /dev/null
+++ b/source/ap/vim/patches/7.3.325
@@ -0,0 +1,64 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.325
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.325
+Problem: A duplicated function argument gives an internal error.
+Solution: Give a proper error message. (based on patch by Tyru)
+Files: src/eval.c
+
+
+*** ../vim-7.3.324/src/eval.c 2011-09-14 16:52:02.000000000 +0200
+--- src/eval.c 2011-09-30 16:32:20.000000000 +0200
+***************
+*** 20461,20466 ****
+--- 20461,20467 ----
+ exarg_T *eap;
+ {
+ char_u *theline;
++ int i;
+ int j;
+ int c;
+ int saved_did_emsg;
+***************
+*** 20707,20712 ****
+--- 20708,20722 ----
+ arg = vim_strsave(arg);
+ if (arg == NULL)
+ goto erret;
++
++ /* Check for duplicate argument name. */
++ for (i = 0; i < newargs.ga_len; ++i)
++ if (STRCMP(((char_u **)(newargs.ga_data))[i], arg) == 0)
++ {
++ EMSG2(_("E853: Duplicate argument name: %s"), arg);
++ goto erret;
++ }
++
+ ((char_u **)(newargs.ga_data))[newargs.ga_len] = arg;
+ *p = c;
+ newargs.ga_len++;
+*** ../vim-7.3.324/src/version.c 2011-09-30 16:23:21.000000000 +0200
+--- src/version.c 2011-09-30 16:39:16.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 325,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+32. You don't know what sex three of your closest friends are, because they
+ have neutral nicknames and you never bothered to ask.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.326 b/source/ap/vim/patches/7.3.326
new file mode 100644
index 000000000..4ad52e960
--- /dev/null
+++ b/source/ap/vim/patches/7.3.326
@@ -0,0 +1,285 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.326
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.326
+Problem: MingW 4.6 no longer supports the -mno-cygwin option.
+Solution: Split the Cygwin and MingW makefiles. (Matsushita Shougo)
+Files: src/GvimExt/Make_cyg.mak, src/GvimExt/Make_ming.mak,
+ src/Make_cyg.mak, src/Make_ming.mak, src/xxd/Make_ming.mak,
+ Filelist
+
+
+*** ../vim-7.3.325/src/GvimExt/Make_cyg.mak 2011-09-30 16:55:18.000000000 +0200
+--- src/GvimExt/Make_cyg.mak 2011-09-30 16:45:49.000000000 +0200
+***************
+*** 0 ****
+--- 1,77 ----
++ # Project: gvimext
++ # Generates gvimext.dll with gcc.
++ # To be used with Cygwin.
++ #
++ # Originally, the DLL base address was fixed: -Wl,--image-base=0x1C000000
++ # Now it is allocated dymanically by the linker by evaluating all DLLs
++ # already loaded in memory. The binary image contains as well information
++ # for automatic pseudo-rebasing, if needed by the system. ALV 2004-02-29
++
++ # If cross-compiling set this to yes, else set it to no
++ CROSS = no
++ #CROSS = yes
++ # For the old MinGW 2.95 (the one you get e.g. with debian woody)
++ # set the following variable to yes and check if the executables are
++ # really named that way.
++ # If you have a newer MinGW or you are using cygwin set it to no and
++ # check also the executables
++ MINGWOLD = no
++
++ # Link against the shared versions of libgcc/libstdc++ by default. Set
++ # STATIC_STDCPLUS to "yes" to link against static versions instead.
++ STATIC_STDCPLUS=no
++ #STATIC_STDCPLUS=yes
++
++ # Note: -static-libstdc++ is not available until gcc 4.5.x.
++ LDFLAGS += -shared
++ ifeq (yes, $(STATIC_STDCPLUS))
++ LDFLAGS += -static-libgcc -static-libstdc++
++ endif
++
++ ifeq ($(CROSS),yes)
++ DEL = rm
++ ifeq ($(MINGWOLD),yes)
++ CXXFLAGS := -O2 -mno-cygwin -fvtable-thunks
++ else
++ CXXFLAGS := -O2 -mno-cygwin
++ endif
++ else
++ CXXFLAGS := -O2 -mno-cygwin
++ ifneq (sh.exe, $(SHELL))
++ DEL = rm
++ else
++ DEL = del
++ endif
++ endif
++ CXX := $(CROSS_COMPILE)g++
++ WINDRES := $(CROSS_COMPILE)windres
++ WINDRES_CXX = $(CXX)
++ WINDRES_FLAGS = --preprocessor="$(WINDRES_CXX) -E -xc" -DRC_INVOKED
++ LIBS := -luuid
++ RES := gvimext.res
++ DEFFILE = gvimext_ming.def
++ OBJ := gvimext.o
++
++ DLL := gvimext.dll
++
++ .PHONY: all all-before all-after clean clean-custom
++
++ all: all-before $(DLL) all-after
++
++ $(DLL): $(OBJ) $(RES) $(DEFFILE)
++ $(CXX) $(LDFLAGS) $(CXXFLAGS) -s -o $@ \
++ -Wl,--enable-auto-image-base \
++ -Wl,--enable-auto-import \
++ -Wl,--whole-archive \
++ $^ \
++ -Wl,--no-whole-archive \
++ $(LIBS)
++
++ gvimext.o: gvimext.cpp
++ $(CXX) $(CXXFLAGS) -DFEAT_GETTEXT -c $? -o $@
++
++ $(RES): gvimext_ming.rc
++ $(WINDRES) $(WINDRES_FLAGS) --input-format=rc --output-format=coff -DMING $? -o $@
++
++ clean: clean-custom
++ -$(DEL) $(OBJ) $(RES) $(DLL)
+*** ../vim-7.3.325/src/GvimExt/Make_ming.mak 2010-12-30 14:50:46.000000000 +0100
+--- src/GvimExt/Make_ming.mak 2011-09-30 16:47:09.000000000 +0200
+***************
+*** 1,6 ****
+ # Project: gvimext
+ # Generates gvimext.dll with gcc.
+! # Can be used for Cygwin and MingW (MingW ignores -mno-cygwin)
+ #
+ # Originally, the DLL base address was fixed: -Wl,--image-base=0x1C000000
+ # Now it is allocated dymanically by the linker by evaluating all DLLs
+--- 1,6 ----
+ # Project: gvimext
+ # Generates gvimext.dll with gcc.
+! # To be used with MingW.
+ #
+ # Originally, the DLL base address was fixed: -Wl,--image-base=0x1C000000
+ # Now it is allocated dymanically by the linker by evaluating all DLLs
+***************
+*** 31,42 ****
+ ifeq ($(CROSS),yes)
+ DEL = rm
+ ifeq ($(MINGWOLD),yes)
+! CXXFLAGS := -O2 -mno-cygwin -fvtable-thunks
+ else
+! CXXFLAGS := -O2 -mno-cygwin
+ endif
+ else
+! CXXFLAGS := -O2 -mno-cygwin
+ ifneq (sh.exe, $(SHELL))
+ DEL = rm
+ else
+--- 31,42 ----
+ ifeq ($(CROSS),yes)
+ DEL = rm
+ ifeq ($(MINGWOLD),yes)
+! CXXFLAGS := -O2 -fvtable-thunks
+ else
+! CXXFLAGS := -O2
+ endif
+ else
+! CXXFLAGS := -O2
+ ifneq (sh.exe, $(SHELL))
+ DEL = rm
+ else
+***************
+*** 75,78 ****
+
+ clean: clean-custom
+ -$(DEL) $(OBJ) $(RES) $(DLL)
+-
+--- 75,77 ----
+*** ../vim-7.3.325/src/Make_cyg.mak 2010-11-03 21:59:23.000000000 +0100
+--- src/Make_cyg.mak 2011-09-30 16:48:11.000000000 +0200
+***************
+*** 536,542 ****
+ $(MAKE) -C xxd -f Make_cyg.mak CC=$(CC) USEDLL=$(USEDLL)
+
+ GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
+! $(MAKE) -C GvimExt -f Make_ming.mak CROSS_COMPILE=$(CROSS_COMPILE)
+
+ vimrun.exe: vimrun.c
+ $(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIBS)
+--- 536,542 ----
+ $(MAKE) -C xxd -f Make_cyg.mak CC=$(CC) USEDLL=$(USEDLL)
+
+ GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
+! $(MAKE) -C GvimExt -f Make_cyg.mak CROSS_COMPILE=$(CROSS_COMPILE)
+
+ vimrun.exe: vimrun.c
+ $(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIBS)
+***************
+*** 565,571 ****
+ endif
+ -$(DEL) pathdef.c
+ $(MAKE) -C xxd -f Make_cyg.mak clean
+! $(MAKE) -C GvimExt -f Make_ming.mak clean
+
+ distclean: clean
+ -$(DEL) obj$(DIRSLASH)*.o
+--- 565,571 ----
+ endif
+ -$(DEL) pathdef.c
+ $(MAKE) -C xxd -f Make_cyg.mak clean
+! $(MAKE) -C GvimExt -f Make_cyg.mak clean
+
+ distclean: clean
+ -$(DEL) obj$(DIRSLASH)*.o
+*** ../vim-7.3.325/src/Make_ming.mak 2011-09-14 10:49:44.000000000 +0200
+--- src/Make_ming.mak 2011-09-30 16:48:11.000000000 +0200
+***************
+*** 641,647 ****
+ upx vim.exe
+
+ xxd/xxd.exe: xxd/xxd.c
+! $(MAKE) -C xxd -f Make_cyg.mak CC=$(CC)
+
+ GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
+ $(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE)
+--- 641,647 ----
+ upx vim.exe
+
+ xxd/xxd.exe: xxd/xxd.c
+! $(MAKE) -C xxd -f Make_ming.mak CC=$(CC)
+
+ GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
+ $(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE)
+***************
+*** 659,665 ****
+ -$(DEL) mzscheme_base.c
+ endif
+ $(MAKE) -C GvimExt -f Make_ming.mak clean
+! $(MAKE) -C xxd -f Make_cyg.mak clean
+
+ ###########################################################################
+ INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \
+--- 659,665 ----
+ -$(DEL) mzscheme_base.c
+ endif
+ $(MAKE) -C GvimExt -f Make_ming.mak clean
+! $(MAKE) -C xxd -f Make_ming.mak clean
+
+ ###########################################################################
+ INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \
+*** ../vim-7.3.325/src/xxd/Make_ming.mak 2011-09-30 16:55:18.000000000 +0200
+--- src/xxd/Make_ming.mak 2011-09-30 16:48:34.000000000 +0200
+***************
+*** 0 ****
+--- 1,28 ----
++ # The most simplistic Makefile, for MinGW gcc on MS-DOS
++
++ ifndef USEDLL
++ USEDLL = no
++ endif
++
++ ifeq (yes, $(USEDLL))
++ DEFINES =
++ LIBS = -lc
++ else
++ DEFINES =
++ LIBS =
++ endif
++
++ CC = gcc
++ CFLAGS = -O2 -Wall -DWIN32 $(DEFINES)
++
++ ifneq (sh.exe, $(SHELL))
++ DEL = rm
++ else
++ DEL = del
++ endif
++
++ xxd.exe: xxd.c
++ $(CC) $(CFLAGS) -s -o xxd.exe xxd.c $(LIBS)
++
++ clean:
++ -$(DEL) xxd.exe
+*** ../vim-7.3.325/Filelist 2011-06-12 20:36:00.000000000 +0200
+--- Filelist 2011-09-30 16:49:29.000000000 +0200
+***************
+*** 313,318 ****
+--- 313,319 ----
+ src/xxd/Make_bc5.mak \
+ src/xxd/Make_cyg.mak \
+ src/xxd/Make_djg.mak \
++ src/xxd/Make_ming.mak \
+ src/xxd/Make_mvc.mak \
+ nsis/gvim.nsi \
+ nsis/README.txt \
+*** ../vim-7.3.325/src/version.c 2011-09-30 16:39:41.000000000 +0200
+--- src/version.c 2011-09-30 16:49:57.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 326,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+33. You name your children Eudora, Mozilla and Dotcom.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.327 b/source/ap/vim/patches/7.3.327
new file mode 100644
index 000000000..1de5a9964
--- /dev/null
+++ b/source/ap/vim/patches/7.3.327
@@ -0,0 +1,64 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.327
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.327
+Problem: When jumping to a help tag a closed fold doesn't open.
+Solution: Save and restore KeyTyped. (Yasuhiro Matsumoto)
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.3.326/src/ex_cmds.c 2011-09-14 14:43:21.000000000 +0200
+--- src/ex_cmds.c 2011-09-30 17:24:03.000000000 +0200
+***************
+*** 5508,5513 ****
+--- 5508,5516 ----
+ int len;
+ char_u *lang;
+ #endif
++ #ifdef FEAT_FOLDING
++ int old_KeyTyped = KeyTyped;
++ #endif
+
+ if (eap != NULL)
+ {
+***************
+*** 5671,5676 ****
+--- 5674,5685 ----
+ if (!p_im)
+ restart_edit = 0; /* don't want insert mode in help file */
+
++ #ifdef FEAT_FOLDING
++ /* Restore KeyTyped, setting 'filetype=help' may reset it.
++ * It is needed for do_tag top open folds under the cursor. */
++ KeyTyped = old_KeyTyped;
++ #endif
++
+ if (tag != NULL)
+ do_tag(tag, DT_HELP, 1, FALSE, TRUE);
+
+*** ../vim-7.3.326/src/version.c 2011-09-30 16:56:00.000000000 +0200
+--- src/version.c 2011-09-30 17:24:17.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 327,
+ /**/
+
+--
+Q. What happens to programmers when they die?
+A: MS-Windows programmers are reinstalled. C++ programmers become undefined,
+ anyone who refers to them will die as well. Java programmers reincarnate
+ after being garbage collected.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.328 b/source/ap/vim/patches/7.3.328
new file mode 100644
index 000000000..24dad7022
--- /dev/null
+++ b/source/ap/vim/patches/7.3.328
@@ -0,0 +1,45 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.328
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.328
+Problem: When command line wraps the cursor may be displayed wrong when
+ there are multi-byte characters.
+Solution: Position the cursor before drawing the text. (Yasuhiro Matsumoto)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.3.327/src/ex_getln.c 2011-09-30 16:23:21.000000000 +0200
+--- src/ex_getln.c 2011-09-30 17:39:27.000000000 +0200
+***************
+*** 2870,2875 ****
+--- 2870,2876 ----
+ {
+ msg_no_more = TRUE;
+ i = cmdline_row;
++ cursorcmd();
+ draw_cmdline(ccline.cmdpos, ccline.cmdlen - ccline.cmdpos);
+ /* Avoid clearing the rest of the line too often. */
+ if (cmdline_row != i || ccline.overstrike)
+*** ../vim-7.3.327/src/version.c 2011-09-30 17:30:27.000000000 +0200
+--- src/version.c 2011-09-30 17:45:28.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 328,
+ /**/
+
+--
+To define recursion, we must first define recursion.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.329 b/source/ap/vim/patches/7.3.329
new file mode 100644
index 000000000..fe48eb52d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.329
@@ -0,0 +1,72 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.329
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.329
+Problem: When skipping over code from ":for" to ":endfor" get an error for
+ calling a dict function. (Yasuhiro Matsumoto)
+Solution: Ignore errors when skipping over :call command.
+Files: src/ex_docmd.c, src/eval.c
+
+
+*** ../vim-7.3.328/src/ex_docmd.c 2011-09-21 19:10:42.000000000 +0200
+--- src/ex_docmd.c 2011-09-30 17:59:51.000000000 +0200
+***************
+*** 371,381 ****
+ # define ex_endif ex_ni
+ # define ex_else ex_ni
+ # define ex_while ex_ni
+- # define ex_for ex_ni
+ # define ex_continue ex_ni
+ # define ex_break ex_ni
+ # define ex_endwhile ex_ni
+- # define ex_endfor ex_ni
+ # define ex_throw ex_ni
+ # define ex_try ex_ni
+ # define ex_catch ex_ni
+--- 371,379 ----
+*** ../vim-7.3.328/src/eval.c 2011-09-30 16:39:41.000000000 +0200
+--- src/eval.c 2011-09-30 18:29:58.000000000 +0200
+***************
+*** 3377,3383 ****
+ /* trans_function_name() doesn't work well when skipping, use eval0()
+ * instead to skip to any following command, e.g. for:
+ * :if 0 | call dict.foo().bar() | endif */
+! eval0(eap->arg, &rettv, &eap->nextcmd, FALSE);
+ return;
+ }
+
+--- 3377,3386 ----
+ /* trans_function_name() doesn't work well when skipping, use eval0()
+ * instead to skip to any following command, e.g. for:
+ * :if 0 | call dict.foo().bar() | endif */
+! ++emsg_skip;
+! if (eval0(eap->arg, &rettv, &eap->nextcmd, FALSE) != FAIL)
+! clear_tv(&rettv);
+! --emsg_skip;
+ return;
+ }
+
+*** ../vim-7.3.328/src/version.c 2011-09-30 17:46:14.000000000 +0200
+--- src/version.c 2011-09-30 18:32:27.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 329,
+ /**/
+
+--
+Have you heard about the new Beowulf cluster? It's so fast, it executes
+an infinite loop in 6 seconds.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.330 b/source/ap/vim/patches/7.3.330
new file mode 100644
index 000000000..ab828b94c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.330
@@ -0,0 +1,45 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.330
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.330
+Problem: When longjmp() is invoked if the X server gives an error the state
+ is not properly restored.
+Solution: Reset vgetc_busy. (Yukihiro Nakadaira)
+Files: src/main.c
+
+
+*** ../vim-7.3.329/src/main.c 2011-05-10 16:41:13.000000000 +0200
+--- src/main.c 2011-10-04 16:41:03.000000000 +0200
+***************
+*** 1009,1014 ****
+--- 1009,1015 ----
+ skip_redraw = FALSE;
+ RedrawingDisabled = 0;
+ no_wait_return = 0;
++ vgetc_busy = 0;
+ # ifdef FEAT_EVAL
+ emsg_skip = 0;
+ # endif
+*** ../vim-7.3.329/src/version.c 2011-09-30 18:35:49.000000000 +0200
+--- src/version.c 2011-10-04 16:42:23.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 330,
+ /**/
+
+--
+Just remember...if the world didn't suck, we'd all fall off.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.331 b/source/ap/vim/patches/7.3.331
new file mode 100644
index 000000000..ba63c1729
--- /dev/null
+++ b/source/ap/vim/patches/7.3.331
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.331
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.331
+Problem: "vit" selects wrong text when a tag name starts with the same text
+ as an outer tag name. (Ben Fritz)
+Solution: Add "\>" to the pattern to check for word boundary.
+Files: src/search.c
+
+
+*** ../vim-7.3.330/src/search.c 2011-07-15 13:21:24.000000000 +0200
+--- src/search.c 2011-10-04 16:54:08.000000000 +0200
+***************
+*** 3927,3933 ****
+ curwin->w_cursor = old_pos;
+ goto theend;
+ }
+! sprintf((char *)spat, "<%.*s\\%%(\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p);
+ sprintf((char *)epat, "</%.*s>\\c", len, p);
+
+ r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"",
+--- 3927,3933 ----
+ curwin->w_cursor = old_pos;
+ goto theend;
+ }
+! sprintf((char *)spat, "<%.*s\\>\\%%(\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p);
+ sprintf((char *)epat, "</%.*s>\\c", len, p);
+
+ r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"",
+*** ../vim-7.3.330/src/version.c 2011-10-04 16:43:49.000000000 +0200
+--- src/version.c 2011-10-04 16:59:47.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 331,
+ /**/
+
+--
+The 50-50-90 rule: Anytime you have a 50-50 chance of getting
+something right, there's a 90% probability you'll get it wrong.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.332 b/source/ap/vim/patches/7.3.332
new file mode 100644
index 000000000..ff0ab7c64
--- /dev/null
+++ b/source/ap/vim/patches/7.3.332
@@ -0,0 +1,206 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.332
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.332 (after 7.3.202)
+Problem: Indent after "public:" is not increased in C++ code. (Lech Lorens)
+Solution: Check for namespace after the regular checks. (partly by Martin
+ Gieseking)
+Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.331/src/misc1.c 2011-09-07 19:58:04.000000000 +0200
+--- src/misc1.c 2011-10-04 17:59:52.000000000 +0200
+***************
+*** 6389,6394 ****
+--- 6389,6395 ----
+ int lookfor_cpp_namespace = FALSE;
+ int cont_amount = 0; /* amount for continuation line */
+ int original_line_islabel;
++ int added_to_amount = 0;
+
+ for (options = curbuf->b_p_cino; *options; )
+ {
+***************
+*** 7216,7267 ****
+ else
+ amount += ind_continuation;
+ }
+! else if (lookfor_cpp_namespace)
+ {
+! if (curwin->w_cursor.lnum == ourscope)
+! continue;
+
+! if (curwin->w_cursor.lnum == 0
+! || curwin->w_cursor.lnum
+ < ourscope - FIND_NAMESPACE_LIM)
+! break;
+
+! l = ml_get_curline();
+
+! /*
+! * If we're in a comment now, skip to the start of the
+! * comment.
+! */
+! trypos = find_start_comment(ind_maxcomment);
+! if (trypos != NULL)
+! {
+! curwin->w_cursor.lnum = trypos->lnum + 1;
+! curwin->w_cursor.col = 0;
+! continue;
+! }
+!
+! /*
+! * Skip preprocessor directives and blank lines.
+! */
+! if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum))
+! continue;
+
+! if (cin_is_cpp_namespace(l))
+! {
+! amount += ind_cpp_namespace;
+! break;
+! }
+
+! if (cin_nocode(l))
+! continue;
+
+! }
+! else if (lookfor != LOOKFOR_TERM
+! && lookfor != LOOKFOR_CPP_BASECLASS)
+! {
+! amount = scope_amount;
+! if (theline[0] == '{')
+! amount += ind_open_extra;
+ }
+ break;
+ }
+--- 7217,7275 ----
+ else
+ amount += ind_continuation;
+ }
+! else
+ {
+! if (lookfor != LOOKFOR_TERM
+! && lookfor != LOOKFOR_CPP_BASECLASS)
+! {
+! amount = scope_amount;
+! if (theline[0] == '{')
+! {
+! amount += ind_open_extra;
+! added_to_amount = ind_open_extra;
+! }
+! }
+
+! if (lookfor_cpp_namespace)
+! {
+! /*
+! * Looking for C++ namespace, need to look further
+! * back.
+! */
+! if (curwin->w_cursor.lnum == ourscope)
+! continue;
+!
+! if (curwin->w_cursor.lnum == 0
+! || curwin->w_cursor.lnum
+ < ourscope - FIND_NAMESPACE_LIM)
+! break;
+
+! l = ml_get_curline();
+
+! /* If we're in a comment now, skip to the start of
+! * the comment. */
+! trypos = find_start_comment(ind_maxcomment);
+! if (trypos != NULL)
+! {
+! curwin->w_cursor.lnum = trypos->lnum + 1;
+! curwin->w_cursor.col = 0;
+! continue;
+! }
+
+! /* Skip preprocessor directives and blank lines. */
+! if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum))
+! continue;
+
+! /* Finally the actual check for "namespace". */
+! if (cin_is_cpp_namespace(l))
+! {
+! amount += ind_cpp_namespace - added_to_amount;
+! break;
+! }
+
+! if (cin_nocode(l))
+! continue;
+! }
+ }
+ break;
+ }
+*** ../vim-7.3.331/src/testdir/test3.in 2011-07-20 15:09:38.000000000 +0200
+--- src/testdir/test3.in 2011-10-04 17:45:20.000000000 +0200
+***************
+*** 1309,1314 ****
+--- 1309,1328 ----
+ };
+
+ STARTTEST
++ :set cino=(0,gs,hs
++ 2kdd]]=][
++ ENDTEST
++
++ class Foo : public Bar
++ {
++ public:
++ virtual void method1(void) = 0;
++ virtual void method2(int arg1,
++ int arg2,
++ int arg3) = 0;
++ };
++
++ STARTTEST
+ :set cino=+20
+ 2kdd]]=][
+ ENDTEST
+*** ../vim-7.3.331/src/testdir/test3.ok 2011-07-20 15:09:38.000000000 +0200
+--- src/testdir/test3.ok 2011-10-04 17:47:25.000000000 +0200
+***************
+*** 1190,1195 ****
+--- 1190,1205 ----
+ };
+
+
++ class Foo : public Bar
++ {
++ public:
++ virtual void method1(void) = 0;
++ virtual void method2(int arg1,
++ int arg2,
++ int arg3) = 0;
++ };
++
++
+ void
+ foo()
+ {
+*** ../vim-7.3.331/src/version.c 2011-10-04 17:00:13.000000000 +0200
+--- src/version.c 2011-10-04 18:02:17.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 332,
+ /**/
+
+--
+Latest survey shows that 3 out of 4 people make up 75% of the
+world's population.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.333 b/source/ap/vim/patches/7.3.333
new file mode 100644
index 000000000..974b0cda1
--- /dev/null
+++ b/source/ap/vim/patches/7.3.333
@@ -0,0 +1,245 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.333
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.333
+Problem: Using "." to repeat a Visual delete counts the size in bytes, not
+ characters. (Connor Lane Smith)
+Solution: Store the virtual column numbers instead of byte positions.
+Files: src/normal.c
+
+
+*** ../vim-7.3.332/src/normal.c 2011-07-15 17:51:30.000000000 +0200
+--- src/normal.c 2011-10-04 19:47:14.000000000 +0200
+***************
+*** 20,26 ****
+ */
+ static int resel_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */
+ static linenr_T resel_VIsual_line_count; /* number of lines */
+! static colnr_T resel_VIsual_col; /* nr of cols or end col */
+
+ static int restart_VIsual_select = 0;
+ #endif
+--- 20,26 ----
+ */
+ static int resel_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */
+ static linenr_T resel_VIsual_line_count; /* number of lines */
+! static colnr_T resel_VIsual_vcol; /* nr of cols or end col */
+
+ static int restart_VIsual_select = 0;
+ #endif
+***************
+*** 1436,1442 ****
+ /* The visual area is remembered for redo */
+ static int redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */
+ static linenr_T redo_VIsual_line_count; /* number of lines */
+! static colnr_T redo_VIsual_col; /* number of cols or end column */
+ static long redo_VIsual_count; /* count for Visual operator */
+ # ifdef FEAT_VIRTUALEDIT
+ int include_line_break = FALSE;
+--- 1436,1442 ----
+ /* The visual area is remembered for redo */
+ static int redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */
+ static linenr_T redo_VIsual_line_count; /* number of lines */
+! static colnr_T redo_VIsual_vcol; /* number of cols or end column */
+ static long redo_VIsual_count; /* count for Visual operator */
+ # ifdef FEAT_VIRTUALEDIT
+ int include_line_break = FALSE;
+***************
+*** 1549,1570 ****
+ #ifdef FEAT_VISUAL
+ if (redo_VIsual_busy)
+ {
+ oap->start = curwin->w_cursor;
+ curwin->w_cursor.lnum += redo_VIsual_line_count - 1;
+ if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count)
+ curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
+ VIsual_mode = redo_VIsual_mode;
+! if (VIsual_mode == 'v')
+ {
+! if (redo_VIsual_line_count <= 1)
+! curwin->w_cursor.col += redo_VIsual_col - 1;
+ else
+! curwin->w_cursor.col = redo_VIsual_col;
+! }
+! if (redo_VIsual_col == MAXCOL)
+! {
+! curwin->w_curswant = MAXCOL;
+! coladvance((colnr_T)MAXCOL);
+ }
+ cap->count0 = redo_VIsual_count;
+ if (redo_VIsual_count != 0)
+--- 1549,1579 ----
+ #ifdef FEAT_VISUAL
+ if (redo_VIsual_busy)
+ {
++ /* Redo of an operation on a Visual area. Use the same size from
++ * redo_VIsual_line_count and redo_VIsual_vcol. */
+ oap->start = curwin->w_cursor;
+ curwin->w_cursor.lnum += redo_VIsual_line_count - 1;
+ if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count)
+ curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
+ VIsual_mode = redo_VIsual_mode;
+! if (redo_VIsual_vcol == MAXCOL || VIsual_mode == 'v')
+ {
+! if (VIsual_mode == 'v')
+! {
+! if (redo_VIsual_line_count <= 1)
+! {
+! validate_virtcol();
+! curwin->w_curswant =
+! curwin->w_virtcol + redo_VIsual_vcol - 1;
+! }
+! else
+! curwin->w_curswant = redo_VIsual_vcol;
+! }
+ else
+! {
+! curwin->w_curswant = MAXCOL;
+! }
+! coladvance(curwin->w_curswant);
+ }
+ cap->count0 = redo_VIsual_count;
+ if (redo_VIsual_count != 0)
+***************
+*** 1710,1716 ****
+ }
+ }
+ else if (redo_VIsual_busy)
+! oap->end_vcol = oap->start_vcol + redo_VIsual_col - 1;
+ /*
+ * Correct oap->end.col and oap->start.col to be the
+ * upper-left and lower-right corner of the block area.
+--- 1719,1725 ----
+ }
+ }
+ else if (redo_VIsual_busy)
+! oap->end_vcol = oap->start_vcol + redo_VIsual_vcol - 1;
+ /*
+ * Correct oap->end.col and oap->start.col to be the
+ * upper-left and lower-right corner of the block area.
+***************
+*** 1735,1747 ****
+ */
+ resel_VIsual_mode = VIsual_mode;
+ if (curwin->w_curswant == MAXCOL)
+! resel_VIsual_col = MAXCOL;
+! else if (VIsual_mode == Ctrl_V)
+! resel_VIsual_col = oap->end_vcol - oap->start_vcol + 1;
+! else if (oap->line_count > 1)
+! resel_VIsual_col = oap->end.col;
+ else
+! resel_VIsual_col = oap->end.col - oap->start.col + 1;
+ resel_VIsual_line_count = oap->line_count;
+ }
+
+--- 1744,1765 ----
+ */
+ resel_VIsual_mode = VIsual_mode;
+ if (curwin->w_curswant == MAXCOL)
+! resel_VIsual_vcol = MAXCOL;
+ else
+! {
+! if (VIsual_mode != Ctrl_V)
+! getvvcol(curwin, &(oap->end),
+! NULL, NULL, &oap->end_vcol);
+! if (VIsual_mode == Ctrl_V || oap->line_count <= 1)
+! {
+! if (VIsual_mode != Ctrl_V)
+! getvvcol(curwin, &(oap->start),
+! &oap->start_vcol, NULL, NULL);
+! resel_VIsual_vcol = oap->end_vcol - oap->start_vcol + 1;
+! }
+! else
+! resel_VIsual_vcol = oap->end_vcol;
+! }
+ resel_VIsual_line_count = oap->line_count;
+ }
+
+***************
+*** 1769,1775 ****
+ if (!redo_VIsual_busy)
+ {
+ redo_VIsual_mode = resel_VIsual_mode;
+! redo_VIsual_col = resel_VIsual_col;
+ redo_VIsual_line_count = resel_VIsual_line_count;
+ redo_VIsual_count = cap->count0;
+ }
+--- 1787,1793 ----
+ if (!redo_VIsual_busy)
+ {
+ redo_VIsual_mode = resel_VIsual_mode;
+! redo_VIsual_vcol = resel_VIsual_vcol;
+ redo_VIsual_line_count = resel_VIsual_line_count;
+ redo_VIsual_count = cap->count0;
+ }
+***************
+*** 7631,7642 ****
+ if (VIsual_mode == 'v')
+ {
+ if (resel_VIsual_line_count <= 1)
+! curwin->w_cursor.col += resel_VIsual_col * cap->count0 - 1;
+ else
+! curwin->w_cursor.col = resel_VIsual_col;
+! check_cursor_col();
+ }
+! if (resel_VIsual_col == MAXCOL)
+ {
+ curwin->w_curswant = MAXCOL;
+ coladvance((colnr_T)MAXCOL);
+--- 7649,7664 ----
+ if (VIsual_mode == 'v')
+ {
+ if (resel_VIsual_line_count <= 1)
+! {
+! validate_virtcol();
+! curwin->w_curswant = curwin->w_virtcol
+! + resel_VIsual_vcol * cap->count0 - 1;
+! }
+ else
+! curwin->w_curswant = resel_VIsual_vcol;
+! coladvance(curwin->w_curswant);
+ }
+! if (resel_VIsual_vcol == MAXCOL)
+ {
+ curwin->w_curswant = MAXCOL;
+ coladvance((colnr_T)MAXCOL);
+***************
+*** 7645,7651 ****
+ {
+ validate_virtcol();
+ curwin->w_curswant = curwin->w_virtcol
+! + resel_VIsual_col * cap->count0 - 1;
+ coladvance(curwin->w_curswant);
+ }
+ else
+--- 7667,7673 ----
+ {
+ validate_virtcol();
+ curwin->w_curswant = curwin->w_virtcol
+! + resel_VIsual_vcol * cap->count0 - 1;
+ coladvance(curwin->w_curswant);
+ }
+ else
+*** ../vim-7.3.332/src/version.c 2011-10-04 18:03:43.000000000 +0200
+--- src/version.c 2011-10-04 21:05:44.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 333,
+ /**/
+
+--
+It was recently discovered that research causes cancer in rats.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.334 b/source/ap/vim/patches/7.3.334
new file mode 100644
index 000000000..85d5b16d2
--- /dev/null
+++ b/source/ap/vim/patches/7.3.334
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.334
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.334
+Problem: Latest MingW about XSUBPP referencing itself. (Gongqian Li)
+Solution: Rename the first use to XSUBPPTRY.
+Files: src/Make_ming.mak
+
+
+*** ../vim-7.3.333/src/Make_ming.mak 2011-09-30 16:56:00.000000000 +0200
+--- src/Make_ming.mak 2011-10-09 14:23:06.000000000 +0200
+***************
+*** 108,117 ****
+ # on NT, it's here:
+ PERLLIB=$(PERL)/lib
+ PERLLIBS=$(PERLLIB)/Core
+! XSUBPP=$(PERLLIB)/ExtUtils/xsubpp
+! XSUBPP_EXISTS=$(shell perl -e "print 1 unless -e '$(XSUBPP)'")
+ ifeq "$(XSUBPP_EXISTS)" ""
+! XSUBPP=perl $(XSUBPP)
+ else
+ XSUBPP=xsubpp
+ endif
+--- 108,117 ----
+ # on NT, it's here:
+ PERLLIB=$(PERL)/lib
+ PERLLIBS=$(PERLLIB)/Core
+! XSUBPPTRY=$(PERLLIB)/ExtUtils/xsubpp
+! XSUBPP_EXISTS=$(shell perl -e "print 1 unless -e '$(XSUBPPTRY)'")
+ ifeq "$(XSUBPP_EXISTS)" ""
+! XSUBPP=perl $(XSUBPPTRY)
+ else
+ XSUBPP=xsubpp
+ endif
+*** ../vim-7.3.333/src/version.c 2011-10-04 21:22:40.000000000 +0200
+--- src/version.c 2011-10-12 14:10:20.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 334,
+ /**/
+
+--
+Q: Should I clean my house or work on Vim?
+A: Whatever contains more bugs.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.335 b/source/ap/vim/patches/7.3.335
new file mode 100644
index 000000000..dc1cc5605
--- /dev/null
+++ b/source/ap/vim/patches/7.3.335
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.335
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.335
+Problem: When 'imdisable' is reset from an autocommand in Insert mode it
+ doesn't take effect.
+Solution: Call im_set_active() in Insert mode. (Taro Muraoka)
+Files: src/option.c
+
+
+*** ../vim-7.3.334/src/option.c 2011-09-21 13:40:13.000000000 +0200
+--- src/option.c 2011-10-12 14:09:46.000000000 +0200
+***************
+*** 7806,7811 ****
+--- 7806,7815 ----
+ /* Only de-activate it here, it will be enabled when changing mode. */
+ if (p_imdisable)
+ im_set_active(FALSE);
++ else if (State & INSERT)
++ /* When the option is set from an autocommand, it may need to take
++ * effect right away. */
++ im_set_active(curbuf->b_p_iminsert == B_IMODE_IM);
+ }
+ #endif
+
+*** ../vim-7.3.334/src/version.c 2011-10-12 14:11:43.000000000 +0200
+--- src/version.c 2011-10-12 16:56:30.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 335,
+ /**/
+
+--
+Time is money. Especially if you make clocks.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.336 b/source/ap/vim/patches/7.3.336
new file mode 100644
index 000000000..902f578c3
--- /dev/null
+++ b/source/ap/vim/patches/7.3.336
@@ -0,0 +1,1100 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.336
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.336
+Problem: When a tags file specifies an encoding different from 'enc' it
+ may hang and using a pattern doesn't work.
+Solution: Convert the whole line. Continue reading the header after the
+ SORT tag. Add test83. (Yukihiro Nakadaira)
+Files: src/tag.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak,
+ src/testdir/Make_ming.mak, src/testdir/Make_os2.mak,
+ src/testdir/Make_vms.mms, src/testdir/Makefile,
+ src/testdir/test83-tags2, src/testdir/test83-tags3,
+ src/testdir/test83.in, src/testdir/test83.ok
+
+
+*** ../vim-7.3.335/src/tag.c 2011-04-11 21:35:03.000000000 +0200
+--- src/tag.c 2011-10-12 19:51:04.000000000 +0200
+***************
+*** 1277,1282 ****
+--- 1277,1283 ----
+ {
+ FILE *fp;
+ char_u *lbuf; /* line buffer */
++ int lbuf_size = LSIZE; /* length of lbuf */
+ char_u *tag_fname; /* name of tag file */
+ tagname_T tn; /* info for get_tagfname() */
+ int first_file; /* trying first tag file */
+***************
+*** 1291,1296 ****
+--- 1292,1298 ----
+ char_u *s;
+ int i;
+ #ifdef FEAT_TAG_BINS
++ int tag_file_sorted = NUL; /* !_TAG_FILE_SORTED value */
+ struct tag_search_info /* Binary search file offsets */
+ {
+ off_t low_offset; /* offset for first char of first line that
+***************
+*** 1360,1372 ****
+ char_u *saved_pat = NULL; /* copy of pat[] */
+ #endif
+
+- /* Use two sets of variables for the pattern: "orgpat" holds the values
+- * for the original pattern and "convpat" converted from 'encoding' to
+- * encoding of the tags file. "pats" point to either one of these. */
+- pat_T *pats;
+ pat_T orgpat; /* holds unconverted pattern info */
+ #ifdef FEAT_MBYTE
+- pat_T convpat; /* holds converted pattern info */
+ vimconv_T vimconv;
+ #endif
+
+--- 1362,1369 ----
+***************
+*** 1390,1396 ****
+
+ help_save = curbuf->b_help;
+ orgpat.pat = pat;
+- pats = &orgpat;
+ #ifdef FEAT_MBYTE
+ vimconv.vc_type = CONV_NONE;
+ #endif
+--- 1387,1392 ----
+***************
+*** 1398,1404 ****
+ /*
+ * Allocate memory for the buffers that are used
+ */
+! lbuf = alloc(LSIZE);
+ tag_fname = alloc(MAXPATHL + 1);
+ #ifdef FEAT_EMACS_TAGS
+ ebuf = alloc(LSIZE);
+--- 1394,1400 ----
+ /*
+ * Allocate memory for the buffers that are used
+ */
+! lbuf = alloc(lbuf_size);
+ tag_fname = alloc(MAXPATHL + 1);
+ #ifdef FEAT_EMACS_TAGS
+ ebuf = alloc(LSIZE);
+***************
+*** 1424,1453 ****
+ if (help_only) /* want tags from help file */
+ curbuf->b_help = TRUE; /* will be restored later */
+
+! pats->len = (int)STRLEN(pat);
+ #ifdef FEAT_MULTI_LANG
+ if (curbuf->b_help)
+ {
+ /* When "@ab" is specified use only the "ab" language, otherwise
+ * search all languages. */
+! if (pats->len > 3 && pat[pats->len - 3] == '@'
+! && ASCII_ISALPHA(pat[pats->len - 2])
+! && ASCII_ISALPHA(pat[pats->len - 1]))
+ {
+! saved_pat = vim_strnsave(pat, pats->len - 3);
+ if (saved_pat != NULL)
+ {
+! help_lang_find = &pat[pats->len - 2];
+! pats->pat = saved_pat;
+! pats->len -= 3;
+ }
+ }
+ }
+ #endif
+! if (p_tl != 0 && pats->len > p_tl) /* adjust for 'taglength' */
+! pats->len = p_tl;
+
+! prepare_pats(pats, has_re);
+
+ #ifdef FEAT_TAG_BINS
+ /* This is only to avoid a compiler warning for using search_info
+--- 1420,1449 ----
+ if (help_only) /* want tags from help file */
+ curbuf->b_help = TRUE; /* will be restored later */
+
+! orgpat.len = (int)STRLEN(pat);
+ #ifdef FEAT_MULTI_LANG
+ if (curbuf->b_help)
+ {
+ /* When "@ab" is specified use only the "ab" language, otherwise
+ * search all languages. */
+! if (orgpat.len > 3 && pat[orgpat.len - 3] == '@'
+! && ASCII_ISALPHA(pat[orgpat.len - 2])
+! && ASCII_ISALPHA(pat[orgpat.len - 1]))
+ {
+! saved_pat = vim_strnsave(pat, orgpat.len - 3);
+ if (saved_pat != NULL)
+ {
+! help_lang_find = &pat[orgpat.len - 2];
+! orgpat.pat = saved_pat;
+! orgpat.len -= 3;
+ }
+ }
+ }
+ #endif
+! if (p_tl != 0 && orgpat.len > p_tl) /* adjust for 'taglength' */
+! orgpat.len = p_tl;
+
+! prepare_pats(&orgpat, has_re);
+
+ #ifdef FEAT_TAG_BINS
+ /* This is only to avoid a compiler warning for using search_info
+***************
+*** 1466,1478 ****
+ * Only ignore case when TAG_NOIC not used or 'ignorecase' set.
+ */
+ #ifdef FEAT_TAG_BINS
+! pats->regmatch.rm_ic = ((p_ic || !noic)
+! && (findall || pats->headlen == 0 || !p_tbs));
+ for (round = 1; round <= 2; ++round)
+ {
+! linear = (pats->headlen == 0 || !p_tbs || round == 2);
+ #else
+! pats->regmatch.rm_ic = (p_ic || !noic);
+ #endif
+
+ /*
+--- 1462,1474 ----
+ * Only ignore case when TAG_NOIC not used or 'ignorecase' set.
+ */
+ #ifdef FEAT_TAG_BINS
+! orgpat.regmatch.rm_ic = ((p_ic || !noic)
+! && (findall || orgpat.headlen == 0 || !p_tbs));
+ for (round = 1; round <= 2; ++round)
+ {
+! linear = (orgpat.headlen == 0 || !p_tbs || round == 2);
+ #else
+! orgpat.regmatch.rm_ic = (p_ic || !noic);
+ #endif
+
+ /*
+***************
+*** 1701,1706 ****
+--- 1697,1732 ----
+ }
+ line_read_in:
+
++ #ifdef FEAT_MBYTE
++ if (vimconv.vc_type != CONV_NONE)
++ {
++ char_u *conv_line;
++ int len;
++
++ /* Convert every line. Converting the pattern from 'enc' to
++ * the tags file encoding doesn't work, because characters are
++ * not recognized. */
++ conv_line = string_convert(&vimconv, lbuf, NULL);
++ if (conv_line != NULL)
++ {
++ /* Copy or swap lbuf and conv_line. */
++ len = (int)STRLEN(conv_line) + 1;
++ if (len > lbuf_size)
++ {
++ vim_free(lbuf);
++ lbuf = conv_line;
++ lbuf_size = len;
++ }
++ else
++ {
++ STRCPY(lbuf, conv_line);
++ vim_free(conv_line);
++ }
++ }
++ }
++ #endif
++
++
+ #ifdef FEAT_EMACS_TAGS
+ /*
+ * Emacs tags line with CTRL-L: New file name on next line.
+***************
+*** 1770,1775 ****
+--- 1796,1828 ----
+ */
+ if (state == TS_START)
+ {
++ if (STRNCMP(lbuf, "!_TAG_", 6) <= 0)
++ {
++ /*
++ * Read header line.
++ */
++ #ifdef FEAT_TAG_BINS
++ if (STRNCMP(lbuf, "!_TAG_FILE_SORTED\t", 18) == 0)
++ tag_file_sorted = lbuf[18];
++ #endif
++ #ifdef FEAT_MBYTE
++ if (STRNCMP(lbuf, "!_TAG_FILE_ENCODING\t", 20) == 0)
++ {
++ /* Prepare to convert every line from the specified
++ * encoding to 'encoding'. */
++ for (p = lbuf + 20; *p > ' ' && *p < 127; ++p)
++ ;
++ *p = NUL;
++ convert_setup(&vimconv, lbuf + 20, p_enc);
++ }
++ #endif
++
++ /* Read the next line. Unrecognized flags are ignored. */
++ continue;
++ }
++
++ /* Headers ends. */
++
+ #ifdef FEAT_TAG_BINS
+ /*
+ * When there is no tag head, or ignoring case, need to do a
+***************
+*** 1786,1809 ****
+ if (linear)
+ # endif
+ state = TS_LINEAR;
+! else if (STRNCMP(lbuf, "!_TAG_", 6) > 0)
+ state = TS_BINARY;
+! else if (STRNCMP(lbuf, "!_TAG_FILE_SORTED\t", 18) == 0)
+! {
+! /* Check sorted flag */
+! if (lbuf[18] == '1')
+ state = TS_BINARY;
+! else if (lbuf[18] == '2')
+! {
+! state = TS_BINARY;
+! sortic = TRUE;
+! pats->regmatch.rm_ic = (p_ic || !noic);
+! }
+! else
+! state = TS_LINEAR;
+ }
+
+! if (state == TS_BINARY && pats->regmatch.rm_ic && !sortic)
+ {
+ /* binary search won't work for ignoring case, use linear
+ * search. */
+--- 1839,1858 ----
+ if (linear)
+ # endif
+ state = TS_LINEAR;
+! else if (tag_file_sorted == NUL)
+ state = TS_BINARY;
+! else if (tag_file_sorted == '1')
+ state = TS_BINARY;
+! else if (tag_file_sorted == '2')
+! {
+! state = TS_BINARY;
+! sortic = TRUE;
+! orgpat.regmatch.rm_ic = (p_ic || !noic);
+ }
++ else
++ state = TS_LINEAR;
+
+! if (state == TS_BINARY && orgpat.regmatch.rm_ic && !sortic)
+ {
+ /* binary search won't work for ignoring case, use linear
+ * search. */
+***************
+*** 1843,1882 ****
+ #endif
+ }
+
+- #ifdef FEAT_MBYTE
+- if (lbuf[0] == '!' && pats == &orgpat
+- && STRNCMP(lbuf, "!_TAG_FILE_ENCODING\t", 20) == 0)
+- {
+- /* Convert the search pattern from 'encoding' to the
+- * specified encoding. */
+- for (p = lbuf + 20; *p > ' ' && *p < 127; ++p)
+- ;
+- *p = NUL;
+- convert_setup(&vimconv, p_enc, lbuf + 20);
+- if (vimconv.vc_type != CONV_NONE)
+- {
+- convpat.pat = string_convert(&vimconv, pats->pat, NULL);
+- if (convpat.pat != NULL)
+- {
+- pats = &convpat;
+- pats->len = (int)STRLEN(pats->pat);
+- prepare_pats(pats, has_re);
+- pats->regmatch.rm_ic = orgpat.regmatch.rm_ic;
+- }
+- }
+-
+- /* Prepare for converting a match the other way around. */
+- convert_setup(&vimconv, lbuf + 20, p_enc);
+- continue;
+- }
+- #endif
+-
+ /*
+ * Figure out where the different strings are in this line.
+ * For "normal" tags: Do a quick check if the tag matches.
+ * This speeds up tag searching a lot!
+ */
+! if (pats->headlen
+ #ifdef FEAT_EMACS_TAGS
+ && !is_etag
+ #endif
+--- 1892,1903 ----
+ #endif
+ }
+
+ /*
+ * Figure out where the different strings are in this line.
+ * For "normal" tags: Do a quick check if the tag matches.
+ * This speeds up tag searching a lot!
+ */
+! if (orgpat.headlen
+ #ifdef FEAT_EMACS_TAGS
+ && !is_etag
+ #endif
+***************
+*** 1933,1941 ****
+ cmplen = (int)(tagp.tagname_end - tagp.tagname);
+ if (p_tl != 0 && cmplen > p_tl) /* adjust for 'taglength' */
+ cmplen = p_tl;
+! if (has_re && pats->headlen < cmplen)
+! cmplen = pats->headlen;
+! else if (state == TS_LINEAR && pats->headlen != cmplen)
+ continue;
+
+ #ifdef FEAT_TAG_BINS
+--- 1954,1962 ----
+ cmplen = (int)(tagp.tagname_end - tagp.tagname);
+ if (p_tl != 0 && cmplen > p_tl) /* adjust for 'taglength' */
+ cmplen = p_tl;
+! if (has_re && orgpat.headlen < cmplen)
+! cmplen = orgpat.headlen;
+! else if (state == TS_LINEAR && orgpat.headlen != cmplen)
+ continue;
+
+ #ifdef FEAT_TAG_BINS
+***************
+*** 1954,1963 ****
+ * Compare the current tag with the searched tag.
+ */
+ if (sortic)
+! tagcmp = tag_strnicmp(tagp.tagname, pats->head,
+ (size_t)cmplen);
+ else
+! tagcmp = STRNCMP(tagp.tagname, pats->head, cmplen);
+
+ /*
+ * A match with a shorter tag means to search forward.
+--- 1975,1984 ----
+ * Compare the current tag with the searched tag.
+ */
+ if (sortic)
+! tagcmp = tag_strnicmp(tagp.tagname, orgpat.head,
+ (size_t)cmplen);
+ else
+! tagcmp = STRNCMP(tagp.tagname, orgpat.head, cmplen);
+
+ /*
+ * A match with a shorter tag means to search forward.
+***************
+*** 1965,1973 ****
+ */
+ if (tagcmp == 0)
+ {
+! if (cmplen < pats->headlen)
+ tagcmp = -1;
+! else if (cmplen > pats->headlen)
+ tagcmp = 1;
+ }
+
+--- 1986,1994 ----
+ */
+ if (tagcmp == 0)
+ {
+! if (cmplen < orgpat.headlen)
+ tagcmp = -1;
+! else if (cmplen > orgpat.headlen)
+ tagcmp = 1;
+ }
+
+***************
+*** 2011,2017 ****
+ }
+ else if (state == TS_SKIP_BACK)
+ {
+! if (MB_STRNICMP(tagp.tagname, pats->head, cmplen) != 0)
+ state = TS_STEP_FORWARD;
+ else
+ /* Have to skip back more. Restore the curr_offset
+--- 2032,2038 ----
+ }
+ else if (state == TS_SKIP_BACK)
+ {
+! if (MB_STRNICMP(tagp.tagname, orgpat.head, cmplen) != 0)
+ state = TS_STEP_FORWARD;
+ else
+ /* Have to skip back more. Restore the curr_offset
+***************
+*** 2021,2027 ****
+ }
+ else if (state == TS_STEP_FORWARD)
+ {
+! if (MB_STRNICMP(tagp.tagname, pats->head, cmplen) != 0)
+ {
+ if ((off_t)ftell(fp) > search_info.match_offset)
+ break; /* past last match */
+--- 2042,2048 ----
+ }
+ else if (state == TS_STEP_FORWARD)
+ {
+! if (MB_STRNICMP(tagp.tagname, orgpat.head, cmplen) != 0)
+ {
+ if ((off_t)ftell(fp) > search_info.match_offset)
+ break; /* past last match */
+***************
+*** 2032,2038 ****
+ else
+ #endif
+ /* skip this match if it can't match */
+! if (MB_STRNICMP(tagp.tagname, pats->head, cmplen) != 0)
+ continue;
+
+ /*
+--- 2053,2059 ----
+ else
+ #endif
+ /* skip this match if it can't match */
+! if (MB_STRNICMP(tagp.tagname, orgpat.head, cmplen) != 0)
+ continue;
+
+ /*
+***************
+*** 2083,2123 ****
+ if (p_tl != 0 && cmplen > p_tl) /* adjust for 'taglength' */
+ cmplen = p_tl;
+ /* if tag length does not match, don't try comparing */
+! if (pats->len != cmplen)
+ match = FALSE;
+ else
+ {
+! if (pats->regmatch.rm_ic)
+ {
+! match = (MB_STRNICMP(tagp.tagname, pats->pat, cmplen) == 0);
+ if (match)
+! match_no_ic = (STRNCMP(tagp.tagname, pats->pat,
+ cmplen) == 0);
+ }
+ else
+! match = (STRNCMP(tagp.tagname, pats->pat, cmplen) == 0);
+ }
+
+ /*
+ * Has a regexp: Also find tags matching regexp.
+ */
+ match_re = FALSE;
+! if (!match && pats->regmatch.regprog != NULL)
+ {
+ int cc;
+
+ cc = *tagp.tagname_end;
+ *tagp.tagname_end = NUL;
+! match = vim_regexec(&pats->regmatch, tagp.tagname, (colnr_T)0);
+ if (match)
+ {
+! matchoff = (int)(pats->regmatch.startp[0] - tagp.tagname);
+! if (pats->regmatch.rm_ic)
+ {
+! pats->regmatch.rm_ic = FALSE;
+! match_no_ic = vim_regexec(&pats->regmatch, tagp.tagname,
+ (colnr_T)0);
+! pats->regmatch.rm_ic = TRUE;
+ }
+ }
+ *tagp.tagname_end = cc;
+--- 2104,2144 ----
+ if (p_tl != 0 && cmplen > p_tl) /* adjust for 'taglength' */
+ cmplen = p_tl;
+ /* if tag length does not match, don't try comparing */
+! if (orgpat.len != cmplen)
+ match = FALSE;
+ else
+ {
+! if (orgpat.regmatch.rm_ic)
+ {
+! match = (MB_STRNICMP(tagp.tagname, orgpat.pat, cmplen) == 0);
+ if (match)
+! match_no_ic = (STRNCMP(tagp.tagname, orgpat.pat,
+ cmplen) == 0);
+ }
+ else
+! match = (STRNCMP(tagp.tagname, orgpat.pat, cmplen) == 0);
+ }
+
+ /*
+ * Has a regexp: Also find tags matching regexp.
+ */
+ match_re = FALSE;
+! if (!match && orgpat.regmatch.regprog != NULL)
+ {
+ int cc;
+
+ cc = *tagp.tagname_end;
+ *tagp.tagname_end = NUL;
+! match = vim_regexec(&orgpat.regmatch, tagp.tagname, (colnr_T)0);
+ if (match)
+ {
+! matchoff = (int)(orgpat.regmatch.startp[0] - tagp.tagname);
+! if (orgpat.regmatch.rm_ic)
+ {
+! orgpat.regmatch.rm_ic = FALSE;
+! match_no_ic = vim_regexec(&orgpat.regmatch, tagp.tagname,
+ (colnr_T)0);
+! orgpat.regmatch.rm_ic = TRUE;
+ }
+ }
+ *tagp.tagname_end = cc;
+***************
+*** 2174,2180 ****
+ else
+ mtt = MT_GL_OTH;
+ }
+! if (pats->regmatch.rm_ic && !match_no_ic)
+ mtt += MT_IC_OFF;
+ if (match_re)
+ mtt += MT_RE_OFF;
+--- 2195,2201 ----
+ else
+ mtt = MT_GL_OTH;
+ }
+! if (orgpat.regmatch.rm_ic && !match_no_ic)
+ mtt += MT_IC_OFF;
+ if (match_re)
+ mtt += MT_RE_OFF;
+***************
+*** 2187,2221 ****
+ */
+ if (ga_grow(&ga_match[mtt], 1) == OK)
+ {
+- #ifdef FEAT_MBYTE
+- char_u *conv_line = NULL;
+- char_u *lbuf_line = lbuf;
+-
+- if (vimconv.vc_type != CONV_NONE)
+- {
+- /* Convert the tag line from the encoding of the tags
+- * file to 'encoding'. Then parse the line again. */
+- conv_line = string_convert(&vimconv, lbuf, NULL);
+- if (conv_line != NULL)
+- {
+- if (parse_tag_line(conv_line,
+- #ifdef FEAT_EMACS_TAGS
+- is_etag,
+- #endif
+- &tagp) == OK)
+- lbuf_line = conv_line;
+- else
+- /* doesn't work, go back to unconverted line. */
+- (void)parse_tag_line(lbuf,
+- #ifdef FEAT_EMACS_TAGS
+- is_etag,
+- #endif
+- &tagp);
+- }
+- }
+- #else
+- # define lbuf_line lbuf
+- #endif
+ if (help_only)
+ {
+ #ifdef FEAT_MULTI_LANG
+--- 2208,2213 ----
+***************
+*** 2307,2313 ****
+ * without Emacs tags: <mtt><tag_fname><NUL><lbuf>
+ */
+ len = (int)STRLEN(tag_fname)
+! + (int)STRLEN(lbuf_line) + 3;
+ #ifdef FEAT_EMACS_TAGS
+ if (is_etag)
+ len += (int)STRLEN(ebuf) + 1;
+--- 2299,2305 ----
+ * without Emacs tags: <mtt><tag_fname><NUL><lbuf>
+ */
+ len = (int)STRLEN(tag_fname)
+! + (int)STRLEN(lbuf) + 3;
+ #ifdef FEAT_EMACS_TAGS
+ if (is_etag)
+ len += (int)STRLEN(ebuf) + 1;
+***************
+*** 2337,2343 ****
+ else
+ *s++ = NUL;
+ #endif
+! STRCPY(s, lbuf_line);
+ }
+ }
+
+--- 2329,2335 ----
+ else
+ *s++ = NUL;
+ #endif
+! STRCPY(s, lbuf);
+ }
+ }
+
+***************
+*** 2373,2382 ****
+ else
+ vim_free(mfp);
+ }
+- #ifdef FEAT_MBYTE
+- /* Note: this makes the values in "tagp" invalid! */
+- vim_free(conv_line);
+- #endif
+ }
+ else /* Out of memory! Just forget about the rest. */
+ {
+--- 2365,2370 ----
+***************
+*** 2415,2433 ****
+ }
+ #endif
+ #ifdef FEAT_MBYTE
+- if (pats == &convpat)
+- {
+- /* Go back from converted pattern to original pattern. */
+- vim_free(pats->pat);
+- vim_free(pats->regmatch.regprog);
+- orgpat.regmatch.rm_ic = pats->regmatch.rm_ic;
+- pats = &orgpat;
+- }
+ if (vimconv.vc_type != CONV_NONE)
+ convert_setup(&vimconv, NULL, NULL);
+ #endif
+
+ #ifdef FEAT_TAG_BINS
+ if (sort_error)
+ {
+ EMSG2(_("E432: Tags file not sorted: %s"), tag_fname);
+--- 2403,2414 ----
+ }
+ #endif
+ #ifdef FEAT_MBYTE
+ if (vimconv.vc_type != CONV_NONE)
+ convert_setup(&vimconv, NULL, NULL);
+ #endif
+
+ #ifdef FEAT_TAG_BINS
++ tag_file_sorted = NUL;
+ if (sort_error)
+ {
+ EMSG2(_("E432: Tags file not sorted: %s"), tag_fname);
+***************
+*** 2461,2473 ****
+ #ifdef FEAT_TAG_BINS
+ /* stop searching when already did a linear search, or when TAG_NOIC
+ * used, and 'ignorecase' not set or already did case-ignore search */
+! if (stop_searching || linear || (!p_ic && noic) || pats->regmatch.rm_ic)
+ break;
+ # ifdef FEAT_CSCOPE
+ if (use_cscope)
+ break;
+ # endif
+! pats->regmatch.rm_ic = TRUE; /* try another time while ignoring case */
+ }
+ #endif
+
+--- 2442,2454 ----
+ #ifdef FEAT_TAG_BINS
+ /* stop searching when already did a linear search, or when TAG_NOIC
+ * used, and 'ignorecase' not set or already did case-ignore search */
+! if (stop_searching || linear || (!p_ic && noic) || orgpat.regmatch.rm_ic)
+ break;
+ # ifdef FEAT_CSCOPE
+ if (use_cscope)
+ break;
+ # endif
+! orgpat.regmatch.rm_ic = TRUE; /* try another time while ignoring case */
+ }
+ #endif
+
+***************
+*** 2480,2486 ****
+
+ findtag_end:
+ vim_free(lbuf);
+! vim_free(pats->regmatch.regprog);
+ vim_free(tag_fname);
+ #ifdef FEAT_EMACS_TAGS
+ vim_free(ebuf);
+--- 2461,2467 ----
+
+ findtag_end:
+ vim_free(lbuf);
+! vim_free(orgpat.regmatch.regprog);
+ vim_free(tag_fname);
+ #ifdef FEAT_EMACS_TAGS
+ vim_free(ebuf);
+*** ../vim-7.3.335/src/testdir/Make_amiga.mak 2011-07-15 21:16:54.000000000 +0200
+--- src/testdir/Make_amiga.mak 2011-10-12 19:21:00.000000000 +0200
+***************
+*** 29,35 ****
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+ test76.out test77.out test78.out test79.out test80.out \
+! test81.out test82.out
+
+ .SUFFIXES: .in .out
+
+--- 29,35 ----
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+ test76.out test77.out test78.out test79.out test80.out \
+! test81.out test82.out test83.out
+
+ .SUFFIXES: .in .out
+
+***************
+*** 131,133 ****
+--- 131,134 ----
+ test80.out: test80.in
+ test81.out: test81.in
+ test82.out: test82.in
++ test83.out: test83.in
+*** ../vim-7.3.335/src/testdir/Make_dos.mak 2011-07-15 21:16:54.000000000 +0200
+--- src/testdir/Make_dos.mak 2011-10-12 17:39:03.000000000 +0200
+***************
+*** 29,35 ****
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out test82.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 29,35 ----
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out test82.out test83.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.3.335/src/testdir/Make_ming.mak 2011-07-15 21:16:54.000000000 +0200
+--- src/testdir/Make_ming.mak 2011-10-12 17:39:03.000000000 +0200
+***************
+*** 49,55 ****
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out test82.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 49,55 ----
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out test82.out test83.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.3.335/src/testdir/Make_os2.mak 2011-07-15 21:16:54.000000000 +0200
+--- src/testdir/Make_os2.mak 2011-10-12 17:39:03.000000000 +0200
+***************
+*** 29,35 ****
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+ test76.out test77.out test78.out test79.out test80.out \
+! test81.out test82.out
+
+ .SUFFIXES: .in .out
+
+--- 29,35 ----
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+ test76.out test77.out test78.out test79.out test80.out \
+! test81.out test82.out test83.out
+
+ .SUFFIXES: .in .out
+
+*** ../vim-7.3.335/src/testdir/Make_vms.mms 2011-07-15 21:16:54.000000000 +0200
+--- src/testdir/Make_vms.mms 2011-10-12 17:39:03.000000000 +0200
+***************
+*** 76,82 ****
+ test66.out test67.out test68.out test69.out \
+ test71.out test72.out test74.out test75.out test76.out \
+ test77.out test78.out test79.out test80.out test81.out \
+! test82.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+--- 76,82 ----
+ test66.out test67.out test68.out test69.out \
+ test71.out test72.out test74.out test75.out test76.out \
+ test77.out test78.out test79.out test80.out test81.out \
+! test82.out test83.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+*** ../vim-7.3.335/src/testdir/Makefile 2011-07-15 21:16:54.000000000 +0200
+--- src/testdir/Makefile 2011-10-12 17:39:03.000000000 +0200
+***************
+*** 26,32 ****
+ test64.out test65.out test66.out test67.out test68.out \
+ test69.out test70.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out test82.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 26,32 ----
+ test64.out test65.out test66.out test67.out test68.out \
+ test69.out test70.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out test82.out test83.out
+
+ SCRIPTS_GUI = test16.out
+
+***************
+*** 72,78 ****
+ fi \
+ else echo $* NO OUTPUT >>test.log; \
+ fi"
+! -rm -rf X* test.ok viminfo
+
+ test49.out: test49.vim
+
+--- 72,78 ----
+ fi \
+ else echo $* NO OUTPUT >>test.log; \
+ fi"
+! # -rm -rf X* test.ok viminfo
+
+ test49.out: test49.vim
+
+*** ../vim-7.3.335/src/testdir/test83-tags2 2011-10-12 19:49:38.000000000 +0200
+--- src/testdir/test83-tags2 2011-10-12 19:34:15.000000000 +0200
+***************
+*** 0 ****
+--- 1,2 ----
++ !_TAG_FILE_ENCODING cp932 //
++ ‚`‚a‚b Xtags2.txt /‚`‚a‚b
+*** ../vim-7.3.335/src/testdir/test83-tags3 2011-10-12 19:49:38.000000000 +0200
+--- src/testdir/test83-tags3 2011-10-12 19:35:42.000000000 +0200
+***************
+*** 0 ****
+--- 1,102 ----
++ !_TAG_FILE_SORTED 1 //
++ !_TAG_FILE_ENCODING cp932 //
++ abc1 Xtags3.txt /‚`‚a‚b
++ abc2 Xtags3.txt /‚`‚a‚b
++ abc3 Xtags3.txt /‚`‚a‚b
++ abc4 Xtags3.txt /‚`‚a‚b
++ abc5 Xtags3.txt /‚`‚a‚b
++ abc6 Xtags3.txt /‚`‚a‚b
++ abc7 Xtags3.txt /‚`‚a‚b
++ abc8 Xtags3.txt /‚`‚a‚b
++ abc9 Xtags3.txt /‚`‚a‚b
++ abc10 Xtags3.txt /‚`‚a‚b
++ abc11 Xtags3.txt /‚`‚a‚b
++ abc12 Xtags3.txt /‚`‚a‚b
++ abc13 Xtags3.txt /‚`‚a‚b
++ abc14 Xtags3.txt /‚`‚a‚b
++ abc15 Xtags3.txt /‚`‚a‚b
++ abc16 Xtags3.txt /‚`‚a‚b
++ abc17 Xtags3.txt /‚`‚a‚b
++ abc18 Xtags3.txt /‚`‚a‚b
++ abc19 Xtags3.txt /‚`‚a‚b
++ abc20 Xtags3.txt /‚`‚a‚b
++ abc21 Xtags3.txt /‚`‚a‚b
++ abc22 Xtags3.txt /‚`‚a‚b
++ abc23 Xtags3.txt /‚`‚a‚b
++ abc24 Xtags3.txt /‚`‚a‚b
++ abc25 Xtags3.txt /‚`‚a‚b
++ abc26 Xtags3.txt /‚`‚a‚b
++ abc27 Xtags3.txt /‚`‚a‚b
++ abc28 Xtags3.txt /‚`‚a‚b
++ abc29 Xtags3.txt /‚`‚a‚b
++ abc30 Xtags3.txt /‚`‚a‚b
++ abc31 Xtags3.txt /‚`‚a‚b
++ abc32 Xtags3.txt /‚`‚a‚b
++ abc33 Xtags3.txt /‚`‚a‚b
++ abc34 Xtags3.txt /‚`‚a‚b
++ abc35 Xtags3.txt /‚`‚a‚b
++ abc36 Xtags3.txt /‚`‚a‚b
++ abc37 Xtags3.txt /‚`‚a‚b
++ abc38 Xtags3.txt /‚`‚a‚b
++ abc39 Xtags3.txt /‚`‚a‚b
++ abc40 Xtags3.txt /‚`‚a‚b
++ abc41 Xtags3.txt /‚`‚a‚b
++ abc42 Xtags3.txt /‚`‚a‚b
++ abc43 Xtags3.txt /‚`‚a‚b
++ abc44 Xtags3.txt /‚`‚a‚b
++ abc45 Xtags3.txt /‚`‚a‚b
++ abc46 Xtags3.txt /‚`‚a‚b
++ abc47 Xtags3.txt /‚`‚a‚b
++ abc48 Xtags3.txt /‚`‚a‚b
++ abc49 Xtags3.txt /‚`‚a‚b
++ abc50 Xtags3.txt /‚`‚a‚b
++ abc51 Xtags3.txt /‚`‚a‚b
++ abc52 Xtags3.txt /‚`‚a‚b
++ abc53 Xtags3.txt /‚`‚a‚b
++ abc54 Xtags3.txt /‚`‚a‚b
++ abc55 Xtags3.txt /‚`‚a‚b
++ abc56 Xtags3.txt /‚`‚a‚b
++ abc57 Xtags3.txt /‚`‚a‚b
++ abc58 Xtags3.txt /‚`‚a‚b
++ abc59 Xtags3.txt /‚`‚a‚b
++ abc60 Xtags3.txt /‚`‚a‚b
++ abc61 Xtags3.txt /‚`‚a‚b
++ abc62 Xtags3.txt /‚`‚a‚b
++ abc63 Xtags3.txt /‚`‚a‚b
++ abc64 Xtags3.txt /‚`‚a‚b
++ abc65 Xtags3.txt /‚`‚a‚b
++ abc66 Xtags3.txt /‚`‚a‚b
++ abc67 Xtags3.txt /‚`‚a‚b
++ abc68 Xtags3.txt /‚`‚a‚b
++ abc69 Xtags3.txt /‚`‚a‚b
++ abc70 Xtags3.txt /‚`‚a‚b
++ abc71 Xtags3.txt /‚`‚a‚b
++ abc72 Xtags3.txt /‚`‚a‚b
++ abc73 Xtags3.txt /‚`‚a‚b
++ abc74 Xtags3.txt /‚`‚a‚b
++ abc75 Xtags3.txt /‚`‚a‚b
++ abc76 Xtags3.txt /‚`‚a‚b
++ abc77 Xtags3.txt /‚`‚a‚b
++ abc78 Xtags3.txt /‚`‚a‚b
++ abc79 Xtags3.txt /‚`‚a‚b
++ abc80 Xtags3.txt /‚`‚a‚b
++ abc81 Xtags3.txt /‚`‚a‚b
++ abc82 Xtags3.txt /‚`‚a‚b
++ abc83 Xtags3.txt /‚`‚a‚b
++ abc84 Xtags3.txt /‚`‚a‚b
++ abc85 Xtags3.txt /‚`‚a‚b
++ abc86 Xtags3.txt /‚`‚a‚b
++ abc87 Xtags3.txt /‚`‚a‚b
++ abc88 Xtags3.txt /‚`‚a‚b
++ abc89 Xtags3.txt /‚`‚a‚b
++ abc90 Xtags3.txt /‚`‚a‚b
++ abc91 Xtags3.txt /‚`‚a‚b
++ abc92 Xtags3.txt /‚`‚a‚b
++ abc93 Xtags3.txt /‚`‚a‚b
++ abc94 Xtags3.txt /‚`‚a‚b
++ abc95 Xtags3.txt /‚`‚a‚b
++ abc96 Xtags3.txt /‚`‚a‚b
++ abc97 Xtags3.txt /‚`‚a‚b
++ abc98 Xtags3.txt /‚`‚a‚b
++ abc99 Xtags3.txt /‚`‚a‚b
++ abc100 Xtags3.txt /‚`‚a‚b
+*** ../vim-7.3.335/src/testdir/test83.in 2011-10-12 19:49:38.000000000 +0200
+--- src/testdir/test83.in 2011-10-12 19:40:47.000000000 +0200
+***************
+*** 0 ****
+--- 1,76 ----
++ Tests for tag search with !_TAG_FILE_ENCODING.
++
++ STARTTEST
++ :so mbyte.vim
++ :if !has('iconv')
++ : e! test.ok
++ : w! test.out
++ : qa!
++ :endif
++ :set enc=utf8
++
++ :/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt
++ :/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt
++ :/^text for tags3$/,/^text for tags3$/+1w! Xtags3.txt
++ :/^tags1$/+1,/^tags1-end$/-1w! Xtags1
++
++ ggdG
++
++ :call setline('.', 'Results of test83')
++
++ :" case1:
++ :new
++ :set tags=Xtags1
++ :let v:errmsg = ''
++ :tag abcdefghijklmnopqrs
++ :if v:errmsg =~ 'E426:' || getline('.') != 'abcdefghijklmnopqrs'
++ : close
++ : put ='case1: failed'
++ :else
++ : close
++ : put ='case1: ok'
++ :endif
++
++ :" case2:
++ :new
++ :set tags=test83-tags2
++ :let v:errmsg = ''
++ :tag /.BC
++ :if v:errmsg =~ 'E426:' || getline('.') != 'ABC'
++ : close
++ : put ='case2: failed'
++ :else
++ : close
++ : put ='case2: ok'
++ :endif
++
++ :" case3:
++ :new
++ :set tags=test83-tags3
++ :let v:errmsg = ''
++ :tag abc50
++ :if v:errmsg =~ 'E426:' || getline('.') != 'ABC'
++ : close
++ : put ='case3: failed'
++ :else
++ : close
++ : put ='case3: ok'
++ :endif
++ :close
++
++ :wq! test.out
++ ENDTEST
++
++ text for tags1
++ abcdefghijklmnopqrs
++
++ text for tags2
++ ABC
++
++ text for tags3
++ ABC
++
++ tags1
++ !_TAG_FILE_ENCODING utf-8 //
++ abcdefghijklmnopqrs Xtags1.txt /abcdefghijklmnopqrs
++ tags1-end
+*** ../vim-7.3.335/src/testdir/test83.ok 2011-10-12 19:49:38.000000000 +0200
+--- src/testdir/test83.ok 2011-10-12 17:39:03.000000000 +0200
+***************
+*** 0 ****
+--- 1,4 ----
++ Results of test83
++ case1: ok
++ case2: ok
++ case3: ok
+*** ../vim-7.3.335/src/version.c 2011-10-12 16:57:07.000000000 +0200
+--- src/version.c 2011-10-12 19:45:46.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 336,
+ /**/
+
+
+--
+hundred-and-one symptoms of being an internet addict:
+62. If your doorbell rings, you think that new mail has arrived. And then
+ you're disappointed that it's only someone at the door.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.337 b/source/ap/vim/patches/7.3.337
new file mode 100644
index 000000000..a2aeb04fe
--- /dev/null
+++ b/source/ap/vim/patches/7.3.337
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.337
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.337 (after 7.3.295)
+Problem: Screen doesn't update after resizing the xterm until a character
+ is typed.
+Solution: When the select call is interrupted check do_resize. (Taylor
+ Hedberg)
+Files: src/os_unix.c
+
+
+*** ../vim-7.3.336/src/os_unix.c 2011-09-08 23:24:09.000000000 +0200
+--- src/os_unix.c 2011-10-12 20:57:15.000000000 +0200
+***************
+*** 5146,5156 ****
+--- 5146,5163 ----
+ # endif
+ # ifdef EINTR
+ if (ret == -1 && errno == EINTR)
++ {
++ /* Check whether window has been resized, EINTR may be caused by
++ * SIGWINCH. */
++ if (do_resize)
++ handle_resize();
++
+ /* Interrupted by a signal, need to try again. We ignore msec
+ * here, because we do want to check even after a timeout if
+ * characters are available. Needed for reading output of an
+ * external command after the process has finished. */
+ goto select_eintr;
++ }
+ # endif
+ # ifdef __TANDEM
+ if (ret == -1 && errno == ENOTSUP)
+*** ../vim-7.3.336/src/version.c 2011-10-12 19:53:31.000000000 +0200
+--- src/version.c 2011-10-12 21:03:47.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 337,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+64. The remote to the T.V. is missing...and you don't even care.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.338 b/source/ap/vim/patches/7.3.338
new file mode 100644
index 000000000..f273212ac
--- /dev/null
+++ b/source/ap/vim/patches/7.3.338
@@ -0,0 +1,100 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.338
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.338
+Problem: Using getchar() in an expression mapping doesn't work well.
+Solution: Don't save and restore the typeahead. (James Vega)
+Files: src/getchar.c, src/testdir/test34.ok
+
+
+*** ../vim-7.3.337/src/getchar.c 2011-08-17 20:33:18.000000000 +0200
+--- src/getchar.c 2011-10-12 21:53:27.000000000 +0200
+***************
+*** 2460,2486 ****
+
+ /*
+ * Handle ":map <expr>": evaluate the {rhs} as an
+! * expression. Save and restore the typeahead so that
+! * getchar() can be used. Also save and restore the
+! * command line for "normal :".
+ */
+ if (mp->m_expr)
+ {
+- tasave_T tabuf;
+ int save_vgetc_busy = vgetc_busy;
+
+! save_typeahead(&tabuf);
+! if (tabuf.typebuf_valid)
+! {
+! vgetc_busy = 0;
+! save_m_keys = vim_strsave(mp->m_keys);
+! save_m_str = vim_strsave(mp->m_str);
+! s = eval_map_expr(save_m_str, NUL);
+! vgetc_busy = save_vgetc_busy;
+! }
+! else
+! s = NULL;
+! restore_typeahead(&tabuf);
+ }
+ else
+ #endif
+--- 2460,2477 ----
+
+ /*
+ * Handle ":map <expr>": evaluate the {rhs} as an
+! * expression. Also save and restore the command line
+! * for "normal :".
+ */
+ if (mp->m_expr)
+ {
+ int save_vgetc_busy = vgetc_busy;
+
+! vgetc_busy = 0;
+! save_m_keys = vim_strsave(mp->m_keys);
+! save_m_str = vim_strsave(mp->m_str);
+! s = eval_map_expr(save_m_str, NUL);
+! vgetc_busy = save_vgetc_busy;
+ }
+ else
+ #endif
+*** ../vim-7.3.337/src/testdir/test34.ok 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test34.ok 2011-10-12 21:59:39.000000000 +0200
+***************
+*** 1,5 ****
+ xxx4asdf fail nop ok 9 333
+! XX111XX
+ ---222---
+ 1. one
+ 2. two
+--- 1,5 ----
+ xxx4asdf fail nop ok 9 333
+! XX111-XX
+ ---222---
+ 1. one
+ 2. two
+*** ../vim-7.3.337/src/version.c 2011-10-12 21:04:15.000000000 +0200
+--- src/version.c 2011-10-12 21:20:31.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 338,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+65. The last time you looked at the clock it was 11:30pm, and in what
+ seems like only a few seconds later, your sister runs past you to
+ catch her 7am school bus.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.339 b/source/ap/vim/patches/7.3.339
new file mode 100644
index 000000000..f108ad6e0
--- /dev/null
+++ b/source/ap/vim/patches/7.3.339
@@ -0,0 +1,57 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.339
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.339
+Problem: "make shadow" doesn't link all test files.
+Solution: Add a line in Makefile and Filelist.
+Files: src/Makefile, Filelist
+
+
+*** ../vim-7.3.338/Filelist 2011-09-30 16:56:00.000000000 +0200
+--- Filelist 2011-10-16 14:00:42.000000000 +0200
+***************
+*** 81,86 ****
+--- 81,87 ----
+ src/testdir/test[0-9]*.ok \
+ src/testdir/test49.vim \
+ src/testdir/test60.vim \
++ src/testdir/test83-tags? \
+ src/proto.h \
+ src/proto/blowfish.pro \
+ src/proto/buffer.pro \
+*** ../vim-7.3.338/src/Makefile 2011-05-19 13:40:47.000000000 +0200
+--- src/Makefile 2011-10-16 13:59:40.000000000 +0200
+***************
+*** 2328,2333 ****
+--- 2328,2334 ----
+ ../../testdir/vimrc.unix \
+ ../../testdir/*.in \
+ ../../testdir/*.vim \
++ ../../testdir/test83-tags? \
+ ../../testdir/*.ok .
+
+ # Link needed for doing "make install" in a shadow directory.
+*** ../vim-7.3.338/src/version.c 2011-10-12 22:02:07.000000000 +0200
+--- src/version.c 2011-10-20 16:34:28.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 339,
+ /**/
+
+--
+From "know your smileys":
+ :-O>-o Smiley American tourist (note big mouth and camera)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.340 b/source/ap/vim/patches/7.3.340
new file mode 100644
index 000000000..fb0b8423d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.340
@@ -0,0 +1,62 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.340
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.340
+Problem: When 'verbosefile' is set ftplugof.vim can give an error.
+Solution: Only remove filetypeplugin autocommands when they exist. (Yasuhiro
+ Matsumoto)
+Files: runtime/ftplugof.vim
+
+
+*** ../vim-7.3.339/runtime/ftplugof.vim 2010-08-15 21:57:11.000000000 +0200
+--- runtime/ftplugof.vim 2011-10-20 16:51:00.000000000 +0200
+***************
+*** 1,11 ****
+ " Vim support file to switch off loading plugins for file types
+ "
+ " Maintainer: Bram Moolenaar <Bram@vim.org>
+! " Last Change: 2002 Apr 04
+
+ if exists("did_load_ftplugin")
+ unlet did_load_ftplugin
+ endif
+
+! " Remove all autocommands in the filetypeplugin group
+! silent! au! filetypeplugin *
+--- 1,13 ----
+ " Vim support file to switch off loading plugins for file types
+ "
+ " Maintainer: Bram Moolenaar <Bram@vim.org>
+! " Last Change: 2011 Oct 20
+
+ if exists("did_load_ftplugin")
+ unlet did_load_ftplugin
+ endif
+
+! " Remove all autocommands in the filetypeplugin group, if any exist.
+! if exists("#filetypeplugin")
+! silent! au! filetypeplugin *
+! endif
+*** ../vim-7.3.339/src/version.c 2011-10-20 16:35:25.000000000 +0200
+--- src/version.c 2011-10-20 18:01:18.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 340,
+ /**/
+
+--
+How many light bulbs does it take to change a person?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.341 b/source/ap/vim/patches/7.3.341
new file mode 100644
index 000000000..6ea386031
--- /dev/null
+++ b/source/ap/vim/patches/7.3.341
@@ -0,0 +1,360 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.341
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.341
+Problem: Local help files are only listed in help.txt, not in translated
+ help files.
+Solution: Also find translated help files. (Yasuhiro Matsumoto)
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.3.340/src/ex_cmds.c 2011-09-30 17:30:27.000000000 +0200
+--- src/ex_cmds.c 2011-10-20 17:39:45.000000000 +0200
+***************
+*** 5982,5987 ****
+--- 5982,5988 ----
+ char_u *line;
+ int in_example = FALSE;
+ int len;
++ char_u *fname;
+ char_u *p;
+ char_u *rt;
+ int mustfree;
+***************
+*** 6028,6151 ****
+ }
+
+ /*
+! * In the "help.txt" file, add the locally added help files.
+! * This uses the very first line in the help file.
+ */
+! if (fnamecmp(gettail(curbuf->b_fname), "help.txt") == 0)
+ {
+ for (lnum = 1; lnum < curbuf->b_ml.ml_line_count; ++lnum)
+ {
+ line = ml_get_buf(curbuf, lnum, FALSE);
+! if (strstr((char *)line, "*local-additions*") != NULL)
+ {
+! /* Go through all directories in 'runtimepath', skipping
+! * $VIMRUNTIME. */
+! p = p_rtp;
+! while (*p != NUL)
+ {
+! copy_option_part(&p, NameBuff, MAXPATHL, ",");
+! mustfree = FALSE;
+! rt = vim_getenv((char_u *)"VIMRUNTIME", &mustfree);
+! if (fullpathcmp(rt, NameBuff, FALSE) != FPC_SAME)
+! {
+! int fcount;
+! char_u **fnames;
+! FILE *fd;
+! char_u *s;
+! int fi;
+ #ifdef FEAT_MBYTE
+! vimconv_T vc;
+! char_u *cp;
+ #endif
+
+! /* Find all "doc/ *.txt" files in this directory. */
+! add_pathsep(NameBuff);
+! STRCAT(NameBuff, "doc/*.txt");
+! if (gen_expand_wildcards(1, &NameBuff, &fcount,
+! &fnames, EW_FILE|EW_SILENT) == OK
+! && fcount > 0)
+ {
+! for (fi = 0; fi < fcount; ++fi)
+ {
+! fd = mch_fopen((char *)fnames[fi], "r");
+! if (fd != NULL)
+ {
+! vim_fgets(IObuff, IOSIZE, fd);
+! if (IObuff[0] == '*'
+! && (s = vim_strchr(IObuff + 1, '*'))
+! != NULL)
+! {
+! #ifdef FEAT_MBYTE
+! int this_utf = MAYBE;
+ #endif
+! /* Change tag definition to a
+! * reference and remove <CR>/<NL>. */
+! IObuff[0] = '|';
+! *s = '|';
+! while (*s != NUL)
+! {
+! if (*s == '\r' || *s == '\n')
+! *s = NUL;
+ #ifdef FEAT_MBYTE
+! /* The text is utf-8 when a byte
+! * above 127 is found and no
+! * illegal byte sequence is found.
+! */
+! if (*s >= 0x80 && this_utf != FALSE)
+! {
+! int l;
+!
+! this_utf = TRUE;
+! l = utf_ptr2len(s);
+! if (l == 1)
+! this_utf = FALSE;
+! s += l - 1;
+! }
+ #endif
+! ++s;
+! }
+ #ifdef FEAT_MBYTE
+! /* The help file is latin1 or utf-8;
+! * conversion to the current
+! * 'encoding' may be required. */
+! vc.vc_type = CONV_NONE;
+! convert_setup(&vc, (char_u *)(
+! this_utf == TRUE ? "utf-8"
+! : "latin1"), p_enc);
+! if (vc.vc_type == CONV_NONE)
+! /* No conversion needed. */
+! cp = IObuff;
+! else
+ {
+! /* Do the conversion. If it fails
+! * use the unconverted text. */
+! cp = string_convert(&vc, IObuff,
+! NULL);
+! if (cp == NULL)
+! cp = IObuff;
+ }
+! convert_setup(&vc, NULL, NULL);
+
+! ml_append(lnum, cp, (colnr_T)0, FALSE);
+! if (cp != IObuff)
+! vim_free(cp);
+ #else
+! ml_append(lnum, IObuff, (colnr_T)0,
+! FALSE);
+ #endif
+! ++lnum;
+! }
+! fclose(fd);
+ }
+ }
+- FreeWild(fcount, fnames);
+ }
+ }
+- if (mustfree)
+- vim_free(rt);
+ }
+! break;
+ }
+ }
+ }
+ }
+--- 6029,6215 ----
+ }
+
+ /*
+! * In the "help.txt" and "help.abx" file, add the locally added help
+! * files. This uses the very first line in the help file.
+ */
+! fname = gettail(curbuf->b_fname);
+! if (fnamecmp(fname, "help.txt") == 0
+! #ifdef FEAT_MULTI_LANG
+! || (fnamencmp(fname, "help.", 5) == 0
+! && ASCII_ISALPHA(fname[5])
+! && ASCII_ISALPHA(fname[6])
+! && TOLOWER_ASC(fname[7]) == 'x'
+! && fname[8] == NUL)
+! #endif
+! )
+ {
+ for (lnum = 1; lnum < curbuf->b_ml.ml_line_count; ++lnum)
+ {
+ line = ml_get_buf(curbuf, lnum, FALSE);
+! if (strstr((char *)line, "*local-additions*") == NULL)
+! continue;
+!
+! /* Go through all directories in 'runtimepath', skipping
+! * $VIMRUNTIME. */
+! p = p_rtp;
+! while (*p != NUL)
+ {
+! copy_option_part(&p, NameBuff, MAXPATHL, ",");
+! mustfree = FALSE;
+! rt = vim_getenv((char_u *)"VIMRUNTIME", &mustfree);
+! if (fullpathcmp(rt, NameBuff, FALSE) != FPC_SAME)
+ {
+! int fcount;
+! char_u **fnames;
+! FILE *fd;
+! char_u *s;
+! int fi;
+ #ifdef FEAT_MBYTE
+! vimconv_T vc;
+! char_u *cp;
+ #endif
+
+! /* Find all "doc/ *.txt" files in this directory. */
+! add_pathsep(NameBuff);
+! #ifdef FEAT_MULTI_LANG
+! STRCAT(NameBuff, "doc/*.??[tx]");
+! #else
+! STRCAT(NameBuff, "doc/*.txt");
+! #endif
+! if (gen_expand_wildcards(1, &NameBuff, &fcount,
+! &fnames, EW_FILE|EW_SILENT) == OK
+! && fcount > 0)
+! {
+! #ifdef FEAT_MULTI_LANG
+! int i1;
+! int i2;
+! char_u *f1;
+! char_u *f2;
+! char_u *t1;
+! char_u *e1;
+! char_u *e2;
+!
+! /* If foo.abx is found use it instead of foo.txt in
+! * the same directory. */
+! for (i1 = 0; i1 < fcount; ++i1)
+ {
+! for (i2 = 0; i2 < fcount; ++i2)
+ {
+! if (i1 == i2)
+! continue;
+! if (fnames[i1] == NULL || fnames[i2] == NULL)
+! continue;
+! f1 = fnames[i1];
+! f2 = fnames[i2];
+! t1 = gettail(f1);
+! if (fnamencmp(f1, f2, t1 - f1) != 0)
+! continue;
+! e1 = vim_strrchr(t1, '.');
+! e2 = vim_strrchr(gettail(f2), '.');
+! if (e1 == NUL || e2 == NUL)
+! continue;
+! if (fnamecmp(e1, ".txt") != 0
+! && fnamecmp(e1, fname + 4) != 0)
+ {
+! /* Not .txt and not .abx, remove it. */
+! vim_free(fnames[i1]);
+! fnames[i1] = NULL;
+! continue;
+! }
+! if (fnamencmp(f1, f2, e1 - f1) != 0)
+! continue;
+! if (fnamecmp(e1, ".txt") == 0
+! && fnamecmp(e2, fname + 4) == 0)
+! {
+! /* use .abx instead of .txt */
+! vim_free(fnames[i1]);
+! fnames[i1] = NULL;
+! }
+! }
+! }
+ #endif
+! for (fi = 0; fi < fcount; ++fi)
+! {
+! if (fnames[fi] == NULL)
+! continue;
+! fd = mch_fopen((char *)fnames[fi], "r");
+! if (fd != NULL)
+! {
+! vim_fgets(IObuff, IOSIZE, fd);
+! if (IObuff[0] == '*'
+! && (s = vim_strchr(IObuff + 1, '*'))
+! != NULL)
+! {
+ #ifdef FEAT_MBYTE
+! int this_utf = MAYBE;
+ #endif
+! /* Change tag definition to a
+! * reference and remove <CR>/<NL>. */
+! IObuff[0] = '|';
+! *s = '|';
+! while (*s != NUL)
+! {
+! if (*s == '\r' || *s == '\n')
+! *s = NUL;
+ #ifdef FEAT_MBYTE
+! /* The text is utf-8 when a byte
+! * above 127 is found and no
+! * illegal byte sequence is found.
+! */
+! if (*s >= 0x80 && this_utf != FALSE)
+ {
+! int l;
+!
+! this_utf = TRUE;
+! l = utf_ptr2len(s);
+! if (l == 1)
+! this_utf = FALSE;
+! s += l - 1;
+ }
+! #endif
+! ++s;
+! }
+! #ifdef FEAT_MBYTE
+! /* The help file is latin1 or utf-8;
+! * conversion to the current
+! * 'encoding' may be required. */
+! vc.vc_type = CONV_NONE;
+! convert_setup(&vc, (char_u *)(
+! this_utf == TRUE ? "utf-8"
+! : "latin1"), p_enc);
+! if (vc.vc_type == CONV_NONE)
+! /* No conversion needed. */
+! cp = IObuff;
+! else
+! {
+! /* Do the conversion. If it fails
+! * use the unconverted text. */
+! cp = string_convert(&vc, IObuff,
+! NULL);
+! if (cp == NULL)
+! cp = IObuff;
+! }
+! convert_setup(&vc, NULL, NULL);
+
+! ml_append(lnum, cp, (colnr_T)0, FALSE);
+! if (cp != IObuff)
+! vim_free(cp);
+ #else
+! ml_append(lnum, IObuff, (colnr_T)0,
+! FALSE);
+ #endif
+! ++lnum;
+ }
++ fclose(fd);
+ }
+ }
++ FreeWild(fcount, fnames);
+ }
+ }
+! if (mustfree)
+! vim_free(rt);
+ }
++ break;
+ }
+ }
+ }
+*** ../vim-7.3.340/src/version.c 2011-10-20 18:12:27.000000000 +0200
+--- src/version.c 2011-10-20 18:13:46.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 341,
+ /**/
+
+--
+From "know your smileys":
+ :-)-O Smiling doctor with stethoscope
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.342 b/source/ap/vim/patches/7.3.342
new file mode 100644
index 000000000..2deb7e385
--- /dev/null
+++ b/source/ap/vim/patches/7.3.342
@@ -0,0 +1,93 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.342
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.342
+Problem: Code not in Vim style.
+Solution: Fix the style. (Elias Diem)
+Files: src/os_amiga.c, src/os_mac_conv.c, src/os_win16.c
+
+
+*** ../vim-7.3.341/src/os_amiga.c 2010-08-15 21:57:27.000000000 +0200
+--- src/os_amiga.c 2011-10-20 18:19:45.000000000 +0200
+***************
+*** 1022,1028 ****
+
+ /* insure longword alignment */
+ #ifdef __amigaos4__
+! if(!(id = AllocDosObject(DOS_INFODATA, 0)))
+ goto out;
+ #else
+ id = (struct InfoData *)(((long)id_a + 3L) & ~3L);
+--- 1022,1028 ----
+
+ /* insure longword alignment */
+ #ifdef __amigaos4__
+! if (!(id = AllocDosObject(DOS_INFODATA, 0)))
+ goto out;
+ #else
+ id = (struct InfoData *)(((long)id_a + 3L) & ~3L);
+*** ../vim-7.3.341/src/os_mac_conv.c 2011-06-13 02:03:55.000000000 +0200
+--- src/os_mac_conv.c 2011-10-20 18:19:45.000000000 +0200
+***************
+*** 77,83 ****
+ *unconvlenp = 0;
+ cfstr = CFStringCreateWithBytes(NULL, ptr, len, from, 0);
+
+! if(cfstr == NULL)
+ fprintf(stderr, "Encoding failed\n");
+ /* When conversion failed, try excluding bytes from the end, helps when
+ * there is an incomplete byte sequence. Only do up to 6 bytes to avoid
+--- 77,83 ----
+ *unconvlenp = 0;
+ cfstr = CFStringCreateWithBytes(NULL, ptr, len, from, 0);
+
+! if (cfstr == NULL)
+ fprintf(stderr, "Encoding failed\n");
+ /* When conversion failed, try excluding bytes from the end, helps when
+ * there is an incomplete byte sequence. Only do up to 6 bytes to avoid
+*** ../vim-7.3.341/src/os_win16.c 2010-12-17 20:23:56.000000000 +0100
+--- src/os_win16.c 2011-10-20 18:19:45.000000000 +0200
+***************
+*** 243,251 ****
+ /* Wait for the command to terminate before continuing */
+ while (GetModuleUsage((HINSTANCE)h_module) > 0 && again )
+ {
+! while( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) && again )
+ {
+! if(msg.message == WM_QUIT)
+
+ {
+ PostQuitMessage(msg.wParam);
+--- 243,251 ----
+ /* Wait for the command to terminate before continuing */
+ while (GetModuleUsage((HINSTANCE)h_module) > 0 && again )
+ {
+! while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) && again)
+ {
+! if (msg.message == WM_QUIT)
+
+ {
+ PostQuitMessage(msg.wParam);
+*** ../vim-7.3.341/src/version.c 2011-10-20 18:17:38.000000000 +0200
+--- src/version.c 2011-10-20 18:21:43.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 342,
+ /**/
+
+--
+You are only young once, but you can stay immature indefinitely.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.343 b/source/ap/vim/patches/7.3.343
new file mode 100644
index 000000000..db62264d0
--- /dev/null
+++ b/source/ap/vim/patches/7.3.343
@@ -0,0 +1,252 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.343
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.343
+Problem: No mouse support for urxvt.
+Solution: Implement urxvt mouse support, also for > 252 columns. (Yiding
+ Jia)
+Files: src/feature.h, src/keymap.h, src/option.h, src/os_unix.c,
+ src/term.c, src/version.c
+
+
+*** ../vim-7.3.342/src/feature.h 2011-05-19 13:40:47.000000000 +0200
+--- src/feature.h 2011-10-20 21:02:15.000000000 +0200
+***************
+*** 1053,1058 ****
+--- 1053,1061 ----
+ # ifdef FEAT_BIG
+ # define FEAT_MOUSE_DEC
+ # endif
++ # ifdef FEAT_BIG
++ # define FEAT_MOUSE_URXVT
++ # endif
+ # if defined(FEAT_NORMAL) && (defined(MSDOS) || defined(WIN3264))
+ # define DOS_MOUSE
+ # endif
+***************
+*** 1068,1080 ****
+ #if defined(FEAT_NORMAL) && defined(HAVE_SYSMOUSE)
+ # define FEAT_SYSMOUSE
+ #endif
+ /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */
+ #if !defined(FEAT_MOUSE_TTY) \
+ && (defined(FEAT_MOUSE_XTERM) \
+! || defined(FEAT_MOUSE_NET) || defined(FEAT_MOUSE_DEC) \
+! || defined(DOS_MOUSE) || defined(FEAT_MOUSE_GPM) \
+! || defined(FEAT_MOUSE_JSB) || defined(FEAT_MOUSE_PTERM) \
+! || defined(FEAT_SYSMOUSE))
+ # define FEAT_MOUSE_TTY /* include non-GUI mouse support */
+ #endif
+ #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI))
+--- 1071,1093 ----
+ #if defined(FEAT_NORMAL) && defined(HAVE_SYSMOUSE)
+ # define FEAT_SYSMOUSE
+ #endif
++
++ /* urxvt is a small variation of mouse_xterm, and shares its code */
++ #if defined(FEAT_MOUSE_URXVT) && !defined(FEAT_MOUSE_XTERM)
++ # define FEAT_MOUSE_XTERM
++ #endif
++
+ /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */
+ #if !defined(FEAT_MOUSE_TTY) \
+ && (defined(FEAT_MOUSE_XTERM) \
+! || defined(FEAT_MOUSE_NET) \
+! || defined(FEAT_MOUSE_DEC) \
+! || defined(DOS_MOUSE) \
+! || defined(FEAT_MOUSE_GPM) \
+! || defined(FEAT_MOUSE_JSB) \
+! || defined(FEAT_MOUSE_PTERM) \
+! || defined(FEAT_SYSMOUSE) \
+! || defined(FEAT_MOUSE_URXVT))
+ # define FEAT_MOUSE_TTY /* include non-GUI mouse support */
+ #endif
+ #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI))
+*** ../vim-7.3.342/src/keymap.h 2010-08-15 21:57:32.000000000 +0200
+--- src/keymap.h 2011-10-20 21:00:37.000000000 +0200
+***************
+*** 92,104 ****
+ */
+ #define KS_TEAROFF 244
+
+! /* used for JSB term mouse */
+ #define KS_JSBTERM_MOUSE 243
+
+! /* used a termcap entry that produces a normal character */
+ #define KS_KEY 242
+
+! /* Used for the qnx pterm mouse */
+ #define KS_PTERM_MOUSE 241
+
+ /* Used for click in a tab pages label. */
+--- 92,104 ----
+ */
+ #define KS_TEAROFF 244
+
+! /* Used for JSB term mouse. */
+ #define KS_JSBTERM_MOUSE 243
+
+! /* Used a termcap entry that produces a normal character. */
+ #define KS_KEY 242
+
+! /* Used for the qnx pterm mouse. */
+ #define KS_PTERM_MOUSE 241
+
+ /* Used for click in a tab pages label. */
+***************
+*** 107,112 ****
+--- 107,115 ----
+ /* Used for menu in a tab pages line. */
+ #define KS_TABMENU 239
+
++ /* Used for the urxvt mouse. */
++ #define KS_URXVT_MOUSE 238
++
+ /*
+ * Filler used after KS_SPECIAL and others
+ */
+*** ../vim-7.3.342/src/option.h 2011-09-30 14:44:49.000000000 +0200
+--- src/option.h 2011-10-20 19:38:59.000000000 +0200
+***************
+*** 819,825 ****
+ EXTERN char_u *p_ttym; /* 'ttymouse' */
+ EXTERN unsigned ttym_flags;
+ # ifdef IN_OPTION_C
+! static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", NULL};
+ # endif
+ # define TTYM_XTERM 0x01
+ # define TTYM_XTERM2 0x02
+--- 819,825 ----
+ EXTERN char_u *p_ttym; /* 'ttymouse' */
+ EXTERN unsigned ttym_flags;
+ # ifdef IN_OPTION_C
+! static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", "urxvt", NULL};
+ # endif
+ # define TTYM_XTERM 0x01
+ # define TTYM_XTERM2 0x02
+***************
+*** 827,832 ****
+--- 827,833 ----
+ # define TTYM_NETTERM 0x08
+ # define TTYM_JSBTERM 0x10
+ # define TTYM_PTERM 0x20
++ # define TTYM_URXVT 0x40
+ #endif
+ EXTERN char_u *p_udir; /* 'undodir' */
+ EXTERN long p_ul; /* 'undolevels' */
+*** ../vim-7.3.342/src/os_unix.c 2011-10-12 21:04:15.000000000 +0200
+--- src/os_unix.c 2011-10-20 21:02:00.000000000 +0200
+***************
+*** 2158,2167 ****
+--- 2158,2170 ----
+ * Return non-zero when using an xterm mouse, according to 'ttymouse'.
+ * Return 1 for "xterm".
+ * Return 2 for "xterm2".
++ * Return 3 for "urxvt".
+ */
+ int
+ use_xterm_mouse()
+ {
++ if (ttym_flags == TTYM_URXVT)
++ return 3;
+ if (ttym_flags == TTYM_XTERM2)
+ return 2;
+ if (ttym_flags == TTYM_XTERM)
+***************
+*** 3318,3323 ****
+--- 3321,3337 ----
+ return;
+
+ xterm_mouse_vers = use_xterm_mouse();
++
++ # ifdef FEAT_MOUSE_URXVT
++ if (ttym_flags == TTYM_URXVT) {
++ out_str_nf((char_u *)
++ (on
++ ? IF_EB("\033[?1015h", ESC_STR "[?1015h")
++ : IF_EB("\033[?1015l", ESC_STR "[?1015l")));
++ ison = on;
++ }
++ # endif
++
+ if (xterm_mouse_vers > 0)
+ {
+ if (on) /* enable mouse events, use mouse tracking if available */
+***************
+*** 3434,3439 ****
+--- 3448,3456 ----
+ {
+ # ifdef FEAT_MOUSE_XTERM
+ if (use_xterm_mouse()
++ # ifdef FEAT_MOUSE_URXVT
++ && use_xterm_mouse() != 3
++ # endif
+ # ifdef FEAT_GUI
+ && !gui.in_use
+ # endif
+***************
+*** 3523,3528 ****
+--- 3540,3566 ----
+ else
+ del_mouse_termcode(KS_PTERM_MOUSE);
+ # endif
++ # ifdef FEAT_MOUSE_URXVT
++ /* same as the dec mouse */
++ if (use_xterm_mouse() == 3
++ # ifdef FEAT_GUI
++ && !gui.in_use
++ # endif
++ )
++ {
++ set_mouse_termcode(KS_URXVT_MOUSE, (char_u *)(term_is_8bit(T_NAME)
++ ? IF_EB("\233", CSI_STR)
++ : IF_EB("\033[", ESC_STR "[")));
++
++ if (*p_mouse != NUL)
++ {
++ mch_setmouse(FALSE);
++ setmouse();
++ }
++ }
++ else
++ del_mouse_termcode(KS_URXVT_MOUSE);
++ # endif
+ }
+ #endif
+
+*** ../vim-7.3.342/src/version.c 2011-10-20 18:24:16.000000000 +0200
+--- src/version.c 2011-10-20 19:40:48.000000000 +0200
+***************
+*** 380,383 ****
+--- 380,388 ----
+ "-mouse_xterm",
+ # endif
++ # ifdef FEAT_MOUSE_URXVT
++ "+mouse_urxvt",
++ # else
++ "-mouse_urxvt",
++ # endif
+ #endif
+ #ifdef __QNX__
+***************
+*** 711,712 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 343,
+ /**/
+
+--
+Warning label on a superhero Halloween costume:
+"Caution: Cape does not enable user to fly."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.344 b/source/ap/vim/patches/7.3.344
new file mode 100644
index 000000000..d2bb1dbe2
--- /dev/null
+++ b/source/ap/vim/patches/7.3.344
@@ -0,0 +1,121 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.344
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.344
+Problem: Problem with GUI startup related to XInitThreads.
+Solution: Use read() and write() instead of fputs() and fread(). (James
+ Vega)
+Files: src/gui.c
+
+
+*** ../vim-7.3.343/src/gui.c 2011-09-14 19:04:35.000000000 +0200
+--- src/gui.c 2011-10-20 21:23:43.000000000 +0200
+***************
+*** 212,218 ****
+ int status;
+ int exit_status;
+ pid_t pid = -1;
+- FILE *parent_file;
+
+ /* Setup a pipe between the child and the parent, so that the parent
+ * knows when the child has done the setsid() call and is allowed to
+--- 212,217 ----
+***************
+*** 290,308 ****
+ gui_mch_forked();
+ # endif
+
+- if (!pipe_error)
+- parent_file = fdopen(pipefd[1], "w");
+- else
+- parent_file = NULL;
+-
+ /* Try to start the GUI */
+ gui_attempt_start();
+
+ /* Notify the parent */
+! if (parent_file != NULL)
+ {
+! fputs(gui.in_use ? "ok" : "fail", parent_file);
+! fclose(parent_file);
+ }
+
+ /* If we failed to start the GUI, exit now. */
+--- 289,305 ----
+ gui_mch_forked();
+ # endif
+
+ /* Try to start the GUI */
+ gui_attempt_start();
+
+ /* Notify the parent */
+! if (!pipe_error)
+ {
+! if (gui.in_use)
+! write_eintr(pipefd[1], "ok", 3);
+! else
+! write_eintr(pipefd[1], "fail", 5);
+! close(pipefd[1]);
+ }
+
+ /* If we failed to start the GUI, exit now. */
+***************
+*** 323,339 ****
+ static int
+ gui_read_child_pipe(int fd)
+ {
+! size_t bytes_read;
+! FILE *file;
+! char buffer[10];
+!
+! file = fdopen(fd, "r");
+! if (!file)
+ return GUI_CHILD_IO_ERROR;
+!
+! bytes_read = fread(buffer, sizeof(char), sizeof(buffer)-1, file);
+! buffer[bytes_read] = '\0';
+! fclose(file);
+ if (strcmp(buffer, "ok") == 0)
+ return GUI_CHILD_OK;
+ return GUI_CHILD_FAILED;
+--- 320,335 ----
+ static int
+ gui_read_child_pipe(int fd)
+ {
+! long bytes_read;
+! #define READ_BUFFER_SIZE 10
+! char buffer[READ_BUFFER_SIZE];
+!
+! bytes_read = read_eintr(fd, buffer, READ_BUFFER_SIZE - 1);
+! #undef READ_BUFFER_SIZE
+! close(fd);
+! if (bytes_read < 0)
+ return GUI_CHILD_IO_ERROR;
+! buffer[bytes_read] = NUL;
+ if (strcmp(buffer, "ok") == 0)
+ return GUI_CHILD_OK;
+ return GUI_CHILD_FAILED;
+*** ../vim-7.3.343/src/version.c 2011-10-20 21:09:25.000000000 +0200
+--- src/version.c 2011-10-20 21:27:31.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 344,
+ /**/
+
+--
+From "know your smileys":
+ *<|:-) Santa Claus (Ho Ho Ho)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.345 b/source/ap/vim/patches/7.3.345
new file mode 100644
index 000000000..99dd074a2
--- /dev/null
+++ b/source/ap/vim/patches/7.3.345
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.345
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.345
+Problem: When switching language with ":lang" the window title doesn't
+ change until later.
+Solution: Update the window title right away. (Dominique Pelle)
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.3.344/src/ex_cmds2.c 2011-06-26 04:25:24.000000000 +0200
+--- src/ex_cmds2.c 2011-10-20 21:31:09.000000000 +0200
+***************
+*** 4154,4159 ****
+--- 4154,4162 ----
+ /* Set v:lang, v:lc_time and v:ctype to the final result. */
+ set_lang_var();
+ # endif
++ # ifdef FEAT_TITLE
++ maketitle();
++ # endif
+ }
+ }
+ }
+*** ../vim-7.3.344/src/version.c 2011-10-20 21:27:57.000000000 +0200
+--- src/version.c 2011-10-20 21:38:32.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 345,
+ /**/
+
+--
+You can't have everything. Where would you put it?
+ -- Steven Wright
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.346 b/source/ap/vim/patches/7.3.346
new file mode 100644
index 000000000..e6b1a2b64
--- /dev/null
+++ b/source/ap/vim/patches/7.3.346
@@ -0,0 +1,143 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.346
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.346
+Problem: It's hard to test netbeans commands.
+Solution: Process netbeans commands after :sleep. (Xavier de Gaye)
+Files: runtime/doc/netbeans.txt, src/ex_docmd.c, src/netbeans.c
+
+
+*** ../vim-7.3.345/runtime/doc/netbeans.txt 2010-09-29 17:26:57.000000000 +0200
+--- runtime/doc/netbeans.txt 2011-10-20 21:51:41.000000000 +0200
+***************
+*** 1,4 ****
+! *netbeans.txt* For Vim version 7.3. Last change: 2010 Aug 20
+
+
+ VIM REFERENCE MANUAL by Gordon Prieur et al.
+--- 1,4 ----
+! *netbeans.txt* For Vim version 7.3. Last change: 2011 Oct 20
+
+
+ VIM REFERENCE MANUAL by Gordon Prieur et al.
+***************
+*** 263,268 ****
+--- 263,274 ----
+ plain UTF-8 text this protocol could also be used with any other communication
+ mechanism.
+
++ Netbeans messages are processed when Vim is idle, waiting for user input.
++ When Vim is run in non-interactive mode, for example when running an automated
++ test case that sources a Vim script, the idle loop may not be called often
++ enough. In that case, insert |sleep| commands in the Vim script. The |sleep|
++ command does invoke Netbeans messages processing.
++
+ 6.1 Kinds of messages |nb-messages|
+ 6.2 Terms |nb-terms|
+ 6.3 Commands |nb-commands|
+***************
+*** 820,826 ****
+ ==============================================================================
+ 7. NetBeans commands *netbeans-commands*
+
+! *:nbstart* *E511*
+ :nbs[tart] {connection} Start a new Netbeans session with {connection} as the
+ socket connection parameters. The format of
+ {connection} is described in |netbeans-parameters|.
+--- 826,832 ----
+ ==============================================================================
+ 7. NetBeans commands *netbeans-commands*
+
+! *:nbstart* *E511* *E838*
+ :nbs[tart] {connection} Start a new Netbeans session with {connection} as the
+ socket connection parameters. The format of
+ {connection} is described in |netbeans-parameters|.
+***************
+*** 833,843 ****
+ signs.
+
+ *:nbkey*
+! :nb[key] {key} Pass the {key} to the Vim Controller for processing
+!
+! When a hot-key has been installed with the specialKeys command, this command
+! can be used to generate a hotkey messages to the Vim Controller. The events
+! newDotAndMark, keyCommand and keyAtPos are generated (in this order).
+
+
+ ==============================================================================
+--- 839,854 ----
+ signs.
+
+ *:nbkey*
+! :nb[key] {key} Pass the {key} to the Vim Controller for processing.
+! When a hot-key has been installed with the specialKeys
+! command, this command can be used to generate a hotkey
+! message to the Vim Controller.
+! This command can also be used to pass any text to the
+! Vim Controller. It is used by Pyclewn, for example,
+! to build the complete set of gdb commands as Vim user
+! commands.
+! The events newDotAndMark, keyCommand and keyAtPos are
+! generated (in this order).
+
+
+ ==============================================================================
+*** ../vim-7.3.345/src/ex_docmd.c 2011-09-30 18:35:49.000000000 +0200
+--- src/ex_docmd.c 2011-10-20 21:50:06.000000000 +0200
+***************
+*** 8205,8210 ****
+--- 8205,8216 ----
+ {
+ ui_delay(msec - done > 1000L ? 1000L : msec - done, TRUE);
+ ui_breakcheck();
++ #ifdef FEAT_NETBEANS_INTG
++ /* Process the netbeans messages that may have been received in the
++ * call to ui_breakcheck() when the GUI is in use. This may occur when
++ * running a test case. */
++ netbeans_parse_messages();
++ #endif
+ }
+ }
+
+*** ../vim-7.3.345/src/netbeans.c 2011-04-11 21:35:03.000000000 +0200
+--- src/netbeans.c 2011-10-20 21:47:17.000000000 +0200
+***************
+*** 14,19 ****
+--- 14,26 ----
+ * which are *between* characters, whereas vim uses line number
+ * and column number which are *on* characters.
+ * See ":help netbeans-protocol" for explanation.
++ *
++ * The Netbeans messages are received and queued in the gui event loop, or in
++ * the select loop when Vim runs in a terminal. These messages are processed
++ * by netbeans_parse_messages() which is invoked in the idle loop when Vim is
++ * waiting for user input. The function netbeans_parse_messages() is also
++ * called from the ":sleep" command, to allow the execution of test cases that
++ * may not invoke the idle loop.
+ */
+
+ #include "vim.h"
+*** ../vim-7.3.345/src/version.c 2011-10-20 21:57:43.000000000 +0200
+--- src/version.c 2011-10-20 21:50:23.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 346,
+ /**/
+
+--
+From "know your smileys":
+ ...---... SOS
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.347 b/source/ap/vim/patches/7.3.347
new file mode 100644
index 000000000..85b0feb75
--- /dev/null
+++ b/source/ap/vim/patches/7.3.347
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.347
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.347
+Problem: When dropping text from a browser on Vim it receives HTML even
+ though "html" is excluded from 'clipboard'. (Andrei Avk)
+Solution: Fix the condition for TARGET_HTML.
+Files: src/gui_gtk_x11.c
+
+
+*** ../vim-7.3.346/src/gui_gtk_x11.c 2011-08-10 17:44:41.000000000 +0200
+--- src/gui_gtk_x11.c 2011-10-23 20:56:38.000000000 +0200
+***************
+*** 3081,3087 ****
+
+ for (i = 0; i < (int)N_DND_TARGETS; ++i)
+ {
+! if (!clip_html && selection_targets[i].info == TARGET_HTML)
+ n_targets--;
+ else
+ targets[j++] = dnd_targets[i];
+--- 3081,3087 ----
+
+ for (i = 0; i < (int)N_DND_TARGETS; ++i)
+ {
+! if (!clip_html && dnd_targets[i].info == TARGET_HTML)
+ n_targets--;
+ else
+ targets[j++] = dnd_targets[i];
+*** ../vim-7.3.346/src/version.c 2011-10-20 21:58:20.000000000 +0200
+--- src/version.c 2011-10-26 11:35:23.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 347,
+ /**/
+
+--
+I AM THANKFUL...
+...for a lawn that needs mowing, windows that need cleaning
+and gutters that need fixing because it means I have a home.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.348 b/source/ap/vim/patches/7.3.348
new file mode 100644
index 000000000..e92febb98
--- /dev/null
+++ b/source/ap/vim/patches/7.3.348
@@ -0,0 +1,57 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.348
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.348
+Problem: "call range(1, 947948399)" causes a crash. (ZyX)
+Solution: Avoid a loop in the out of memory message.
+Files: src/misc2.c
+
+
+*** ../vim-7.3.347/src/misc2.c 2011-08-19 22:28:58.000000000 +0200
+--- src/misc2.c 2011-10-26 11:17:26.000000000 +0200
+***************
+*** 1012,1019 ****
+ {
+ /* Don't hide this message */
+ emsg_silent = 0;
+! EMSGN(_("E342: Out of memory! (allocating %lu bytes)"), size);
+ did_outofmem_msg = TRUE;
+ }
+ }
+
+--- 1012,1023 ----
+ {
+ /* Don't hide this message */
+ emsg_silent = 0;
+!
+! /* Must come first to avoid coming back here when printing the error
+! * message fails, e.g. when setting v:errmsg. */
+ did_outofmem_msg = TRUE;
++
++ EMSGN(_("E342: Out of memory! (allocating %lu bytes)"), size);
+ }
+ }
+
+*** ../vim-7.3.347/src/version.c 2011-10-26 11:36:21.000000000 +0200
+--- src/version.c 2011-10-26 11:38:33.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 348,
+ /**/
+
+--
+A fool learns from his mistakes, a wise man from someone else's.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.349 b/source/ap/vim/patches/7.3.349
new file mode 100644
index 000000000..ac519afe8
--- /dev/null
+++ b/source/ap/vim/patches/7.3.349
@@ -0,0 +1,88 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.349
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.349
+Problem: When running out of memory during startup trying to open a
+ swapfile will loop forever.
+Solution: Let findswapname() set dirp to NULL if out of memory.
+Files: src/memline.c
+
+
+*** ../vim-7.3.348/src/memline.c 2011-06-13 01:07:22.000000000 +0200
+--- src/memline.c 2011-10-26 11:26:06.000000000 +0200
+***************
+*** 621,626 ****
+--- 621,628 ----
+ break;
+ fname = findswapname(buf, &dirp, mfp->mf_fname);
+ /* alloc's fname */
++ if (dirp == NULL) /* out of memory */
++ break;
+ if (fname == NULL) /* no file name found for this dir */
+ continue;
+
+***************
+*** 744,749 ****
+--- 746,753 ----
+ * and creating it, another Vim creates the file. In that case the
+ * creation will fail and we will use another directory. */
+ fname = findswapname(buf, &dirp, NULL); /* allocates fname */
++ if (dirp == NULL)
++ break; /* out of memory */
+ if (fname == NULL)
+ continue;
+ if (mf_open_file(mfp, fname) == OK) /* consumes fname! */
+***************
+*** 4114,4119 ****
+--- 4118,4124 ----
+ *
+ * Several names are tried to find one that does not exist
+ * Returns the name in allocated memory or NULL.
++ * When out of memory "dirp" is set to NULL.
+ *
+ * Note: If BASENAMELEN is not correct, you will get error messages for
+ * not being able to open the swap or undo file
+***************
+*** 4157,4163 ****
+ * First allocate some memory to put the directory name in.
+ */
+ dir_name = alloc((unsigned)STRLEN(*dirp) + 1);
+! if (dir_name != NULL)
+ (void)copy_option_part(dirp, dir_name, 31000, ",");
+
+ /*
+--- 4162,4170 ----
+ * First allocate some memory to put the directory name in.
+ */
+ dir_name = alloc((unsigned)STRLEN(*dirp) + 1);
+! if (dir_name == NULL)
+! *dirp = NULL;
+! else
+ (void)copy_option_part(dirp, dir_name, 31000, ",");
+
+ /*
+*** ../vim-7.3.348/src/version.c 2011-10-26 11:40:56.000000000 +0200
+--- src/version.c 2011-10-26 11:43:05.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 349,
+ /**/
+
+--
+I AM THANKFUL...
+...for all the complaining I hear about the government
+because it means we have freedom of speech.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.350 b/source/ap/vim/patches/7.3.350
new file mode 100644
index 000000000..5a1f3327c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.350
@@ -0,0 +1,46 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.350
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.350
+Problem: Block of code after ":lua << EOF" may not work. (Paul Isambert)
+Solution: Recognize the ":lua" command, skip to EOF.
+Files: src/eval.c
+
+
+*** ../vim-7.3.349/src/eval.c 2011-09-30 18:35:49.000000000 +0200
+--- src/eval.c 2011-10-26 13:12:06.000000000 +0200
+***************
+*** 20899,20904 ****
+--- 20899,20906 ----
+ && (!ASCII_ISALPHA(p[2]) || p[2] == 'r'))
+ || (p[0] == 't' && p[1] == 'c'
+ && (!ASCII_ISALPHA(p[2]) || p[2] == 'l'))
++ || (p[0] == 'l' && p[1] == 'u' && p[2] == 'a'
++ && !ASCII_ISALPHA(p[3]))
+ || (p[0] == 'r' && p[1] == 'u' && p[2] == 'b'
+ && (!ASCII_ISALPHA(p[3]) || p[3] == 'y'))
+ || (p[0] == 'm' && p[1] == 'z'
+*** ../vim-7.3.349/src/version.c 2011-10-26 11:44:15.000000000 +0200
+--- src/version.c 2011-10-26 13:13:21.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 350,
+ /**/
+
+--
+From "know your smileys":
+ :-| :-| Deja' vu!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.351 b/source/ap/vim/patches/7.3.351
new file mode 100644
index 000000000..15b2194c1
--- /dev/null
+++ b/source/ap/vim/patches/7.3.351
@@ -0,0 +1,46 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.351
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.351
+Problem: Text formatting uses start of insert position when it should not.
+ (Peter Wagenaar)
+Solution: Do not use Insstart when intentionally formatting.
+Files: src/edit.c
+
+
+*** ../vim-7.3.350/src/edit.c 2011-09-21 18:23:02.000000000 +0200
+--- src/edit.c 2011-10-26 16:58:21.000000000 +0200
+***************
+*** 6078,6083 ****
+--- 6078,6084 ----
+ * Stop at first entered white when 'formatoptions' has 'v'
+ */
+ while ((!fo_ins_blank && !has_format_option(FO_INS_VI))
++ || (flags & INSCHAR_FORMAT)
+ || curwin->w_cursor.lnum != Insstart.lnum
+ || curwin->w_cursor.col >= Insstart.col)
+ {
+*** ../vim-7.3.350/src/version.c 2011-10-26 13:19:23.000000000 +0200
+--- src/version.c 2011-10-26 17:03:37.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 351,
+ /**/
+
+--
+From "know your smileys":
+ :-* A big kiss!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.352 b/source/ap/vim/patches/7.3.352
new file mode 100644
index 000000000..52842cfc5
--- /dev/null
+++ b/source/ap/vim/patches/7.3.352
@@ -0,0 +1,108 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.352
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.352
+Problem: When completing methods dict functions and script-local functions
+ get in the way.
+Solution: Sort function names starting with "<" to the end. (Yasuhiro
+ Matsumoto)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.3.351/src/ex_getln.c 2011-09-30 17:46:14.000000000 +0200
+--- src/ex_getln.c 2011-10-26 21:37:53.000000000 +0200
+***************
+*** 121,126 ****
+--- 121,134 ----
+ static int ex_window __ARGS((void));
+ #endif
+
++ #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
++ static int
++ #ifdef __BORLANDC__
++ _RTLENTRYF
++ #endif
++ sort_func_compare __ARGS((const void *s1, const void *s2));
++ #endif
++
+ /*
+ * getcmdline() - accept a command line starting with firstc.
+ *
+***************
+*** 3286,3291 ****
+--- 3294,3317 ----
+ return check_abbr(c, ccline.cmdbuff, ccline.cmdpos, 0);
+ }
+
++ #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
++ static int
++ #ifdef __BORLANDC__
++ _RTLENTRYF
++ #endif
++ sort_func_compare(s1, s2)
++ const void *s1;
++ const void *s2;
++ {
++ char_u *p1 = *(char_u **)s1;
++ char_u *p2 = *(char_u **)s2;
++
++ if (*p1 != '<' && *p2 == '<') return -1;
++ if (*p1 == '<' && *p2 != '<') return 1;
++ return STRCMP(p1, p2);
++ }
++ #endif
++
+ /*
+ * Return FAIL if this is not an appropriate context in which to do
+ * completion of anything, return OK if it is (even if there are no matches).
+***************
+*** 4735,4741 ****
+
+ /* Sort the results. Keep menu's in the specified order. */
+ if (xp->xp_context != EXPAND_MENUNAMES && xp->xp_context != EXPAND_MENUS)
+! sort_strings(*file, *num_file);
+
+ #ifdef FEAT_CMDL_COMPL
+ /* Reset the variables used for special highlight names expansion, so that
+--- 4761,4776 ----
+
+ /* Sort the results. Keep menu's in the specified order. */
+ if (xp->xp_context != EXPAND_MENUNAMES && xp->xp_context != EXPAND_MENUS)
+! {
+! if (xp->xp_context == EXPAND_EXPRESSION
+! || xp->xp_context == EXPAND_FUNCTIONS
+! || xp->xp_context == EXPAND_USER_FUNC)
+! /* <SNR> functions should be sorted to the end. */
+! qsort((void *)*file, (size_t)*num_file, sizeof(char_u *),
+! sort_func_compare);
+! else
+! sort_strings(*file, *num_file);
+! }
+
+ #ifdef FEAT_CMDL_COMPL
+ /* Reset the variables used for special highlight names expansion, so that
+*** ../vim-7.3.351/src/version.c 2011-10-26 17:04:23.000000000 +0200
+--- src/version.c 2011-10-26 21:49:53.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 352,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+94. Now admit it... How many of you have made "modem noises" into
+ the phone just to see if it was possible? :-)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.353 b/source/ap/vim/patches/7.3.353
new file mode 100644
index 000000000..1846243e8
--- /dev/null
+++ b/source/ap/vim/patches/7.3.353
@@ -0,0 +1,155 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.353
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.353 (after 7.3.343)
+Problem: Missing part of the urxvt patch.
+Solution: Add the change in term.c
+Files: src/term.c
+
+
+*** ../vim-7.3.352/src/term.c 2011-09-14 14:43:21.000000000 +0200
+--- src/term.c 2011-10-26 23:48:01.000000000 +0200
+***************
+*** 4008,4014 ****
+ }
+
+ #ifdef FEAT_TERMRESPONSE
+! if (key_name[0] == NUL)
+ {
+ /* Check for xterm version string: "<Esc>[>{x};{vers};{y}c". Also
+ * eat other possible responses to t_RV, rxvt returns
+--- 4008,4016 ----
+ }
+
+ #ifdef FEAT_TERMRESPONSE
+! if (key_name[0] == NUL
+! /* URXVT mouse uses <ESC>[#;#;#M, but we are matching <ESC>[ */
+! || key_name[0] == KS_URXVT_MOUSE)
+ {
+ /* Check for xterm version string: "<Esc>[>{x};{vers};{y}c". Also
+ * eat other possible responses to t_RV, rxvt returns
+***************
+*** 4047,4053 ****
+ if (tp[1 + (tp[0] != CSI)] == '>' && j == 2)
+ {
+ /* if xterm version >= 95 use mouse dragging */
+! if (extra >= 95)
+ set_option_value((char_u *)"ttym", 0L,
+ (char_u *)"xterm2", 0);
+ /* if xterm version >= 141 try to get termcap codes */
+--- 4049,4055 ----
+ if (tp[1 + (tp[0] != CSI)] == '>' && j == 2)
+ {
+ /* if xterm version >= 95 use mouse dragging */
+! if (extra >= 95 && ttym_flags != TTYM_URXVT)
+ set_option_value((char_u *)"ttym", 0L,
+ (char_u *)"xterm2", 0);
+ /* if xterm version >= 141 try to get termcap codes */
+***************
+*** 4141,4146 ****
+--- 4143,4151 ----
+ # ifdef FEAT_MOUSE_PTERM
+ || key_name[0] == (int)KS_PTERM_MOUSE
+ # endif
++ # ifdef FEAT_MOUSE_URXVT
++ || key_name[0] == (int)KS_URXVT_MOUSE
++ # endif
+ )
+ {
+ is_click = is_drag = FALSE;
+***************
+*** 4219,4225 ****
+--- 4224,4292 ----
+ else
+ break;
+ }
++ }
++
++ # ifdef FEAT_MOUSE_URXVT
++ if (key_name[0] == (int)KS_URXVT_MOUSE)
++ {
++ for (;;)
++ {
++ /* URXVT 1015 mouse reporting mode:
++ * Almost identical to xterm mouse mode, except the values
++ * are decimal instead of bytes.
++ *
++ * \033[%d;%d;%dM
++ * ^-- row
++ * ^----- column
++ * ^-------- code
++ */
++ p = tp + slen;
++
++ mouse_code = getdigits(&p);
++ if (*p++ != ';')
++ return -1;
++
++ mouse_col = getdigits(&p) - 1;
++ if (*p++ != ';')
++ return -1;
++
++ mouse_row = getdigits(&p) - 1;
++ if (*p++ != 'M')
++ return -1;
++
++ slen += (int)(p - (tp + slen));
++
++ /* skip this one if next one has same code (like xterm
++ * case) */
++ j = termcodes[idx].len;
++ if (STRNCMP(tp, tp + slen, (size_t)j) == 0) {
++ /* check if the command is complete by looking for the
++ * M */
++ int slen2;
++ int cmd_complete = 0;
++ for (slen2 = slen; slen2 < len; slen2++) {
++ if (tp[slen2] == 'M') {
++ cmd_complete = 1;
++ break;
++ }
++ }
++ p += j;
++ if (cmd_complete && getdigits(&p) == mouse_code) {
++ slen += j; /* skip the \033[ */
++ continue;
++ }
++ }
++ break;
++ }
++ }
++ # endif
+
++ if (key_name[0] == (int)KS_MOUSE
++ #ifdef FEAT_MOUSE_URXVT
++ || key_name[0] == (int)KS_URXVT_MOUSE
++ #endif
++ )
++ {
+ # if !defined(MSWIN) && !defined(MSDOS)
+ /*
+ * Handle mouse events.
+*** ../vim-7.3.352/src/version.c 2011-10-26 22:02:10.000000000 +0200
+--- src/version.c 2011-10-26 23:43:26.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 353,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+99. The hum of a cooling fan and the click of keys is comforting to you.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.354 b/source/ap/vim/patches/7.3.354
new file mode 100644
index 000000000..8250f9af9
--- /dev/null
+++ b/source/ap/vim/patches/7.3.354
@@ -0,0 +1,71 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.354
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.354
+Problem: ":set backspace+=eol" doesn't work when 'backspace' has a
+ backwards compatible value of 2.
+Solution: Convert the number to a string. (Hirohito Higashi)
+Files: src/option.c
+
+
+*** ../vim-7.3.353/src/option.c 2011-10-12 16:57:07.000000000 +0200
+--- src/option.c 2011-11-30 11:11:15.000000000 +0100
+***************
+*** 4567,4572 ****
+--- 4567,4597 ----
+ arg = errbuf;
+ }
+ /*
++ * Convert 'backspace' number to string, for
++ * adding, prepending and removing string.
++ */
++ else if (varp == (char_u *)&p_bs
++ && VIM_ISDIGIT(**(char_u **)varp))
++ {
++ i = getdigits((char_u **)varp);
++ switch (i)
++ {
++ case 0:
++ *(char_u **)varp = empty_option;
++ break;
++ case 1:
++ *(char_u **)varp = vim_strsave(
++ (char_u *)"indent,eol");
++ break;
++ case 2:
++ *(char_u **)varp = vim_strsave(
++ (char_u *)"indent,eol,start");
++ break;
++ }
++ vim_free(oldval);
++ oldval = *(char_u **)varp;
++ }
++ /*
+ * Convert 'whichwrap' number to string, for
+ * backwards compatibility with Vim 3.0.
+ * Misuse errbuf[] for the resulting string.
+*** ../vim-7.3.353/src/version.c 2011-10-26 23:48:17.000000000 +0200
+--- src/version.c 2011-11-30 11:14:44.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 354,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+206. You religiously respond immediately to e-mail, while ignoring
+ your growing pile of snail mail.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.355 b/source/ap/vim/patches/7.3.355
new file mode 100644
index 000000000..51bc3b7f8
--- /dev/null
+++ b/source/ap/vim/patches/7.3.355
@@ -0,0 +1,56 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.355
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.355
+Problem: GTK warnings when using netrw.vim. (Ivan Krasilnikov)
+Solution: Do not remove the beval event handler twice.
+Files: src/option.c
+
+
+*** ../vim-7.3.354/src/option.c 2011-11-30 11:15:40.000000000 +0100
+--- src/option.c 2011-11-30 11:11:15.000000000 +0100
+***************
+*** 7796,7804 ****
+ #ifdef FEAT_BEVAL
+ else if ((int *)varp == &p_beval)
+ {
+! if (p_beval == TRUE)
+ gui_mch_enable_beval_area(balloonEval);
+! else
+ gui_mch_disable_beval_area(balloonEval);
+ }
+ #endif
+--- 7796,7804 ----
+ #ifdef FEAT_BEVAL
+ else if ((int *)varp == &p_beval)
+ {
+! if (p_beval && !old_value)
+ gui_mch_enable_beval_area(balloonEval);
+! else if (!p_beval && old_value)
+ gui_mch_disable_beval_area(balloonEval);
+ }
+ #endif
+*** ../vim-7.3.354/src/version.c 2011-11-30 11:15:40.000000000 +0100
+--- src/version.c 2011-11-30 11:30:55.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 355,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+209. Your house stinks because you haven't cleaned it in a week.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.356 b/source/ap/vim/patches/7.3.356
new file mode 100644
index 000000000..8b5572bdf
--- /dev/null
+++ b/source/ap/vim/patches/7.3.356
@@ -0,0 +1,79 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.356
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.356
+Problem: Using "o" with 'cindent' set may freeze Vim. (lolilolicon)
+Solution: Skip over {} correctly. (Hari G)
+Files: src/misc1.c
+
+
+*** ../vim-7.3.355/src/misc1.c 2011-10-04 18:03:43.000000000 +0200
+--- src/misc1.c 2011-11-30 12:56:55.000000000 +0100
+***************
+*** 6127,6133 ****
+
+ /*
+ * Set w_cursor.col to the column number of the last unmatched ')' or '{' in
+! * line "l".
+ */
+ static int
+ find_last_paren(l, start, end)
+--- 6127,6133 ----
+
+ /*
+ * Set w_cursor.col to the column number of the last unmatched ')' or '{' in
+! * line "l". "l" must point to the start of the line.
+ */
+ static int
+ find_last_paren(l, start, end)
+***************
+*** 6140,6146 ****
+
+ curwin->w_cursor.col = 0; /* default is start of line */
+
+! for (i = 0; l[i]; i++)
+ {
+ i = (int)(cin_skipcomment(l + i) - l); /* ignore parens in comments */
+ i = (int)(skip_string(l + i) - l); /* ignore parens in quotes */
+--- 6140,6146 ----
+
+ curwin->w_cursor.col = 0; /* default is start of line */
+
+! for (i = 0; l[i] != NUL; i++)
+ {
+ i = (int)(cin_skipcomment(l + i) - l); /* ignore parens in comments */
+ i = (int)(skip_string(l + i) - l); /* ignore parens in quotes */
+***************
+*** 7953,7958 ****
+--- 7953,7959 ----
+ * If we're at the end of a block, skip to the start of
+ * that block.
+ */
++ l = ml_get_curline();
+ if (find_last_paren(l, '{', '}')
+ && (trypos = find_start_brace(ind_maxcomment))
+ != NULL) /* XXX */
+*** ../vim-7.3.355/src/version.c 2011-11-30 11:31:25.000000000 +0100
+--- src/version.c 2011-11-30 13:02:52.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 356,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+213. Your kids start referring to you as "that guy in front of the monitor."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.357 b/source/ap/vim/patches/7.3.357
new file mode 100644
index 000000000..893a6bb4f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.357
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.357
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.357
+Problem: Compiler warning in MS-Windows console build.
+Solution: Adjust return type of PrintHookProc(). (Mike Williams)
+Files: src/os_mswin.c
+
+
+*** ../vim-7.3.356/src/os_mswin.c 2011-09-21 20:09:38.000000000 +0200
+--- src/os_mswin.c 2011-11-30 13:41:13.000000000 +0100
+***************
+*** 1869,1875 ****
+
+ #ifndef FEAT_GUI
+
+! static UINT CALLBACK
+ PrintHookProc(
+ HWND hDlg, // handle to dialog box
+ UINT uiMsg, // message identifier
+--- 1869,1875 ----
+
+ #ifndef FEAT_GUI
+
+! static UINT_PTR CALLBACK
+ PrintHookProc(
+ HWND hDlg, // handle to dialog box
+ UINT uiMsg, // message identifier
+*** ../vim-7.3.356/src/version.c 2011-11-30 13:03:24.000000000 +0100
+--- src/version.c 2011-11-30 13:41:55.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 357,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+215. Your mouse-clicking forearm rivals Popeye's.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.358 b/source/ap/vim/patches/7.3.358
new file mode 100644
index 000000000..b9b385f87
--- /dev/null
+++ b/source/ap/vim/patches/7.3.358
@@ -0,0 +1,74 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.358
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.358 (after 7.3.353)
+Problem: Mouse support doesn't work properly.
+Solution: Add HMT_URXVT. (lilydjwg, James McCoy)
+Files: src/term.c
+
+
+*** ../vim-7.3.357/src/term.c 2011-10-26 23:48:17.000000000 +0200
+--- src/term.c 2011-11-30 14:42:22.000000000 +0100
+***************
+*** 1996,2001 ****
+--- 1996,2002 ----
+ # define HMT_DEC 4
+ # define HMT_JSBTERM 8
+ # define HMT_PTERM 16
++ # define HMT_URXVT 32
+ static int has_mouse_termcode = 0;
+ # endif
+
+***************
+*** 2031,2036 ****
+--- 2032,2042 ----
+ has_mouse_termcode |= HMT_PTERM;
+ else
+ # endif
++ # ifdef FEAT_MOUSE_URXVT
++ if (n == KS_URXVT_MOUSE)
++ has_mouse_termcode |= HMT_URXVT;
++ else
++ # endif
+ has_mouse_termcode |= HMT_NORMAL;
+ # endif
+ }
+***************
+*** 2068,2073 ****
+--- 2074,2084 ----
+ has_mouse_termcode &= ~HMT_PTERM;
+ else
+ # endif
++ # ifdef FEAT_MOUSE_URXVT
++ if (n == KS_URXVT_MOUSE)
++ has_mouse_termcode &= ~HMT_URXVT;
++ else
++ # endif
+ has_mouse_termcode &= ~HMT_NORMAL;
+ # endif
+ }
+*** ../vim-7.3.357/src/version.c 2011-11-30 13:42:40.000000000 +0100
+--- src/version.c 2011-11-30 14:45:06.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 358,
+ /**/
+
+--
+I noticed my daughter's Disney-net password on a sticky note:
+"MickeyMinnieGoofyPluto". I asked her why it was so long.
+"Because they say it has to have at least four characters."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.359 b/source/ap/vim/patches/7.3.359
new file mode 100644
index 000000000..7fbd3f6fa
--- /dev/null
+++ b/source/ap/vim/patches/7.3.359
@@ -0,0 +1,64 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.359
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.359
+Problem: Command line completion shows dict functions.
+Solution: Skip dict functions for completion. (Yasuhiro Matsumoto)
+Files: src/eval.c
+
+
+*** ../vim-7.3.358/src/eval.c 2011-10-26 13:19:23.000000000 +0200
+--- src/eval.c 2011-11-30 14:53:38.000000000 +0100
+***************
+*** 875,881 ****
+
+ #ifdef EBCDIC
+ /*
+! * Sort the function table, to enable binary sort.
+ */
+ sortFunctions();
+ #endif
+--- 875,881 ----
+
+ #ifdef EBCDIC
+ /*
+! * Sort the function table, to enable binary search.
+ */
+ sortFunctions();
+ #endif
+***************
+*** 21737,21742 ****
+--- 21737,21745 ----
+ ++hi;
+ fp = HI2UF(hi);
+
++ if (fp->uf_flags & FC_DICT)
++ return NULL; /* don't show dict functions */
++
+ if (STRLEN(fp->uf_name) + 4 >= IOSIZE)
+ return fp->uf_name; /* prevents overflow */
+
+*** ../vim-7.3.358/src/version.c 2011-11-30 14:47:12.000000000 +0100
+--- src/version.c 2011-11-30 14:56:57.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 359,
+ /**/
+
+--
+'Psychologist' -- Someone who looks at everyone else when
+an attractive woman enters the room.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.360 b/source/ap/vim/patches/7.3.360
new file mode 100644
index 000000000..de153c835
--- /dev/null
+++ b/source/ap/vim/patches/7.3.360
@@ -0,0 +1,61 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.360
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.360
+Problem: Interrupting the load of an autoload function may cause a crash.
+Solution: Do not use the hashitem when not valid. (Yukihiro Nakadaira)
+Files: src/eval.c
+
+
+*** ../vim-7.3.359/src/eval.c 2011-11-30 14:57:26.000000000 +0100
+--- src/eval.c 2011-11-30 15:06:53.000000000 +0100
+***************
+*** 19589,19597 ****
+ * worked find the variable again. Don't auto-load a script if it was
+ * loaded already, otherwise it would be loaded every time when
+ * checking if a function name is a Funcref variable. */
+! if (ht == &globvarht && !writing
+! && script_autoload(varname, FALSE) && !aborting())
+ hi = hash_find(ht, varname);
+ if (HASHITEM_EMPTY(hi))
+ return NULL;
+ }
+--- 19589,19602 ----
+ * worked find the variable again. Don't auto-load a script if it was
+ * loaded already, otherwise it would be loaded every time when
+ * checking if a function name is a Funcref variable. */
+! if (ht == &globvarht && !writing)
+! {
+! /* Note: script_autoload() may make "hi" invalid. It must either
+! * be obtained again or not used. */
+! if (!script_autoload(varname, FALSE) || aborting())
+! return NULL;
+ hi = hash_find(ht, varname);
++ }
+ if (HASHITEM_EMPTY(hi))
+ return NULL;
+ }
+*** ../vim-7.3.359/src/version.c 2011-11-30 14:57:26.000000000 +0100
+--- src/version.c 2011-11-30 15:17:28.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 360,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+217. Your sex life has drastically improved...so what if it's only cyber-sex!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.361 b/source/ap/vim/patches/7.3.361
new file mode 100644
index 000000000..c128057f9
--- /dev/null
+++ b/source/ap/vim/patches/7.3.361
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.361
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.361
+Problem: Accessing memory after it is freed when EXITFREE is defined.
+Solution: Don't access curwin when firstwin is NULL. (Dominique Pelle)
+Files: src/buffer.c
+
+*** ../vim-7.3.360/src/buffer.c 2011-09-14 17:50:05.000000000 +0200
+--- src/buffer.c 2011-11-30 15:38:00.000000000 +0100
+***************
+*** 567,574 ****
+ diff_buf_delete(buf); /* Can't use 'diff' for unloaded buffer. */
+ #endif
+ #ifdef FEAT_SYN_HL
+! if (curwin->w_buffer == buf)
+! reset_synblock(curwin); /* remove any ownsyntax */
+ #endif
+
+ #ifdef FEAT_FOLDING
+--- 567,575 ----
+ diff_buf_delete(buf); /* Can't use 'diff' for unloaded buffer. */
+ #endif
+ #ifdef FEAT_SYN_HL
+! /* Remove any ownsyntax, unless exiting. */
+! if (firstwin != NULL && curwin->w_buffer == buf)
+! reset_synblock(curwin);
+ #endif
+
+ #ifdef FEAT_FOLDING
+*** ../vim-7.3.360/src/version.c 2011-11-30 15:19:25.000000000 +0100
+--- src/version.c 2011-11-30 15:40:22.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 361,
+ /**/
+
+
+--
+From the classified section of a city newspaper:
+Dog for sale: eats anything and is fond of children.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.362 b/source/ap/vim/patches/7.3.362
new file mode 100644
index 000000000..005688617
--- /dev/null
+++ b/source/ap/vim/patches/7.3.362
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.362
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.362
+Problem: ml_get error when using ":g" with folded lines.
+Solution: Adjust the line number for changed_lines(). (Christian Brabandt)
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.3.361/src/ex_cmds.c 2011-10-20 18:17:38.000000000 +0200
+--- src/ex_cmds.c 2011-11-30 16:58:34.000000000 +0100
+***************
+*** 820,826 ****
+ curwin->w_cursor.lnum = dest + (line2 - line1) + 1;
+
+ if (line1 < dest)
+! changed_lines(line1, 0, dest + num_lines + 1, 0L);
+ else
+ changed_lines(dest + 1, 0, line1 + num_lines, 0L);
+
+--- 820,832 ----
+ curwin->w_cursor.lnum = dest + (line2 - line1) + 1;
+
+ if (line1 < dest)
+! {
+! dest += num_lines + 1;
+! last_line = curbuf->b_ml.ml_line_count;
+! if (dest > last_line + 1)
+! dest = last_line + 1;
+! changed_lines(line1, 0, dest, 0L);
+! }
+ else
+ changed_lines(dest + 1, 0, line1 + num_lines, 0L);
+
+*** ../vim-7.3.361/src/version.c 2011-11-30 15:40:51.000000000 +0100
+--- src/version.c 2011-11-30 17:01:07.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 362,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+218. Your spouse hands you a gift wrapped magnet with your PC's name
+ on it and you accuse him or her of genocide.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.363 b/source/ap/vim/patches/7.3.363
new file mode 100644
index 000000000..10ab5482f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.363
@@ -0,0 +1,110 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.363
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.363
+Problem: C indenting is wrong after #endif followed by a semicolon.
+Solution: Add special handling for a semicolon in a line by itself. (Lech
+ Lorens)
+Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.362/src/misc1.c 2011-11-30 13:03:24.000000000 +0100
+--- src/misc1.c 2011-11-30 17:10:59.000000000 +0100
+***************
+*** 8143,8148 ****
+--- 8143,8171 ----
+ break;
+
+ /*
++ * Find a line only has a semicolon that belongs to a previous
++ * line ending in '}', e.g. before an #endif. Don't increase
++ * indent then.
++ */
++ if (*(look = skipwhite(l)) == ';' && cin_nocode(look + 1))
++ {
++ pos_T curpos_save = curwin->w_cursor;
++
++ while (curwin->w_cursor.lnum > 1)
++ {
++ look = ml_get(--curwin->w_cursor.lnum);
++ if (!(cin_nocode(look) || cin_ispreproc_cont(
++ &look, &curwin->w_cursor.lnum)))
++ break;
++ }
++ if (curwin->w_cursor.lnum > 0
++ && cin_ends_in(look, (char_u *)"}", NULL))
++ break;
++
++ curwin->w_cursor = curpos_save;
++ }
++
++ /*
+ * If the PREVIOUS line is a function declaration, the current
+ * line (and the ones that follow) needs to be indented as
+ * parameters.
+*** ../vim-7.3.362/src/testdir/test3.in 2011-10-04 18:03:43.000000000 +0200
+--- src/testdir/test3.in 2011-11-30 17:05:20.000000000 +0100
+***************
+*** 1454,1459 ****
+--- 1454,1469 ----
+ printf("This line used to be indented incorrectly.\n");
+ }
+
++ int foo[]
++ #ifdef BAR
++
++ = { 1, 2, 3,
++ 4, 5, 6 }
++
++ #endif
++ ;
++ int baz;
++
+ void func3(void)
+ {
+ int tab[] = {
+*** ../vim-7.3.362/src/testdir/test3.ok 2011-10-04 18:03:43.000000000 +0200
+--- src/testdir/test3.ok 2011-11-30 17:05:20.000000000 +0100
+***************
+*** 1307,1312 ****
+--- 1307,1322 ----
+ printf("This line used to be indented incorrectly.\n");
+ }
+
++ int foo[]
++ #ifdef BAR
++
++ = { 1, 2, 3,
++ 4, 5, 6 }
++
++ #endif
++ ;
++ int baz;
++
+ void func3(void)
+ {
+ int tab[] = {
+*** ../vim-7.3.362/src/version.c 2011-11-30 17:01:55.000000000 +0100
+--- src/version.c 2011-11-30 17:06:57.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 363,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+220. Your wife asks for sex and you tell her where to find you on IRC.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.364 b/source/ap/vim/patches/7.3.364
new file mode 100644
index 000000000..e62ef76d9
--- /dev/null
+++ b/source/ap/vim/patches/7.3.364
@@ -0,0 +1,57 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.364
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.364 (after 7.3.353)
+Problem: Can't compile on HP-UX. (John Marriott)
+Solution: Only use TTYM_URXVT when it is defined.
+Files: src/term.c
+
+
+*** ../vim-7.3.363/src/term.c 2011-11-30 14:47:12.000000000 +0100
+--- src/term.c 2011-12-01 20:53:57.000000000 +0100
+***************
+*** 4060,4066 ****
+ if (tp[1 + (tp[0] != CSI)] == '>' && j == 2)
+ {
+ /* if xterm version >= 95 use mouse dragging */
+! if (extra >= 95 && ttym_flags != TTYM_URXVT)
+ set_option_value((char_u *)"ttym", 0L,
+ (char_u *)"xterm2", 0);
+ /* if xterm version >= 141 try to get termcap codes */
+--- 4060,4070 ----
+ if (tp[1 + (tp[0] != CSI)] == '>' && j == 2)
+ {
+ /* if xterm version >= 95 use mouse dragging */
+! if (extra >= 95
+! # ifdef TTYM_URXVT
+! && ttym_flags != TTYM_URXVT
+! # endif
+! )
+ set_option_value((char_u *)"ttym", 0L,
+ (char_u *)"xterm2", 0);
+ /* if xterm version >= 141 try to get termcap codes */
+*** ../vim-7.3.363/src/version.c 2011-11-30 17:20:18.000000000 +0100
+--- src/version.c 2011-12-01 20:56:55.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 364,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+224. You set up your own Web page. You set up a Web page for each
+ of your kids... and your pets.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.365 b/source/ap/vim/patches/7.3.365
new file mode 100644
index 000000000..16d5ad1b0
--- /dev/null
+++ b/source/ap/vim/patches/7.3.365
@@ -0,0 +1,131 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.365
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.365
+Problem: Crash when using a large Unicode character in a file that has
+ syntax highlighting. (ngollan)
+Solution: Check for going past the end of the utf tables. (Dominique Pelle)
+Files: src/mbyte.c
+
+
+*** ../vim-7.3.364/src/mbyte.c 2011-08-10 13:21:30.000000000 +0200
+--- src/mbyte.c 2011-12-08 15:09:13.000000000 +0100
+***************
+*** 2764,2782 ****
+ int tableSize;
+ {
+ int start, mid, end; /* indices into table */
+
+ start = 0;
+! end = tableSize / sizeof(convertStruct);
+ while (start < end)
+ {
+ /* need to search further */
+! mid = (end + start) /2;
+ if (table[mid].rangeEnd < a)
+ start = mid + 1;
+ else
+ end = mid;
+ }
+! if (table[start].rangeStart <= a && a <= table[start].rangeEnd
+ && (a - table[start].rangeStart) % table[start].step == 0)
+ return (a + table[start].offset);
+ else
+--- 2764,2785 ----
+ int tableSize;
+ {
+ int start, mid, end; /* indices into table */
++ int entries = tableSize / sizeof(convertStruct);
+
+ start = 0;
+! end = entries;
+ while (start < end)
+ {
+ /* need to search further */
+! mid = (end + start) / 2;
+ if (table[mid].rangeEnd < a)
+ start = mid + 1;
+ else
+ end = mid;
+ }
+! if (start < entries
+! && table[start].rangeStart <= a
+! && a <= table[start].rangeEnd
+ && (a - table[start].rangeStart) % table[start].step == 0)
+ return (a + table[start].offset);
+ else
+***************
+*** 2791,2797 ****
+ utf_fold(a)
+ int a;
+ {
+! return utf_convert(a, foldCase, sizeof(foldCase));
+ }
+
+ static convertStruct toLower[] =
+--- 2794,2800 ----
+ utf_fold(a)
+ int a;
+ {
+! return utf_convert(a, foldCase, (int)sizeof(foldCase));
+ }
+
+ static convertStruct toLower[] =
+***************
+*** 3119,3125 ****
+ return TOUPPER_LOC(a);
+
+ /* For any other characters use the above mapping table. */
+! return utf_convert(a, toUpper, sizeof(toUpper));
+ }
+
+ int
+--- 3122,3128 ----
+ return TOUPPER_LOC(a);
+
+ /* For any other characters use the above mapping table. */
+! return utf_convert(a, toUpper, (int)sizeof(toUpper));
+ }
+
+ int
+***************
+*** 3152,3158 ****
+ return TOLOWER_LOC(a);
+
+ /* For any other characters use the above mapping table. */
+! return utf_convert(a, toLower, sizeof(toLower));
+ }
+
+ int
+--- 3155,3161 ----
+ return TOLOWER_LOC(a);
+
+ /* For any other characters use the above mapping table. */
+! return utf_convert(a, toLower, (int)sizeof(toLower));
+ }
+
+ int
+*** ../vim-7.3.364/src/version.c 2011-12-01 20:59:16.000000000 +0100
+--- src/version.c 2011-12-08 15:07:53.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 365,
+ /**/
+
+--
+Hear about the guy who played a blank tape at full blast?
+The mime next door went nuts.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.366 b/source/ap/vim/patches/7.3.366
new file mode 100644
index 000000000..ddf39903f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.366
@@ -0,0 +1,76 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.366
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.366
+Problem: A tags file with an extremely long name causes errors.
+Solution: Ignore tags that are too long. (Arno Renevier)
+Files: src/tag.c
+
+
+*** ../vim-7.3.365/src/tag.c 2011-10-12 19:53:31.000000000 +0200
+--- src/tag.c 2011-12-08 13:32:51.000000000 +0100
+***************
+*** 1906,1917 ****
+ tagp.tagname = lbuf;
+ #ifdef FEAT_TAG_ANYWHITE
+ tagp.tagname_end = skiptowhite(lbuf);
+! if (*tagp.tagname_end == NUL) /* corrupted tag line */
+ #else
+ tagp.tagname_end = vim_strchr(lbuf, TAB);
+! if (tagp.tagname_end == NULL) /* corrupted tag line */
+ #endif
+ {
+ line_error = TRUE;
+ break;
+ }
+--- 1906,1931 ----
+ tagp.tagname = lbuf;
+ #ifdef FEAT_TAG_ANYWHITE
+ tagp.tagname_end = skiptowhite(lbuf);
+! if (*tagp.tagname_end == NUL)
+ #else
+ tagp.tagname_end = vim_strchr(lbuf, TAB);
+! if (tagp.tagname_end == NULL)
+ #endif
+ {
++ if (vim_strchr(lbuf, NL) == NULL)
++ {
++ /* Truncated line, ignore it. Has been reported for
++ * Mozilla JS with extremely long names. */
++ if (p_verbose >= 5)
++ {
++ verbose_enter();
++ MSG(_("Ignoring long line in tags file"));
++ verbose_leave();
++ }
++ continue;
++ }
++
++ /* Corrupted tag line. */
+ line_error = TRUE;
+ break;
+ }
+*** ../vim-7.3.365/src/version.c 2011-12-08 15:09:46.000000000 +0100
+--- src/version.c 2011-12-08 15:11:10.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 366,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+246. You use up your free 100 hours in less than a week.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.367 b/source/ap/vim/patches/7.3.367
new file mode 100644
index 000000000..2452d531c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.367
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.367
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.367
+Problem: :wundo and :rundo use a wrong checksum.
+Solution: Include the last line when computing the hash. (Christian Brabandt)
+Files: src/undo.c
+
+
+*** ../vim-7.3.366/src/undo.c 2011-01-22 21:25:07.000000000 +0100
+--- src/undo.c 2011-12-08 14:19:03.000000000 +0100
+***************
+*** 719,725 ****
+ char_u *p;
+
+ sha256_start(&ctx);
+! for (lnum = 1; lnum < curbuf->b_ml.ml_line_count; ++lnum)
+ {
+ p = ml_get(lnum);
+ sha256_update(&ctx, p, (UINT32_T)(STRLEN(p) + 1));
+--- 719,725 ----
+ char_u *p;
+
+ sha256_start(&ctx);
+! for (lnum = 1; lnum <= curbuf->b_ml.ml_line_count; ++lnum)
+ {
+ p = ml_get(lnum);
+ sha256_update(&ctx, p, (UINT32_T)(STRLEN(p) + 1));
+*** ../vim-7.3.366/src/version.c 2011-12-08 15:12:08.000000000 +0100
+--- src/version.c 2011-12-08 15:13:32.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 367,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+247. You use www.switchboard.com instead of dialing 411 and 555-12-12
+ for directory assistance.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.368 b/source/ap/vim/patches/7.3.368
new file mode 100644
index 000000000..958c69e71
--- /dev/null
+++ b/source/ap/vim/patches/7.3.368
@@ -0,0 +1,103 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.368
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.368
+Problem: Gcc complains about redefining _FORTIFY_SOURCE.
+Solution: Undefine it before redefining it.
+Files: src/Makefile, src/configure.in, src/auto/configure
+
+
+*** ../vim-7.3.367/src/Makefile 2011-10-20 16:35:25.000000000 +0200
+--- src/Makefile 2011-12-08 15:16:13.000000000 +0100
+***************
+*** 561,568 ****
+ #CFLAGS = -g -O2 '-DSTARTUPTIME="vimstartup"' -fno-strength-reduce -Wall -Wmissing-prototypes
+
+ # Use this with GCC to check for mistakes, unused arguments, etc.
+! #CFLAGS = -g -Wall -Wextra -Wmissing-prototypes -Wunreachable-code -D_FORTIFY_SOURCE=1
+! #CFLAGS = -g -O2 -Wall -Wextra -Wmissing-prototypes -D_FORTIFY_SOURCE=1 -DU_DEBUG
+ #PYTHON_CFLAGS_EXTRA = -Wno-missing-field-initializers
+ #MZSCHEME_CFLAGS_EXTRA = -Wno-unreachable-code -Wno-unused-parameter
+
+--- 561,568 ----
+ #CFLAGS = -g -O2 '-DSTARTUPTIME="vimstartup"' -fno-strength-reduce -Wall -Wmissing-prototypes
+
+ # Use this with GCC to check for mistakes, unused arguments, etc.
+! #CFLAGS = -g -Wall -Wextra -Wmissing-prototypes -Wunreachable-code -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
+! #CFLAGS = -g -O2 -Wall -Wextra -Wmissing-prototypes -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -DU_DEBUG
+ #PYTHON_CFLAGS_EXTRA = -Wno-missing-field-initializers
+ #MZSCHEME_CFLAGS_EXTRA = -Wno-unreachable-code -Wno-unused-parameter
+
+*** ../vim-7.3.367/src/configure.in 2011-09-02 12:27:20.000000000 +0200
+--- src/configure.in 2011-12-01 20:23:22.000000000 +0100
+***************
+*** 3584,3592 ****
+ dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
+ dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
+ dnl Also remove duplicate _FORTIFY_SOURCE arguments.
+ AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
+ if test "$gccmajor" -gt "3"; then
+! CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'`
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+--- 3584,3593 ----
+ dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
+ dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
+ dnl Also remove duplicate _FORTIFY_SOURCE arguments.
++ dnl And undefine it first to avoid a warning.
+ AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
+ if test "$gccmajor" -gt "3"; then
+! CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'`
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+*** ../vim-7.3.367/src/auto/configure 2011-09-02 12:27:20.000000000 +0200
+--- src/auto/configure 2011-12-01 20:24:02.000000000 +0100
+***************
+*** 12483,12492 ****
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+! { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -D_FORTIFY_SOURCE=1" >&5
+ $as_echo_n "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; }
+ if test "$gccmajor" -gt "3"; then
+! CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ $as_echo "yes" >&6; }
+ else
+--- 12483,12492 ----
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+! { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -D_FORTIFY_SOURCE=1" >&5
+ $as_echo_n "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; }
+ if test "$gccmajor" -gt "3"; then
+! CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ $as_echo "yes" >&6; }
+ else
+*** ../vim-7.3.367/src/version.c 2011-12-08 15:14:04.000000000 +0100
+--- src/version.c 2011-12-08 15:15:13.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 368,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+248. You sign your letters with your e-mail address instead of your name.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.369 b/source/ap/vim/patches/7.3.369
new file mode 100644
index 000000000..af6e7e6e7
--- /dev/null
+++ b/source/ap/vim/patches/7.3.369
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.369
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.369
+Problem: When compiled with Gnome get an error message when using --help.
+Solution: Don't fork. (Ivan Krasilnikov)
+Files: src/main.c
+
+
+*** ../vim-7.3.368/src/main.c 2011-10-04 16:43:49.000000000 +0200
+--- src/main.c 2011-12-01 20:27:11.000000000 +0100
+***************
+*** 3294,3300 ****
+--- 3294,3303 ----
+ #ifdef FEAT_GUI_GNOME
+ /* Gnome gives extra messages for --help if we continue, but not for -h. */
+ if (gui.starting)
++ {
+ mch_msg("\n");
++ gui.dofork = FALSE;
++ }
+ else
+ #endif
+ mch_exit(0);
+*** ../vim-7.3.368/src/version.c 2011-12-08 15:17:28.000000000 +0100
+--- src/version.c 2011-12-08 15:57:03.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 369,
+ /**/
+
+--
+Vi is clearly superior to emacs, since "vi" has only two characters
+(and two keystrokes), while "emacs" has five. (Randy C. Ford)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.370 b/source/ap/vim/patches/7.3.370
new file mode 100644
index 000000000..26bce4d10
--- /dev/null
+++ b/source/ap/vim/patches/7.3.370
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.370
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.370
+Problem: Compiler warns for unused variable in Lua interface.
+Solution: Remove the variable.
+Files: src/if_lua.c
+
+
+*** ../vim-7.3.369/src/if_lua.c 2011-09-21 17:15:34.000000000 +0200
+--- src/if_lua.c 2011-12-01 20:19:17.000000000 +0100
+***************
+*** 1044,1056 ****
+ static int
+ luaV_open(lua_State *L)
+ {
+- luaV_Buffer *b;
+ char_u *s = NULL;
+ #ifdef HAVE_SANDBOX
+ luaV_checksandbox(L);
+ #endif
+ if (lua_isstring(L, 1)) s = (char_u *) lua_tostring(L, 1);
+! b = luaV_pushbuffer(L, buflist_new(s, NULL, 1L, BLN_LISTED));
+ return 1;
+ }
+
+--- 1044,1055 ----
+ static int
+ luaV_open(lua_State *L)
+ {
+ char_u *s = NULL;
+ #ifdef HAVE_SANDBOX
+ luaV_checksandbox(L);
+ #endif
+ if (lua_isstring(L, 1)) s = (char_u *) lua_tostring(L, 1);
+! luaV_pushbuffer(L, buflist_new(s, NULL, 1L, BLN_LISTED));
+ return 1;
+ }
+
+*** ../vim-7.3.369/src/version.c 2011-12-08 15:57:54.000000000 +0100
+--- src/version.c 2011-12-08 15:59:35.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 370,
+ /**/
+
+--
+Emacs is a nice OS - but it lacks a good text editor.
+That's why I am using Vim. --Anonymous
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.371 b/source/ap/vim/patches/7.3.371
new file mode 100644
index 000000000..1701c1189
--- /dev/null
+++ b/source/ap/vim/patches/7.3.371
@@ -0,0 +1,75 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.371
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.371
+Problem: Crash in autocomplete. (Greg Weber)
+Solution: Check not going over allocated buffer size.
+Files: src/misc2.c
+
+
+*** ../vim-7.3.370/src/misc2.c 2011-10-26 11:40:56.000000000 +0200
+--- src/misc2.c 2011-12-08 17:49:23.000000000 +0100
+***************
+*** 4293,4298 ****
+--- 4293,4300 ----
+ static int ff_path_in_stoplist __ARGS((char_u *, int, char_u **));
+ #endif
+
++ static char_u e_pathtoolong[] = N_("E854: path too long for completion");
++
+ #if 0
+ /*
+ * if someone likes findfirst/findnext, here are the functions
+***************
+*** 4589,4594 ****
+--- 4591,4601 ----
+ len = 0;
+ while (*wc_part != NUL)
+ {
++ if (len + 5 >= MAXPATHL)
++ {
++ EMSG(_(e_pathtoolong));
++ break;
++ }
+ if (STRNCMP(wc_part, "**", 2) == 0)
+ {
+ ff_expand_buffer[len++] = *wc_part++;
+***************
+*** 4634,4639 ****
+--- 4641,4652 ----
+ }
+
+ /* create an absolute path */
++ if (STRLEN(search_ctx->ffsc_start_dir)
++ + STRLEN(search_ctx->ffsc_fix_path) + 3 >= MAXPATHL)
++ {
++ EMSG(_(e_pathtoolong));
++ goto error_return;
++ }
+ STRCPY(ff_expand_buffer, search_ctx->ffsc_start_dir);
+ add_pathsep(ff_expand_buffer);
+ STRCAT(ff_expand_buffer, search_ctx->ffsc_fix_path);
+*** ../vim-7.3.370/src/version.c 2011-12-08 16:00:12.000000000 +0100
+--- src/version.c 2011-12-08 17:46:41.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 371,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+253. You wait for a slow loading web page before going to the toilet.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.372 b/source/ap/vim/patches/7.3.372
new file mode 100644
index 000000000..c9978c31e
--- /dev/null
+++ b/source/ap/vim/patches/7.3.372
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.372
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.372
+Problem: When using a command line mapping to <Up> with file name
+ completion to go one directory up, 'wildchar' is inserted.
+ (Yasuhiro Matsumoto)
+Solution: Set the KeyTyped flag.
+Files: src/ex_getln.c
+
+
+*** ../vim-7.3.371/src/ex_getln.c 2011-10-26 22:02:10.000000000 +0200
+--- src/ex_getln.c 2011-12-08 18:40:49.000000000 +0100
+***************
+*** 645,651 ****
+--- 645,655 ----
+ }
+ else if (ccline.cmdpos > i)
+ cmdline_del(i);
++
++ /* Now complete in the new directory. Set KeyTyped in case the
++ * Up key came from a mapping. */
+ c = p_wc;
++ KeyTyped = TRUE;
+ }
+ }
+
+*** ../vim-7.3.371/src/version.c 2011-12-08 17:49:31.000000000 +0100
+--- src/version.c 2011-12-08 18:42:54.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 372,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+255. You work for a newspaper and your editor asks you to write an
+ article about Internet addiction...in the "first person."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.373 b/source/ap/vim/patches/7.3.373
new file mode 100644
index 000000000..3e8937a03
--- /dev/null
+++ b/source/ap/vim/patches/7.3.373
@@ -0,0 +1,78 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.373
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.373 (after 7.3.366)
+Problem: A tags file with an extremely long name may cause an infinite loop.
+Solution: When encountering a long name switch to linear search.
+Files: src/tag.c
+
+
+*** ../vim-7.3.372/src/tag.c 2011-12-08 15:12:08.000000000 +0100
+--- src/tag.c 2011-12-14 14:13:28.000000000 +0100
+***************
+*** 1854,1860 ****
+
+ if (state == TS_BINARY && orgpat.regmatch.rm_ic && !sortic)
+ {
+! /* binary search won't work for ignoring case, use linear
+ * search. */
+ linear = TRUE;
+ state = TS_LINEAR;
+--- 1854,1860 ----
+
+ if (state == TS_BINARY && orgpat.regmatch.rm_ic && !sortic)
+ {
+! /* Binary search won't work for ignoring case, use linear
+ * search. */
+ linear = TRUE;
+ state = TS_LINEAR;
+***************
+*** 1922,1927 ****
+--- 1922,1940 ----
+ MSG(_("Ignoring long line in tags file"));
+ verbose_leave();
+ }
++ #ifdef FEAT_TAG_BINS
++ if (state != TS_LINEAR)
++ {
++ /* Avoid getting stuck. */
++ linear = TRUE;
++ state = TS_LINEAR;
++ # ifdef HAVE_FSEEKO
++ fseeko(fp, search_info.low_offset, SEEK_SET);
++ # else
++ fseek(fp, (long)search_info.low_offset, SEEK_SET);
++ # endif
++ }
++ #endif
+ continue;
+ }
+
+*** ../vim-7.3.372/src/version.c 2011-12-08 18:44:47.000000000 +0100
+--- src/version.c 2011-12-14 14:12:06.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 373,
+ /**/
+
+--
+ZOOT: I'm afraid our life must seem very dull and quiet compared to yours.
+ We are but eightscore young blondes, all between sixteen and
+ nineteen-and-a-half, cut off in this castle, with no one to protect us.
+ Oooh. It is a lonely life ... bathing ... dressing ... undressing ...
+ making exciting underwear....
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.374 b/source/ap/vim/patches/7.3.374
new file mode 100644
index 000000000..b312828ae
--- /dev/null
+++ b/source/ap/vim/patches/7.3.374
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.374
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.374
+Problem: ++encoding does not work properly.
+Solution: Recognize ++encoding before ++enc. (Charles Cooper)
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.3.373/src/ex_docmd.c 2011-10-20 21:58:20.000000000 +0200
+--- src/ex_docmd.c 2011-12-14 14:46:05.000000000 +0100
+***************
+*** 4840,4851 ****
+ #ifdef FEAT_MBYTE
+ else if (STRNCMP(arg, "enc", 3) == 0)
+ {
+! arg += 3;
+! pp = &eap->force_enc;
+! }
+! else if (STRNCMP(arg, "encoding", 8) == 0)
+! {
+! arg += 8;
+ pp = &eap->force_enc;
+ }
+ else if (STRNCMP(arg, "bad", 3) == 0)
+--- 4840,4849 ----
+ #ifdef FEAT_MBYTE
+ else if (STRNCMP(arg, "enc", 3) == 0)
+ {
+! if (STRNCMP(arg, "encoding", 8) == 0)
+! arg += 8;
+! else
+! arg += 3;
+ pp = &eap->force_enc;
+ }
+ else if (STRNCMP(arg, "bad", 3) == 0)
+*** ../vim-7.3.373/src/version.c 2011-12-14 14:15:12.000000000 +0100
+--- src/version.c 2011-12-14 14:44:01.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 374,
+ /**/
+
+--
+Linux is just like a wigwam: no Windows, no Gates and an Apache inside.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.375 b/source/ap/vim/patches/7.3.375
new file mode 100644
index 000000000..6f15fea1b
--- /dev/null
+++ b/source/ap/vim/patches/7.3.375
@@ -0,0 +1,64 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.375
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.375
+Problem: Duplicate return statement.
+Solution: Remove the superfluous one. (Dominique Pelle)
+Files: src/gui_mac.c
+
+
+*** ../vim-7.3.374/src/gui_mac.c 2011-06-19 01:14:22.000000000 +0200
+--- src/gui_mac.c 2011-12-10 17:20:59.000000000 +0100
+***************
+*** 3216,3222 ****
+ {
+ /* TODO:
+ * This proc is called when Normal is set to a value
+! * so what msut be done? I don't know
+ */
+ }
+
+--- 3216,3222 ----
+ {
+ /* TODO:
+ * This proc is called when Normal is set to a value
+! * so what must be done? I don't know
+ */
+ }
+
+***************
+*** 3303,3309 ****
+ *x = bounds.left;
+ *y = bounds.top;
+ return OK;
+- return FAIL;
+ }
+
+ /*
+--- 3303,3308 ----
+*** ../vim-7.3.374/src/version.c 2011-12-14 14:49:41.000000000 +0100
+--- src/version.c 2011-12-14 15:06:01.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 375,
+ /**/
+
+--
+GALAHAD: No look, really, this isn't nescess ...
+PIGLET: We must examine you.
+GALAHAD: There's nothing wrong with ... that.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.376 b/source/ap/vim/patches/7.3.376
new file mode 100644
index 000000000..1e20743e0
--- /dev/null
+++ b/source/ap/vim/patches/7.3.376
@@ -0,0 +1,57 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.376
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.376
+Problem: Win32: Toolbar repainting does not work when the mouse pointer
+ hovers over a button.
+Solution: Call DefWindowProc() when not handling an event. (Sergiu Dotenco)
+Files: src/gui_w32.c
+
+
+*** ../vim-7.3.375/src/gui_w32.c 2011-08-10 17:07:56.000000000 +0200
+--- src/gui_w32.c 2011-12-14 15:14:48.000000000 +0100
+***************
+*** 1101,1107 ****
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+ }
+
+! return 1;
+ }
+
+ /*
+--- 1101,1107 ----
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+ }
+
+! return DefWindowProc(hwnd, uMsg, wParam, lParam);
+ }
+
+ /*
+*** ../vim-7.3.375/src/version.c 2011-12-14 15:07:11.000000000 +0100
+--- src/version.c 2011-12-14 15:23:10.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 376,
+ /**/
+
+--
+ GALAHAD hurries to the door and pushes through it. As he leaves the room
+ we CUT TO the reverse to show that he is now in a room full of bathing
+ and romping GIRLIES, all innocent, wide-eyed and beautiful. They smile
+ enchantingly at him as he tries to keep walking without being diverted by
+ the lovely sights assaulting his eyeballs.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.377 b/source/ap/vim/patches/7.3.377
new file mode 100644
index 000000000..1a2df1d5c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.377
@@ -0,0 +1,406 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.377
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.377
+Problem: No support for bitwise AND, OR, XOR and invert.
+Solution: Add and(), or(), invert() and xor() functions.
+Files: src/eval.c, src/testdir/test49.in, src/testdir/test65.in,
+ src/testdir/test65.ok, runtime/doc/eval.txt
+
+
+*** ../vim-7.3.376/src/eval.c 2011-11-30 15:19:25.000000000 +0100
+--- src/eval.c 2011-12-11 13:49:31.000000000 +0100
+***************
+*** 474,479 ****
+--- 474,480 ----
+ static void f_acos __ARGS((typval_T *argvars, typval_T *rettv));
+ #endif
+ static void f_add __ARGS((typval_T *argvars, typval_T *rettv));
++ static void f_and __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_append __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_argc __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_argidx __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 602,607 ****
+--- 603,609 ----
+ static void f_inputsave __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_inputsecret __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_insert __ARGS((typval_T *argvars, typval_T *rettv));
++ static void f_invert __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_isdirectory __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_islocked __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_items __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 640,645 ****
+--- 642,648 ----
+ #endif
+ static void f_nextnonblank __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_nr2char __ARGS((typval_T *argvars, typval_T *rettv));
++ static void f_or __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_pathshorten __ARGS((typval_T *argvars, typval_T *rettv));
+ #ifdef FEAT_FLOAT
+ static void f_pow __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 751,756 ****
+--- 754,760 ----
+ static void f_winsaveview __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_winwidth __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_writefile __ARGS((typval_T *argvars, typval_T *rettv));
++ static void f_xor __ARGS((typval_T *argvars, typval_T *rettv));
+
+ static int list2fpos __ARGS((typval_T *arg, pos_T *posp, int *fnump));
+ static pos_T *var2fpos __ARGS((typval_T *varp, int dollar_lnum, int *fnum));
+***************
+*** 7715,7720 ****
+--- 7719,7725 ----
+ {"acos", 1, 1, f_acos}, /* WJMc */
+ #endif
+ {"add", 2, 2, f_add},
++ {"and", 2, 2, f_and},
+ {"append", 2, 2, f_append},
+ {"argc", 0, 0, f_argc},
+ {"argidx", 0, 0, f_argidx},
+***************
+*** 7850,7855 ****
+--- 7855,7861 ----
+ {"inputsave", 0, 0, f_inputsave},
+ {"inputsecret", 1, 2, f_inputsecret},
+ {"insert", 2, 3, f_insert},
++ {"invert", 1, 1, f_invert},
+ {"isdirectory", 1, 1, f_isdirectory},
+ {"islocked", 1, 1, f_islocked},
+ {"items", 1, 1, f_items},
+***************
+*** 7888,7893 ****
+--- 7894,7900 ----
+ #endif
+ {"nextnonblank", 1, 1, f_nextnonblank},
+ {"nr2char", 1, 1, f_nr2char},
++ {"or", 2, 2, f_or},
+ {"pathshorten", 1, 1, f_pathshorten},
+ #ifdef FEAT_FLOAT
+ {"pow", 2, 2, f_pow},
+***************
+*** 7999,8004 ****
+--- 8006,8012 ----
+ {"winsaveview", 0, 0, f_winsaveview},
+ {"winwidth", 1, 1, f_winwidth},
+ {"writefile", 2, 3, f_writefile},
++ {"xor", 2, 2, f_xor},
+ };
+
+ #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
+***************
+*** 8572,8577 ****
+--- 8580,8597 ----
+ }
+
+ /*
++ * "and(expr, expr)" function
++ */
++ static void
++ f_and(argvars, rettv)
++ typval_T *argvars;
++ typval_T *rettv;
++ {
++ rettv->vval.v_number = get_tv_number_chk(&argvars[0], NULL)
++ & get_tv_number_chk(&argvars[1], NULL);
++ }
++
++ /*
+ * "append(lnum, string/list)" function
+ */
+ static void
+***************
+*** 12958,12963 ****
+--- 12978,12994 ----
+ }
+
+ /*
++ * "invert(expr)" function
++ */
++ static void
++ f_invert(argvars, rettv)
++ typval_T *argvars;
++ typval_T *rettv;
++ {
++ rettv->vval.v_number = ~get_tv_number_chk(&argvars[0], NULL);
++ }
++
++ /*
+ * "isdirectory()" function
+ */
+ static void
+***************
+*** 14108,14113 ****
+--- 14139,14156 ----
+ }
+
+ /*
++ * "or(expr, expr)" function
++ */
++ static void
++ f_or(argvars, rettv)
++ typval_T *argvars;
++ typval_T *rettv;
++ {
++ rettv->vval.v_number = get_tv_number_chk(&argvars[0], NULL)
++ | get_tv_number_chk(&argvars[1], NULL);
++ }
++
++ /*
+ * "pathshorten()" function
+ */
+ static void
+***************
+*** 18394,18399 ****
+--- 18437,18455 ----
+ }
+
+ /*
++ * "xor(expr, expr)" function
++ */
++ static void
++ f_xor(argvars, rettv)
++ typval_T *argvars;
++ typval_T *rettv;
++ {
++ rettv->vval.v_number = get_tv_number_chk(&argvars[0], NULL)
++ ^ get_tv_number_chk(&argvars[1], NULL);
++ }
++
++
++ /*
+ * Translate a String variable into a position.
+ * Returns NULL when there is an error.
+ */
+*** ../vim-7.3.376/src/testdir/test65.in 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test65.in 2011-12-11 13:55:06.000000000 +0100
+***************
+*** 1,4 ****
+! Test for floating point.
+
+ STARTTEST
+ :so small.vim
+--- 1,4 ----
+! Test for floating point and logical operators.
+
+ STARTTEST
+ :so small.vim
+***************
+*** 72,77 ****
+--- 72,94 ----
+ :$put ='float2nr'
+ :$put =float2nr(123.456)
+ :$put =float2nr(-123.456)
++ :$put ='AND'
++ :$put =and(127, 127)
++ :$put =and(127, 16)
++ :$put =and(127, 128)
++ :$put ='OR'
++ :$put =or(16, 7)
++ :$put =or(8, 7)
++ :$put =or(0, 123)
++ :$put ='XOR'
++ :$put =xor(127, 127)
++ :$put =xor(127, 16)
++ :$put =xor(127, 128)
++ :$put ='invert'
++ :$put =and(invert(127), 65535)
++ :$put =and(invert(16), 65535)
++ :$put =and(invert(128), 65535)
++ :$put =invert(1.0)
+ :/^Results/,$wq! test.out
+ ENDTEST
+
+*** ../vim-7.3.376/src/testdir/test65.ok 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test65.ok 2011-12-11 13:55:30.000000000 +0100
+***************
+*** 54,56 ****
+--- 54,73 ----
+ float2nr
+ 123
+ -123
++ AND
++ 127
++ 16
++ 0
++ OR
++ 23
++ 15
++ 123
++ XOR
++ 0
++ 111
++ 255
++ invert
++ 65408
++ 65519
++ 65407
++ 0
+*** ../vim-7.3.376/runtime/doc/eval.txt 2011-06-19 02:55:32.000000000 +0200
+--- runtime/doc/eval.txt 2011-12-14 15:28:23.000000000 +0100
+***************
+*** 798,808 ****
+ For |Lists| only "+" is possible and then both expr6 must be a list. The
+ result is a new list with the two lists Concatenated.
+
+! expr7 * expr7 .. number multiplication *expr-star*
+! expr7 / expr7 .. number division *expr-/*
+! expr7 % expr7 .. number modulo *expr-%*
+
+ For all, except ".", Strings are converted to Numbers.
+
+ Note the difference between "+" and ".":
+ "123" + "456" = 579
+--- 800,811 ----
+ For |Lists| only "+" is possible and then both expr6 must be a list. The
+ result is a new list with the two lists Concatenated.
+
+! expr7 * expr7 .. Number multiplication *expr-star*
+! expr7 / expr7 .. Number division *expr-/*
+! expr7 % expr7 .. Number modulo *expr-%*
+
+ For all, except ".", Strings are converted to Numbers.
++ For bitwise operators see |and()|, |or()| and |xor()|.
+
+ Note the difference between "+" and ".":
+ "123" + "456" = 579
+***************
+*** 1679,1684 ****
+--- 1688,1694 ----
+ abs( {expr}) Float or Number absolute value of {expr}
+ acos( {expr}) Float arc cosine of {expr}
+ add( {list}, {item}) List append {item} to |List| {list}
++ and( {expr}, {expr}) Number bitwise AND
+ append( {lnum}, {string}) Number append {string} below line {lnum}
+ append( {lnum}, {list}) Number append lines {list} below line {lnum}
+ argc() Number number of files in the argument list
+***************
+*** 1817,1822 ****
+--- 1827,1833 ----
+ inputsave() Number save and clear typeahead
+ inputsecret( {prompt} [, {text}]) String like input() but hiding the text
+ insert( {list}, {item} [, {idx}]) List insert {item} in {list} [before {idx}]
++ invert( {expr}) Number bitwise invert
+ isdirectory( {directory}) Number TRUE if {directory} is a directory
+ islocked( {expr}) Number TRUE if {expr} is locked
+ items( {dict}) List key-value pairs in {dict}
+***************
+*** 1856,1861 ****
+--- 1868,1874 ----
+ mzeval( {expr}) any evaluate |MzScheme| expression
+ nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum}
+ nr2char( {expr}) String single char with ASCII value {expr}
++ or( {expr}, {expr}) Number bitwise OR
+ pathshorten( {expr}) String shorten directory names in a path
+ pow( {x}, {y}) Float {x} to the power of {y}
+ prevnonblank( {lnum}) Number line nr of non-blank line <= {lnum}
+***************
+*** 1978,1983 ****
+--- 1992,1998 ----
+ winwidth( {nr}) Number width of window {nr}
+ writefile( {list}, {fname} [, {binary}])
+ Number write list of lines to file {fname}
++ xor( {expr}, {expr}) Number bitwise XOR
+
+ abs({expr}) *abs()*
+ Return the absolute value of {expr}. When {expr} evaluates to
+***************
+*** 2017,2022 ****
+--- 2032,2044 ----
+ Use |insert()| to add an item at another position.
+
+
++ and({expr}, {expr}) *and()*
++ Bitwise AND on the two arguments. The arguments are converted
++ to a number. A List, Dict or Float argument causes an error.
++ Example: >
++ :let flag = and(bits, 0x80)
++
++
+ append({lnum}, {expr}) *append()*
+ When {expr} is a |List|: Append each item of the |List| as a
+ text line below line {lnum} in the current buffer.
+***************
+*** 3770,3775 ****
+--- 3798,3808 ----
+ Note that when {item} is a |List| it is inserted as a single
+ item. Use |extend()| to concatenate |Lists|.
+
++ invert({expr}) *invert()*
++ Bitwise invert. The argument is converted to a number. A
++ List, Dict or Float argument causes an error. Example: >
++ :let bits = invert(bits)
++
+ isdirectory({directory}) *isdirectory()*
+ The result is a Number, which is non-zero when a directory
+ with the name {directory} exists. If {directory} doesn't
+***************
+*** 4334,4339 ****
+--- 4368,4380 ----
+ call setpos('.', save_cursor)
+ < Also see |setpos()|.
+
++ or({expr}, {expr}) *or()*
++ Bitwise OR on the two arguments. The arguments are converted
++ to a number. A List, Dict or Float argument causes an error.
++ Example: >
++ :let bits = or(bits, 0x80)
++
++
+ pathshorten({expr}) *pathshorten()*
+ Shorten directory names in the path {expr} and return the
+ result. The tail, the file name, is kept as-is. The other
+***************
+*** 6097,6103 ****
+ To copy a file byte for byte: >
+ :let fl = readfile("foo", "b")
+ :call writefile(fl, "foocopy", "b")
+! <
+
+ *feature-list*
+ There are three types of features:
+--- 6149,6163 ----
+ To copy a file byte for byte: >
+ :let fl = readfile("foo", "b")
+ :call writefile(fl, "foocopy", "b")
+!
+!
+! xor({expr}, {expr}) *xor()*
+! Bitwise XOR on the two arguments. The arguments are converted
+! to a number. A List, Dict or Float argument causes an error.
+! Example: >
+! :let bits = xor(bits, 0x80)
+!
+!
+
+ *feature-list*
+ There are three types of features:
+*** ../vim-7.3.376/src/version.c 2011-12-14 15:23:53.000000000 +0100
+--- src/version.c 2011-12-14 15:28:39.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 377,
+ /**/
+
+--
+DINGO: Wicked wicked Zoot ... she is a bad person and she must pay the
+ penalty. And here in Castle Anthrax, we have but one punishment
+ ... you must tie her down on a bed ... and spank her. Come!
+GIRLS: A spanking! A spanking!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.378 b/source/ap/vim/patches/7.3.378
new file mode 100644
index 000000000..8ad3d7037
--- /dev/null
+++ b/source/ap/vim/patches/7.3.378
@@ -0,0 +1,71 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.378
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.378
+Problem: When cross-compiling the check for uint32_t fails.
+Solution: Only give a warning message. (Maksim Melnikau)
+Files: src/configure.in, src/auto/configure
+
+
+*** ../vim-7.3.377/src/configure.in 2011-12-08 15:17:28.000000000 +0100
+--- src/configure.in 2011-12-14 19:18:36.000000000 +0100
+***************
+*** 3283,3289 ****
+ }],
+ AC_MSG_RESULT(ok),
+ AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
+! AC_MSG_ERROR([could not compile program using uint32_t.]))
+
+ dnl Check for memmove() before bcopy(), makes memmove() be used when both are
+ dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
+--- 3283,3289 ----
+ }],
+ AC_MSG_RESULT(ok),
+ AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
+! AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
+
+ dnl Check for memmove() before bcopy(), makes memmove() be used when both are
+ dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
+*** ../vim-7.3.377/src/auto/configure 2011-12-08 15:17:28.000000000 +0100
+--- src/auto/configure 2011-12-14 19:20:55.000000000 +0100
+***************
+*** 11777,11783 ****
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking uint32_t is 32 bits" >&5
+ $as_echo_n "checking uint32_t is 32 bits... " >&6; }
+ if test "$cross_compiling" = yes; then :
+! as_fn_error "could not compile program using uint32_t." "$LINENO" 5
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+--- 11777,11784 ----
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking uint32_t is 32 bits" >&5
+ $as_echo_n "checking uint32_t is 32 bits... " >&6; }
+ if test "$cross_compiling" = yes; then :
+! { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check uint32_t when cross-compiling." >&5
+! $as_echo "$as_me: WARNING: cannot check uint32_t when cross-compiling." >&2;}
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+*** ../vim-7.3.377/src/version.c 2011-12-14 15:32:44.000000000 +0100
+--- src/version.c 2011-12-14 19:21:08.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 378,
+ /**/
+
+--
+ ### Hiroshima 45, Chernobyl 86, Windows 95 ###
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.379 b/source/ap/vim/patches/7.3.379
new file mode 100644
index 000000000..fd87f9a1e
--- /dev/null
+++ b/source/ap/vim/patches/7.3.379
@@ -0,0 +1,112 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.379
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.379
+Problem: C-indenting wrong for static enum.
+Solution: Skip over "static". (Lech Lorens)
+Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.378/src/misc1.c 2011-11-30 17:20:18.000000000 +0100
+--- src/misc1.c 2011-12-14 19:37:48.000000000 +0100
+***************
+*** 5138,5143 ****
+--- 5138,5146 ----
+ if (STRNCMP(s, "typedef", 7) == 0 && !vim_isIDc(s[7]))
+ s = cin_skipcomment(s + 7);
+
++ if (STRNCMP(s, "static", 6) == 0 && !vim_isIDc(s[6]))
++ s = cin_skipcomment(s + 6);
++
+ if (STRNCMP(s, "enum", 4) == 0 && !vim_isIDc(s[4]))
+ return TRUE;
+
+*** ../vim-7.3.378/src/testdir/test3.in 2011-11-30 17:20:18.000000000 +0100
+--- src/testdir/test3.in 2011-12-14 20:03:11.000000000 +0100
+***************
+*** 299,316 ****
+
+ enum soppie
+ {
+! yes = 0,
+! no,
+! maybe
+ };
+
+ typedef enum soppie
+ {
+! yes = 0,
+! no,
+! maybe
+ };
+
+ {
+ int a,
+ b;
+--- 299,323 ----
+
+ enum soppie
+ {
+! yes = 0,
+! no,
+! maybe
+ };
+
+ typedef enum soppie
+ {
+! yes = 0,
+! no,
+! maybe
+ };
+
++ static enum
++ {
++ yes = 0,
++ no,
++ maybe
++ } soppie;
++
+ {
+ int a,
+ b;
+*** ../vim-7.3.378/src/testdir/test3.ok 2011-11-30 17:20:18.000000000 +0100
+--- src/testdir/test3.ok 2011-12-14 19:37:48.000000000 +0100
+***************
+*** 299,304 ****
+--- 299,311 ----
+ maybe
+ };
+
++ static enum
++ {
++ yes = 0,
++ no,
++ maybe
++ } soppie;
++
+ {
+ int a,
+ b;
+*** ../vim-7.3.378/src/version.c 2011-12-14 19:22:29.000000000 +0100
+--- src/version.c 2011-12-14 20:02:19.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 379,
+ /**/
+
+--
+You cannot propel yourself forward by patting yourself on the back.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.380 b/source/ap/vim/patches/7.3.380
new file mode 100644
index 000000000..a8f4bcf65
--- /dev/null
+++ b/source/ap/vim/patches/7.3.380
@@ -0,0 +1,318 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.380
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.380
+Problem: C-indenting wrong for a function header.
+Solution: Skip to the start paren. (Lech Lorens)
+Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.379/src/misc1.c 2011-12-14 20:05:17.000000000 +0100
+--- src/misc1.c 2011-12-14 20:16:43.000000000 +0100
+***************
+*** 4943,4949 ****
+ static int cin_islinecomment __ARGS((char_u *));
+ static int cin_isterminated __ARGS((char_u *, int, int));
+ static int cin_isinit __ARGS((void));
+! static int cin_isfuncdecl __ARGS((char_u **, linenr_T));
+ static int cin_isif __ARGS((char_u *));
+ static int cin_iselse __ARGS((char_u *));
+ static int cin_isdo __ARGS((char_u *));
+--- 4943,4949 ----
+ static int cin_islinecomment __ARGS((char_u *));
+ static int cin_isterminated __ARGS((char_u *, int, int));
+ static int cin_isinit __ARGS((void));
+! static int cin_isfuncdecl __ARGS((char_u **, linenr_T, linenr_T, int, int));
+ static int cin_isif __ARGS((char_u *));
+ static int cin_iselse __ARGS((char_u *));
+ static int cin_isdo __ARGS((char_u *));
+***************
+*** 5585,5605 ****
+ * "sp" points to a string with the line. When looking at other lines it must
+ * be restored to the line. When it's NULL fetch lines here.
+ * "lnum" is where we start looking.
+ */
+ static int
+! cin_isfuncdecl(sp, first_lnum)
+ char_u **sp;
+ linenr_T first_lnum;
+ {
+ char_u *s;
+ linenr_T lnum = first_lnum;
+ int retval = FALSE;
+
+ if (sp == NULL)
+ s = ml_get(lnum);
+ else
+ s = *sp;
+
+ /* Ignore line starting with #. */
+ if (cin_ispreproc(s))
+ return FALSE;
+--- 5585,5621 ----
+ * "sp" points to a string with the line. When looking at other lines it must
+ * be restored to the line. When it's NULL fetch lines here.
+ * "lnum" is where we start looking.
++ * "min_lnum" is the line before which we will not be looking.
+ */
+ static int
+! cin_isfuncdecl(sp, first_lnum, min_lnum, ind_maxparen, ind_maxcomment)
+ char_u **sp;
+ linenr_T first_lnum;
++ linenr_T min_lnum;
++ int ind_maxparen;
++ int ind_maxcomment;
+ {
+ char_u *s;
+ linenr_T lnum = first_lnum;
+ int retval = FALSE;
++ pos_T *trypos;
++ int just_started = TRUE;
+
+ if (sp == NULL)
+ s = ml_get(lnum);
+ else
+ s = *sp;
+
++ if (find_last_paren(s, '(', ')')
++ && (trypos = find_match_paren(ind_maxparen, ind_maxcomment)) != NULL)
++ {
++ lnum = trypos->lnum;
++ if (lnum < min_lnum)
++ return FALSE;
++
++ s = ml_get(lnum);
++ }
++
+ /* Ignore line starting with #. */
+ if (cin_ispreproc(s))
+ return FALSE;
+***************
+*** 5650,5662 ****
+ /* Require a comma at end of the line or a comma or ')' at the
+ * start of next line. */
+ s = skipwhite(s);
+! if (!comma && *s != ',' && *s != ')')
+ break;
+ }
+ else if (cin_iscomment(s)) /* ignore comments */
+ s = cin_skipcomment(s);
+ else
+ ++s;
+ }
+
+ done:
+--- 5666,5682 ----
+ /* Require a comma at end of the line or a comma or ')' at the
+ * start of next line. */
+ s = skipwhite(s);
+! if (!just_started && (!comma && *s != ',' && *s != ')'))
+ break;
++ just_started = FALSE;
+ }
+ else if (cin_iscomment(s)) /* ignore comments */
+ s = cin_skipcomment(s);
+ else
++ {
+ ++s;
++ just_started = FALSE;
++ }
+ }
+
+ done:
+***************
+*** 7158,7164 ****
+ * (it's a variable declaration).
+ */
+ if (start_brace != BRACE_IN_COL0
+! || !cin_isfuncdecl(&l, curwin->w_cursor.lnum))
+ {
+ /* if the line is terminated with another ','
+ * it is a continued variable initialization.
+--- 7178,7185 ----
+ * (it's a variable declaration).
+ */
+ if (start_brace != BRACE_IN_COL0
+! || !cin_isfuncdecl(&l, curwin->w_cursor.lnum,
+! 0, ind_maxparen, ind_maxcomment))
+ {
+ /* if the line is terminated with another ','
+ * it is a continued variable initialization.
+***************
+*** 8019,8025 ****
+ && vim_strchr(theline, '}') == NULL
+ && !cin_ends_in(theline, (char_u *)":", NULL)
+ && !cin_ends_in(theline, (char_u *)",", NULL)
+! && cin_isfuncdecl(NULL, cur_curpos.lnum + 1)
+ && !cin_isterminated(theline, FALSE, TRUE))
+ {
+ amount = ind_func_type;
+--- 8040,8048 ----
+ && vim_strchr(theline, '}') == NULL
+ && !cin_ends_in(theline, (char_u *)":", NULL)
+ && !cin_ends_in(theline, (char_u *)",", NULL)
+! && cin_isfuncdecl(NULL, cur_curpos.lnum + 1,
+! cur_curpos.lnum + 1,
+! ind_maxparen, ind_maxcomment)
+ && !cin_isterminated(theline, FALSE, TRUE))
+ {
+ amount = ind_func_type;
+***************
+*** 8125,8131 ****
+ * If the line looks like a function declaration, and we're
+ * not in a comment, put it the left margin.
+ */
+! if (cin_isfuncdecl(NULL, cur_curpos.lnum)) /* XXX */
+ break;
+ l = ml_get_curline();
+
+--- 8148,8155 ----
+ * If the line looks like a function declaration, and we're
+ * not in a comment, put it the left margin.
+ */
+! if (cin_isfuncdecl(NULL, cur_curpos.lnum, 0,
+! ind_maxparen, ind_maxcomment)) /* XXX */
+ break;
+ l = ml_get_curline();
+
+***************
+*** 8173,8179 ****
+ * line (and the ones that follow) needs to be indented as
+ * parameters.
+ */
+! if (cin_isfuncdecl(&l, curwin->w_cursor.lnum))
+ {
+ amount = ind_param;
+ break;
+--- 8197,8204 ----
+ * line (and the ones that follow) needs to be indented as
+ * parameters.
+ */
+! if (cin_isfuncdecl(&l, curwin->w_cursor.lnum, 0,
+! ind_maxparen, ind_maxcomment))
+ {
+ amount = ind_param;
+ break;
+*** ../vim-7.3.379/src/testdir/test3.in 2011-12-14 20:05:17.000000000 +0100
+--- src/testdir/test3.in 2011-12-14 20:11:24.000000000 +0100
+***************
+*** 1429,1435 ****
+
+ STARTTEST
+ :set cino&
+! 2kdd=4][
+ ENDTEST
+
+ void func(void)
+--- 1429,1435 ----
+
+ STARTTEST
+ :set cino&
+! 2kdd=7][
+ ENDTEST
+
+ void func(void)
+***************
+*** 1478,1484 ****
+ 3, 4,
+ 5, 6};
+
+! printf("Don't you dare indent this line incorrectly!\n);
+ }
+
+ STARTTEST
+--- 1478,1506 ----
+ 3, 4,
+ 5, 6};
+
+! printf("Don't you dare indent this line incorrectly!\n");
+! }
+!
+! void
+! func4(a, b,
+! c)
+! int a;
+! int b;
+! int c;
+! {
+! }
+!
+! void
+! func5(
+! int a,
+! int b)
+! {
+! }
+!
+! void
+! func6(
+! int a)
+! {
+ }
+
+ STARTTEST
+*** ../vim-7.3.379/src/testdir/test3.ok 2011-12-14 20:05:17.000000000 +0100
+--- src/testdir/test3.ok 2011-12-14 20:11:24.000000000 +0100
+***************
+*** 1331,1337 ****
+ 3, 4,
+ 5, 6};
+
+! printf("Don't you dare indent this line incorrectly!\n);
+ }
+
+
+--- 1331,1359 ----
+ 3, 4,
+ 5, 6};
+
+! printf("Don't you dare indent this line incorrectly!\n");
+! }
+!
+! void
+! func4(a, b,
+! c)
+! int a;
+! int b;
+! int c;
+! {
+! }
+!
+! void
+! func5(
+! int a,
+! int b)
+! {
+! }
+!
+! void
+! func6(
+! int a)
+! {
+ }
+
+
+*** ../vim-7.3.379/src/version.c 2011-12-14 20:05:17.000000000 +0100
+--- src/version.c 2011-12-14 20:20:50.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 380,
+ /**/
+
+--
+"Intelligence has much less practical application than you'd think."
+ -- Scott Adams, Dilbert.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.381 b/source/ap/vim/patches/7.3.381
new file mode 100644
index 000000000..b79573792
--- /dev/null
+++ b/source/ap/vim/patches/7.3.381
@@ -0,0 +1,260 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.381
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.381
+Problem: Configure silently skips interfaces that won't work.
+Solution: Add the --enable-fail_if_missing argument. (Shlomi Fish)
+Files: src/Makefile, src/configure.in, src/auto/configure
+
+
+*** ../vim-7.3.380/src/Makefile 2011-12-08 15:17:28.000000000 +0100
+--- src/Makefile 2011-12-14 20:49:26.000000000 +0100
+***************
+*** 389,394 ****
+--- 389,399 ----
+ #CONF_OPT_PLTHOME = --with-plthome=/usr/local/drscheme
+ #CONF_OPT_PLTHOME = --with-plthome=/home/me/mz
+
++ # Uncomment the next line to fail if one of the requested language interfaces
++ # cannot be configured. Without this Vim will be build anyway, without
++ # the failing interfaces.
++ #CONF_OPT_FAIL = --enable-fail-if-missing
++
+ # PERL
+ # Uncomment one of these when you want to include the Perl interface.
+ # First one is for static linking, second one for dynamic loading.
+***************
+*** 1648,1654 ****
+ CC="$(CC)" CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" \
+ LDFLAGS="$(LDFLAGS)" $(CONF_SHELL) srcdir="$(srcdir)" \
+ ./configure $(CONF_OPT_GUI) $(CONF_OPT_X) $(CONF_OPT_XSMP) \
+! $(CONF_OPT_DARWIN) $(CONF_OPT_PERL) $(CONF_OPT_PYTHON) $(CONF_OPT_PYTHON3) \
+ $(CONF_OPT_TCL) $(CONF_OPT_RUBY) $(CONF_OPT_NLS) \
+ $(CONF_OPT_CSCOPE) $(CONF_OPT_MULTIBYTE) $(CONF_OPT_INPUT) \
+ $(CONF_OPT_OUTPUT) $(CONF_OPT_GPM) $(CONF_OPT_WORKSHOP) \
+--- 1653,1660 ----
+ CC="$(CC)" CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" \
+ LDFLAGS="$(LDFLAGS)" $(CONF_SHELL) srcdir="$(srcdir)" \
+ ./configure $(CONF_OPT_GUI) $(CONF_OPT_X) $(CONF_OPT_XSMP) \
+! $(CONF_OPT_DARWIN) $(CONF_OPT_FAIL) \
+! $(CONF_OPT_PERL) $(CONF_OPT_PYTHON) $(CONF_OPT_PYTHON3) \
+ $(CONF_OPT_TCL) $(CONF_OPT_RUBY) $(CONF_OPT_NLS) \
+ $(CONF_OPT_CSCOPE) $(CONF_OPT_MULTIBYTE) $(CONF_OPT_INPUT) \
+ $(CONF_OPT_OUTPUT) $(CONF_OPT_GPM) $(CONF_OPT_WORKSHOP) \
+*** ../vim-7.3.380/src/configure.in 2011-12-14 19:22:29.000000000 +0100
+--- src/configure.in 2011-12-14 20:46:36.000000000 +0100
+***************
+*** 28,33 ****
+--- 28,43 ----
+ AC_HEADER_STDC
+ AC_HEADER_SYS_WAIT
+
++ dnl Check for the flag that fails if stuff are missing.
++
++ AC_MSG_CHECKING(--enable-fail-if-missing argument)
++ AC_ARG_ENABLE(fail_if_missing,
++ [ --enable-fail-if-missing Fail if dependencies on additional features
++ specified on the command line are missing.],
++ [fail_if_missing="yes"],
++ [fail_if_missing="no"])
++ AC_MSG_RESULT($fail_if_missing)
++
+ dnl Set default value for CFLAGS if none is defined or it's empty
+ if test -z "$CFLAGS"; then
+ CFLAGS="-O"
+***************
+*** 491,496 ****
+--- 501,509 ----
+ LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS"
+ fi
+ fi
++ if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
++ AC_MSG_ERROR([could not configure lua])
++ fi
+ AC_SUBST(LUA_SRC)
+ AC_SUBST(LUA_OBJ)
+ AC_SUBST(LUA_PRO)
+***************
+*** 781,786 ****
+--- 794,803 ----
+ PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
+ fi
+ fi
++
++ if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
++ AC_MSG_ERROR([could not configure perl])
++ fi
+ fi
+ AC_SUBST(shrpenv)
+ AC_SUBST(PERL_SRC)
+***************
+*** 966,971 ****
+--- 983,992 ----
+ AC_MSG_RESULT(too old)
+ fi
+ fi
++
++ if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
++ AC_MSG_ERROR([could not configure python])
++ fi
+ fi
+
+ AC_SUBST(PYTHON_CONFDIR)
+***************
+*** 1389,1394 ****
+--- 1410,1418 ----
+ AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
+ fi
+ fi
++ if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
++ AC_MSG_ERROR([could not configure Tcl])
++ fi
+ fi
+ AC_SUBST(TCL_SRC)
+ AC_SUBST(TCL_OBJ)
+***************
+*** 1469,1474 ****
+--- 1493,1502 ----
+ AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
+ fi
+ fi
++
++ if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
++ AC_MSG_ERROR([could not configure Ruby])
++ fi
+ fi
+ AC_SUBST(RUBY_SRC)
+ AC_SUBST(RUBY_OBJ)
+*** ../vim-7.3.380/src/auto/configure 2011-12-14 19:22:29.000000000 +0100
+--- src/auto/configure 2011-12-14 20:49:51.000000000 +0100
+***************
+*** 741,746 ****
+--- 741,747 ----
+ ac_subst_files=''
+ ac_user_opts='
+ enable_option_checking
++ enable_fail_if_missing
+ enable_darwin
+ with_mac_arch
+ with_developer_dir
+***************
+*** 1418,1423 ****
+--- 1419,1426 ----
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
++ --enable-fail-if-missing Fail if dependencies on additional features
++ specified on the command line are missing.
+ --disable-darwin Disable Darwin (Mac OS X) support.
+ --disable-selinux Don't check for SELinux support.
+ --disable-xsmp Disable XSMP session management
+***************
+*** 3949,3954 ****
+--- 3952,3970 ----
+ fi
+
+
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-fail-if-missing argument" >&5
++ $as_echo_n "checking --enable-fail-if-missing argument... " >&6; }
++ # Check whether --enable-fail_if_missing was given.
++ if test "${enable_fail_if_missing+set}" = set; then :
++ enableval=$enable_fail_if_missing; fail_if_missing="yes"
++ else
++ fail_if_missing="no"
++ fi
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fail_if_missing" >&5
++ $as_echo "$fail_if_missing" >&6; }
++
+ if test -z "$CFLAGS"; then
+ CFLAGS="-O"
+ test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
+***************
+*** 4727,4732 ****
+--- 4743,4751 ----
+ LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS"
+ fi
+ fi
++ if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
++ as_fn_error "could not configure lua" "$LINENO" 5
++ fi
+
+
+
+***************
+*** 5140,5145 ****
+--- 5159,5168 ----
+ PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
+ fi
+ fi
++
++ if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
++ as_fn_error "could not configure perl" "$LINENO" 5
++ fi
+ fi
+
+
+***************
+*** 5429,5434 ****
+--- 5452,5461 ----
+ $as_echo "too old" >&6; }
+ fi
+ fi
++
++ if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
++ as_fn_error "could not configure python" "$LINENO" 5
++ fi
+ fi
+
+
+***************
+*** 6216,6221 ****
+--- 6243,6251 ----
+ $as_echo "too old; need Tcl version 8.0 or later" >&6; }
+ fi
+ fi
++ if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
++ as_fn_error "could not configure Tcl" "$LINENO" 5
++ fi
+ fi
+
+
+***************
+*** 6353,6358 ****
+--- 6383,6392 ----
+ $as_echo "too old; need Ruby version 1.6.0 or later" >&6; }
+ fi
+ fi
++
++ if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
++ as_fn_error "could not configure Ruby" "$LINENO" 5
++ fi
+ fi
+
+
+*** ../vim-7.3.380/src/version.c 2011-12-14 20:21:29.000000000 +0100
+--- src/version.c 2011-12-14 20:50:42.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 381,
+ /**/
+
+--
+The psychic said, "God bless you." I said, "I didn't sneeze." She
+looked deep into my eyes and said, "You will, eventually." And, damn
+if she wasn't right. Two days later, I sneezed. --Ellen Degeneres
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.382 b/source/ap/vim/patches/7.3.382
new file mode 100644
index 000000000..7f344e7e1
--- /dev/null
+++ b/source/ap/vim/patches/7.3.382
@@ -0,0 +1,173 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.382
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.382 (after 7.3.376)
+Problem: IME characters are inserted twice.
+Solution: Do not call DefWindowProc() if the event was handled. (Yasuhiro
+ Matsumoto)
+Files: src/gui_w32.c
+
+
+*** ../vim-7.3.381/src/gui_w32.c 2011-12-14 15:23:53.000000000 +0100
+--- src/gui_w32.c 2011-12-15 21:50:51.000000000 +0100
+***************
+*** 798,804 ****
+ if (pt.y < rect.top)
+ {
+ show_tabline_popup_menu();
+! return 0;
+ }
+ }
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+--- 798,804 ----
+ if (pt.y < rect.top)
+ {
+ show_tabline_popup_menu();
+! return 0L;
+ }
+ }
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+***************
+*** 828,834 ****
+--- 828,837 ----
+
+ case WM_ENDSESSION:
+ if (wParam) /* system only really goes down when wParam is TRUE */
++ {
+ _OnEndSession();
++ return 0L;
++ }
+ break;
+
+ case WM_CHAR:
+***************
+*** 866,872 ****
+ * are received, mouse pointer remains hidden. */
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+ #else
+! return 0;
+ #endif
+
+ case WM_SIZING: /* HANDLE_MSG doesn't seem to handle this one */
+--- 869,875 ----
+ * are received, mouse pointer remains hidden. */
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+ #else
+! return 0L;
+ #endif
+
+ case WM_SIZING: /* HANDLE_MSG doesn't seem to handle this one */
+***************
+*** 874,880 ****
+
+ case WM_MOUSEWHEEL:
+ _OnMouseWheel(hwnd, HIWORD(wParam));
+! break;
+
+ /* Notification for change in SystemParametersInfo() */
+ case WM_SETTINGCHANGE:
+--- 877,883 ----
+
+ case WM_MOUSEWHEEL:
+ _OnMouseWheel(hwnd, HIWORD(wParam));
+! return 0L;
+
+ /* Notification for change in SystemParametersInfo() */
+ case WM_SETTINGCHANGE:
+***************
+*** 987,999 ****
+--- 990,1008 ----
+ case TCN_SELCHANGE:
+ if (gui_mch_showing_tabline()
+ && ((LPNMHDR)lParam)->hwndFrom == s_tabhwnd)
++ {
+ send_tabline_event(TabCtrl_GetCurSel(s_tabhwnd) + 1);
++ return 0L;
++ }
+ break;
+
+ case NM_RCLICK:
+ if (gui_mch_showing_tabline()
+ && ((LPNMHDR)lParam)->hwndFrom == s_tabhwnd)
++ {
+ show_tabline_popup_menu();
++ return 0L;
++ }
+ break;
+ # endif
+ default:
+***************
+*** 1037,1042 ****
+--- 1046,1052 ----
+ out_flush();
+ did_menu_tip = TRUE;
+ }
++ return 0L;
+ }
+ break;
+ #endif
+***************
+*** 1079,1096 ****
+ case WM_IME_NOTIFY:
+ if (!_OnImeNotify(hwnd, (DWORD)wParam, (DWORD)lParam))
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+! break;
+ case WM_IME_COMPOSITION:
+ if (!_OnImeComposition(hwnd, wParam, lParam))
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+! break;
+ #endif
+
+ default:
+ if (uMsg == msh_msgmousewheel && msh_msgmousewheel != 0)
+ { /* handle MSH_MOUSEWHEEL messages for Intellimouse */
+ _OnMouseWheel(hwnd, HIWORD(wParam));
+! break;
+ }
+ #ifdef MSWIN_FIND_REPLACE
+ else if (uMsg == s_findrep_msg && s_findrep_msg != 0)
+--- 1089,1107 ----
+ case WM_IME_NOTIFY:
+ if (!_OnImeNotify(hwnd, (DWORD)wParam, (DWORD)lParam))
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+! return 1L;
+!
+ case WM_IME_COMPOSITION:
+ if (!_OnImeComposition(hwnd, wParam, lParam))
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+! return 1L;
+ #endif
+
+ default:
+ if (uMsg == msh_msgmousewheel && msh_msgmousewheel != 0)
+ { /* handle MSH_MOUSEWHEEL messages for Intellimouse */
+ _OnMouseWheel(hwnd, HIWORD(wParam));
+! return 0L;
+ }
+ #ifdef MSWIN_FIND_REPLACE
+ else if (uMsg == s_findrep_msg && s_findrep_msg != 0)
+*** ../vim-7.3.381/src/version.c 2011-12-14 20:51:19.000000000 +0100
+--- src/version.c 2011-12-15 21:48:49.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 382,
+ /**/
+
+--
+Even got a Datapoint 3600(?) with a DD50 connector instead of the
+usual DB25... what a nightmare trying to figure out the pinout
+for *that* with no spex...
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.383 b/source/ap/vim/patches/7.3.383
new file mode 100644
index 000000000..c0ce6d905
--- /dev/null
+++ b/source/ap/vim/patches/7.3.383
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.383
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.383
+Problem: For EBCDIC pound sign is defined as 't'.
+Solution: Correctly define POUND.
+Files: src/ascii.h
+
+
+*** ../vim-7.3.382/src/ascii.h 2011-09-02 14:18:14.000000000 +0200
+--- src/ascii.h 2011-12-17 21:38:36.000000000 +0100
+***************
+*** 123,129 ****
+ #define DCS 0x90 /* Device Control String */
+ #define STERM 0x9c /* String Terminator */
+
+! #define POUND '\xA3'
+
+ #define CTRL_F_STR "\056"
+ #define CTRL_H_STR "\026"
+--- 123,129 ----
+ #define DCS 0x90 /* Device Control String */
+ #define STERM 0x9c /* String Terminator */
+
+! #define POUND 0xB1
+
+ #define CTRL_F_STR "\056"
+ #define CTRL_H_STR "\026"
+*** ../vim-7.3.382/src/version.c 2011-12-15 21:51:32.000000000 +0100
+--- src/version.c 2011-12-23 12:46:08.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 383,
+ /**/
+
+--
+Vim is like Emacs without all the typing. (John "Johann" Spetz)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.384 b/source/ap/vim/patches/7.3.384
new file mode 100644
index 000000000..f75ff4082
--- /dev/null
+++ b/source/ap/vim/patches/7.3.384
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.384
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.384
+Problem: Mapping CTRL-K in Insert mode breaks CTRL-X CTRL-K for dictionary
+ completion.
+Solution: Add CTRL-K to the list of recognized keys. (James McCoy)
+Files: src/edit.c
+
+
+*** ../vim-7.3.383/src/edit.c 2011-10-26 17:04:23.000000000 +0200
+--- src/edit.c 2011-12-23 12:36:22.000000000 +0100
+***************
+*** 2183,2189 ****
+ || c == Ctrl_I || c == Ctrl_D || c == Ctrl_P
+ || c == Ctrl_N || c == Ctrl_T || c == Ctrl_V
+ || c == Ctrl_Q || c == Ctrl_U || c == Ctrl_O
+! || c == Ctrl_S || c == 's');
+ case CTRL_X_SCROLL:
+ return (c == Ctrl_Y || c == Ctrl_E);
+ case CTRL_X_WHOLE_LINE:
+--- 2183,2189 ----
+ || c == Ctrl_I || c == Ctrl_D || c == Ctrl_P
+ || c == Ctrl_N || c == Ctrl_T || c == Ctrl_V
+ || c == Ctrl_Q || c == Ctrl_U || c == Ctrl_O
+! || c == Ctrl_S || c == Ctrl_K || c == 's');
+ case CTRL_X_SCROLL:
+ return (c == Ctrl_Y || c == Ctrl_E);
+ case CTRL_X_WHOLE_LINE:
+*** ../vim-7.3.383/src/version.c 2011-12-23 12:46:56.000000000 +0100
+--- src/version.c 2011-12-23 12:53:38.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 384,
+ /**/
+
+--
+Q: Is selling software the same as selling hardware?
+A: No, good hardware is sold new, good software has already been used by many.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.385 b/source/ap/vim/patches/7.3.385
new file mode 100644
index 000000000..405a77f00
--- /dev/null
+++ b/source/ap/vim/patches/7.3.385
@@ -0,0 +1,69 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.385
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.385
+Problem: When using an expression mapping on the command line the cursor
+ ends up in the wrong place. (Yasuhiro Matsumoto)
+Solution: Save and restore msg_col and msg_row when evaluating the
+ expression.
+Files: src/getchar.
+
+
+*** ../vim-7.3.384/src/getchar.c 2011-10-12 22:02:07.000000000 +0200
+--- src/getchar.c 2011-12-14 18:37:52.000000000 +0100
+***************
+*** 4510,4515 ****
+--- 4510,4517 ----
+ char_u *expr;
+ char_u *save_cmd;
+ pos_T save_cursor;
++ int save_msg_col;
++ int save_msg_row;
+
+ /* Remove escaping of CSI, because "str" is in a format to be used as
+ * typeahead. */
+***************
+*** 4533,4544 ****
+--- 4535,4550 ----
+ #endif
+ set_vim_var_char(c); /* set v:char to the typed character */
+ save_cursor = curwin->w_cursor;
++ save_msg_col = msg_col;
++ save_msg_row = msg_row;
+ p = eval_to_string(expr, NULL, FALSE);
+ --textlock;
+ #ifdef FEAT_EX_EXTRA
+ --ex_normal_lock;
+ #endif
+ curwin->w_cursor = save_cursor;
++ msg_col = save_msg_col;
++ msg_row = save_msg_row;
+
+ restore_cmdline_alloc(save_cmd);
+ vim_free(expr);
+*** ../vim-7.3.384/src/version.c 2011-12-23 13:14:58.000000000 +0100
+--- src/version.c 2011-12-23 14:53:23.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 385,
+ /**/
+
+--
+`When any government, or any church for that matter, undertakes to say to
+ its subjects, "This you may not read, this you must not see, this you are
+ forbidden to know," the end result is tyranny and oppression no matter how
+ holy the motives' -- Robert A Heinlein, "If this goes on --"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.386 b/source/ap/vim/patches/7.3.386
new file mode 100644
index 000000000..c9035050c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.386
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.386
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.386
+Problem: Test 83 fails when iconv does not support cp932. (raf)
+Solution: Test if conversion works. (Yukihiro Nakadaira)
+Files: src/testdir/test83.in
+
+
+*** ../vim-7.3.385/src/testdir/test83.in 2011-10-12 19:53:31.000000000 +0200
+--- src/testdir/test83.in 2011-12-21 21:01:44.000000000 +0100
+***************
+*** 2,8 ****
+
+ STARTTEST
+ :so mbyte.vim
+! :if !has('iconv')
+ : e! test.ok
+ : w! test.out
+ : qa!
+--- 2,8 ----
+
+ STARTTEST
+ :so mbyte.vim
+! :if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"
+ : e! test.ok
+ : w! test.out
+ : qa!
+*** ../vim-7.3.385/src/version.c 2011-12-23 14:54:01.000000000 +0100
+--- src/version.c 2011-12-23 14:55:38.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 386,
+ /**/
+
+--
+WOMAN: King of the who?
+ARTHUR: The Britons.
+WOMAN: Who are the Britons?
+ARTHUR: Well, we all are. we're all Britons and I am your king.
+ The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.387 b/source/ap/vim/patches/7.3.387
new file mode 100644
index 000000000..6b20a58a4
--- /dev/null
+++ b/source/ap/vim/patches/7.3.387
@@ -0,0 +1,61 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.387
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.387 (after 7.3.386)
+Problem: Test 83 may fail for some encodings.
+Solution: Set 'encoding' to utf-8 earlier.
+Files: src/testdir/test83.in
+
+
+*** ../vim-7.3.386/src/testdir/test83.in 2011-12-23 14:56:24.000000000 +0100
+--- src/testdir/test83.in 2011-12-30 13:05:05.000000000 +0100
+***************
+*** 2,13 ****
+
+ STARTTEST
+ :so mbyte.vim
+ :if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"
+ : e! test.ok
+ : w! test.out
+ : qa!
+ :endif
+- :set enc=utf8
+
+ :/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt
+ :/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt
+--- 2,13 ----
+
+ STARTTEST
+ :so mbyte.vim
++ :set enc=utf8
+ :if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"
+ : e! test.ok
+ : w! test.out
+ : qa!
+ :endif
+
+ :/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt
+ :/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt
+*** ../vim-7.3.386/src/version.c 2011-12-23 14:56:24.000000000 +0100
+--- src/version.c 2011-12-30 13:06:17.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 387,
+ /**/
+
+--
+Mental Floss prevents moral decay!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.388 b/source/ap/vim/patches/7.3.388
new file mode 100644
index 000000000..7a6df8952
--- /dev/null
+++ b/source/ap/vim/patches/7.3.388
@@ -0,0 +1,45 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.388
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.388
+Problem: Crash on exit when EXITFREE is defined and using tiny features.
+Solution: Check for NULL window pointer. (Dominique Pelle)
+Files: src/buffer.c
+
+
+*** ../vim-7.3.387/src/buffer.c 2011-11-30 15:40:51.000000000 +0100
+--- src/buffer.c 2011-12-30 13:35:26.000000000 +0100
+***************
+*** 419,424 ****
+--- 419,426 ----
+ if (
+ #ifdef FEAT_WINDOWS
+ win_valid(win) &&
++ #else
++ win != NULL &&
+ #endif
+ win->w_buffer == buf)
+ win->w_buffer = NULL; /* make sure we don't use the buffer now */
+*** ../vim-7.3.387/src/version.c 2011-12-30 13:09:15.000000000 +0100
+--- src/version.c 2011-12-30 13:37:23.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 388,
+ /**/
+
+--
+Be nice to your kids... they'll be the ones choosing your nursing home.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.389 b/source/ap/vim/patches/7.3.389
new file mode 100644
index 000000000..c8a968c36
--- /dev/null
+++ b/source/ap/vim/patches/7.3.389
@@ -0,0 +1,61 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.389
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.389
+Problem: After typing at a prompt the "MORE" message appears too soon.
+Solution: reset lines_left in msg_end_prompt(). (Eswald)
+Files: src/message.c
+
+
+*** ../vim-7.3.388/src/message.c 2011-09-14 15:39:26.000000000 +0200
+--- src/message.c 2011-12-30 14:08:05.000000000 +0100
+***************
+*** 85,91 ****
+ * need_wait_return to be set. This is a hack to make ":ts"
+ * work without an extra prompt.
+ * lines_left Number of lines available for messages before the
+! * more-prompt is to be given.
+ * need_wait_return TRUE when the hit-return prompt is needed.
+ * Reset: After giving the hit-return prompt, when the user
+ * has answered some other prompt.
+--- 85,91 ----
+ * need_wait_return to be set. This is a hack to make ":ts"
+ * work without an extra prompt.
+ * lines_left Number of lines available for messages before the
+! * more-prompt is to be given. -1 when not set.
+ * need_wait_return TRUE when the hit-return prompt is needed.
+ * Reset: After giving the hit-return prompt, when the user
+ * has answered some other prompt.
+***************
+*** 855,860 ****
+--- 855,861 ----
+ cmdline_row = msg_row;
+ msg_col = 0;
+ msg_clr_eos();
++ lines_left = -1;
+ }
+ #endif
+
+*** ../vim-7.3.388/src/version.c 2011-12-30 13:39:04.000000000 +0100
+--- src/version.c 2011-12-30 14:11:00.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 389,
+ /**/
+
+--
+Proofread carefully to see if you any words out.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.390 b/source/ap/vim/patches/7.3.390
new file mode 100644
index 000000000..7199f8e18
--- /dev/null
+++ b/source/ap/vim/patches/7.3.390
@@ -0,0 +1,155 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.390
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.390
+Problem: Using NULL buffer pointer in a window.
+Solution: Check for w_buffer being NULL in more places. (Bjorn Winckler)
+Files: src/ex_cmds.c, src/quickfix.c, src/window.c
+
+
+*** ../vim-7.3.389/src/ex_cmds.c 2011-11-30 17:01:55.000000000 +0100
+--- src/ex_cmds.c 2011-12-30 14:59:57.000000000 +0100
+***************
+*** 3390,3395 ****
+--- 3390,3402 ----
+ (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD);
+
+ #ifdef FEAT_AUTOCMD
++ /* Autocommands may open a new window and leave oldwin open
++ * which leads to crashes since the above call sets
++ * oldwin->w_buffer to NULL. */
++ if (curwin != oldwin && oldwin != aucmd_win
++ && win_valid(oldwin) && oldwin->w_buffer == NULL)
++ win_close(oldwin, FALSE);
++
+ # ifdef FEAT_EVAL
+ if (aborting()) /* autocmds may abort script processing */
+ {
+*** ../vim-7.3.389/src/quickfix.c 2011-08-10 18:36:49.000000000 +0200
+--- src/quickfix.c 2011-12-30 14:45:19.000000000 +0100
+***************
+*** 2675,2681 ****
+ bt_quickfix(buf)
+ buf_T *buf;
+ {
+! return (buf->b_p_bt[0] == 'q');
+ }
+
+ /*
+--- 2675,2681 ----
+ bt_quickfix(buf)
+ buf_T *buf;
+ {
+! return buf != NULL && buf->b_p_bt[0] == 'q';
+ }
+
+ /*
+***************
+*** 2686,2693 ****
+ bt_nofile(buf)
+ buf_T *buf;
+ {
+! return (buf->b_p_bt[0] == 'n' && buf->b_p_bt[2] == 'f')
+! || buf->b_p_bt[0] == 'a';
+ }
+
+ /*
+--- 2686,2693 ----
+ bt_nofile(buf)
+ buf_T *buf;
+ {
+! return buf != NULL && ((buf->b_p_bt[0] == 'n' && buf->b_p_bt[2] == 'f')
+! || buf->b_p_bt[0] == 'a');
+ }
+
+ /*
+***************
+*** 2697,2703 ****
+ bt_dontwrite(buf)
+ buf_T *buf;
+ {
+! return (buf->b_p_bt[0] == 'n');
+ }
+
+ int
+--- 2697,2703 ----
+ bt_dontwrite(buf)
+ buf_T *buf;
+ {
+! return buf != NULL && buf->b_p_bt[0] == 'n';
+ }
+
+ int
+*** ../vim-7.3.389/src/window.c 2011-09-14 14:43:21.000000000 +0200
+--- src/window.c 2011-12-30 14:44:18.000000000 +0100
+***************
+*** 2170,2176 ****
+
+ /* When closing the help window, try restoring a snapshot after closing
+ * the window. Otherwise clear the snapshot, it's now invalid. */
+! if (win->w_buffer->b_help)
+ help_window = TRUE;
+ else
+ clear_snapshot(curtab, SNAP_HELP_IDX);
+--- 2170,2176 ----
+
+ /* When closing the help window, try restoring a snapshot after closing
+ * the window. Otherwise clear the snapshot, it's now invalid. */
+! if (win->w_buffer != NULL && win->w_buffer->b_help)
+ help_window = TRUE;
+ else
+ clear_snapshot(curtab, SNAP_HELP_IDX);
+***************
+*** 2214,2226 ****
+
+ #ifdef FEAT_SYN_HL
+ /* Free independent synblock before the buffer is freed. */
+! reset_synblock(win);
+ #endif
+
+ /*
+ * Close the link to the buffer.
+ */
+! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0);
+
+ /* Autocommands may have closed the window already, or closed the only
+ * other window or moved to another tab page. */
+--- 2214,2228 ----
+
+ #ifdef FEAT_SYN_HL
+ /* Free independent synblock before the buffer is freed. */
+! if (win->w_buffer != NULL)
+! reset_synblock(win);
+ #endif
+
+ /*
+ * Close the link to the buffer.
+ */
+! if (win->w_buffer != NULL)
+! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0);
+
+ /* Autocommands may have closed the window already, or closed the only
+ * other window or moved to another tab page. */
+*** ../vim-7.3.389/src/version.c 2011-12-30 14:14:16.000000000 +0100
+--- src/version.c 2011-12-30 14:38:39.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 390,
+ /**/
+
+--
+There can't be a crisis today, my schedule is already full.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.391 b/source/ap/vim/patches/7.3.391
new file mode 100644
index 000000000..0a1bcceb5
--- /dev/null
+++ b/source/ap/vim/patches/7.3.391
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.391
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.391
+Problem: Can't check if the XPM_W32 feature is enabled.
+Solution: Add xpm_w32 to the list of features. (kat)
+Files: src/eval.c
+
+
+*** ../vim-7.3.390/src/eval.c 2011-12-14 15:32:44.000000000 +0100
+--- src/eval.c 2012-01-04 14:33:22.000000000 +0100
+***************
+*** 12260,12265 ****
+--- 12260,12268 ----
+ #ifdef FEAT_XFONTSET
+ "xfontset",
+ #endif
++ #ifdef FEAT_XPM_W32
++ "xpm_w32",
++ #endif
+ #ifdef USE_XSMP
+ "xsmp",
+ #endif
+*** ../vim-7.3.390/src/version.c 2011-12-30 15:01:55.000000000 +0100
+--- src/version.c 2012-01-04 14:34:31.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 391,
+ /**/
+
+--
+ROBIN: The what?
+ARTHUR: The Holy Hand Grenade of Antioch. 'Tis one of the sacred relics
+ Brother Maynard always carries with him.
+ALL: Yes. Of course.
+ARTHUR: (shouting) Bring up the Holy Hand Grenade!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.392 b/source/ap/vim/patches/7.3.392
new file mode 100644
index 000000000..a603d90e2
--- /dev/null
+++ b/source/ap/vim/patches/7.3.392
@@ -0,0 +1,115 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.392
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.392
+Problem: When setting 'undofile' while the file is already loaded but
+ unchanged, try reading the undo file. (Andy Wokula)
+Solution: Compute a checksum of the text when 'undofile' is set. (Christian
+ Brabandt)
+Files: src/option.c, src/testdir/test72.in, src/testdir/test72.ok
+
+
+*** ../vim-7.3.391/src/option.c 2011-11-30 11:31:25.000000000 +0100
+--- src/option.c 2012-01-04 19:34:11.000000000 +0100
+***************
+*** 7516,7521 ****
+--- 7516,7545 ----
+ compatible_set();
+ }
+
++ #ifdef FEAT_PERSISTENT_UNDO
++ /* 'undofile' */
++ else if ((int *)varp == &curbuf->b_p_udf || (int *)varp == &p_udf)
++ {
++ char_u hash[UNDO_HASH_SIZE];
++ buf_T *save_curbuf = curbuf;
++
++ for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next)
++ {
++ /* When 'undofile' is set globally: for every buffer, otherwise
++ * only for the current buffer: Try to read in the undofile, if
++ * one exists and the buffer wasn't changed. */
++ if ((curbuf == save_curbuf
++ || (opt_flags & OPT_GLOBAL) || opt_flags == 0)
++ && !curbufIsChanged())
++ {
++ u_compute_hash(hash);
++ u_read_undo(NULL, hash, curbuf->b_fname);
++ }
++ }
++ curbuf = save_curbuf;
++ }
++ #endif
++
+ /* 'list', 'number' */
+ else if ((int *)varp == &curwin->w_p_list
+ || (int *)varp == &curwin->w_p_nu
+*** ../vim-7.3.391/src/testdir/test72.in 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test72.in 2012-01-04 19:04:17.000000000 +0100
+***************
+*** 51,56 ****
+--- 51,62 ----
+ :e Xtestfile
+ uuu:w >>test.out
+ :"
++ :" Test that reading the undofiles when setting undofile works
++ :set noundofile ul=0
++ i
++ u:e! Xtestfile
++ :set undofile ul=100
++ uuuuuu:w >>test.out
+ :" And now with encryption, cryptmethod=zip
+ :e! Xtestfile
+ :set undofile cm=zip
+*** ../vim-7.3.391/src/testdir/test72.ok 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test72.ok 2012-01-04 19:04:17.000000000 +0100
+***************
+*** 7,12 ****
+--- 7,22 ----
+ eight
+ nine
+ ten
++ one
++ two
++ three
++ four
++ five
++ six
++ seven
++ eight
++ nine
++ ten
+ monday
+ wednesday
+ thursday
+*** ../vim-7.3.391/src/version.c 2012-01-04 14:35:31.000000000 +0100
+--- src/version.c 2012-01-04 19:33:41.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 392,
+ /**/
+
+--
+BROTHER MAYNARD: Armaments Chapter Two Verses Nine to Twenty One.
+ANOTHER MONK: And St. Attila raised his hand grenade up on high saying "O
+ Lord bless this thy hand grenade that with it thou mayest
+ blow thine enemies to tiny bits, in thy mercy. "and the Lord
+ did grin and people did feast upon the lambs and sloths and
+ carp and anchovies and orang-utans and breakfast cereals and
+ fruit bats and...
+BROTHER MAYNARD: Skip a bit brother ...
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.393 b/source/ap/vim/patches/7.3.393
new file mode 100644
index 000000000..ca6cbc96d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.393
@@ -0,0 +1,130 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.393
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.393
+Problem: Win32: When resizing Vim it is always moved to the primary monitor
+ if the secondary monitor is on the left.
+Solution: Use the nearest monitor. (Yukihiro Nakadaira)
+Files: src/gui_w32.c
+
+
+*** ../vim-7.3.392/src/gui_w32.c 2011-12-15 21:51:32.000000000 +0100
+--- src/gui_w32.c 2012-01-04 20:25:58.000000000 +0100
+***************
+*** 1661,1669 ****
+ {
+ RECT workarea_rect;
+ int win_width, win_height;
+- int win_xpos, win_ypos;
+ WINDOWPLACEMENT wndpl;
+- int workarea_left;
+
+ /* Try to keep window completely on screen. */
+ /* Get position of the screen work area. This is the part that is not
+--- 1661,1667 ----
+***************
+*** 1685,1693 ****
+ GetWindowPlacement(s_hwnd, &wndpl);
+ }
+
+- win_xpos = wndpl.rcNormalPosition.left;
+- win_ypos = wndpl.rcNormalPosition.top;
+-
+ /* compute the size of the outside of the window */
+ win_width = width + GetSystemMetrics(SM_CXFRAME) * 2;
+ win_height = height + GetSystemMetrics(SM_CYFRAME) * 2
+--- 1683,1688 ----
+***************
+*** 1697,1732 ****
+ #endif
+ ;
+
+! /* There is an inconsistency when using two monitors and Vim is on the
+! * second (right) one: win_xpos will be the offset from the workarea of
+! * the left monitor. While with one monitor it's the offset from the
+! * workarea (including a possible taskbar on the left). Detect the second
+! * monitor by checking for the left offset to be quite big. */
+! if (workarea_rect.left > 300)
+! workarea_left = 0;
+! else
+! workarea_left = workarea_rect.left;
+
+! /* If the window is going off the screen, move it on to the screen.
+! * win_xpos and win_ypos are relative to the workarea. */
+ if ((direction & RESIZE_HOR)
+! && workarea_left + win_xpos + win_width > workarea_rect.right)
+! win_xpos = workarea_rect.right - win_width - workarea_left;
+
+! if ((direction & RESIZE_HOR) && win_xpos < 0)
+! win_xpos = 0;
+
+ if ((direction & RESIZE_VERT)
+! && workarea_rect.top + win_ypos + win_height > workarea_rect.bottom)
+! win_ypos = workarea_rect.bottom - win_height - workarea_rect.top;
+
+! if ((direction & RESIZE_VERT) && win_ypos < 0)
+! win_ypos = 0;
+!
+! wndpl.rcNormalPosition.left = win_xpos;
+! wndpl.rcNormalPosition.right = win_xpos + win_width;
+! wndpl.rcNormalPosition.top = win_ypos;
+! wndpl.rcNormalPosition.bottom = win_ypos + win_height;
+
+ /* set window position - we should use SetWindowPlacement rather than
+ * SetWindowPos as the MSDN docs say the coord systems returned by
+--- 1692,1723 ----
+ #endif
+ ;
+
+! /* The following should take care of keeping Vim on the same monitor, no
+! * matter if the secondary monitor is left or right of the primary
+! * monitor. */
+! wndpl.rcNormalPosition.right = wndpl.rcNormalPosition.left + win_width;
+! wndpl.rcNormalPosition.bottom = wndpl.rcNormalPosition.top + win_height;
+
+! /* If the window is going off the screen, move it on to the screen. */
+ if ((direction & RESIZE_HOR)
+! && wndpl.rcNormalPosition.right > workarea_rect.right)
+! OffsetRect(&wndpl.rcNormalPosition,
+! workarea_rect.right - wndpl.rcNormalPosition.right, 0);
+
+! if ((direction & RESIZE_HOR)
+! && wndpl.rcNormalPosition.left < workarea_rect.left)
+! OffsetRect(&wndpl.rcNormalPosition,
+! workarea_rect.left - wndpl.rcNormalPosition.left, 0);
+
+ if ((direction & RESIZE_VERT)
+! && wndpl.rcNormalPosition.bottom > workarea_rect.bottom)
+! OffsetRect(&wndpl.rcNormalPosition,
+! 0, workarea_rect.bottom - wndpl.rcNormalPosition.bottom);
+
+! if ((direction & RESIZE_VERT)
+! && wndpl.rcNormalPosition.top < workarea_rect.top)
+! OffsetRect(&wndpl.rcNormalPosition,
+! 0, workarea_rect.top - wndpl.rcNormalPosition.top);
+
+ /* set window position - we should use SetWindowPlacement rather than
+ * SetWindowPos as the MSDN docs say the coord systems returned by
+*** ../vim-7.3.392/src/version.c 2012-01-04 19:34:32.000000000 +0100
+--- src/version.c 2012-01-04 20:28:57.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 393,
+ /**/
+
+--
+I wonder, do vegetarians eat fruit bats?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.394 b/source/ap/vim/patches/7.3.394
new file mode 100644
index 000000000..20c7cffec
--- /dev/null
+++ b/source/ap/vim/patches/7.3.394
@@ -0,0 +1,62 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.394
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.394
+Problem: When placing a mark while starting up a screen redraw messes up
+ the screen. (lith)
+Solution: Don't redraw while still starting up. (Christian Brabandt)
+Files: src/screen.c
+
+
+*** ../vim-7.3.393/src/screen.c 2011-09-02 14:07:31.000000000 +0200
+--- src/screen.c 2012-01-10 12:36:52.000000000 +0100
+***************
+*** 764,772 ****
+ doit = TRUE;
+ }
+
+! /* Return when there is nothing to do or screen updating already
+! * happening. */
+! if (!doit || updating_screen)
+ return;
+
+ /* update all windows that need updating */
+--- 764,776 ----
+ doit = TRUE;
+ }
+
+! /* Return when there is nothing to do, screen updating is already
+! * happening (recursive call) or still starting up. */
+! if (!doit || updating_screen
+! #ifdef FEAT_GUI
+! || gui.starting
+! #endif
+! || starting)
+ return;
+
+ /* update all windows that need updating */
+*** ../vim-7.3.393/src/version.c 2012-01-04 20:29:18.000000000 +0100
+--- src/version.c 2012-01-10 12:41:32.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 394,
+ /**/
+
+--
+It is illegal for anyone to try and stop a child from playfully jumping over
+puddles of water.
+ [real standing law in California, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.395 b/source/ap/vim/patches/7.3.395
new file mode 100644
index 000000000..cb2689395
--- /dev/null
+++ b/source/ap/vim/patches/7.3.395
@@ -0,0 +1,115 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.395
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.395 (after 7.3.251)
+Problem: "dv?bar" in the last line deletes too much and breaks undo.
+Solution: Only adjust the cursor position when it's after the last line of
+ the buffer. Add a test. (Christian Brabandt)
+Files: src/ops.c, src/testdir/test43.in, src/testdir/test43.ok
+
+
+*** ../vim-7.3.394/src/ops.c 2011-09-21 17:33:49.000000000 +0200
+--- src/ops.c 2012-01-10 13:28:05.000000000 +0100
+***************
+*** 1961,1968 ****
+ /* Special case: gH<Del> deletes the last line. */
+ del_lines(1L, FALSE);
+ curwin->w_cursor = curpos; /* restore curwin->w_cursor */
+! if (curwin->w_cursor.lnum > 1)
+! --curwin->w_cursor.lnum;
+ }
+ else
+ {
+--- 1962,1969 ----
+ /* Special case: gH<Del> deletes the last line. */
+ del_lines(1L, FALSE);
+ curwin->w_cursor = curpos; /* restore curwin->w_cursor */
+! if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count)
+! curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
+ }
+ else
+ {
+***************
+*** 4434,4440 ****
+ #endif
+
+ /*
+! * implementation of the format operator 'gq'
+ */
+ void
+ op_format(oap, keep_cursor)
+--- 4435,4441 ----
+ #endif
+
+ /*
+! * Implementation of the format operator 'gq'.
+ */
+ void
+ op_format(oap, keep_cursor)
+*** ../vim-7.3.394/src/testdir/test43.in 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test43.in 2012-01-10 13:41:13.000000000 +0100
+***************
+*** 13,19 ****
+ x:set magic
+ /\v(a)(b)\2\1\1/e
+ x/\V[ab]\(\[xy]\)\1
+! x:?^1?,$w! test.out
+ :qa!
+ ENDTEST
+
+--- 13,23 ----
+ x:set magic
+ /\v(a)(b)\2\1\1/e
+ x/\V[ab]\(\[xy]\)\1
+! x:$
+! :set undolevels=100
+! dv?bar?
+! Yup:"
+! :?^1?,$w! test.out
+ :qa!
+ ENDTEST
+
+***************
+*** 25,27 ****
+--- 29,33 ----
+ 6 x ^aa$ x
+ 7 (a)(b) abbaa
+ 8 axx [ab]xx
++ 9 foobar
++
+*** ../vim-7.3.394/src/testdir/test43.ok 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test43.ok 2012-01-10 13:42:39.000000000 +0100
+***************
+*** 6,8 ****
+--- 6,11 ----
+ 6 x aa$ x
+ 7 (a)(b) abba
+ 8 axx ab]xx
++ 9 foobar
++ 9 foo
++
+*** ../vim-7.3.394/src/version.c 2012-01-10 12:42:05.000000000 +0100
+--- src/version.c 2012-01-10 13:30:40.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 395,
+ /**/
+
+--
+The Law, in its majestic equality, forbids the rich, as well as the
+poor, to sleep under the bridges, to beg in the streets, and to steal
+bread. -- Anatole France
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.396 b/source/ap/vim/patches/7.3.396
new file mode 100644
index 000000000..72b55a29c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.396
@@ -0,0 +1,49 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.396
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.396
+Problem: After forcing an operator to be characterwise it can still become
+ linewise when spanning whole lines.
+Solution: Don't make the operator linewise when motion_force was set.
+ (Christian Brabandt)
+Files: src/ops.c
+
+
+*** ../vim-7.3.395/src/ops.c 2012-01-10 13:44:23.000000000 +0100
+--- src/ops.c 2012-01-10 13:28:05.000000000 +0100
+***************
+*** 1648,1653 ****
+--- 1648,1654 ----
+ && !oap->block_mode
+ #endif
+ && oap->line_count > 1
++ && oap->motion_force == NUL
+ && oap->op_type == OP_DELETE)
+ {
+ ptr = ml_get(oap->end.lnum) + oap->end.col;
+*** ../vim-7.3.395/src/version.c 2012-01-10 13:44:23.000000000 +0100
+--- src/version.c 2012-01-10 13:45:31.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 396,
+ /**/
+
+--
+Any sufficiently advanced technology is indistinguishable from magic.
+ Arthur C. Clarke
+Any sufficiently advanced bug is indistinguishable from a feature.
+ Rich Kulawiec
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.397 b/source/ap/vim/patches/7.3.397
new file mode 100644
index 000000000..866b3aaca
--- /dev/null
+++ b/source/ap/vim/patches/7.3.397
@@ -0,0 +1,224 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.397
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.397
+Problem: ":helpgrep" does not work properly when 'encoding' is not utf-8 or
+ latin1.
+Solution: Convert non-ascii lines to 'encoding'. (Yasuhiro Matsumoto)
+Files: src/quickfix.c, src/spell.c, src/misc2.c, src/proto/misc2.pro
+
+
+*** ../vim-7.3.396/src/quickfix.c 2011-12-30 15:01:55.000000000 +0100
+--- src/quickfix.c 2012-01-10 16:18:51.000000000 +0100
+***************
+*** 3914,3919 ****
+--- 3914,3929 ----
+ regmatch.rm_ic = FALSE;
+ if (regmatch.regprog != NULL)
+ {
++ #ifdef FEAT_MBYTE
++ vimconv_T vc;
++
++ /* Help files are in utf-8 or latin1, convert lines when 'encoding'
++ * differs. */
++ vc.vc_type = CONV_NONE;
++ if (!enc_utf8)
++ convert_setup(&vc, (char_u *)"utf-8", p_enc);
++ #endif
++
+ /* create a new quickfix list */
+ qf_new_list(qi, *eap->cmdlinep);
+
+***************
+*** 3948,3968 ****
+ lnum = 1;
+ while (!vim_fgets(IObuff, IOSIZE, fd) && !got_int)
+ {
+! if (vim_regexec(&regmatch, IObuff, (colnr_T)0))
+ {
+! int l = (int)STRLEN(IObuff);
+
+ /* remove trailing CR, LF, spaces, etc. */
+! while (l > 0 && IObuff[l - 1] <= ' ')
+! IObuff[--l] = NUL;
+
+ if (qf_add_entry(qi, &prevp,
+ NULL, /* dir */
+ fnames[fi],
+ 0,
+! IObuff,
+ lnum,
+! (int)(regmatch.startp[0] - IObuff)
+ + 1, /* col */
+ FALSE, /* vis_col */
+ NULL, /* search pattern */
+--- 3958,3990 ----
+ lnum = 1;
+ while (!vim_fgets(IObuff, IOSIZE, fd) && !got_int)
+ {
+! char_u *line = IObuff;
+! #ifdef FEAT_MBYTE
+! /* Convert a line if 'encoding' is not utf-8 and
+! * the line contains a non-ASCII character. */
+! if (vc.vc_type != CONV_NONE
+! && has_non_ascii(IObuff)) {
+! line = string_convert(&vc, IObuff, NULL);
+! if (line == NULL)
+! line = IObuff;
+! }
+! #endif
+!
+! if (vim_regexec(&regmatch, line, (colnr_T)0))
+ {
+! int l = (int)STRLEN(line);
+
+ /* remove trailing CR, LF, spaces, etc. */
+! while (l > 0 && line[l - 1] <= ' ')
+! line[--l] = NUL;
+
+ if (qf_add_entry(qi, &prevp,
+ NULL, /* dir */
+ fnames[fi],
+ 0,
+! line,
+ lnum,
+! (int)(regmatch.startp[0] - line)
+ + 1, /* col */
+ FALSE, /* vis_col */
+ NULL, /* search pattern */
+***************
+*** 3972,3980 ****
+--- 3994,4010 ----
+ ) == FAIL)
+ {
+ got_int = TRUE;
++ #ifdef FEAT_MBYTE
++ if (line != IObuff)
++ vim_free(line);
++ #endif
+ break;
+ }
+ }
++ #ifdef FEAT_MBYTE
++ if (line != IObuff)
++ vim_free(line);
++ #endif
+ ++lnum;
+ line_breakcheck();
+ }
+***************
+*** 3984,3990 ****
+--- 4014,4025 ----
+ FreeWild(fcount, fnames);
+ }
+ }
++
+ vim_free(regmatch.regprog);
++ #ifdef FEAT_MBYTE
++ if (vc.vc_type != CONV_NONE)
++ convert_setup(&vc, NULL, NULL);
++ #endif
+
+ qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE;
+ qi->qf_lists[qi->qf_curlist].qf_ptr =
+*** ../vim-7.3.396/src/spell.c 2011-09-02 14:18:14.000000000 +0200
+--- src/spell.c 2012-01-10 16:19:33.000000000 +0100
+***************
+*** 5020,5026 ****
+ static int str_equal __ARGS((char_u *s1, char_u *s2));
+ static void add_fromto __ARGS((spellinfo_T *spin, garray_T *gap, char_u *from, char_u *to));
+ static int sal_to_bool __ARGS((char_u *s));
+- static int has_non_ascii __ARGS((char_u *s));
+ static void spell_free_aff __ARGS((afffile_T *aff));
+ static int spell_read_dic __ARGS((spellinfo_T *spin, char_u *fname, afffile_T *affile));
+ static int get_affix_flags __ARGS((afffile_T *affile, char_u *afflist));
+--- 5020,5025 ----
+***************
+*** 6485,6507 ****
+ }
+
+ /*
+- * Return TRUE if string "s" contains a non-ASCII character (128 or higher).
+- * When "s" is NULL FALSE is returned.
+- */
+- static int
+- has_non_ascii(s)
+- char_u *s;
+- {
+- char_u *p;
+-
+- if (s != NULL)
+- for (p = s; *p != NUL; ++p)
+- if (*p >= 128)
+- return TRUE;
+- return FALSE;
+- }
+-
+- /*
+ * Free the structure filled by spell_read_aff().
+ */
+ static void
+--- 6484,6489 ----
+*** ../vim-7.3.396/src/misc2.c 2011-12-08 17:49:31.000000000 +0100
+--- src/misc2.c 2012-01-10 16:25:53.000000000 +0100
+***************
+*** 6541,6543 ****
+--- 6541,6563 ----
+ #endif
+
+ #endif
++
++ #if (defined(FEAT_MBYTE) && defined(FEAT_QUICKFIX)) \
++ || defined(FEAT_SPELL) || defined(PROTO)
++ /*
++ * Return TRUE if string "s" contains a non-ASCII character (128 or higher).
++ * When "s" is NULL FALSE is returned.
++ */
++ int
++ has_non_ascii(s)
++ char_u *s;
++ {
++ char_u *p;
++
++ if (s != NULL)
++ for (p = s; *p != NUL; ++p)
++ if (*p >= 128)
++ return TRUE;
++ return FALSE;
++ }
++ #endif
+*** ../vim-7.3.396/src/proto/misc2.pro 2011-07-07 16:20:45.000000000 +0200
+--- src/proto/misc2.pro 2012-01-10 16:20:03.000000000 +0100
+***************
+*** 116,119 ****
+--- 116,120 ----
+ char_u *read_string __ARGS((FILE *fd, int cnt));
+ int put_bytes __ARGS((FILE *fd, long_u nr, int len));
+ void put_time __ARGS((FILE *fd, time_t the_time));
++ int has_non_ascii __ARGS((char_u *s));
+ /* vim: set ft=c : */
+*** ../vim-7.3.396/src/version.c 2012-01-10 13:46:18.000000000 +0100
+--- src/version.c 2012-01-10 16:26:32.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 397,
+ /**/
+
+--
+Biting someone with your natural teeth is "simple assault," while biting
+someone with your false teeth is "aggravated assault."
+ [real standing law in Louisana, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.398 b/source/ap/vim/patches/7.3.398
new file mode 100644
index 000000000..8d4b21381
--- /dev/null
+++ b/source/ap/vim/patches/7.3.398
@@ -0,0 +1,65 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.398
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.398
+Problem: When creating more than 10 location lists and adding items one by
+ one a previous location may be used. (Audrius Kažukauskas)
+Solution: Clear the location list completely when adding the tenth one.
+Files: src/quickfix.c
+
+
+*** ../vim-7.3.397/src/quickfix.c 2012-01-10 16:28:41.000000000 +0100
+--- src/quickfix.c 2012-01-10 16:58:52.000000000 +0100
+***************
+*** 899,906 ****
+ }
+ else
+ qi->qf_curlist = qi->qf_listcount++;
+! qi->qf_lists[qi->qf_curlist].qf_index = 0;
+! qi->qf_lists[qi->qf_curlist].qf_count = 0;
+ if (qf_title != NULL)
+ {
+ char_u *p = alloc((int)STRLEN(qf_title) + 2);
+--- 899,905 ----
+ }
+ else
+ qi->qf_curlist = qi->qf_listcount++;
+! vim_memset(&qi->qf_lists[qi->qf_curlist], 0, (size_t)(sizeof(qf_list_T)));
+ if (qf_title != NULL)
+ {
+ char_u *p = alloc((int)STRLEN(qf_title) + 2);
+***************
+*** 909,916 ****
+ if (p != NULL)
+ sprintf((char *)p, ":%s", (char *)qf_title);
+ }
+- else
+- qi->qf_lists[qi->qf_curlist].qf_title = NULL;
+ }
+
+ /*
+--- 908,913 ----
+*** ../vim-7.3.397/src/version.c 2012-01-10 16:28:41.000000000 +0100
+--- src/version.c 2012-01-10 17:13:09.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 398,
+ /**/
+
+--
+Why don't cannibals eat clowns?
+Because they taste funny.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.399 b/source/ap/vim/patches/7.3.399
new file mode 100644
index 000000000..33d063020
--- /dev/null
+++ b/source/ap/vim/patches/7.3.399
@@ -0,0 +1,137 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.399
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.399
+Problem: ":cd" doesn't work when the path contains wildcards. (Yukihiro
+ Nakadaira)
+Solution: Ignore wildcard errors when the EW_NOTWILD flag is used.
+Files: src/misc1.c
+
+
+*** ../vim-7.3.398/src/misc1.c 2011-12-14 20:21:29.000000000 +0100
+--- src/misc1.c 2012-01-10 17:57:42.000000000 +0100
+***************
+*** 9103,9117 ****
+ }
+
+ /* compile the regexp into a program */
+! if (flags & EW_NOERROR)
+ ++emsg_silent;
+ regmatch.rm_ic = TRUE; /* Always ignore case */
+ regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
+! if (flags & EW_NOERROR)
+ --emsg_silent;
+ vim_free(pat);
+
+! if (regmatch.regprog == NULL)
+ {
+ vim_free(buf);
+ return 0;
+--- 9103,9117 ----
+ }
+
+ /* compile the regexp into a program */
+! if (flags & (EW_NOERROR | EW_NOTWILD))
+ ++emsg_silent;
+ regmatch.rm_ic = TRUE; /* Always ignore case */
+ regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
+! if (flags & (EW_NOERROR | EW_NOTWILD))
+ --emsg_silent;
+ vim_free(pat);
+
+! if (regmatch.regprog == NULL && (flags & EW_NOTWILD) == 0)
+ {
+ vim_free(buf);
+ return 0;
+***************
+*** 9179,9185 ****
+ * all entries found with "matchname". */
+ if ((p[0] != '.' || starts_with_dot)
+ && (matchname == NULL
+! || vim_regexec(&regmatch, p, (colnr_T)0)
+ || ((flags & EW_NOTWILD)
+ && fnamencmp(path + (s - buf), p, e - s) == 0)))
+ {
+--- 9179,9186 ----
+ * all entries found with "matchname". */
+ if ((p[0] != '.' || starts_with_dot)
+ && (matchname == NULL
+! || (regmatch.regprog != NULL
+! && vim_regexec(&regmatch, p, (colnr_T)0))
+ || ((flags & EW_NOTWILD)
+ && fnamencmp(path + (s - buf), p, e - s) == 0)))
+ {
+***************
+*** 9419,9428 ****
+ else
+ regmatch.rm_ic = FALSE; /* Don't ignore case */
+ #endif
+ regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
+ vim_free(pat);
+
+! if (regmatch.regprog == NULL)
+ {
+ vim_free(buf);
+ return 0;
+--- 9420,9433 ----
+ else
+ regmatch.rm_ic = FALSE; /* Don't ignore case */
+ #endif
++ if (flags & (EW_NOERROR | EW_NOTWILD))
++ ++emsg_silent;
+ regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
++ if (flags & (EW_NOERROR | EW_NOTWILD))
++ --emsg_silent;
+ vim_free(pat);
+
+! if (regmatch.regprog == NULL && (flags & EW_NOTWILD) == 0)
+ {
+ vim_free(buf);
+ return 0;
+***************
+*** 9452,9458 ****
+ if (dp == NULL)
+ break;
+ if ((dp->d_name[0] != '.' || starts_with_dot)
+! && (vim_regexec(&regmatch, (char_u *)dp->d_name, (colnr_T)0)
+ || ((flags & EW_NOTWILD)
+ && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0)))
+ {
+--- 9457,9464 ----
+ if (dp == NULL)
+ break;
+ if ((dp->d_name[0] != '.' || starts_with_dot)
+! && ((regmatch.regprog != NULL && vim_regexec(&regmatch,
+! (char_u *)dp->d_name, (colnr_T)0))
+ || ((flags & EW_NOTWILD)
+ && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0)))
+ {
+*** ../vim-7.3.398/src/version.c 2012-01-10 17:13:48.000000000 +0100
+--- src/version.c 2012-01-10 18:21:05.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 399,
+ /**/
+
+--
+Close your shells, or I'll kill -9 you
+Tomorrow I'll quota you
+Remember the disks'll always be full
+And then while I'm away
+I'll write ~ everyday
+And I'll send-pr all my buggings to you.
+ [ CVS log "Beatles style" for FreeBSD ports/INDEX, Satoshi Asami ]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.400 b/source/ap/vim/patches/7.3.400
new file mode 100644
index 000000000..c621a8811
--- /dev/null
+++ b/source/ap/vim/patches/7.3.400
@@ -0,0 +1,1762 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.400
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.400
+Problem: Compiler warnings for shadowed variables.
+Solution: Remove or rename the variables.
+Files: src/charset.c, src/digraph.c, src/edit.c, src/eval.c, src/fold.c,
+ src/getchar.c, src/message.c, src/misc2.c, src/move.c,
+ src/netbeans.c, src/option.c, src/os_unix.c, src/screen.c,
+ src/search.c, src/spell.c, src/syntax.c, src/tag.c, src/window.c
+
+
+*** ../vim-7.3.399/src/charset.c 2010-08-15 21:57:25.000000000 +0200
+--- src/charset.c 2012-01-10 21:55:50.000000000 +0100
+***************
+*** 463,503 ****
+ if (enc_utf8)
+ {
+ int c = utf_ptr2char(STR_PTR(i));
+! int ol = utf_ptr2len(STR_PTR(i));
+ int lc = utf_tolower(c);
+
+ /* Only replace the character when it is not an invalid
+ * sequence (ASCII character or more than one byte) and
+ * utf_tolower() doesn't return the original character. */
+! if ((c < 0x80 || ol > 1) && c != lc)
+ {
+! int nl = utf_char2len(lc);
+
+ /* If the byte length changes need to shift the following
+ * characters forward or backward. */
+! if (ol != nl)
+ {
+! if (nl > ol)
+ {
+! if (buf == NULL ? ga_grow(&ga, nl - ol + 1) == FAIL
+! : len + nl - ol >= buflen)
+ {
+ /* out of memory, keep old char */
+ lc = c;
+! nl = ol;
+ }
+ }
+! if (ol != nl)
+ {
+ if (buf == NULL)
+ {
+! STRMOVE(GA_PTR(i) + nl, GA_PTR(i) + ol);
+! ga.ga_len += nl - ol;
+ }
+ else
+ {
+! STRMOVE(buf + i + nl, buf + i + ol);
+! len += nl - ol;
+ }
+ }
+ }
+--- 463,504 ----
+ if (enc_utf8)
+ {
+ int c = utf_ptr2char(STR_PTR(i));
+! int olen = utf_ptr2len(STR_PTR(i));
+ int lc = utf_tolower(c);
+
+ /* Only replace the character when it is not an invalid
+ * sequence (ASCII character or more than one byte) and
+ * utf_tolower() doesn't return the original character. */
+! if ((c < 0x80 || olen > 1) && c != lc)
+ {
+! int nlen = utf_char2len(lc);
+
+ /* If the byte length changes need to shift the following
+ * characters forward or backward. */
+! if (olen != nlen)
+ {
+! if (nlen > olen)
+ {
+! if (buf == NULL
+! ? ga_grow(&ga, nlen - olen + 1) == FAIL
+! : len + nlen - olen >= buflen)
+ {
+ /* out of memory, keep old char */
+ lc = c;
+! nlen = olen;
+ }
+ }
+! if (olen != nlen)
+ {
+ if (buf == NULL)
+ {
+! STRMOVE(GA_PTR(i) + nlen, GA_PTR(i) + olen);
+! ga.ga_len += nlen - olen;
+ }
+ else
+ {
+! STRMOVE(buf + i + nlen, buf + i + olen);
+! len += nlen - olen;
+ }
+ }
+ }
+*** ../vim-7.3.399/src/digraph.c 2010-08-15 21:57:28.000000000 +0200
+--- src/digraph.c 2012-01-10 21:57:16.000000000 +0100
+***************
+*** 2080,2092 ****
+ /*
+ * Lookup the pair "char1", "char2" in the digraph tables.
+ * If no match, return "char2".
+! * If "meta" is TRUE and "char1" is a space, return "char2" | 0x80.
+ */
+ static int
+! getexactdigraph(char1, char2, meta)
+ int char1;
+ int char2;
+! int meta;
+ {
+ int i;
+ int retval = 0;
+--- 2080,2092 ----
+ /*
+ * Lookup the pair "char1", "char2" in the digraph tables.
+ * If no match, return "char2".
+! * If "meta_char" is TRUE and "char1" is a space, return "char2" | 0x80.
+ */
+ static int
+! getexactdigraph(char1, char2, meta_char)
+ int char1;
+ int char2;
+! int meta_char;
+ {
+ int i;
+ int retval = 0;
+***************
+*** 2159,2165 ****
+
+ if (retval == 0) /* digraph deleted or not found */
+ {
+! if (char1 == ' ' && meta) /* <space> <char> --> meta-char */
+ return (char2 | 0x80);
+ return char2;
+ }
+--- 2159,2165 ----
+
+ if (retval == 0) /* digraph deleted or not found */
+ {
+! if (char1 == ' ' && meta_char) /* <space> <char> --> meta-char */
+ return (char2 | 0x80);
+ return char2;
+ }
+***************
+*** 2171,2186 ****
+ * Allow for both char1-char2 and char2-char1
+ */
+ int
+! getdigraph(char1, char2, meta)
+ int char1;
+ int char2;
+! int meta;
+ {
+ int retval;
+
+! if (((retval = getexactdigraph(char1, char2, meta)) == char2)
+ && (char1 != char2)
+! && ((retval = getexactdigraph(char2, char1, meta)) == char1))
+ return char2;
+ return retval;
+ }
+--- 2171,2186 ----
+ * Allow for both char1-char2 and char2-char1
+ */
+ int
+! getdigraph(char1, char2, meta_char)
+ int char1;
+ int char2;
+! int meta_char;
+ {
+ int retval;
+
+! if (((retval = getexactdigraph(char1, char2, meta_char)) == char2)
+ && (char1 != char2)
+! && ((retval = getexactdigraph(char2, char1, meta_char)) == char1))
+ return char2;
+ return retval;
+ }
+*** ../vim-7.3.399/src/edit.c 2011-12-23 13:14:58.000000000 +0100
+--- src/edit.c 2012-01-10 21:58:28.000000000 +0100
+***************
+*** 4003,4026 ****
+ ins_compl_add_dict(dict)
+ dict_T *dict;
+ {
+! dictitem_T *refresh;
+! dictitem_T *words;
+
+ /* Check for optional "refresh" item. */
+ compl_opt_refresh_always = FALSE;
+! refresh = dict_find(dict, (char_u *)"refresh", 7);
+! if (refresh != NULL && refresh->di_tv.v_type == VAR_STRING)
+ {
+! char_u *v = refresh->di_tv.vval.v_string;
+
+ if (v != NULL && STRCMP(v, (char_u *)"always") == 0)
+ compl_opt_refresh_always = TRUE;
+ }
+
+ /* Add completions from a "words" list. */
+! words = dict_find(dict, (char_u *)"words", 5);
+! if (words != NULL && words->di_tv.v_type == VAR_LIST)
+! ins_compl_add_list(words->di_tv.vval.v_list);
+ }
+
+ /*
+--- 4003,4026 ----
+ ins_compl_add_dict(dict)
+ dict_T *dict;
+ {
+! dictitem_T *di_refresh;
+! dictitem_T *di_words;
+
+ /* Check for optional "refresh" item. */
+ compl_opt_refresh_always = FALSE;
+! di_refresh = dict_find(dict, (char_u *)"refresh", 7);
+! if (di_refresh != NULL && di_refresh->di_tv.v_type == VAR_STRING)
+ {
+! char_u *v = di_refresh->di_tv.vval.v_string;
+
+ if (v != NULL && STRCMP(v, (char_u *)"always") == 0)
+ compl_opt_refresh_always = TRUE;
+ }
+
+ /* Add completions from a "words" list. */
+! di_words = dict_find(dict, (char_u *)"words", 5);
+! if (di_words != NULL && di_words->di_tv.v_type == VAR_LIST)
+! ins_compl_add_list(di_words->di_tv.vval.v_list);
+ }
+
+ /*
+*** ../vim-7.3.399/src/eval.c 2012-01-04 14:35:31.000000000 +0100
+--- src/eval.c 2012-01-10 22:00:50.000000000 +0100
+***************
+*** 6573,6587 ****
+
+ /*
+ * Join list "l" into a string in "*gap", using separator "sep".
+! * When "echo" is TRUE use String as echoed, otherwise as inside a List.
+ * Return FAIL or OK.
+ */
+ static int
+! list_join(gap, l, sep, echo, copyID)
+ garray_T *gap;
+ list_T *l;
+ char_u *sep;
+! int echo;
+ int copyID;
+ {
+ int first = TRUE;
+--- 6573,6587 ----
+
+ /*
+ * Join list "l" into a string in "*gap", using separator "sep".
+! * When "echo_style" is TRUE use String as echoed, otherwise as inside a List.
+ * Return FAIL or OK.
+ */
+ static int
+! list_join(gap, l, sep, echo_style, copyID)
+ garray_T *gap;
+ list_T *l;
+ char_u *sep;
+! int echo_style;
+ int copyID;
+ {
+ int first = TRUE;
+***************
+*** 6597,6603 ****
+ else
+ ga_concat(gap, sep);
+
+! if (echo)
+ s = echo_string(&item->li_tv, &tofree, numbuf, copyID);
+ else
+ s = tv2string(&item->li_tv, &tofree, numbuf, copyID);
+--- 6597,6603 ----
+ else
+ ga_concat(gap, sep);
+
+! if (echo_style)
+ s = echo_string(&item->li_tv, &tofree, numbuf, copyID);
+ else
+ s = tv2string(&item->li_tv, &tofree, numbuf, copyID);
+***************
+*** 17893,17899 ****
+ typval_T *argvars;
+ typval_T *rettv;
+ {
+! char_u *instr;
+ char_u *fromstr;
+ char_u *tostr;
+ char_u *p;
+--- 17893,17899 ----
+ typval_T *argvars;
+ typval_T *rettv;
+ {
+! char_u *in_str;
+ char_u *fromstr;
+ char_u *tostr;
+ char_u *p;
+***************
+*** 17910,17916 ****
+ char_u buf2[NUMBUFLEN];
+ garray_T ga;
+
+! instr = get_tv_string(&argvars[0]);
+ fromstr = get_tv_string_buf_chk(&argvars[1], buf);
+ tostr = get_tv_string_buf_chk(&argvars[2], buf2);
+
+--- 17910,17916 ----
+ char_u buf2[NUMBUFLEN];
+ garray_T ga;
+
+! in_str = get_tv_string(&argvars[0]);
+ fromstr = get_tv_string_buf_chk(&argvars[1], buf);
+ tostr = get_tv_string_buf_chk(&argvars[2], buf2);
+
+***************
+*** 17936,17954 ****
+ }
+
+ /* fromstr and tostr have to contain the same number of chars */
+! while (*instr != NUL)
+ {
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+ {
+! inlen = (*mb_ptr2len)(instr);
+! cpstr = instr;
+ cplen = inlen;
+ idx = 0;
+ for (p = fromstr; *p != NUL; p += fromlen)
+ {
+ fromlen = (*mb_ptr2len)(p);
+! if (fromlen == inlen && STRNCMP(instr, p, inlen) == 0)
+ {
+ for (p = tostr; *p != NUL; p += tolen)
+ {
+--- 17936,17954 ----
+ }
+
+ /* fromstr and tostr have to contain the same number of chars */
+! while (*in_str != NUL)
+ {
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+ {
+! inlen = (*mb_ptr2len)(in_str);
+! cpstr = in_str;
+ cplen = inlen;
+ idx = 0;
+ for (p = fromstr; *p != NUL; p += fromlen)
+ {
+ fromlen = (*mb_ptr2len)(p);
+! if (fromlen == inlen && STRNCMP(in_str, p, inlen) == 0)
+ {
+ for (p = tostr; *p != NUL; p += tolen)
+ {
+***************
+*** 17967,17977 ****
+ ++idx;
+ }
+
+! if (first && cpstr == instr)
+ {
+ /* Check that fromstr and tostr have the same number of
+ * (multi-byte) characters. Done only once when a character
+! * of instr doesn't appear in fromstr. */
+ first = FALSE;
+ for (p = tostr; *p != NUL; p += tolen)
+ {
+--- 17967,17977 ----
+ ++idx;
+ }
+
+! if (first && cpstr == in_str)
+ {
+ /* Check that fromstr and tostr have the same number of
+ * (multi-byte) characters. Done only once when a character
+! * of in_str doesn't appear in fromstr. */
+ first = FALSE;
+ for (p = tostr; *p != NUL; p += tolen)
+ {
+***************
+*** 17986,18003 ****
+ mch_memmove((char *)ga.ga_data + ga.ga_len, cpstr, (size_t)cplen);
+ ga.ga_len += cplen;
+
+! instr += inlen;
+ }
+ else
+ #endif
+ {
+ /* When not using multi-byte chars we can do it faster. */
+! p = vim_strchr(fromstr, *instr);
+ if (p != NULL)
+ ga_append(&ga, tostr[p - fromstr]);
+ else
+! ga_append(&ga, *instr);
+! ++instr;
+ }
+ }
+
+--- 17986,18003 ----
+ mch_memmove((char *)ga.ga_data + ga.ga_len, cpstr, (size_t)cplen);
+ ga.ga_len += cplen;
+
+! in_str += inlen;
+ }
+ else
+ #endif
+ {
+ /* When not using multi-byte chars we can do it faster. */
+! p = vim_strchr(fromstr, *in_str);
+ if (p != NULL)
+ ga_append(&ga, tostr[p - fromstr]);
+ else
+! ga_append(&ga, *in_str);
+! ++in_str;
+ }
+ }
+
+*** ../vim-7.3.399/src/fold.c 2011-08-26 16:12:55.000000000 +0200
+--- src/fold.c 2012-01-10 22:01:26.000000000 +0100
+***************
+*** 1033,1042 ****
+ * Init the fold info in a new window.
+ */
+ void
+! foldInitWin(newwin)
+! win_T *newwin;
+ {
+! ga_init2(&newwin->w_folds, (int)sizeof(fold_T), 10);
+ }
+
+ /* find_wl_entry() {{{2 */
+--- 1033,1042 ----
+ * Init the fold info in a new window.
+ */
+ void
+! foldInitWin(new_win)
+! win_T *new_win;
+ {
+! ga_init2(&new_win->w_folds, (int)sizeof(fold_T), 10);
+ }
+
+ /* find_wl_entry() {{{2 */
+*** ../vim-7.3.399/src/getchar.c 2011-12-23 14:54:01.000000000 +0100
+--- src/getchar.c 2012-01-10 22:02:30.000000000 +0100
+***************
+*** 418,429 ****
+
+ /*
+ * Remove the contents of the stuff buffer and the mapped characters in the
+! * typeahead buffer (used in case of an error). If 'typeahead' is true,
+ * flush all typeahead characters (used when interrupted by a CTRL-C).
+ */
+ void
+! flush_buffers(typeahead)
+! int typeahead;
+ {
+ init_typebuf();
+
+--- 418,429 ----
+
+ /*
+ * Remove the contents of the stuff buffer and the mapped characters in the
+! * typeahead buffer (used in case of an error). If "flush_typeahead" is true,
+ * flush all typeahead characters (used when interrupted by a CTRL-C).
+ */
+ void
+! flush_buffers(flush_typeahead)
+! int flush_typeahead;
+ {
+ init_typebuf();
+
+***************
+*** 431,437 ****
+ while (read_stuff(TRUE) != NUL)
+ ;
+
+! if (typeahead) /* remove all typeahead */
+ {
+ /*
+ * We have to get all characters, because we may delete the first part
+--- 431,437 ----
+ while (read_stuff(TRUE) != NUL)
+ ;
+
+! if (flush_typeahead) /* remove all typeahead */
+ {
+ /*
+ * We have to get all characters, because we may delete the first part
+*** ../vim-7.3.399/src/message.c 2011-12-30 14:14:16.000000000 +0100
+--- src/message.c 2012-01-10 22:03:56.000000000 +0100
+***************
+*** 2487,2493 ****
+ #ifdef FEAT_CON_DIALOG
+ int retval = FALSE;
+ #endif
+! int scroll;
+ msgchunk_T *mp_last = NULL;
+ msgchunk_T *mp;
+ int i;
+--- 2487,2493 ----
+ #ifdef FEAT_CON_DIALOG
+ int retval = FALSE;
+ #endif
+! int toscroll;
+ msgchunk_T *mp_last = NULL;
+ msgchunk_T *mp;
+ int i;
+***************
+*** 2538,2586 ****
+ }
+ #endif
+
+! scroll = 0;
+ switch (c)
+ {
+ case BS: /* scroll one line back */
+ case K_BS:
+ case 'k':
+ case K_UP:
+! scroll = -1;
+ break;
+
+ case CAR: /* one extra line */
+ case NL:
+ case 'j':
+ case K_DOWN:
+! scroll = 1;
+ break;
+
+ case 'u': /* Up half a page */
+! scroll = -(Rows / 2);
+ break;
+
+ case 'd': /* Down half a page */
+! scroll = Rows / 2;
+ break;
+
+ case 'b': /* one page back */
+ case K_PAGEUP:
+! scroll = -(Rows - 1);
+ break;
+
+ case ' ': /* one extra page */
+ case 'f':
+ case K_PAGEDOWN:
+ case K_LEFTMOUSE:
+! scroll = Rows - 1;
+ break;
+
+ case 'g': /* all the way back to the start */
+! scroll = -999999;
+ break;
+
+ case 'G': /* all the way to the end */
+! scroll = 999999;
+ lines_left = 999999;
+ break;
+
+--- 2538,2586 ----
+ }
+ #endif
+
+! toscroll = 0;
+ switch (c)
+ {
+ case BS: /* scroll one line back */
+ case K_BS:
+ case 'k':
+ case K_UP:
+! toscroll = -1;
+ break;
+
+ case CAR: /* one extra line */
+ case NL:
+ case 'j':
+ case K_DOWN:
+! toscroll = 1;
+ break;
+
+ case 'u': /* Up half a page */
+! toscroll = -(Rows / 2);
+ break;
+
+ case 'd': /* Down half a page */
+! toscroll = Rows / 2;
+ break;
+
+ case 'b': /* one page back */
+ case K_PAGEUP:
+! toscroll = -(Rows - 1);
+ break;
+
+ case ' ': /* one extra page */
+ case 'f':
+ case K_PAGEDOWN:
+ case K_LEFTMOUSE:
+! toscroll = Rows - 1;
+ break;
+
+ case 'g': /* all the way back to the start */
+! toscroll = -999999;
+ break;
+
+ case 'G': /* all the way to the end */
+! toscroll = 999999;
+ lines_left = 999999;
+ break;
+
+***************
+*** 2633,2641 ****
+ continue;
+ }
+
+! if (scroll != 0)
+ {
+! if (scroll < 0)
+ {
+ /* go to start of last line */
+ if (mp_last == NULL)
+--- 2633,2641 ----
+ continue;
+ }
+
+! if (toscroll != 0)
+ {
+! if (toscroll < 0)
+ {
+ /* go to start of last line */
+ if (mp_last == NULL)
+***************
+*** 2653,2659 ****
+ if (mp != NULL && mp->sb_prev != NULL)
+ {
+ /* Find line to be displayed at top. */
+! for (i = 0; i > scroll; --i)
+ {
+ if (mp == NULL || mp->sb_prev == NULL)
+ break;
+--- 2653,2659 ----
+ if (mp != NULL && mp->sb_prev != NULL)
+ {
+ /* Find line to be displayed at top. */
+! for (i = 0; i > toscroll; --i)
+ {
+ if (mp == NULL || mp->sb_prev == NULL)
+ break;
+***************
+*** 2664,2670 ****
+ mp_last = msg_sb_start(mp_last->sb_prev);
+ }
+
+! if (scroll == -1 && screen_ins_lines(0, 0, 1,
+ (int)Rows, NULL) == OK)
+ {
+ /* display line at top */
+--- 2664,2670 ----
+ mp_last = msg_sb_start(mp_last->sb_prev);
+ }
+
+! if (toscroll == -1 && screen_ins_lines(0, 0, 1,
+ (int)Rows, NULL) == OK)
+ {
+ /* display line at top */
+***************
+*** 2680,2692 ****
+ ++msg_scrolled;
+ }
+ }
+! scroll = 0;
+ }
+ }
+ else
+ {
+ /* First display any text that we scrolled back. */
+! while (scroll > 0 && mp_last != NULL)
+ {
+ /* scroll up, display line at bottom */
+ msg_scroll_up();
+--- 2680,2692 ----
+ ++msg_scrolled;
+ }
+ }
+! toscroll = 0;
+ }
+ }
+ else
+ {
+ /* First display any text that we scrolled back. */
+! while (toscroll > 0 && mp_last != NULL)
+ {
+ /* scroll up, display line at bottom */
+ msg_scroll_up();
+***************
+*** 2694,2704 ****
+ screen_fill((int)Rows - 2, (int)Rows - 1, 0,
+ (int)Columns, ' ', ' ', 0);
+ mp_last = disp_sb_line((int)Rows - 2, mp_last);
+! --scroll;
+ }
+ }
+
+! if (scroll <= 0)
+ {
+ /* displayed the requested text, more prompt again */
+ screen_fill((int)Rows - 1, (int)Rows, 0,
+--- 2694,2704 ----
+ screen_fill((int)Rows - 2, (int)Rows - 1, 0,
+ (int)Columns, ' ', ' ', 0);
+ mp_last = disp_sb_line((int)Rows - 2, mp_last);
+! --toscroll;
+ }
+ }
+
+! if (toscroll <= 0)
+ {
+ /* displayed the requested text, more prompt again */
+ screen_fill((int)Rows - 1, (int)Rows, 0,
+***************
+*** 2708,2714 ****
+ }
+
+ /* display more text, return to caller */
+! lines_left = scroll;
+ }
+
+ break;
+--- 2708,2714 ----
+ }
+
+ /* display more text, return to caller */
+! lines_left = toscroll;
+ }
+
+ break;
+*** ../vim-7.3.399/src/misc2.c 2012-01-10 16:28:41.000000000 +0100
+--- src/misc2.c 2012-01-10 22:04:25.000000000 +0100
+***************
+*** 1559,1565 ****
+ if (enc_utf8)
+ {
+ int c, uc;
+! int nl;
+ char_u *s;
+
+ c = utf_ptr2char(p);
+--- 1559,1565 ----
+ if (enc_utf8)
+ {
+ int c, uc;
+! int newl;
+ char_u *s;
+
+ c = utf_ptr2char(p);
+***************
+*** 1568,1588 ****
+ /* Reallocate string when byte count changes. This is rare,
+ * thus it's OK to do another malloc()/free(). */
+ l = utf_ptr2len(p);
+! nl = utf_char2len(uc);
+! if (nl != l)
+ {
+! s = alloc((unsigned)STRLEN(res) + 1 + nl - l);
+ if (s == NULL)
+ break;
+ mch_memmove(s, res, p - res);
+! STRCPY(s + (p - res) + nl, p + l);
+ p = s + (p - res);
+ vim_free(res);
+ res = s;
+ }
+
+ utf_char2bytes(uc, p);
+! p += nl;
+ }
+ else if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1)
+ p += l; /* skip multi-byte character */
+--- 1568,1588 ----
+ /* Reallocate string when byte count changes. This is rare,
+ * thus it's OK to do another malloc()/free(). */
+ l = utf_ptr2len(p);
+! newl = utf_char2len(uc);
+! if (newl != l)
+ {
+! s = alloc((unsigned)STRLEN(res) + 1 + newl - l);
+ if (s == NULL)
+ break;
+ mch_memmove(s, res, p - res);
+! STRCPY(s + (p - res) + newl, p + l);
+ p = s + (p - res);
+ vim_free(res);
+ res = s;
+ }
+
+ utf_char2bytes(uc, p);
+! p += newl;
+ }
+ else if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1)
+ p += l; /* skip multi-byte character */
+*** ../vim-7.3.399/src/move.c 2011-02-01 18:01:06.000000000 +0100
+--- src/move.c 2012-01-10 22:05:22.000000000 +0100
+***************
+*** 926,933 ****
+ * Also updates curwin->w_leftcol.
+ */
+ void
+! curs_columns(scroll)
+! int scroll; /* when TRUE, may scroll horizontally */
+ {
+ int diff;
+ int extra; /* offset for first screen line */
+--- 926,933 ----
+ * Also updates curwin->w_leftcol.
+ */
+ void
+! curs_columns(may_scroll)
+! int may_scroll; /* when TRUE, may scroll horizontally */
+ {
+ int diff;
+ int extra; /* offset for first screen line */
+***************
+*** 1014,1020 ****
+ /* No line wrapping: compute curwin->w_leftcol if scrolling is on and line
+ * is not folded.
+ * If scrolling is off, curwin->w_leftcol is assumed to be 0 */
+! else if (scroll
+ #ifdef FEAT_FOLDING
+ && !curwin->w_cline_folded
+ #endif
+--- 1014,1020 ----
+ /* No line wrapping: compute curwin->w_leftcol if scrolling is on and line
+ * is not folded.
+ * If scrolling is off, curwin->w_leftcol is assumed to be 0 */
+! else if (may_scroll
+ #ifdef FEAT_FOLDING
+ && !curwin->w_cline_folded
+ #endif
+*** ../vim-7.3.399/src/netbeans.c 2011-10-20 21:58:20.000000000 +0200
+--- src/netbeans.c 2012-01-10 22:16:26.000000000 +0100
+***************
+*** 1395,1401 ****
+ int cmdno,
+ char_u *args) /* points to space before arguments or NUL */
+ {
+! int doupdate = 0;
+ long off = 0;
+ nbbuf_T *buf = nb_get_buf(bufno);
+ static int skip = 0;
+--- 1395,1401 ----
+ int cmdno,
+ char_u *args) /* points to space before arguments or NUL */
+ {
+! int do_update = 0;
+ long off = 0;
+ nbbuf_T *buf = nb_get_buf(bufno);
+ static int skip = 0;
+***************
+*** 1600,1606 ****
+ last.lnum, last.col));
+ del_from_lnum = first.lnum;
+ del_to_lnum = last.lnum;
+! doupdate = 1;
+
+ /* Get the position of the first byte after the deleted
+ * section. "next" is NULL when deleting to the end of the
+--- 1600,1606 ----
+ last.lnum, last.col));
+ del_from_lnum = first.lnum;
+ del_to_lnum = last.lnum;
+! do_update = 1;
+
+ /* Get the position of the first byte after the deleted
+ * section. "next" is NULL when deleting to the end of the
+***************
+*** 1777,1783 ****
+ lnum = lnum_start;
+
+ /* Loop over the "\n" separated lines of the argument. */
+! doupdate = 1;
+ while (*args != NUL)
+ {
+ nl = vim_strchr(args, '\n');
+--- 1777,1783 ----
+ lnum = lnum_start;
+
+ /* Loop over the "\n" separated lines of the argument. */
+! do_update = 1;
+ while (*args != NUL)
+ {
+ nl = vim_strchr(args, '\n');
+***************
+*** 1992,1998 ****
+ EMSG("E640: invalid buffer identifier in initDone");
+ return FAIL;
+ }
+! doupdate = 1;
+ buf->initDone = TRUE;
+ nb_set_curbuf(buf->bufp);
+ #if defined(FEAT_AUTOCMD)
+--- 1992,1998 ----
+ EMSG("E640: invalid buffer identifier in initDone");
+ return FAIL;
+ }
+! do_update = 1;
+ buf->initDone = TRUE;
+ nb_set_curbuf(buf->bufp);
+ #if defined(FEAT_AUTOCMD)
+***************
+*** 2081,2087 ****
+ ECMD_HIDE + ECMD_OLDBUF, curwin);
+ buf->bufp = curbuf;
+ buf->initDone = TRUE;
+! doupdate = 1;
+ #if defined(FEAT_TITLE)
+ maketitle();
+ #endif
+--- 2081,2087 ----
+ ECMD_HIDE + ECMD_OLDBUF, curwin);
+ buf->bufp = curbuf;
+ buf->initDone = TRUE;
+! do_update = 1;
+ #if defined(FEAT_TITLE)
+ maketitle();
+ #endif
+***************
+*** 2109,2115 ****
+ exarg.forceit = FALSE;
+ dosetvisible = TRUE;
+ goto_buffer(&exarg, DOBUF_FIRST, FORWARD, buf->bufp->b_fnum);
+! doupdate = 1;
+ dosetvisible = FALSE;
+
+ #ifdef FEAT_GUI
+--- 2109,2115 ----
+ exarg.forceit = FALSE;
+ dosetvisible = TRUE;
+ goto_buffer(&exarg, DOBUF_FIRST, FORWARD, buf->bufp->b_fnum);
+! do_update = 1;
+ dosetvisible = FALSE;
+
+ #ifdef FEAT_GUI
+***************
+*** 2309,2315 ****
+ buf->bufp->b_fnum, TRUE);
+ buf->bufp = NULL;
+ buf->initDone = FALSE;
+! doupdate = 1;
+ /* =====================================================================*/
+ }
+ else if (streq((char *)cmd, "setStyle")) /* obsolete... */
+--- 2309,2315 ----
+ buf->bufp->b_fnum, TRUE);
+ buf->bufp = NULL;
+ buf->initDone = FALSE;
+! do_update = 1;
+ /* =====================================================================*/
+ }
+ else if (streq((char *)cmd, "setStyle")) /* obsolete... */
+***************
+*** 2400,2406 ****
+ return FAIL;
+ }
+
+! doupdate = 1;
+
+ cp = (char *)args;
+ serNum = strtol(cp, &cp, 10);
+--- 2400,2406 ----
+ return FAIL;
+ }
+
+! do_update = 1;
+
+ cp = (char *)args;
+ serNum = strtol(cp, &cp, 10);
+***************
+*** 2448,2454 ****
+ nbdebug((" invalid buffer identifier in removeAnno\n"));
+ return FAIL;
+ }
+! doupdate = 1;
+ cp = (char *)args;
+ serNum = strtol(cp, &cp, 10);
+ args = (char_u *)cp;
+--- 2448,2454 ----
+ nbdebug((" invalid buffer identifier in removeAnno\n"));
+ return FAIL;
+ }
+! do_update = 1;
+ cp = (char *)args;
+ serNum = strtol(cp, &cp, 10);
+ args = (char_u *)cp;
+***************
+*** 2493,2499 ****
+ len = strtol(cp, NULL, 10);
+ args = (char_u *)cp;
+ pos = off2pos(buf->bufp, off);
+! doupdate = 1;
+ if (!pos)
+ nbdebug((" no such start pos in %s, %ld\n", cmd, off));
+ else
+--- 2493,2499 ----
+ len = strtol(cp, NULL, 10);
+ args = (char_u *)cp;
+ pos = off2pos(buf->bufp, off);
+! do_update = 1;
+ if (!pos)
+ nbdebug((" no such start pos in %s, %ld\n", cmd, off));
+ else
+***************
+*** 2555,2561 ****
+ inAtomic = 0;
+ if (needupdate)
+ {
+! doupdate = 1;
+ needupdate = 0;
+ }
+ /* =====================================================================*/
+--- 2555,2561 ----
+ inAtomic = 0;
+ if (needupdate)
+ {
+! do_update = 1;
+ needupdate = 0;
+ }
+ /* =====================================================================*/
+***************
+*** 2636,2653 ****
+ * Unrecognized command is ignored.
+ */
+ }
+! if (inAtomic && doupdate)
+ {
+ needupdate = 1;
+! doupdate = 0;
+ }
+
+ /*
+ * Is this needed? I moved the netbeans_Xt_connect() later during startup
+ * and it may no longer be necessary. If its not needed then needupdate
+! * and doupdate can also be removed.
+ */
+! if (buf != NULL && buf->initDone && doupdate)
+ {
+ update_screen(NOT_VALID);
+ setcursor();
+--- 2636,2653 ----
+ * Unrecognized command is ignored.
+ */
+ }
+! if (inAtomic && do_update)
+ {
+ needupdate = 1;
+! do_update = 0;
+ }
+
+ /*
+ * Is this needed? I moved the netbeans_Xt_connect() later during startup
+ * and it may no longer be necessary. If its not needed then needupdate
+! * and do_update can also be removed.
+ */
+! if (buf != NULL && buf->initDone && do_update)
+ {
+ update_screen(NOT_VALID);
+ setcursor();
+*** ../vim-7.3.399/src/option.c 2012-01-04 19:34:32.000000000 +0100
+--- src/option.c 2012-01-10 22:06:03.000000000 +0100
+***************
+*** 8584,8591 ****
+ long_u flags;
+ {
+ /* Careful: P_RCLR and P_RALL are a combination of other P_ flags */
+! int clear = (flags & P_RCLR) == P_RCLR;
+! int all = ((flags & P_RALL) == P_RALL || clear);
+
+ #ifdef FEAT_WINDOWS
+ if ((flags & P_RSTAT) || all) /* mark all status lines dirty */
+--- 8584,8591 ----
+ long_u flags;
+ {
+ /* Careful: P_RCLR and P_RALL are a combination of other P_ flags */
+! int doclear = (flags & P_RCLR) == P_RCLR;
+! int all = ((flags & P_RALL) == P_RALL || doclear);
+
+ #ifdef FEAT_WINDOWS
+ if ((flags & P_RSTAT) || all) /* mark all status lines dirty */
+***************
+*** 8596,8602 ****
+ changed_window_setting();
+ if (flags & P_RBUF)
+ redraw_curbuf_later(NOT_VALID);
+! if (clear)
+ redraw_all_later(CLEAR);
+ else if (all)
+ redraw_all_later(NOT_VALID);
+--- 8596,8602 ----
+ changed_window_setting();
+ if (flags & P_RBUF)
+ redraw_curbuf_later(NOT_VALID);
+! if (doclear)
+ redraw_all_later(CLEAR);
+ else if (all)
+ redraw_all_later(NOT_VALID);
+*** ../vim-7.3.399/src/os_unix.c 2011-10-20 21:09:25.000000000 +0200
+--- src/os_unix.c 2012-01-10 21:48:49.000000000 +0100
+***************
+*** 3884,3890 ****
+ char_u *p_shcf_copy = NULL;
+ int i;
+ char_u *p;
+- char_u *s;
+ int inquote;
+ int pty_master_fd = -1; /* for pty's */
+ # ifdef FEAT_GUI
+--- 3884,3889 ----
+***************
+*** 3963,3968 ****
+--- 3962,3969 ----
+ }
+ if (cmd != NULL)
+ {
++ char_u *s;
++
+ if (extra_shell_arg != NULL)
+ argv[argc++] = (char *)extra_shell_arg;
+
+***************
+*** 4325,4331 ****
+ linenr_T lnum = curbuf->b_op_start.lnum;
+ int written = 0;
+ char_u *lp = ml_get(lnum);
+- char_u *s;
+ size_t l;
+
+ close(fromshell_fd);
+--- 4326,4331 ----
+***************
+*** 4339,4345 ****
+ len = write(toshell_fd, "", (size_t)1);
+ else
+ {
+! s = vim_strchr(lp + written, NL);
+ len = write(toshell_fd, (char *)lp + written,
+ s == NULL ? l
+ : (size_t)(s - (lp + written)));
+--- 4339,4346 ----
+ len = write(toshell_fd, "", (size_t)1);
+ else
+ {
+! char_u *s = vim_strchr(lp + written, NL);
+!
+ len = write(toshell_fd, (char *)lp + written,
+ s == NULL ? l
+ : (size_t)(s - (lp + written)));
+*** ../vim-7.3.399/src/screen.c 2012-01-10 12:42:05.000000000 +0100
+--- src/screen.c 2012-01-10 22:06:51.000000000 +0100
+***************
+*** 7849,7863 ****
+
+ /*
+ * screen_valid - allocate screen buffers if size changed
+! * If "clear" is TRUE: clear screen if it has been resized.
+ * Returns TRUE if there is a valid screen to write to.
+ * Returns FALSE when starting up and screen not initialized yet.
+ */
+ int
+! screen_valid(clear)
+! int clear;
+ {
+! screenalloc(clear); /* allocate screen buffers if size changed */
+ return (ScreenLines != NULL);
+ }
+
+--- 7849,7863 ----
+
+ /*
+ * screen_valid - allocate screen buffers if size changed
+! * If "doclear" is TRUE: clear screen if it has been resized.
+ * Returns TRUE if there is a valid screen to write to.
+ * Returns FALSE when starting up and screen not initialized yet.
+ */
+ int
+! screen_valid(doclear)
+! int doclear;
+ {
+! screenalloc(doclear); /* allocate screen buffers if size changed */
+ return (ScreenLines != NULL);
+ }
+
+***************
+*** 7872,7879 ****
+ * final size of the shell is needed.
+ */
+ void
+! screenalloc(clear)
+! int clear;
+ {
+ int new_row, old_row;
+ #ifdef FEAT_GUI
+--- 7872,7879 ----
+ * final size of the shell is needed.
+ */
+ void
+! screenalloc(doclear)
+! int doclear;
+ {
+ int new_row, old_row;
+ #ifdef FEAT_GUI
+***************
+*** 8069,8075 ****
+ * (used when resizing the window at the "--more--" prompt or when
+ * executing an external command, for the GUI).
+ */
+! if (!clear)
+ {
+ (void)vim_memset(new_ScreenLines + new_row * Columns,
+ ' ', (size_t)Columns * sizeof(schar_T));
+--- 8069,8075 ----
+ * (used when resizing the window at the "--more--" prompt or when
+ * executing an external command, for the GUI).
+ */
+! if (!doclear)
+ {
+ (void)vim_memset(new_ScreenLines + new_row * Columns,
+ ' ', (size_t)Columns * sizeof(schar_T));
+***************
+*** 8159,8165 ****
+ screen_Columns = Columns;
+
+ must_redraw = CLEAR; /* need to clear the screen later */
+! if (clear)
+ screenclear2();
+
+ #ifdef FEAT_GUI
+--- 8159,8165 ----
+ screen_Columns = Columns;
+
+ must_redraw = CLEAR; /* need to clear the screen later */
+! if (doclear)
+ screenclear2();
+
+ #ifdef FEAT_GUI
+*** ../vim-7.3.399/src/search.c 2011-10-04 17:00:13.000000000 +0200
+--- src/search.c 2012-01-10 22:07:16.000000000 +0100
+***************
+*** 2402,2425 ****
+ {
+ if (vim_strchr(p, ';') != NULL) /* there may be comments */
+ {
+! int instr = FALSE; /* inside of string */
+
+ p = line; /* scan from start */
+ while ((p = vim_strpbrk(p, (char_u *)"\";")) != NULL)
+ {
+ if (*p == '"')
+ {
+! if (instr)
+ {
+ if (*(p - 1) != '\\') /* skip escaped quote */
+! instr = FALSE;
+ }
+ else if (p == line || ((p - line) >= 2
+ /* skip #\" form */
+ && *(p - 1) != '\\' && *(p - 2) != '#'))
+! instr = TRUE;
+ }
+! else if (!instr && ((p - line) < 2
+ || (*(p - 1) != '\\' && *(p - 2) != '#')))
+ break; /* found! */
+ ++p;
+--- 2402,2425 ----
+ {
+ if (vim_strchr(p, ';') != NULL) /* there may be comments */
+ {
+! int in_str = FALSE; /* inside of string */
+
+ p = line; /* scan from start */
+ while ((p = vim_strpbrk(p, (char_u *)"\";")) != NULL)
+ {
+ if (*p == '"')
+ {
+! if (in_str)
+ {
+ if (*(p - 1) != '\\') /* skip escaped quote */
+! in_str = FALSE;
+ }
+ else if (p == line || ((p - line) >= 2
+ /* skip #\" form */
+ && *(p - 1) != '\\' && *(p - 2) != '#'))
+! in_str = TRUE;
+ }
+! else if (!in_str && ((p - line) < 2
+ || (*(p - 1) != '\\' && *(p - 2) != '#')))
+ break; /* found! */
+ ++p;
+*** ../vim-7.3.399/src/spell.c 2012-01-10 16:28:41.000000000 +0100
+--- src/spell.c 2012-01-10 22:09:23.000000000 +0100
+***************
+*** 5049,5055 ****
+ static int offset2bytes __ARGS((int nr, char_u *buf));
+ static int bytes2offset __ARGS((char_u **pp));
+ static void sug_write __ARGS((spellinfo_T *spin, char_u *fname));
+! static void mkspell __ARGS((int fcount, char_u **fnames, int ascii, int overwrite, int added_word));
+ static void spell_message __ARGS((spellinfo_T *spin, char_u *str));
+ static void init_spellfile __ARGS((void));
+
+--- 5049,5055 ----
+ static int offset2bytes __ARGS((int nr, char_u *buf));
+ static int bytes2offset __ARGS((char_u **pp));
+ static void sug_write __ARGS((spellinfo_T *spin, char_u *fname));
+! static void mkspell __ARGS((int fcount, char_u **fnames, int ascii, int over_write, int added_word));
+ static void spell_message __ARGS((spellinfo_T *spin, char_u *str));
+ static void init_spellfile __ARGS((void));
+
+***************
+*** 9085,9095 ****
+ * and ".spl" is appended to make the output file name.
+ */
+ static void
+! mkspell(fcount, fnames, ascii, overwrite, added_word)
+ int fcount;
+ char_u **fnames;
+ int ascii; /* -ascii argument given */
+! int overwrite; /* overwrite existing output file */
+ int added_word; /* invoked through "zg" */
+ {
+ char_u *fname = NULL;
+--- 9085,9095 ----
+ * and ".spl" is appended to make the output file name.
+ */
+ static void
+! mkspell(fcount, fnames, ascii, over_write, added_word)
+ int fcount;
+ char_u **fnames;
+ int ascii; /* -ascii argument given */
+! int over_write; /* overwrite existing output file */
+ int added_word; /* invoked through "zg" */
+ {
+ char_u *fname = NULL;
+***************
+*** 9173,9179 ****
+ {
+ /* Check for overwriting before doing things that may take a lot of
+ * time. */
+! if (!overwrite && mch_stat((char *)wfname, &st) >= 0)
+ {
+ EMSG(_(e_exists));
+ goto theend;
+--- 9173,9179 ----
+ {
+ /* Check for overwriting before doing things that may take a lot of
+ * time. */
+! if (!over_write && mch_stat((char *)wfname, &st) >= 0)
+ {
+ EMSG(_(e_exists));
+ goto theend;
+*** ../vim-7.3.399/src/syntax.c 2011-06-19 04:54:17.000000000 +0200
+--- src/syntax.c 2012-01-10 22:10:23.000000000 +0100
+***************
+*** 4006,4022 ****
+ }
+
+ static void
+! syn_list_flags(nl, flags, attr)
+! struct name_list *nl;
+ int flags;
+ int attr;
+ {
+ int i;
+
+! for (i = 0; nl[i].flag != 0; ++i)
+! if (flags & nl[i].flag)
+ {
+! msg_puts_attr((char_u *)nl[i].name, attr);
+ msg_putchar(' ');
+ }
+ }
+--- 4006,4022 ----
+ }
+
+ static void
+! syn_list_flags(nlist, flags, attr)
+! struct name_list *nlist;
+ int flags;
+ int attr;
+ {
+ int i;
+
+! for (i = 0; nlist[i].flag != 0; ++i)
+! if (flags & nlist[i].flag)
+ {
+! msg_puts_attr((char_u *)nlist[i].name, attr);
+ msg_putchar(' ');
+ }
+ }
+*** ../vim-7.3.399/src/tag.c 2011-12-14 14:15:12.000000000 +0100
+--- src/tag.c 2012-01-10 21:51:05.000000000 +0100
+***************
+*** 1353,1359 ****
+ int match_count = 0; /* number of matches found */
+ char_u **matches;
+ int mtt;
+- int len;
+ int help_save;
+ #ifdef FEAT_MULTI_LANG
+ int help_pri = 0;
+--- 1353,1358 ----
+***************
+*** 2235,2240 ****
+--- 2234,2241 ----
+ */
+ if (ga_grow(&ga_match[mtt], 1) == OK)
+ {
++ int len;
++
+ if (help_only)
+ {
+ #ifdef FEAT_MULTI_LANG
+*** ../vim-7.3.399/src/window.c 2011-12-30 15:01:55.000000000 +0100
+--- src/window.c 2012-01-10 22:11:41.000000000 +0100
+***************
+*** 683,701 ****
+ }
+
+ /*
+! * When "newwin" is NULL: split the current window in two.
+! * When "newwin" is not NULL: insert this window at the far
+ * top/left/right/bottom.
+ * return FAIL for failure, OK otherwise
+ */
+ int
+! win_split_ins(size, flags, newwin, dir)
+ int size;
+ int flags;
+! win_T *newwin;
+ int dir;
+ {
+! win_T *wp = newwin;
+ win_T *oldwin;
+ int new_size = size;
+ int i;
+--- 683,701 ----
+ }
+
+ /*
+! * When "new_wp" is NULL: split the current window in two.
+! * When "new_wp" is not NULL: insert this window at the far
+ * top/left/right/bottom.
+ * return FAIL for failure, OK otherwise
+ */
+ int
+! win_split_ins(size, flags, new_wp, dir)
+ int size;
+ int flags;
+! win_T *new_wp;
+ int dir;
+ {
+! win_T *wp = new_wp;
+ win_T *oldwin;
+ int new_size = size;
+ int i;
+***************
+*** 718,724 ****
+ /* add a status line when p_ls == 1 and splitting the first window */
+ if (lastwin == firstwin && p_ls == 1 && oldwin->w_status_height == 0)
+ {
+! if (oldwin->w_height <= p_wmh && newwin == NULL)
+ {
+ EMSG(_(e_noroom));
+ return FAIL;
+--- 718,724 ----
+ /* add a status line when p_ls == 1 and splitting the first window */
+ if (lastwin == firstwin && p_ls == 1 && oldwin->w_status_height == 0)
+ {
+! if (oldwin->w_height <= p_wmh && new_wp == NULL)
+ {
+ EMSG(_(e_noroom));
+ return FAIL;
+***************
+*** 751,757 ****
+ }
+ else
+ available = oldwin->w_width;
+! if (available < needed && newwin == NULL)
+ {
+ EMSG(_(e_noroom));
+ return FAIL;
+--- 751,757 ----
+ }
+ else
+ available = oldwin->w_width;
+! if (available < needed && new_wp == NULL)
+ {
+ EMSG(_(e_noroom));
+ return FAIL;
+***************
+*** 815,821 ****
+ available = oldwin->w_height;
+ needed += p_wmh;
+ }
+! if (available < needed && newwin == NULL)
+ {
+ EMSG(_(e_noroom));
+ return FAIL;
+--- 815,821 ----
+ available = oldwin->w_height;
+ needed += p_wmh;
+ }
+! if (available < needed && new_wp == NULL)
+ {
+ EMSG(_(e_noroom));
+ return FAIL;
+***************
+*** 888,907 ****
+ p_sb))))
+ {
+ /* new window below/right of current one */
+! if (newwin == NULL)
+ wp = win_alloc(oldwin, FALSE);
+ else
+ win_append(oldwin, wp);
+ }
+ else
+ {
+! if (newwin == NULL)
+ wp = win_alloc(oldwin->w_prev, FALSE);
+ else
+ win_append(oldwin->w_prev, wp);
+ }
+
+! if (newwin == NULL)
+ {
+ if (wp == NULL)
+ return FAIL;
+--- 888,907 ----
+ p_sb))))
+ {
+ /* new window below/right of current one */
+! if (new_wp == NULL)
+ wp = win_alloc(oldwin, FALSE);
+ else
+ win_append(oldwin, wp);
+ }
+ else
+ {
+! if (new_wp == NULL)
+ wp = win_alloc(oldwin->w_prev, FALSE);
+ else
+ win_append(oldwin->w_prev, wp);
+ }
+
+! if (new_wp == NULL)
+ {
+ if (wp == NULL)
+ return FAIL;
+***************
+*** 972,981 ****
+ frp->fr_parent = curfrp;
+ }
+
+! if (newwin == NULL)
+ frp = wp->w_frame;
+ else
+! frp = newwin->w_frame;
+ frp->fr_parent = curfrp->fr_parent;
+
+ /* Insert the new frame at the right place in the frame list. */
+--- 972,981 ----
+ frp->fr_parent = curfrp;
+ }
+
+! if (new_wp == NULL)
+ frp = wp->w_frame;
+ else
+! frp = new_wp->w_frame;
+ frp->fr_parent = curfrp->fr_parent;
+
+ /* Insert the new frame at the right place in the frame list. */
+***************
+*** 4284,4302 ****
+ win_T *after UNUSED;
+ int hidden UNUSED;
+ {
+! win_T *newwin;
+
+ /*
+ * allocate window structure and linesizes arrays
+ */
+! newwin = (win_T *)alloc_clear((unsigned)sizeof(win_T));
+! if (newwin != NULL && win_alloc_lines(newwin) == FAIL)
+ {
+! vim_free(newwin);
+! newwin = NULL;
+ }
+
+! if (newwin != NULL)
+ {
+ #ifdef FEAT_AUTOCMD
+ /* Don't execute autocommands while the window is not properly
+--- 4284,4302 ----
+ win_T *after UNUSED;
+ int hidden UNUSED;
+ {
+! win_T *new_wp;
+
+ /*
+ * allocate window structure and linesizes arrays
+ */
+! new_wp = (win_T *)alloc_clear((unsigned)sizeof(win_T));
+! if (new_wp != NULL && win_alloc_lines(new_wp) == FAIL)
+ {
+! vim_free(new_wp);
+! new_wp = NULL;
+ }
+
+! if (new_wp != NULL)
+ {
+ #ifdef FEAT_AUTOCMD
+ /* Don't execute autocommands while the window is not properly
+***************
+*** 4309,4361 ****
+ */
+ #ifdef FEAT_WINDOWS
+ if (!hidden)
+! win_append(after, newwin);
+ #endif
+ #ifdef FEAT_VERTSPLIT
+! newwin->w_wincol = 0;
+! newwin->w_width = Columns;
+ #endif
+
+ /* position the display and the cursor at the top of the file. */
+! newwin->w_topline = 1;
+ #ifdef FEAT_DIFF
+! newwin->w_topfill = 0;
+ #endif
+! newwin->w_botline = 2;
+! newwin->w_cursor.lnum = 1;
+ #ifdef FEAT_SCROLLBIND
+! newwin->w_scbind_pos = 1;
+ #endif
+
+ /* We won't calculate w_fraction until resizing the window */
+! newwin->w_fraction = 0;
+! newwin->w_prev_fraction_row = -1;
+
+ #ifdef FEAT_GUI
+ if (gui.in_use)
+ {
+! gui_create_scrollbar(&newwin->w_scrollbars[SBAR_LEFT],
+! SBAR_LEFT, newwin);
+! gui_create_scrollbar(&newwin->w_scrollbars[SBAR_RIGHT],
+! SBAR_RIGHT, newwin);
+ }
+ #endif
+ #ifdef FEAT_EVAL
+ /* init w: variables */
+! init_var_dict(&newwin->w_vars, &newwin->w_winvar);
+ #endif
+ #ifdef FEAT_FOLDING
+! foldInitWin(newwin);
+ #endif
+ #ifdef FEAT_AUTOCMD
+ unblock_autocmds();
+ #endif
+ #ifdef FEAT_SEARCH_EXTRA
+! newwin->w_match_head = NULL;
+! newwin->w_next_match_id = 4;
+ #endif
+ }
+! return newwin;
+ }
+
+ #if defined(FEAT_WINDOWS) || defined(PROTO)
+--- 4309,4361 ----
+ */
+ #ifdef FEAT_WINDOWS
+ if (!hidden)
+! win_append(after, new_wp);
+ #endif
+ #ifdef FEAT_VERTSPLIT
+! new_wp->w_wincol = 0;
+! new_wp->w_width = Columns;
+ #endif
+
+ /* position the display and the cursor at the top of the file. */
+! new_wp->w_topline = 1;
+ #ifdef FEAT_DIFF
+! new_wp->w_topfill = 0;
+ #endif
+! new_wp->w_botline = 2;
+! new_wp->w_cursor.lnum = 1;
+ #ifdef FEAT_SCROLLBIND
+! new_wp->w_scbind_pos = 1;
+ #endif
+
+ /* We won't calculate w_fraction until resizing the window */
+! new_wp->w_fraction = 0;
+! new_wp->w_prev_fraction_row = -1;
+
+ #ifdef FEAT_GUI
+ if (gui.in_use)
+ {
+! gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_LEFT],
+! SBAR_LEFT, new_wp);
+! gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_RIGHT],
+! SBAR_RIGHT, new_wp);
+ }
+ #endif
+ #ifdef FEAT_EVAL
+ /* init w: variables */
+! init_var_dict(&new_wp->w_vars, &new_wp->w_winvar);
+ #endif
+ #ifdef FEAT_FOLDING
+! foldInitWin(new_wp);
+ #endif
+ #ifdef FEAT_AUTOCMD
+ unblock_autocmds();
+ #endif
+ #ifdef FEAT_SEARCH_EXTRA
+! new_wp->w_match_head = NULL;
+! new_wp->w_next_match_id = 4;
+ #endif
+ }
+! return new_wp;
+ }
+
+ #if defined(FEAT_WINDOWS) || defined(PROTO)
+*** ../vim-7.3.399/src/version.c 2012-01-10 18:37:53.000000000 +0100
+--- src/version.c 2012-01-10 22:23:10.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 400,
+ /**/
+
+--
+A parent can be arrested if his child cannot hold back a burp during a church
+service.
+ [real standing law in Nebraska, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.401 b/source/ap/vim/patches/7.3.401
new file mode 100644
index 000000000..6a473c575
--- /dev/null
+++ b/source/ap/vim/patches/7.3.401
@@ -0,0 +1,191 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.401
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.401
+Problem: A couple more shadowed variables.
+Solution: Rename the variables.
+Files: src/netbeans.c
+
+
+*** ../vim-7.3.400/src/netbeans.c 2012-01-10 22:26:12.000000000 +0100
+--- src/netbeans.c 2012-01-10 22:30:17.000000000 +0100
+***************
+*** 443,449 ****
+ FILE *fp;
+ char_u buf[BUFSIZ];
+ char_u *lp;
+! char_u *nl;
+ #ifdef UNIX
+ struct stat st;
+
+--- 443,449 ----
+ FILE *fp;
+ char_u buf[BUFSIZ];
+ char_u *lp;
+! char_u *nlp;
+ #ifdef UNIX
+ struct stat st;
+
+***************
+*** 472,479 ****
+ /* Read the file. There should be one of each parameter */
+ while ((lp = (char_u *)fgets((char *)buf, BUFSIZ, fp)) != NULL)
+ {
+! if ((nl = vim_strchr(lp, '\n')) != NULL)
+! *nl = 0; /* strip off the trailing newline */
+
+ if (STRNCMP(lp, "host=", 5) == 0)
+ {
+--- 472,479 ----
+ /* Read the file. There should be one of each parameter */
+ while ((lp = (char_u *)fgets((char *)buf, BUFSIZ, fp)) != NULL)
+ {
+! if ((nlp = vim_strchr(lp, '\n')) != NULL)
+! *nlp = 0; /* strip off the trailing newline */
+
+ if (STRNCMP(lp, "host=", 5) == 0)
+ {
+***************
+*** 1740,1746 ****
+ int added = 0;
+ int oldFire = netbeansFireChanges;
+ int old_b_changed;
+! char_u *nl;
+ linenr_T lnum;
+ linenr_T lnum_start;
+ pos_T *pos;
+--- 1740,1746 ----
+ int added = 0;
+ int oldFire = netbeansFireChanges;
+ int old_b_changed;
+! char_u *nlp;
+ linenr_T lnum;
+ linenr_T lnum_start;
+ pos_T *pos;
+***************
+*** 1780,1787 ****
+ do_update = 1;
+ while (*args != NUL)
+ {
+! nl = vim_strchr(args, '\n');
+! if (nl == NULL)
+ {
+ /* Incomplete line, probably truncated. Next "insert"
+ * command should append to this one. */
+--- 1780,1787 ----
+ do_update = 1;
+ while (*args != NUL)
+ {
+! nlp = vim_strchr(args, '\n');
+! if (nlp == NULL)
+ {
+ /* Incomplete line, probably truncated. Next "insert"
+ * command should append to this one. */
+***************
+*** 1789,1801 ****
+ }
+ else
+ {
+! len = nl - args;
+
+ /*
+ * We need to detect EOL style, because the commands
+ * use a character offset.
+ */
+! if (nl > args && nl[-1] == '\r')
+ {
+ ff_detected = EOL_DOS;
+ --len;
+--- 1789,1801 ----
+ }
+ else
+ {
+! len = nlp - args;
+
+ /*
+ * We need to detect EOL style, because the commands
+ * use a character offset.
+ */
+! if (nlp > args && nlp[-1] == '\r')
+ {
+ ff_detected = EOL_DOS;
+ --len;
+***************
+*** 1814,1820 ****
+
+ /* Insert halfway a line. For simplicity we assume we
+ * need to append to the line. */
+! newline = alloc_check((unsigned)(STRLEN(oldline) + len + 1));
+ if (newline != NULL)
+ {
+ STRCPY(newline, oldline);
+--- 1814,1821 ----
+
+ /* Insert halfway a line. For simplicity we assume we
+ * need to append to the line. */
+! newline = alloc_check(
+! (unsigned)(STRLEN(oldline) + len + 1));
+ if (newline != NULL)
+ {
+ STRCPY(newline, oldline);
+***************
+*** 1826,1839 ****
+ {
+ /* Append a new line. Not that we always do this,
+ * also when the text doesn't end in a "\n". */
+! ml_append((linenr_T)(lnum - 1), args, (colnr_T)(len + 1), FALSE);
+ ++added;
+ }
+
+! if (nl == NULL)
+ break;
+ ++lnum;
+! args = nl + 1;
+ }
+
+ /* Adjust the marks below the inserted lines. */
+--- 1827,1841 ----
+ {
+ /* Append a new line. Not that we always do this,
+ * also when the text doesn't end in a "\n". */
+! ml_append((linenr_T)(lnum - 1), args,
+! (colnr_T)(len + 1), FALSE);
+ ++added;
+ }
+
+! if (nlp == NULL)
+ break;
+ ++lnum;
+! args = nlp + 1;
+ }
+
+ /* Adjust the marks below the inserted lines. */
+*** ../vim-7.3.400/src/version.c 2012-01-10 22:26:12.000000000 +0100
+--- src/version.c 2012-01-10 22:30:47.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 401,
+ /**/
+
+--
+So when I saw the post to comp.editors, I rushed over to the FTP site to
+grab it. So I yank apart the tarball, light x candles, where x= the
+vim version multiplied by the md5sum of the source divided by the MAC of
+my NIC (8A3FA78155A8A1D346C3C4A), put on black robes, dim the lights,
+wave a dead chicken over the hard drive, and summon the power of GNU GCC
+with the magic words "make config ; make!".
+ [Jason Spence, compiling Vim 5.0]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.402 b/source/ap/vim/patches/7.3.402
new file mode 100644
index 000000000..a5501f8c5
--- /dev/null
+++ b/source/ap/vim/patches/7.3.402
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.402
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.402
+Problem: When jumping to the first error a line of the buffer is sometimes
+ redrawn on top of the list of errors.
+Solution: Do not call update_topline_redraw() if the display was scrolled
+ up.
+Files: src/quickfix.c
+
+
+*** ../vim-7.3.401/src/quickfix.c 2012-01-10 17:13:48.000000000 +0100
+--- src/quickfix.c 2012-01-20 13:13:25.000000000 +0100
+***************
+*** 1842,1849 ****
+ #endif
+ if (print_message)
+ {
+! /* Update the screen before showing the message */
+! update_topline_redraw();
+ sprintf((char *)IObuff, _("(%d of %d)%s%s: "), qf_index,
+ qi->qf_lists[qi->qf_curlist].qf_count,
+ qf_ptr->qf_cleared ? _(" (line deleted)") : "",
+--- 1842,1851 ----
+ #endif
+ if (print_message)
+ {
+! /* Update the screen before showing the message, unless the screen
+! * scrolled up. */
+! if (!msg_scrolled)
+! update_topline_redraw();
+ sprintf((char *)IObuff, _("(%d of %d)%s%s: "), qf_index,
+ qi->qf_lists[qi->qf_curlist].qf_count,
+ qf_ptr->qf_cleared ? _(" (line deleted)") : "",
+*** ../vim-7.3.401/src/version.c 2012-01-10 22:31:26.000000000 +0100
+--- src/version.c 2012-01-20 13:17:50.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 402,
+ /**/
+
+--
+If all you have is a hammer, everything looks like a nail.
+When your hammer is C++, everything begins to look like a thumb.
+ -- Steve Hoflich, comp.lang.c++
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.403 b/source/ap/vim/patches/7.3.403
new file mode 100644
index 000000000..bc3bf5498
--- /dev/null
+++ b/source/ap/vim/patches/7.3.403
@@ -0,0 +1,108 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.403
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.403
+Problem: ":helpgrep" does not trigger QuickFixCmd* autocommands.
+Solution: Trigger the autocommands. (Christian Brabandt)
+Files: src/quickfix.c
+
+
+*** ../vim-7.3.402/src/quickfix.c 2012-01-20 13:28:28.000000000 +0100
+--- src/quickfix.c 2012-01-20 13:37:10.000000000 +0100
+***************
+*** 3878,3893 ****
+ qf_info_T *qi = &ql_info;
+ int new_qi = FALSE;
+ win_T *wp;
+!
+! /* Make 'cpoptions' empty, the 'l' flag should not be used here. */
+! save_cpo = p_cpo;
+! p_cpo = empty_option;
+
+ #ifdef FEAT_MULTI_LANG
+ /* Check for a specified language */
+ lang = check_help_lang(eap->arg);
+ #endif
+
+ if (eap->cmdidx == CMD_lhelpgrep)
+ {
+ /* Find an existing help window */
+--- 3878,3912 ----
+ qf_info_T *qi = &ql_info;
+ int new_qi = FALSE;
+ win_T *wp;
+! #ifdef FEAT_AUTOCMD
+! char_u *au_name = NULL;
+! #endif
+
+ #ifdef FEAT_MULTI_LANG
+ /* Check for a specified language */
+ lang = check_help_lang(eap->arg);
+ #endif
+
++ #ifdef FEAT_AUTOCMD
++ switch (eap->cmdidx)
++ {
++ case CMD_helpgrep: au_name = (char_u *)"helpgrep"; break;
++ case CMD_lhelpgrep: au_name = (char_u *)"lhelpgrep"; break;
++ default: break;
++ }
++ if (au_name != NULL)
++ {
++ apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name,
++ curbuf->b_fname, TRUE, curbuf);
++ if (did_throw || force_abort)
++ return;
++ }
++ #endif
++
++ /* Make 'cpoptions' empty, the 'l' flag should not be used here. */
++ save_cpo = p_cpo;
++ p_cpo = empty_option;
++
+ if (eap->cmdidx == CMD_lhelpgrep)
+ {
+ /* Find an existing help window */
+***************
+*** 4036,4041 ****
+--- 4055,4071 ----
+ qf_update_buffer(qi);
+ #endif
+
++ #ifdef FEAT_AUTOCMD
++ if (au_name != NULL)
++ {
++ apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
++ curbuf->b_fname, TRUE, curbuf);
++ if (!new_qi && qi != &ql_info && qf_find_buf(qi) == NULL)
++ /* autocommands made "qi" invalid */
++ return;
++ }
++ #endif
++
+ /* Jump to first match. */
+ if (qi->qf_lists[qi->qf_curlist].qf_count > 0)
+ qf_jump(qi, 0, 0, FALSE);
+*** ../vim-7.3.402/src/version.c 2012-01-20 13:28:28.000000000 +0100
+--- src/version.c 2012-01-20 13:30:37.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 403,
+ /**/
+
+--
+Looking at Perl through Lisp glasses, Perl looks atrocious.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.404 b/source/ap/vim/patches/7.3.404
new file mode 100644
index 000000000..445d7051d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.404
@@ -0,0 +1,85 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.404
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.404
+Problem: When a complete function uses refresh "always" redo will not work
+ properly.
+Solution: Do not reset compl_leader when compl_opt_refresh_always is set.
+ (Yasuhiro Matsumoto)
+Files: src/edit.c
+
+
+*** ../vim-7.3.403/src/edit.c 2012-01-10 22:26:12.000000000 +0100
+--- src/edit.c 2012-01-20 14:26:06.000000000 +0100
+***************
+*** 3465,3475 ****
+ if (ins_compl_need_restart())
+ ins_compl_restart();
+
+! vim_free(compl_leader);
+! compl_leader = vim_strnsave(ml_get_curline() + compl_col,
+ (int)(curwin->w_cursor.col - compl_col));
+! if (compl_leader != NULL)
+! ins_compl_new_leader();
+ }
+
+ /*
+--- 3465,3481 ----
+ if (ins_compl_need_restart())
+ ins_compl_restart();
+
+! /* When 'always' is set, don't reset compl_leader. While completing,
+! * cursor don't point original position, changing compl_leader would
+! * break redo. */
+! if (!compl_opt_refresh_always)
+! {
+! vim_free(compl_leader);
+! compl_leader = vim_strnsave(ml_get_curline() + compl_col,
+ (int)(curwin->w_cursor.col - compl_col));
+! if (compl_leader != NULL)
+! ins_compl_new_leader();
+! }
+ }
+
+ /*
+***************
+*** 4554,4559 ****
+--- 4560,4570 ----
+ int found_end = FALSE;
+ int advance;
+
++ /* When user complete function return -1 for findstart which is next
++ * time of 'always', compl_shown_match become NULL. */
++ if (compl_shown_match == NULL)
++ return -1;
++
+ if (compl_leader != NULL
+ && (compl_shown_match->cp_flags & ORIGINAL_TEXT) == 0)
+ {
+*** ../vim-7.3.403/src/version.c 2012-01-20 13:39:03.000000000 +0100
+--- src/version.c 2012-01-20 14:31:26.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 404,
+ /**/
+
+--
+ARTHUR: I've said I'm sorry about the old woman, but from the behind you
+ looked ...
+DENNIS: What I object to is that you automatically treat me like an inferior...
+ARTHUR: Well ... I AM king.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.405 b/source/ap/vim/patches/7.3.405
new file mode 100644
index 000000000..087aecc41
--- /dev/null
+++ b/source/ap/vim/patches/7.3.405
@@ -0,0 +1,101 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.405
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.405
+Problem: When xterm gets back the function keys it may delete the urxvt
+ mouse termcap code.
+Solution: Check for the whole code, not just the start. (Egmont Koblinger)
+Files: src/keymap.h, src/misc2.c, src/term.c
+
+
+*** ../vim-7.3.404/src/keymap.h 2011-10-20 21:09:25.000000000 +0200
+--- src/keymap.h 2012-01-20 16:35:43.000000000 +0100
+***************
+*** 411,416 ****
+--- 411,417 ----
+ #define K_DEC_MOUSE TERMCAP2KEY(KS_DEC_MOUSE, KE_FILLER)
+ #define K_JSBTERM_MOUSE TERMCAP2KEY(KS_JSBTERM_MOUSE, KE_FILLER)
+ #define K_PTERM_MOUSE TERMCAP2KEY(KS_PTERM_MOUSE, KE_FILLER)
++ #define K_URXVT_MOUSE TERMCAP2KEY(KS_URXVT_MOUSE, KE_FILLER)
+
+ #define K_SELECT TERMCAP2KEY(KS_SELECT, KE_FILLER)
+ #define K_TEAROFF TERMCAP2KEY(KS_TEAROFF, KE_FILLER)
+*** ../vim-7.3.404/src/misc2.c 2012-01-10 22:26:12.000000000 +0100
+--- src/misc2.c 2012-01-20 16:38:27.000000000 +0100
+***************
+*** 2416,2425 ****
+--- 2416,2436 ----
+ {'<', (char_u *)"lt"},
+
+ {K_MOUSE, (char_u *)"Mouse"},
++ #ifdef FEAT_MOUSE_NET
+ {K_NETTERM_MOUSE, (char_u *)"NetMouse"},
++ #endif
++ #ifdef FEAT_MOUSE_DEC
+ {K_DEC_MOUSE, (char_u *)"DecMouse"},
++ #endif
++ #ifdef FEAT_MOUSE_JSB
+ {K_JSBTERM_MOUSE, (char_u *)"JsbMouse"},
++ #endif
++ #ifdef FEAT_MOUSE_PTERM
+ {K_PTERM_MOUSE, (char_u *)"PtermMouse"},
++ #endif
++ #ifdef FEAT_MOUSE_URXVT
++ {K_URXVT_MOUSE, (char_u *)"UrxvtMouse"},
++ #endif
+ {K_LEFTMOUSE, (char_u *)"LeftMouse"},
+ {K_LEFTMOUSE_NM, (char_u *)"LeftMouseNM"},
+ {K_LEFTDRAG, (char_u *)"LeftDrag"},
+*** ../vim-7.3.404/src/term.c 2011-12-01 20:59:16.000000000 +0100
+--- src/term.c 2012-01-20 16:50:41.000000000 +0100
+***************
+*** 5252,5263 ****
+ char_u *src;
+ {
+ int i;
+! int slen;
+
+ for (i = 0; i < tc_len; ++i)
+ {
+! slen = termcodes[i].len;
+! if (slen > 1 && STRNCMP(termcodes[i].code, src, (size_t)slen) == 0)
+ return i;
+ }
+ return -1;
+--- 5252,5263 ----
+ char_u *src;
+ {
+ int i;
+! int slen = STRLEN(src);
+
+ for (i = 0; i < tc_len; ++i)
+ {
+! if (slen == termcodes[i].len
+! && STRNCMP(termcodes[i].code, src, (size_t)slen) == 0)
+ return i;
+ }
+ return -1;
+*** ../vim-7.3.404/src/version.c 2012-01-20 14:32:22.000000000 +0100
+--- src/version.c 2012-01-20 16:59:47.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 405,
+ /**/
+
+--
+"The future's already arrived - it's just not evenly distributed yet."
+ -- William Gibson
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.406 b/source/ap/vim/patches/7.3.406
new file mode 100644
index 000000000..dceca0edb
--- /dev/null
+++ b/source/ap/vim/patches/7.3.406
@@ -0,0 +1,103 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.406
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.406
+Problem: Multi-byte characters in b:browsefilter are not handled correctly.
+Solution: First use convert_filter() normally and then convert to wide
+ characters. (Taro Muraoka)
+Files: src/gui_w48.c
+
+
+*** ../vim-7.3.405/src/gui_w48.c 2011-09-07 18:58:24.000000000 +0200
+--- src/gui_w48.c 2012-01-20 17:54:19.000000000 +0100
+***************
+*** 328,333 ****
+--- 328,337 ----
+ static LRESULT _OnImeNotify(HWND hWnd, DWORD dwCommand, DWORD dwData);
+ #endif
+
++ #if defined(FEAT_MBYTE) && defined(WIN3264)
++ static char_u *convert_filter(char_u *s);
++ #endif
++
+ #ifdef DEBUG_PRINT_ERROR
+ /*
+ * Print out the last Windows error message
+***************
+*** 3275,3302 ****
+
+ # if defined(FEAT_MBYTE) && defined(WIN3264)
+ /*
+! * Wide version of convert_filter(). Keep in sync!
+ */
+ static WCHAR *
+ convert_filterW(char_u *s)
+ {
+! WCHAR *res;
+! unsigned s_len = (unsigned)STRLEN(s);
+! unsigned i;
+
+! res = (WCHAR *)alloc((s_len + 3) * sizeof(WCHAR));
+! if (res != NULL)
+! {
+! for (i = 0; i < s_len; ++i)
+! if (s[i] == '\t' || s[i] == '\n')
+! res[i] = '\0';
+! else
+! res[i] = s[i];
+! res[s_len] = NUL;
+! /* Add two extra NULs to make sure it's properly terminated. */
+! res[s_len + 1] = NUL;
+! res[s_len + 2] = NUL;
+! }
+ return res;
+ }
+
+--- 3279,3298 ----
+
+ # if defined(FEAT_MBYTE) && defined(WIN3264)
+ /*
+! * Wide version of convert_filter().
+ */
+ static WCHAR *
+ convert_filterW(char_u *s)
+ {
+! char_u *tmp;
+! int len;
+
+! tmp = convert_filter(s);
+! if (tmp == NULL)
+! return NULL;
+! len = (int)STRLEN(s) + 3;
+! res = enc_to_utf16(tmp, &len);
+! vim_free(tmp);
+ return res;
+ }
+
+*** ../vim-7.3.405/src/version.c 2012-01-20 17:15:47.000000000 +0100
+--- src/version.c 2012-01-20 17:57:09.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 406,
+ /**/
+
+--
+DENNIS: Look, strange women lying on their backs in ponds handing out
+ swords ... that's no basis for a system of government. Supreme
+ executive power derives from a mandate from the masses, not from some
+ farcical aquatic ceremony.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.407 b/source/ap/vim/patches/7.3.407
new file mode 100644
index 000000000..d5ac1330c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.407
@@ -0,0 +1,270 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.407
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.407
+Problem: ":12verbose call F()" may duplicate text while trying to truncate.
+ (Thinca)
+Solution: Only truncate when there is not enough room. Also check the byte
+ length of the buffer.
+Files: src/buffer.c, src/eval.c, src/ex_getln.c, src/message.c,
+ src/proto/message.pro
+
+
+*** ../vim-7.3.406/src/buffer.c 2011-12-30 13:39:04.000000000 +0100
+--- src/buffer.c 2012-01-20 18:37:43.000000000 +0100
+***************
+*** 3258,3266 ****
+ if (maxlen > 0)
+ {
+ /* make it shorter by removing a bit in the middle */
+! len = vim_strsize(buf);
+! if (len > maxlen)
+! trunc_string(buf, buf, maxlen);
+ }
+ }
+ }
+--- 3258,3265 ----
+ if (maxlen > 0)
+ {
+ /* make it shorter by removing a bit in the middle */
+! if (vim_strsize(buf) > maxlen)
+! trunc_string(buf, buf, maxlen, IOSIZE);
+ }
+ }
+ }
+*** ../vim-7.3.406/src/eval.c 2012-01-10 22:26:12.000000000 +0100
+--- src/eval.c 2012-01-20 20:43:32.000000000 +0100
+***************
+*** 22163,22170 ****
+ s = tv2string(&argvars[i], &tofree, numbuf2, 0);
+ if (s != NULL)
+ {
+! trunc_string(s, buf, MSG_BUF_CLEN);
+! msg_puts(buf);
+ vim_free(tofree);
+ }
+ }
+--- 22163,22174 ----
+ s = tv2string(&argvars[i], &tofree, numbuf2, 0);
+ if (s != NULL)
+ {
+! if (vim_strsize(s) > MSG_BUF_CLEN)
+! {
+! trunc_string(s, buf, MSG_BUF_CLEN, MSG_BUF_LEN);
+! s = buf;
+! }
+! msg_puts(s);
+ vim_free(tofree);
+ }
+ }
+***************
+*** 22252,22259 ****
+ s = tv2string(fc->rettv, &tofree, numbuf2, 0);
+ if (s != NULL)
+ {
+! trunc_string(s, buf, MSG_BUF_CLEN);
+! smsg((char_u *)_("%s returning %s"), sourcing_name, buf);
+ vim_free(tofree);
+ }
+ }
+--- 22256,22267 ----
+ s = tv2string(fc->rettv, &tofree, numbuf2, 0);
+ if (s != NULL)
+ {
+! if (vim_strsize(s) > MSG_BUF_CLEN)
+! {
+! trunc_string(s, buf, MSG_BUF_CLEN, MSG_BUF_LEN);
+! s = buf;
+! }
+! smsg((char_u *)_("%s returning %s"), sourcing_name, s);
+ vim_free(tofree);
+ }
+ }
+*** ../vim-7.3.406/src/ex_getln.c 2011-12-08 18:44:47.000000000 +0100
+--- src/ex_getln.c 2012-01-20 18:40:46.000000000 +0100
+***************
+*** 5923,5929 ****
+ hist[i].hisnum);
+ if (vim_strsize(hist[i].hisstr) > (int)Columns - 10)
+ trunc_string(hist[i].hisstr, IObuff + STRLEN(IObuff),
+! (int)Columns - 10);
+ else
+ STRCAT(IObuff, hist[i].hisstr);
+ msg_outtrans(IObuff);
+--- 5923,5929 ----
+ hist[i].hisnum);
+ if (vim_strsize(hist[i].hisstr) > (int)Columns - 10)
+ trunc_string(hist[i].hisstr, IObuff + STRLEN(IObuff),
+! (int)Columns - 10, IOSIZE - STRLEN(IObuff));
+ else
+ STRCAT(IObuff, hist[i].hisstr);
+ msg_outtrans(IObuff);
+*** ../vim-7.3.406/src/message.c 2012-01-10 22:26:12.000000000 +0100
+--- src/message.c 2012-01-20 20:38:29.000000000 +0100
+***************
+*** 222,236 ****
+ if (enc_utf8)
+ /* may have up to 18 bytes per cell (6 per char, up to two
+ * composing chars) */
+! buf = alloc((room + 2) * 18);
+ else if (enc_dbcs == DBCS_JPNU)
+ /* may have up to 2 bytes per cell for euc-jp */
+! buf = alloc((room + 2) * 2);
+ else
+ #endif
+! buf = alloc(room + 2);
+ if (buf != NULL)
+! trunc_string(s, buf, room);
+ }
+ }
+ return buf;
+--- 222,237 ----
+ if (enc_utf8)
+ /* may have up to 18 bytes per cell (6 per char, up to two
+ * composing chars) */
+! len = (room + 2) * 18;
+ else if (enc_dbcs == DBCS_JPNU)
+ /* may have up to 2 bytes per cell for euc-jp */
+! len = (room + 2) * 2;
+ else
+ #endif
+! len = room + 2;
+! buf = alloc(len);
+ if (buf != NULL)
+! trunc_string(s, buf, room, len);
+ }
+ }
+ return buf;
+***************
+*** 241,250 ****
+ * "s" and "buf" may be equal.
+ */
+ void
+! trunc_string(s, buf, room)
+ char_u *s;
+ char_u *buf;
+ int room;
+ {
+ int half;
+ int len;
+--- 242,252 ----
+ * "s" and "buf" may be equal.
+ */
+ void
+! trunc_string(s, buf, room, buflen)
+ char_u *s;
+ char_u *buf;
+ int room;
++ int buflen;
+ {
+ int half;
+ int len;
+***************
+*** 257,263 ****
+ len = 0;
+
+ /* First part: Start of the string. */
+! for (e = 0; len < half; ++e)
+ {
+ if (s[e] == NUL)
+ {
+--- 259,265 ----
+ len = 0;
+
+ /* First part: Start of the string. */
+! for (e = 0; len < half && e < buflen; ++e)
+ {
+ if (s[e] == NUL)
+ {
+***************
+*** 274,280 ****
+ if (has_mbyte)
+ for (n = (*mb_ptr2len)(s + e); --n > 0; )
+ {
+! ++e;
+ buf[e] = s[e];
+ }
+ #endif
+--- 276,283 ----
+ if (has_mbyte)
+ for (n = (*mb_ptr2len)(s + e); --n > 0; )
+ {
+! if (++e == buflen)
+! break;
+ buf[e] = s[e];
+ }
+ #endif
+***************
+*** 319,326 ****
+ }
+
+ /* Set the middle and copy the last part. */
+! mch_memmove(buf + e, "...", (size_t)3);
+! STRMOVE(buf + e + 3, s + i);
+ }
+
+ /*
+--- 322,340 ----
+ }
+
+ /* Set the middle and copy the last part. */
+! if (e + 3 < buflen)
+! {
+! mch_memmove(buf + e, "...", (size_t)3);
+! len = STRLEN(s + i) + 1;
+! if (len >= buflen - e - 3)
+! len = buflen - e - 3 - 1;
+! mch_memmove(buf + e + 3, s + i, len);
+! buf[e + 3 + len - 1] = NUL;
+! }
+! else
+! {
+! buf[e - 1] = NUL; // make sure it is truncated
+! }
+ }
+
+ /*
+*** ../vim-7.3.406/src/proto/message.pro 2011-01-17 20:08:03.000000000 +0100
+--- src/proto/message.pro 2012-01-20 18:51:19.000000000 +0100
+***************
+*** 4,10 ****
+ int msg_attr __ARGS((char_u *s, int attr));
+ int msg_attr_keep __ARGS((char_u *s, int attr, int keep));
+ char_u *msg_strtrunc __ARGS((char_u *s, int force));
+! void trunc_string __ARGS((char_u *s, char_u *buf, int room));
+ void reset_last_sourcing __ARGS((void));
+ void msg_source __ARGS((int attr));
+ int emsg_not_now __ARGS((void));
+--- 4,10 ----
+ int msg_attr __ARGS((char_u *s, int attr));
+ int msg_attr_keep __ARGS((char_u *s, int attr, int keep));
+ char_u *msg_strtrunc __ARGS((char_u *s, int force));
+! void trunc_string __ARGS((char_u *s, char_u *buf, int room, int buflen));
+ void reset_last_sourcing __ARGS((void));
+ void msg_source __ARGS((int attr));
+ int emsg_not_now __ARGS((void));
+*** ../vim-7.3.406/src/version.c 2012-01-20 17:57:47.000000000 +0100
+--- src/version.c 2012-01-20 20:42:23.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 407,
+ /**/
+
+--
+Hanson's Treatment of Time:
+ There are never enough hours in a day, but always too
+ many days before Saturday.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.408 b/source/ap/vim/patches/7.3.408
new file mode 100644
index 000000000..02276085c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.408
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.408
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.408 (after 7.3.406)
+Problem: Missing declaration.
+Solution: Add the declaration. (John Marriott)
+Files: src/gui_w48.c
+
+
+*** ../vim-7.3.407/src/gui_w48.c 2012-01-20 17:57:47.000000000 +0100
+--- src/gui_w48.c 2012-01-20 20:51:57.000000000 +0100
+***************
+*** 3286,3291 ****
+--- 3286,3292 ----
+ {
+ char_u *tmp;
+ int len;
++ WCHAR *res;
+
+ tmp = convert_filter(s);
+ if (tmp == NULL)
+*** ../vim-7.3.407/src/version.c 2012-01-20 20:44:38.000000000 +0100
+--- src/version.c 2012-01-20 20:52:56.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 408,
+ /**/
+
+--
+BLACK KNIGHT: None shall pass.
+ARTHUR: I have no quarrel with you, brave Sir knight, but I must cross
+ this bridge.
+BLACK KNIGHT: Then you shall die.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.409 b/source/ap/vim/patches/7.3.409
new file mode 100644
index 000000000..a00fdcb8d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.409
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.409
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.409
+Problem: The license in pty.c is unclear.
+Solution: Add a comment about the license.
+Files: src/pty.c
+
+
+*** ../vim-7.3.408/src/pty.c 2011-05-19 13:40:47.000000000 +0200
+--- src/pty.c 2012-01-20 21:07:56.000000000 +0100
+***************
+*** 14,19 ****
+--- 14,23 ----
+ * It has been modified to work better with Vim.
+ * The parts that are not used in Vim have been deleted.
+ * See the "screen" sources for the complete stuff.
++ *
++ * This specific version is distibuted under the Vim license (attribution by
++ * Juergen Weigert), the GPL applies to the original version, see the
++ * copyright notice below.
+ */
+
+ /* Copyright (c) 1993
+*** ../vim-7.3.408/src/version.c 2012-01-20 20:54:15.000000000 +0100
+--- src/version.c 2012-01-20 21:13:11.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 409,
+ /**/
+
+--
+ARTHUR: What are you going to do. bleed on me?
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.410 b/source/ap/vim/patches/7.3.410
new file mode 100644
index 000000000..f40e06faf
--- /dev/null
+++ b/source/ap/vim/patches/7.3.410
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.410
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.410
+Problem: Compiler error for // comment. (Joachim Schmitz)
+Solution: Turn into /* comment */.
+Files: src/message.c
+
+
+*** ../vim-7.3.409/src/message.c 2012-01-20 20:44:38.000000000 +0100
+--- src/message.c 2012-01-23 20:46:36.000000000 +0100
+***************
+*** 333,339 ****
+ }
+ else
+ {
+! buf[e - 1] = NUL; // make sure it is truncated
+ }
+ }
+
+--- 333,339 ----
+ }
+ else
+ {
+! buf[e - 1] = NUL; /* make sure it is truncated */
+ }
+ }
+
+*** ../vim-7.3.409/src/version.c 2012-01-20 21:13:55.000000000 +0100
+--- src/version.c 2012-01-23 20:47:30.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 410,
+ /**/
+
+
+--
+Are leaders born or made? And if they're made, can we return them under
+warranty?
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.411 b/source/ap/vim/patches/7.3.411
new file mode 100644
index 000000000..fe7599522
--- /dev/null
+++ b/source/ap/vim/patches/7.3.411
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.411
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.411
+Problem: Pasting in Visual mode using the "" register does not work. (John
+ Beckett)
+Solution: Detect that the write is overwriting the pasted register.
+ (Christian Brabandt)
+Files: src/normal.c
+
+
+*** ../vim-7.3.410/src/normal.c 2011-10-04 21:22:40.000000000 +0200
+--- src/normal.c 2012-01-23 22:13:44.000000000 +0100
+***************
+*** 9329,9335 ****
+ # ifdef FEAT_CLIPBOARD
+ adjust_clip_reg(&regname);
+ # endif
+! if (regname == 0 || VIM_ISDIGIT(regname)
+ # ifdef FEAT_CLIPBOARD
+ || (clip_unnamed && (regname == '*' || regname == '+'))
+ # endif
+--- 9329,9335 ----
+ # ifdef FEAT_CLIPBOARD
+ adjust_clip_reg(&regname);
+ # endif
+! if (regname == 0 || regname == '"' || VIM_ISDIGIT(regname)
+ # ifdef FEAT_CLIPBOARD
+ || (clip_unnamed && (regname == '*' || regname == '+'))
+ # endif
+*** ../vim-7.3.410/src/version.c 2012-01-23 20:48:34.000000000 +0100
+--- src/version.c 2012-01-26 11:42:33.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 411,
+ /**/
+
+--
+Engineers understand that their appearance only bothers other people and
+therefore it is not worth optimizing.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.412 b/source/ap/vim/patches/7.3.412
new file mode 100644
index 000000000..3b181883a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.412
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.412
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.412
+Problem: Storing a float in a session file has an additional '&'.
+Solution: Remove the '&'. (Yasuhiro Matsumoto)
+Files: src/eval.c
+
+
+*** ../vim-7.3.411/src/eval.c 2012-01-20 20:44:38.000000000 +0100
+--- src/eval.c 2012-01-26 11:39:39.000000000 +0100
+***************
+*** 22929,22935 ****
+ f = -f;
+ sign = '-';
+ }
+! if ((fprintf(fd, "let %s = %c&%f",
+ this_var->di_key, sign, f) < 0)
+ || put_eol(fd) == FAIL)
+ return FAIL;
+--- 22929,22935 ----
+ f = -f;
+ sign = '-';
+ }
+! if ((fprintf(fd, "let %s = %c%f",
+ this_var->di_key, sign, f) < 0)
+ || put_eol(fd) == FAIL)
+ return FAIL;
+*** ../vim-7.3.411/src/version.c 2012-01-26 11:43:04.000000000 +0100
+--- src/version.c 2012-01-26 11:44:56.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 412,
+ /**/
+
+--
+Imagine a world without hypothetical situations.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.413 b/source/ap/vim/patches/7.3.413
new file mode 100644
index 000000000..c32c9b1dd
--- /dev/null
+++ b/source/ap/vim/patches/7.3.413
@@ -0,0 +1,90 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.413
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.413
+Problem: Build warnings on MS-Windows.
+Solution: Add type casts. (Mike Williams)
+Files: src/ex_getln.c, src/message.c, src/term.c
+
+
+*** ../vim-7.3.412/src/ex_getln.c 2012-01-20 20:44:38.000000000 +0100
+--- src/ex_getln.c 2012-01-26 12:58:54.000000000 +0100
+***************
+*** 5923,5929 ****
+ hist[i].hisnum);
+ if (vim_strsize(hist[i].hisstr) > (int)Columns - 10)
+ trunc_string(hist[i].hisstr, IObuff + STRLEN(IObuff),
+! (int)Columns - 10, IOSIZE - STRLEN(IObuff));
+ else
+ STRCAT(IObuff, hist[i].hisstr);
+ msg_outtrans(IObuff);
+--- 5923,5929 ----
+ hist[i].hisnum);
+ if (vim_strsize(hist[i].hisstr) > (int)Columns - 10)
+ trunc_string(hist[i].hisstr, IObuff + STRLEN(IObuff),
+! (int)Columns - 10, IOSIZE - (int)STRLEN(IObuff));
+ else
+ STRCAT(IObuff, hist[i].hisstr);
+ msg_outtrans(IObuff);
+*** ../vim-7.3.412/src/message.c 2012-01-23 20:48:34.000000000 +0100
+--- src/message.c 2012-01-26 12:58:54.000000000 +0100
+***************
+*** 325,331 ****
+ if (e + 3 < buflen)
+ {
+ mch_memmove(buf + e, "...", (size_t)3);
+! len = STRLEN(s + i) + 1;
+ if (len >= buflen - e - 3)
+ len = buflen - e - 3 - 1;
+ mch_memmove(buf + e + 3, s + i, len);
+--- 325,331 ----
+ if (e + 3 < buflen)
+ {
+ mch_memmove(buf + e, "...", (size_t)3);
+! len = (int)STRLEN(s + i) + 1;
+ if (len >= buflen - e - 3)
+ len = buflen - e - 3 - 1;
+ mch_memmove(buf + e + 3, s + i, len);
+*** ../vim-7.3.412/src/term.c 2012-01-20 17:15:47.000000000 +0100
+--- src/term.c 2012-01-26 12:58:54.000000000 +0100
+***************
+*** 5252,5258 ****
+ char_u *src;
+ {
+ int i;
+! int slen = STRLEN(src);
+
+ for (i = 0; i < tc_len; ++i)
+ {
+--- 5252,5258 ----
+ char_u *src;
+ {
+ int i;
+! int slen = (int)STRLEN(src);
+
+ for (i = 0; i < tc_len; ++i)
+ {
+*** ../vim-7.3.412/src/version.c 2012-01-26 11:45:25.000000000 +0100
+--- src/version.c 2012-01-26 12:59:14.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 413,
+ /**/
+
+--
+It doesn't really matter what you are able to do if you don't do it.
+ (Bram Moolenaar)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.414 b/source/ap/vim/patches/7.3.414
new file mode 100644
index 000000000..6f6c30753
--- /dev/null
+++ b/source/ap/vim/patches/7.3.414
@@ -0,0 +1,90 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.414
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.414
+Problem: Using CTRL-A on "000" drops the leading zero, while on "001" it
+ doesn't.
+Solution: Detect "000" as an octal number. (James McCoy)
+Files: src/charset.c
+
+
+*** ../vim-7.3.413/src/charset.c 2012-01-10 22:26:12.000000000 +0100
+--- src/charset.c 2012-01-26 13:33:45.000000000 +0100
+***************
+*** 764,770 ****
+ }
+
+ /*
+! * Return the number of characters string "s" will take on the screen,
+ * counting TABs as two characters: "^I".
+ */
+ int
+--- 764,770 ----
+ }
+
+ /*
+! * Return the number of character cells string "s" will take on the screen,
+ * counting TABs as two characters: "^I".
+ */
+ int
+***************
+*** 775,782 ****
+ }
+
+ /*
+! * Return the number of characters string "s[len]" will take on the screen,
+! * counting TABs as two characters: "^I".
+ */
+ int
+ vim_strnsize(s, len)
+--- 775,782 ----
+ }
+
+ /*
+! * Return the number of character cells string "s[len]" will take on the
+! * screen, counting TABs as two characters: "^I".
+ */
+ int
+ vim_strnsize(s, len)
+***************
+*** 1830,1836 ****
+ hex = 0; /* can't be octal */
+ break;
+ }
+! if (ptr[n] > '0')
+ hex = '0'; /* assume octal */
+ }
+ }
+--- 1830,1836 ----
+ hex = 0; /* can't be octal */
+ break;
+ }
+! if (ptr[n] >= '0')
+ hex = '0'; /* assume octal */
+ }
+ }
+*** ../vim-7.3.413/src/version.c 2012-01-26 13:01:54.000000000 +0100
+--- src/version.c 2012-01-26 13:38:04.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 414,
+ /**/
+
+--
+No engineer can take a shower without wondering if some sort of Teflon coating
+would make showering unnecessary.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.415 b/source/ap/vim/patches/7.3.415
new file mode 100644
index 000000000..74e757b2d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.415
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.415
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.415 (after 7.3.359)
+Problem: Completion of functions stops once a dictionary is encountered.
+ (James McCoy)
+Solution: Return an empty string instead of NULL.
+Files: src/eval.c
+
+
+*** ../vim-7.3.414/src/eval.c 2012-01-26 11:45:25.000000000 +0100
+--- src/eval.c 2012-01-26 13:45:52.000000000 +0100
+***************
+*** 21802,21808 ****
+ fp = HI2UF(hi);
+
+ if (fp->uf_flags & FC_DICT)
+! return NULL; /* don't show dict functions */
+
+ if (STRLEN(fp->uf_name) + 4 >= IOSIZE)
+ return fp->uf_name; /* prevents overflow */
+--- 21802,21808 ----
+ fp = HI2UF(hi);
+
+ if (fp->uf_flags & FC_DICT)
+! return ""; /* don't show dict functions */
+
+ if (STRLEN(fp->uf_name) + 4 >= IOSIZE)
+ return fp->uf_name; /* prevents overflow */
+*** ../vim-7.3.414/src/version.c 2012-01-26 13:40:04.000000000 +0100
+--- src/version.c 2012-01-26 14:32:16.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 415,
+ /**/
+
+--
+Normal people believe that if it ain't broke, don't fix it. Engineers believe
+that if it ain't broke, it doesn't have enough features yet.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.416 b/source/ap/vim/patches/7.3.416
new file mode 100644
index 000000000..f65bb0d2f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.416
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.416
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.416 (after 7.3.415)
+Problem: Compiler warning for wrong pointer.
+Solution: Add type cast.
+Files: src/eval.c
+
+
+*** ../vim-7.3.415/src/eval.c 2012-01-26 14:32:26.000000000 +0100
+--- src/eval.c 2012-01-26 15:42:56.000000000 +0100
+***************
+*** 21802,21808 ****
+ fp = HI2UF(hi);
+
+ if (fp->uf_flags & FC_DICT)
+! return ""; /* don't show dict functions */
+
+ if (STRLEN(fp->uf_name) + 4 >= IOSIZE)
+ return fp->uf_name; /* prevents overflow */
+--- 21802,21808 ----
+ fp = HI2UF(hi);
+
+ if (fp->uf_flags & FC_DICT)
+! return (char_u *)""; /* don't show dict functions */
+
+ if (STRLEN(fp->uf_name) + 4 >= IOSIZE)
+ return fp->uf_name; /* prevents overflow */
+*** ../vim-7.3.415/src/version.c 2012-01-26 14:32:26.000000000 +0100
+--- src/version.c 2012-01-26 15:43:31.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 416,
+ /**/
+
+--
+It's totally unfair to suggest - as many have - that engineers are socially
+inept. Engineers simply have different objectives when it comes to social
+interaction.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.417 b/source/ap/vim/patches/7.3.417
new file mode 100644
index 000000000..489d27eb4
--- /dev/null
+++ b/source/ap/vim/patches/7.3.417
@@ -0,0 +1,47 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.417
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.417 (after 7.3.395)
+Problem: Test 43 fails with a tiny build.
+Solution: Only run test 43 with at least a small build.
+Files: src/testdir/test43.in
+
+
+*** ../vim-7.3.415/src/testdir/test43.in 2012-01-10 13:44:23.000000000 +0100
+--- src/testdir/test43.in 2012-01-26 18:00:06.000000000 +0100
+***************
+*** 1,6 ****
+--- 1,7 ----
+ Tests for regexp with various magic settings.
+
+ STARTTEST
++ :so small.vim
+ :set nocompatible viminfo+=nviminfo
+ /^1
+ /a*b\{2}c\+/e
+*** ../vim-7.3.415/src/version.c 2012-01-26 14:32:26.000000000 +0100
+--- src/version.c 2012-01-26 18:02:30.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 417,
+ /**/
+
+--
+I learned the customs and mannerisms of engineers by observing them, much the
+way Jane Goodall learned about the great apes, but without the hassle of
+grooming.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.418 b/source/ap/vim/patches/7.3.418
new file mode 100644
index 000000000..6ff486b63
--- /dev/null
+++ b/source/ap/vim/patches/7.3.418
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.418
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.418
+Problem: When a user complete function returns -1 an error message is
+ given.
+Solution: When -2 is returned stop completion silently. (Yasuhiro Matsumoto)
+Files: src/edit.c
+
+
+*** ../vim-7.3.417/src/edit.c 2012-01-20 14:32:22.000000000 +0100
+--- src/edit.c 2012-01-26 18:32:23.000000000 +0100
+***************
+*** 5189,5194 ****
+--- 5189,5199 ----
+ return FAIL;
+ }
+
++ /* Return value -2 means the user complete function wants to
++ * cancel the complete without an error. */
++ if (col == -2)
++ return FAIL;
++
+ /*
+ * Reset extended parameters of completion, when start new
+ * completion.
+*** ../vim-7.3.417/src/version.c 2012-01-26 18:58:13.000000000 +0100
+--- src/version.c 2012-01-26 18:42:14.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 418,
+ /**/
+
+--
+If someone questions your market projections, simply point out that your
+target market is "People who are nuts" and "People who will buy any damn
+thing". Nobody is going to tell you there aren't enough of those people
+to go around.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.419 b/source/ap/vim/patches/7.3.419
new file mode 100644
index 000000000..865a47c75
--- /dev/null
+++ b/source/ap/vim/patches/7.3.419
@@ -0,0 +1,85 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.419
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.419
+Problem: DBCS encoding in a user command does not always work.
+Solution: Skip over DBCS characters. (Yasuhiro Matsumoto)
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.3.418/src/ex_docmd.c 2011-12-14 14:49:41.000000000 +0100
+--- src/ex_docmd.c 2012-01-26 20:04:01.000000000 +0100
+***************
+*** 5967,5973 ****
+ result = STRLEN(eap->arg) + 2;
+ for (p = eap->arg; *p; ++p)
+ {
+! if (*p == '\\' || *p == '"')
+ ++result;
+ }
+
+--- 5967,5980 ----
+ result = STRLEN(eap->arg) + 2;
+ for (p = eap->arg; *p; ++p)
+ {
+! #ifdef FEAT_MBYTE
+! if (enc_dbcs != 0 && (*mb_ptr2len)(p) == 2)
+! /* DBCS can contain \ in a trail byte, skip the
+! * double-byte character. */
+! ++p;
+! else
+! #endif
+! if (*p == '\\' || *p == '"')
+ ++result;
+ }
+
+***************
+*** 5976,5982 ****
+ *buf++ = '"';
+ for (p = eap->arg; *p; ++p)
+ {
+! if (*p == '\\' || *p == '"')
+ *buf++ = '\\';
+ *buf++ = *p;
+ }
+--- 5983,5996 ----
+ *buf++ = '"';
+ for (p = eap->arg; *p; ++p)
+ {
+! #ifdef FEAT_MBYTE
+! if (enc_dbcs != 0 && (*mb_ptr2len)(p) == 2)
+! /* DBCS can contain \ in a trail byte, copy the
+! * double-byte character to avoid escaping. */
+! *buf++ = *p++;
+! else
+! #endif
+! if (*p == '\\' || *p == '"')
+ *buf++ = '\\';
+ *buf++ = *p;
+ }
+*** ../vim-7.3.418/src/version.c 2012-01-26 18:58:25.000000000 +0100
+--- src/version.c 2012-01-26 20:40:34.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 419,
+ /**/
+
+--
+You have heard the saying that if you put a thousand monkeys in a room with a
+thousand typewriters and waited long enough, eventually you would have a room
+full of dead monkeys.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.420 b/source/ap/vim/patches/7.3.420
new file mode 100644
index 000000000..d698d0b48
--- /dev/null
+++ b/source/ap/vim/patches/7.3.420
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.420
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.420
+Problem: "it" and "at" don't work properly with a dash in the tag name.
+Solution: Require a space to match the tag name. (Christian Brabandt)
+Files: src/search.c
+
+
+*** ../vim-7.3.419/src/search.c 2012-01-10 22:26:12.000000000 +0100
+--- src/search.c 2012-01-26 20:51:43.000000000 +0100
+***************
+*** 3918,3924 ****
+ curwin->w_cursor = old_pos;
+ goto theend;
+ }
+! spat = alloc(len + 29);
+ epat = alloc(len + 9);
+ if (spat == NULL || epat == NULL)
+ {
+--- 3918,3924 ----
+ curwin->w_cursor = old_pos;
+ goto theend;
+ }
+! spat = alloc(len + 31);
+ epat = alloc(len + 9);
+ if (spat == NULL || epat == NULL)
+ {
+***************
+*** 3927,3933 ****
+ curwin->w_cursor = old_pos;
+ goto theend;
+ }
+! sprintf((char *)spat, "<%.*s\\>\\%%(\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p);
+ sprintf((char *)epat, "</%.*s>\\c", len, p);
+
+ r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"",
+--- 3927,3933 ----
+ curwin->w_cursor = old_pos;
+ goto theend;
+ }
+! sprintf((char *)spat, "<%.*s\\>\\%%(\\s\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p);
+ sprintf((char *)epat, "</%.*s>\\c", len, p);
+
+ r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"",
+*** ../vim-7.3.419/src/version.c 2012-01-26 20:41:22.000000000 +0100
+--- src/version.c 2012-01-26 20:51:16.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 420,
+ /**/
+
+--
+All good vision statements are created by groups of people with bloated
+bladders who would rather be doing anything else.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.421 b/source/ap/vim/patches/7.3.421
new file mode 100644
index 000000000..eadc29df2
--- /dev/null
+++ b/source/ap/vim/patches/7.3.421
@@ -0,0 +1,60 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.421
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.421
+Problem: Get E832 when setting 'undofile' in vimrc and there is a file to
+ be edited on the command line. (Toothpik)
+Solution: Do not try reading the undo file for a file that wasn't loaded.
+Files: src/option.c
+
+
+*** ../vim-7.3.420/src/option.c 2012-01-10 22:26:12.000000000 +0100
+--- src/option.c 2012-01-28 17:55:24.000000000 +0100
+***************
+*** 7527,7536 ****
+ {
+ /* When 'undofile' is set globally: for every buffer, otherwise
+ * only for the current buffer: Try to read in the undofile, if
+! * one exists and the buffer wasn't changed. */
+ if ((curbuf == save_curbuf
+ || (opt_flags & OPT_GLOBAL) || opt_flags == 0)
+! && !curbufIsChanged())
+ {
+ u_compute_hash(hash);
+ u_read_undo(NULL, hash, curbuf->b_fname);
+--- 7527,7537 ----
+ {
+ /* When 'undofile' is set globally: for every buffer, otherwise
+ * only for the current buffer: Try to read in the undofile, if
+! * one exists and the buffer wasn't changed and the buffer was
+! * loaded. */
+ if ((curbuf == save_curbuf
+ || (opt_flags & OPT_GLOBAL) || opt_flags == 0)
+! && !curbufIsChanged() && curbuf->b_ml.ml_mfp != NULL)
+ {
+ u_compute_hash(hash);
+ u_read_undo(NULL, hash, curbuf->b_fname);
+*** ../vim-7.3.420/src/version.c 2012-01-26 20:58:21.000000000 +0100
+--- src/version.c 2012-01-28 18:03:09.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 421,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+4. Your eyeglasses have a web site burned in on them.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.422 b/source/ap/vim/patches/7.3.422
new file mode 100644
index 000000000..7be4aebde
--- /dev/null
+++ b/source/ap/vim/patches/7.3.422
@@ -0,0 +1,94 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.422
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.422
+Problem: Python 3 does not have __members__.
+Solution: Add "name" and "number" in another way. (lilydjwg)
+Files: src/if_py_both.h, src/if_python3.c
+
+
+*** ../vim-7.3.421/src/if_py_both.h 2011-09-07 19:30:17.000000000 +0200
+--- src/if_py_both.h 2012-02-04 19:59:43.000000000 +0100
+***************
+*** 1479,1484 ****
+--- 1479,1487 ----
+ {"append", BufferAppend, 1, "Append data to Vim buffer" },
+ {"mark", BufferMark, 1, "Return (row,col) representing position of named mark" },
+ {"range", BufferRange, 1, "Return a range object which represents the part of the given buffer between line numbers s and e" },
++ #if PY_VERSION_HEX >= 0x03000000
++ {"__dir__", BufferDir, 4, "List its attributes" },
++ #endif
+ { NULL, NULL, 0, NULL }
+ };
+
+*** ../vim-7.3.421/src/if_python3.c 2011-09-14 18:59:35.000000000 +0200
+--- src/if_python3.c 2012-02-04 20:13:00.000000000 +0100
+***************
+*** 468,473 ****
+--- 468,474 ----
+ static PyObject *BufferNew (buf_T *);
+ static PyObject *WindowNew(win_T *);
+ static PyObject *LineToString(const char *);
++ static PyObject *BufferDir(PyObject *, PyObject *);
+
+ static PyTypeObject RangeType;
+
+***************
+*** 961,973 ****
+ return Py_BuildValue("s", this->buf->b_ffname);
+ else if (strcmp(name, "number") == 0)
+ return Py_BuildValue("n", this->buf->b_fnum);
+- else if (strcmp(name,"__members__") == 0)
+- return Py_BuildValue("[ss]", "name", "number");
+ else
+ return PyObject_GenericGetAttr(self, nameobj);
+ }
+
+ static PyObject *
+ BufferRepr(PyObject *self)
+ {
+ static char repr[100];
+--- 962,979 ----
+ return Py_BuildValue("s", this->buf->b_ffname);
+ else if (strcmp(name, "number") == 0)
+ return Py_BuildValue("n", this->buf->b_fnum);
+ else
+ return PyObject_GenericGetAttr(self, nameobj);
+ }
+
+ static PyObject *
++ BufferDir(PyObject *self UNUSED, PyObject *args UNUSED)
++ {
++ return Py_BuildValue("[sssss]", "name", "number",
++ "append", "mark", "range");
++ }
++
++ static PyObject *
+ BufferRepr(PyObject *self)
+ {
+ static char repr[100];
+*** ../vim-7.3.421/src/version.c 2012-01-28 18:03:30.000000000 +0100
+--- src/version.c 2012-02-04 20:14:58.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 422,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+15. Five days in advance, tell your friends you can't attend their
+ party because you're not in the mood.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.423 b/source/ap/vim/patches/7.3.423
new file mode 100644
index 000000000..74bf62d2a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.423
@@ -0,0 +1,130 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.423
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.423
+Problem: Small mistakes in comments, proto and indent.
+Solution: Fix the mistakes.
+Files: src/ex_cmds2.c, src/structs.h, src/ui.c, src/proto/ex_docmd.pro
+
+
+*** ../vim-7.3.422/src/ex_cmds2.c 2011-10-20 21:38:37.000000000 +0200
+--- src/ex_cmds2.c 2011-11-30 11:02:20.000000000 +0100
+***************
+*** 1939,1945 ****
+ }
+
+ /*
+! * Return TRUE if window "win" is editing then file at the current argument
+ * index.
+ */
+ static int
+--- 1939,1945 ----
+ }
+
+ /*
+! * Return TRUE if window "win" is editing the file at the current argument
+ * index.
+ */
+ static int
+*** ../vim-7.3.422/src/structs.h 2011-05-19 13:40:47.000000000 +0200
+--- src/structs.h 2011-09-10 13:48:53.000000000 +0200
+***************
+*** 1846,1852 ****
+ often, keep it the first item!) */
+
+ #if defined(FEAT_SYN_HL) || defined(FEAT_SPELL)
+! synblock_T *w_s;
+ #endif
+
+ #ifdef FEAT_WINDOWS
+--- 1846,1852 ----
+ often, keep it the first item!) */
+
+ #if defined(FEAT_SYN_HL) || defined(FEAT_SPELL)
+! synblock_T *w_s; /* for :ownsyntax */
+ #endif
+
+ #ifdef FEAT_WINDOWS
+*** ../vim-7.3.422/src/ui.c 2011-07-07 16:20:45.000000000 +0200
+--- src/ui.c 2012-01-21 14:03:42.000000000 +0100
+***************
+*** 2363,2376 ****
+ XtLastTimestampProcessed(XtDisplay(myShell)),
+ clip_x11_convert_selection_cb, clip_x11_lose_ownership_cb,
+ NULL) == False)
+! return FAIL;
+ }
+ else
+ #endif
+ {
+ if (!XChangeProperty(XtDisplay(myShell), XtWindow(myShell),
+ cbd->sel_atom, timestamp_atom, 32, PropModeAppend, NULL, 0))
+! return FAIL;
+ }
+ /* Flush is required in a terminal as nothing else is doing it. */
+ XFlush(XtDisplay(myShell));
+--- 2363,2376 ----
+ XtLastTimestampProcessed(XtDisplay(myShell)),
+ clip_x11_convert_selection_cb, clip_x11_lose_ownership_cb,
+ NULL) == False)
+! return FAIL;
+ }
+ else
+ #endif
+ {
+ if (!XChangeProperty(XtDisplay(myShell), XtWindow(myShell),
+ cbd->sel_atom, timestamp_atom, 32, PropModeAppend, NULL, 0))
+! return FAIL;
+ }
+ /* Flush is required in a terminal as nothing else is doing it. */
+ XFlush(XtDisplay(myShell));
+*** ../vim-7.3.422/src/proto/ex_docmd.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/ex_docmd.pro 2011-01-16 00:22:21.000000000 +0100
+***************
+*** 1,7 ****
+ /* ex_docmd.c */
+ void do_exmode __ARGS((int improved));
+ int do_cmdline_cmd __ARGS((char_u *cmd));
+! int do_cmdline __ARGS((char_u *cmdline, char_u *(*getline)(int, void *, int), void *cookie, int flags));
+ int getline_equal __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie, char_u *(*func)(int, void *, int)));
+ void *getline_cookie __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie));
+ int checkforcmd __ARGS((char_u **pp, char *cmd, int len));
+--- 1,7 ----
+ /* ex_docmd.c */
+ void do_exmode __ARGS((int improved));
+ int do_cmdline_cmd __ARGS((char_u *cmd));
+! int do_cmdline __ARGS((char_u *cmdline, char_u *(*fgetline)(int, void *, int), void *cookie, int flags));
+ int getline_equal __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie, char_u *(*func)(int, void *, int)));
+ void *getline_cookie __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie));
+ int checkforcmd __ARGS((char_u **pp, char *cmd, int len));
+*** ../vim-7.3.422/src/version.c 2012-02-04 20:17:21.000000000 +0100
+--- src/version.c 2012-02-04 21:56:43.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 423,
+ /**/
+
+--
+In many of the more relaxed civilizations on the Outer Eastern Rim of the
+Galaxy, "The Hitchhiker's Guide to the Galaxy" has already supplanted the
+great "Encyclopedia Galactica" as the standard repository of all knowledge
+and wisdom, for though it has many omissions and contains much that is
+apocryphal, or at least wildly inaccurate, it scores over the older, more
+pedestrian work in two important respects.
+First, it is slightly cheaper; and second, it has the words "DON'T PANIC"
+inscribed in large friendly letters on its cover.
+ -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.424 b/source/ap/vim/patches/7.3.424
new file mode 100644
index 000000000..61786ed8d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.424
@@ -0,0 +1,62 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.424
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.424
+Problem: Win16 version missing some functions.
+Solution: Add #defines for the functions.
+Files: src/gui_w16.c
+
+
+*** ../vim-7.3.423/src/gui_w16.c 2011-01-17 20:08:03.000000000 +0100
+--- src/gui_w16.c 2011-08-10 16:50:21.000000000 +0200
+***************
+*** 21,26 ****
+--- 21,32 ----
+ *
+ */
+
++ /* Win16 doesn't use the "W" methods. */
++ #define pDispatchMessage DispatchMessage
++ #define pGetMessage GetMessage
++ #define pIsDialogMessage IsDialogMessage
++ #define pPeekMessage PeekMessage
++
+ /*
+ * Include the common stuff for MS-Windows GUI.
+ */
+*** ../vim-7.3.423/src/version.c 2012-02-04 21:57:44.000000000 +0100
+--- src/version.c 2012-02-04 22:01:13.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 424,
+ /**/
+
+--
+Now it is such a bizarrely improbable coincidence that anything as
+mind-bogglingly useful as the Babel fish could have evolved purely by chance
+that some thinkers have chosen to see it as a final and clinching proof of the
+NON-existence of God.
+The argument goes something like this: 'I refuse to prove that I exist,' says
+God, 'for proof denies faith, and without faith I am nothing.'
+'But,' says Man, 'the Babel fish is a dead giveaway, isn't it? It could not
+have evolved by chance. It proves you exist, and so therefore, by your own
+arguments, you don't. QED.'
+'Oh dear,' says God, 'I hadn't thought of that,' and promptly vanishes in a
+puff of logic.
+'Oh, that was easy,' says Man, and for an encore goes on to prove that black
+is white and gets himself killed on the next pedestrian crossing.
+ -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.425 b/source/ap/vim/patches/7.3.425
new file mode 100644
index 000000000..aeadf3a3a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.425
@@ -0,0 +1,78 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.425
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.425 (after 7.3.265)
+Problem: Search history lines are duplicated. (Edwin Steiner)
+Solution: Convert separator character from space to NUL.
+Files: src/ex_getln.c
+
+
+*** ../vim-7.3.424/src/ex_getln.c 2012-01-26 13:01:54.000000000 +0100
+--- src/ex_getln.c 2012-02-04 22:27:43.000000000 +0100
+***************
+*** 6027,6034 ****
+ val = viminfo_readstring(virp, 1, TRUE);
+ if (val != NULL && *val != NUL)
+ {
+ if (!in_history(type, val + (type == HIST_SEARCH),
+! viminfo_add_at_front, *val))
+ {
+ /* Need to re-allocate to append the separator byte. */
+ len = STRLEN(val);
+--- 6027,6036 ----
+ val = viminfo_readstring(virp, 1, TRUE);
+ if (val != NULL && *val != NUL)
+ {
++ int sep = (*val == ' ' ? NUL : *val);
++
+ if (!in_history(type, val + (type == HIST_SEARCH),
+! viminfo_add_at_front, sep))
+ {
+ /* Need to re-allocate to append the separator byte. */
+ len = STRLEN(val);
+***************
+*** 6040,6046 ****
+ /* Search entry: Move the separator from the first
+ * column to after the NUL. */
+ mch_memmove(p, val + 1, (size_t)len);
+! p[len] = (*val == ' ' ? NUL : *val);
+ }
+ else
+ {
+--- 6042,6048 ----
+ /* Search entry: Move the separator from the first
+ * column to after the NUL. */
+ mch_memmove(p, val + 1, (size_t)len);
+! p[len] = sep;
+ }
+ else
+ {
+*** ../vim-7.3.424/src/version.c 2012-02-04 22:01:44.000000000 +0100
+--- src/version.c 2012-02-04 22:30:36.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 425,
+ /**/
+
+--
+"So this is it," said Arthur, "we are going to die."
+"Yes," said Ford, "except...no! Wait a minute!" He suddenly lunged across
+the chamber at something behind Arthur's line of vision. "What's this
+switch?" he cried.
+"What? Where?" cried Arthur, twisting around.
+"No, I was only fooling," said Ford, "we are going to die after all."
+ -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.426 b/source/ap/vim/patches/7.3.426
new file mode 100644
index 000000000..76380af1a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.426
@@ -0,0 +1,279 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.426
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.426
+Problem: With '$' in 'cpoptions' the $ is not displayed in the first
+ column.
+Solution: Use -1 instead of 0 as a special value. (Hideki Eiraku and
+ Hirohito Higashi)
+Files: src/edit.c, src/globals.h, src/move.c, src/screen.c, src/search.c
+
+
+*** ../vim-7.3.425/src/edit.c 2012-01-26 18:58:25.000000000 +0100
+--- src/edit.c 2012-02-04 23:23:45.000000000 +0100
+***************
+*** 1763,1771 ****
+ static void
+ undisplay_dollar()
+ {
+! if (dollar_vcol)
+ {
+! dollar_vcol = 0;
+ redrawWinline(curwin->w_cursor.lnum, FALSE);
+ }
+ }
+--- 1763,1771 ----
+ static void
+ undisplay_dollar()
+ {
+! if (dollar_vcol >= 0)
+ {
+! dollar_vcol = -1;
+ redrawWinline(curwin->w_cursor.lnum, FALSE);
+ }
+ }
+***************
+*** 5441,5447 ****
+ compl_curr_match->cp_number);
+ edit_submode_extra = match_ref;
+ edit_submode_highl = HLF_R;
+! if (dollar_vcol)
+ curs_columns(FALSE);
+ }
+ }
+--- 5441,5447 ----
+ compl_curr_match->cp_number);
+ edit_submode_extra = match_ref;
+ edit_submode_highl = HLF_R;
+! if (dollar_vcol >= 0)
+ curs_columns(FALSE);
+ }
+ }
+***************
+*** 8961,8967 ****
+ * We can emulate the vi behaviour by pretending there is a dollar
+ * displayed even when there isn't.
+ * --pkv Sun Jan 19 01:56:40 EST 2003 */
+! if (vim_strchr(p_cpo, CPO_BACKSPACE) != NULL && dollar_vcol == 0)
+ dollar_vcol = curwin->w_virtcol;
+
+ #ifdef FEAT_FOLDING
+--- 8961,8967 ----
+ * We can emulate the vi behaviour by pretending there is a dollar
+ * displayed even when there isn't.
+ * --pkv Sun Jan 19 01:56:40 EST 2003 */
+! if (vim_strchr(p_cpo, CPO_BACKSPACE) != NULL && dollar_vcol == -1)
+ dollar_vcol = curwin->w_virtcol;
+
+ #ifdef FEAT_FOLDING
+*** ../vim-7.3.425/src/globals.h 2011-05-10 16:41:13.000000000 +0200
+--- src/globals.h 2012-02-04 23:24:07.000000000 +0100
+***************
+*** 113,121 ****
+ * When '$' is included in 'cpoptions' option set:
+ * When a change command is given that deletes only part of a line, a dollar
+ * is put at the end of the changed text. dollar_vcol is set to the virtual
+! * column of this '$'.
+ */
+! EXTERN colnr_T dollar_vcol INIT(= 0);
+
+ #ifdef FEAT_INS_EXPAND
+ /*
+--- 113,121 ----
+ * When '$' is included in 'cpoptions' option set:
+ * When a change command is given that deletes only part of a line, a dollar
+ * is put at the end of the changed text. dollar_vcol is set to the virtual
+! * column of this '$'. -1 is used to indicate no $ is being displayed.
+ */
+! EXTERN colnr_T dollar_vcol INIT(= -1);
+
+ #ifdef FEAT_INS_EXPAND
+ /*
+*** ../vim-7.3.425/src/move.c 2012-01-10 22:26:12.000000000 +0100
+--- src/move.c 2012-02-04 23:21:08.000000000 +0100
+***************
+*** 362,368 ****
+ #endif
+ )
+ {
+! dollar_vcol = 0;
+ if (curwin->w_skipcol != 0)
+ {
+ curwin->w_skipcol = 0;
+--- 362,368 ----
+ #endif
+ )
+ {
+! dollar_vcol = -1;
+ if (curwin->w_skipcol != 0)
+ {
+ curwin->w_skipcol = 0;
+***************
+*** 966,972 ****
+
+ /* remove '$' from change command when cursor moves onto it */
+ if (startcol > dollar_vcol)
+! dollar_vcol = 0;
+
+ extra = curwin_col_off();
+ curwin->w_wcol = curwin->w_virtcol + extra;
+--- 966,972 ----
+
+ /* remove '$' from change command when cursor moves onto it */
+ if (startcol > dollar_vcol)
+! dollar_vcol = -1;
+
+ extra = curwin_col_off();
+ curwin->w_wcol = curwin->w_virtcol + extra;
+*** ../vim-7.3.425/src/screen.c 2012-01-10 22:26:12.000000000 +0100
+--- src/screen.c 2012-02-04 23:22:44.000000000 +0100
+***************
+*** 1637,1647 ****
+ * When at start of changed lines: May scroll following lines
+ * up or down to minimize redrawing.
+ * Don't do this when the change continues until the end.
+! * Don't scroll when dollar_vcol is non-zero, keep the "$".
+ */
+ if (lnum == mod_top
+ && mod_bot != MAXLNUM
+! && !(dollar_vcol != 0 && mod_bot == mod_top + 1))
+ {
+ int old_rows = 0;
+ int new_rows = 0;
+--- 1637,1647 ----
+ * When at start of changed lines: May scroll following lines
+ * up or down to minimize redrawing.
+ * Don't do this when the change continues until the end.
+! * Don't scroll when dollar_vcol >= 0, keep the "$".
+ */
+ if (lnum == mod_top
+ && mod_bot != MAXLNUM
+! && !(dollar_vcol >= 0 && mod_bot == mod_top + 1))
+ {
+ int old_rows = 0;
+ int new_rows = 0;
+***************
+*** 1868,1879 ****
+ if (row > wp->w_height) /* past end of screen */
+ {
+ /* we may need the size of that too long line later on */
+! if (dollar_vcol == 0)
+ wp->w_lines[idx].wl_size = plines_win(wp, lnum, TRUE);
+ ++idx;
+ break;
+ }
+! if (dollar_vcol == 0)
+ wp->w_lines[idx].wl_size = row - srow;
+ ++idx;
+ #ifdef FEAT_FOLDING
+--- 1868,1879 ----
+ if (row > wp->w_height) /* past end of screen */
+ {
+ /* we may need the size of that too long line later on */
+! if (dollar_vcol == -1)
+ wp->w_lines[idx].wl_size = plines_win(wp, lnum, TRUE);
+ ++idx;
+ break;
+ }
+! if (dollar_vcol == -1)
+ wp->w_lines[idx].wl_size = row - srow;
+ ++idx;
+ #ifdef FEAT_FOLDING
+***************
+*** 1990,1996 ****
+ }
+ #endif
+ }
+! else if (dollar_vcol == 0)
+ wp->w_botline = lnum;
+
+ /* make sure the rest of the screen is blank */
+--- 1990,1996 ----
+ }
+ #endif
+ }
+! else if (dollar_vcol == -1)
+ wp->w_botline = lnum;
+
+ /* make sure the rest of the screen is blank */
+***************
+*** 2005,2011 ****
+ wp->w_old_botfill = wp->w_botfill;
+ #endif
+
+! if (dollar_vcol == 0)
+ {
+ /*
+ * There is a trick with w_botline. If we invalidate it on each
+--- 2005,2011 ----
+ wp->w_old_botfill = wp->w_botfill;
+ #endif
+
+! if (dollar_vcol == -1)
+ {
+ /*
+ * There is a trick with w_botline. If we invalidate it on each
+***************
+*** 3564,3570 ****
+ }
+
+ /* When still displaying '$' of change command, stop at cursor */
+! if (dollar_vcol != 0 && wp == curwin
+ && lnum == wp->w_cursor.lnum && vcol >= (long)wp->w_virtcol
+ #ifdef FEAT_DIFF
+ && filler_todo <= 0
+--- 3564,3570 ----
+ }
+
+ /* When still displaying '$' of change command, stop at cursor */
+! if (dollar_vcol >= 0 && wp == curwin
+ && lnum == wp->w_cursor.lnum && vcol >= (long)wp->w_virtcol
+ #ifdef FEAT_DIFF
+ && filler_todo <= 0
+*** ../vim-7.3.425/src/search.c 2012-01-26 20:58:21.000000000 +0100
+--- src/search.c 2012-02-04 23:23:10.000000000 +0100
+***************
+*** 2501,2508 ****
+ save_siso = p_siso;
+ /* Handle "$" in 'cpo': If the ')' is typed on top of the "$",
+ * stop displaying the "$". */
+! if (dollar_vcol > 0 && dollar_vcol == curwin->w_virtcol)
+! dollar_vcol = 0;
+ ++curwin->w_virtcol; /* do display ')' just before "$" */
+ update_screen(VALID); /* show the new char first */
+
+--- 2501,2508 ----
+ save_siso = p_siso;
+ /* Handle "$" in 'cpo': If the ')' is typed on top of the "$",
+ * stop displaying the "$". */
+! if (dollar_vcol >= 0 && dollar_vcol == curwin->w_virtcol)
+! dollar_vcol = -1;
+ ++curwin->w_virtcol; /* do display ')' just before "$" */
+ update_screen(VALID); /* show the new char first */
+
+*** ../vim-7.3.425/src/version.c 2012-02-04 22:44:27.000000000 +0100
+--- src/version.c 2012-02-04 23:32:55.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 426,
+ /**/
+
+
+--
+I am also told that there is a logical proof out there somewhere
+that demonstrates that there is no task which duct tape cannot handle.
+ -- Paul Brannan
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.427 b/source/ap/vim/patches/7.3.427
new file mode 100644
index 000000000..61df88122
--- /dev/null
+++ b/source/ap/vim/patches/7.3.427
@@ -0,0 +1,378 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.427
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.427
+Problem: readfile() can be slow with long lines.
+Solution: Use realloc() instead of alloc(). (John Little)
+Files: src/eval.c
+
+
+*** ../vim-7.3.426/src/eval.c 2012-01-26 14:32:26.000000000 +0100
+--- src/eval.c 2012-02-05 00:25:39.000000000 +0100
+***************
+*** 14325,14346 ****
+ typval_T *rettv;
+ {
+ int binary = FALSE;
+ char_u *fname;
+ FILE *fd;
+! listitem_T *li;
+! #define FREAD_SIZE 200 /* optimized for text lines */
+! char_u buf[FREAD_SIZE];
+! int readlen; /* size of last fread() */
+! int buflen; /* nr of valid chars in buf[] */
+! int filtd; /* how much in buf[] was NUL -> '\n' filtered */
+! int tolist; /* first byte in buf[] still to be put in list */
+! int chop; /* how many CR to chop off */
+! char_u *prev = NULL; /* previously read bytes, if any */
+! int prevlen = 0; /* length of "prev" if not NULL */
+! char_u *s;
+! int len;
+! long maxline = MAXLNUM;
+! long cnt = 0;
+
+ if (argvars[1].v_type != VAR_UNKNOWN)
+ {
+--- 14325,14343 ----
+ typval_T *rettv;
+ {
+ int binary = FALSE;
++ int failed = FALSE;
+ char_u *fname;
+ FILE *fd;
+! char_u buf[(IOSIZE/256)*256]; /* rounded to avoid odd + 1 */
+! int io_size = sizeof(buf);
+! int readlen; /* size of last fread() */
+! char_u *prev = NULL; /* previously read bytes, if any */
+! long prevlen = 0; /* length of data in prev */
+! long prevsize = 0; /* size of prev buffer */
+! long maxline = MAXLNUM;
+! long cnt = 0;
+! char_u *p; /* position in buf */
+! char_u *start; /* start of current line */
+
+ if (argvars[1].v_type != VAR_UNKNOWN)
+ {
+***************
+*** 14362,14410 ****
+ return;
+ }
+
+- filtd = 0;
+ while (cnt < maxline || maxline < 0)
+ {
+! readlen = (int)fread(buf + filtd, 1, FREAD_SIZE - filtd, fd);
+! buflen = filtd + readlen;
+! tolist = 0;
+! for ( ; filtd < buflen || readlen <= 0; ++filtd)
+! {
+! if (readlen <= 0 || buf[filtd] == '\n')
+! {
+! /* In binary mode add an empty list item when the last
+! * non-empty line ends in a '\n'. */
+! if (!binary && readlen == 0 && filtd == 0 && prev == NULL)
+! break;
+
+! /* Found end-of-line or end-of-file: add a text line to the
+! * list. */
+! chop = 0;
+! if (!binary)
+! while (filtd - chop - 1 >= tolist
+! && buf[filtd - chop - 1] == '\r')
+! ++chop;
+! len = filtd - tolist - chop;
+! if (prev == NULL)
+! s = vim_strnsave(buf + tolist, len);
+ else
+ {
+! s = alloc((unsigned)(prevlen + len + 1));
+! if (s != NULL)
+ {
+! mch_memmove(s, prev, prevlen);
+! vim_free(prev);
+! prev = NULL;
+! mch_memmove(s + prevlen, buf + tolist, len);
+ s[prevlen + len] = NUL;
+ }
+ }
+! tolist = filtd + 1;
+
+! li = listitem_alloc();
+! if (li == NULL)
+ {
+ vim_free(s);
+ break;
+ }
+ li->li_tv.v_type = VAR_STRING;
+--- 14359,14419 ----
+ return;
+ }
+
+ while (cnt < maxline || maxline < 0)
+ {
+! readlen = (int)fread(buf, 1, io_size, fd);
+!
+! /* This for loop processes what was read, but is also entered at end
+! * of file so that either:
+! * - an incomplete line gets written
+! * - a "binary" file gets an empty line at the end if it ends in a
+! * newline. */
+! for (p = buf, start = buf;
+! p < buf + readlen || (readlen <= 0 && (prevlen > 0 || binary));
+! ++p)
+! {
+! if (*p == '\n' || readlen <= 0)
+! {
+! listitem_T *li;
+! char_u *s = NULL;
+! long_u len = p - start;
+
+! /* Finished a line. Remove CRs before NL. */
+! if (readlen > 0 && !binary)
+! {
+! while (len > 0 && start[len - 1] == '\r')
+! --len;
+! /* removal may cross back to the "prev" string */
+! if (len == 0)
+! while (prevlen > 0 && prev[prevlen - 1] == '\r')
+! --prevlen;
+! }
+! if (prevlen == 0)
+! s = vim_strnsave(start, len);
+ else
+ {
+! /* Change "prev" buffer to be the right size. This way
+! * the bytes are only copied once, and very long lines are
+! * allocated only once. */
+! if ((s = vim_realloc(prev, prevlen + len + 1)) != NULL)
+ {
+! mch_memmove(s + prevlen, start, len);
+ s[prevlen + len] = NUL;
++ prev = NULL; /* the list will own the string */
++ prevlen = prevsize = 0;
+ }
+ }
+! if (s == NULL)
+! {
+! do_outofmem_msg((long_u) prevlen + len + 1);
+! failed = TRUE;
+! break;
+! }
+
+! if ((li = listitem_alloc()) == NULL)
+ {
+ vim_free(s);
++ failed = TRUE;
+ break;
+ }
+ li->li_tv.v_type = VAR_STRING;
+***************
+*** 14412,14485 ****
+ li->li_tv.vval.v_string = s;
+ list_append(rettv->vval.v_list, li);
+
+! if (++cnt >= maxline && maxline >= 0)
+! break;
+! if (readlen <= 0)
+ break;
+ }
+! else if (buf[filtd] == NUL)
+! buf[filtd] = '\n';
+ #ifdef FEAT_MBYTE
+! else if (buf[filtd] == 0xef
+! && enc_utf8
+! && filtd + 2 < buflen
+! && !binary
+! && buf[filtd + 1] == 0xbb
+! && buf[filtd + 2] == 0xbf)
+! {
+! /* remove utf-8 byte order mark */
+! mch_memmove(buf + filtd, buf + filtd + 3, buflen - filtd - 3);
+! --filtd;
+! buflen -= 3;
+ }
+ #endif
+! }
+! if (readlen <= 0)
+! break;
+
+! if (tolist == 0)
+ {
+! if (buflen >= FREAD_SIZE / 2)
+ {
+! /* "buf" is full, need to move text to an allocated buffer */
+! if (prev == NULL)
+ {
+! prev = vim_strnsave(buf, buflen);
+! prevlen = buflen;
+ }
+! else
+ {
+! s = alloc((unsigned)(prevlen + buflen));
+! if (s != NULL)
+! {
+! mch_memmove(s, prev, prevlen);
+! mch_memmove(s + prevlen, buf, buflen);
+! vim_free(prev);
+! prev = s;
+! prevlen += buflen;
+! }
+ }
+! filtd = 0;
+ }
+ }
+! else
+! {
+! mch_memmove(buf, buf + tolist, buflen - tolist);
+! filtd -= tolist;
+! }
+! }
+
+ /*
+ * For a negative line count use only the lines at the end of the file,
+ * free the rest.
+ */
+! if (maxline < 0)
+ while (cnt > -maxline)
+ {
+ listitem_remove(rettv->vval.v_list, rettv->vval.v_list->lv_first);
+ --cnt;
+ }
+
+ vim_free(prev);
+ fclose(fd);
+ }
+--- 14421,14529 ----
+ li->li_tv.vval.v_string = s;
+ list_append(rettv->vval.v_list, li);
+
+! start = p + 1; /* step over newline */
+! if ((++cnt >= maxline && maxline >= 0) || readlen <= 0)
+ break;
+ }
+! else if (*p == NUL)
+! *p = '\n';
+ #ifdef FEAT_MBYTE
+! /* Check for utf8 "bom"; U+FEFF is encoded as EF BB BF. Do this
+! * when finding the BF and check the previous two bytes. */
+! else if (*p == 0xbf && enc_utf8 && !binary)
+! {
+! /* Find the two bytes before the 0xbf. If p is at buf, or buf
+! * + 1, these may be in the "prev" string. */
+! char_u back1 = p >= buf + 1 ? p[-1]
+! : prevlen >= 1 ? prev[prevlen - 1] : NUL;
+! char_u back2 = p >= buf + 2 ? p[-2]
+! : p == buf + 1 && prevlen >= 1 ? prev[prevlen - 1]
+! : prevlen >= 2 ? prev[prevlen - 2] : NUL;
+!
+! if (back2 == 0xef && back1 == 0xbb)
+! {
+! char_u *dest = p - 2;
+!
+! /* Usually a BOM is at the beginning of a file, and so at
+! * the beginning of a line; then we can just step over it.
+! */
+! if (start == dest)
+! start = p + 1;
+! else
+! {
+! /* have to shuffle buf to close gap */
+! int adjust_prevlen = 0;
+!
+! if (dest < buf)
+! {
+! adjust_prevlen = buf - dest; /* must be 1 or 2 */
+! dest = buf;
+! }
+! if (readlen > p - buf + 1)
+! mch_memmove(dest, p + 1, readlen - (p - buf) - 1);
+! readlen -= 3 - adjust_prevlen;
+! prevlen -= adjust_prevlen;
+! p = dest - 1;
+! }
+! }
+ }
+ #endif
+! } /* for */
+
+! if (failed || (cnt >= maxline && maxline >= 0) || readlen <= 0)
+! break;
+! if (start < p)
+ {
+! /* There's part of a line in buf, store it in "prev". */
+! if (p - start + prevlen >= prevsize)
+ {
+! /* need bigger "prev" buffer */
+! char_u *newprev;
+!
+! /* A common use case is ordinary text files and "prev" gets a
+! * fragment of a line, so the first allocation is made
+! * small, to avoid repeatedly 'allocing' large and
+! * 'reallocing' small. */
+! if (prevsize == 0)
+! prevsize = p - start;
+! else
+ {
+! long grow50pc = (prevsize * 3) / 2;
+! long growmin = (p - start) * 2 + prevlen;
+! prevsize = grow50pc > growmin ? grow50pc : growmin;
+ }
+! if ((newprev = vim_realloc(prev, prevsize)) == NULL)
+ {
+! do_outofmem_msg((long_u)prevsize);
+! failed = TRUE;
+! break;
+ }
+! prev = newprev;
+ }
++ /* Add the line part to end of "prev". */
++ mch_memmove(prev + prevlen, start, p - start);
++ prevlen += p - start;
+ }
+! } /* while */
+
+ /*
+ * For a negative line count use only the lines at the end of the file,
+ * free the rest.
+ */
+! if (!failed && maxline < 0)
+ while (cnt > -maxline)
+ {
+ listitem_remove(rettv->vval.v_list, rettv->vval.v_list->lv_first);
+ --cnt;
+ }
+
++ if (failed)
++ {
++ list_free(rettv->vval.v_list, TRUE);
++ /* readfile doc says an empty list is returned on error */
++ rettv->vval.v_list = list_alloc();
++ }
++
+ vim_free(prev);
+ fclose(fd);
+ }
+*** ../vim-7.3.426/src/version.c 2012-02-04 23:34:57.000000000 +0100
+--- src/version.c 2012-02-05 00:38:34.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 427,
+ /**/
+
+--
+One difference between a man and a machine is that a machine is quiet
+when well oiled.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.428 b/source/ap/vim/patches/7.3.428
new file mode 100644
index 000000000..89567ed81
--- /dev/null
+++ b/source/ap/vim/patches/7.3.428
@@ -0,0 +1,113 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.428
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.428
+Problem: Win32: an xpm file without a mask crashes Vim.
+Solution: Fail when the mask is missing. (Dave Bodenstab)
+Files: src/xpm_w32.c
+
+
+*** ../vim-7.3.427/src/xpm_w32.c 2010-08-15 21:57:25.000000000 +0200
+--- src/xpm_w32.c 2012-02-05 00:46:13.000000000 +0100
+***************
+*** 1,4 ****
+! /*
+ * Load XPM image.
+ *
+ * This function is placed in separate file because Xpm headers conflict with
+--- 1,5 ----
+! /* vi:set ts=8 sts=4 sw=4:
+! *
+ * Load XPM image.
+ *
+ * This function is placed in separate file because Xpm headers conflict with
+***************
+*** 30,38 ****
+ #include "xpm.h"
+
+ /*
+! * Tries to load Xpm image from file 'filename'.
+! * If fails return -1.
+! * success - 0 and image and mask BITMAPS
+ */
+ int
+ LoadXpmImage(filename, hImage, hShape)
+--- 31,40 ----
+ #include "xpm.h"
+
+ /*
+! * Tries to load an Xpm image from the file "filename".
+! * Returns -1 on failure.
+! * Returns 0 on success and stores image and mask BITMAPS in "hImage" and
+! * "hShape".
+ */
+ int
+ LoadXpmImage(filename, hImage, hShape)
+***************
+*** 40,46 ****
+ HBITMAP *hImage;
+ HBITMAP *hShape;
+ {
+! XImage *img; /* loaded image */
+ XImage *shp; /* shapeimage */
+ XpmAttributes attr;
+ int res;
+--- 42,48 ----
+ HBITMAP *hImage;
+ HBITMAP *hShape;
+ {
+! XImage *img; /* loaded image */
+ XImage *shp; /* shapeimage */
+ XpmAttributes attr;
+ int res;
+***************
+*** 51,60 ****
+ DeleteDC(hdc);
+ if (res < 0)
+ return -1;
+! else
+ {
+! *hImage = img->bitmap;
+! *hShape = shp->bitmap;
+! return 0;
+ }
+ }
+--- 53,65 ----
+ DeleteDC(hdc);
+ if (res < 0)
+ return -1;
+! if (shp == NULL)
+ {
+! if (img)
+! XDestroyImage(img);
+! return -1;
+ }
++ *hImage = img->bitmap;
++ *hShape = shp->bitmap;
++ return 0;
+ }
+*** ../vim-7.3.427/src/version.c 2012-02-05 00:39:14.000000000 +0100
+--- src/version.c 2012-02-05 00:47:08.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 428,
+ /**/
+
+--
+I'm not familiar with this proof, but I'm aware of a significant
+following of toddlers who believe that peanut butter is the solution
+to all of life's problems... -- Tim Hammerquist
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.429 b/source/ap/vim/patches/7.3.429
new file mode 100644
index 000000000..801e25f9e
--- /dev/null
+++ b/source/ap/vim/patches/7.3.429
@@ -0,0 +1,192 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.429
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.429
+Problem: When 'cpoptions' includes "E" "c0" in the first column is an
+ error. The redo register is then set to the errornous command.
+Solution: Do not set the redo register if the command fails because of an
+ empty region. (Hideki Eiraku)
+Files: src/getchar.c, src/normal.c, src/proto/getchar.pro
+
+
+*** ../vim-7.3.428/src/getchar.c 2012-01-10 22:26:12.000000000 +0100
+--- src/getchar.c 2012-02-05 01:05:09.000000000 +0100
+***************
+*** 470,475 ****
+--- 470,493 ----
+ }
+ }
+
++ /*
++ * Discard the contents of the redo buffer and restore the previous redo
++ * buffer.
++ */
++ void
++ CancelRedo()
++ {
++ if (!block_redo)
++ {
++ free_buff(&redobuff);
++ redobuff = old_redobuff;
++ old_redobuff.bh_first.b_next = NULL;
++ start_stuff();
++ while (read_stuff(TRUE) != NUL)
++ ;
++ }
++ }
++
+ #if defined(FEAT_AUTOCMD) || defined(FEAT_EVAL) || defined(PROTO)
+ /*
+ * Save redobuff and old_redobuff to save_redobuff and save_old_redobuff.
+***************
+*** 691,699 ****
+ * Read a character from the redo buffer. Translates K_SPECIAL, CSI and
+ * multibyte characters.
+ * The redo buffer is left as it is.
+! * if init is TRUE, prepare for redo, return FAIL if nothing to redo, OK
+! * otherwise
+! * if old is TRUE, use old_redobuff instead of redobuff
+ */
+ static int
+ read_redo(init, old_redo)
+--- 709,717 ----
+ * Read a character from the redo buffer. Translates K_SPECIAL, CSI and
+ * multibyte characters.
+ * The redo buffer is left as it is.
+! * If init is TRUE, prepare for redo, return FAIL if nothing to redo, OK
+! * otherwise.
+! * If old is TRUE, use old_redobuff instead of redobuff.
+ */
+ static int
+ read_redo(init, old_redo)
+*** ../vim-7.3.428/src/normal.c 2012-01-26 11:43:04.000000000 +0100
+--- src/normal.c 2012-02-05 01:06:01.000000000 +0100
+***************
+*** 1978,1984 ****
+--- 1978,1987 ----
+ VIsual_reselect = FALSE; /* don't reselect now */
+ #endif
+ if (empty_region_error)
++ {
+ vim_beep();
++ CancelRedo();
++ }
+ else
+ {
+ (void)op_delete(oap);
+***************
+*** 1992,1998 ****
+--- 1995,2004 ----
+ if (empty_region_error)
+ {
+ if (!gui_yank)
++ {
+ vim_beep();
++ CancelRedo();
++ }
+ }
+ else
+ (void)op_yank(oap, FALSE, !gui_yank);
+***************
+*** 2004,2010 ****
+--- 2010,2019 ----
+ VIsual_reselect = FALSE; /* don't reselect now */
+ #endif
+ if (empty_region_error)
++ {
+ vim_beep();
++ CancelRedo();
++ }
+ else
+ {
+ /* This is a new edit command, not a restart. Need to
+***************
+*** 2066,2072 ****
+--- 2075,2084 ----
+ case OP_LOWER:
+ case OP_ROT13:
+ if (empty_region_error)
++ {
+ vim_beep();
++ CancelRedo();
++ }
+ else
+ op_tilde(oap);
+ check_cursor_col();
+***************
+*** 2099,2105 ****
+--- 2111,2120 ----
+ #endif
+ #ifdef FEAT_VISUALEXTRA
+ if (empty_region_error)
++ {
+ vim_beep();
++ CancelRedo();
++ }
+ else
+ {
+ /* This is a new edit command, not a restart. Need to
+***************
+*** 2129,2135 ****
+--- 2144,2153 ----
+ #ifdef FEAT_VISUALEXTRA
+ if (empty_region_error)
+ #endif
++ {
+ vim_beep();
++ CancelRedo();
++ }
+ #ifdef FEAT_VISUALEXTRA
+ else
+ op_replace(oap, cap->nchar);
+*** ../vim-7.3.428/src/proto/getchar.pro 2010-10-20 21:22:17.000000000 +0200
+--- src/proto/getchar.pro 2012-02-05 01:05:20.000000000 +0100
+***************
+*** 4,11 ****
+ char_u *get_inserted __ARGS((void));
+ int stuff_empty __ARGS((void));
+ void typeahead_noflush __ARGS((int c));
+! void flush_buffers __ARGS((int typeahead));
+ void ResetRedobuff __ARGS((void));
+ void saveRedobuff __ARGS((void));
+ void restoreRedobuff __ARGS((void));
+ void AppendToRedobuff __ARGS((char_u *s));
+--- 4,12 ----
+ char_u *get_inserted __ARGS((void));
+ int stuff_empty __ARGS((void));
+ void typeahead_noflush __ARGS((int c));
+! void flush_buffers __ARGS((int flush_typeahead));
+ void ResetRedobuff __ARGS((void));
++ void CancelRedo __ARGS((void));
+ void saveRedobuff __ARGS((void));
+ void restoreRedobuff __ARGS((void));
+ void AppendToRedobuff __ARGS((char_u *s));
+*** ../vim-7.3.428/src/version.c 2012-02-05 00:47:56.000000000 +0100
+--- src/version.c 2012-02-05 01:09:23.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 429,
+ /**/
+
+--
+The History of every major Galactic Civilization tends to pass through
+three distinct and recognizable phases, those of Survival, Inquiry and
+Sophistication, otherwise known as the How, Why and Where phases.
+For instance, the first phase is characterized by the question 'How can
+we eat?' the second by the question 'Why do we eat?' and the third by
+the question 'Where shall we have lunch?'
+ -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.430 b/source/ap/vim/patches/7.3.430
new file mode 100644
index 000000000..c67e7fb03
--- /dev/null
+++ b/source/ap/vim/patches/7.3.430
@@ -0,0 +1,80 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.430
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.430
+Problem: When a custom filetype detection uses "augroup END" the conf
+ fileytpe detection does not have the filetypedetect group.
+Solution: Always end the group and include filetypedetect in the conf
+ autocommand. (Lech Lorens)
+Files: runtime/filetype.vim
+
+
+*** ../vim-7.3.429/runtime/filetype.vim 2012-02-05 20:08:08.000000000 +0100
+--- runtime/filetype.vim 2012-02-05 19:59:40.000000000 +0100
+***************
+*** 2545,2561 ****
+ " detected filetypes.
+ runtime! ftdetect/*.vim
+
+
+ " Generic configuration file (check this last, it's just guessing!)
+! au BufNewFile,BufRead,StdinReadPost *
+ \ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
+ \ && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#'
+ \ || getline(4) =~ '^#' || getline(5) =~ '^#') |
+ \ setf conf |
+ \ endif
+
+- augroup END
+-
+
+ " If the GUI is already running, may still need to install the Syntax menu.
+ " Don't do it when the 'M' flag is included in 'guioptions'.
+--- 2545,2563 ----
+ " detected filetypes.
+ runtime! ftdetect/*.vim
+
++ " NOTE: The above command could have ended the filetypedetect autocmd group
++ " and started another one. Let's make sure it has ended to get to a consistant
++ " state.
++ augroup END
+
+ " Generic configuration file (check this last, it's just guessing!)
+! au filetypedetect BufNewFile,BufRead,StdinReadPost *
+ \ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
+ \ && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#'
+ \ || getline(4) =~ '^#' || getline(5) =~ '^#') |
+ \ setf conf |
+ \ endif
+
+
+ " If the GUI is already running, may still need to install the Syntax menu.
+ " Don't do it when the 'M' flag is included in 'guioptions'.
+*** ../vim-7.3.429/src/version.c 2012-02-05 01:18:41.000000000 +0100
+--- src/version.c 2012-02-05 20:02:18.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 430,
+ /**/
+
+--
+The technology involved in making anything invisible is so infinitely
+complex that nine hundred and ninety-nine billion, nine hundred and
+ninety-nine million, nine hundred and ninety-nine thousand, nine hundred
+and ninety-nine times out of a trillion it is much simpler and more
+effective just to take the thing away and do without it.
+ -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.431 b/source/ap/vim/patches/7.3.431
new file mode 100644
index 000000000..2e4e62b3f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.431
@@ -0,0 +1,280 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.431
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.431
+Problem: Fetching a key at a prompt may be confused by escape sequences.
+ Especially when getting a prompt at a VimEnter autocommand.
+ (Alex Efros)
+Solution: Properly handle escape sequences deleted by check_termcode().
+Files: src/getchar.c, src/misc1.c, src/term.c, src/proto/term.pro
+
+
+*** ../vim-7.3.430/src/getchar.c 2012-02-05 01:18:41.000000000 +0100
+--- src/getchar.c 2012-02-05 22:04:33.000000000 +0100
+***************
+*** 2282,2288 ****
+ typebuf.tb_off] == RM_YES))
+ && !timedout)
+ {
+! keylen = check_termcode(max_mlen + 1, NULL, 0);
+
+ /* If no termcode matched but 'pastetoggle'
+ * matched partially it's like an incomplete key
+--- 2282,2289 ----
+ typebuf.tb_off] == RM_YES))
+ && !timedout)
+ {
+! keylen = check_termcode(max_mlen + 1,
+! NULL, 0, NULL);
+
+ /* If no termcode matched but 'pastetoggle'
+ * matched partially it's like an incomplete key
+*** ../vim-7.3.430/src/misc1.c 2012-01-10 18:37:53.000000000 +0100
+--- src/misc1.c 2012-02-05 21:59:53.000000000 +0100
+***************
+*** 3105,3112 ****
+ int
+ get_keystroke()
+ {
+! #define CBUFLEN 151
+! char_u buf[CBUFLEN];
+ int len = 0;
+ int n;
+ int save_mapped_ctrl_c = mapped_ctrl_c;
+--- 3105,3113 ----
+ int
+ get_keystroke()
+ {
+! char_u *buf = NULL;
+! int buflen = 150;
+! int maxlen;
+ int len = 0;
+ int n;
+ int save_mapped_ctrl_c = mapped_ctrl_c;
+***************
+*** 3118,3129 ****
+ cursor_on();
+ out_flush();
+
+ /* First time: blocking wait. Second time: wait up to 100ms for a
+! * terminal code to complete. Leave some room for check_termcode() to
+! * insert a key code into (max 5 chars plus NUL). And
+! * fix_input_buffer() can triple the number of bytes. */
+! n = ui_inchar(buf + len, (CBUFLEN - 6 - len) / 3,
+! len == 0 ? -1L : 100L, 0);
+ if (n > 0)
+ {
+ /* Replace zero and CSI by a special key code. */
+--- 3119,3147 ----
+ cursor_on();
+ out_flush();
+
++ /* Leave some room for check_termcode() to insert a key code into (max
++ * 5 chars plus NUL). And fix_input_buffer() can triple the number of
++ * bytes. */
++ maxlen = (buflen - 6 - len) / 3;
++ if (buf == NULL)
++ buf = alloc(buflen);
++ else if (maxlen < 10)
++ {
++ /* Need some more space. This migth happen when receiving a long
++ * escape sequence. */
++ buflen += 100;
++ buf = vim_realloc(buf, buflen);
++ maxlen = (buflen - 6 - len) / 3;
++ }
++ if (buf == NULL)
++ {
++ do_outofmem_msg((long_u)buflen);
++ return ESC; /* panic! */
++ }
++
+ /* First time: blocking wait. Second time: wait up to 100ms for a
+! * terminal code to complete. */
+! n = ui_inchar(buf + len, maxlen, len == 0 ? -1L : 100L, 0);
+ if (n > 0)
+ {
+ /* Replace zero and CSI by a special key code. */
+***************
+*** 3135,3141 ****
+ ++waited; /* keep track of the waiting time */
+
+ /* Incomplete termcode and not timed out yet: get more characters */
+! if ((n = check_termcode(1, buf, len)) < 0
+ && (!p_ttimeout || waited * 100L < (p_ttm < 0 ? p_tm : p_ttm)))
+ continue;
+
+--- 3153,3159 ----
+ ++waited; /* keep track of the waiting time */
+
+ /* Incomplete termcode and not timed out yet: get more characters */
+! if ((n = check_termcode(1, buf, buflen, &len)) < 0
+ && (!p_ttimeout || waited * 100L < (p_ttm < 0 ? p_tm : p_ttm)))
+ continue;
+
+***************
+*** 3203,3209 ****
+ {
+ if (MB_BYTE2LEN(n) > len)
+ continue; /* more bytes to get */
+! buf[len >= CBUFLEN ? CBUFLEN - 1 : len] = NUL;
+ n = (*mb_ptr2char)(buf);
+ }
+ #endif
+--- 3221,3227 ----
+ {
+ if (MB_BYTE2LEN(n) > len)
+ continue; /* more bytes to get */
+! buf[len >= buflen ? buflen - 1 : len] = NUL;
+ n = (*mb_ptr2char)(buf);
+ }
+ #endif
+***************
+*** 3213,3218 ****
+--- 3231,3237 ----
+ #endif
+ break;
+ }
++ vim_free(buf);
+
+ mapped_ctrl_c = save_mapped_ctrl_c;
+ return n;
+*** ../vim-7.3.430/src/term.c 2012-01-26 13:01:54.000000000 +0100
+--- src/term.c 2012-02-05 21:45:09.000000000 +0100
+***************
+*** 3785,3798 ****
+ * With a match, the match is removed, the replacement code is inserted in
+ * typebuf.tb_buf[] and the number of characters in typebuf.tb_buf[] is
+ * returned.
+! * When "buf" is not NULL, it is used instead of typebuf.tb_buf[]. "buflen" is
+! * then the length of the string in buf[].
+ */
+ int
+! check_termcode(max_offset, buf, buflen)
+ int max_offset;
+ char_u *buf;
+! int buflen;
+ {
+ char_u *tp;
+ char_u *p;
+--- 3785,3800 ----
+ * With a match, the match is removed, the replacement code is inserted in
+ * typebuf.tb_buf[] and the number of characters in typebuf.tb_buf[] is
+ * returned.
+! * When "buf" is not NULL, buf[bufsize] is used instead of typebuf.tb_buf[].
+! * "buflen" is then the length of the string in buf[] and is updated for
+! * inserts and deletes.
+ */
+ int
+! check_termcode(max_offset, buf, bufsize, buflen)
+ int max_offset;
+ char_u *buf;
+! int bufsize;
+! int *buflen;
+ {
+ char_u *tp;
+ char_u *p;
+***************
+*** 3864,3873 ****
+ }
+ else
+ {
+! if (offset >= buflen)
+ break;
+ tp = buf + offset;
+! len = buflen - offset;
+ }
+
+ /*
+--- 3866,3875 ----
+ }
+ else
+ {
+! if (offset >= *buflen)
+ break;
+ tp = buf + offset;
+! len = *buflen - offset;
+ }
+
+ /*
+***************
+*** 5002,5013 ****
+ if (extra < 0)
+ /* remove matched characters */
+ mch_memmove(buf + offset, buf + offset - extra,
+! (size_t)(buflen + offset + extra));
+ else if (extra > 0)
+! /* insert the extra space we need */
+ mch_memmove(buf + offset + extra, buf + offset,
+! (size_t)(buflen - offset));
+ mch_memmove(buf + offset, string, (size_t)new_slen);
+ }
+ return retval == 0 ? (len + extra + offset) : retval;
+ }
+--- 5004,5021 ----
+ if (extra < 0)
+ /* remove matched characters */
+ mch_memmove(buf + offset, buf + offset - extra,
+! (size_t)(*buflen + offset + extra));
+ else if (extra > 0)
+! {
+! /* Insert the extra space we need. If there is insufficient
+! * space return -1. */
+! if (*buflen + extra + new_slen >= bufsize)
+! return -1;
+ mch_memmove(buf + offset + extra, buf + offset,
+! (size_t)(*buflen - offset));
+! }
+ mch_memmove(buf + offset, string, (size_t)new_slen);
++ *buflen = *buflen + extra + new_slen;
+ }
+ return retval == 0 ? (len + extra + offset) : retval;
+ }
+*** ../vim-7.3.430/src/proto/term.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/term.pro 2012-02-05 21:45:16.000000000 +0100
+***************
+*** 50,56 ****
+ char_u *get_termcode __ARGS((int i));
+ void del_termcode __ARGS((char_u *name));
+ void set_mouse_topline __ARGS((win_T *wp));
+! int check_termcode __ARGS((int max_offset, char_u *buf, int buflen));
+ char_u *replace_termcodes __ARGS((char_u *from, char_u **bufp, int from_part, int do_lt, int special));
+ int find_term_bykeys __ARGS((char_u *src));
+ void show_termcodes __ARGS((void));
+--- 50,56 ----
+ char_u *get_termcode __ARGS((int i));
+ void del_termcode __ARGS((char_u *name));
+ void set_mouse_topline __ARGS((win_T *wp));
+! int check_termcode __ARGS((int max_offset, char_u *buf, int bufsize, int *buflen));
+ char_u *replace_termcodes __ARGS((char_u *from, char_u **bufp, int from_part, int do_lt, int special));
+ int find_term_bykeys __ARGS((char_u *src));
+ void show_termcodes __ARGS((void));
+*** ../vim-7.3.430/src/version.c 2012-02-05 20:08:30.000000000 +0100
+--- src/version.c 2012-02-05 22:03:43.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 431,
+ /**/
+
+--
+"You know, it's at times like this when I'm trapped in a Vogon airlock with
+a man from Betelgeuse and about to die of asphyxiation in deep space that I
+really wish I'd listened to what my mother told me when I was young!"
+"Why, what did she tell you?"
+"I don't know, I didn't listen!"
+ -- Arthur Dent and Ford Prefect in Douglas Adams'
+ "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.432 b/source/ap/vim/patches/7.3.432
new file mode 100644
index 000000000..c01dd59a0
--- /dev/null
+++ b/source/ap/vim/patches/7.3.432
@@ -0,0 +1,228 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.432
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.432
+Problem: ACLs are not supported for ZFS or NFSv4 on Solaris.
+Solution: Add configure check and code. (Danek Duvall)
+Files: src/configure.in, src/auto/configure, src/config.h.in,
+ src/os_unix.c
+
+
+*** ../vim-7.3.431/src/configure.in 2011-12-14 20:51:19.000000000 +0100
+--- src/configure.in 2012-02-05 22:40:22.000000000 +0100
+***************
+*** 3106,3111 ****
+--- 3106,3112 ----
+
+ dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
+ dnl when -lacl works, also try to use -lattr (required for Debian).
++ dnl On Solaris, use the acl_get/set functions in libsec, if present.
+ AC_MSG_CHECKING(--disable-acl argument)
+ AC_ARG_ENABLE(acl,
+ [ --disable-acl Don't check for ACL support.],
+***************
+*** 3128,3133 ****
+--- 3129,3135 ----
+ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
+ AC_MSG_RESULT(no))
+
++ AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
+ AC_MSG_CHECKING(for Solaris ACL support)
+ AC_TRY_LINK([
+ #ifdef HAVE_SYS_ACL_H
+***************
+*** 3135,3141 ****
+ #endif], [acl("foo", GETACLCNT, 0, NULL);
+ ],
+ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
+! AC_MSG_RESULT(no))
+
+ AC_MSG_CHECKING(for AIX ACL support)
+ AC_TRY_LINK([
+--- 3137,3143 ----
+ #endif], [acl("foo", GETACLCNT, 0, NULL);
+ ],
+ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
+! AC_MSG_RESULT(no)))
+
+ AC_MSG_CHECKING(for AIX ACL support)
+ AC_TRY_LINK([
+*** ../vim-7.3.431/src/auto/configure 2011-12-14 20:51:19.000000000 +0100
+--- src/auto/configure 2012-02-05 22:41:01.000000000 +0100
+***************
+*** 11328,11334 ****
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris ACL support" >&5
+ $as_echo_n "checking for Solaris ACL support... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+--- 11328,11374 ----
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for acl_get in -lsec" >&5
+! $as_echo_n "checking for acl_get in -lsec... " >&6; }
+! if test "${ac_cv_lib_sec_acl_get+set}" = set; then :
+! $as_echo_n "(cached) " >&6
+! else
+! ac_check_lib_save_LIBS=$LIBS
+! LIBS="-lsec $LIBS"
+! cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+! /* end confdefs.h. */
+!
+! /* Override any GCC internal prototype to avoid an error.
+! Use char because int might match the return type of a GCC
+! builtin and then its argument prototype would still apply. */
+! #ifdef __cplusplus
+! extern "C"
+! #endif
+! char acl_get ();
+! int
+! main ()
+! {
+! return acl_get ();
+! ;
+! return 0;
+! }
+! _ACEOF
+! if ac_fn_c_try_link "$LINENO"; then :
+! ac_cv_lib_sec_acl_get=yes
+! else
+! ac_cv_lib_sec_acl_get=no
+! fi
+! rm -f core conftest.err conftest.$ac_objext \
+! conftest$ac_exeext conftest.$ac_ext
+! LIBS=$ac_check_lib_save_LIBS
+! fi
+! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sec_acl_get" >&5
+! $as_echo "$ac_cv_lib_sec_acl_get" >&6; }
+! if test "x$ac_cv_lib_sec_acl_get" = x""yes; then :
+! LIBS="$LIBS -lsec"; $as_echo "#define HAVE_SOLARIS_ZFS_ACL 1" >>confdefs.h
+!
+! else
+! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris ACL support" >&5
+ $as_echo_n "checking for Solaris ACL support... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+***************
+*** 11355,11360 ****
+--- 11395,11402 ----
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
++ fi
++
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AIX ACL support" >&5
+ $as_echo_n "checking for AIX ACL support... " >&6; }
+*** ../vim-7.3.431/src/config.h.in 2011-09-02 12:27:20.000000000 +0200
+--- src/config.h.in 2012-02-05 22:40:22.000000000 +0100
+***************
+*** 363,368 ****
+--- 363,369 ----
+
+ /* Define if you want to add support for ACL */
+ #undef HAVE_POSIX_ACL
++ #undef HAVE_SOLARIS_ZFS_ACL
+ #undef HAVE_SOLARIS_ACL
+ #undef HAVE_AIX_ACL
+
+*** ../vim-7.3.431/src/os_unix.c 2012-01-10 22:26:12.000000000 +0100
+--- src/os_unix.c 2012-02-05 22:40:22.000000000 +0100
+***************
+*** 2746,2751 ****
+--- 2746,2758 ----
+ #ifdef HAVE_POSIX_ACL
+ ret = (vim_acl_T)acl_get_file((char *)fname, ACL_TYPE_ACCESS);
+ #else
++ #ifdef HAVE_SOLARIS_ZFS_ACL
++ acl_t *aclent;
++
++ if (acl_get((char *)fname, 0, &aclent) < 0)
++ return NULL;
++ ret = (vim_acl_T)aclent;
++ #else
+ #ifdef HAVE_SOLARIS_ACL
+ vim_acl_solaris_T *aclent;
+
+***************
+*** 2791,2796 ****
+--- 2798,2804 ----
+ ret = (vim_acl_T)aclent;
+ #endif /* HAVE_AIX_ACL */
+ #endif /* HAVE_SOLARIS_ACL */
++ #endif /* HAVE_SOLARIS_ZFS_ACL */
+ #endif /* HAVE_POSIX_ACL */
+ return ret;
+ }
+***************
+*** 2808,2813 ****
+--- 2816,2824 ----
+ #ifdef HAVE_POSIX_ACL
+ acl_set_file((char *)fname, ACL_TYPE_ACCESS, (acl_t)aclent);
+ #else
++ #ifdef HAVE_SOLARIS_ZFS_ACL
++ acl_set((char *)fname, (acl_t *)aclent);
++ #else
+ #ifdef HAVE_SOLARIS_ACL
+ acl((char *)fname, SETACL, ((vim_acl_solaris_T *)aclent)->acl_cnt,
+ ((vim_acl_solaris_T *)aclent)->acl_entry);
+***************
+*** 2816,2821 ****
+--- 2827,2833 ----
+ chacl((char *)fname, aclent, ((struct acl *)aclent)->acl_len);
+ #endif /* HAVE_AIX_ACL */
+ #endif /* HAVE_SOLARIS_ACL */
++ #endif /* HAVE_SOLARIS_ZFS_ACL */
+ #endif /* HAVE_POSIX_ACL */
+ }
+
+***************
+*** 2828,2833 ****
+--- 2840,2848 ----
+ #ifdef HAVE_POSIX_ACL
+ acl_free((acl_t)aclent);
+ #else
++ #ifdef HAVE_SOLARIS_ZFS_ACL
++ acl_free((acl_t *)aclent);
++ #else
+ #ifdef HAVE_SOLARIS_ACL
+ free(((vim_acl_solaris_T *)aclent)->acl_entry);
+ free(aclent);
+***************
+*** 2836,2841 ****
+--- 2851,2857 ----
+ free(aclent);
+ #endif /* HAVE_AIX_ACL */
+ #endif /* HAVE_SOLARIS_ACL */
++ #endif /* HAVE_SOLARIS_ZFS_ACL */
+ #endif /* HAVE_POSIX_ACL */
+ }
+ #endif
+*** ../vim-7.3.431/src/version.c 2012-02-05 22:05:44.000000000 +0100
+--- src/version.c 2012-02-05 22:44:10.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 432,
+ /**/
+
+--
+If you put 7 of the most talented OSS developers in a room for a week
+and asked them to fix a bug in a spreadsheet program, in 1 week
+you'd have 2 new mail readers and a text-based web browser.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.433 b/source/ap/vim/patches/7.3.433
new file mode 100644
index 000000000..bb83828ff
--- /dev/null
+++ b/source/ap/vim/patches/7.3.433
@@ -0,0 +1,92 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.433
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.433
+Problem: Using continued lines in a Vim script can be slow.
+Solution: Instead of reallocating for every line use a growarray. (Yasuhiro
+ Matsumoto)
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.3.432/src/ex_cmds2.c 2012-02-04 21:57:44.000000000 +0100
+--- src/ex_cmds2.c 2012-02-05 23:06:31.000000000 +0100
+***************
+*** 3439,3460 ****
+ {
+ /* compensate for the one line read-ahead */
+ --sourcing_lnum;
+! for (;;)
+ {
+! sp->nextline = get_one_sourceline(sp);
+! if (sp->nextline == NULL)
+! break;
+! p = skipwhite(sp->nextline);
+! if (*p != '\\')
+! break;
+! s = alloc((unsigned)(STRLEN(line) + STRLEN(p)));
+! if (s == NULL) /* out of memory */
+! break;
+! STRCPY(s, line);
+! STRCAT(s, p + 1);
+ vim_free(line);
+! line = s;
+! vim_free(sp->nextline);
+ }
+ }
+
+--- 3439,3470 ----
+ {
+ /* compensate for the one line read-ahead */
+ --sourcing_lnum;
+!
+! /* Get the next line and concatenate it when it starts with a
+! * backslash. We always need to read the next line, keep it in
+! * sp->nextline. */
+! sp->nextline = get_one_sourceline(sp);
+! if (sp->nextline != NULL && *(p = skipwhite(sp->nextline)) == '\\')
+ {
+! garray_T ga;
+!
+! ga_init2(&ga, (int)sizeof(char_u), 200);
+! ga_concat(&ga, line);
+! ga_concat(&ga, p + 1);
+! for (;;)
+! {
+! vim_free(sp->nextline);
+! sp->nextline = get_one_sourceline(sp);
+! if (sp->nextline == NULL)
+! break;
+! p = skipwhite(sp->nextline);
+! if (*p != '\\')
+! break;
+! ga_concat(&ga, p + 1);
+! }
+! ga_append(&ga, NUL);
+ vim_free(line);
+! line = ga.ga_data;
+ }
+ }
+
+*** ../vim-7.3.432/src/version.c 2012-02-05 22:51:27.000000000 +0100
+--- src/version.c 2012-02-05 23:09:21.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 433,
+ /**/
+
+--
+Due knot trussed yore spell chequer two fined awl miss steaks.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.434 b/source/ap/vim/patches/7.3.434
new file mode 100644
index 000000000..52c14b90d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.434
@@ -0,0 +1,233 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.434
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.434
+Problem: Using join() can be slow.
+Solution: Compute the size of the result before allocation to avoid a lot of
+ allocations and copies. (Taro Muraoka)
+Files: src/eval.c
+
+
+*** ../vim-7.3.433/src/eval.c 2012-02-05 00:39:14.000000000 +0100
+--- src/eval.c 2012-02-06 00:05:31.000000000 +0100
+***************
+*** 442,447 ****
+--- 442,448 ----
+ static list_T *list_copy __ARGS((list_T *orig, int deep, int copyID));
+ static void list_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2));
+ static char_u *list2string __ARGS((typval_T *tv, int copyID));
++ static int list_join_inner __ARGS((garray_T *gap, list_T *l, char_u *sep, int echo_style, int copyID, garray_T *join_gap));
+ static int list_join __ARGS((garray_T *gap, list_T *l, char_u *sep, int echo, int copyID));
+ static int free_unref_items __ARGS((int copyID));
+ static void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID));
+***************
+*** 6571,6617 ****
+ return (char_u *)ga.ga_data;
+ }
+
+! /*
+! * Join list "l" into a string in "*gap", using separator "sep".
+! * When "echo_style" is TRUE use String as echoed, otherwise as inside a List.
+! * Return FAIL or OK.
+! */
+ static int
+! list_join(gap, l, sep, echo_style, copyID)
+! garray_T *gap;
+ list_T *l;
+ char_u *sep;
+ int echo_style;
+ int copyID;
+ {
+ int first = TRUE;
+ char_u *tofree;
+ char_u numbuf[NUMBUFLEN];
+ listitem_T *item;
+ char_u *s;
+
+ for (item = l->lv_first; item != NULL && !got_int; item = item->li_next)
+ {
+- if (first)
+- first = FALSE;
+- else
+- ga_concat(gap, sep);
+-
+ if (echo_style)
+ s = echo_string(&item->li_tv, &tofree, numbuf, copyID);
+ else
+ s = tv2string(&item->li_tv, &tofree, numbuf, copyID);
+- if (s != NULL)
+- ga_concat(gap, s);
+- vim_free(tofree);
+ if (s == NULL)
+ return FAIL;
+ line_breakcheck();
+ }
+ return OK;
+ }
+
+ /*
+ * Garbage collection for lists and dictionaries.
+ *
+ * We use reference counts to be able to free most items right away when they
+--- 6572,6690 ----
+ return (char_u *)ga.ga_data;
+ }
+
+! typedef struct join_S {
+! char_u *s;
+! char_u *tofree;
+! } join_T;
+!
+ static int
+! list_join_inner(gap, l, sep, echo_style, copyID, join_gap)
+! garray_T *gap; /* to store the result in */
+ list_T *l;
+ char_u *sep;
+ int echo_style;
+ int copyID;
++ garray_T *join_gap; /* to keep each list item string */
+ {
++ int i;
++ join_T *p;
++ int len;
++ int sumlen = 0;
+ int first = TRUE;
+ char_u *tofree;
+ char_u numbuf[NUMBUFLEN];
+ listitem_T *item;
+ char_u *s;
+
++ /* Stringify each item in the list. */
+ for (item = l->lv_first; item != NULL && !got_int; item = item->li_next)
+ {
+ if (echo_style)
+ s = echo_string(&item->li_tv, &tofree, numbuf, copyID);
+ else
+ s = tv2string(&item->li_tv, &tofree, numbuf, copyID);
+ if (s == NULL)
+ return FAIL;
++
++ len = (int)STRLEN(s);
++ sumlen += len;
++
++ ga_grow(join_gap, 1);
++ p = ((join_T *)join_gap->ga_data) + (join_gap->ga_len++);
++ if (tofree != NULL || s != numbuf)
++ {
++ p->s = s;
++ p->tofree = tofree;
++ }
++ else
++ {
++ p->s = vim_strnsave(s, len);
++ p->tofree = p->s;
++ }
++
++ line_breakcheck();
++ }
++
++ /* Allocate result buffer with its total size, avoid re-allocation and
++ * multiple copy operations. Add 2 for a tailing ']' and NUL. */
++ if (join_gap->ga_len >= 2)
++ sumlen += (int)STRLEN(sep) * (join_gap->ga_len - 1);
++ if (ga_grow(gap, sumlen + 2) == FAIL)
++ return FAIL;
++
++ for (i = 0; i < join_gap->ga_len && !got_int; ++i)
++ {
++ if (first)
++ first = FALSE;
++ else
++ ga_concat(gap, sep);
++ p = ((join_T *)join_gap->ga_data) + i;
++
++ if (p->s != NULL)
++ ga_concat(gap, p->s);
+ line_breakcheck();
+ }
++
+ return OK;
+ }
+
+ /*
++ * Join list "l" into a string in "*gap", using separator "sep".
++ * When "echo_style" is TRUE use String as echoed, otherwise as inside a List.
++ * Return FAIL or OK.
++ */
++ static int
++ list_join(gap, l, sep, echo_style, copyID)
++ garray_T *gap;
++ list_T *l;
++ char_u *sep;
++ int echo_style;
++ int copyID;
++ {
++ garray_T join_ga;
++ int retval;
++ join_T *p;
++ int i;
++
++ ga_init2(&join_ga, (int)sizeof(join_T), l->lv_len);
++ retval = list_join_inner(gap, l, sep, echo_style, copyID, &join_ga);
++
++ /* Dispose each item in join_ga. */
++ if (join_ga.ga_data != NULL)
++ {
++ p = (join_T *)join_ga.ga_data;
++ for (i = 0; i < join_ga.ga_len; ++i)
++ {
++ vim_free(p->tofree);
++ ++p;
++ }
++ ga_clear(&join_ga);
++ }
++
++ return retval;
++ }
++
++ /*
+ * Garbage collection for lists and dictionaries.
+ *
+ * We use reference counts to be able to free most items right away when they
+***************
+*** 13406,13412 ****
+ char_u *rhs;
+ int mode;
+ int abbr = FALSE;
+! int get_dict = FALSE;
+ mapblock_T *mp;
+ int buffer_local;
+
+--- 13479,13485 ----
+ char_u *rhs;
+ int mode;
+ int abbr = FALSE;
+! int get_dict = FALSE;
+ mapblock_T *mp;
+ int buffer_local;
+
+*** ../vim-7.3.433/src/version.c 2012-02-05 23:10:25.000000000 +0100
+--- src/version.c 2012-02-06 00:10:23.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 434,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+30. Even though you died last week, you've managed to retain OPS on your
+ favorite IRC channel.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.435 b/source/ap/vim/patches/7.3.435
new file mode 100644
index 000000000..e1b13709a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.435
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.435
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.435
+Problem: Compiler warning for unused variable.
+Solution: Move the variable inside #ifdef.
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.3.434/src/ex_cmds2.c 2012-02-05 23:10:25.000000000 +0100
+--- src/ex_cmds2.c 2012-02-06 06:16:28.000000000 +0100
+***************
+*** 3400,3406 ****
+ {
+ struct source_cookie *sp = (struct source_cookie *)cookie;
+ char_u *line;
+! char_u *p, *s;
+
+ #ifdef FEAT_EVAL
+ /* If breakpoints have been added/deleted need to check for it. */
+--- 3400,3406 ----
+ {
+ struct source_cookie *sp = (struct source_cookie *)cookie;
+ char_u *line;
+! char_u *p;
+
+ #ifdef FEAT_EVAL
+ /* If breakpoints have been added/deleted need to check for it. */
+***************
+*** 3471,3476 ****
+--- 3471,3478 ----
+ #ifdef FEAT_MBYTE
+ if (line != NULL && sp->conv.vc_type != CONV_NONE)
+ {
++ char_u *s;
++
+ /* Convert the encoding of the script line. */
+ s = string_convert(&sp->conv, line, NULL);
+ if (s != NULL)
+*** ../vim-7.3.434/src/version.c 2012-02-06 00:13:16.000000000 +0100
+--- src/version.c 2012-02-11 20:38:49.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 435,
+ /**/
+
+--
+Light travels faster than sound. This is why some people
+appear bright until you hear them speak
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.436 b/source/ap/vim/patches/7.3.436
new file mode 100644
index 000000000..777371ca9
--- /dev/null
+++ b/source/ap/vim/patches/7.3.436
@@ -0,0 +1,111 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.436
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.436
+Problem: Compiler warnings for types on Windows.
+Solution: Add type casts. (Mike Williams)
+Files: src/eval.c
+
+
+*** ../vim-7.3.435/src/eval.c 2012-02-06 00:13:16.000000000 +0100
+--- src/eval.c 2012-02-11 20:38:16.000000000 +0100
+***************
+*** 14462,14468 ****
+ --prevlen;
+ }
+ if (prevlen == 0)
+! s = vim_strnsave(start, len);
+ else
+ {
+ /* Change "prev" buffer to be the right size. This way
+--- 14462,14468 ----
+ --prevlen;
+ }
+ if (prevlen == 0)
+! s = vim_strnsave(start, (int)len);
+ else
+ {
+ /* Change "prev" buffer to be the right size. This way
+***************
+*** 14529,14535 ****
+
+ if (dest < buf)
+ {
+! adjust_prevlen = buf - dest; /* must be 1 or 2 */
+ dest = buf;
+ }
+ if (readlen > p - buf + 1)
+--- 14529,14535 ----
+
+ if (dest < buf)
+ {
+! adjust_prevlen = (int)(buf - dest); /* must be 1 or 2 */
+ dest = buf;
+ }
+ if (readlen > p - buf + 1)
+***************
+*** 14558,14568 ****
+ * small, to avoid repeatedly 'allocing' large and
+ * 'reallocing' small. */
+ if (prevsize == 0)
+! prevsize = p - start;
+ else
+ {
+ long grow50pc = (prevsize * 3) / 2;
+! long growmin = (p - start) * 2 + prevlen;
+ prevsize = grow50pc > growmin ? grow50pc : growmin;
+ }
+ if ((newprev = vim_realloc(prev, prevsize)) == NULL)
+--- 14558,14568 ----
+ * small, to avoid repeatedly 'allocing' large and
+ * 'reallocing' small. */
+ if (prevsize == 0)
+! prevsize = (long)(p - start);
+ else
+ {
+ long grow50pc = (prevsize * 3) / 2;
+! long growmin = (long)((p - start) * 2 + prevlen);
+ prevsize = grow50pc > growmin ? grow50pc : growmin;
+ }
+ if ((newprev = vim_realloc(prev, prevsize)) == NULL)
+***************
+*** 14575,14581 ****
+ }
+ /* Add the line part to end of "prev". */
+ mch_memmove(prev + prevlen, start, p - start);
+! prevlen += p - start;
+ }
+ } /* while */
+
+--- 14575,14581 ----
+ }
+ /* Add the line part to end of "prev". */
+ mch_memmove(prev + prevlen, start, p - start);
+! prevlen += (long)(p - start);
+ }
+ } /* while */
+
+*** ../vim-7.3.435/src/version.c 2012-02-11 20:40:49.000000000 +0100
+--- src/version.c 2012-02-11 20:43:18.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 436,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+39. You move into a new house and decide to Netscape before you landscape.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.437 b/source/ap/vim/patches/7.3.437
new file mode 100644
index 000000000..889efe746
--- /dev/null
+++ b/source/ap/vim/patches/7.3.437
@@ -0,0 +1,73 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.437
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.437
+Problem: Continue looping inside FOR_ALL_TAB_WINDOWS even when already done.
+Solution: Use goto instead of break. (Hirohito Higashi)
+Files: src/fileio.c, src/globals.h
+
+
+*** ../vim-7.3.436/src/fileio.c 2011-09-02 11:56:15.000000000 +0200
+--- src/fileio.c 2012-02-11 23:40:23.000000000 +0100
+***************
+*** 8898,8907 ****
+ if (tp != curtab)
+ goto_tabpage_tp(tp);
+ win_goto(aucmd_win);
+! break;
+ }
+ }
+ }
+
+ /* Remove the window and frame from the tree of frames. */
+ (void)winframe_remove(curwin, &dummy, NULL);
+--- 8898,8908 ----
+ if (tp != curtab)
+ goto_tabpage_tp(tp);
+ win_goto(aucmd_win);
+! goto win_found;
+ }
+ }
+ }
++ win_found:
+
+ /* Remove the window and frame from the tree of frames. */
+ (void)winframe_remove(curwin, &dummy, NULL);
+*** ../vim-7.3.436/src/globals.h 2012-02-04 23:34:57.000000000 +0100
+--- src/globals.h 2012-02-11 23:43:45.000000000 +0100
+***************
+*** 535,540 ****
+--- 535,544 ----
+ EXTERN win_T *prevwin INIT(= NULL); /* previous window */
+ # define W_NEXT(wp) ((wp)->w_next)
+ # define FOR_ALL_WINDOWS(wp) for (wp = firstwin; wp != NULL; wp = wp->w_next)
++ /*
++ * When using this macro "break" only breaks out of the inner loop. Use "goto"
++ * to break out of the tabpage loop.
++ */
+ # define FOR_ALL_TAB_WINDOWS(tp, wp) \
+ for ((tp) = first_tabpage; (tp) != NULL; (tp) = (tp)->tp_next) \
+ for ((wp) = ((tp) == curtab) \
+*** ../vim-7.3.436/src/version.c 2012-02-11 20:44:01.000000000 +0100
+--- src/version.c 2012-02-11 23:40:47.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 437,
+ /**/
+
+--
+The future isn't what it used to be.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.438 b/source/ap/vim/patches/7.3.438
new file mode 100644
index 000000000..94786d7cc
--- /dev/null
+++ b/source/ap/vim/patches/7.3.438
@@ -0,0 +1,126 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.438
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.438
+Problem: There is no way to avoid ":doautoall" reading modelines.
+Solution: Add the <nomodeline> argument. Adjust documentation.
+Files: src/fileio.c, runtime/doc/autocmd.txt
+
+
+*** ../vim-7.3.437/src/fileio.c 2012-02-11 23:45:30.000000000 +0100
+--- src/fileio.c 2012-02-12 00:08:17.000000000 +0100
+***************
+*** 8739,8744 ****
+--- 8739,8752 ----
+ int retval;
+ aco_save_T aco;
+ buf_T *buf;
++ char_u *arg = eap->arg;
++ int call_do_modelines = TRUE;
++
++ if (STRNCMP(arg, "<nomodeline>", 12) == 0)
++ {
++ call_do_modelines = FALSE;
++ arg = skipwhite(arg + 12);
++ }
+
+ /*
+ * This is a bit tricky: For some commands curwin->w_buffer needs to be
+***************
+*** 8755,8765 ****
+ aucmd_prepbuf(&aco, buf);
+
+ /* execute the autocommands for this buffer */
+! retval = do_doautocmd(eap->arg, FALSE);
+
+! /* Execute the modeline settings, but don't set window-local
+! * options if we are using the current window for another buffer. */
+! do_modelines(curwin == aucmd_win ? OPT_NOWIN : 0);
+
+ /* restore the current window */
+ aucmd_restbuf(&aco);
+--- 8763,8777 ----
+ aucmd_prepbuf(&aco, buf);
+
+ /* execute the autocommands for this buffer */
+! retval = do_doautocmd(arg, FALSE);
+
+! if (call_do_modelines)
+! {
+! /* Execute the modeline settings, but don't set window-local
+! * options if we are using the current window for another
+! * buffer. */
+! do_modelines(curwin == aucmd_win ? OPT_NOWIN : 0);
+! }
+
+ /* restore the current window */
+ aucmd_restbuf(&aco);
+*** ../vim-7.3.437/runtime/doc/autocmd.txt 2011-05-19 17:25:36.000000000 +0200
+--- runtime/doc/autocmd.txt 2012-02-12 00:03:45.000000000 +0100
+***************
+*** 1065,1077 ****
+ autocommands for that group. Note: if you use an
+ undefined group name, Vim gives you an error message.
+
+- After applying the autocommands the modelines are
+- processed, so that their settings overrule the
+- settings from autocommands, like what happens when
+- editing a file.
+-
+ *:doautoa* *:doautoall*
+! :doautoa[ll] [group] {event} [fname]
+ Like ":doautocmd", but apply the autocommands to each
+ loaded buffer. Note that [fname] is used to select
+ the autocommands, not the buffers to which they are
+--- 1073,1080 ----
+ autocommands for that group. Note: if you use an
+ undefined group name, Vim gives you an error message.
+
+ *:doautoa* *:doautoall*
+! :doautoa[ll] [<nomodeline>] [group] {event} [fname]
+ Like ":doautocmd", but apply the autocommands to each
+ loaded buffer. Note that [fname] is used to select
+ the autocommands, not the buffers to which they are
+***************
+*** 1082,1087 ****
+--- 1085,1096 ----
+ This command is intended for autocommands that set
+ options, change highlighting, and things like that.
+
++ After applying the autocommands the modelines are
++ processed, so that their settings overrule the
++ settings from autocommands, like what happens when
++ editing a file. This is skipped when the <nomodeline>
++ argument is present.
++
+ ==============================================================================
+ 10. Using autocommands *autocmd-use*
+
+*** ../vim-7.3.437/src/version.c 2012-02-11 23:45:30.000000000 +0100
+--- src/version.c 2012-02-12 00:16:04.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 438,
+ /**/
+
+--
+"Oh, no! NOT the Spanish Inquisition!"
+"NOBODY expects the Spanish Inquisition!!!"
+ -- Monty Python sketch --
+"Oh, no! NOT another option!"
+"EVERYBODY expects another option!!!"
+ -- Discussion in vim-dev mailing list --
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.439 b/source/ap/vim/patches/7.3.439
new file mode 100644
index 000000000..63d8f693f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.439
@@ -0,0 +1,87 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.439
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.439
+Problem: Compiler warnings to size casts in Perl interface.
+Solution: Use XS macros. (James McCoy)
+Files: src/if_perl.xs, src/typemap
+
+
+*** ../vim-7.3.438/src/if_perl.xs 2011-09-07 18:47:19.000000000 +0200
+--- src/if_perl.xs 2012-02-12 00:28:52.000000000 +0100
+***************
+*** 611,617 ****
+ if (ptr->w_perl_private == NULL)
+ {
+ ptr->w_perl_private = newSV(0);
+! sv_setiv(ptr->w_perl_private, (IV)ptr);
+ }
+ else
+ SvREFCNT_inc(ptr->w_perl_private);
+--- 611,617 ----
+ if (ptr->w_perl_private == NULL)
+ {
+ ptr->w_perl_private = newSV(0);
+! sv_setiv(ptr->w_perl_private, PTR2IV(ptr));
+ }
+ else
+ SvREFCNT_inc(ptr->w_perl_private);
+***************
+*** 629,635 ****
+ if (ptr->b_perl_private == NULL)
+ {
+ ptr->b_perl_private = newSV(0);
+! sv_setiv(ptr->b_perl_private, (IV)ptr);
+ }
+ else
+ SvREFCNT_inc(ptr->b_perl_private);
+--- 629,635 ----
+ if (ptr->b_perl_private == NULL)
+ {
+ ptr->b_perl_private = newSV(0);
+! sv_setiv(ptr->b_perl_private, PTR2IV(ptr));
+ }
+ else
+ SvREFCNT_inc(ptr->b_perl_private);
+*** ../vim-7.3.438/src/typemap 2010-08-15 21:57:29.000000000 +0200
+--- src/typemap 2012-02-12 00:28:52.000000000 +0100
+***************
+*** 6,12 ****
+ T_VIOBJNOMUNGE
+ if (sv_isa($arg, \"${ntype}\")) {
+ IV tmp = SvIV((SV*)SvRV($arg));
+! $var = ($type) tmp;
+ if (!tmp)
+ croak(\"$ntype no longer exists\");
+ }
+--- 6,12 ----
+ T_VIOBJNOMUNGE
+ if (sv_isa($arg, \"${ntype}\")) {
+ IV tmp = SvIV((SV*)SvRV($arg));
+! $var = INT2PTR($type, tmp);
+ if (!tmp)
+ croak(\"$ntype no longer exists\");
+ }
+*** ../vim-7.3.438/src/version.c 2012-02-12 00:18:54.000000000 +0100
+--- src/version.c 2012-02-12 00:31:18.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 439,
+ /**/
+
+--
+Microsoft is to software what McDonalds is to gourmet cooking
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.440 b/source/ap/vim/patches/7.3.440
new file mode 100644
index 000000000..39313b0f6
--- /dev/null
+++ b/source/ap/vim/patches/7.3.440
@@ -0,0 +1,211 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.440
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.440
+Problem: Vim does not support UTF8_STRING for the X selection.
+Solution: Add UTF8_STRING atom support. (Alex Efros) Use it only when
+ 'encoding' is set to Unicode.
+Files: src/ui.c
+
+
+*** ../vim-7.3.439/src/ui.c 2012-02-04 21:57:44.000000000 +0100
+--- src/ui.c 2012-02-12 01:28:30.000000000 +0100
+***************
+*** 1917,1922 ****
+--- 1917,1923 ----
+ static Atom vim_atom; /* Vim's own special selection format */
+ #ifdef FEAT_MBYTE
+ static Atom vimenc_atom; /* Vim's extended selection format */
++ static Atom utf8_atom;
+ #endif
+ static Atom compound_text_atom;
+ static Atom text_atom;
+***************
+*** 1930,1935 ****
+--- 1931,1937 ----
+ vim_atom = XInternAtom(dpy, VIM_ATOM_NAME, False);
+ #ifdef FEAT_MBYTE
+ vimenc_atom = XInternAtom(dpy, VIMENC_ATOM_NAME,False);
++ utf8_atom = XInternAtom(dpy, "UTF8_STRING", False);
+ #endif
+ compound_text_atom = XInternAtom(dpy, "COMPOUND_TEXT", False);
+ text_atom = XInternAtom(dpy, "TEXT", False);
+***************
+*** 2074,2080 ****
+ }
+ #endif
+
+! else if (*type == compound_text_atom || (
+ #ifdef FEAT_MBYTE
+ enc_dbcs != 0 &&
+ #endif
+--- 2076,2086 ----
+ }
+ #endif
+
+! else if (*type == compound_text_atom
+! #ifdef FEAT_MBYTE
+! || *type == utf8_atom
+! #endif
+! || (
+ #ifdef FEAT_MBYTE
+ enc_dbcs != 0 &&
+ #endif
+***************
+*** 2128,2134 ****
+ #else
+ 1
+ #endif
+! ; i < 5; i++)
+ {
+ switch (i)
+ {
+--- 2134,2140 ----
+ #else
+ 1
+ #endif
+! ; i < 6; i++)
+ {
+ switch (i)
+ {
+***************
+*** 2136,2145 ****
+ case 0: type = vimenc_atom; break;
+ #endif
+ case 1: type = vim_atom; break;
+! case 2: type = compound_text_atom; break;
+! case 3: type = text_atom; break;
+ default: type = XA_STRING;
+ }
+ success = MAYBE;
+ XtGetSelectionValue(myShell, cbd->sel_atom, type,
+ clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime);
+--- 2142,2159 ----
+ case 0: type = vimenc_atom; break;
+ #endif
+ case 1: type = vim_atom; break;
+! #ifdef FEAT_MBYTE
+! case 2: type = utf8_atom; break;
+! #endif
+! case 3: type = compound_text_atom; break;
+! case 4: type = text_atom; break;
+ default: type = XA_STRING;
+ }
++ #ifdef FEAT_MBYTE
++ if (type == utf8_atom && !enc_utf8)
++ /* Only request utf-8 when 'encoding' is utf8. */
++ continue;
++ #endif
+ success = MAYBE;
+ XtGetSelectionValue(myShell, cbd->sel_atom, type,
+ clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime);
+***************
+*** 2230,2247 ****
+ {
+ Atom *array;
+
+! if ((array = (Atom *)XtMalloc((unsigned)(sizeof(Atom) * 6))) == NULL)
+ return False;
+ *value = (XtPointer)array;
+ i = 0;
+- array[i++] = XA_STRING;
+ array[i++] = targets_atom;
+ #ifdef FEAT_MBYTE
+ array[i++] = vimenc_atom;
+ #endif
+ array[i++] = vim_atom;
+ array[i++] = text_atom;
+ array[i++] = compound_text_atom;
+ *type = XA_ATOM;
+ /* This used to be: *format = sizeof(Atom) * 8; but that caused
+ * crashes on 64 bit machines. (Peter Derr) */
+--- 2244,2266 ----
+ {
+ Atom *array;
+
+! if ((array = (Atom *)XtMalloc((unsigned)(sizeof(Atom) * 7))) == NULL)
+ return False;
+ *value = (XtPointer)array;
+ i = 0;
+ array[i++] = targets_atom;
+ #ifdef FEAT_MBYTE
+ array[i++] = vimenc_atom;
+ #endif
+ array[i++] = vim_atom;
++ #ifdef FEAT_MBYTE
++ if (enc_utf8)
++ array[i++] = utf8_atom;
++ #endif
++ array[i++] = XA_STRING;
+ array[i++] = text_atom;
+ array[i++] = compound_text_atom;
++
+ *type = XA_ATOM;
+ /* This used to be: *format = sizeof(Atom) * 8; but that caused
+ * crashes on 64 bit machines. (Peter Derr) */
+***************
+*** 2253,2258 ****
+--- 2272,2278 ----
+ if ( *target != XA_STRING
+ #ifdef FEAT_MBYTE
+ && *target != vimenc_atom
++ && *target != utf8_atom
+ #endif
+ && *target != vim_atom
+ && *target != text_atom
+***************
+*** 2282,2294 ****
+ return False;
+ }
+
+! if (*target == XA_STRING)
+ {
+ mch_memmove(result, string, (size_t)(*length));
+! *type = XA_STRING;
+ }
+! else if (*target == compound_text_atom
+! || *target == text_atom)
+ {
+ XTextProperty text_prop;
+ char *string_nt = (char *)alloc((unsigned)*length + 1);
+--- 2302,2317 ----
+ return False;
+ }
+
+! if (*target == XA_STRING
+! #ifdef FEAT_MBYTE
+! || (*target == utf8_atom && enc_utf8)
+! #endif
+! )
+ {
+ mch_memmove(result, string, (size_t)(*length));
+! *type = *target;
+ }
+! else if (*target == compound_text_atom || *target == text_atom)
+ {
+ XTextProperty text_prop;
+ char *string_nt = (char *)alloc((unsigned)*length + 1);
+*** ../vim-7.3.439/src/version.c 2012-02-12 00:31:47.000000000 +0100
+--- src/version.c 2012-02-12 01:34:22.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 440,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+42. Your virtual girlfriend finds a new net sweetheart with a larger bandwidth.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.441 b/source/ap/vim/patches/7.3.441
new file mode 100644
index 000000000..9a7539b5a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.441
@@ -0,0 +1,341 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.441
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.441
+Problem: Newer versions of MzScheme (Racket) require earlier (trampolined)
+ initialisation.
+Solution: Call mzscheme_main() early in main(). (Sergey Khorev)
+Files: src/Make_mvc.mak, src/if_mzsch.c, src/main.c,
+ src/proto/if_mzsch.pro
+
+
+*** ../vim-7.3.440/src/Make_mvc.mak 2011-09-14 19:01:38.000000000 +0200
+--- src/Make_mvc.mak 2012-02-12 01:46:05.000000000 +0100
+***************
+*** 740,745 ****
+--- 740,747 ----
+ !endif
+ !endif
+ MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj
++ # increase stack size
++ MZSCHEME_LIB = $(MZSCHEME_LIB) /STACK:8388608
+ !endif
+
+ # Perl interface
+*** ../vim-7.3.440/src/if_mzsch.c 2010-11-03 21:59:23.000000000 +0100
+--- src/if_mzsch.c 2012-02-12 01:47:31.000000000 +0100
+***************
+*** 31,38 ****
+ * depend". */
+ #if defined(FEAT_MZSCHEME) || defined(PROTO)
+
+- #include <assert.h>
+-
+ /* Base data structures */
+ #define SCHEME_VIMBUFFERP(obj) SAME_TYPE(SCHEME_TYPE(obj), mz_buffer_type)
+ #define SCHEME_VIMWINDOWP(obj) SAME_TYPE(SCHEME_TYPE(obj), mz_window_type)
+--- 31,36 ----
+***************
+*** 559,575 ****
+ hMzSch = vimLoadLib(sch_dll);
+ hMzGC = vimLoadLib(gc_dll);
+
+! if (!hMzSch)
+ {
+ if (verbose)
+! EMSG2(_(e_loadlib), sch_dll);
+ return FAIL;
+ }
+
+! if (!hMzGC)
+ {
+ if (verbose)
+! EMSG2(_(e_loadlib), gc_dll);
+ return FAIL;
+ }
+
+--- 557,573 ----
+ hMzSch = vimLoadLib(sch_dll);
+ hMzGC = vimLoadLib(gc_dll);
+
+! if (!hMzGC)
+ {
+ if (verbose)
+! EMSG2(_(e_loadlib), gc_dll);
+ return FAIL;
+ }
+
+! if (!hMzSch)
+ {
+ if (verbose)
+! EMSG2(_(e_loadlib), sch_dll);
+ return FAIL;
+ }
+
+***************
+*** 798,862 ****
+ static __declspec(thread) void *tls_space;
+ #endif
+
+! void
+! mzscheme_main(void)
+ {
+ #if MZSCHEME_VERSION_MAJOR >= 500 && defined(WIN32) && defined(USE_THREAD_LOCAL)
+ scheme_register_tls_space(&tls_space, 0);
+ #endif
+! #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR >= 400
+! /* use trampoline for precise GC in MzScheme >= 4.x */
+! scheme_main_setup(TRUE, mzscheme_env_main, 0, NULL);
+ #else
+! mzscheme_env_main(NULL, 0, NULL);
+ #endif
+ }
+
+ static int
+! mzscheme_env_main(Scheme_Env *env, int argc UNUSED, char **argv UNUSED)
+ {
+! /* neither argument nor return values are used */
+! #ifdef MZ_PRECISE_GC
+! # if MZSCHEME_VERSION_MAJOR < 400
+! /*
+! * Starting from version 4.x, embedding applications must use
+! * scheme_main_setup/scheme_main_stack_setup trampolines
+! * rather than setting stack base directly with scheme_set_stack_base
+! */
+ Scheme_Object *dummy = NULL;
+ MZ_GC_DECL_REG(1);
+ MZ_GC_VAR_IN_REG(0, dummy);
+
+ stack_base = &__gc_var_stack__;
+ # else
+- /* environment has been created by us by Scheme */
+- environment = env;
+- # endif
+- /*
+- * In 4.x, all activities must be performed inside trampoline
+- * so we are forced to initialise GC immediately
+- * This can be postponed in 3.x but I see no point in implementing
+- * a feature which will work in older versions only.
+- * One would better use conservative GC if he needs dynamic MzScheme
+- */
+- mzscheme_init();
+- #else
+ int dummy = 0;
+ stack_base = (void *)&dummy;
+ #endif
+! main_loop(FALSE, FALSE);
+! #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR < 400
+ /* releasing dummy */
+ MZ_GC_REG();
+ MZ_GC_UNREG();
+ #endif
+! return 0;
+ }
+
+ static void
+ startup_mzscheme(void)
+ {
+! #if !defined(MZ_PRECISE_GC) || MZSCHEME_VERSION_MAJOR < 400
+ scheme_set_stack_base(stack_base, 1);
+ #endif
+
+--- 796,863 ----
+ static __declspec(thread) void *tls_space;
+ #endif
+
+! /*
+! * Since version 4.x precise GC requires trampolined startup.
+! * Futures and places in version 5.x need it too.
+! */
+! #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR >= 400 \
+! || MZSCHEME_VERSION_MAJOR >= 500 && (defined(MZ_USE_FUTURES) || defined(MZ_USE_PLACES))
+! # ifdef DYNAMIC_MZSCHEME
+! # error Precise GC v.4+ or Racket with futures/places do not support dynamic MzScheme
+! # endif
+! # define TRAMPOLINED_MZVIM_STARTUP
+! #endif
+!
+! int
+! mzscheme_main(int argc, char** argv)
+ {
+ #if MZSCHEME_VERSION_MAJOR >= 500 && defined(WIN32) && defined(USE_THREAD_LOCAL)
+ scheme_register_tls_space(&tls_space, 0);
+ #endif
+! #ifdef TRAMPOLINED_MZVIM_STARTUP
+! return scheme_main_setup(TRUE, mzscheme_env_main, argc, argv);
+ #else
+! return mzscheme_env_main(NULL, argc, argv);
+ #endif
+ }
+
+ static int
+! mzscheme_env_main(Scheme_Env *env, int argc, char **argv)
+ {
+! int vim_main_result;
+! #ifdef TRAMPOLINED_MZVIM_STARTUP
+! /* Scheme has created the environment for us */
+! environment = env;
+! #else
+! # ifdef MZ_PRECISE_GC
+ Scheme_Object *dummy = NULL;
+ MZ_GC_DECL_REG(1);
+ MZ_GC_VAR_IN_REG(0, dummy);
+
+ stack_base = &__gc_var_stack__;
+ # else
+ int dummy = 0;
+ stack_base = (void *)&dummy;
++ # endif
+ #endif
+!
+! /* mzscheme_main is called as a trampoline from main.
+! * We trampoline into vim_main2
+! * Passing argc, argv through from mzscheme_main
+! */
+! vim_main_result = vim_main2(argc, argv);
+! #if !defined(TRAMPOLINED_MZVIM_STARTUP) && defined(MZ_PRECISE_GC)
+ /* releasing dummy */
+ MZ_GC_REG();
+ MZ_GC_UNREG();
+ #endif
+! return vim_main_result;
+ }
+
+ static void
+ startup_mzscheme(void)
+ {
+! #ifndef TRAMPOLINED_MZVIM_STARTUP
+ scheme_set_stack_base(stack_base, 1);
+ #endif
+
+***************
+*** 868,874 ****
+ MZ_REGISTER_STATIC(exn_message);
+ MZ_REGISTER_STATIC(vim_exn);
+
+! #if !defined(MZ_PRECISE_GC) || MZSCHEME_VERSION_MAJOR < 400
+ /* in newer versions of precise GC the initial env has been created */
+ environment = scheme_basic_env();
+ #endif
+--- 869,875 ----
+ MZ_REGISTER_STATIC(exn_message);
+ MZ_REGISTER_STATIC(vim_exn);
+
+! #ifndef TRAMPOLINED_MZVIM_STARTUP
+ /* in newer versions of precise GC the initial env has been created */
+ environment = scheme_basic_env();
+ #endif
+***************
+*** 3013,3019 ****
+ MZ_GC_REG();
+
+ tmp = scheme_make_struct_names(exn_name, scheme_null, 0, &nc);
+- assert(nc <= 5);
+ mch_memmove(exn_names, tmp, nc * sizeof(Scheme_Object *));
+ MZ_GC_CHECK();
+
+--- 3014,3019 ----
+*** ../vim-7.3.440/src/main.c 2011-12-08 15:57:54.000000000 +0100
+--- src/main.c 2012-02-12 01:49:50.000000000 +0100
+***************
+*** 554,559 ****
+--- 554,584 ----
+ debug_break_level = params.use_debug_break_level;
+ #endif
+
++ #ifdef FEAT_MZSCHEME
++ /*
++ * Newer version of MzScheme (Racket) require earlier (trampolined)
++ * initialisation via scheme_main_setup.
++ * Implement this by initialising it as early as possible
++ * and splitting off remaining Vim main into vim_main2
++ */
++ {
++ /* Pack up preprocessed command line arguments.
++ * It is safe because Scheme does not access argc/argv. */
++ char *args[2];
++ args[0] = (char *)fname;
++ args[1] = (char *)&params;
++ return mzscheme_main(2, args);
++ }
++ }
++
++ int vim_main2(int argc, char **argv)
++ {
++ char_u *fname = (char_u *)argv[0];
++ mparm_T params;
++
++ memcpy(&params, argv[1], sizeof(params));
++ #endif
++
+ /* Execute --cmd arguments. */
+ exe_pre_commands(&params);
+
+***************
+*** 957,970 ****
+
+ /*
+ * Call the main command loop. This never returns.
+! * For embedded MzScheme the main_loop will be called by Scheme
+! * for proper stack tracking
+! */
+! #ifndef FEAT_MZSCHEME
+ main_loop(FALSE, FALSE);
+- #else
+- mzscheme_main();
+- #endif
+
+ return 0;
+ }
+--- 982,989 ----
+
+ /*
+ * Call the main command loop. This never returns.
+! */
+ main_loop(FALSE, FALSE);
+
+ return 0;
+ }
+*** ../vim-7.3.440/src/proto/if_mzsch.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/if_mzsch.pro 2012-02-12 01:50:57.000000000 +0100
+***************
+*** 14,19 ****
+ void mzvim_reset_timer __ARGS((void));
+ void *mzvim_eval_string __ARGS((char_u *str));
+ int mzthreads_allowed __ARGS((void));
+! void mzscheme_main __ARGS((void));
+ void do_mzeval __ARGS((char_u *str, typval_T *rettv));
+ /* vim: set ft=c : */
+--- 14,20 ----
+ void mzvim_reset_timer __ARGS((void));
+ void *mzvim_eval_string __ARGS((char_u *str));
+ int mzthreads_allowed __ARGS((void));
+! int mzscheme_main __ARGS((int argc, char **argv));
+ void do_mzeval __ARGS((char_u *str, typval_T *rettv));
++ int vim_main2 __ARGS((int argc, char **argv));
+ /* vim: set ft=c : */
+*** ../vim-7.3.440/src/version.c 2012-02-12 01:35:06.000000000 +0100
+--- src/version.c 2012-02-12 01:54:14.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 441,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+43. You tell the kids they can't use the computer because "Daddy's got work to
+ do" and you don't even have a job.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.442 b/source/ap/vim/patches/7.3.442
new file mode 100644
index 000000000..58b58b4ea
--- /dev/null
+++ b/source/ap/vim/patches/7.3.442
@@ -0,0 +1,186 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.442
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.442 (after 7.3.438)
+Problem: Still read modelines for ":doautocmd".
+Solution: Move check for <nomodeline> to separate function.
+Files: src/fileio.c, src/ex_docmd.c, src/proto/fileio.pro,
+ runtime/doc/autocmd.txt
+
+
+*** ../vim-7.3.441/src/fileio.c 2012-02-12 00:18:54.000000000 +0100
+--- src/fileio.c 2012-02-12 20:05:35.000000000 +0100
+***************
+*** 8740,8752 ****
+ aco_save_T aco;
+ buf_T *buf;
+ char_u *arg = eap->arg;
+! int call_do_modelines = TRUE;
+!
+! if (STRNCMP(arg, "<nomodeline>", 12) == 0)
+! {
+! call_do_modelines = FALSE;
+! arg = skipwhite(arg + 12);
+! }
+
+ /*
+ * This is a bit tricky: For some commands curwin->w_buffer needs to be
+--- 8740,8746 ----
+ aco_save_T aco;
+ buf_T *buf;
+ char_u *arg = eap->arg;
+! int call_do_modelines = check_nomodeline(&arg);
+
+ /*
+ * This is a bit tricky: For some commands curwin->w_buffer needs to be
+***************
+*** 8786,8791 ****
+--- 8780,8802 ----
+ }
+
+ /*
++ * Check *argp for <nomodeline>. When it is present return FALSE, otherwise
++ * return TRUE and advance *argp to after it.
++ * Thus return TRUE when do_modelines() should be called.
++ */
++ int
++ check_nomodeline(argp)
++ char_u **argp;
++ {
++ if (STRNCMP(*argp, "<nomodeline>", 12) == 0)
++ {
++ *argp = skipwhite(*argp + 12);
++ return FALSE;
++ }
++ return TRUE;
++ }
++
++ /*
+ * Prepare for executing autocommands for (hidden) buffer "buf".
+ * Search for a visible window containing the current buffer. If there isn't
+ * one then use "aucmd_win".
+*** ../vim-7.3.441/src/ex_docmd.c 2012-01-26 20:41:22.000000000 +0100
+--- src/ex_docmd.c 2012-02-12 20:05:18.000000000 +0100
+***************
+*** 4955,4961 ****
+ map_clear(eap->cmd, eap->arg, TRUE, TRUE);
+ }
+
+! #ifdef FEAT_AUTOCMD
+ static void
+ ex_autocmd(eap)
+ exarg_T *eap;
+--- 4955,4961 ----
+ map_clear(eap->cmd, eap->arg, TRUE, TRUE);
+ }
+
+! #if defined(FEAT_AUTOCMD) || defined(PROTO)
+ static void
+ ex_autocmd(eap)
+ exarg_T *eap;
+***************
+*** 4982,4989 ****
+ ex_doautocmd(eap)
+ exarg_T *eap;
+ {
+! (void)do_doautocmd(eap->arg, TRUE);
+! do_modelines(0);
+ }
+ #endif
+
+--- 4982,4993 ----
+ ex_doautocmd(eap)
+ exarg_T *eap;
+ {
+! char_u *arg = eap->arg;
+! int call_do_modelines = check_nomodeline(&arg);
+!
+! (void)do_doautocmd(arg, TRUE);
+! if (call_do_modelines) /* Only when there is no <nomodeline>. */
+! do_modelines(0);
+ }
+ #endif
+
+*** ../vim-7.3.441/src/proto/fileio.pro 2010-12-17 16:27:10.000000000 +0100
+--- src/proto/fileio.pro 2012-02-12 20:05:26.000000000 +0100
+***************
+*** 35,40 ****
+--- 35,41 ----
+ void do_autocmd __ARGS((char_u *arg, int forceit));
+ int do_doautocmd __ARGS((char_u *arg, int do_msg));
+ void ex_doautoall __ARGS((exarg_T *eap));
++ int check_nomodeline __ARGS((char_u **argp));
+ void aucmd_prepbuf __ARGS((aco_save_T *aco, buf_T *buf));
+ void aucmd_restbuf __ARGS((aco_save_T *aco));
+ int apply_autocmds __ARGS((event_T event, char_u *fname, char_u *fname_io, int force, buf_T *buf));
+*** ../vim-7.3.441/runtime/doc/autocmd.txt 2012-02-12 00:18:54.000000000 +0100
+--- runtime/doc/autocmd.txt 2012-02-12 20:11:05.000000000 +0100
+***************
+*** 1064,1069 ****
+--- 1072,1085 ----
+ argument is included, Vim executes only the matching
+ autocommands for that group. Note: if you use an
+ undefined group name, Vim gives you an error message.
++ *<nomodeline>*
++ After applying the autocommands the modelines are
++ processed, so that their settings overrule the
++ settings from autocommands, like what happens when
++ editing a file. This is skipped when the <nomodeline>
++ argument is present. You probably want to use
++ <nomodeline> for events that are not used when loading
++ a buffer, such as |User|.
+
+ *:doautoa* *:doautoall*
+ :doautoa[ll] [<nomodeline>] [group] {event} [fname]
+***************
+*** 1077,1088 ****
+ This command is intended for autocommands that set
+ options, change highlighting, and things like that.
+
+- After applying the autocommands the modelines are
+- processed, so that their settings overrule the
+- settings from autocommands, like what happens when
+- editing a file. This is skipped when the <nomodeline>
+- argument is present.
+-
+ ==============================================================================
+ 10. Using autocommands *autocmd-use*
+
+--- 1093,1098 ----
+*** ../vim-7.3.441/src/version.c 2012-02-12 01:55:50.000000000 +0100
+--- src/version.c 2012-02-12 20:11:34.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 442,
+ /**/
+
+--
+The real
+trick is
+this: to
+keep the
+lines as
+short as
+possible
+and keep
+the size
+the same
+yet free
+from the
+need for
+hyphena-
+Dammit!! (Matthew Winn)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.443 b/source/ap/vim/patches/7.3.443
new file mode 100644
index 000000000..84b45baa2
--- /dev/null
+++ b/source/ap/vim/patches/7.3.443
@@ -0,0 +1,206 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.443
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.443
+Problem: MS-Windows: 'shcf' and 'shellxquote' defaults are not very good.
+Solution: Make a better guess when 'shell' is set to "cmd.exe". (Ben Fritz)
+Files: src/option.c, runtime/doc/options.txt
+
+
+*** ../vim-7.3.442/src/option.c 2012-01-28 18:03:30.000000000 +0100
+--- src/option.c 2012-02-12 23:17:55.000000000 +0100
+***************
+*** 3883,3889 ****
+
+ #if defined(MSDOS) || defined(WIN3264) || defined(OS2)
+ /*
+! * Set 'shellcmdflag and 'shellquote' depending on the 'shell' option.
+ * This is done after other initializations, where 'shell' might have been
+ * set, but only if they have not been set before. Default for p_shcf is
+ * "/c", for p_shq is "". For "sh" like shells it is changed here to
+--- 3883,3890 ----
+
+ #if defined(MSDOS) || defined(WIN3264) || defined(OS2)
+ /*
+! * Set 'shellcmdflag', 'shellxquote', and 'shellquote' depending on the
+! * 'shell' option.
+ * This is done after other initializations, where 'shell' might have been
+ * set, but only if they have not been set before. Default for p_shcf is
+ * "/c", for p_shq is "". For "sh" like shells it is changed here to
+***************
+*** 3920,3925 ****
+--- 3921,3962 ----
+ # endif
+ # endif
+ }
++ else if (strstr((char *)gettail(p_sh), "cmd.exe") != NULL)
++ {
++ int idx3;
++
++ /*
++ * cmd.exe on Windows will strip the first and last double quote given
++ * on the command line, e.g. most of the time things like:
++ * cmd /c "my path/to/echo" "my args to echo"
++ * become:
++ * my path/to/echo" "my args to echo
++ * when executed.
++ *
++ * To avoid this, use the /s argument in addition to /c to force the
++ * stripping behavior, and also set shellxquote to automatically
++ * surround the entire command in quotes (which get stripped as
++ * noted).
++ */
++
++ /* Set shellxquote default to add the quotes to be stripped. */
++ idx3 = findoption((char_u *)"sxq");
++ if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
++ {
++ p_sxq = (char_u *)"\"";
++ options[idx3].def_val[VI_DEFAULT] = p_sxq;
++ }
++
++ /* Set shellcmdflag default to always strip the quotes, note the order
++ * between /s and /c is important or cmd.exe will treat the /s as part
++ * of the command to be executed. */
++ idx3 = findoption((char_u *)"shcf");
++ if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
++ {
++ p_shcf = (char_u *)"/s /c";
++ options[idx3].def_val[VI_DEFAULT] = p_shcf;
++ }
++ }
+ #endif
+
+ #ifdef FEAT_TITLE
+*** ../vim-7.3.442/runtime/doc/options.txt 2011-06-26 05:36:07.000000000 +0200
+--- runtime/doc/options.txt 2012-02-12 23:21:59.000000000 +0100
+***************
+*** 5880,5895 ****
+ security reasons.
+
+ *'shellcmdflag'* *'shcf'*
+! 'shellcmdflag' 'shcf' string (default: "-c", MS-DOS and Win32, when 'shell'
+! does not contain "sh" somewhere: "/c")
+ global
+ {not in Vi}
+ Flag passed to the shell to execute "!" and ":!" commands; e.g.,
+ "bash.exe -c ls" or "command.com /c dir". For the MS-DOS-like
+ systems, the default is set according to the value of 'shell', to
+ reduce the need to set this option by the user. It's not used for
+! OS/2 (EMX figures this out itself). See |option-backslash| about
+! including spaces and backslashes. See |dos-shell|.
+ This option cannot be set from a |modeline| or in the |sandbox|, for
+ security reasons.
+
+--- 5899,5919 ----
+ security reasons.
+
+ *'shellcmdflag'* *'shcf'*
+! 'shellcmdflag' 'shcf' string (default: "-c";
+! Win32, when 'shell' is cmd.exe: "/s /c";
+! MS-DOS and Win32, when 'shell' neither is
+! cmd.exe nor contains "sh" somewhere: "/c")
+ global
+ {not in Vi}
+ Flag passed to the shell to execute "!" and ":!" commands; e.g.,
+ "bash.exe -c ls" or "command.com /c dir". For the MS-DOS-like
+ systems, the default is set according to the value of 'shell', to
+ reduce the need to set this option by the user. It's not used for
+! OS/2 (EMX figures this out itself).
+! On Unix it can have more than one flag. Each white space separated
+! part is passed as an argument to the shell command.
+! See |option-backslash| about including spaces and backslashes.
+! Also see |dos-shell| for MS-DOS and MS-Windows.
+ This option cannot be set from a |modeline| or in the |sandbox|, for
+ security reasons.
+
+***************
+*** 5910,5918 ****
+ For Unix the default it "| tee". The stdout of the compiler is saved
+ in a file and echoed to the screen. If the 'shell' option is "csh" or
+ "tcsh" after initializations, the default becomes "|& tee". If the
+! 'shell' option is "sh", "ksh", "zsh" or "bash" the default becomes
+! "2>&1| tee". This means that stderr is also included. Before using
+! the 'shell' option a path is removed, thus "/bin/sh" uses "sh".
+ The initialization of this option is done after reading the ".vimrc"
+ and the other initializations, so that when the 'shell' option is set
+ there, the 'shellpipe' option changes automatically, unless it was
+--- 5934,5943 ----
+ For Unix the default it "| tee". The stdout of the compiler is saved
+ in a file and echoed to the screen. If the 'shell' option is "csh" or
+ "tcsh" after initializations, the default becomes "|& tee". If the
+! 'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh" or "bash" the
+! default becomes "2>&1| tee". This means that stderr is also included.
+! Before using the 'shell' option a path is removed, thus "/bin/sh" uses
+! "sh".
+ The initialization of this option is done after reading the ".vimrc"
+ and the other initializations, so that when the 'shell' option is set
+ there, the 'shellpipe' option changes automatically, unless it was
+***************
+*** 6017,6024 ****
+
+ *'shellxquote'* *'sxq'*
+ 'shellxquote' 'sxq' string (default: "";
+! for Win32, when 'shell' contains "sh"
+! somewhere: "\""
+ for Unix, when using system(): "\"")
+ global
+ {not in Vi}
+--- 6043,6050 ----
+
+ *'shellxquote'* *'sxq'*
+ 'shellxquote' 'sxq' string (default: "";
+! for Win32, when 'shell' is cmd.exe or
+! contains "sh" somewhere: "\""
+ for Unix, when using system(): "\"")
+ global
+ {not in Vi}
+***************
+*** 6026,6036 ****
+ the "!" and ":!" commands. Includes the redirection. See
+ 'shellquote' to exclude the redirection. It's probably not useful
+ to set both options.
+! This is an empty string by default. Known to be useful for
+! third-party shells when using the Win32 version, such as the MKS Korn
+! Shell or bash, where it should be "\"". The default is adjusted
+! according the value of 'shell', to reduce the need to set this option
+! by the user. See |dos-shell|.
+ This option cannot be set from a |modeline| or in the |sandbox|, for
+ security reasons.
+
+--- 6052,6063 ----
+ the "!" and ":!" commands. Includes the redirection. See
+ 'shellquote' to exclude the redirection. It's probably not useful
+ to set both options.
+! This is an empty string by default on most systems, but is known to be
+! useful for on Win32 version, either for cmd.exe which automatically
+! strips off the first and last quote on a command, or 3rd-party shells
+! such as the MKS Korn Shell or bash, where it should be "\"". The
+! default is adjusted according the value of 'shell', to reduce the need
+! to set this option by the user. See |dos-shell|.
+ This option cannot be set from a |modeline| or in the |sandbox|, for
+ security reasons.
+
+*** ../vim-7.3.442/src/version.c 2012-02-12 20:13:55.000000000 +0100
+--- src/version.c 2012-02-12 23:18:40.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 443,
+ /**/
+
+--
+CVS sux, men don't like commitment
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.444 b/source/ap/vim/patches/7.3.444
new file mode 100644
index 000000000..64ed88bf1
--- /dev/null
+++ b/source/ap/vim/patches/7.3.444
@@ -0,0 +1,96 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.444
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.444
+Problem: ":all!" and ":sall!" give error E477, even though the
+ documentation says these are valid commands.
+Solution: Support the exclamation mark. (Hirohito Higashi)
+Files: src/ex_cmds.h, src/testdir/test31.in, src/testdir/test31.ok
+
+
+*** ../vim-7.3.443/src/ex_cmds.h 2011-06-20 05:02:53.000000000 +0200
+--- src/ex_cmds.h 2012-02-12 23:53:31.000000000 +0100
+***************
+*** 102,108 ****
+ EX(CMD_aboveleft, "aboveleft", ex_wrongmodifier,
+ NEEDARG|EXTRA|NOTRLCOM),
+ EX(CMD_all, "all", ex_all,
+! RANGE|NOTADR|COUNT|TRLBAR),
+ EX(CMD_amenu, "amenu", ex_menu,
+ RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
+ EX(CMD_anoremenu, "anoremenu", ex_menu,
+--- 102,108 ----
+ EX(CMD_aboveleft, "aboveleft", ex_wrongmodifier,
+ NEEDARG|EXTRA|NOTRLCOM),
+ EX(CMD_all, "all", ex_all,
+! BANG|RANGE|NOTADR|COUNT|TRLBAR),
+ EX(CMD_amenu, "amenu", ex_menu,
+ RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
+ EX(CMD_anoremenu, "anoremenu", ex_menu,
+***************
+*** 798,804 ****
+ EX(CMD_sargument, "sargument", ex_argument,
+ BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR),
+ EX(CMD_sall, "sall", ex_all,
+! RANGE|NOTADR|COUNT|TRLBAR),
+ EX(CMD_sandbox, "sandbox", ex_wrongmodifier,
+ NEEDARG|EXTRA|NOTRLCOM),
+ EX(CMD_saveas, "saveas", ex_write,
+--- 798,804 ----
+ EX(CMD_sargument, "sargument", ex_argument,
+ BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR),
+ EX(CMD_sall, "sall", ex_all,
+! BANG|RANGE|NOTADR|COUNT|TRLBAR),
+ EX(CMD_sandbox, "sandbox", ex_wrongmodifier,
+ NEEDARG|EXTRA|NOTRLCOM),
+ EX(CMD_saveas, "saveas", ex_write,
+*** ../vim-7.3.443/src/testdir/test31.in 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test31.in 2012-02-12 23:57:42.000000000 +0100
+***************
+*** 63,68 ****
+--- 63,74 ----
+ :" write "testtext 1"
+ A 3:close!
+ :w >>test.out
++ :set nohidden
++ :" test ":all!" hides changed buffer; write "testtext 2 2 2"
++ :sp Xtest4
++ GA 4:all!
++ :1wincmd w
++ :w >>test.out
+ :qa!
+ ENDTEST
+
+*** ../vim-7.3.443/src/testdir/test31.ok 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test31.ok 2012-02-13 00:00:13.000000000 +0100
+***************
+*** 9,11 ****
+--- 9,12 ----
+ testtext 1
+ testtext 3 3 3
+ testtext 1
++ testtext 2 2 2
+*** ../vim-7.3.443/src/version.c 2012-02-12 23:23:25.000000000 +0100
+--- src/version.c 2012-02-12 23:52:47.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 444,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+50. The last girl you picked up was only a jpeg.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.445 b/source/ap/vim/patches/7.3.445
new file mode 100644
index 000000000..8d7c337be
--- /dev/null
+++ b/source/ap/vim/patches/7.3.445
@@ -0,0 +1,199 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.445
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.445 (after 7.3.443)
+Problem: Can't properly escape commands for cmd.exe.
+Solution: Default 'shellxquote' to '('. Append ')' to make '(command)'.
+ No need to use "/s" for 'shellcmdflag'.
+Files: src/misc2.c, src/option.c, src/os_win32.c
+
+
+*** ../vim-7.3.444/src/misc2.c 2012-01-20 17:15:47.000000000 +0100
+--- src/misc2.c 2012-02-16 05:34:37.000000000 +0100
+***************
+*** 3230,3236 ****
+ {
+ STRCPY(ncmd, p_sxq);
+ STRCAT(ncmd, cmd);
+! STRCAT(ncmd, p_sxq);
+ retval = mch_call_shell(ncmd, opt);
+ vim_free(ncmd);
+ }
+--- 3230,3240 ----
+ {
+ STRCPY(ncmd, p_sxq);
+ STRCAT(ncmd, cmd);
+! /* When 'shellxquote' is ( append ).
+! * When 'shellxquote' is "( append )". */
+! STRCAT(ncmd, STRCMP(p_sxq, "(") == 0 ? (char_u *)")"
+! : STRCMP(p_sxq, "\"(") == 0 ? (char_u *)")\""
+! : p_sxq);
+ retval = mch_call_shell(ncmd, opt);
+ vim_free(ncmd);
+ }
+*** ../vim-7.3.444/src/option.c 2012-02-12 23:23:25.000000000 +0100
+--- src/option.c 2012-02-19 18:08:48.000000000 +0100
+***************
+*** 3933,3959 ****
+ * my path/to/echo" "my args to echo
+ * when executed.
+ *
+! * To avoid this, use the /s argument in addition to /c to force the
+! * stripping behavior, and also set shellxquote to automatically
+! * surround the entire command in quotes (which get stripped as
+! * noted).
+ */
+-
+- /* Set shellxquote default to add the quotes to be stripped. */
+ idx3 = findoption((char_u *)"sxq");
+ if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
+ {
+! p_sxq = (char_u *)"\"";
+ options[idx3].def_val[VI_DEFAULT] = p_sxq;
+ }
+
+- /* Set shellcmdflag default to always strip the quotes, note the order
+- * between /s and /c is important or cmd.exe will treat the /s as part
+- * of the command to be executed. */
+ idx3 = findoption((char_u *)"shcf");
+ if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
+ {
+! p_shcf = (char_u *)"/s /c";
+ options[idx3].def_val[VI_DEFAULT] = p_shcf;
+ }
+ }
+--- 3933,3954 ----
+ * my path/to/echo" "my args to echo
+ * when executed.
+ *
+! * To avoid this, set shellxquote to surround the command in
+! * parenthesis. This appears to make most commands work, without
+! * breaking commands that worked previously, such as
+! * '"path with spaces/cmd" "a&b"'.
+ */
+ idx3 = findoption((char_u *)"sxq");
+ if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
+ {
+! p_sxq = (char_u *)"(";
+ options[idx3].def_val[VI_DEFAULT] = p_sxq;
+ }
+
+ idx3 = findoption((char_u *)"shcf");
+ if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
+ {
+! p_shcf = (char_u *)"/c";
+ options[idx3].def_val[VI_DEFAULT] = p_shcf;
+ }
+ }
+*** ../vim-7.3.444/src/os_win32.c 2011-08-27 15:10:00.000000000 +0200
+--- src/os_win32.c 2012-02-19 18:11:23.000000000 +0100
+***************
+*** 3908,3915 ****
+ newcmd = lalloc(cmdlen, TRUE);
+ if (newcmd != NULL)
+ {
+! char_u *cmdbase = (*cmd == '"' ? cmd + 1 : cmd);
+
+ if ((STRNICMP(cmdbase, "start", 5) == 0) && vim_iswhite(cmdbase[5]))
+ {
+ STARTUPINFO si;
+--- 3908,3920 ----
+ newcmd = lalloc(cmdlen, TRUE);
+ if (newcmd != NULL)
+ {
+! char_u *cmdbase = cmd;
+
++ /* Skip a leading ", ( and "(. */
++ if (*cmdbase == '"' )
++ ++cmdbase;
++ if (*cmdbase == '(')
++ ++cmdbase;
+ if ((STRNICMP(cmdbase, "start", 5) == 0) && vim_iswhite(cmdbase[5]))
+ {
+ STARTUPINFO si;
+***************
+*** 3953,3968 ****
+ * empty, keep the double quotes around the command.
+ * Otherwise remove the double quotes, they aren't needed
+ * here, because we don't use a shell to run the command. */
+! if (*cmd == '"' && *p_sxq == NUL)
+ {
+! newcmd[0] = '"';
+! STRCPY(newcmd + 1, cmdbase);
+! }
+! else
+! {
+! STRCPY(newcmd, cmdbase);
+! if (*cmd == '"' && *newcmd != NUL)
+! newcmd[STRLEN(newcmd) - 1] = NUL;
+ }
+
+ /*
+--- 3958,3983 ----
+ * empty, keep the double quotes around the command.
+ * Otherwise remove the double quotes, they aren't needed
+ * here, because we don't use a shell to run the command. */
+! if (cmdbase > cmd)
+ {
+! if (STRNCMP(cmd, p_sxq, cmd - cmdbase) != 0)
+! {
+! STRCPY(newcmd, cmd);
+! }
+! else
+! {
+! char_u *p;
+!
+! STRCPY(newcmd, cmdbase);
+! /* Remove a trailing ", ) and )" if they have a match
+! * at the start of the command. */
+! p = newcmd + STRLEN(newcmd);
+! if (p > newcmd && p[-1] == '"' && *cmd == '"')
+! *--p = NUL;
+! if (p > newcmd && p[-1] == ')'
+! && (*cmd =='(' || cmd[1] == '('))
+! *--p = NUL;
+! }
+ }
+
+ /*
+***************
+*** 3970,3976 ****
+ * inherit our handles which causes unpleasant dangling swap
+ * files if we exit before the spawned process
+ */
+! if (CreateProcess (NULL, // Executable name
+ newcmd, // Command to execute
+ NULL, // Process security attributes
+ NULL, // Thread security attributes
+--- 3985,3991 ----
+ * inherit our handles which causes unpleasant dangling swap
+ * files if we exit before the spawned process
+ */
+! if (CreateProcess(NULL, // Executable name
+ newcmd, // Command to execute
+ NULL, // Process security attributes
+ NULL, // Thread security attributes
+*** ../vim-7.3.444/src/version.c 2012-02-13 00:01:38.000000000 +0100
+--- src/version.c 2012-02-19 18:01:46.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 445,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+80. At parties, you introduce your spouse as your "service provider."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.446 b/source/ap/vim/patches/7.3.446
new file mode 100644
index 000000000..59a2b254c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.446
@@ -0,0 +1,164 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.446
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.446 (after 7.3.445)
+Problem: Win32: External commands with special characters don't work.
+Solution: Add the 'shellxescape' option.
+Files: src/misc2.c, src/option.c, src/option.h, runtime/doc/options.txt
+
+
+*** ../vim-7.3.445/src/misc2.c 2012-02-19 18:19:24.000000000 +0100
+--- src/misc2.c 2012-02-20 22:05:22.000000000 +0100
+***************
+*** 3225,3235 ****
+ retval = mch_call_shell(cmd, opt);
+ else
+ {
+! ncmd = alloc((unsigned)(STRLEN(cmd) + STRLEN(p_sxq) * 2 + 1));
+ if (ncmd != NULL)
+ {
+ STRCPY(ncmd, p_sxq);
+! STRCAT(ncmd, cmd);
+ /* When 'shellxquote' is ( append ).
+ * When 'shellxquote' is "( append )". */
+ STRCAT(ncmd, STRCMP(p_sxq, "(") == 0 ? (char_u *)")"
+--- 3225,3243 ----
+ retval = mch_call_shell(cmd, opt);
+ else
+ {
+! char_u *ecmd = cmd;
+!
+! if (*p_sxe != NUL && STRCMP(p_sxq, "(") == 0)
+! {
+! ecmd = vim_strsave_escaped_ext(cmd, p_sxe, '^', FALSE);
+! if (ecmd == NULL)
+! ecmd = cmd;
+! }
+! ncmd = alloc((unsigned)(STRLEN(ecmd) + STRLEN(p_sxq) * 2 + 1));
+ if (ncmd != NULL)
+ {
+ STRCPY(ncmd, p_sxq);
+! STRCAT(ncmd, ecmd);
+ /* When 'shellxquote' is ( append ).
+ * When 'shellxquote' is "( append )". */
+ STRCAT(ncmd, STRCMP(p_sxq, "(") == 0 ? (char_u *)")"
+***************
+*** 3240,3245 ****
+--- 3248,3255 ----
+ }
+ else
+ retval = -1;
++ if (ecmd != cmd)
++ vim_free(ecmd);
+ }
+ #ifdef FEAT_GUI
+ --hold_gui_events;
+*** ../vim-7.3.445/src/option.c 2012-02-19 18:19:24.000000000 +0100
+--- src/option.c 2012-02-20 22:01:07.000000000 +0100
+***************
+*** 2273,2278 ****
+--- 2273,2287 ----
+ (char_u *)"",
+ #endif
+ (char_u *)0L} SCRIPTID_INIT},
++ {"shellxescape", "sxe", P_STRING|P_VI_DEF|P_SECURE,
++ (char_u *)&p_sxe, PV_NONE,
++ {
++ #if defined(MSDOS) || defined(WIN16) || defined(WIN3264)
++ (char_u *)"\"&|<>()@^",
++ #else
++ (char_u *)"",
++ #endif
++ (char_u *)0L} SCRIPTID_INIT},
+ {"shiftround", "sr", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_sr, PV_NONE,
+ {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+*** ../vim-7.3.445/src/option.h 2011-10-20 21:09:25.000000000 +0200
+--- src/option.h 2012-02-20 21:45:31.000000000 +0100
+***************
+*** 712,717 ****
+--- 712,718 ----
+ #endif
+ EXTERN char_u *p_shq; /* 'shellquote' */
+ EXTERN char_u *p_sxq; /* 'shellxquote' */
++ EXTERN char_u *p_sxe; /* 'shellxescape' */
+ EXTERN char_u *p_srr; /* 'shellredir' */
+ #ifdef AMIGA
+ EXTERN long p_st; /* 'shelltype' */
+*** ../vim-7.3.445/runtime/doc/options.txt 2012-02-12 23:23:25.000000000 +0100
+--- runtime/doc/options.txt 2012-02-20 22:09:19.000000000 +0100
+***************
+*** 6023,6030 ****
+
+ *'shellxquote'* *'sxq'*
+ 'shellxquote' 'sxq' string (default: "";
+! for Win32, when 'shell' is cmd.exe or
+! contains "sh" somewhere: "\""
+ for Unix, when using system(): "\"")
+ global
+ {not in Vi}
+--- 6042,6050 ----
+
+ *'shellxquote'* *'sxq'*
+ 'shellxquote' 'sxq' string (default: "";
+! for Win32, when 'shell' is cmd.exe: "("
+! for Win32, when 'shell' contains "sh"
+! somewhere: "\""
+ for Unix, when using system(): "\"")
+ global
+ {not in Vi}
+***************
+*** 6032,6037 ****
+--- 6052,6060 ----
+ the "!" and ":!" commands. Includes the redirection. See
+ 'shellquote' to exclude the redirection. It's probably not useful
+ to set both options.
++ When the value is '(' then ')' is appended. When the value is '"('
++ then ')"' is appended.
++ When the value is '(' then also see 'shellxescape'.
+ This is an empty string by default on most systems, but is known to be
+ useful for on Win32 version, either for cmd.exe which automatically
+ strips off the first and last quote on a command, or 3rd-party shells
+***************
+*** 6041,6046 ****
+--- 6064,6079 ----
+ This option cannot be set from a |modeline| or in the |sandbox|, for
+ security reasons.
+
++ *'shellxescape'* *'sxe'*
++ 'shellxescape' 'sxe' string (default: "";
++ for MS-DOS and MS-Windows: "\"&|<>()@^")
++ global
++ {not in Vi}
++ When 'shellxquote' is set to "(" then the characters listed in this
++ option will be escaped with a '^' character. This makes it possible
++ to execute most external commands with cmd.exe.
++
++
+ *'shiftround'* *'sr'* *'noshiftround'* *'nosr'*
+ 'shiftround' 'sr' boolean (default off)
+ global
+*** ../vim-7.3.445/src/version.c 2012-02-19 18:19:24.000000000 +0100
+--- src/version.c 2012-02-20 22:12:32.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 446,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+86. E-mail Deficiency Depression (EDD) forces you to e-mail yourself.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.447 b/source/ap/vim/patches/7.3.447
new file mode 100644
index 000000000..9c0af9f4d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.447
@@ -0,0 +1,377 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.447
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.447 (after 7.3.446)
+Problem: Win32: External commands with "start" do not work.
+Solution: Unescape part of the command. (Yasuhiro Matsumoto)
+Files: src/os_win32.c
+
+
+*** ../vim-7.3.446/src/os_win32.c 2012-02-19 18:19:24.000000000 +0100
+--- src/os_win32.c 2012-02-21 20:56:51.000000000 +0100
+***************
+*** 259,264 ****
+--- 259,287 ----
+ }
+
+ /*
++ * Unescape characters in "p" that appear in "escaped".
++ */
++ static void
++ unescape_shellxquote(char_u *p, char_u *escaped)
++ {
++ int l = STRLEN(p);
++ int n;
++
++ while (*p != NUL)
++ {
++ if (*p == '^' && vim_strchr(escaped, p[1]) != NULL)
++ mch_memmove(p, p + 1, l--);
++ #ifdef FEAT_MBYTE
++ n = (*mb_ptr2len)(p);
++ #else
++ n = 1;
++ #endif
++ p += n;
++ l -= n;
++ }
++ }
++
++ /*
+ * Load library "name".
+ */
+ HINSTANCE
+***************
+*** 3559,3564 ****
+--- 3582,3588 ----
+ garray_T ga;
+ int delay = 1;
+ DWORD buffer_off = 0; /* valid bytes in buffer[] */
++ char *p = NULL;
+
+ SECURITY_ATTRIBUTES saAttr;
+
+***************
+*** 3599,3607 ****
+ if (options & SHELL_READ)
+ ga_init2(&ga, 1, BUFLEN);
+
+ /* Now, run the command */
+ CreateProcess(NULL, /* Executable name */
+! cmd, /* Command to execute */
+ NULL, /* Process security attributes */
+ NULL, /* Thread security attributes */
+
+--- 3623,3640 ----
+ if (options & SHELL_READ)
+ ga_init2(&ga, 1, BUFLEN);
+
++ if (cmd != NULL)
++ {
++ p = (char *)vim_strsave((char_u *)cmd);
++ if (p != NULL)
++ unescape_shellxquote((char_u *)p, p_sxe);
++ else
++ p = cmd;
++ }
++
+ /* Now, run the command */
+ CreateProcess(NULL, /* Executable name */
+! p, /* Command to execute */
+ NULL, /* Process security attributes */
+ NULL, /* Thread security attributes */
+
+***************
+*** 3616,3621 ****
+--- 3649,3656 ----
+ &si, /* Startup information */
+ &pi); /* Process information */
+
++ if (p != cmd)
++ vim_free(p);
+
+ /* Close our unused side of the pipes */
+ CloseHandle(g_hChildStd_IN_Rd);
+***************
+*** 3898,4018 ****
+ else
+ {
+ /* we use "command" or "cmd" to start the shell; slow but easy */
+! char_u *newcmd;
+! long_u cmdlen = (
+! #ifdef FEAT_GUI_W32
+! (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) +
+! #endif
+! STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10);
+!
+! newcmd = lalloc(cmdlen, TRUE);
+! if (newcmd != NULL)
+! {
+! char_u *cmdbase = cmd;
+!
+! /* Skip a leading ", ( and "(. */
+! if (*cmdbase == '"' )
+! ++cmdbase;
+! if (*cmdbase == '(')
+! ++cmdbase;
+! if ((STRNICMP(cmdbase, "start", 5) == 0) && vim_iswhite(cmdbase[5]))
+! {
+! STARTUPINFO si;
+! PROCESS_INFORMATION pi;
+! DWORD flags = CREATE_NEW_CONSOLE;
+!
+! si.cb = sizeof(si);
+! si.lpReserved = NULL;
+! si.lpDesktop = NULL;
+! si.lpTitle = NULL;
+! si.dwFlags = 0;
+! si.cbReserved2 = 0;
+! si.lpReserved2 = NULL;
+!
+! cmdbase = skipwhite(cmdbase + 5);
+! if ((STRNICMP(cmdbase, "/min", 4) == 0)
+! && vim_iswhite(cmdbase[4]))
+! {
+! cmdbase = skipwhite(cmdbase + 4);
+! si.dwFlags = STARTF_USESHOWWINDOW;
+! si.wShowWindow = SW_SHOWMINNOACTIVE;
+! }
+! else if ((STRNICMP(cmdbase, "/b", 2) == 0)
+! && vim_iswhite(cmdbase[2]))
+! {
+! cmdbase = skipwhite(cmdbase + 2);
+! flags = CREATE_NO_WINDOW;
+! si.dwFlags = STARTF_USESTDHANDLES;
+! si.hStdInput = CreateFile("\\\\.\\NUL", // File name
+! GENERIC_READ, // Access flags
+! 0, // Share flags
+! NULL, // Security att.
+! OPEN_EXISTING, // Open flags
+! FILE_ATTRIBUTE_NORMAL, // File att.
+! NULL); // Temp file
+! si.hStdOutput = si.hStdInput;
+! si.hStdError = si.hStdInput;
+! }
+
+! /* When the command is in double quotes, but 'shellxquote' is
+! * empty, keep the double quotes around the command.
+! * Otherwise remove the double quotes, they aren't needed
+! * here, because we don't use a shell to run the command. */
+! if (cmdbase > cmd)
+! {
+! if (STRNCMP(cmd, p_sxq, cmd - cmdbase) != 0)
+! {
+! STRCPY(newcmd, cmd);
+! }
+! else
+! {
+! char_u *p;
+
+! STRCPY(newcmd, cmdbase);
+! /* Remove a trailing ", ) and )" if they have a match
+! * at the start of the command. */
+! p = newcmd + STRLEN(newcmd);
+! if (p > newcmd && p[-1] == '"' && *cmd == '"')
+! *--p = NUL;
+! if (p > newcmd && p[-1] == ')'
+! && (*cmd =='(' || cmd[1] == '('))
+! *--p = NUL;
+! }
+! }
+
+! /*
+! * Now, start the command as a process, so that it doesn't
+! * inherit our handles which causes unpleasant dangling swap
+! * files if we exit before the spawned process
+! */
+! if (CreateProcess(NULL, // Executable name
+! newcmd, // Command to execute
+! NULL, // Process security attributes
+! NULL, // Thread security attributes
+! FALSE, // Inherit handles
+! flags, // Creation flags
+! NULL, // Environment
+! NULL, // Current directory
+! &si, // Startup information
+! &pi)) // Process information
+! x = 0;
+! else
+! {
+! x = -1;
+ #ifdef FEAT_GUI_W32
+! EMSG(_("E371: Command not found"));
+ #endif
+- }
+- if (si.hStdInput != NULL)
+- {
+- /* Close the handle to \\.\NUL */
+- CloseHandle(si.hStdInput);
+- }
+- /* Close the handles to the subprocess, so that it goes away */
+- CloseHandle(pi.hThread);
+- CloseHandle(pi.hProcess);
+ }
+! else
+ {
+ #if defined(FEAT_GUI_W32)
+ if (need_vimrun_warning)
+--- 3933,4048 ----
+ else
+ {
+ /* we use "command" or "cmd" to start the shell; slow but easy */
+! char_u *cmdbase = cmd;
+
+! /* Skip a leading ", ( and "(. */
+! if (*cmdbase == '"' )
+! ++cmdbase;
+! if (*cmdbase == '(')
+! ++cmdbase;
+!
+! if ((STRNICMP(cmdbase, "start", 5) == 0) && vim_iswhite(cmdbase[5]))
+! {
+! STARTUPINFO si;
+! PROCESS_INFORMATION pi;
+! DWORD flags = CREATE_NEW_CONSOLE;
+! char_u *p;
+!
+! si.cb = sizeof(si);
+! si.lpReserved = NULL;
+! si.lpDesktop = NULL;
+! si.lpTitle = NULL;
+! si.dwFlags = 0;
+! si.cbReserved2 = 0;
+! si.lpReserved2 = NULL;
+!
+! cmdbase = skipwhite(cmdbase + 5);
+! if ((STRNICMP(cmdbase, "/min", 4) == 0)
+! && vim_iswhite(cmdbase[4]))
+! {
+! cmdbase = skipwhite(cmdbase + 4);
+! si.dwFlags = STARTF_USESHOWWINDOW;
+! si.wShowWindow = SW_SHOWMINNOACTIVE;
+! }
+! else if ((STRNICMP(cmdbase, "/b", 2) == 0)
+! && vim_iswhite(cmdbase[2]))
+! {
+! cmdbase = skipwhite(cmdbase + 2);
+! flags = CREATE_NO_WINDOW;
+! si.dwFlags = STARTF_USESTDHANDLES;
+! si.hStdInput = CreateFile("\\\\.\\NUL", // File name
+! GENERIC_READ, // Access flags
+! 0, // Share flags
+! NULL, // Security att.
+! OPEN_EXISTING, // Open flags
+! FILE_ATTRIBUTE_NORMAL, // File att.
+! NULL); // Temp file
+! si.hStdOutput = si.hStdInput;
+! si.hStdError = si.hStdInput;
+! }
+!
+! /* Remove a trailing ", ) and )" if they have a match
+! * at the start of the command. */
+! if (cmdbase > cmd)
+! {
+! p = cmdbase + STRLEN(cmdbase);
+! if (p > cmdbase && p[-1] == '"' && *cmd == '"')
+! *--p = NUL;
+! if (p > cmdbase && p[-1] == ')'
+! && (*cmd =='(' || cmd[1] == '('))
+! *--p = NUL;
+! }
+
+! /*
+! * Unescape characters in shellxescape. This is workaround for
+! * /b option. Only redirect character should be unescaped.
+! */
+! unescape_shellxquote(cmdbase,
+! (flags & CREATE_NEW_CONSOLE) ? p_sxe : "<>");
+
+! /*
+! * Now, start the command as a process, so that it doesn't
+! * inherit our handles which causes unpleasant dangling swap
+! * files if we exit before the spawned process
+! */
+! if (CreateProcess(NULL, // Executable name
+! cmdbase, // Command to execute
+! NULL, // Process security attributes
+! NULL, // Thread security attributes
+! FALSE, // Inherit handles
+! flags, // Creation flags
+! NULL, // Environment
+! NULL, // Current directory
+! &si, // Startup information
+! &pi)) // Process information
+! x = 0;
+! else
+! {
+! x = -1;
+ #ifdef FEAT_GUI_W32
+! EMSG(_("E371: Command not found"));
+ #endif
+ }
+! if (si.hStdInput != NULL)
+! {
+! /* Close the handle to \\.\NUL */
+! CloseHandle(si.hStdInput);
+! }
+! /* Close the handles to the subprocess, so that it goes away */
+! CloseHandle(pi.hThread);
+! CloseHandle(pi.hProcess);
+! }
+! else
+! {
+! char_u *newcmd;
+! long_u cmdlen = (
+! #ifdef FEAT_GUI_W32
+! (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) +
+! #endif
+! STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10);
+!
+! newcmd = lalloc(cmdlen, TRUE);
+! if (newcmd != NULL)
+ {
+ #if defined(FEAT_GUI_W32)
+ if (need_vimrun_warning)
+***************
+*** 4038,4045 ****
+ vim_snprintf((char *)newcmd, cmdlen, "%s %s %s",
+ p_sh, p_shcf, cmd);
+ x = mch_system((char *)newcmd, options);
+ }
+- vim_free(newcmd);
+ }
+ }
+
+--- 4068,4075 ----
+ vim_snprintf((char *)newcmd, cmdlen, "%s %s %s",
+ p_sh, p_shcf, cmd);
+ x = mch_system((char *)newcmd, options);
++ vim_free(newcmd);
+ }
+ }
+ }
+
+*** ../vim-7.3.446/src/version.c 2012-02-20 22:18:23.000000000 +0100
+--- src/version.c 2012-02-21 21:20:05.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 447,
+ /**/
+
+--
+From "know your smileys":
+ :----} You lie like Pinocchio
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.448 b/source/ap/vim/patches/7.3.448
new file mode 100644
index 000000000..91d8f26e0
--- /dev/null
+++ b/source/ap/vim/patches/7.3.448
@@ -0,0 +1,180 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.448
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.448 (after 7.3.447)
+Problem: Win32: Still a problem with "!start /b".
+Solution: Escape only '|'. (Yasuhiro Matsumoto)
+Files: src/os_win32.c
+
+
+*** ../vim-7.3.447/src/os_win32.c 2012-02-21 21:22:40.000000000 +0100
+--- src/os_win32.c 2012-02-22 13:06:55.000000000 +0100
+***************
+*** 3933,3939 ****
+ else
+ {
+ /* we use "command" or "cmd" to start the shell; slow but easy */
+! char_u *cmdbase = cmd;
+
+ /* Skip a leading ", ( and "(. */
+ if (*cmdbase == '"' )
+--- 3933,3941 ----
+ else
+ {
+ /* we use "command" or "cmd" to start the shell; slow but easy */
+! char_u *newcmd = NULL;
+! char_u *cmdbase = cmd;
+! long_u cmdlen;
+
+ /* Skip a leading ", ( and "(. */
+ if (*cmdbase == '"' )
+***************
+*** 3971,3982 ****
+ flags = CREATE_NO_WINDOW;
+ si.dwFlags = STARTF_USESTDHANDLES;
+ si.hStdInput = CreateFile("\\\\.\\NUL", // File name
+! GENERIC_READ, // Access flags
+ 0, // Share flags
+! NULL, // Security att.
+! OPEN_EXISTING, // Open flags
+! FILE_ATTRIBUTE_NORMAL, // File att.
+! NULL); // Temp file
+ si.hStdOutput = si.hStdInput;
+ si.hStdError = si.hStdInput;
+ }
+--- 3973,3984 ----
+ flags = CREATE_NO_WINDOW;
+ si.dwFlags = STARTF_USESTDHANDLES;
+ si.hStdInput = CreateFile("\\\\.\\NUL", // File name
+! GENERIC_READ, // Access flags
+ 0, // Share flags
+! NULL, // Security att.
+! OPEN_EXISTING, // Open flags
+! FILE_ATTRIBUTE_NORMAL, // File att.
+! NULL); // Temp file
+ si.hStdOutput = si.hStdInput;
+ si.hStdError = si.hStdInput;
+ }
+***************
+*** 3993,4004 ****
+ *--p = NUL;
+ }
+
+ /*
+! * Unescape characters in shellxescape. This is workaround for
+! * /b option. Only redirect character should be unescaped.
+ */
+! unescape_shellxquote(cmdbase,
+! (flags & CREATE_NEW_CONSOLE) ? p_sxe : "<>");
+
+ /*
+ * Now, start the command as a process, so that it doesn't
+--- 3995,4030 ----
+ *--p = NUL;
+ }
+
++ newcmd = cmdbase;
++ unescape_shellxquote(cmdbase, p_sxe);
++
+ /*
+! * If creating new console, arguments are passed to the
+! * 'cmd.exe' as-is. If it's not, arguments are not treated
+! * correctly for current 'cmd.exe'. So unescape characters in
+! * shellxescape except '|' for avoiding to be treated as
+! * argument to them. Pass the arguments to sub-shell.
+ */
+! if (flags != CREATE_NEW_CONSOLE)
+! {
+! char_u *subcmd;
+! char_u *cmd_shell = default_shell();
+!
+! subcmd = vim_strsave_escaped_ext(cmdbase, "|", '^', FALSE);
+! if (subcmd != NULL)
+! {
+! /* make "cmd.exe /c arguments" */
+! cmdlen = STRLEN(cmd_shell) + STRLEN(subcmd) + 5;
+! vim_free(subcmd);
+!
+! newcmd = lalloc(cmdlen, TRUE);
+! if (newcmd != NULL)
+! vim_snprintf((char *)newcmd, cmdlen, "%s /c %s",
+! default_shell, subcmd);
+! else
+! newcmd = cmdbase;
+! }
+! }
+
+ /*
+ * Now, start the command as a process, so that it doesn't
+***************
+*** 4006,4012 ****
+ * files if we exit before the spawned process
+ */
+ if (CreateProcess(NULL, // Executable name
+! cmdbase, // Command to execute
+ NULL, // Process security attributes
+ NULL, // Thread security attributes
+ FALSE, // Inherit handles
+--- 4032,4038 ----
+ * files if we exit before the spawned process
+ */
+ if (CreateProcess(NULL, // Executable name
+! newcmd, // Command to execute
+ NULL, // Process security attributes
+ NULL, // Thread security attributes
+ FALSE, // Inherit handles
+***************
+*** 4023,4028 ****
+--- 4049,4058 ----
+ EMSG(_("E371: Command not found"));
+ #endif
+ }
++
++ if (newcmd != cmdbase)
++ vim_free(newcmd);
++
+ if (si.hStdInput != NULL)
+ {
+ /* Close the handle to \\.\NUL */
+***************
+*** 4034,4041 ****
+ }
+ else
+ {
+! char_u *newcmd;
+! long_u cmdlen = (
+ #ifdef FEAT_GUI_W32
+ (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) +
+ #endif
+--- 4064,4070 ----
+ }
+ else
+ {
+! cmdlen = (
+ #ifdef FEAT_GUI_W32
+ (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) +
+ #endif
+*** ../vim-7.3.447/src/version.c 2012-02-21 21:22:40.000000000 +0100
+--- src/version.c 2012-02-22 13:02:15.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 448,
+ /**/
+
+--
+From "know your smileys":
+ ~#:-( I just washed my hair, and I can't do nuthin' with it.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.449 b/source/ap/vim/patches/7.3.449
new file mode 100644
index 000000000..9b5bdea85
--- /dev/null
+++ b/source/ap/vim/patches/7.3.449
@@ -0,0 +1,455 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.449
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.449
+Problem: Crash when a BufWinLeave autocommand closes the only other window.
+ (Daniel Hunt)
+Solution: Abort closing a buffer when it becomes the only one.
+Files: src/buffer.c, src/proto/buffer.pro, src/ex_cmds.c, src/ex_getln.c,
+ src/misc2.c, src/quickfix.c, src/window.c, src/proto/window.pro
+
+
+*** ../vim-7.3.448/src/buffer.c 2012-01-20 20:44:38.000000000 +0100
+--- src/buffer.c 2012-02-22 14:50:42.000000000 +0100
+***************
+*** 64,69 ****
+--- 64,72 ----
+ static char *msg_loclist = N_("[Location List]");
+ static char *msg_qflist = N_("[Quickfix List]");
+ #endif
++ #ifdef FEAT_AUTOCMD
++ static char *e_auabort = N_("E855: Autocommands caused command to abort");
++ #endif
+
+ /*
+ * Open current buffer, that is: open the memfile and read the file into
+***************
+*** 96,102 ****
+ * There MUST be a memfile, otherwise we can't do anything
+ * If we can't create one for the current buffer, take another buffer
+ */
+! close_buffer(NULL, curbuf, 0);
+ for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next)
+ if (curbuf->b_ml.ml_mfp != NULL)
+ break;
+--- 99,105 ----
+ * There MUST be a memfile, otherwise we can't do anything
+ * If we can't create one for the current buffer, take another buffer
+ */
+! close_buffer(NULL, curbuf, 0, FALSE);
+ for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next)
+ if (curbuf->b_ml.ml_mfp != NULL)
+ break;
+***************
+*** 316,327 ****
+ * get a new buffer very soon!
+ *
+ * The 'bufhidden' option can force freeing and deleting.
+ */
+ void
+! close_buffer(win, buf, action)
+ win_T *win; /* if not NULL, set b_last_cursor */
+ buf_T *buf;
+ int action;
+ {
+ #ifdef FEAT_AUTOCMD
+ int is_curbuf;
+--- 319,335 ----
+ * get a new buffer very soon!
+ *
+ * The 'bufhidden' option can force freeing and deleting.
++ *
++ * When "abort_if_last" is TRUE then do not close the buffer if autocommands
++ * cause there to be only one window with this buffer. e.g. when ":quit" is
++ * supposed to close the window but autocommands close all other windows.
+ */
+ void
+! close_buffer(win, buf, action, abort_if_last)
+ win_T *win; /* if not NULL, set b_last_cursor */
+ buf_T *buf;
+ int action;
++ int abort_if_last;
+ {
+ #ifdef FEAT_AUTOCMD
+ int is_curbuf;
+***************
+*** 371,378 ****
+ {
+ apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, buf->b_fname,
+ FALSE, buf);
+! if (!buf_valid(buf)) /* autocommands may delete the buffer */
+ return;
+
+ /* When the buffer becomes hidden, but is not unloaded, trigger
+ * BufHidden */
+--- 379,390 ----
+ {
+ apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, buf->b_fname,
+ FALSE, buf);
+! /* Return if autocommands deleted the buffer or made it the only one. */
+! if (!buf_valid(buf) || (abort_if_last && one_window()))
+! {
+! EMSG(_(e_auabort));
+ return;
++ }
+
+ /* When the buffer becomes hidden, but is not unloaded, trigger
+ * BufHidden */
+***************
+*** 380,387 ****
+ {
+ apply_autocmds(EVENT_BUFHIDDEN, buf->b_fname, buf->b_fname,
+ FALSE, buf);
+! if (!buf_valid(buf)) /* autocmds may delete the buffer */
+ return;
+ }
+ # ifdef FEAT_EVAL
+ if (aborting()) /* autocmds may abort script processing */
+--- 392,404 ----
+ {
+ apply_autocmds(EVENT_BUFHIDDEN, buf->b_fname, buf->b_fname,
+ FALSE, buf);
+! /* Return if autocommands deleted the buffer or made it the only
+! * one. */
+! if (!buf_valid(buf) || (abort_if_last && one_window()))
+! {
+! EMSG(_(e_auabort));
+ return;
++ }
+ }
+ # ifdef FEAT_EVAL
+ if (aborting()) /* autocmds may abort script processing */
+***************
+*** 775,781 ****
+ * open a new, empty buffer. */
+ swap_exists_action = SEA_NONE; /* don't want it again */
+ swap_exists_did_quit = TRUE;
+! close_buffer(curwin, curbuf, DOBUF_UNLOAD);
+ if (!buf_valid(old_curbuf) || old_curbuf == curbuf)
+ old_curbuf = buflist_new(NULL, NULL, 1L, BLN_CURBUF | BLN_LISTED);
+ if (old_curbuf != NULL)
+--- 792,798 ----
+ * open a new, empty buffer. */
+ swap_exists_action = SEA_NONE; /* don't want it again */
+ swap_exists_did_quit = TRUE;
+! close_buffer(curwin, curbuf, DOBUF_UNLOAD, FALSE);
+ if (!buf_valid(old_curbuf) || old_curbuf == curbuf)
+ old_curbuf = buflist_new(NULL, NULL, 1L, BLN_CURBUF | BLN_LISTED);
+ if (old_curbuf != NULL)
+***************
+*** 1122,1128 ****
+ * if the buffer still exists.
+ */
+ if (buf != curbuf && buf_valid(buf) && buf->b_nwindows == 0)
+! close_buffer(NULL, buf, action);
+ return retval;
+ }
+
+--- 1139,1145 ----
+ * if the buffer still exists.
+ */
+ if (buf != curbuf && buf_valid(buf) && buf->b_nwindows == 0)
+! close_buffer(NULL, buf, action, FALSE);
+ return retval;
+ }
+
+***************
+*** 1146,1152 ****
+ close_windows(buf, FALSE);
+ #endif
+ if (buf != curbuf && buf_valid(buf) && buf->b_nwindows <= 0)
+! close_buffer(NULL, buf, action);
+ return OK;
+ }
+
+--- 1163,1169 ----
+ close_windows(buf, FALSE);
+ #endif
+ if (buf != curbuf && buf_valid(buf) && buf->b_nwindows <= 0)
+! close_buffer(NULL, buf, action, FALSE);
+ return OK;
+ }
+
+***************
+*** 1378,1384 ****
+ close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf,
+ unload ? action : (action == DOBUF_GOTO
+ && !P_HID(prevbuf)
+! && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0);
+ }
+ }
+ #ifdef FEAT_AUTOCMD
+--- 1395,1401 ----
+ close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf,
+ unload ? action : (action == DOBUF_GOTO
+ && !P_HID(prevbuf)
+! && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE);
+ }
+ }
+ #ifdef FEAT_AUTOCMD
+***************
+*** 2708,2714 ****
+ vim_free(ffname);
+ return FAIL;
+ }
+! close_buffer(NULL, obuf, DOBUF_WIPE); /* delete from the list */
+ }
+ sfname = vim_strsave(sfname);
+ if (ffname == NULL || sfname == NULL)
+--- 2725,2732 ----
+ vim_free(ffname);
+ return FAIL;
+ }
+! /* delete from the list */
+! close_buffer(NULL, obuf, DOBUF_WIPE, FALSE);
+ }
+ sfname = vim_strsave(sfname);
+ if (ffname == NULL || sfname == NULL)
+***************
+*** 5638,5644 ****
+ if (!aucmd) /* Don't trigger BufDelete autocommands here. */
+ block_autocmds();
+ #endif
+! close_buffer(NULL, buf, DOBUF_WIPE);
+ #ifdef FEAT_AUTOCMD
+ if (!aucmd)
+ unblock_autocmds();
+--- 5656,5662 ----
+ if (!aucmd) /* Don't trigger BufDelete autocommands here. */
+ block_autocmds();
+ #endif
+! close_buffer(NULL, buf, DOBUF_WIPE, FALSE);
+ #ifdef FEAT_AUTOCMD
+ if (!aucmd)
+ unblock_autocmds();
+*** ../vim-7.3.448/src/proto/buffer.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/buffer.pro 2012-02-22 14:04:26.000000000 +0100
+***************
+*** 1,7 ****
+ /* buffer.c */
+ int open_buffer __ARGS((int read_stdin, exarg_T *eap, int flags));
+ int buf_valid __ARGS((buf_T *buf));
+! void close_buffer __ARGS((win_T *win, buf_T *buf, int action));
+ void buf_clear_file __ARGS((buf_T *buf));
+ void buf_freeall __ARGS((buf_T *buf, int flags));
+ void goto_buffer __ARGS((exarg_T *eap, int start, int dir, int count));
+--- 1,7 ----
+ /* buffer.c */
+ int open_buffer __ARGS((int read_stdin, exarg_T *eap, int flags));
+ int buf_valid __ARGS((buf_T *buf));
+! void close_buffer __ARGS((win_T *win, buf_T *buf, int action, int abort_if_last));
+ void buf_clear_file __ARGS((buf_T *buf));
+ void buf_freeall __ARGS((buf_T *buf, int flags));
+ void goto_buffer __ARGS((exarg_T *eap, int start, int dir, int count));
+*** ../vim-7.3.448/src/ex_cmds.c 2011-12-30 15:01:55.000000000 +0100
+--- src/ex_cmds.c 2012-02-22 14:00:32.000000000 +0100
+***************
+*** 3387,3393 ****
+ /* close the link to the current buffer */
+ u_sync(FALSE);
+ close_buffer(oldwin, curbuf,
+! (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD);
+
+ #ifdef FEAT_AUTOCMD
+ /* Autocommands may open a new window and leave oldwin open
+--- 3387,3393 ----
+ /* close the link to the current buffer */
+ u_sync(FALSE);
+ close_buffer(oldwin, curbuf,
+! (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD, FALSE);
+
+ #ifdef FEAT_AUTOCMD
+ /* Autocommands may open a new window and leave oldwin open
+*** ../vim-7.3.448/src/ex_getln.c 2012-02-04 22:44:27.000000000 +0100
+--- src/ex_getln.c 2012-02-22 14:01:56.000000000 +0100
+***************
+*** 6443,6449 ****
+ /* win_close() may have already wiped the buffer when 'bh' is
+ * set to 'wipe' */
+ if (buf_valid(bp))
+! close_buffer(NULL, bp, DOBUF_WIPE);
+
+ /* Restore window sizes. */
+ win_size_restore(&winsizes);
+--- 6443,6449 ----
+ /* win_close() may have already wiped the buffer when 'bh' is
+ * set to 'wipe' */
+ if (buf_valid(bp))
+! close_buffer(NULL, bp, DOBUF_WIPE, FALSE);
+
+ /* Restore window sizes. */
+ win_size_restore(&winsizes);
+*** ../vim-7.3.448/src/misc2.c 2012-02-20 22:18:22.000000000 +0100
+--- src/misc2.c 2012-02-22 14:02:12.000000000 +0100
+***************
+*** 1173,1179 ****
+ for (buf = firstbuf; buf != NULL; )
+ {
+ nextbuf = buf->b_next;
+! close_buffer(NULL, buf, DOBUF_WIPE);
+ if (buf_valid(buf))
+ buf = nextbuf; /* didn't work, try next one */
+ else
+--- 1173,1179 ----
+ for (buf = firstbuf; buf != NULL; )
+ {
+ nextbuf = buf->b_next;
+! close_buffer(NULL, buf, DOBUF_WIPE, FALSE);
+ if (buf_valid(buf))
+ buf = nextbuf; /* didn't work, try next one */
+ else
+*** ../vim-7.3.448/src/quickfix.c 2012-01-20 13:39:03.000000000 +0100
+--- src/quickfix.c 2012-02-22 14:02:20.000000000 +0100
+***************
+*** 3565,3571 ****
+ buf_T *buf;
+ {
+ if (curbuf != buf) /* safety check */
+! close_buffer(NULL, buf, DOBUF_UNLOAD);
+ }
+
+ #if defined(FEAT_EVAL) || defined(PROTO)
+--- 3565,3571 ----
+ buf_T *buf;
+ {
+ if (curbuf != buf) /* safety check */
+! close_buffer(NULL, buf, DOBUF_UNLOAD, FALSE);
+ }
+
+ #if defined(FEAT_EVAL) || defined(PROTO)
+*** ../vim-7.3.448/src/window.c 2012-01-10 22:26:12.000000000 +0100
+--- src/window.c 2012-02-22 14:08:13.000000000 +0100
+***************
+*** 23,29 ****
+ static void win_totop __ARGS((int size, int flags));
+ static void win_equal_rec __ARGS((win_T *next_curwin, int current, frame_T *topfr, int dir, int col, int row, int width, int height));
+ static int last_window __ARGS((void));
+- static int one_window __ARGS((void));
+ static win_T *win_free_mem __ARGS((win_T *win, int *dirp, tabpage_T *tp));
+ static frame_T *win_altframe __ARGS((win_T *win, tabpage_T *tp));
+ static tabpage_T *alt_tabpage __ARGS((void));
+--- 23,28 ----
+***************
+*** 2083,2089 ****
+ * Return TRUE if there is only one window other than "aucmd_win" in the
+ * current tab page.
+ */
+! static int
+ one_window()
+ {
+ #ifdef FEAT_AUTOCMD
+--- 2082,2088 ----
+ * Return TRUE if there is only one window other than "aucmd_win" in the
+ * current tab page.
+ */
+! int
+ one_window()
+ {
+ #ifdef FEAT_AUTOCMD
+***************
+*** 2109,2115 ****
+ * Close window "win". Only works for the current tab page.
+ * If "free_buf" is TRUE related buffer may be unloaded.
+ *
+! * called by :quit, :close, :xit, :wq and findtag()
+ */
+ void
+ win_close(win, free_buf)
+--- 2108,2114 ----
+ * Close window "win". Only works for the current tab page.
+ * If "free_buf" is TRUE related buffer may be unloaded.
+ *
+! * Called by :quit, :close, :xit, :wq and findtag().
+ */
+ void
+ win_close(win, free_buf)
+***************
+*** 2222,2228 ****
+ * Close the link to the buffer.
+ */
+ if (win->w_buffer != NULL)
+! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0);
+
+ /* Autocommands may have closed the window already, or closed the only
+ * other window or moved to another tab page. */
+--- 2221,2227 ----
+ * Close the link to the buffer.
+ */
+ if (win->w_buffer != NULL)
+! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, TRUE);
+
+ /* Autocommands may have closed the window already, or closed the only
+ * other window or moved to another tab page. */
+***************
+*** 2328,2334 ****
+ int free_tp = FALSE;
+
+ /* Close the link to the buffer. */
+! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0);
+
+ /* Careful: Autocommands may have closed the tab page or made it the
+ * current tab page. */
+--- 2327,2333 ----
+ int free_tp = FALSE;
+
+ /* Close the link to the buffer. */
+! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, FALSE);
+
+ /* Careful: Autocommands may have closed the tab page or made it the
+ * current tab page. */
+*** ../vim-7.3.448/src/proto/window.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/window.pro 2012-02-22 14:08:28.000000000 +0100
+***************
+*** 1,13 ****
+ /* window.c */
+ void do_window __ARGS((int nchar, long Prenum, int xchar));
+ int win_split __ARGS((int size, int flags));
+! int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir));
+ int win_valid __ARGS((win_T *win));
+ int win_count __ARGS((void));
+ int make_windows __ARGS((int count, int vertical));
+ void win_move_after __ARGS((win_T *win1, win_T *win2));
+ void win_equal __ARGS((win_T *next_curwin, int current, int dir));
+ void close_windows __ARGS((buf_T *buf, int keep_curwin));
+ void win_close __ARGS((win_T *win, int free_buf));
+ void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp));
+ void win_free_all __ARGS((void));
+--- 1,14 ----
+ /* window.c */
+ void do_window __ARGS((int nchar, long Prenum, int xchar));
+ int win_split __ARGS((int size, int flags));
+! int win_split_ins __ARGS((int size, int flags, win_T *new_wp, int dir));
+ int win_valid __ARGS((win_T *win));
+ int win_count __ARGS((void));
+ int make_windows __ARGS((int count, int vertical));
+ void win_move_after __ARGS((win_T *win1, win_T *win2));
+ void win_equal __ARGS((win_T *next_curwin, int current, int dir));
+ void close_windows __ARGS((buf_T *buf, int keep_curwin));
++ int one_window __ARGS((void));
+ void win_close __ARGS((win_T *win, int free_buf));
+ void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp));
+ void win_free_all __ARGS((void));
+*** ../vim-7.3.448/src/version.c 2012-02-22 13:07:02.000000000 +0100
+--- src/version.c 2012-02-22 14:55:21.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 449,
+ /**/
+
+--
+From "know your smileys":
+ :-)-O Smiling doctor with stethoscope
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.450 b/source/ap/vim/patches/7.3.450
new file mode 100644
index 000000000..7112668f4
--- /dev/null
+++ b/source/ap/vim/patches/7.3.450
@@ -0,0 +1,81 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.450
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.450 (after 7.3.448)
+Problem: Win32: Still a problem with "!start /b".
+Solution: Fix pointer use. (Yasuhiro Matsumoto)
+Files: src/os_win32.c
+
+
+*** ../vim-7.3.449/src/os_win32.c 2012-02-22 13:07:02.000000000 +0100
+--- src/os_win32.c 2012-02-22 15:29:56.000000000 +0100
+***************
+*** 4008,4028 ****
+ if (flags != CREATE_NEW_CONSOLE)
+ {
+ char_u *subcmd;
+! char_u *cmd_shell = default_shell();
+
+ subcmd = vim_strsave_escaped_ext(cmdbase, "|", '^', FALSE);
+ if (subcmd != NULL)
+ {
+ /* make "cmd.exe /c arguments" */
+ cmdlen = STRLEN(cmd_shell) + STRLEN(subcmd) + 5;
+- vim_free(subcmd);
+-
+ newcmd = lalloc(cmdlen, TRUE);
+ if (newcmd != NULL)
+ vim_snprintf((char *)newcmd, cmdlen, "%s /c %s",
+! default_shell, subcmd);
+ else
+ newcmd = cmdbase;
+ }
+ }
+
+--- 4008,4030 ----
+ if (flags != CREATE_NEW_CONSOLE)
+ {
+ char_u *subcmd;
+! char_u *cmd_shell = mch_getenv("COMSPEC");
+!
+! if (cmd_shell == NULL || *cmd_shell == NUL)
+! cmd_shell = default_shell();
+
+ subcmd = vim_strsave_escaped_ext(cmdbase, "|", '^', FALSE);
+ if (subcmd != NULL)
+ {
+ /* make "cmd.exe /c arguments" */
+ cmdlen = STRLEN(cmd_shell) + STRLEN(subcmd) + 5;
+ newcmd = lalloc(cmdlen, TRUE);
+ if (newcmd != NULL)
+ vim_snprintf((char *)newcmd, cmdlen, "%s /c %s",
+! cmd_shell, subcmd);
+ else
+ newcmd = cmdbase;
++ vim_free(subcmd);
+ }
+ }
+
+*** ../vim-7.3.449/src/version.c 2012-02-22 14:58:24.000000000 +0100
+--- src/version.c 2012-02-22 15:33:53.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 450,
+ /**/
+
+--
+You are only young once, but you can stay immature indefinitely.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.451 b/source/ap/vim/patches/7.3.451
new file mode 100644
index 000000000..25d1b0467
--- /dev/null
+++ b/source/ap/vim/patches/7.3.451
@@ -0,0 +1,363 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.451
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.451
+Problem: Tcl doesn't work on 64 bit MS-Windows.
+Solution: Make it work. (Dave Bodenstab)
+Files: src/Make_mvc.mak, src/if_tcl.c
+
+
+*** ../vim-7.3.450/src/Make_mvc.mak 2012-02-12 01:55:50.000000000 +0100
+--- src/Make_mvc.mak 2012-02-22 15:43:01.000000000 +0100
+***************
+*** 616,622 ****
+ -DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\"
+ TCL_OBJ = $(OUTDIR)\if_tcl.obj
+ TCL_INC = /I "$(TCL)\Include" /I "$(TCL)"
+! TCL_LIB = $(TCL)\lib\tclstub$(TCL_VER).lib
+ !else
+ CFLAGS = $(CFLAGS) -DFEAT_TCL
+ TCL_OBJ = $(OUTDIR)\if_tcl.obj
+--- 616,622 ----
+ -DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\"
+ TCL_OBJ = $(OUTDIR)\if_tcl.obj
+ TCL_INC = /I "$(TCL)\Include" /I "$(TCL)"
+! TCL_LIB = "$(TCL)\lib\tclstub$(TCL_VER).lib"
+ !else
+ CFLAGS = $(CFLAGS) -DFEAT_TCL
+ TCL_OBJ = $(OUTDIR)\if_tcl.obj
+*** ../vim-7.3.450/src/if_tcl.c 2011-07-27 14:15:41.000000000 +0200
+--- src/if_tcl.c 2012-02-22 15:47:00.000000000 +0100
+***************
+*** 79,90 ****
+ typedef struct
+ {
+ Tcl_Interp *interp;
+ int range_start, range_end;
+ int lbase;
+ char *curbuf, *curwin;
+ } tcl_info;
+
+! static tcl_info tclinfo = { NULL, 0, 0, 0, NULL, NULL };
+
+ #define VAR_RANGE1 "::vim::range(start)"
+ #define VAR_RANGE2 "::vim::range(begin)"
+--- 79,91 ----
+ typedef struct
+ {
+ Tcl_Interp *interp;
++ int exitvalue;
+ int range_start, range_end;
+ int lbase;
+ char *curbuf, *curwin;
+ } tcl_info;
+
+! static tcl_info tclinfo = { NULL, 0, 0, 0, 0, NULL, NULL };
+
+ #define VAR_RANGE1 "::vim::range(start)"
+ #define VAR_RANGE2 "::vim::range(begin)"
+***************
+*** 279,294 ****
+ ****************************************************************************/
+
+ /*
+! * Replace standard "exit" and "catch" commands.
+ *
+! * This is a design flaw in Tcl - the standard "exit" command just calls
+! * exit() and kills the application. It should return TCL_EXIT to the
+! * app, which then decides if it wants to terminate or not. In our case,
+! * we just delete the Tcl interpreter (and create a new one with the next
+! * :tcl command).
+ */
+- #define TCL_EXIT 5
+-
+ static int
+ exitcmd(dummy, interp, objc, objv)
+ ClientData dummy UNUSED;
+--- 280,298 ----
+ ****************************************************************************/
+
+ /*
+! * Replace standard "exit" command.
+ *
+! * Delete the Tcl interpreter; a new one will be created with the next
+! * :tcl command). The exit code is saved (and retrieved in tclexit()).
+! * Since Tcl's exit is never expected to return and this replacement
+! * does, then (except for a trivial case) additional Tcl commands will
+! * be run. Since the interpreter is now marked as deleted, an error
+! * will be returned -- typically "attempt to call eval in deleted
+! * interpreter". Hopefully, at this point, checks for TCL_ERROR take
+! * place and control percolates back up to Vim -- but with this new error
+! * string in the interpreter's result value. Therefore it would be
+! * useless for this routine to return the exit code via Tcl_SetResult().
+ */
+ static int
+ exitcmd(dummy, interp, objc, objv)
+ ClientData dummy UNUSED;
+***************
+*** 305,351 ****
+ break;
+ /* FALLTHROUGH */
+ case 1:
+! Tcl_SetObjResult(interp, Tcl_NewIntObj(value));
+! return TCL_EXIT;
+! default:
+! Tcl_WrongNumArgs(interp, 1, objv, "?returnCode?");
+! }
+! return TCL_ERROR;
+! }
+
+! static int
+! catchcmd(dummy, interp, objc, objv)
+! ClientData dummy UNUSED;
+! Tcl_Interp *interp;
+! int objc;
+! Tcl_Obj *CONST objv[];
+! {
+! char *varname = NULL;
+! int result;
+!
+! switch (objc)
+! {
+! case 3:
+! varname = Tcl_GetStringFromObj(objv[2], NULL);
+! /* fallthrough */
+! case 2:
+! Tcl_ResetResult(interp);
+! Tcl_AllowExceptions(interp);
+! result = Tcl_EvalObj(interp, objv[1]);
+! if (result == TCL_EXIT)
+! return result;
+! if (varname)
+! {
+! if (Tcl_SetVar(interp, varname, Tcl_GetStringResult(interp), 0) == NULL)
+! {
+! Tcl_SetResult(interp, "couldn't save command result in variable", TCL_STATIC);
+! return TCL_ERROR;
+! }
+! }
+! Tcl_SetObjResult(interp, Tcl_NewIntObj(result));
+! return TCL_OK;
+ default:
+! Tcl_WrongNumArgs(interp, 1, objv, "command ?varName?");
+ }
+ return TCL_ERROR;
+ }
+--- 309,320 ----
+ break;
+ /* FALLTHROUGH */
+ case 1:
+! tclinfo.exitvalue = value;
+
+! Tcl_DeleteInterp(interp);
+! break;
+ default:
+! Tcl_WrongNumArgs(interp, 1, objv, "?returnCode?");
+ }
+ return TCL_ERROR;
+ }
+***************
+*** 372,377 ****
+--- 341,347 ----
+ /*
+ * "::vim::buffer list" - create a list of buffer commands.
+ * "::vim::buffer {N}" - create buffer command for buffer N.
++ * "::vim::buffer exists {N}" - test if buffer N exists.
+ * "::vim::buffer new" - create a new buffer (not implemented)
+ */
+ static int
+***************
+*** 1663,1669 ****
+ static Tcl_ChannelType channel_type =
+ {
+ "vimmessage", /* typeName */
+! NULL, /* version */
+ channel_close, /* closeProc */
+ channel_input, /* inputProc */
+ channel_output, /* outputProc */
+--- 1633,1639 ----
+ static Tcl_ChannelType channel_type =
+ {
+ "vimmessage", /* typeName */
+! TCL_CHANNEL_VERSION_2, /* version */
+ channel_close, /* closeProc */
+ channel_input, /* inputProc */
+ channel_output, /* outputProc */
+***************
+*** 1678,1683 ****
+--- 1648,1655 ----
+ NULL, /* flushProc */
+ NULL, /* handlerProc */
+ #endif
++ /* The following should not be necessary since TCL_CHANNEL_VERSION_2 was
++ * set above */
+ #ifdef TCL_CHANNEL_VERSION_3
+ NULL, /* wideSeekProc */
+ #endif
+***************
+*** 1741,1747 ****
+ Tcl_Interp *interp;
+ static Tcl_Channel ch1, ch2;
+
+! /* replace stdout and stderr */
+ ch1 = Tcl_CreateChannel(&channel_type, "vimout", VIMOUT, TCL_WRITABLE);
+ ch2 = Tcl_CreateChannel(&channel_type, "vimerr", VIMERR, TCL_WRITABLE);
+ Tcl_SetStdChannel(ch1, TCL_STDOUT);
+--- 1713,1721 ----
+ Tcl_Interp *interp;
+ static Tcl_Channel ch1, ch2;
+
+! /* Create replacement channels for stdout and stderr; this has to be
+! * done each time an interpreter is created since the channels are closed
+! * when the interpreter is deleted */
+ ch1 = Tcl_CreateChannel(&channel_type, "vimout", VIMOUT, TCL_WRITABLE);
+ ch2 = Tcl_CreateChannel(&channel_type, "vimerr", VIMERR, TCL_WRITABLE);
+ Tcl_SetStdChannel(ch1, TCL_STDOUT);
+***************
+*** 1761,1775 ****
+ #endif
+
+ Tcl_SetChannelOption(interp, ch1, "-buffering", "line");
+ Tcl_SetChannelOption(interp, ch2, "-buffering", "line");
+
+! /* replace some standard Tcl commands */
+ Tcl_DeleteCommand(interp, "exit");
+ Tcl_CreateObjCommand(interp, "exit", exitcmd,
+ (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);
+- Tcl_DeleteCommand(interp, "catch");
+- Tcl_CreateObjCommand(interp, "catch", catchcmd,
+- (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);
+
+ /* new commands, in ::vim namespace */
+ Tcl_CreateObjCommand(interp, "::vim::buffer", buffercmd,
+--- 1735,1752 ----
+ #endif
+
+ Tcl_SetChannelOption(interp, ch1, "-buffering", "line");
++ #ifdef WIN3264
++ Tcl_SetChannelOption(interp, ch1, "-translation", "lf");
++ #endif
+ Tcl_SetChannelOption(interp, ch2, "-buffering", "line");
++ #ifdef WIN3264
++ Tcl_SetChannelOption(interp, ch2, "-translation", "lf");
++ #endif
+
+! /* replace standard Tcl exit command */
+ Tcl_DeleteCommand(interp, "exit");
+ Tcl_CreateObjCommand(interp, "exit", exitcmd,
+ (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);
+
+ /* new commands, in ::vim namespace */
+ Tcl_CreateObjCommand(interp, "::vim::buffer", buffercmd,
+***************
+*** 1821,1826 ****
+--- 1798,1805 ----
+ tclinfo.range_end = row2tcl(eap->line2);
+ tclupdatevars();
+ }
++
++ tclinfo.exitvalue = 0;
+ return OK;
+ }
+
+***************
+*** 1884,1913 ****
+ {
+ int newerr = OK;
+
+! if (error == TCL_EXIT)
+ {
+- int retval;
+ char buf[50];
+- Tcl_Obj *robj;
+
+! robj = Tcl_GetObjResult(tclinfo.interp);
+! if (Tcl_GetIntFromObj(tclinfo.interp, robj, &retval) != TCL_OK)
+ {
+! EMSG(_("E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org"));
+! newerr = FAIL;
+ }
+ else
+! {
+! sprintf(buf, _("E572: exit code %d"), retval);
+! tclerrmsg(buf);
+! if (retval == 0)
+! {
+! did_emsg = 0;
+! newerr = OK;
+! }
+! else
+! newerr = FAIL;
+! }
+
+ tcldelthisinterp();
+ }
+--- 1863,1885 ----
+ {
+ int newerr = OK;
+
+! if (Tcl_InterpDeleted(tclinfo.interp) /* True if we intercepted Tcl's exit command */
+! #if (TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION >= 5) || TCL_MAJOR_VERSION > 8
+! || Tcl_LimitExceeded(tclinfo.interp) /* True if the interpreter cannot continue */
+! #endif
+! )
+ {
+ char buf[50];
+
+! sprintf(buf, _("E572: exit code %d"), tclinfo.exitvalue);
+! tclerrmsg(buf);
+! if (tclinfo.exitvalue == 0)
+ {
+! did_emsg = 0;
+! newerr = OK;
+ }
+ else
+! newerr = FAIL;
+
+ tcldelthisinterp();
+ }
+***************
+*** 2021,2027 ****
+ Tcl_SetVar(tclinfo.interp, var_line, line, 0);
+ Tcl_AllowExceptions(tclinfo.interp);
+ err = Tcl_Eval(tclinfo.interp, script);
+! if (err != TCL_OK)
+ break;
+ line = (char *)Tcl_GetVar(tclinfo.interp, var_line, 0);
+ if (line)
+--- 1993,2004 ----
+ Tcl_SetVar(tclinfo.interp, var_line, line, 0);
+ Tcl_AllowExceptions(tclinfo.interp);
+ err = Tcl_Eval(tclinfo.interp, script);
+! if (err != TCL_OK
+! || Tcl_InterpDeleted(tclinfo.interp)
+! #if (TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION >= 5) || TCL_MAJOR_VERSION > 8
+! || Tcl_LimitExceeded(tclinfo.interp)
+! #endif
+! )
+ break;
+ line = (char *)Tcl_GetVar(tclinfo.interp, var_line, 0);
+ if (line)
+*** ../vim-7.3.450/src/version.c 2012-02-22 15:34:05.000000000 +0100
+--- src/version.c 2012-02-22 16:00:49.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 451,
+ /**/
+
+--
+Where do you want to crash today?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.452 b/source/ap/vim/patches/7.3.452
new file mode 100644
index 000000000..295b2fe89
--- /dev/null
+++ b/source/ap/vim/patches/7.3.452
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.452
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.452
+Problem: Undo broken when pasting close to the last line. (Andrey Radev)
+Solution: Use a flag to remember if the deleted included the last line.
+ (Christian Brabandt)
+Files: src/ops.c
+
+
+*** ../vim-7.3.451/src/ops.c 2012-01-10 13:46:18.000000000 +0100
+--- src/ops.c 2012-02-22 17:32:40.000000000 +0100
+***************
+*** 1943,1954 ****
+--- 1943,1956 ----
+ else /* delete characters between lines */
+ {
+ pos_T curpos;
++ int delete_last_line;
+
+ /* save deleted and changed lines for undo */
+ if (u_save((linenr_T)(curwin->w_cursor.lnum - 1),
+ (linenr_T)(curwin->w_cursor.lnum + oap->line_count)) == FAIL)
+ return FAIL;
+
++ delete_last_line = (oap->end.lnum == curbuf->b_ml.ml_line_count);
+ truncate_line(TRUE); /* delete from cursor to end of line */
+
+ curpos = curwin->w_cursor; /* remember curwin->w_cursor */
+***************
+*** 1956,1962 ****
+ del_lines((long)(oap->line_count - 2), FALSE);
+
+ n = (oap->end.col + 1 - !oap->inclusive);
+! if (oap->inclusive && oap->end.lnum == curbuf->b_ml.ml_line_count
+ && n > (int)STRLEN(ml_get(oap->end.lnum)))
+ {
+ /* Special case: gH<Del> deletes the last line. */
+--- 1958,1964 ----
+ del_lines((long)(oap->line_count - 2), FALSE);
+
+ n = (oap->end.col + 1 - !oap->inclusive);
+! if (oap->inclusive && delete_last_line
+ && n > (int)STRLEN(ml_get(oap->end.lnum)))
+ {
+ /* Special case: gH<Del> deletes the last line. */
+*** ../vim-7.3.451/src/version.c 2012-02-22 16:01:53.000000000 +0100
+--- src/version.c 2012-02-22 17:37:18.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 452,
+ /**/
+
+--
+From "know your smileys":
+ =):-) Uncle Sam
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.453 b/source/ap/vim/patches/7.3.453
new file mode 100644
index 000000000..cf0f0e716
--- /dev/null
+++ b/source/ap/vim/patches/7.3.453
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.453
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.453
+Problem: Pasting in the command line is slow.
+Solution: Don't redraw if there is another character to read. (Dominique
+ Pelle)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.3.452/src/ex_getln.c 2012-02-22 14:58:24.000000000 +0100
+--- src/ex_getln.c 2012-02-22 17:53:32.000000000 +0100
+***************
+*** 1852,1859 ****
+ # endif
+ )
+ /* Always redraw the whole command line to fix shaping and
+! * right-left typing. Not efficient, but it works. */
+! redrawcmd();
+ #endif
+ }
+
+--- 1852,1862 ----
+ # endif
+ )
+ /* Always redraw the whole command line to fix shaping and
+! * right-left typing. Not efficient, but it works.
+! * Do it only when there are no characters left to read
+! * to avoid useless intermediate redraws. */
+! if (vpeekc() == NUL)
+! redrawcmd();
+ #endif
+ }
+
+*** ../vim-7.3.452/src/version.c 2012-02-22 17:37:55.000000000 +0100
+--- src/version.c 2012-02-22 17:56:59.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 453,
+ /**/
+
+--
+From "know your smileys":
+ <<<:-{ Worf (Never smiles anyways, so he's a bad smiley)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.454 b/source/ap/vim/patches/7.3.454
new file mode 100644
index 000000000..8658926af
--- /dev/null
+++ b/source/ap/vim/patches/7.3.454
@@ -0,0 +1,84 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.454
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.454
+Problem: Re-allocating memory slows Vim down.
+Solution: Use realloc() in ga_grow(). (Dominique Pelle)
+Files: src/misc2.c
+
+
+*** ../vim-7.3.453/src/misc2.c 2012-02-22 14:58:24.000000000 +0100
+--- src/misc2.c 2012-02-22 18:07:45.000000000 +0100
+***************
+*** 2064,2087 ****
+ garray_T *gap;
+ int n;
+ {
+! size_t len;
+ char_u *pp;
+
+ if (gap->ga_maxlen - gap->ga_len < n)
+ {
+ if (n < gap->ga_growsize)
+ n = gap->ga_growsize;
+! len = gap->ga_itemsize * (gap->ga_len + n);
+! pp = alloc_clear((unsigned)len);
+ if (pp == NULL)
+ return FAIL;
+ gap->ga_maxlen = gap->ga_len + n;
+- if (gap->ga_data != NULL)
+- {
+- mch_memmove(pp, gap->ga_data,
+- (size_t)(gap->ga_itemsize * gap->ga_len));
+- vim_free(gap->ga_data);
+- }
+ gap->ga_data = pp;
+ }
+ return OK;
+--- 2064,2085 ----
+ garray_T *gap;
+ int n;
+ {
+! size_t old_len;
+! size_t new_len;
+ char_u *pp;
+
+ if (gap->ga_maxlen - gap->ga_len < n)
+ {
+ if (n < gap->ga_growsize)
+ n = gap->ga_growsize;
+! new_len = gap->ga_itemsize * (gap->ga_len + n);
+! pp = (gap->ga_data == NULL)
+! ? alloc(new_len) : vim_realloc(gap->ga_data, new_len);
+ if (pp == NULL)
+ return FAIL;
++ old_len = gap->ga_itemsize * gap->ga_maxlen;
++ vim_memset(pp + old_len, 0, new_len - old_len);
+ gap->ga_maxlen = gap->ga_len + n;
+ gap->ga_data = pp;
+ }
+ return OK;
+*** ../vim-7.3.453/src/version.c 2012-02-22 17:58:00.000000000 +0100
+--- src/version.c 2012-02-22 18:09:42.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 454,
+ /**/
+
+--
+From "know your smileys":
+ (X0||) Double hamburger with lettuce and tomato
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.455 b/source/ap/vim/patches/7.3.455
new file mode 100644
index 000000000..217b00d70
--- /dev/null
+++ b/source/ap/vim/patches/7.3.455
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.455
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.455
+Problem: Using many continuation lines can be slow.
+Solution: Adjust the reallocation size to the current length.
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.3.454/src/ex_cmds2.c 2012-02-11 20:40:49.000000000 +0100
+--- src/ex_cmds2.c 2012-02-22 18:24:11.000000000 +0100
+***************
+*** 3448,3454 ****
+ {
+ garray_T ga;
+
+! ga_init2(&ga, (int)sizeof(char_u), 200);
+ ga_concat(&ga, line);
+ ga_concat(&ga, p + 1);
+ for (;;)
+--- 3448,3454 ----
+ {
+ garray_T ga;
+
+! ga_init2(&ga, (int)sizeof(char_u), 400);
+ ga_concat(&ga, line);
+ ga_concat(&ga, p + 1);
+ for (;;)
+***************
+*** 3460,3465 ****
+--- 3460,3474 ----
+ p = skipwhite(sp->nextline);
+ if (*p != '\\')
+ break;
++ /* Adjust the growsize to the current length to speed up
++ * concatenating many lines. */
++ if (ga.ga_len > 400)
++ {
++ if (ga.ga_len > 8000)
++ ga.ga_growsize = 8000;
++ else
++ ga.ga_growsize = ga.ga_len;
++ }
+ ga_concat(&ga, p + 1);
+ }
+ ga_append(&ga, NUL);
+*** ../vim-7.3.454/src/version.c 2012-02-22 18:12:29.000000000 +0100
+--- src/version.c 2012-02-22 18:24:58.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 455,
+ /**/
+
+--
+From "know your smileys":
+ :-X My lips are sealed
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.456 b/source/ap/vim/patches/7.3.456
new file mode 100644
index 000000000..26fc2a987
--- /dev/null
+++ b/source/ap/vim/patches/7.3.456
@@ -0,0 +1,376 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.456
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.456
+Problem: ":tab drop file" has several problems, including moving the
+ current window and opening a new tab for a file that already has a
+ window.
+Solution: Refactor ":tab drop" handling. (Hirohito Higashi)
+Files: src/buffer.c, src/testdir/test62.in, src/testdir/test62.ok
+
+
+*** ../vim-7.3.455/src/buffer.c 2012-02-22 14:58:24.000000000 +0100
+--- src/buffer.c 2012-02-22 19:08:34.000000000 +0100
+***************
+*** 4405,4411 ****
+ {
+ int i;
+ win_T *wp, *wpnext;
+! char_u *opened; /* array of flags for which args are open */
+ int opened_len; /* length of opened[] */
+ int use_firstwin = FALSE; /* use first window for arglist */
+ int split_ret = OK;
+--- 4405,4416 ----
+ {
+ int i;
+ win_T *wp, *wpnext;
+! char_u *opened; /* Array of weight for which args are open:
+! * 0: not opened
+! * 1: opened in other tab
+! * 2: opened in curtab
+! * 3: opened in curtab and curwin
+! */
+ int opened_len; /* length of opened[] */
+ int use_firstwin = FALSE; /* use first window for arglist */
+ int split_ret = OK;
+***************
+*** 4414,4419 ****
+--- 4419,4426 ----
+ buf_T *buf;
+ tabpage_T *tpnext;
+ int had_tab = cmdmod.tab;
++ win_T *old_curwin, *last_curwin;
++ tabpage_T *old_curtab, *last_curtab;
+ win_T *new_curwin = NULL;
+ tabpage_T *new_curtab = NULL;
+
+***************
+*** 4430,4435 ****
+--- 4437,4451 ----
+ if (opened == NULL)
+ return;
+
++ /* Autocommands may do anything to the argument list. Make sure it's not
++ * freed while we are working here by "locking" it. We still have to
++ * watch out for its size to be changed. */
++ alist = curwin->w_alist;
++ ++alist->al_refcount;
++
++ old_curwin = curwin;
++ old_curtab = curtab;
++
+ #ifdef FEAT_GUI
+ need_mouse_correct = TRUE;
+ #endif
+***************
+*** 4451,4486 ****
+ wpnext = wp->w_next;
+ buf = wp->w_buffer;
+ if (buf->b_ffname == NULL
+! || buf->b_nwindows > 1
+ #ifdef FEAT_VERTSPLIT
+ || wp->w_width != Columns
+ #endif
+ )
+! i = ARGCOUNT;
+ else
+ {
+ /* check if the buffer in this window is in the arglist */
+! for (i = 0; i < ARGCOUNT; ++i)
+ {
+! if (ARGLIST[i].ae_fnum == buf->b_fnum
+! || fullpathcmp(alist_name(&ARGLIST[i]),
+! buf->b_ffname, TRUE) & FPC_SAME)
+ {
+! if (i < opened_len)
+ {
+! opened[i] = TRUE;
+ if (i == 0)
+ {
+ new_curwin = wp;
+ new_curtab = curtab;
+ }
+ }
+! if (wp->w_alist != curwin->w_alist)
+ {
+ /* Use the current argument list for all windows
+ * containing a file from it. */
+ alist_unlink(wp->w_alist);
+! wp->w_alist = curwin->w_alist;
+ ++wp->w_alist->al_refcount;
+ }
+ break;
+--- 4467,4517 ----
+ wpnext = wp->w_next;
+ buf = wp->w_buffer;
+ if (buf->b_ffname == NULL
+! || (!keep_tabs && buf->b_nwindows > 1)
+ #ifdef FEAT_VERTSPLIT
+ || wp->w_width != Columns
+ #endif
+ )
+! i = opened_len;
+ else
+ {
+ /* check if the buffer in this window is in the arglist */
+! for (i = 0; i < opened_len; ++i)
+ {
+! if (i < alist->al_ga.ga_len
+! && (AARGLIST(alist)[i].ae_fnum == buf->b_fnum
+! || fullpathcmp(alist_name(&AARGLIST(alist)[i]),
+! buf->b_ffname, TRUE) & FPC_SAME))
+ {
+! int weight = 1;
+!
+! if (old_curtab == curtab)
+! {
+! ++weight;
+! if (old_curwin == wp)
+! ++weight;
+! }
+!
+! if (weight > (int)opened[i])
+ {
+! opened[i] = (char_u)weight;
+ if (i == 0)
+ {
++ if (new_curwin != NULL)
++ new_curwin->w_arg_idx = opened_len;
+ new_curwin = wp;
+ new_curtab = curtab;
+ }
+ }
+! else if (keep_tabs)
+! i = opened_len;
+!
+! if (wp->w_alist != alist)
+ {
+ /* Use the current argument list for all windows
+ * containing a file from it. */
+ alist_unlink(wp->w_alist);
+! wp->w_alist = alist;
+ ++wp->w_alist->al_refcount;
+ }
+ break;
+***************
+*** 4489,4495 ****
+ }
+ wp->w_arg_idx = i;
+
+! if (i == ARGCOUNT && !keep_tabs) /* close this window */
+ {
+ if (P_HID(buf) || forceit || buf->b_nwindows > 1
+ || !bufIsChanged(buf))
+--- 4520,4526 ----
+ }
+ wp->w_arg_idx = i;
+
+! if (i == opened_len && !keep_tabs)/* close this window */
+ {
+ if (P_HID(buf) || forceit || buf->b_nwindows > 1
+ || !bufIsChanged(buf))
+***************
+*** 4511,4517 ****
+ }
+ #ifdef FEAT_WINDOWS
+ /* don't close last window */
+! if (firstwin == lastwin && first_tabpage->tp_next == NULL)
+ #endif
+ use_firstwin = TRUE;
+ #ifdef FEAT_WINDOWS
+--- 4542,4549 ----
+ }
+ #ifdef FEAT_WINDOWS
+ /* don't close last window */
+! if (firstwin == lastwin
+! && (first_tabpage->tp_next == NULL || !had_tab))
+ #endif
+ use_firstwin = TRUE;
+ #ifdef FEAT_WINDOWS
+***************
+*** 4545,4564 ****
+ * Open a window for files in the argument list that don't have one.
+ * ARGCOUNT may change while doing this, because of autocommands.
+ */
+! if (count > ARGCOUNT || count <= 0)
+! count = ARGCOUNT;
+!
+! /* Autocommands may do anything to the argument list. Make sure it's not
+! * freed while we are working here by "locking" it. We still have to
+! * watch out for its size to be changed. */
+! alist = curwin->w_alist;
+! ++alist->al_refcount;
+
+ #ifdef FEAT_AUTOCMD
+ /* Don't execute Win/Buf Enter/Leave autocommands here. */
+ ++autocmd_no_enter;
+ ++autocmd_no_leave;
+ #endif
+ win_enter(lastwin, FALSE);
+ #ifdef FEAT_WINDOWS
+ /* ":drop all" should re-use an empty window to avoid "--remote-tab"
+--- 4577,4592 ----
+ * Open a window for files in the argument list that don't have one.
+ * ARGCOUNT may change while doing this, because of autocommands.
+ */
+! if (count > opened_len || count <= 0)
+! count = opened_len;
+
+ #ifdef FEAT_AUTOCMD
+ /* Don't execute Win/Buf Enter/Leave autocommands here. */
+ ++autocmd_no_enter;
+ ++autocmd_no_leave;
+ #endif
++ last_curwin = curwin;
++ last_curtab = curtab;
+ win_enter(lastwin, FALSE);
+ #ifdef FEAT_WINDOWS
+ /* ":drop all" should re-use an empty window to avoid "--remote-tab"
+***************
+*** 4568,4578 ****
+ use_firstwin = TRUE;
+ #endif
+
+! for (i = 0; i < count && i < alist->al_ga.ga_len && !got_int; ++i)
+ {
+ if (alist == &global_alist && i == global_alist.al_ga.ga_len - 1)
+ arg_had_last = TRUE;
+! if (i < opened_len && opened[i])
+ {
+ /* Move the already present window to below the current window */
+ if (curwin->w_arg_idx != i)
+--- 4596,4606 ----
+ use_firstwin = TRUE;
+ #endif
+
+! for (i = 0; i < count && i < opened_len && !got_int; ++i)
+ {
+ if (alist == &global_alist && i == global_alist.al_ga.ga_len - 1)
+ arg_had_last = TRUE;
+! if (opened[i] > 0)
+ {
+ /* Move the already present window to below the current window */
+ if (curwin->w_arg_idx != i)
+***************
+*** 4581,4587 ****
+ {
+ if (wpnext->w_arg_idx == i)
+ {
+! win_move_after(wpnext, curwin);
+ break;
+ }
+ }
+--- 4609,4621 ----
+ {
+ if (wpnext->w_arg_idx == i)
+ {
+! if (keep_tabs)
+! {
+! new_curwin = wpnext;
+! new_curtab = curtab;
+! }
+! else
+! win_move_after(wpnext, curwin);
+ break;
+ }
+ }
+***************
+*** 4636,4641 ****
+--- 4670,4683 ----
+ #ifdef FEAT_AUTOCMD
+ --autocmd_no_enter;
+ #endif
++ /* restore last referenced tabpage's curwin */
++ if (last_curtab != new_curtab)
++ {
++ if (valid_tabpage(last_curtab))
++ goto_tabpage_tp(last_curtab);
++ if (win_valid(last_curwin))
++ win_enter(last_curwin, FALSE);
++ }
+ /* to window with first arg */
+ if (valid_tabpage(new_curtab))
+ goto_tabpage_tp(new_curtab);
+*** ../vim-7.3.455/src/testdir/test62.in 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test62.in 2012-02-22 18:45:10.000000000 +0100
+***************
+*** 50,55 ****
+--- 50,92 ----
+ :call append(line('$'), test_status)
+ :"
+ :"
++ :" Test for ":tab drop exist-file" to keep current window.
++ :sp test1
++ :tab drop test1
++ :let test_status = 'tab drop 1: fail'
++ :if tabpagenr('$') == 1 && winnr('$') == 2 && winnr() == 1
++ : let test_status = 'tab drop 1: pass'
++ :endif
++ :close
++ :call append(line('$'), test_status)
++ :"
++ :"
++ :" Test for ":tab drop new-file" to keep current window of tabpage 1.
++ :split
++ :tab drop newfile
++ :let test_status = 'tab drop 2: fail'
++ :if tabpagenr('$') == 2 && tabpagewinnr(1, '$') == 2 && tabpagewinnr(1) == 1
++ : let test_status = 'tab drop 2: pass'
++ :endif
++ :tabclose
++ :q
++ :call append(line('$'), test_status)
++ :"
++ :"
++ :" Test for ":tab drop multi-opend-file" to keep current tabpage and window.
++ :new test1
++ :tabnew
++ :new test1
++ :tab drop test1
++ :let test_status = 'tab drop 3: fail'
++ :if tabpagenr() == 2 && tabpagewinnr(2, '$') == 2 && tabpagewinnr(2) == 1
++ : let test_status = 'tab drop 3: pass'
++ :endif
++ :tabclose
++ :q
++ :call append(line('$'), test_status)
++ :"
++ :"
+ :/^Results/,$w! test.out
+ :qa!
+ ENDTEST
+*** ../vim-7.3.455/src/testdir/test62.ok 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test62.ok 2012-02-22 18:45:10.000000000 +0100
+***************
+*** 5,7 ****
+--- 5,10 ----
+ this is tab page 4
+ gettabvar: pass
+ settabvar: pass
++ tab drop 1: pass
++ tab drop 2: pass
++ tab drop 3: pass
+*** ../vim-7.3.455/src/version.c 2012-02-22 18:29:29.000000000 +0100
+--- src/version.c 2012-02-22 19:11:52.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 456,
+ /**/
+
+--
+% cat /usr/include/life.h
+void life(void);
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.457 b/source/ap/vim/patches/7.3.457
new file mode 100644
index 000000000..e60d6242d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.457
@@ -0,0 +1,81 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.457
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.457
+Problem: When setting $VIMRUNTIME later the directory for fetching
+ translated messages is not adjusted.
+Solution: Put bindtextdomain() in vim_setenv().
+Files: src/misc1.c
+
+
+*** ../vim-7.3.456/src/misc1.c 2012-02-05 22:05:44.000000000 +0100
+--- src/misc1.c 2012-02-26 13:27:28.000000000 +0100
+***************
+*** 4133,4149 ****
+ {
+ vim_setenv((char_u *)"VIMRUNTIME", p);
+ didset_vimruntime = TRUE;
+- #ifdef FEAT_GETTEXT
+- {
+- char_u *buf = concat_str(p, (char_u *)"/lang");
+-
+- if (buf != NULL)
+- {
+- bindtextdomain(VIMPACKAGE, (char *)buf);
+- vim_free(buf);
+- }
+- }
+- #endif
+ }
+ else
+ {
+--- 4133,4138 ----
+***************
+*** 4221,4226 ****
+--- 4210,4231 ----
+ putenv((char *)envbuf);
+ }
+ #endif
++ #ifdef FEAT_GETTEXT
++ /*
++ * When setting $VIMRUNTIME adjust the directory to find message
++ * translations to $VIMRUNTIME/lang.
++ */
++ if (*val != NUL && STRICMP(name, "VIMRUNTIME") == 0)
++ {
++ char_u *buf = concat_str(val, (char_u *)"/lang");
++
++ if (buf != NULL)
++ {
++ bindtextdomain(VIMPACKAGE, (char *)buf);
++ vim_free(buf);
++ }
++ }
++ #endif
+ }
+
+ #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
+*** ../vim-7.3.456/src/version.c 2012-02-22 19:13:00.000000000 +0100
+--- src/version.c 2012-02-29 13:47:09.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 457,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+118. You are on a first-name basis with your ISP's staff.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.458 b/source/ap/vim/patches/7.3.458
new file mode 100644
index 000000000..9bd440734
--- /dev/null
+++ b/source/ap/vim/patches/7.3.458
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.458
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.458
+Problem: Crash when calling smsg() during startup.
+Solution: Don't use 'shortmess' when it is not set yet.
+Files: src/option.c
+
+
+*** ../vim-7.3.457/src/option.c 2012-02-20 22:18:22.000000000 +0100
+--- src/option.c 2012-02-26 13:14:48.000000000 +0100
+***************
+*** 10984,10990 ****
+ shortmess(x)
+ int x;
+ {
+! return ( vim_strchr(p_shm, x) != NULL
+ || (vim_strchr(p_shm, 'a') != NULL
+ && vim_strchr((char_u *)SHM_A, x) != NULL));
+ }
+--- 10984,10991 ----
+ shortmess(x)
+ int x;
+ {
+! return p_shm != NULL &&
+! ( vim_strchr(p_shm, x) != NULL
+ || (vim_strchr(p_shm, 'a') != NULL
+ && vim_strchr((char_u *)SHM_A, x) != NULL));
+ }
+*** ../vim-7.3.457/src/version.c 2012-02-29 13:49:03.000000000 +0100
+--- src/version.c 2012-02-29 13:50:52.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 458,
+ /**/
+
+--
+Support your right to bare arms! Wear short sleeves!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.459 b/source/ap/vim/patches/7.3.459
new file mode 100644
index 000000000..d75a38b44
--- /dev/null
+++ b/source/ap/vim/patches/7.3.459
@@ -0,0 +1,71 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.459
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.459
+Problem: Win32: Warnings for type conversion.
+Solution: Add type casts. (Mike Williams)
+Files: src/misc2.c, src/os_win32.c
+
+
+*** ../vim-7.3.458/src/misc2.c 2012-02-22 18:12:29.000000000 +0100
+--- src/misc2.c 2012-02-29 13:44:17.000000000 +0100
+***************
+*** 2074,2080 ****
+ n = gap->ga_growsize;
+ new_len = gap->ga_itemsize * (gap->ga_len + n);
+ pp = (gap->ga_data == NULL)
+! ? alloc(new_len) : vim_realloc(gap->ga_data, new_len);
+ if (pp == NULL)
+ return FAIL;
+ old_len = gap->ga_itemsize * gap->ga_maxlen;
+--- 2074,2080 ----
+ n = gap->ga_growsize;
+ new_len = gap->ga_itemsize * (gap->ga_len + n);
+ pp = (gap->ga_data == NULL)
+! ? alloc((unsigned)new_len) : vim_realloc(gap->ga_data, new_len);
+ if (pp == NULL)
+ return FAIL;
+ old_len = gap->ga_itemsize * gap->ga_maxlen;
+*** ../vim-7.3.458/src/os_win32.c 2012-02-22 15:34:05.000000000 +0100
+--- src/os_win32.c 2012-02-29 13:43:39.000000000 +0100
+***************
+*** 264,270 ****
+ static void
+ unescape_shellxquote(char_u *p, char_u *escaped)
+ {
+! int l = STRLEN(p);
+ int n;
+
+ while (*p != NUL)
+--- 264,270 ----
+ static void
+ unescape_shellxquote(char_u *p, char_u *escaped)
+ {
+! int l = (int)STRLEN(p);
+ int n;
+
+ while (*p != NUL)
+*** ../vim-7.3.458/src/version.c 2012-02-29 13:51:32.000000000 +0100
+--- src/version.c 2012-02-29 13:58:08.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 459,
+ /**/
+
+--
+"A clear conscience is usually the sign of a bad memory."
+ -- Steven Wright
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.460 b/source/ap/vim/patches/7.3.460
new file mode 100644
index 000000000..c1d7e85b3
--- /dev/null
+++ b/source/ap/vim/patches/7.3.460
@@ -0,0 +1,89 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.460
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.460
+Problem: Win32: UPX does not compress 64 bit binaries.
+Solution: Mention and add the alternative: mpress. (Dave Bodenstab)
+Files: src/INSTALLpc.txt, src/Make_ming.mak
+
+
+*** ../vim-7.3.459/src/INSTALLpc.txt 2011-07-15 13:51:57.000000000 +0200
+--- src/INSTALLpc.txt 2012-02-29 14:01:34.000000000 +0100
+***************
+*** 239,244 ****
+--- 239,250 ----
+ found at
+ http://www.upx.org/
+
++ As of 2011, UPX still does not support compressing 64-bit EXE's; if you have
++ built a 64-bit vim then an alternative to UPX is 'MPRESS'. MPRESS can be found
++ at:
++ http://www.matcode.com/mpress.htm
++
++
+ ADDITION: NLS support with MinGW
+
+ (by Eduardo F. Amatria <eferna1@platea.pntic.mec.es>)
+*** ../vim-7.3.459/src/Make_ming.mak 2011-10-12 14:11:43.000000000 +0200
+--- src/Make_ming.mak 2012-02-29 16:54:09.000000000 +0100
+***************
+*** 14,22 ****
+ # it's just run out of memory or something. Run again, and it will continue
+ # with 'xxd'.
+ #
+! # "make upx" makes *compressed* versions of the GUI and console EXEs, using the
+! # excellent UPX compressor:
+ # http://upx.sourceforge.net/
+ #
+ # Maintained by Ron Aaron <ronaharon@yahoo.com>
+ # updated 2003 Jan 20
+--- 14,24 ----
+ # it's just run out of memory or something. Run again, and it will continue
+ # with 'xxd'.
+ #
+! # "make upx" makes *compressed* versions of the 32 bit GUI and console EXEs,
+! # using the excellent UPX compressor:
+ # http://upx.sourceforge.net/
++ # "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs:
++ # http://www.matcode.com/mpress.htm
+ #
+ # Maintained by Ron Aaron <ronaharon@yahoo.com>
+ # updated 2003 Jan 20
+***************
+*** 640,645 ****
+--- 642,651 ----
+ upx gvim.exe
+ upx vim.exe
+
++ mpress: exes
++ mpress gvim.exe
++ mpress vim.exe
++
+ xxd/xxd.exe: xxd/xxd.c
+ $(MAKE) -C xxd -f Make_ming.mak CC=$(CC)
+
+*** ../vim-7.3.459/src/version.c 2012-02-29 13:58:43.000000000 +0100
+--- src/version.c 2012-02-29 16:54:40.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 460,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+119. You are reading a book and look for the scroll bar to get to
+ the next page.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.461 b/source/ap/vim/patches/7.3.461
new file mode 100644
index 000000000..53c83c061
--- /dev/null
+++ b/source/ap/vim/patches/7.3.461
@@ -0,0 +1,243 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.461
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.461
+Problem: The InsertCharPre autocommand event is not triggered during
+ completion and when typing several characters quickly.
+Solution: Also trigger InsertCharPre during completion. Do not read ahead
+ when an InsertCharPre autocommand is defined. (Yasuhiro Matsumoto)
+Files: src/edit.c, src/fileio.c, src/proto/fileio.pro
+
+
+*** ../vim-7.3.460/src/edit.c 2012-02-04 23:34:57.000000000 +0100
+--- src/edit.c 2012-02-29 18:17:31.000000000 +0100
+***************
+*** 259,264 ****
+--- 259,267 ----
+ static void ins_try_si __ARGS((int c));
+ #endif
+ static colnr_T get_nolist_virtcol __ARGS((void));
++ #ifdef FEAT_AUTOCMD
++ static char_u *do_insert_char_pre __ARGS((int c));
++ #endif
+
+ static colnr_T Insstart_textlen; /* length of line when insert started */
+ static colnr_T Insstart_blank_vcol; /* vcol for first inserted blank */
+***************
+*** 784,790 ****
+ * completion: Add to "compl_leader". */
+ if (ins_compl_accept_char(c))
+ {
+! ins_compl_addleader(c);
+ continue;
+ }
+
+--- 787,806 ----
+ * completion: Add to "compl_leader". */
+ if (ins_compl_accept_char(c))
+ {
+! #ifdef FEAT_AUTOCMD
+! /* Trigger InsertCharPre. */
+! char_u *str = do_insert_char_pre(c);
+! char_u *p;
+!
+! if (str != NULL)
+! {
+! for (p = str; *p != NUL; mb_ptr_adv(p))
+! ins_compl_addleader(PTR2CHAR(p));
+! vim_free(str);
+! }
+! else
+! #endif
+! ins_compl_addleader(c);
+ continue;
+ }
+
+***************
+*** 1393,1426 ****
+ #ifdef FEAT_AUTOCMD
+ if (!p_paste)
+ {
+! /* Trigger the InsertCharPre event. Lock the text to avoid
+! * weird things from happening. */
+! set_vim_var_char(c);
+! ++textlock;
+! if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL,
+! FALSE, curbuf))
+! {
+! /* Get the new value of v:char. If it is more than one
+! * character insert it literally. */
+! char_u *s = get_vim_var_str(VV_CHAR);
+! if (MB_CHARLEN(s) > 1)
+ {
+! if (stop_arrow() != FAIL)
+ {
+! ins_str(s);
+! AppendToRedobuffLit(s, -1);
+ }
+! c = NUL;
+ }
+! else
+! c = PTR2CHAR(s);
+ }
+
+! set_vim_var_string(VV_CHAR, NULL, -1);
+! --textlock;
+!
+! /* If the new value is an empty string then don't insert a
+! * char. */
+ if (c == NUL)
+ break;
+ }
+--- 1409,1439 ----
+ #ifdef FEAT_AUTOCMD
+ if (!p_paste)
+ {
+! /* Trigger InsertCharPre. */
+! char_u *str = do_insert_char_pre(c);
+! char_u *p;
+!
+! if (str != NULL)
+! {
+! if (*str != NUL && stop_arrow() != FAIL)
+ {
+! /* Insert the new value of v:char literally. */
+! for (p = str; *p != NUL; mb_ptr_adv(p))
+ {
+! c = PTR2CHAR(p);
+! if (c == CAR || c == K_KENTER || c == NL)
+! ins_eol(c);
+! else
+! ins_char(c);
+ }
+! AppendToRedobuffLit(str, -1);
+ }
+! vim_free(str);
+! c = NUL;
+ }
+
+! /* If the new value is already inserted or an empty string
+! * then don't insert any character. */
+ if (c == NUL)
+ break;
+ }
+***************
+*** 5883,5888 ****
+--- 5896,5903 ----
+ * Don't do this when 'cindent' or 'indentexpr' is set, because we might
+ * need to re-indent at a ':', or any other character (but not what
+ * 'paste' is set)..
++ * Don't do this when there an InsertCharPre autocommand is defined,
++ * because we need to fire the event for every character.
+ */
+ #ifdef USE_ON_FLY_SCROLL
+ dont_scroll = FALSE; /* allow scrolling here */
+***************
+*** 5900,5905 ****
+--- 5915,5923 ----
+ #ifdef FEAT_RIGHTLEFT
+ && !p_ri
+ #endif
++ #ifdef FEAT_AUTOCMD
++ && !has_insertcharpre()
++ #endif
+ )
+ {
+ #define INPUT_BUFLEN 100
+***************
+*** 10068,10070 ****
+--- 10086,10123 ----
+ validate_virtcol();
+ return curwin->w_virtcol;
+ }
++
++ #ifdef FEAT_AUTOCMD
++ /*
++ * Handle the InsertCharPre autocommand.
++ * "c" is the character that was typed.
++ * Return a pointer to allocated memory with the replacement string.
++ * Return NULL to continue inserting "c".
++ */
++ static char_u *
++ do_insert_char_pre(c)
++ int c;
++ {
++ char_u *res;
++
++ /* Return quickly when there is nothing to do. */
++ if (!has_insertcharpre())
++ return NULL;
++
++ /* Lock the text to avoid weird things from happening. */
++ ++textlock;
++ set_vim_var_char(c); /* set v:char */
++
++ if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL, FALSE, curbuf))
++ /* Get the new value of v:char. It may be empty or more than one
++ * character. */
++ res = vim_strsave(get_vim_var_str(VV_CHAR));
++ else
++ res = NULL;
++
++ set_vim_var_string(VV_CHAR, NULL, -1); /* clear v:char */
++ --textlock;
++
++ return res;
++ }
++ #endif
+*** ../vim-7.3.460/src/fileio.c 2012-02-12 20:13:55.000000000 +0100
+--- src/fileio.c 2012-02-29 17:50:32.000000000 +0100
+***************
+*** 9116,9121 ****
+--- 9116,9130 ----
+ return (first_autopat[(int)EVENT_CURSORMOVEDI] != NULL);
+ }
+
++ /*
++ * Return TRUE when there is an InsertCharPre autocommand defined.
++ */
++ int
++ has_insertcharpre()
++ {
++ return (first_autopat[(int)EVENT_INSERTCHARPRE] != NULL);
++ }
++
+ static int
+ apply_autocmds_group(event, fname, fname_io, force, group, buf, eap)
+ event_T event;
+*** ../vim-7.3.460/src/proto/fileio.pro 2012-02-12 20:13:55.000000000 +0100
+--- src/proto/fileio.pro 2012-02-29 17:50:38.000000000 +0100
+***************
+*** 44,49 ****
+--- 44,50 ----
+ int trigger_cursorhold __ARGS((void));
+ int has_cursormoved __ARGS((void));
+ int has_cursormovedI __ARGS((void));
++ int has_insertcharpre __ARGS((void));
+ void block_autocmds __ARGS((void));
+ void unblock_autocmds __ARGS((void));
+ int has_autocmd __ARGS((event_T event, char_u *sfname, buf_T *buf));
+*** ../vim-7.3.460/src/version.c 2012-02-29 16:56:35.000000000 +0100
+--- src/version.c 2012-02-29 18:15:34.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 461,
+ /**/
+
+--
+"Computers in the future may weigh no more than 1.5 tons."
+ Popular Mechanics, 1949
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.462 b/source/ap/vim/patches/7.3.462
new file mode 100644
index 000000000..df0372421
--- /dev/null
+++ b/source/ap/vim/patches/7.3.462
@@ -0,0 +1,191 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.462
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.462
+Problem: When using ":loadview" folds may be closed unexpectedly.
+Solution: Take into account foldlevel. (Xavier de Gaye)
+Files: src/fold.c
+
+
+*** ../vim-7.3.461/src/fold.c 2012-01-10 22:26:12.000000000 +0100
+--- src/fold.c 2012-02-29 19:18:07.000000000 +0100
+***************
+*** 3292,3298 ****
+ /* put_folds() {{{2 */
+ #if defined(FEAT_SESSION) || defined(PROTO)
+ static int put_folds_recurse __ARGS((FILE *fd, garray_T *gap, linenr_T off));
+! static int put_foldopen_recurse __ARGS((FILE *fd, garray_T *gap, linenr_T off));
+
+ /*
+ * Write commands to "fd" to restore the manual folds in window "wp".
+--- 3292,3299 ----
+ /* put_folds() {{{2 */
+ #if defined(FEAT_SESSION) || defined(PROTO)
+ static int put_folds_recurse __ARGS((FILE *fd, garray_T *gap, linenr_T off));
+! static int put_foldopen_recurse __ARGS((FILE *fd, win_T *wp, garray_T *gap, linenr_T off));
+! static int put_fold_open_close __ARGS((FILE *fd, fold_T *fp, linenr_T off));
+
+ /*
+ * Write commands to "fd" to restore the manual folds in window "wp".
+***************
+*** 3312,3318 ****
+
+ /* If some folds are manually opened/closed, need to restore that. */
+ if (wp->w_fold_manual)
+! return put_foldopen_recurse(fd, &wp->w_folds, (linenr_T)0);
+
+ return OK;
+ }
+--- 3313,3319 ----
+
+ /* If some folds are manually opened/closed, need to restore that. */
+ if (wp->w_fold_manual)
+! return put_foldopen_recurse(fd, wp, &wp->w_folds, (linenr_T)0);
+
+ return OK;
+ }
+***************
+*** 3352,3363 ****
+ * Returns FAIL when writing failed.
+ */
+ static int
+! put_foldopen_recurse(fd, gap, off)
+ FILE *fd;
+ garray_T *gap;
+ linenr_T off;
+ {
+ int i;
+ fold_T *fp;
+
+ fp = (fold_T *)gap->ga_data;
+--- 3353,3366 ----
+ * Returns FAIL when writing failed.
+ */
+ static int
+! put_foldopen_recurse(fd, wp, gap, off)
+ FILE *fd;
++ win_T *wp;
+ garray_T *gap;
+ linenr_T off;
+ {
+ int i;
++ int level;
+ fold_T *fp;
+
+ fp = (fold_T *)gap->ga_data;
+***************
+*** 3367,3393 ****
+ {
+ if (fp->fd_nested.ga_len > 0)
+ {
+! /* open/close nested folds while this fold is open */
+ if (fprintf(fd, "%ld", fp->fd_top + off) < 0
+ || put_eol(fd) == FAIL
+ || put_line(fd, "normal zo") == FAIL)
+ return FAIL;
+! if (put_foldopen_recurse(fd, &fp->fd_nested, off + fp->fd_top)
+ == FAIL)
+ return FAIL;
+ }
+- if (fprintf(fd, "%ld", fp->fd_top + off) < 0
+- || put_eol(fd) == FAIL
+- || fprintf(fd, "normal z%c",
+- fp->fd_flags == FD_CLOSED ? 'c' : 'o') < 0
+- || put_eol(fd) == FAIL)
+- return FAIL;
+ }
+ ++fp;
+ }
+
+ return OK;
+ }
+ #endif /* FEAT_SESSION */
+
+ /* }}}1 */
+--- 3370,3429 ----
+ {
+ if (fp->fd_nested.ga_len > 0)
+ {
+! /* open nested folds while this fold is open */
+ if (fprintf(fd, "%ld", fp->fd_top + off) < 0
+ || put_eol(fd) == FAIL
+ || put_line(fd, "normal zo") == FAIL)
+ return FAIL;
+! if (put_foldopen_recurse(fd, wp, &fp->fd_nested,
+! off + fp->fd_top)
+ == FAIL)
+ return FAIL;
++ /* close the parent when needed */
++ if (fp->fd_flags == FD_CLOSED)
++ {
++ if (put_fold_open_close(fd, fp, off) == FAIL)
++ return FAIL;
++ }
++ }
++ else
++ {
++ /* Open or close the leaf according to the window foldlevel.
++ * Do not close a leaf that is already closed, as it will close
++ * the parent. */
++ level = foldLevelWin(wp, off + fp->fd_top);
++ if ((fp->fd_flags == FD_CLOSED && wp->w_p_fdl >= level)
++ || (fp->fd_flags != FD_CLOSED && wp->w_p_fdl < level))
++ if (put_fold_open_close(fd, fp, off) == FAIL)
++ return FAIL;
+ }
+ }
+ ++fp;
+ }
+
+ return OK;
+ }
++
++ /* put_fold_open_close() {{{2 */
++ /*
++ * Write the open or close command to "fd".
++ * Returns FAIL when writing failed.
++ */
++ static int
++ put_fold_open_close(fd, fp, off)
++ FILE *fd;
++ fold_T *fp;
++ linenr_T off;
++ {
++ if (fprintf(fd, "%ld", fp->fd_top + off) < 0
++ || put_eol(fd) == FAIL
++ || fprintf(fd, "normal z%c",
++ fp->fd_flags == FD_CLOSED ? 'c' : 'o') < 0
++ || put_eol(fd) == FAIL)
++ return FAIL;
++
++ return OK;
++ }
+ #endif /* FEAT_SESSION */
+
+ /* }}}1 */
+*** ../vim-7.3.461/src/version.c 2012-02-29 18:22:03.000000000 +0100
+--- src/version.c 2012-02-29 18:40:43.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 462,
+ /**/
+
+--
+~
+~
+~
+".signature" 4 lines, 50 characters written
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.463 b/source/ap/vim/patches/7.3.463
new file mode 100644
index 000000000..1e7cb238f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.463
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.463
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.463
+Problem: When using ":s///c" the cursor is moved away from the match.
+ (Lawman)
+Solution: Don't move the cursor when do_ask is set. (Christian Brabandt)
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.3.462/src/ex_cmds.c 2012-02-22 14:58:24.000000000 +0100
+--- src/ex_cmds.c 2012-03-07 14:54:21.000000000 +0100
+***************
+*** 5151,5160 ****
+
+ if (!global_busy)
+ {
+! if (endcolumn)
+! coladvance((colnr_T)MAXCOL);
+! else
+! beginline(BL_WHITE | BL_FIX);
+ if (!do_sub_msg(do_count) && do_ask)
+ MSG("");
+ }
+--- 5151,5163 ----
+
+ if (!global_busy)
+ {
+! if (!do_ask) /* when interactive leave cursor on the match */
+! {
+! if (endcolumn)
+! coladvance((colnr_T)MAXCOL);
+! else
+! beginline(BL_WHITE | BL_FIX);
+! }
+ if (!do_sub_msg(do_count) && do_ask)
+ MSG("");
+ }
+*** ../vim-7.3.462/src/version.c 2012-02-29 19:19:57.000000000 +0100
+--- src/version.c 2012-03-07 14:55:39.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 463,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+151. You find yourself engaged to someone you've never actually met,
+ except through e-mail.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.464 b/source/ap/vim/patches/7.3.464
new file mode 100644
index 000000000..fdfdfffc1
--- /dev/null
+++ b/source/ap/vim/patches/7.3.464
@@ -0,0 +1,60 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.464
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.464
+Problem: Compiler warning for sprintf.
+Solution: Put the length in a variable. (Dominique Pelle)
+Files: src/version.c
+
+
+*** ../vim-7.3.463/src/version.c 2012-03-07 14:57:50.000000000 +0100
+--- src/version.c 2012-03-07 17:58:41.000000000 +0100
+***************
+*** 2187,2198 ****
+ /* Check for 9.9x or 9.9xx, alpha/beta version */
+ if (isalpha((int)vers[3]))
+ {
+! if (isalpha((int)vers[4]))
+! sprintf((char *)vers + 5, ".%d%s", highest_patch(),
+! mediumVersion + 5);
+! else
+! sprintf((char *)vers + 4, ".%d%s", highest_patch(),
+! mediumVersion + 4);
+ }
+ else
+ sprintf((char *)vers + 3, ".%d", highest_patch());
+--- 2189,2197 ----
+ /* Check for 9.9x or 9.9xx, alpha/beta version */
+ if (isalpha((int)vers[3]))
+ {
+! int len = (isalpha((int)vers[4])) ? 5 : 4;
+! sprintf((char *)vers + len, ".%d%s", highest_patch(),
+! mediumVersion + len);
+ }
+ else
+ sprintf((char *)vers + 3, ".%d", highest_patch());
+*** ../vim-7.3.463/src/version.c 2012-03-07 14:57:50.000000000 +0100
+--- src/version.c 2012-03-07 17:58:41.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 464,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+152. You find yourself falling for someone you've never seen or hardly
+ know, but, boy can he/she TYPE!!!!!!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.465 b/source/ap/vim/patches/7.3.465
new file mode 100644
index 000000000..c4a857ac9
--- /dev/null
+++ b/source/ap/vim/patches/7.3.465
@@ -0,0 +1,398 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.465
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.465
+Problem: Cannot get file name with newline from glob().
+Solution: Add argument to glob() and expand() to indicate they must return a
+ list. (Christian Brabandt)
+Files: runtime/doc/eval.txt, src/eval.c, src/ex_getln.c, src/vim.h
+
+
+*** ../vim-7.3.464/runtime/doc/eval.txt 2011-12-14 15:32:44.000000000 +0100
+--- runtime/doc/eval.txt 2012-03-07 18:49:26.000000000 +0100
+***************
+*** 1738,1744 ****
+ extend( {expr1}, {expr2} [, {expr3}])
+ List/Dict insert items of {expr2} into {expr1}
+ exp( {expr}) Float exponential of {expr}
+! expand( {expr} [, {flag}]) String expand special keywords in {expr}
+ feedkeys( {string} [, {mode}]) Number add key sequence to typeahead buffer
+ filereadable( {file}) Number TRUE if {file} is a readable file
+ filewritable( {file}) Number TRUE if {file} is a writable file
+--- 1746,1753 ----
+ extend( {expr1}, {expr2} [, {expr3}])
+ List/Dict insert items of {expr2} into {expr1}
+ exp( {expr}) Float exponential of {expr}
+! expand( {expr} [, {nosuf} [, {list}]])
+! any expand special keywords in {expr}
+ feedkeys( {string} [, {mode}]) Number add key sequence to typeahead buffer
+ filereadable( {file}) Number TRUE if {file} is a readable file
+ filewritable( {file}) Number TRUE if {file} is a writable file
+***************
+*** 1792,1798 ****
+ getwinposx() Number X coord in pixels of GUI Vim window
+ getwinposy() Number Y coord in pixels of GUI Vim window
+ getwinvar( {nr}, {varname}) any variable {varname} in window {nr}
+! glob( {expr} [, {flag}]) String expand file wildcards in {expr}
+ globpath( {path}, {expr} [, {flag}])
+ String do glob({expr}) for all dirs in {path}
+ has( {feature}) Number TRUE if feature {feature} supported
+--- 1801,1808 ----
+ getwinposx() Number X coord in pixels of GUI Vim window
+ getwinposy() Number Y coord in pixels of GUI Vim window
+ getwinvar( {nr}, {varname}) any variable {varname} in window {nr}
+! glob( {expr} [, {nosuf} [, {list}]])
+! any expand file wildcards in {expr}
+ globpath( {path}, {expr} [, {flag}])
+ String do glob({expr}) for all dirs in {path}
+ has( {feature}) Number TRUE if feature {feature} supported
+***************
+*** 2731,2743 ****
+ {only available when compiled with the |+float| feature}
+
+
+! expand({expr} [, {flag}]) *expand()*
+ Expand wildcards and the following special keywords in {expr}.
+! The result is a String.
+
+! When there are several matches, they are separated by <NL>
+! characters. [Note: in version 5.0 a space was used, which
+! caused problems when a file name contains a space]
+
+ If the expansion fails, the result is an empty string. A name
+ for a non-existing file is not included.
+--- 2744,2758 ----
+ {only available when compiled with the |+float| feature}
+
+
+! expand({expr} [, {nosuf} [, {list}]]) *expand()*
+ Expand wildcards and the following special keywords in {expr}.
+! 'wildignorecase' applies.
+
+! If {list} is given and it is non-zero, a List will be returned.
+! Otherwise the result is a String and when there are several
+! matches, they are separated by <NL> characters. [Note: in
+! version 5.0 a space was used, which caused problems when a
+! file name contains a space]
+
+ If the expansion fails, the result is an empty string. A name
+ for a non-existing file is not included.
+***************
+*** 2754,2759 ****
+--- 2769,2775 ----
+ <abuf> autocmd buffer number (as a String!)
+ <amatch> autocmd matched name
+ <sfile> sourced script file name
++ <slnum> sourced script file line number
+ <cword> word under the cursor
+ <cWORD> WORD under the cursor
+ <client> the {clientid} of the last received
+***************
+*** 2790,2799 ****
+ When {expr} does not start with '%', '#' or '<', it is
+ expanded like a file name is expanded on the command line.
+ 'suffixes' and 'wildignore' are used, unless the optional
+! {flag} argument is given and it is non-zero. Names for
+! non-existing files are included. The "**" item can be used to
+! search in a directory tree. For example, to find all "README"
+! files in the current directory and below: >
+ :echo expand("**/README")
+ <
+ Expand() can also be used to expand variables and environment
+--- 2806,2815 ----
+ When {expr} does not start with '%', '#' or '<', it is
+ expanded like a file name is expanded on the command line.
+ 'suffixes' and 'wildignore' are used, unless the optional
+! {nosuf} argument is given and it is non-zero.
+! Names for non-existing files are included. The "**" item can
+! be used to search in a directory tree. For example, to find
+! all "README" files in the current directory and below: >
+ :echo expand("**/README")
+ <
+ Expand() can also be used to expand variables and environment
+***************
+*** 3437,3453 ****
+ :let list_is_on = getwinvar(2, '&list')
+ :echo "myvar = " . getwinvar(1, 'myvar')
+ <
+! glob({expr} [, {flag}]) *glob()*
+ Expand the file wildcards in {expr}. See |wildcards| for the
+ use of special characters.
+! The result is a String.
+! When there are several matches, they are separated by <NL>
+! characters.
+! Unless the optional {flag} argument is given and is non-zero,
+ the 'suffixes' and 'wildignore' options apply: Names matching
+ one of the patterns in 'wildignore' will be skipped and
+ 'suffixes' affect the ordering of matches.
+! If the expansion fails, the result is an empty string.
+ A name for a non-existing file is not included.
+
+ For most systems backticks can be used to get files names from
+--- 3456,3478 ----
+ :let list_is_on = getwinvar(2, '&list')
+ :echo "myvar = " . getwinvar(1, 'myvar')
+ <
+! glob({expr} [, {nosuf} [, {list}]]) *glob()*
+ Expand the file wildcards in {expr}. See |wildcards| for the
+ use of special characters.
+!
+! Unless the optional {nosuf} argument is given and is non-zero,
+ the 'suffixes' and 'wildignore' options apply: Names matching
+ one of the patterns in 'wildignore' will be skipped and
+ 'suffixes' affect the ordering of matches.
+! 'wildignorecase' always applies.
+!
+! When {list} is present and it is non-zero the result is a List
+! with all matching files. The advantage of using a List is,
+! you also get filenames containing newlines correctly.
+! Otherwise the result is a String and when there are several
+! matches, they are separated by <NL> characters.
+!
+! If the expansion fails, the result is an empty String or List.
+ A name for a non-existing file is not included.
+
+ For most systems backticks can be used to get files names from
+*** ../vim-7.3.464/src/eval.c 2012-02-11 20:44:01.000000000 +0100
+--- src/eval.c 2012-03-07 19:08:36.000000000 +0100
+***************
+*** 7852,7858 ****
+ #ifdef FEAT_FLOAT
+ {"exp", 1, 1, f_exp},
+ #endif
+! {"expand", 1, 2, f_expand},
+ {"extend", 2, 3, f_extend},
+ {"feedkeys", 1, 2, f_feedkeys},
+ {"file_readable", 1, 1, f_filereadable}, /* obsolete */
+--- 7852,7858 ----
+ #ifdef FEAT_FLOAT
+ {"exp", 1, 1, f_exp},
+ #endif
+! {"expand", 1, 3, f_expand},
+ {"extend", 2, 3, f_extend},
+ {"feedkeys", 1, 2, f_feedkeys},
+ {"file_readable", 1, 1, f_filereadable}, /* obsolete */
+***************
+*** 7903,7909 ****
+ {"getwinposx", 0, 0, f_getwinposx},
+ {"getwinposy", 0, 0, f_getwinposy},
+ {"getwinvar", 2, 2, f_getwinvar},
+! {"glob", 1, 2, f_glob},
+ {"globpath", 2, 3, f_globpath},
+ {"has", 1, 1, f_has},
+ {"has_key", 2, 2, f_has_key},
+--- 7903,7909 ----
+ {"getwinposx", 0, 0, f_getwinposx},
+ {"getwinposy", 0, 0, f_getwinposy},
+ {"getwinvar", 2, 2, f_getwinvar},
+! {"glob", 1, 3, f_glob},
+ {"globpath", 2, 3, f_globpath},
+ {"has", 1, 1, f_has},
+ {"has_key", 2, 2, f_has_key},
+***************
+*** 10019,10032 ****
+ int options = WILD_SILENT|WILD_USE_NL|WILD_LIST_NOTFOUND;
+ expand_T xpc;
+ int error = FALSE;
+
+ rettv->v_type = VAR_STRING;
+ s = get_tv_string(&argvars[0]);
+ if (*s == '%' || *s == '#' || *s == '<')
+ {
+ ++emsg_off;
+! rettv->vval.v_string = eval_vars(s, s, &len, NULL, &errormsg, NULL);
+ --emsg_off;
+ }
+ else
+ {
+--- 10019,10051 ----
+ int options = WILD_SILENT|WILD_USE_NL|WILD_LIST_NOTFOUND;
+ expand_T xpc;
+ int error = FALSE;
++ char_u *result;
+
+ rettv->v_type = VAR_STRING;
++ if (argvars[1].v_type != VAR_UNKNOWN
++ && argvars[2].v_type != VAR_UNKNOWN
++ && get_tv_number_chk(&argvars[2], &error)
++ && !error)
++ {
++ rettv->v_type = VAR_LIST;
++ rettv->vval.v_list = NULL;
++ }
++
+ s = get_tv_string(&argvars[0]);
+ if (*s == '%' || *s == '#' || *s == '<')
+ {
+ ++emsg_off;
+! result = eval_vars(s, s, &len, NULL, &errormsg, NULL);
+ --emsg_off;
++ if (rettv->v_type == VAR_LIST)
++ {
++ if (rettv_list_alloc(rettv) != FAIL && result != NULL)
++ list_append_string(rettv->vval.v_list, result, -1);
++ else
++ vim_free(result);
++ }
++ else
++ rettv->vval.v_string = result;
+ }
+ else
+ {
+***************
+*** 10041,10047 ****
+ xpc.xp_context = EXPAND_FILES;
+ if (p_wic)
+ options += WILD_ICASE;
+! rettv->vval.v_string = ExpandOne(&xpc, s, NULL, options, WILD_ALL);
+ }
+ else
+ rettv->vval.v_string = NULL;
+--- 10060,10077 ----
+ xpc.xp_context = EXPAND_FILES;
+ if (p_wic)
+ options += WILD_ICASE;
+! if (rettv->v_type == VAR_STRING)
+! rettv->vval.v_string = ExpandOne(&xpc, s, NULL,
+! options, WILD_ALL);
+! else if (rettv_list_alloc(rettv) != FAIL)
+! {
+! int i;
+!
+! ExpandOne(&xpc, s, NULL, options, WILD_ALL_KEEP);
+! for (i = 0; i < xpc.xp_numfiles; i++)
+! list_append_string(rettv->vval.v_list, xpc.xp_files[i], -1);
+! ExpandCleanup(&xpc);
+! }
+ }
+ else
+ rettv->vval.v_string = NULL;
+***************
+*** 11833,11851 ****
+ int error = FALSE;
+
+ /* When the optional second argument is non-zero, don't remove matches
+! * for 'wildignore' and don't put matches for 'suffixes' at the end. */
+! if (argvars[1].v_type != VAR_UNKNOWN
+! && get_tv_number_chk(&argvars[1], &error))
+! options |= WILD_KEEP_ALL;
+ rettv->v_type = VAR_STRING;
+ if (!error)
+ {
+ ExpandInit(&xpc);
+ xpc.xp_context = EXPAND_FILES;
+ if (p_wic)
+ options += WILD_ICASE;
+! rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
+ NULL, options, WILD_ALL);
+ }
+ else
+ rettv->vval.v_string = NULL;
+--- 11863,11901 ----
+ int error = FALSE;
+
+ /* When the optional second argument is non-zero, don't remove matches
+! * for 'wildignore' and don't put matches for 'suffixes' at the end. */
+ rettv->v_type = VAR_STRING;
++ if (argvars[1].v_type != VAR_UNKNOWN)
++ {
++ if (get_tv_number_chk(&argvars[1], &error))
++ options |= WILD_KEEP_ALL;
++ if (argvars[2].v_type != VAR_UNKNOWN
++ && get_tv_number_chk(&argvars[2], &error))
++ {
++ rettv->v_type = VAR_LIST;
++ rettv->vval.v_list = NULL;
++ }
++ }
+ if (!error)
+ {
+ ExpandInit(&xpc);
+ xpc.xp_context = EXPAND_FILES;
+ if (p_wic)
+ options += WILD_ICASE;
+! if (rettv->v_type == VAR_STRING)
+! rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
+ NULL, options, WILD_ALL);
++ else if (rettv_list_alloc(rettv) != FAIL)
++ {
++ int i;
++
++ ExpandOne(&xpc, get_tv_string(&argvars[0]),
++ NULL, options, WILD_ALL_KEEP);
++ for (i = 0; i < xpc.xp_numfiles; i++)
++ list_append_string(rettv->vval.v_list, xpc.xp_files[i], -1);
++
++ ExpandCleanup(&xpc);
++ }
+ }
+ else
+ rettv->vval.v_string = NULL;
+*** ../vim-7.3.464/src/ex_getln.c 2012-02-22 17:58:00.000000000 +0100
+--- src/ex_getln.c 2012-03-07 19:07:01.000000000 +0100
+***************
+*** 3461,3466 ****
+--- 3461,3467 ----
+ * mode = WILD_PREV: use previous match in multiple match, wrap to first
+ * mode = WILD_ALL: return all matches concatenated
+ * mode = WILD_LONGEST: return longest matched part
++ * mode = WILD_ALL_KEEP: get all matches, keep matches
+ *
+ * options = WILD_LIST_NOTFOUND: list entries without a match
+ * options = WILD_HOME_REPLACE: do home_replace() for buffer names
+***************
+*** 3584,3590 ****
+ /*
+ * Check for matching suffixes in file names.
+ */
+! if (mode != WILD_ALL && mode != WILD_LONGEST)
+ {
+ if (xp->xp_numfiles)
+ non_suf_match = xp->xp_numfiles;
+--- 3585,3592 ----
+ /*
+ * Check for matching suffixes in file names.
+ */
+! if (mode != WILD_ALL && mode != WILD_ALL_KEEP
+! && mode != WILD_LONGEST)
+ {
+ if (xp->xp_numfiles)
+ non_suf_match = xp->xp_numfiles;
+*** ../vim-7.3.464/src/vim.h 2011-07-27 17:31:42.000000000 +0200
+--- src/vim.h 2012-03-07 19:03:43.000000000 +0100
+***************
+*** 794,799 ****
+--- 794,800 ----
+ #define WILD_PREV 5
+ #define WILD_ALL 6
+ #define WILD_LONGEST 7
++ #define WILD_ALL_KEEP 8
+
+ #define WILD_LIST_NOTFOUND 1
+ #define WILD_HOME_REPLACE 2
+*** ../vim-7.3.464/src/version.c 2012-03-07 18:04:00.000000000 +0100
+--- src/version.c 2012-03-07 19:14:39.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 465,
+ /**/
+
+--
+Although the scythe isn't pre-eminent among the weapons of war, anyone who
+has been on the wrong end of, say, a peasants' revolt will know that in
+skilled hands it is fearsome.
+ -- (Terry Pratchett, Mort)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.466 b/source/ap/vim/patches/7.3.466
new file mode 100644
index 000000000..0dc42934d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.466
@@ -0,0 +1,49 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.466
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.466
+Problem: Get ml_get error when ":behave mswin" was used and selecting
+ several lines. (A. Sinan Unur)
+Solution: Adjust the end of the operation. (Christian Brabandt)
+Files: src/ops.c
+
+
+*** ../vim-7.3.465/src/ops.c 2012-02-22 17:37:55.000000000 +0100
+--- src/ops.c 2012-03-07 19:27:08.000000000 +0100
+***************
+*** 1957,1962 ****
+--- 1957,1965 ----
+ ++curwin->w_cursor.lnum;
+ del_lines((long)(oap->line_count - 2), FALSE);
+
++ if (delete_last_line)
++ oap->end.lnum = curbuf->b_ml.ml_line_count;
++
+ n = (oap->end.col + 1 - !oap->inclusive);
+ if (oap->inclusive && delete_last_line
+ && n > (int)STRLEN(ml_get(oap->end.lnum)))
+*** ../vim-7.3.465/src/version.c 2012-03-07 19:16:49.000000000 +0100
+--- src/version.c 2012-03-07 19:29:52.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 466,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+153. You find yourself staring at your "inbox" waiting for new e-mail
+ to arrive.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.467 b/source/ap/vim/patches/7.3.467
new file mode 100644
index 000000000..7764217c7
--- /dev/null
+++ b/source/ap/vim/patches/7.3.467
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.467
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.467
+Problem: Cursor positioned wrong at the command line when regaining focus
+ and using some input method.
+Solution: Do not position the cursor in command line mode.
+Files: src/mbyte.c
+
+
+*** ../vim-7.3.466/src/mbyte.c 2011-12-08 15:09:46.000000000 +0100
+--- src/mbyte.c 2012-03-07 19:36:44.000000000 +0100
+***************
+*** 4504,4510 ****
+ vgetc_busy = TRUE;
+ showmode();
+ vgetc_busy = old_vgetc_busy;
+! setcursor();
+ out_flush();
+ }
+
+--- 4504,4511 ----
+ vgetc_busy = TRUE;
+ showmode();
+ vgetc_busy = old_vgetc_busy;
+! if ((State & NORMAL) || (State & INSERT))
+! setcursor();
+ out_flush();
+ }
+
+*** ../vim-7.3.466/src/version.c 2012-03-07 19:30:32.000000000 +0100
+--- src/version.c 2012-03-07 19:38:22.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 467,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+154. You fondle your mouse.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.468 b/source/ap/vim/patches/7.3.468
new file mode 100644
index 000000000..e078f9eae
--- /dev/null
+++ b/source/ap/vim/patches/7.3.468
@@ -0,0 +1,144 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.468
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.468
+Problem: For some compilers the error file is not easily readable.
+Solution: Use QuickFixCmdPre for more commands. (Marcin Szamotulski)
+Files: runtime/doc/autocmd.txt, src/quickfix.c
+
+
+*** ../vim-7.3.467/runtime/doc/autocmd.txt 2012-02-12 20:13:55.000000000 +0100
+--- runtime/doc/autocmd.txt 2012-03-07 20:07:23.000000000 +0100
+***************
+*** 695,701 ****
+ QuickFixCmdPre Before a quickfix command is run (|:make|,
+ |:lmake|, |:grep|, |:lgrep|, |:grepadd|,
+ |:lgrepadd|, |:vimgrep|, |:lvimgrep|,
+! |:vimgrepadd|, |:lvimgrepadd|, |:cscope|).
+ The pattern is matched against the command
+ being run. When |:grep| is used but 'grepprg'
+ is set to "internal" it still matches "grep".
+--- 699,708 ----
+ QuickFixCmdPre Before a quickfix command is run (|:make|,
+ |:lmake|, |:grep|, |:lgrep|, |:grepadd|,
+ |:lgrepadd|, |:vimgrep|, |:lvimgrep|,
+! |:vimgrepadd|, |:lvimgrepadd|, |:cscope|,
+! |:cfile|, |:cgetfile|, |:caddfile|, |:lfile|,
+! |:lgetfile|, |:laddfile|, |:helpgrep|,
+! |:lhelpgrep|).
+ The pattern is matched against the command
+ being run. When |:grep| is used but 'grepprg'
+ is set to "internal" it still matches "grep".
+***************
+*** 706,712 ****
+ *QuickFixCmdPost*
+ QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix
+ command is run, before jumping to the first
+! location. See |QuickFixCmdPost-example|.
+ *RemoteReply*
+ RemoteReply When a reply from a Vim that functions as
+ server was received |server2client()|. The
+--- 713,722 ----
+ *QuickFixCmdPost*
+ QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix
+ command is run, before jumping to the first
+! location. For |:cfile| and |:lfile| commands
+! it is run after error file is read and before
+! moving to the first error.
+! See |QuickFixCmdPost-example|.
+ *RemoteReply*
+ RemoteReply When a reply from a Vim that functions as
+ server was received |server2client()|. The
+*** ../vim-7.3.467/src/quickfix.c 2012-02-22 14:58:24.000000000 +0100
+--- src/quickfix.c 2012-03-07 20:10:07.000000000 +0100
+***************
+*** 2995,3005 ****
+ {
+ win_T *wp = NULL;
+ qf_info_T *qi = &ql_info;
+
+ if (eap->cmdidx == CMD_lfile || eap->cmdidx == CMD_lgetfile
+! || eap->cmdidx == CMD_laddfile)
+ wp = curwin;
+
+ #ifdef FEAT_BROWSE
+ if (cmdmod.browse)
+ {
+--- 2995,3022 ----
+ {
+ win_T *wp = NULL;
+ qf_info_T *qi = &ql_info;
++ #ifdef FEAT_AUTOCMD
++ char_u *au_name = NULL;
++ #endif
+
+ if (eap->cmdidx == CMD_lfile || eap->cmdidx == CMD_lgetfile
+! || eap->cmdidx == CMD_laddfile)
+ wp = curwin;
+
++ #ifdef FEAT_AUTOCMD
++ switch (eap->cmdidx)
++ {
++ case CMD_cfile: au_name = (char_u *)"cfile"; break;
++ case CMD_cgetfile: au_name = (char_u *)"cgetfile"; break;
++ case CMD_caddfile: au_name = (char_u *)"caddfile"; break;
++ case CMD_lfile: au_name = (char_u *)"lfile"; break;
++ case CMD_lgetfile: au_name = (char_u *)"lgetfile"; break;
++ case CMD_laddfile: au_name = (char_u *)"laddfile"; break;
++ default: break;
++ }
++ if (au_name != NULL)
++ apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name, NULL, FALSE, curbuf);
++ #endif
+ #ifdef FEAT_BROWSE
+ if (cmdmod.browse)
+ {
+***************
+*** 3031,3040 ****
+--- 3048,3069 ----
+ && (eap->cmdidx == CMD_cfile
+ || eap->cmdidx == CMD_lfile))
+ {
++ #ifdef FEAT_AUTOCMD
++ if (au_name != NULL)
++ apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, NULL, FALSE, curbuf);
++ #endif
+ if (wp != NULL)
+ qi = GET_LOC_LIST(wp);
+ qf_jump(qi, 0, 0, eap->forceit); /* display first error */
+ }
++
++ else
++ {
++ #ifdef FEAT_AUTOCMD
++ if (au_name != NULL)
++ apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, NULL, FALSE, curbuf);
++ #endif
++ }
+ }
+
+ /*
+*** ../vim-7.3.467/src/version.c 2012-03-07 19:38:52.000000000 +0100
+--- src/version.c 2012-03-07 20:11:54.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 468,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+155. You forget to eat because you're too busy surfing the net.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.469 b/source/ap/vim/patches/7.3.469
new file mode 100644
index 000000000..77ca4a05e
--- /dev/null
+++ b/source/ap/vim/patches/7.3.469
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.469
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.469
+Problem: Compiler warning for unused argument without some features.
+Solution: Add UNUSED.
+Files: src/buffer.c
+
+
+*** ../vim-7.3.468/src/buffer.c 2012-02-22 19:13:00.000000000 +0100
+--- src/buffer.c 2012-03-07 22:30:56.000000000 +0100
+***************
+*** 329,335 ****
+ win_T *win; /* if not NULL, set b_last_cursor */
+ buf_T *buf;
+ int action;
+! int abort_if_last;
+ {
+ #ifdef FEAT_AUTOCMD
+ int is_curbuf;
+--- 329,335 ----
+ win_T *win; /* if not NULL, set b_last_cursor */
+ buf_T *buf;
+ int action;
+! int abort_if_last UNUSED;
+ {
+ #ifdef FEAT_AUTOCMD
+ int is_curbuf;
+*** ../vim-7.3.468/src/version.c 2012-03-07 20:13:44.000000000 +0100
+--- src/version.c 2012-03-07 22:51:54.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 469,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+157. You fum through a magazine, you first check to see if it has a web
+ address.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.470 b/source/ap/vim/patches/7.3.470
new file mode 100644
index 000000000..80bec1564
--- /dev/null
+++ b/source/ap/vim/patches/7.3.470
@@ -0,0 +1,67 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.470
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.470
+Problem: Test 62 fails when compiled without GUI and X11.
+Solution: Don't test :drop when it is not supported.
+Files: src/testdir/test62.in
+
+
+*** ../vim-7.3.469/src/testdir/test62.in 2012-02-22 19:13:00.000000000 +0100
+--- src/testdir/test62.in 2012-03-07 22:46:17.000000000 +0100
+***************
+*** 49,55 ****
+ :tabclose
+ :call append(line('$'), test_status)
+ :"
+! :"
+ :" Test for ":tab drop exist-file" to keep current window.
+ :sp test1
+ :tab drop test1
+--- 49,55 ----
+ :tabclose
+ :call append(line('$'), test_status)
+ :"
+! :if has('gui') || has('clientserver')
+ :" Test for ":tab drop exist-file" to keep current window.
+ :sp test1
+ :tab drop test1
+***************
+*** 85,90 ****
+--- 85,96 ----
+ :tabclose
+ :q
+ :call append(line('$'), test_status)
++ :else
++ :" :drop not supported
++ :call append(line('$'), 'tab drop 1: pass')
++ :call append(line('$'), 'tab drop 2: pass')
++ :call append(line('$'), 'tab drop 3: pass')
++ :endif
+ :"
+ :"
+ :/^Results/,$w! test.out
+*** ../vim-7.3.469/src/version.c 2012-03-07 22:52:30.000000000 +0100
+--- src/version.c 2012-03-07 22:53:40.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 470,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+158. You get a tuner card so you can watch TV while surfing.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.471 b/source/ap/vim/patches/7.3.471
new file mode 100644
index 000000000..be814324f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.471
@@ -0,0 +1,92 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.471
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.471
+Problem: Can't abort listing placed signs.
+Solution: Check "got_int". (Christian Brabandt)
+Files: src/buffer.c, src/ex_cmds.c
+
+
+*** ../vim-7.3.470/src/buffer.c 2012-03-07 22:52:30.000000000 +0100
+--- src/buffer.c 2012-03-16 13:54:48.000000000 +0100
+***************
+*** 5557,5563 ****
+ buf = firstbuf;
+ else
+ buf = rbuf;
+! while (buf != NULL)
+ {
+ if (buf->b_signlist != NULL)
+ {
+--- 5557,5563 ----
+ buf = firstbuf;
+ else
+ buf = rbuf;
+! while (buf != NULL && !got_int)
+ {
+ if (buf->b_signlist != NULL)
+ {
+***************
+*** 5565,5571 ****
+ MSG_PUTS_ATTR(lbuf, hl_attr(HLF_D));
+ msg_putchar('\n');
+ }
+! for (p = buf->b_signlist; p != NULL; p = p->next)
+ {
+ vim_snprintf(lbuf, BUFSIZ, _(" line=%ld id=%d name=%s"),
+ (long)p->lnum, p->id, sign_typenr2name(p->typenr));
+--- 5565,5571 ----
+ MSG_PUTS_ATTR(lbuf, hl_attr(HLF_D));
+ msg_putchar('\n');
+ }
+! for (p = buf->b_signlist; p != NULL && !got_int; p = p->next)
+ {
+ vim_snprintf(lbuf, BUFSIZ, _(" line=%ld id=%d name=%s"),
+ (long)p->lnum, p->id, sign_typenr2name(p->typenr));
+*** ../vim-7.3.470/src/ex_cmds.c 2012-03-07 14:57:50.000000000 +0100
+--- src/ex_cmds.c 2012-03-16 13:58:50.000000000 +0100
+***************
+*** 6729,6735 ****
+ if (idx == SIGNCMD_LIST && *arg == NUL)
+ {
+ /* ":sign list": list all defined signs */
+! for (sp = first_sign; sp != NULL; sp = sp->sn_next)
+ sign_list_defined(sp);
+ }
+ else if (*arg == NUL)
+--- 6729,6735 ----
+ if (idx == SIGNCMD_LIST && *arg == NUL)
+ {
+ /* ":sign list": list all defined signs */
+! for (sp = first_sign; sp != NULL && !got_int; sp = sp->sn_next)
+ sign_list_defined(sp);
+ }
+ else if (*arg == NUL)
+*** ../vim-7.3.470/src/version.c 2012-03-07 22:55:17.000000000 +0100
+--- src/version.c 2012-03-16 13:55:28.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 471,
+ /**/
+
+--
+Some of the well know MS-Windows errors:
+ EMEMORY Memory error caused by..., eh...
+ ELICENSE Your license has expired, give us more money!
+ EMOUSE Mouse moved, reinstall Windows
+ EILLEGAL Illegal error, you are not allowed to see this
+ EVIRUS Undetectable virus found
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.472 b/source/ap/vim/patches/7.3.472
new file mode 100644
index 000000000..217b2fc99
--- /dev/null
+++ b/source/ap/vim/patches/7.3.472
@@ -0,0 +1,88 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.472
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.472
+Problem: Crash when using ":redraw" in a BufEnter autocommand and
+ switching to another tab. (驼峰)
+Solution: Move triggering the the autocommands to after correcting the
+ option values. Also check the row value to be out of bounds.
+ (Christian Brabandt, Sergey Khorev)
+Files: src/screen.c, src/window.c
+
+
+*** ../vim-7.3.471/src/screen.c 2012-02-04 23:34:57.000000000 +0100
+--- src/screen.c 2012-03-16 18:59:20.000000000 +0100
+***************
+*** 5371,5376 ****
+--- 5371,5382 ----
+ # define CHAR_CELLS 1
+ #endif
+
++ /* Check for illegal row and col, just in case. */
++ if (row >= Rows)
++ row = Rows - 1;
++ if (endcol > Columns)
++ endcol = Columns;
++
+ # ifdef FEAT_CLIPBOARD
+ clip_may_clear_selection(row, row);
+ # endif
+*** ../vim-7.3.471/src/window.c 2012-02-22 14:58:24.000000000 +0100
+--- src/window.c 2012-03-16 18:43:01.000000000 +0100
+***************
+*** 3676,3688 ****
+ win_enter_ext(tp->tp_curwin, FALSE, TRUE);
+ prevwin = next_prevwin;
+
+- #ifdef FEAT_AUTOCMD
+- apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf);
+-
+- if (old_curbuf != curbuf)
+- apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf);
+- #endif
+-
+ last_status(FALSE); /* status line may appear or disappear */
+ (void)win_comp_pos(); /* recompute w_winrow for all windows */
+ must_redraw = CLEAR; /* need to redraw everything */
+--- 3676,3681 ----
+***************
+*** 3712,3717 ****
+--- 3705,3718 ----
+ gui_may_update_scrollbars();
+ #endif
+
++ #ifdef FEAT_AUTOCMD
++ /* Apply autocommands after updating the display, when 'rows' and
++ * 'columns' have been set correctly. */
++ apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf);
++ if (old_curbuf != curbuf)
++ apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf);
++ #endif
++
+ redraw_all_later(CLEAR);
+ }
+
+*** ../vim-7.3.471/src/version.c 2012-03-16 14:32:10.000000000 +0100
+--- src/version.c 2012-03-16 19:02:53.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 472,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+200. You really believe in the concept of a "paperless" office.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.473 b/source/ap/vim/patches/7.3.473
new file mode 100644
index 000000000..571f85dac
--- /dev/null
+++ b/source/ap/vim/patches/7.3.473
@@ -0,0 +1,68 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.473
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.473
+Problem: 'cursorbind' does not work correctly in combination with
+ 'virtualedit' set to "all".
+Solution: Copy coladd. (Gary Johnson)
+Files: src/move.c
+
+
+*** ../vim-7.3.472/src/move.c 2012-02-04 23:34:57.000000000 +0100
+--- src/move.c 2012-03-16 19:20:57.000000000 +0100
+***************
+*** 2843,2849 ****
+ do_check_cursorbind()
+ {
+ linenr_T line = curwin->w_cursor.lnum;
+! colnr_T col = curwin->w_cursor.col;
+ win_T *old_curwin = curwin;
+ buf_T *old_curbuf = curbuf;
+ int restart_edit_save;
+--- 2843,2852 ----
+ do_check_cursorbind()
+ {
+ linenr_T line = curwin->w_cursor.lnum;
+! colnr_T col = curwin->w_cursor.col;
+! # ifdef FEAT_VIRTUALEDIT
+! colnr_T coladd = curwin->w_cursor.coladd;
+! # endif
+ win_T *old_curwin = curwin;
+ buf_T *old_curbuf = curbuf;
+ int restart_edit_save;
+***************
+*** 2875,2880 ****
+--- 2878,2886 ----
+ # endif
+ curwin->w_cursor.lnum = line;
+ curwin->w_cursor.col = col;
++ # ifdef FEAT_VIRTUALEDIT
++ curwin->w_cursor.coladd = coladd;
++ # endif
+
+ /* Make sure the cursor is in a valid position. Temporarily set
+ * "restart_edit" to allow the cursor to be beyond the EOL. */
+*** ../vim-7.3.472/src/version.c 2012-03-16 19:07:54.000000000 +0100
+--- src/version.c 2012-03-16 19:24:06.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 473,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+201. When somebody asks you where you are, you tell them in which chat room.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.474 b/source/ap/vim/patches/7.3.474
new file mode 100644
index 000000000..dc6b1d6eb
--- /dev/null
+++ b/source/ap/vim/patches/7.3.474
@@ -0,0 +1,62 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.474
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.474
+Problem: Perl build with gcc 4 fails.
+Solution: Remove XS() statements. (Yasuhiro Matsumoto)
+Files: src/if_perl.xs
+
+
+*** ../vim-7.3.473/src/if_perl.xs 2012-02-12 00:31:47.000000000 +0100
+--- src/if_perl.xs 2012-03-16 19:33:23.000000000 +0100
+***************
+*** 913,936 ****
+ win_T *win_find_nr(int n) { return curwin; }
+ #endif
+
+- XS(XS_VIM_Msg);
+- XS(XS_VIM_SetOption);
+- XS(XS_VIM_DoCommand);
+- XS(XS_VIM_Eval);
+- XS(XS_VIM_Buffers);
+- XS(XS_VIM_Windows);
+- XS(XS_VIWIN_DESTROY);
+- XS(XS_VIWIN_Buffer);
+- XS(XS_VIWIN_SetHeight);
+- XS(XS_VIWIN_Cursor);
+- XS(XS_VIBUF_DESTROY);
+- XS(XS_VIBUF_Name);
+- XS(XS_VIBUF_Number);
+- XS(XS_VIBUF_Count);
+- XS(XS_VIBUF_Get);
+- XS(XS_VIBUF_Set);
+- XS(XS_VIBUF_Delete);
+- XS(XS_VIBUF_Append);
+ XS(boot_VIM);
+
+ static void
+--- 913,918 ----
+*** ../vim-7.3.473/src/version.c 2012-03-16 19:24:21.000000000 +0100
+--- src/version.c 2012-03-16 19:28:03.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 474,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+202. You're amazed to find out Spam is a food.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.475 b/source/ap/vim/patches/7.3.475
new file mode 100644
index 000000000..54c27a21f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.475
@@ -0,0 +1,98 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.475
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.475
+Problem: In a terminal with few colors the omnicomplete menu may be hard to
+ see when using the default colors.
+Solution: Use more explicit colors. (suggested by Alex Henrie)
+Files: src/syntax.c
+
+
+*** ../vim-7.3.474/src/syntax.c 2012-01-10 22:26:12.000000000 +0100
+--- src/syntax.c 2012-03-16 20:14:22.000000000 +0100
+***************
+*** 6516,6523 ****
+ "DiffText term=reverse cterm=bold ctermbg=Red gui=bold guibg=Red"),
+ #endif
+ #ifdef FEAT_INS_EXPAND
+- CENT("PmenuThumb cterm=reverse",
+- "PmenuThumb cterm=reverse gui=reverse"),
+ CENT("PmenuSbar ctermbg=Grey",
+ "PmenuSbar ctermbg=Grey guibg=Grey"),
+ #endif
+--- 6516,6521 ----
+***************
+*** 6557,6566 ****
+ "SpellLocal term=underline ctermbg=Cyan guisp=DarkCyan gui=undercurl"),
+ #endif
+ #ifdef FEAT_INS_EXPAND
+! CENT("Pmenu ctermbg=LightMagenta",
+! "Pmenu ctermbg=LightMagenta guibg=LightMagenta"),
+! CENT("PmenuSel ctermbg=LightGrey",
+! "PmenuSel ctermbg=LightGrey guibg=Grey"),
+ #endif
+ CENT("SpecialKey term=bold ctermfg=DarkBlue",
+ "SpecialKey term=bold ctermfg=DarkBlue guifg=Blue"),
+--- 6555,6566 ----
+ "SpellLocal term=underline ctermbg=Cyan guisp=DarkCyan gui=undercurl"),
+ #endif
+ #ifdef FEAT_INS_EXPAND
+! CENT("PmenuThumb ctermbg=Black",
+! "PmenuThumb ctermbg=Black guibg=Black"),
+! CENT("Pmenu ctermbg=LightMagenta ctermfg=Black",
+! "Pmenu ctermbg=LightMagenta ctermfg=Black guibg=LightMagenta"),
+! CENT("PmenuSel ctermbg=LightGrey ctermfg=Black",
+! "PmenuSel ctermbg=LightGrey ctermfg=Black guibg=Grey"),
+ #endif
+ CENT("SpecialKey term=bold ctermfg=DarkBlue",
+ "SpecialKey term=bold ctermfg=DarkBlue guifg=Blue"),
+***************
+*** 6645,6654 ****
+ "SpellLocal term=underline ctermbg=Cyan guisp=Cyan gui=undercurl"),
+ #endif
+ #ifdef FEAT_INS_EXPAND
+! CENT("Pmenu ctermbg=Magenta",
+! "Pmenu ctermbg=Magenta guibg=Magenta"),
+! CENT("PmenuSel ctermbg=DarkGrey",
+! "PmenuSel ctermbg=DarkGrey guibg=DarkGrey"),
+ #endif
+ CENT("Title term=bold ctermfg=LightMagenta",
+ "Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta"),
+--- 6645,6656 ----
+ "SpellLocal term=underline ctermbg=Cyan guisp=Cyan gui=undercurl"),
+ #endif
+ #ifdef FEAT_INS_EXPAND
+! CENT("PmenuThumb ctermbg=White",
+! "PmenuThumb ctermbg=White guibg=White"),
+! CENT("Pmenu ctermbg=Magenta ctermfg=Black",
+! "Pmenu ctermbg=Magenta ctermfg=Black guibg=Magenta"),
+! CENT("PmenuSel ctermbg=DarkGrey ctermfg=Black",
+! "PmenuSel ctermbg=DarkGrey ctermfg=Black guibg=DarkGrey"),
+ #endif
+ CENT("Title term=bold ctermfg=LightMagenta",
+ "Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta"),
+*** ../vim-7.3.474/src/version.c 2012-03-16 19:34:43.000000000 +0100
+--- src/version.c 2012-03-16 20:05:35.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 475,
+ /**/
+
+--
+Spam seems to be something useful to novices. Later you realize that
+it's a bunch of indigestable junk that only clogs your system.
+Applies to both the food and the e-mail!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.476 b/source/ap/vim/patches/7.3.476
new file mode 100644
index 000000000..959b906bc
--- /dev/null
+++ b/source/ap/vim/patches/7.3.476
@@ -0,0 +1,56 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.476
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.476
+Problem: When selecting a block, using "$" to include the end of each line
+ and using "A" and typing a backspace strange things happen.
+ (Yuangchen Xie)
+Solution: Avoid using a negative length. (Christian Brabandt)
+Files: src/ops.c
+
+
+*** ../vim-7.3.475/src/ops.c 2012-03-07 19:30:32.000000000 +0100
+--- src/ops.c 2012-03-23 12:22:36.000000000 +0100
+***************
+*** 2602,2608 ****
+ firstline = ml_get(oap->start.lnum) + bd.textcol;
+ if (oap->op_type == OP_APPEND)
+ firstline += bd.textlen;
+! if ((ins_len = (long)STRLEN(firstline) - pre_textlen) > 0)
+ {
+ ins_text = vim_strnsave(firstline, (int)ins_len);
+ if (ins_text != NULL)
+--- 2602,2609 ----
+ firstline = ml_get(oap->start.lnum) + bd.textcol;
+ if (oap->op_type == OP_APPEND)
+ firstline += bd.textlen;
+! if (pre_textlen >= 0
+! && (ins_len = (long)STRLEN(firstline) - pre_textlen) > 0)
+ {
+ ins_text = vim_strnsave(firstline, (int)ins_len);
+ if (ins_text != NULL)
+*** ../vim-7.3.475/src/version.c 2012-03-16 20:16:42.000000000 +0100
+--- src/version.c 2012-03-23 14:14:49.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 476,
+ /**/
+
+--
+"Marriage is a wonderful institution...
+but who wants to live in an institution?"
+ - Groucho Marx
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.477 b/source/ap/vim/patches/7.3.477
new file mode 100644
index 000000000..8030ee65a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.477
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.477
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.477
+Problem: Using ":echo" to output enough lines to scroll, then using "j" and
+ "k" at the more prompt, displays the command on top of the output.
+ (Marcin Szamotulski)
+Solution: Put the output below the command. (Christian Brabandt)
+Files: src/eval.c
+
+
+*** ../vim-7.3.476/src/eval.c 2012-03-07 19:16:49.000000000 +0100
+--- src/eval.c 2012-03-23 15:11:30.000000000 +0100
+***************
+*** 20492,20498 ****
+--- 20492,20503 ----
+ /* Call msg_start() after eval1(), evaluating the expression
+ * may cause a message to appear. */
+ if (eap->cmdidx == CMD_echo)
++ {
++ /* Put the output below the command, makes scrolling back
++ * at more prompt work. */
++ msg_didout = TRUE;
+ msg_start();
++ }
+ }
+ else if (eap->cmdidx == CMD_echo)
+ msg_puts_attr((char_u *)" ", echo_attr);
+*** ../vim-7.3.476/src/version.c 2012-03-23 14:16:19.000000000 +0100
+--- src/version.c 2012-03-23 15:13:58.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 477,
+ /**/
+
+--
+"Marriage is when a man and woman become as one; the trouble starts
+when they try to decide which one"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.478 b/source/ap/vim/patches/7.3.478
new file mode 100644
index 000000000..bad69ef2f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.478
@@ -0,0 +1,46 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.478
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.478
+Problem: Memory leak using the ':rv!' command when reading dictionary or
+ list global variables i.e. with 'viminfo' containing !.
+Solution: Free the typeval. (Dominique Pelle)
+Files: src/eval.c
+
+
+*** ../vim-7.3.477/src/eval.c 2012-03-23 15:18:20.000000000 +0100
+--- src/eval.c 2012-03-23 15:28:42.000000000 +0100
+***************
+*** 22976,22981 ****
+--- 22976,22982 ----
+ {
+ vim_free(tv.vval.v_string);
+ tv = *etv;
++ vim_free(etv);
+ }
+ }
+
+*** ../vim-7.3.477/src/version.c 2012-03-23 15:18:20.000000000 +0100
+--- src/version.c 2012-03-23 15:29:22.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 478,
+ /**/
+
+--
+"Marriage is the process of finding out what kind of man your wife
+would have preferred"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.479 b/source/ap/vim/patches/7.3.479
new file mode 100644
index 000000000..fc256c1fb
--- /dev/null
+++ b/source/ap/vim/patches/7.3.479
@@ -0,0 +1,134 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.479
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.479
+Problem: When 'cursorline' is set the line number highlighting can't be set
+ separately.
+Solution: Add "CursorLineNr". (Howard Buchholz)
+Files: src/option.c, src/screen.c, src/syntax.c, src/vim.h
+
+
+*** ../vim-7.3.478/src/option.c 2012-02-29 13:51:32.000000000 +0100
+--- src/option.c 2012-03-23 15:44:57.000000000 +0100
+***************
+*** 460,468 ****
+ #if defined(FEAT_DIFF) || defined(FEAT_FOLDING) || defined(FEAT_SPELL) \
+ || defined(FEAT_VERTSPLIT) || defined(FEAT_CLIPBOARD) \
+ || defined(FEAT_INS_EXPAND) || defined(FEAT_SYN_HL) || defined(FEAT_CONCEAL)
+! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,r:Question,s:StatusLine,S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg,W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete,T:DiffText,>:SignColumn,-:Conceal,B:SpellBad,P:SpellCap,R:SpellRare,L:SpellLocal,+:Pmenu,=:PmenuSel,x:PmenuSbar,X:PmenuThumb,*:TabLine,#:TabLineSel,_:TabLineFill,!:CursorColumn,.:CursorLine,o:ColorColumn"
+ #else
+! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,r:Question,s:StatusLine,S:StatusLineNC,t:Title,v:Visual,w:WarningMsg,W:WildMenu,>:SignColumn,*:TabLine,#:TabLineSel,_:TabLineFill"
+ #endif
+
+ /*
+--- 460,468 ----
+ #if defined(FEAT_DIFF) || defined(FEAT_FOLDING) || defined(FEAT_SPELL) \
+ || defined(FEAT_VERTSPLIT) || defined(FEAT_CLIPBOARD) \
+ || defined(FEAT_INS_EXPAND) || defined(FEAT_SYN_HL) || defined(FEAT_CONCEAL)
+! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,N:CursorLineNr,r:Question,s:StatusLine,S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg,W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete,T:DiffText,>:SignColumn,-:Conceal,B:SpellBad,P:SpellCap,R:SpellRare,L:SpellLocal,+:Pmenu,=:PmenuSel,x:PmenuSbar,X:PmenuThumb,*:TabLine,#:TabLineSel,_:TabLineFill,!:CursorColumn,.:CursorLine,o:ColorColumn"
+ #else
+! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,N:CursorLineNr,r:Question,s:StatusLine,S:StatusLineNC,t:Title,v:Visual,w:WarningMsg,W:WildMenu,>:SignColumn,*:TabLine,#:TabLineSel,_:TabLineFill"
+ #endif
+
+ /*
+*** ../vim-7.3.478/src/screen.c 2012-03-16 19:07:54.000000000 +0100
+--- src/screen.c 2012-03-23 16:09:15.000000000 +0100
+***************
+*** 3501,3509 ****
+ char_attr = hl_attr(HLF_N);
+ #ifdef FEAT_SYN_HL
+ /* When 'cursorline' is set highlight the line number of
+! * the current line differently. */
+ if (wp->w_p_cul && lnum == wp->w_cursor.lnum)
+! char_attr = hl_combine_attr(hl_attr(HLF_CUL), char_attr);
+ #endif
+ }
+ }
+--- 3501,3511 ----
+ char_attr = hl_attr(HLF_N);
+ #ifdef FEAT_SYN_HL
+ /* When 'cursorline' is set highlight the line number of
+! * the current line differently.
+! * TODO: Can we use CursorLine instead of CursorLineNr
+! * when CursorLineNr isn't set? */
+ if (wp->w_p_cul && lnum == wp->w_cursor.lnum)
+! char_attr = hl_attr(HLF_CLN);
+ #endif
+ }
+ }
+*** ../vim-7.3.478/src/syntax.c 2012-03-16 20:16:42.000000000 +0100
+--- src/syntax.c 2012-03-23 16:23:57.000000000 +0100
+***************
+*** 6538,6543 ****
+--- 6538,6545 ----
+ "Directory term=bold ctermfg=DarkBlue guifg=Blue"),
+ CENT("LineNr term=underline ctermfg=Brown",
+ "LineNr term=underline ctermfg=Brown guifg=Brown"),
++ CENT("CursorLineNr term=bold ctermfg=Brown",
++ "CursorLineNr term=bold ctermfg=Brown gui=bold guifg=Brown"),
+ CENT("MoreMsg term=bold ctermfg=DarkGreen",
+ "MoreMsg term=bold ctermfg=DarkGreen gui=bold guifg=SeaGreen"),
+ CENT("Question term=standout ctermfg=DarkGreen",
+***************
+*** 6626,6631 ****
+--- 6628,6635 ----
+ "Directory term=bold ctermfg=LightCyan guifg=Cyan"),
+ CENT("LineNr term=underline ctermfg=Yellow",
+ "LineNr term=underline ctermfg=Yellow guifg=Yellow"),
++ CENT("CursorLineNr term=bold ctermfg=Yellow",
++ "CursorLineNr term=bold ctermfg=Yellow gui=bold guifg=Yellow"),
+ CENT("MoreMsg term=bold ctermfg=LightGreen",
+ "MoreMsg term=bold ctermfg=LightGreen gui=bold guifg=SeaGreen"),
+ CENT("Question term=standout ctermfg=LightGreen",
+*** ../vim-7.3.478/src/vim.h 2012-03-07 19:16:49.000000000 +0100
+--- src/vim.h 2012-03-23 15:44:57.000000000 +0100
+***************
+*** 1318,1323 ****
+--- 1318,1324 ----
+ , HLF_M /* "--More--" message */
+ , HLF_CM /* Mode (e.g., "-- INSERT --") */
+ , HLF_N /* line number for ":number" and ":#" commands */
++ , HLF_CLN /* current line number */
+ , HLF_R /* return to continue message and yes/no questions */
+ , HLF_S /* status lines */
+ , HLF_SNC /* status lines of not-current windows */
+***************
+*** 1355,1361 ****
+ /* The HL_FLAGS must be in the same order as the HLF_ enums!
+ * When changing this also adjust the default for 'highlight'. */
+ #define HL_FLAGS {'8', '@', 'd', 'e', 'h', 'i', 'l', 'm', 'M', \
+! 'n', 'r', 's', 'S', 'c', 't', 'v', 'V', 'w', 'W', \
+ 'f', 'F', 'A', 'C', 'D', 'T', '-', '>', \
+ 'B', 'P', 'R', 'L', \
+ '+', '=', 'x', 'X', '*', '#', '_', '!', '.', 'o'}
+--- 1356,1362 ----
+ /* The HL_FLAGS must be in the same order as the HLF_ enums!
+ * When changing this also adjust the default for 'highlight'. */
+ #define HL_FLAGS {'8', '@', 'd', 'e', 'h', 'i', 'l', 'm', 'M', \
+! 'n', 'N', 'r', 's', 'S', 'c', 't', 'v', 'V', 'w', 'W', \
+ 'f', 'F', 'A', 'C', 'D', 'T', '-', '>', \
+ 'B', 'P', 'R', 'L', \
+ '+', '=', 'x', 'X', '*', '#', '_', '!', '.', 'o'}
+*** ../vim-7.3.478/src/version.c 2012-03-23 15:36:57.000000000 +0100
+--- src/version.c 2012-03-23 16:16:41.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 479,
+ /**/
+
+--
+If you're sending someone Styrofoam, what do you pack it in?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.480 b/source/ap/vim/patches/7.3.480
new file mode 100644
index 000000000..6d1e21dee
--- /dev/null
+++ b/source/ap/vim/patches/7.3.480
@@ -0,0 +1,237 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.480
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.480
+Problem: When using ":qa" and there is a changed buffer picking the buffer
+ to jump to is not very good.
+Solution: Consider current and other tab pages. (Hirohito Higashi)
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.3.479/src/ex_cmds2.c 2012-02-22 18:29:29.000000000 +0100
+--- src/ex_cmds2.c 2012-03-23 17:01:31.000000000 +0100
+***************
+*** 1569,1574 ****
+--- 1569,1594 ----
+ || forceit);
+ }
+
++ static void add_bufnum __ARGS((int *bufnrs, int *bufnump, int nr));
++
++ /*
++ * Add a buffer number to "bufnrs", unless it's already there.
++ */
++ static void
++ add_bufnum(bufnrs, bufnump, nr)
++ int *bufnrs;
++ int *bufnump;
++ int nr;
++ {
++ int i;
++
++ for (i = 0; i < *bufnump; ++i)
++ if (bufnrs[i] == nr)
++ return;
++ bufnrs[*bufnump] = nr;
++ *bufnump = *bufnump + 1;
++ }
++
+ /*
+ * Return TRUE if any buffer was changed and cannot be abandoned.
+ * That changed buffer becomes the current buffer.
+***************
+*** 1577,1608 ****
+ check_changed_any(hidden)
+ int hidden; /* Only check hidden buffers */
+ {
+ buf_T *buf;
+ int save;
+ #ifdef FEAT_WINDOWS
+ win_T *wp;
+ #endif
+
+! for (;;)
+ {
+! /* check curbuf first: if it was changed we can't abandon it */
+! if (!hidden && curbufIsChanged())
+! buf = curbuf;
+! else
+ {
+! for (buf = firstbuf; buf != NULL; buf = buf->b_next)
+! if ((!hidden || buf->b_nwindows == 0) && bufIsChanged(buf))
+! break;
+ }
+- if (buf == NULL) /* No buffers changed */
+- return FALSE;
+-
+- /* Try auto-writing the buffer. If this fails but the buffer no
+- * longer exists it's not changed, that's OK. */
+- if (check_changed(buf, p_awa, TRUE, FALSE, TRUE) && buf_valid(buf))
+- break; /* didn't save - still changes */
+ }
+
+ exiting = FALSE;
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+ /*
+--- 1597,1660 ----
+ check_changed_any(hidden)
+ int hidden; /* Only check hidden buffers */
+ {
++ int ret = FALSE;
+ buf_T *buf;
+ int save;
++ int i;
++ int bufnum = 0;
++ int bufcount = 0;
++ int *bufnrs;
+ #ifdef FEAT_WINDOWS
++ tabpage_T *tp;
+ win_T *wp;
+ #endif
+
+! for (buf = firstbuf; buf != NULL; buf = buf->b_next)
+! ++bufcount;
+!
+! if (bufcount == 0)
+! return FALSE;
+!
+! bufnrs = (int *)alloc(sizeof(int) * bufcount);
+! if (bufnrs == NULL)
+! return FALSE;
+!
+! /* curbuf */
+! bufnrs[bufnum++] = curbuf->b_fnum;
+! #ifdef FEAT_WINDOWS
+! /* buf in curtab */
+! FOR_ALL_WINDOWS(wp)
+! if (wp->w_buffer != curbuf)
+! add_bufnum(bufnrs, &bufnum, wp->w_buffer->b_fnum);
+!
+! /* buf in other tab */
+! for (tp = first_tabpage; tp != NULL; tp = tp->tp_next)
+! if (tp != curtab)
+! for (wp = tp->tp_firstwin; wp != NULL; wp = wp->w_next)
+! add_bufnum(bufnrs, &bufnum, wp->w_buffer->b_fnum);
+! #endif
+! /* any other buf */
+! for (buf = firstbuf; buf != NULL; buf = buf->b_next)
+! add_bufnum(bufnrs, &bufnum, buf->b_fnum);
+!
+! for (i = 0; i < bufnum; ++i)
+ {
+! buf = buflist_findnr(bufnrs[i]);
+! if (buf == NULL)
+! continue;
+! if ((!hidden || buf->b_nwindows == 0) && bufIsChanged(buf))
+ {
+! /* Try auto-writing the buffer. If this fails but the buffer no
+! * longer exists it's not changed, that's OK. */
+! if (check_changed(buf, p_awa, TRUE, FALSE, TRUE) && buf_valid(buf))
+! break; /* didn't save - still changes */
+ }
+ }
+
++ if (i >= bufnum)
++ goto theend;
++
++ ret = TRUE;
+ exiting = FALSE;
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+ /*
+***************
+*** 1635,1658 ****
+ #ifdef FEAT_WINDOWS
+ /* Try to find a window that contains the buffer. */
+ if (buf != curbuf)
+! for (wp = firstwin; wp != NULL; wp = wp->w_next)
+ if (wp->w_buffer == buf)
+ {
+! win_goto(wp);
+ # ifdef FEAT_AUTOCMD
+ /* Paranoia: did autocms wipe out the buffer with changes? */
+ if (!buf_valid(buf))
+! return TRUE;
+ # endif
+! break;
+ }
+ #endif
+
+ /* Open the changed buffer in the current window. */
+ if (buf != curbuf)
+ set_curbuf(buf, DOBUF_GOTO);
+
+! return TRUE;
+ }
+
+ /*
+--- 1687,1715 ----
+ #ifdef FEAT_WINDOWS
+ /* Try to find a window that contains the buffer. */
+ if (buf != curbuf)
+! FOR_ALL_TAB_WINDOWS(tp, wp)
+ if (wp->w_buffer == buf)
+ {
+! goto_tabpage_win(tp, wp);
+ # ifdef FEAT_AUTOCMD
+ /* Paranoia: did autocms wipe out the buffer with changes? */
+ if (!buf_valid(buf))
+! {
+! goto theend;
+! }
+ # endif
+! goto buf_found;
+ }
++ buf_found:
+ #endif
+
+ /* Open the changed buffer in the current window. */
+ if (buf != curbuf)
+ set_curbuf(buf, DOBUF_GOTO);
+
+! theend:
+! vim_free(bufnrs);
+! return ret;
+ }
+
+ /*
+***************
+*** 3274,3280 ****
+ home_replace(NULL, SCRIPT_ITEM(i).sn_name,
+ NameBuff, MAXPATHL, TRUE);
+ smsg((char_u *)"%3d: %s", i, NameBuff);
+! }
+ }
+
+ # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO)
+--- 3331,3337 ----
+ home_replace(NULL, SCRIPT_ITEM(i).sn_name,
+ NameBuff, MAXPATHL, TRUE);
+ smsg((char_u *)"%3d: %s", i, NameBuff);
+! }
+ }
+
+ # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO)
+*** ../vim-7.3.479/src/version.c 2012-03-23 16:25:13.000000000 +0100
+--- src/version.c 2012-03-23 16:48:06.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 480,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+243. You unsuccessfully try to download a pizza from www.dominos.com.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.481 b/source/ap/vim/patches/7.3.481
new file mode 100644
index 000000000..69f691585
--- /dev/null
+++ b/source/ap/vim/patches/7.3.481
@@ -0,0 +1,65 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.481
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.481
+Problem: Changing 'virtualedit' in an operator function to "all" does not
+ have the desired effect. (Aaron Bohannon)
+Solution: Save, reset and restore virtual_op when executing an operator
+ function.
+Files: src/normal.c
+
+
+*** ../vim-7.3.480/src/normal.c 2012-02-05 01:18:41.000000000 +0100
+--- src/normal.c 2012-03-28 12:59:46.000000000 +0200
+***************
+*** 2279,2284 ****
+--- 2279,2285 ----
+ {
+ #ifdef FEAT_EVAL
+ char_u *(argv[1]);
++ int save_virtual_op = virtual_op;
+
+ if (*p_opfunc == NUL)
+ EMSG(_("E774: 'operatorfunc' is empty"));
+***************
+*** 2297,2303 ****
+--- 2298,2311 ----
+ argv[0] = (char_u *)"line";
+ else
+ argv[0] = (char_u *)"char";
++
++ /* Reset virtual_op so that 'virtualedit' can be changed in the
++ * function. */
++ virtual_op = MAYBE;
++
+ (void)call_func_retnr(p_opfunc, 1, argv, FALSE);
++
++ virtual_op = save_virtual_op;
+ }
+ #else
+ EMSG(_("E775: Eval feature not available"));
+*** ../vim-7.3.480/src/version.c 2012-03-23 18:39:10.000000000 +0100
+--- src/version.c 2012-03-28 12:50:20.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 481,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+269. You wonder how you can make your dustbin produce Sesame Street's
+ Oscar's the Garbage Monster song when you empty it.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.482 b/source/ap/vim/patches/7.3.482
new file mode 100644
index 000000000..56ff30178
--- /dev/null
+++ b/source/ap/vim/patches/7.3.482
@@ -0,0 +1,57 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.482
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.482
+Problem: With 'cursorbind' set moving up/down does not always keep the same
+ column.
+Solution: Set curswant appropriately. (Gary Johnson)
+Files: src/move.c
+
+
+*** ../vim-7.3.481/src/move.c 2012-03-16 19:24:21.000000000 +0100
+--- src/move.c 2012-03-28 14:16:02.000000000 +0200
+***************
+*** 2847,2852 ****
+--- 2847,2854 ----
+ # ifdef FEAT_VIRTUALEDIT
+ colnr_T coladd = curwin->w_cursor.coladd;
+ # endif
++ colnr_T curswant = curwin->w_curswant;
++ int set_curswant = curwin->w_set_curswant;
+ win_T *old_curwin = curwin;
+ buf_T *old_curbuf = curbuf;
+ int restart_edit_save;
+***************
+*** 2881,2886 ****
+--- 2883,2890 ----
+ # ifdef FEAT_VIRTUALEDIT
+ curwin->w_cursor.coladd = coladd;
+ # endif
++ curwin->w_curswant = curswant;
++ curwin->w_set_curswant = set_curswant;
+
+ /* Make sure the cursor is in a valid position. Temporarily set
+ * "restart_edit" to allow the cursor to be beyond the EOL. */
+*** ../vim-7.3.481/src/version.c 2012-03-28 12:59:53.000000000 +0200
+--- src/version.c 2012-03-28 14:15:56.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 482,
+ /**/
+
+--
+Women are probably the main cause of free software starvation.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.483 b/source/ap/vim/patches/7.3.483
new file mode 100644
index 000000000..bab488b4a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.483
@@ -0,0 +1,97 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.483
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.483 (after 7.3.477)
+Problem: More prompt shows up too often.
+Solution: Instead of adding a line break, only start a new line in the
+ message history. (Christian Brabandt)
+Files: src/eval.c, src/message.c, src/proto/message.pro
+
+
+*** ../vim-7.3.482/src/eval.c 2012-03-23 15:36:57.000000000 +0100
+--- src/eval.c 2012-03-28 16:41:03.000000000 +0200
+***************
+*** 20493,20501 ****
+ * may cause a message to appear. */
+ if (eap->cmdidx == CMD_echo)
+ {
+! /* Put the output below the command, makes scrolling back
+! * at more prompt work. */
+! msg_didout = TRUE;
+ msg_start();
+ }
+ }
+--- 20493,20502 ----
+ * may cause a message to appear. */
+ if (eap->cmdidx == CMD_echo)
+ {
+! /* Mark the saved text as finishing the line, so that what
+! * follows is displayed on a new line when scrolling back
+! * at the more prompt. */
+! msg_sb_eol();
+ msg_start();
+ }
+ }
+*** ../vim-7.3.482/src/message.c 2012-01-26 13:01:54.000000000 +0100
+--- src/message.c 2012-03-28 16:35:26.000000000 +0200
+***************
+*** 2348,2353 ****
+--- 2348,2363 ----
+ }
+
+ /*
++ * Mark the last message chunk as finishing the line.
++ */
++ void
++ msg_sb_eol()
++ {
++ if (last_msgchunk != NULL)
++ last_msgchunk->sb_eol = TRUE;
++ }
++
++ /*
+ * Display a screen line from previously displayed text at row "row".
+ * Returns a pointer to the text for the next line (can be NULL).
+ */
+*** ../vim-7.3.482/src/proto/message.pro 2012-01-20 20:44:38.000000000 +0100
+--- src/proto/message.pro 2012-03-28 16:35:33.000000000 +0200
+***************
+*** 45,50 ****
+--- 45,51 ----
+ void may_clear_sb_text __ARGS((void));
+ void clear_sb_text __ARGS((void));
+ void show_sb_text __ARGS((void));
++ void msg_sb_eol __ARGS((void));
+ int msg_use_printf __ARGS((void));
+ void mch_errmsg __ARGS((char *str));
+ void mch_msg __ARGS((char *str));
+*** ../vim-7.3.482/src/version.c 2012-03-28 14:19:46.000000000 +0200
+--- src/version.c 2012-03-28 16:48:53.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 483,
+ /**/
+
+--
+ We're knights of the Round Table
+ Our shows are formidable
+ But many times
+ We're given rhymes
+ That are quite unsingable
+ We're opera mad in Camelot
+ We sing from the diaphragm a lot.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.484 b/source/ap/vim/patches/7.3.484
new file mode 100644
index 000000000..99968eb2b
--- /dev/null
+++ b/source/ap/vim/patches/7.3.484
@@ -0,0 +1,62 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.484
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.484
+Problem: The -E and --echo-wid command line arguments are not mentioned in
+ "vim --help".
+Solution: Add the help lines. (Dominique Pelle)
+Files: src/main.c
+
+
+*** ../vim-7.3.483/src/main.c 2012-02-12 01:55:50.000000000 +0100
+--- src/main.c 2012-03-28 16:55:03.000000000 +0200
+***************
+*** 3181,3186 ****
+--- 3181,3187 ----
+ #endif
+ main_msg(_("-v\t\t\tVi mode (like \"vi\")"));
+ main_msg(_("-e\t\t\tEx mode (like \"ex\")"));
++ main_msg(_("-E\t\t\tImproved Ex mode"));
+ main_msg(_("-s\t\t\tSilent (batch) mode (only for \"ex\")"));
+ #ifdef FEAT_DIFF
+ main_msg(_("-d\t\t\tDiff mode (like \"vimdiff\")"));
+***************
+*** 3304,3309 ****
+--- 3305,3311 ----
+ main_msg(_("-display <display>\tRun vim on <display> (also: --display)"));
+ main_msg(_("--role <role>\tSet a unique role to identify the main window"));
+ main_msg(_("--socketid <xid>\tOpen Vim inside another GTK widget"));
++ main_msg(_("--echo-wid\t\tMake gvim echo the Window ID on stdout"));
+ #endif
+ #ifdef FEAT_GUI_W32
+ main_msg(_("-P <parent title>\tOpen Vim inside parent application"));
+*** ../vim-7.3.483/src/version.c 2012-03-28 16:49:25.000000000 +0200
+--- src/version.c 2012-03-28 17:10:08.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 484,
+ /**/
+
+--
+ In war we're tough and able.
+ Quite indefatigable
+ Between our quests
+ We sequin vests
+ And impersonate Clark Gable
+ It's a busy life in Camelot.
+ I have to push the pram a lot.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.485 b/source/ap/vim/patches/7.3.485
new file mode 100644
index 000000000..46b4cb732
--- /dev/null
+++ b/source/ap/vim/patches/7.3.485
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.485
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.485
+Problem: When building Vim LDFLAGS isn't passed on to building xxd.
+Solution: Pass the LDFLAGS value. (James McCoy)
+Files: src/Makefile
+
+
+*** ../vim-7.3.484/src/Makefile 2011-12-14 20:51:19.000000000 +0100
+--- src/Makefile 2012-03-28 17:16:06.000000000 +0200
+***************
+*** 1720,1726 ****
+ sh $(srcdir)/link.sh
+
+ xxd/xxd$(EXEEXT): xxd/xxd.c
+! cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" \
+ $(MAKE) -f Makefile
+
+ # Build the language specific files if they were unpacked.
+--- 1720,1726 ----
+ sh $(srcdir)/link.sh
+
+ xxd/xxd$(EXEEXT): xxd/xxd.c
+! cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
+ $(MAKE) -f Makefile
+
+ # Build the language specific files if they were unpacked.
+*** ../vim-7.3.484/src/version.c 2012-03-28 17:10:26.000000000 +0200
+--- src/version.c 2012-03-28 17:16:15.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 485,
+ /**/
+
+--
+GOD: That is your purpose Arthur ... the Quest for the Holy Grail ...
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.486 b/source/ap/vim/patches/7.3.486
new file mode 100644
index 000000000..44e2afe84
--- /dev/null
+++ b/source/ap/vim/patches/7.3.486
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.486
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.486
+Problem: Build error with mingw64 on Windows 7.
+Solution: Avoid the step of going through vimres.res. (Guopeng Wen)
+Files: src/Make_ming.mak
+
+
+*** ../vim-7.3.485/src/Make_ming.mak 2012-02-29 16:56:35.000000000 +0100
+--- src/Make_ming.mak 2012-03-28 17:41:55.000000000 +0200
+***************
+*** 681,691 ****
+ $(OUTDIR)/%.o : %.c $(INCL)
+ $(CC) -c $(CFLAGS) $< -o $@
+
+! $(OUTDIR)/vimres.res: vim.rc version.h gui_w32_rc.h
+! $(WINDRES) $(WINDRES_FLAGS) $(DEFINES) vim.rc $(OUTDIR)/vimres.res
+!
+! $(OUTDIR)/vimrc.o: $(OUTDIR)/vimres.res
+! $(WINDRES) $(WINDRES_FLAGS) $(OUTDIR)/vimres.res $(OUTDIR)/vimrc.o
+
+ $(OUTDIR):
+ $(MKDIR) $(OUTDIR)
+--- 681,689 ----
+ $(OUTDIR)/%.o : %.c $(INCL)
+ $(CC) -c $(CFLAGS) $< -o $@
+
+! $(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h
+! $(WINDRES) $(WINDRES_FLAGS) $(DEFINES) \
+! --input-format=rc --output-format=coff -i vim.rc -o $@
+
+ $(OUTDIR):
+ $(MKDIR) $(OUTDIR)
+*** ../vim-7.3.485/src/version.c 2012-03-28 17:17:45.000000000 +0200
+--- src/version.c 2012-03-28 17:42:25.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 486,
+ /**/
+
+--
+There is a fine line between courage and foolishness.
+Unfortunately, it's not a fence.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.487 b/source/ap/vim/patches/7.3.487
new file mode 100644
index 000000000..3c00349b3
--- /dev/null
+++ b/source/ap/vim/patches/7.3.487
@@ -0,0 +1,572 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.487
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.487
+Problem: When setting 'timeoutlen' or 'ttimeoutlen' the column for vertical
+ movement is reset unnecessarily.
+Solution: Do not set w_set_curswant for every option. Add a test for this.
+ (Kana Natsuno) Add the P_CURSWANT flag for options.
+Files: src/option.c, src/testdir/test84.in, src/testdir/test84.ok,
+ src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak,
+ src/testdir/Make_ming.mak, src/testdir/Make_os2.mak,
+ src/testdir/Make_vms.mms, src/testdir/Makefile
+
+
+*** ../vim-7.3.486/src/option.c 2012-03-23 16:25:13.000000000 +0100
+--- src/option.c 2012-03-28 19:57:46.000000000 +0200
+***************
+*** 433,449 ****
+ #define P_RCLR 0x7000 /* clear and redraw all */
+
+ #define P_COMMA 0x8000 /* comma separated list */
+! #define P_NODUP 0x10000L/* don't allow duplicate strings */
+! #define P_FLAGLIST 0x20000L/* list of single-char flags */
+
+! #define P_SECURE 0x40000L/* cannot change in modeline or secure mode */
+! #define P_GETTEXT 0x80000L/* expand default value with _() */
+! #define P_NOGLOB 0x100000L/* do not use local value for global vimrc */
+! #define P_NFNAME 0x200000L/* only normal file name chars allowed */
+! #define P_INSECURE 0x400000L/* option was set from a modeline */
+! #define P_PRI_MKRC 0x800000L/* priority for :mkvimrc (setting option has
+ side effects) */
+! #define P_NO_ML 0x1000000L/* not allowed in modeline */
+
+ #define ISK_LATIN1 (char_u *)"@,48-57,_,192-255"
+
+--- 433,451 ----
+ #define P_RCLR 0x7000 /* clear and redraw all */
+
+ #define P_COMMA 0x8000 /* comma separated list */
+! #define P_NODUP 0x10000L /* don't allow duplicate strings */
+! #define P_FLAGLIST 0x20000L /* list of single-char flags */
+
+! #define P_SECURE 0x40000L /* cannot change in modeline or secure mode */
+! #define P_GETTEXT 0x80000L /* expand default value with _() */
+! #define P_NOGLOB 0x100000L /* do not use local value for global vimrc */
+! #define P_NFNAME 0x200000L /* only normal file name chars allowed */
+! #define P_INSECURE 0x400000L /* option was set from a modeline */
+! #define P_PRI_MKRC 0x800000L /* priority for :mkvimrc (setting option has
+ side effects) */
+! #define P_NO_ML 0x1000000L /* not allowed in modeline */
+! #define P_CURSWANT 0x2000000L /* update curswant required; not needed when
+! * there is a redraw flag */
+
+ #define ISK_LATIN1 (char_u *)"@,48-57,_,192-255"
+
+***************
+*** 479,485 ****
+ #endif
+ options[] =
+ {
+! {"aleph", "al", P_NUM|P_VI_DEF,
+ #ifdef FEAT_RIGHTLEFT
+ (char_u *)&p_aleph, PV_NONE,
+ #else
+--- 481,487 ----
+ #endif
+ options[] =
+ {
+! {"aleph", "al", P_NUM|P_VI_DEF|P_CURSWANT,
+ #ifdef FEAT_RIGHTLEFT
+ (char_u *)&p_aleph, PV_NONE,
+ #else
+***************
+*** 501,507 ****
+ {(char_u *)FALSE, (char_u *)FALSE}
+ #endif
+ SCRIPTID_INIT},
+! {"arabic", "arab", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_ARABIC
+ (char_u *)VAR_WIN, PV_ARAB,
+ #else
+--- 503,509 ----
+ {(char_u *)FALSE, (char_u *)FALSE}
+ #endif
+ SCRIPTID_INIT},
+! {"arabic", "arab", P_BOOL|P_VI_DEF|P_VIM|P_CURSWANT,
+ #ifdef FEAT_ARABIC
+ (char_u *)VAR_WIN, PV_ARAB,
+ #else
+***************
+*** 778,784 ****
+ {"columns", "co", P_NUM|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RCLR,
+ (char_u *)&Columns, PV_NONE,
+ {(char_u *)80L, (char_u *)0L} SCRIPTID_INIT},
+! {"comments", "com", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_COMMENTS
+ (char_u *)&p_com, PV_COM,
+ {(char_u *)"s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-",
+--- 780,786 ----
+ {"columns", "co", P_NUM|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RCLR,
+ (char_u *)&Columns, PV_NONE,
+ {(char_u *)80L, (char_u *)0L} SCRIPTID_INIT},
+! {"comments", "com", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP|P_CURSWANT,
+ #ifdef FEAT_COMMENTS
+ (char_u *)&p_com, PV_COM,
+ {(char_u *)"s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-",
+***************
+*** 788,794 ****
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+ SCRIPTID_INIT},
+! {"commentstring", "cms", P_STRING|P_ALLOCED|P_VI_DEF,
+ #ifdef FEAT_FOLDING
+ (char_u *)&p_cms, PV_CMS,
+ {(char_u *)"/*%s*/", (char_u *)0L}
+--- 790,796 ----
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+ SCRIPTID_INIT},
+! {"commentstring", "cms", P_STRING|P_ALLOCED|P_VI_DEF|P_CURSWANT,
+ #ifdef FEAT_FOLDING
+ (char_u *)&p_cms, PV_CMS,
+ {(char_u *)"/*%s*/", (char_u *)0L}
+***************
+*** 953,959 ****
+ {"debug", NULL, P_STRING|P_VI_DEF,
+ (char_u *)&p_debug, PV_NONE,
+ {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+! {"define", "def", P_STRING|P_ALLOCED|P_VI_DEF,
+ #ifdef FEAT_FIND_ID
+ (char_u *)&p_def, PV_DEF,
+ {(char_u *)"^\\s*#\\s*define", (char_u *)0L}
+--- 955,961 ----
+ {"debug", NULL, P_STRING|P_VI_DEF,
+ (char_u *)&p_debug, PV_NONE,
+ {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+! {"define", "def", P_STRING|P_ALLOCED|P_VI_DEF|P_CURSWANT,
+ #ifdef FEAT_FIND_ID
+ (char_u *)&p_def, PV_DEF,
+ {(char_u *)"^\\s*#\\s*define", (char_u *)0L}
+***************
+*** 983,989 ****
+ (char_u *)NULL, PV_NONE,
+ #endif
+ {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+! {"diffexpr", "dex", P_STRING|P_VI_DEF|P_SECURE,
+ #if defined(FEAT_DIFF) && defined(FEAT_EVAL)
+ (char_u *)&p_dex, PV_NONE,
+ {(char_u *)"", (char_u *)0L}
+--- 985,991 ----
+ (char_u *)NULL, PV_NONE,
+ #endif
+ {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+! {"diffexpr", "dex", P_STRING|P_VI_DEF|P_SECURE|P_CURSWANT,
+ #if defined(FEAT_DIFF) && defined(FEAT_EVAL)
+ (char_u *)&p_dex, PV_NONE,
+ {(char_u *)"", (char_u *)0L}
+***************
+*** 1099,1105 ****
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+ SCRIPTID_INIT},
+! {"fileformat", "ff", P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_NO_MKRC,
+ (char_u *)&p_ff, PV_FF,
+ {(char_u *)DFLT_FF, (char_u *)0L} SCRIPTID_INIT},
+ {"fileformats", "ffs", P_STRING|P_VIM|P_COMMA|P_NODUP,
+--- 1101,1107 ----
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+ SCRIPTID_INIT},
+! {"fileformat", "ff", P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_NO_MKRC|P_CURSWANT,
+ (char_u *)&p_ff, PV_FF,
+ {(char_u *)DFLT_FF, (char_u *)0L} SCRIPTID_INIT},
+ {"fileformats", "ffs", P_STRING|P_VIM|P_COMMA|P_NODUP,
+***************
+*** 1159,1165 ****
+ {"foldlevel", "fdl", P_NUM|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_FDL,
+ {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+! {"foldlevelstart","fdls", P_NUM|P_VI_DEF,
+ (char_u *)&p_fdls, PV_NONE,
+ {(char_u *)-1L, (char_u *)0L} SCRIPTID_INIT},
+ {"foldmarker", "fmr", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|
+--- 1161,1167 ----
+ {"foldlevel", "fdl", P_NUM|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_FDL,
+ {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+! {"foldlevelstart","fdls", P_NUM|P_VI_DEF|P_CURSWANT,
+ (char_u *)&p_fdls, PV_NONE,
+ {(char_u *)-1L, (char_u *)0L} SCRIPTID_INIT},
+ {"foldmarker", "fmr", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|
+***************
+*** 1176,1182 ****
+ {"foldnestmax", "fdn", P_NUM|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_FDN,
+ {(char_u *)20L, (char_u *)0L} SCRIPTID_INIT},
+! {"foldopen", "fdo", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_fdo, PV_NONE,
+ {(char_u *)"block,hor,mark,percent,quickfix,search,tag,undo",
+ (char_u *)0L} SCRIPTID_INIT},
+--- 1178,1184 ----
+ {"foldnestmax", "fdn", P_NUM|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_FDN,
+ {(char_u *)20L, (char_u *)0L} SCRIPTID_INIT},
+! {"foldopen", "fdo", P_STRING|P_VI_DEF|P_COMMA|P_NODUP|P_CURSWANT,
+ (char_u *)&p_fdo, PV_NONE,
+ {(char_u *)"block,hor,mark,percent,quickfix,search,tag,undo",
+ (char_u *)0L} SCRIPTID_INIT},
+***************
+*** 1741,1747 ****
+ {"matchtime", "mat", P_NUM|P_VI_DEF,
+ (char_u *)&p_mat, PV_NONE,
+ {(char_u *)5L, (char_u *)0L} SCRIPTID_INIT},
+! {"maxcombine", "mco", P_NUM|P_VI_DEF,
+ #ifdef FEAT_MBYTE
+ (char_u *)&p_mco, PV_NONE,
+ #else
+--- 1743,1749 ----
+ {"matchtime", "mat", P_NUM|P_VI_DEF,
+ (char_u *)&p_mat, PV_NONE,
+ {(char_u *)5L, (char_u *)0L} SCRIPTID_INIT},
+! {"maxcombine", "mco", P_NUM|P_VI_DEF|P_CURSWANT,
+ #ifdef FEAT_MBYTE
+ (char_u *)&p_mco, PV_NONE,
+ #else
+***************
+*** 2710,2716 ****
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+ SCRIPTID_INIT},
+! {"virtualedit", "ve", P_STRING|P_COMMA|P_NODUP|P_VI_DEF|P_VIM,
+ #ifdef FEAT_VIRTUALEDIT
+ (char_u *)&p_ve, PV_NONE,
+ {(char_u *)"", (char_u *)""}
+--- 2712,2718 ----
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+ SCRIPTID_INIT},
+! {"virtualedit", "ve", P_STRING|P_COMMA|P_NODUP|P_VI_DEF|P_VIM|P_CURSWANT,
+ #ifdef FEAT_VIRTUALEDIT
+ (char_u *)&p_ve, PV_NONE,
+ {(char_u *)"", (char_u *)""}
+***************
+*** 7064,7071 ****
+ }
+ #endif
+
+! if (curwin->w_curswant != MAXCOL)
+! curwin->w_set_curswant = TRUE; /* in case 'showbreak' changed */
+ #ifdef FEAT_GUI
+ /* check redraw when it's not a GUI option or the GUI is active. */
+ if (!redraw_gui_only || gui.in_use)
+--- 7066,7075 ----
+ }
+ #endif
+
+! if (curwin->w_curswant != MAXCOL
+! && (options[opt_idx].flags & (P_CURSWANT | P_RCLR)) != 0)
+! curwin->w_set_curswant = TRUE;
+!
+ #ifdef FEAT_GUI
+ /* check redraw when it's not a GUI option or the GUI is active. */
+ if (!redraw_gui_only || gui.in_use)
+***************
+*** 7587,7595 ****
+ || (int *)varp == &curwin->w_p_nu
+ || (int *)varp == &curwin->w_p_rnu)
+ {
+- if (curwin->w_curswant != MAXCOL)
+- curwin->w_set_curswant = TRUE;
+-
+ /* If 'number' is set, reset 'relativenumber'. */
+ /* If 'relativenumber' is set, reset 'number'. */
+ if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu)
+--- 7591,7596 ----
+***************
+*** 7834,7841 ****
+ {
+ if (curwin->w_p_wrap)
+ curwin->w_leftcol = 0;
+- if (curwin->w_curswant != MAXCOL)
+- curwin->w_set_curswant = TRUE;
+ }
+
+ #ifdef FEAT_WINDOWS
+--- 7835,7840 ----
+***************
+*** 8062,8092 ****
+ curbuf->b_p_imsearch = B_IMODE_USE_INSERT;
+ # endif
+ }
+- if (curwin->w_curswant != MAXCOL)
+- curwin->w_set_curswant = TRUE;
+ }
+
+- else if ((int *)varp == &p_arshape)
+- {
+- if (curwin->w_curswant != MAXCOL)
+- curwin->w_set_curswant = TRUE;
+- }
+- #endif
+-
+- #ifdef FEAT_LINEBREAK
+- if ((int *)varp == &curwin->w_p_lbr)
+- {
+- if (curwin->w_curswant != MAXCOL)
+- curwin->w_set_curswant = TRUE;
+- }
+- #endif
+-
+- #ifdef FEAT_RIGHTLEFT
+- if ((int *)varp == &curwin->w_p_rl)
+- {
+- if (curwin->w_curswant != MAXCOL)
+- curwin->w_set_curswant = TRUE;
+- }
+ #endif
+
+ /*
+--- 8061,8068 ----
+***************
+*** 8096,8102 ****
+ options[opt_idx].flags |= P_WAS_SET;
+
+ comp_col(); /* in case 'ruler' or 'showcmd' changed */
+!
+ check_redraw(options[opt_idx].flags);
+
+ return NULL;
+--- 8072,8080 ----
+ options[opt_idx].flags |= P_WAS_SET;
+
+ comp_col(); /* in case 'ruler' or 'showcmd' changed */
+! if (curwin->w_curswant != MAXCOL
+! && (options[opt_idx].flags & (P_CURSWANT | P_RCLR)) != 0)
+! curwin->w_set_curswant = TRUE;
+ check_redraw(options[opt_idx].flags);
+
+ return NULL;
+***************
+*** 8611,8618 ****
+ options[opt_idx].flags |= P_WAS_SET;
+
+ comp_col(); /* in case 'columns' or 'ls' changed */
+! if (curwin->w_curswant != MAXCOL)
+! curwin->w_set_curswant = TRUE; /* in case 'tabstop' changed */
+ check_redraw(options[opt_idx].flags);
+
+ return errmsg;
+--- 8589,8597 ----
+ options[opt_idx].flags |= P_WAS_SET;
+
+ comp_col(); /* in case 'columns' or 'ls' changed */
+! if (curwin->w_curswant != MAXCOL
+! && (options[opt_idx].flags & (P_CURSWANT | P_RCLR)) != 0)
+! curwin->w_set_curswant = TRUE;
+ check_redraw(options[opt_idx].flags);
+
+ return errmsg;
+*** ../vim-7.3.486/src/testdir/test84.in 2012-03-28 19:55:12.000000000 +0200
+--- src/testdir/test84.in 2012-03-28 19:46:53.000000000 +0200
+***************
+*** 0 ****
+--- 1,35 ----
++ Tests for curswant not changing when setting an option
++
++ STARTTEST
++ :so small.vim
++ :/^start target options$/+1,/^end target options$/-1 yank
++ :let target_option_names = split(@0)
++ :function TestCurswant(option_name)
++ : normal! ggf8j
++ : let curswant_before = winsaveview().curswant
++ : execute 'let' '&'.a:option_name '=' '&'.a:option_name
++ : let curswant_after = winsaveview().curswant
++ : return [a:option_name, curswant_before, curswant_after]
++ :endfunction
++ :
++ :new
++ :put =['1234567890', '12345']
++ :1 delete _
++ :let result = []
++ :for option_name in target_option_names
++ : call add(result, TestCurswant(option_name))
++ :endfor
++ :
++ :new
++ :put =map(copy(result), 'join(v:val, '' '')')
++ :1 delete _
++ :write test.out
++ :
++ :qall!
++ ENDTEST
++
++ start target options
++ tabstop
++ timeoutlen
++ ttimeoutlen
++ end target options
+*** ../vim-7.3.486/src/testdir/test84.ok 2012-03-28 19:55:12.000000000 +0200
+--- src/testdir/test84.ok 2012-03-28 19:48:36.000000000 +0200
+***************
+*** 0 ****
+--- 1,3 ----
++ tabstop 7 4
++ timeoutlen 7 7
++ ttimeoutlen 7 7
+*** ../vim-7.3.486/src/testdir/Make_amiga.mak 2011-10-12 19:53:31.000000000 +0200
+--- src/testdir/Make_amiga.mak 2012-03-28 18:14:08.000000000 +0200
+***************
+*** 29,35 ****
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+ test76.out test77.out test78.out test79.out test80.out \
+! test81.out test82.out test83.out
+
+ .SUFFIXES: .in .out
+
+--- 29,35 ----
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+ test76.out test77.out test78.out test79.out test80.out \
+! test81.out test82.out test83.out test84.out
+
+ .SUFFIXES: .in .out
+
+***************
+*** 132,134 ****
+--- 132,135 ----
+ test81.out: test81.in
+ test82.out: test82.in
+ test83.out: test83.in
++ test84.out: test84.in
+*** ../vim-7.3.486/src/testdir/Make_dos.mak 2011-10-12 19:53:31.000000000 +0200
+--- src/testdir/Make_dos.mak 2012-03-28 18:14:41.000000000 +0200
+***************
+*** 29,35 ****
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out test82.out test83.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 29,36 ----
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out test82.out test83.out \
+! test84.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.3.486/src/testdir/Make_ming.mak 2011-10-12 19:53:31.000000000 +0200
+--- src/testdir/Make_ming.mak 2012-03-28 18:14:46.000000000 +0200
+***************
+*** 49,55 ****
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out test82.out test83.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 49,56 ----
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out test82.out test83.out \
+! test84.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.3.486/src/testdir/Make_os2.mak 2011-10-12 19:53:31.000000000 +0200
+--- src/testdir/Make_os2.mak 2012-03-28 18:15:00.000000000 +0200
+***************
+*** 29,35 ****
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+ test76.out test77.out test78.out test79.out test80.out \
+! test81.out test82.out test83.out
+
+ .SUFFIXES: .in .out
+
+--- 29,35 ----
+ test66.out test67.out test68.out test69.out test70.out \
+ test71.out test72.out test73.out test74.out test75.out \
+ test76.out test77.out test78.out test79.out test80.out \
+! test81.out test82.out test83.out test84.out
+
+ .SUFFIXES: .in .out
+
+*** ../vim-7.3.486/src/testdir/Make_vms.mms 2011-10-12 19:53:31.000000000 +0200
+--- src/testdir/Make_vms.mms 2012-03-28 18:15:15.000000000 +0200
+***************
+*** 4,10 ****
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2011 Jul 15
+ #
+ # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+ # Edit the lines in the Configuration section below to select.
+--- 4,10 ----
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2012 Mar 28
+ #
+ # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+ # Edit the lines in the Configuration section below to select.
+***************
+*** 76,82 ****
+ test66.out test67.out test68.out test69.out \
+ test71.out test72.out test74.out test75.out test76.out \
+ test77.out test78.out test79.out test80.out test81.out \
+! test82.out test83.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+--- 76,82 ----
+ test66.out test67.out test68.out test69.out \
+ test71.out test72.out test74.out test75.out test76.out \
+ test77.out test78.out test79.out test80.out test81.out \
+! test82.out test83.out test84.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+*** ../vim-7.3.486/src/testdir/Makefile 2011-10-12 19:53:31.000000000 +0200
+--- src/testdir/Makefile 2012-03-28 18:15:29.000000000 +0200
+***************
+*** 26,32 ****
+ test64.out test65.out test66.out test67.out test68.out \
+ test69.out test70.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out test82.out test83.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 26,33 ----
+ test64.out test65.out test66.out test67.out test68.out \
+ test69.out test70.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+! test79.out test80.out test81.out test82.out test83.out \
+! test84.out
+
+ SCRIPTS_GUI = test16.out
+
+*** ../vim-7.3.486/src/version.c 2012-03-28 17:43:06.000000000 +0200
+--- src/version.c 2012-03-28 19:49:41.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 487,
+ /**/
+
+--
+"Time flies like an arrow". So I put an arrow on my desk, now
+awaiting one of these time flies showing up.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.488 b/source/ap/vim/patches/7.3.488
new file mode 100644
index 000000000..e07874040
--- /dev/null
+++ b/source/ap/vim/patches/7.3.488
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.488
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.488
+Problem: ":help!" in a help file does not work as document.
+Solution: When in a help file don't give an error message. (thinca)
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.3.487/src/ex_cmds.c 2012-03-16 14:32:10.000000000 +0100
+--- src/ex_cmds.c 2012-04-01 14:25:35.000000000 +0200
+***************
+*** 5546,5552 ****
+ }
+ arg = eap->arg;
+
+! if (eap->forceit && *arg == NUL)
+ {
+ EMSG(_("E478: Don't panic!"));
+ return;
+--- 5546,5552 ----
+ }
+ arg = eap->arg;
+
+! if (eap->forceit && *arg == NUL && !curbuf->b_help)
+ {
+ EMSG(_("E478: Don't panic!"));
+ return;
+*** ../vim-7.3.487/src/version.c 2012-03-28 19:58:34.000000000 +0200
+--- src/version.c 2012-04-05 16:04:13.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 488,
+ /**/
+
+
+--
+I'd like to meet the man who invented sex and see what he's working on now.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.489 b/source/ap/vim/patches/7.3.489
new file mode 100644
index 000000000..fbdf2c39f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.489
@@ -0,0 +1,89 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.489
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.489
+Problem: CTRL-] in Insert mode does not expand abbreviation when used in a
+ mapping. (Yichao Zhou)
+Solution: Special case using CTRL-]. (Christian Brabandt)
+Files: src/getchar.c, src/edit.c
+
+
+*** ../vim-7.3.488/src/getchar.c 2012-02-05 22:05:44.000000000 +0100
+--- src/getchar.c 2012-04-05 15:54:00.000000000 +0200
+***************
+*** 4352,4359 ****
+
+ if (typebuf.tb_no_abbr_cnt) /* abbrev. are not recursive */
+ return FALSE;
+! if ((KeyNoremap & (RM_NONE|RM_SCRIPT)) != 0)
+! /* no remapping implies no abbreviation */
+ return FALSE;
+
+ /*
+--- 4352,4360 ----
+
+ if (typebuf.tb_no_abbr_cnt) /* abbrev. are not recursive */
+ return FALSE;
+!
+! /* no remapping implies no abbreviation, except for CTRL-] */
+! if ((KeyNoremap & (RM_NONE|RM_SCRIPT)) != 0 && c != Ctrl_RSB)
+ return FALSE;
+
+ /*
+*** ../vim-7.3.488/src/edit.c 2012-02-29 18:22:03.000000000 +0100
+--- src/edit.c 2012-04-05 15:57:46.000000000 +0200
+***************
+*** 1455,1467 ****
+ Insstart_blank_vcol = get_nolist_virtcol();
+ }
+
+! if (vim_iswordc(c) || !echeck_abbr(
+ #ifdef FEAT_MBYTE
+ /* Add ABBR_OFF for characters above 0x100, this is
+ * what check_abbr() expects. */
+ (has_mbyte && c >= 0x100) ? (c + ABBR_OFF) :
+ #endif
+! c))
+ {
+ insert_special(c, FALSE, FALSE);
+ #ifdef FEAT_RIGHTLEFT
+--- 1455,1470 ----
+ Insstart_blank_vcol = get_nolist_virtcol();
+ }
+
+! /* Insert a normal character and check for abbreviations on a
+! * special character. Let CTRL-] expand abbreviations without
+! * inserting it. */
+! if (vim_iswordc(c) || (!echeck_abbr(
+ #ifdef FEAT_MBYTE
+ /* Add ABBR_OFF for characters above 0x100, this is
+ * what check_abbr() expects. */
+ (has_mbyte && c >= 0x100) ? (c + ABBR_OFF) :
+ #endif
+! c) && c != Ctrl_RSB))
+ {
+ insert_special(c, FALSE, FALSE);
+ #ifdef FEAT_RIGHTLEFT
+*** ../vim-7.3.488/src/version.c 2012-04-05 16:04:58.000000000 +0200
+--- src/version.c 2012-04-05 16:06:12.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 489,
+ /**/
+
+--
+Just think of all the things we haven't thought of yet.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.490 b/source/ap/vim/patches/7.3.490
new file mode 100644
index 000000000..6c49a48d5
--- /dev/null
+++ b/source/ap/vim/patches/7.3.490
@@ -0,0 +1,2517 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.490
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.490
+Problem: Member confusion in Lua interface.
+Solution: Fix it. Add luaeval(). (Taro Muraoka, Luis Carvalho)
+Files: runtime/doc/if_lua.txt, src/eval.c, src/if_lua.c,
+ src/proto/if_lua.pro
+
+
+*** ../vim-7.3.489/runtime/doc/if_lua.txt 2010-08-15 21:57:14.000000000 +0200
+--- runtime/doc/if_lua.txt 2012-04-05 16:41:35.000000000 +0200
+***************
+*** 1,4 ****
+! *if_lua.txt* For Vim version 7.3. Last change: 2010 Jul 22
+
+
+ VIM REFERENCE MANUAL by Luis Carvalho
+--- 1,4 ----
+! *if_lua.txt* For Vim version 7.3. Last change: 2012 Jan 16
+
+
+ VIM REFERENCE MANUAL by Luis Carvalho
+***************
+*** 8,15 ****
+
+ 1. Commands |lua-commands|
+ 2. The vim module |lua-vim|
+! 3. Buffer userdata |lua-buffer|
+! 4. Window userdata |lua-window|
+
+ {Vi does not have any of these commands}
+
+--- 8,18 ----
+
+ 1. Commands |lua-commands|
+ 2. The vim module |lua-vim|
+! 3. List userdata |lua-list|
+! 4. Dict userdata |lua-dict|
+! 5. Buffer userdata |lua-buffer|
+! 6. Window userdata |lua-window|
+! 7. The luaeval function |lua-luaeval|
+
+ {Vi does not have any of these commands}
+
+***************
+*** 88,98 ****
+ All these commands execute a Lua chunk from either the command line (:lua and
+ :luado) or a file (:luafile) with the given line [range]. Similarly to the Lua
+ interpreter, each chunk has its own scope and so only global variables are
+! shared between command calls. Lua default libraries "table", "string", "math",
+! and "package" are available, "io" and "debug" are not, and "os" is restricted
+! to functions "date", "clock", "time", "difftime", and "getenv". In addition,
+! Lua "print" function has its output redirected to the Vim message area, with
+! arguments separated by a white space instead of a tab.
+
+ Lua uses the "vim" module (see |lua-vim|) to issue commands to Vim
+ and manage buffers (|lua-buffer|) and windows (|lua-window|). However,
+--- 91,99 ----
+ All these commands execute a Lua chunk from either the command line (:lua and
+ :luado) or a file (:luafile) with the given line [range]. Similarly to the Lua
+ interpreter, each chunk has its own scope and so only global variables are
+! shared between command calls. All Lua default libraries are available. In
+! addition, Lua "print" function has its output redirected to the Vim message
+! area, with arguments separated by a white space instead of a tab.
+
+ Lua uses the "vim" module (see |lua-vim|) to issue commands to Vim
+ and manage buffers (|lua-buffer|) and windows (|lua-window|). However,
+***************
+*** 108,116 ****
+ module also includes routines for buffer, window, and current line queries,
+ Vim evaluation and command execution, and others.
+
+! vim.isbuffer(value) Returns 'true' (boolean, not string) if
+! "value" is a buffer userdata and 'false'
+! otherwise (see |lua-buffer|).
+
+ vim.buffer([arg]) If "arg" is a number, returns buffer with
+ number "arg" in the buffer list or, if "arg"
+--- 109,117 ----
+ module also includes routines for buffer, window, and current line queries,
+ Vim evaluation and command execution, and others.
+
+! vim.list() Returns an empty list (see |List|).
+!
+! vim.dict() Returns an empty dictionary (see |Dictionary|).
+
+ vim.buffer([arg]) If "arg" is a number, returns buffer with
+ number "arg" in the buffer list or, if "arg"
+***************
+*** 121,136 ****
+ 'true' returns the first buffer in the buffer
+ list or else the current buffer.
+
+- vim.iswindow(value) Returns 'true' (boolean, not string) if
+- "value" is a window userdata and
+- 'false' otherwise (see |lua-window|).
+-
+ vim.window([arg]) If "arg" is a number, returns window with
+ number "arg" or 'nil' (nil value, not string)
+ if not found. Otherwise, if "toboolean(arg)"
+ is 'true' returns the first window or else the
+ current window.
+
+ vim.command({cmd}) Executes the vim (ex-mode) command {cmd}.
+ Examples: >
+ :lua vim.command"set tw=60"
+--- 122,142 ----
+ 'true' returns the first buffer in the buffer
+ list or else the current buffer.
+
+ vim.window([arg]) If "arg" is a number, returns window with
+ number "arg" or 'nil' (nil value, not string)
+ if not found. Otherwise, if "toboolean(arg)"
+ is 'true' returns the first window or else the
+ current window.
+
++ vim.type({arg}) Returns the type of {arg}. It is equivalent to
++ Lua's "type" function, but returns "list",
++ "dict", "buffer", or "window" if {arg} is a
++ list, dictionary, buffer, or window,
++ respectively. Examples: >
++ :lua l = vim.list()
++ :lua print(type(l), vim.type(l))
++ :" userdata list
++ <
+ vim.command({cmd}) Executes the vim (ex-mode) command {cmd}.
+ Examples: >
+ :lua vim.command"set tw=60"
+***************
+*** 141,147 ****
+ Vim strings and numbers are directly converted
+ to Lua strings and numbers respectively. Vim
+ lists and dictionaries are converted to Lua
+! tables (lists become integer-keyed tables).
+ Examples: >
+ :lua tw = vim.eval"&tw"
+ :lua print(vim.eval"{'a': 'one'}".a)
+--- 147,153 ----
+ Vim strings and numbers are directly converted
+ to Lua strings and numbers respectively. Vim
+ lists and dictionaries are converted to Lua
+! userdata (see |lua-list| and |lua-dict|).
+ Examples: >
+ :lua tw = vim.eval"&tw"
+ :lua print(vim.eval"{'a': 'one'}".a)
+***************
+*** 157,163 ****
+
+
+ ==============================================================================
+! 3. Buffer userdata *lua-buffer*
+
+ Buffer userdata represent vim buffers. A buffer userdata "b" has the following
+ properties and methods:
+--- 163,234 ----
+
+
+ ==============================================================================
+! 3. List userdata *lua-list*
+!
+! List userdata represent vim lists, and the interface tries to follow closely
+! Vim's syntax for lists. Since lists are objects, changes in list references in
+! Lua are reflected in Vim and vice-versa. A list "l" has the following
+! properties and methods:
+!
+! Properties
+! ----------
+! o "#l" is the number of items in list "l", equivalent to "len(l)"
+! in Vim.
+! o "l[k]" returns the k-th item in "l"; "l" is zero-indexed, as in Vim.
+! To modify the k-th item, simply do "l[k] = newitem"; in
+! particular, "l[k] = nil" removes the k-th item from "l".
+! o "l()" returns an iterator for "l".
+!
+! Methods
+! -------
+! o "l:add(item)" appends "item" to the end of "l".
+! o "l:insert(item[, pos])" inserts "item" at (optional)
+! position "pos" in the list. The default value for "pos" is 0.
+!
+! Examples:
+! >
+! :let l = [1, 'item']
+! :lua l = vim.eval('l') -- same 'l'
+! :lua l:add(vim.list())
+! :lua l[0] = math.pi
+! :echo l[0] " 3.141593
+! :lua l[0] = nil -- remove first item
+! :lua l:insert(true, 1)
+! :lua print(l, #l, l[0], l[1], l[-1])
+! :lua for item in l() do print(item) end
+! <
+!
+! ==============================================================================
+! 4. Dict userdata *lua-dict*
+!
+! Similarly to list userdata, dict userdata represent vim dictionaries; since
+! dictionaries are also objects, references are kept between Lua and Vim. A dict
+! "d" has the following properties:
+!
+! Properties
+! ----------
+! o "#d" is the number of items in dict "d", equivalent to "len(d)"
+! in Vim.
+! o "d.key" or "d['key']" returns the value at entry "key" in "d".
+! To modify the entry at this key, simply do "d.key = newvalue"; in
+! particular, "d.key = nil" removes the entry from "d".
+! o "d()" returns an iterator for "d" and is equivalent to "items(d)" in
+! Vim.
+!
+! Examples:
+! >
+! :let d = {'n':10}
+! :lua d = vim.eval('d') -- same 'd'
+! :lua print(d, d.n, #d)
+! :let d.self = d
+! :lua for k, v in d() do print(d, k, v) end
+! :lua d.x = math.pi
+! :lua d.self = nil -- remove entry
+! :echo d
+! <
+!
+! ==============================================================================
+! 5. Buffer userdata *lua-buffer*
+
+ Buffer userdata represent vim buffers. A buffer userdata "b" has the following
+ properties and methods:
+***************
+*** 209,215 ****
+ <
+
+ ==============================================================================
+! 4. Window userdata *lua-window*
+
+ Window objects represent vim windows. A window userdata "w" has the following
+ properties and methods:
+--- 280,286 ----
+ <
+
+ ==============================================================================
+! 6. Window userdata *lua-window*
+
+ Window objects represent vim windows. A window userdata "w" has the following
+ properties and methods:
+***************
+*** 241,244 ****
+ <
+
+ ==============================================================================
+! vim:tw=78:ts=8:ft=help:norl:
+--- 312,340 ----
+ <
+
+ ==============================================================================
+! 7. The luaeval function *lua-luaeval*
+!
+! The (dual) equivalent of "vim.eval" for passing Lua values to Vim is
+! "luaeval". "luaeval" takes an expression string and an optional argument and
+! returns the result of the expression. It is semantically equivalent in Lua to:
+! >
+! local chunkheader = "local _A = select(1, ...) return "
+! function luaeval (expstr, arg)
+! local chunk = assert(loadstring(chunkheader .. expstr, "luaeval"))
+! return chunk(arg) -- return typval
+! end
+! <
+! Note that "_A" receives the argument to "luaeval". Examples: >
+!
+! :echo luaeval('math.pi')
+! :lua a = vim.list():add('newlist')
+! :let a = luaeval('a')
+! :echo a[0] " 'newlist'
+! :function Rand(x,y) " random uniform between x and y
+! : return luaeval('(_A.y-_A.x)*math.random()+_A.x', {'x':a:x,'y':a:y})
+! : endfunction
+! :echo Rand(1,10)
+!
+!
+! ==============================================================================
+! vim:tw=78:ts=8:noet:ft=help:norl:
+*** ../vim-7.3.489/src/eval.c 2012-03-28 16:49:25.000000000 +0200
+--- src/eval.c 2012-04-05 16:41:35.000000000 +0200
+***************
+*** 622,627 ****
+--- 622,630 ----
+ static void f_log __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_log10 __ARGS((typval_T *argvars, typval_T *rettv));
+ #endif
++ #ifdef FEAT_LUA
++ static void f_luaeval __ARGS((typval_T *argvars, typval_T *rettv));
++ #endif
+ static void f_map __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_maparg __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_mapcheck __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 6777,6782 ****
+--- 6780,6789 ----
+ /* v: vars */
+ set_ref_in_ht(&vimvarht, copyID);
+
++ #ifdef FEAT_LUA
++ set_ref_in_lua(copyID);
++ #endif
++
+ /*
+ * 2. Free lists and dictionaries that are not referenced.
+ */
+***************
+*** 7946,7951 ****
+--- 7953,7961 ----
+ {"log", 1, 1, f_log},
+ {"log10", 1, 1, f_log10},
+ #endif
++ #ifdef FEAT_LUA
++ {"luaeval", 1, 2, f_luaeval},
++ #endif
+ {"map", 2, 2, f_map},
+ {"maparg", 1, 4, f_maparg},
+ {"mapcheck", 1, 3, f_mapcheck},
+***************
+*** 13626,13631 ****
+--- 13636,13658 ----
+ }
+ #endif
+
++ #ifdef FEAT_LUA
++ /*
++ * "luaeval()" function
++ */
++ static void
++ f_luaeval(argvars, rettv)
++ typval_T *argvars;
++ typval_T *rettv;
++ {
++ char_u *str;
++ char_u buf[NUMBUFLEN];
++
++ str = get_tv_string_buf(&argvars[0], buf);
++ do_luaeval(str, argvars + 1, rettv);
++ }
++ #endif
++
+ /*
+ * "map()" function
+ */
+*** ../vim-7.3.489/src/if_lua.c 2011-12-08 16:00:12.000000000 +0100
+--- src/if_lua.c 2012-04-05 16:41:35.000000000 +0200
+***************
+*** 1,4 ****
+! /* vi:set ts=8 sts=4 sw=4:
+ *
+ * VIM - Vi IMproved by Bram Moolenaar
+ *
+--- 1,4 ----
+! /* vi:set ts=8 sts=4 sw=4 noet:
+ *
+ * VIM - Vi IMproved by Bram Moolenaar
+ *
+***************
+*** 21,35 ****
+--- 21,53 ----
+
+ #define LUAVIM_CHUNKNAME "vim chunk"
+ #define LUAVIM_NAME "vim"
++ #define LUAVIM_EVALNAME "luaeval"
++ #define LUAVIM_EVALHEADER "local _A=select(1,...) return "
+
+ typedef buf_T *luaV_Buffer;
+ typedef win_T *luaV_Window;
++ typedef dict_T *luaV_Dict;
++ typedef list_T *luaV_List;
+ typedef void (*msgfunc_T)(char_u *);
+
++ static const char LUAVIM_DICT[] = "dict";
++ static const char LUAVIM_LIST[] = "list";
+ static const char LUAVIM_BUFFER[] = "buffer";
+ static const char LUAVIM_WINDOW[] = "window";
+ static const char LUAVIM_FREE[] = "luaV_free";
++ static const char LUAVIM_LUAEVAL[] = "luaV_luaeval";
++ static const char LUAVIM_SETREF[] = "luaV_setref";
+
++ /* most functions are closures with a cache table as first upvalue;
++ * get/setudata manage references to vim userdata in cache table through
++ * object pointers (light userdata) */
++ #define luaV_getudata(L, v) \
++ lua_pushlightuserdata((L), (void *) (v)); \
++ lua_rawget((L), lua_upvalueindex(1))
++ #define luaV_setudata(L, v) \
++ lua_pushlightuserdata((L), (void *) (v)); \
++ lua_pushvalue((L), -2); \
++ lua_rawset((L), lua_upvalueindex(1))
+ #define luaV_getfield(L, s) \
+ lua_pushlightuserdata((L), (void *)(s)); \
+ lua_rawget((L), LUA_REGISTRYINDEX)
+***************
+*** 38,43 ****
+--- 56,70 ----
+ #define luaV_msg(L) luaV_msgfunc((L), (msgfunc_T) msg)
+ #define luaV_emsg(L) luaV_msgfunc((L), (msgfunc_T) emsg)
+
++ static luaV_List *luaV_pushlist (lua_State *L, list_T *lis);
++ static luaV_Dict *luaV_pushdict (lua_State *L, dict_T *dic);
++
++ #if LUA_VERSION_NUM <= 501
++ #define luaV_openlib(L, l, n) luaL_openlib(L, NULL, l, n)
++ #define luaL_typeerror luaL_typerror
++ #else
++ #define luaV_openlib luaL_setfuncs
++ #endif
+
+ #ifdef DYNAMIC_LUA
+
+***************
+*** 54,85 ****
+ #endif
+
+ /* lauxlib */
+ #define luaL_register dll_luaL_register
+ #define luaL_typerror dll_luaL_typerror
+ #define luaL_checklstring dll_luaL_checklstring
+ #define luaL_checkinteger dll_luaL_checkinteger
+ #define luaL_optinteger dll_luaL_optinteger
+ #define luaL_checktype dll_luaL_checktype
+ #define luaL_error dll_luaL_error
+- #define luaL_loadfile dll_luaL_loadfile
+- #define luaL_loadbuffer dll_luaL_loadbuffer
+ #define luaL_newstate dll_luaL_newstate
+ #define luaL_buffinit dll_luaL_buffinit
+- #define luaL_prepbuffer dll_luaL_prepbuffer
+ #define luaL_addlstring dll_luaL_addlstring
+ #define luaL_pushresult dll_luaL_pushresult
+ /* lua */
+ #define lua_close dll_lua_close
+ #define lua_gettop dll_lua_gettop
+ #define lua_settop dll_lua_settop
+ #define lua_pushvalue dll_lua_pushvalue
+ #define lua_replace dll_lua_replace
+ #define lua_isnumber dll_lua_isnumber
+ #define lua_isstring dll_lua_isstring
+ #define lua_type dll_lua_type
+ #define lua_rawequal dll_lua_rawequal
+- #define lua_tonumber dll_lua_tonumber
+- #define lua_tointeger dll_lua_tointeger
+ #define lua_toboolean dll_lua_toboolean
+ #define lua_tolstring dll_lua_tolstring
+ #define lua_touserdata dll_lua_touserdata
+--- 81,134 ----
+ #endif
+
+ /* lauxlib */
++ #if LUA_VERSION_NUM <= 501
+ #define luaL_register dll_luaL_register
++ #define luaL_prepbuffer dll_luaL_prepbuffer
++ #define luaL_openlib dll_luaL_openlib
+ #define luaL_typerror dll_luaL_typerror
++ #define luaL_loadfile dll_luaL_loadfile
++ #define luaL_loadbuffer dll_luaL_loadbuffer
++ #else
++ #define luaL_prepbuffsize dll_luaL_prepbuffsize
++ #define luaL_setfuncs dll_luaL_setfuncs
++ #define luaL_loadfilex dll_luaL_loadfilex
++ #define luaL_loadbufferx dll_luaL_loadbufferx
++ #define luaL_argerror dll_luaL_argerror
++ #endif
+ #define luaL_checklstring dll_luaL_checklstring
+ #define luaL_checkinteger dll_luaL_checkinteger
+ #define luaL_optinteger dll_luaL_optinteger
+ #define luaL_checktype dll_luaL_checktype
+ #define luaL_error dll_luaL_error
+ #define luaL_newstate dll_luaL_newstate
+ #define luaL_buffinit dll_luaL_buffinit
+ #define luaL_addlstring dll_luaL_addlstring
+ #define luaL_pushresult dll_luaL_pushresult
+ /* lua */
++ #if LUA_VERSION_NUM <= 501
++ #define lua_tonumber dll_lua_tonumber
++ #define lua_tointeger dll_lua_tointeger
++ #define lua_call dll_lua_call
++ #define lua_pcall dll_lua_pcall
++ #else
++ #define lua_tonumberx dll_lua_tonumberx
++ #define lua_tointegerx dll_lua_tointegerx
++ #define lua_callk dll_lua_callk
++ #define lua_pcallk dll_lua_pcallk
++ #define lua_getglobal dll_lua_getglobal
++ #define lua_setglobal dll_lua_setglobal
++ #define lua_typename dll_lua_typename
++ #endif
+ #define lua_close dll_lua_close
+ #define lua_gettop dll_lua_gettop
+ #define lua_settop dll_lua_settop
+ #define lua_pushvalue dll_lua_pushvalue
+ #define lua_replace dll_lua_replace
++ #define lua_remove dll_lua_remove
+ #define lua_isnumber dll_lua_isnumber
+ #define lua_isstring dll_lua_isstring
+ #define lua_type dll_lua_type
+ #define lua_rawequal dll_lua_rawequal
+ #define lua_toboolean dll_lua_toboolean
+ #define lua_tolstring dll_lua_tolstring
+ #define lua_touserdata dll_lua_touserdata
+***************
+*** 94,109 ****
+ #define lua_pushlightuserdata dll_lua_pushlightuserdata
+ #define lua_getfield dll_lua_getfield
+ #define lua_rawget dll_lua_rawget
+ #define lua_createtable dll_lua_createtable
+ #define lua_newuserdata dll_lua_newuserdata
+ #define lua_getmetatable dll_lua_getmetatable
+ #define lua_setfield dll_lua_setfield
+ #define lua_rawset dll_lua_rawset
+ #define lua_rawseti dll_lua_rawseti
+- #define lua_remove dll_lua_remove
+ #define lua_setmetatable dll_lua_setmetatable
+- #define lua_call dll_lua_call
+- #define lua_pcall dll_lua_pcall
+ /* libs */
+ #define luaopen_base dll_luaopen_base
+ #define luaopen_table dll_luaopen_table
+--- 143,156 ----
+ #define lua_pushlightuserdata dll_lua_pushlightuserdata
+ #define lua_getfield dll_lua_getfield
+ #define lua_rawget dll_lua_rawget
++ #define lua_rawgeti dll_lua_rawgeti
+ #define lua_createtable dll_lua_createtable
+ #define lua_newuserdata dll_lua_newuserdata
+ #define lua_getmetatable dll_lua_getmetatable
+ #define lua_setfield dll_lua_setfield
+ #define lua_rawset dll_lua_rawset
+ #define lua_rawseti dll_lua_rawseti
+ #define lua_setmetatable dll_lua_setmetatable
+ /* libs */
+ #define luaopen_base dll_luaopen_base
+ #define luaopen_table dll_luaopen_table
+***************
+*** 116,147 ****
+ #define luaL_openlibs dll_luaL_openlibs
+
+ /* lauxlib */
+ void (*dll_luaL_register) (lua_State *L, const char *libname, const luaL_Reg *l);
+ int (*dll_luaL_typerror) (lua_State *L, int narg, const char *tname);
+ const char *(*dll_luaL_checklstring) (lua_State *L, int numArg, size_t *l);
+ lua_Integer (*dll_luaL_checkinteger) (lua_State *L, int numArg);
+ lua_Integer (*dll_luaL_optinteger) (lua_State *L, int nArg, lua_Integer def);
+ void (*dll_luaL_checktype) (lua_State *L, int narg, int t);
+ int (*dll_luaL_error) (lua_State *L, const char *fmt, ...);
+- int (*dll_luaL_loadfile) (lua_State *L, const char *filename);
+- int (*dll_luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz, const char *name);
+ lua_State *(*dll_luaL_newstate) (void);
+ void (*dll_luaL_buffinit) (lua_State *L, luaL_Buffer *B);
+- char *(*dll_luaL_prepbuffer) (luaL_Buffer *B);
+ void (*dll_luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l);
+ void (*dll_luaL_pushresult) (luaL_Buffer *B);
+ /* lua */
+ void (*dll_lua_close) (lua_State *L);
+ int (*dll_lua_gettop) (lua_State *L);
+ void (*dll_lua_settop) (lua_State *L, int idx);
+ void (*dll_lua_pushvalue) (lua_State *L, int idx);
+ void (*dll_lua_replace) (lua_State *L, int idx);
+ int (*dll_lua_isnumber) (lua_State *L, int idx);
+ int (*dll_lua_isstring) (lua_State *L, int idx);
+ int (*dll_lua_type) (lua_State *L, int idx);
+ int (*dll_lua_rawequal) (lua_State *L, int idx1, int idx2);
+- lua_Number (*dll_lua_tonumber) (lua_State *L, int idx);
+- lua_Integer (*dll_lua_tointeger) (lua_State *L, int idx);
+ int (*dll_lua_toboolean) (lua_State *L, int idx);
+ const char *(*dll_lua_tolstring) (lua_State *L, int idx, size_t *len);
+ void *(*dll_lua_touserdata) (lua_State *L, int idx);
+--- 163,218 ----
+ #define luaL_openlibs dll_luaL_openlibs
+
+ /* lauxlib */
++ #if LUA_VERSION_NUM <= 501
+ void (*dll_luaL_register) (lua_State *L, const char *libname, const luaL_Reg *l);
++ char *(*dll_luaL_prepbuffer) (luaL_Buffer *B);
++ void (*dll_luaL_openlib) (lua_State *L, const char *libname, const luaL_Reg *l, int nup);
+ int (*dll_luaL_typerror) (lua_State *L, int narg, const char *tname);
++ int (*dll_luaL_loadfile) (lua_State *L, const char *filename);
++ int (*dll_luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz, const char *name);
++ #else
++ char *(*dll_luaL_prepbuffsize) (luaL_Buffer *B, size_t sz);
++ void (*dll_luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup);
++ int (*dll_luaL_loadfilex) (lua_State *L, const char *filename, const char *mode);
++ int (*dll_luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz, const char *name, const char *mode);
++ int (*dll_luaL_argerror) (lua_State *L, int numarg, const char *extramsg);
++ #endif
+ const char *(*dll_luaL_checklstring) (lua_State *L, int numArg, size_t *l);
+ lua_Integer (*dll_luaL_checkinteger) (lua_State *L, int numArg);
+ lua_Integer (*dll_luaL_optinteger) (lua_State *L, int nArg, lua_Integer def);
+ void (*dll_luaL_checktype) (lua_State *L, int narg, int t);
+ int (*dll_luaL_error) (lua_State *L, const char *fmt, ...);
+ lua_State *(*dll_luaL_newstate) (void);
+ void (*dll_luaL_buffinit) (lua_State *L, luaL_Buffer *B);
+ void (*dll_luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l);
+ void (*dll_luaL_pushresult) (luaL_Buffer *B);
+ /* lua */
++ #if LUA_VERSION_NUM <= 501
++ lua_Number (*dll_lua_tonumber) (lua_State *L, int idx);
++ lua_Integer (*dll_lua_tointeger) (lua_State *L, int idx);
++ void (*dll_lua_call) (lua_State *L, int nargs, int nresults);
++ int (*dll_lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc);
++ #else
++ lua_Number (*dll_lua_tonumberx) (lua_State *L, int idx, int *isnum);
++ lua_Integer (*dll_lua_tointegerx) (lua_State *L, int idx, int *isnum);
++ void (*dll_lua_callk) (lua_State *L, int nargs, int nresults, int ctx,
++ lua_CFunction k);
++ int (*dll_lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc,
++ int ctx, lua_CFunction k);
++ void (*dll_lua_getglobal) (lua_State *L, const char *var);
++ void (*dll_lua_setglobal) (lua_State *L, const char *var);
++ const char *(*dll_lua_typename) (lua_State *L, int tp);
++ #endif
+ void (*dll_lua_close) (lua_State *L);
+ int (*dll_lua_gettop) (lua_State *L);
+ void (*dll_lua_settop) (lua_State *L, int idx);
+ void (*dll_lua_pushvalue) (lua_State *L, int idx);
+ void (*dll_lua_replace) (lua_State *L, int idx);
++ void (*dll_lua_remove) (lua_State *L, int idx);
+ int (*dll_lua_isnumber) (lua_State *L, int idx);
+ int (*dll_lua_isstring) (lua_State *L, int idx);
+ int (*dll_lua_type) (lua_State *L, int idx);
+ int (*dll_lua_rawequal) (lua_State *L, int idx1, int idx2);
+ int (*dll_lua_toboolean) (lua_State *L, int idx);
+ const char *(*dll_lua_tolstring) (lua_State *L, int idx, size_t *len);
+ void *(*dll_lua_touserdata) (lua_State *L, int idx);
+***************
+*** 156,171 ****
+ void (*dll_lua_pushlightuserdata) (lua_State *L, void *p);
+ void (*dll_lua_getfield) (lua_State *L, int idx, const char *k);
+ void (*dll_lua_rawget) (lua_State *L, int idx);
+ void (*dll_lua_createtable) (lua_State *L, int narr, int nrec);
+ void *(*dll_lua_newuserdata) (lua_State *L, size_t sz);
+ int (*dll_lua_getmetatable) (lua_State *L, int objindex);
+ void (*dll_lua_setfield) (lua_State *L, int idx, const char *k);
+ void (*dll_lua_rawset) (lua_State *L, int idx);
+ void (*dll_lua_rawseti) (lua_State *L, int idx, int n);
+- void (*dll_lua_remove) (lua_State *L, int idx);
+ int (*dll_lua_setmetatable) (lua_State *L, int objindex);
+- void (*dll_lua_call) (lua_State *L, int nargs, int nresults);
+- int (*dll_lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc);
+ /* libs */
+ int (*dll_luaopen_base) (lua_State *L);
+ int (*dll_luaopen_table) (lua_State *L);
+--- 227,240 ----
+ void (*dll_lua_pushlightuserdata) (lua_State *L, void *p);
+ void (*dll_lua_getfield) (lua_State *L, int idx, const char *k);
+ void (*dll_lua_rawget) (lua_State *L, int idx);
++ void (*dll_lua_rawgeti) (lua_State *L, int idx, int n);
+ void (*dll_lua_createtable) (lua_State *L, int narr, int nrec);
+ void *(*dll_lua_newuserdata) (lua_State *L, size_t sz);
+ int (*dll_lua_getmetatable) (lua_State *L, int objindex);
+ void (*dll_lua_setfield) (lua_State *L, int idx, const char *k);
+ void (*dll_lua_rawset) (lua_State *L, int idx);
+ void (*dll_lua_rawseti) (lua_State *L, int idx, int n);
+ int (*dll_lua_setmetatable) (lua_State *L, int objindex);
+ /* libs */
+ int (*dll_luaopen_base) (lua_State *L);
+ int (*dll_luaopen_table) (lua_State *L);
+***************
+*** 185,216 ****
+
+ static const luaV_Reg luaV_dll[] = {
+ /* lauxlib */
+ {"luaL_register", (luaV_function) &dll_luaL_register},
+ {"luaL_typerror", (luaV_function) &dll_luaL_typerror},
+ {"luaL_checklstring", (luaV_function) &dll_luaL_checklstring},
+ {"luaL_checkinteger", (luaV_function) &dll_luaL_checkinteger},
+ {"luaL_optinteger", (luaV_function) &dll_luaL_optinteger},
+ {"luaL_checktype", (luaV_function) &dll_luaL_checktype},
+ {"luaL_error", (luaV_function) &dll_luaL_error},
+- {"luaL_loadfile", (luaV_function) &dll_luaL_loadfile},
+- {"luaL_loadbuffer", (luaV_function) &dll_luaL_loadbuffer},
+ {"luaL_newstate", (luaV_function) &dll_luaL_newstate},
+ {"luaL_buffinit", (luaV_function) &dll_luaL_buffinit},
+- {"luaL_prepbuffer", (luaV_function) &dll_luaL_prepbuffer},
+ {"luaL_addlstring", (luaV_function) &dll_luaL_addlstring},
+ {"luaL_pushresult", (luaV_function) &dll_luaL_pushresult},
+ /* lua */
+ {"lua_close", (luaV_function) &dll_lua_close},
+ {"lua_gettop", (luaV_function) &dll_lua_gettop},
+ {"lua_settop", (luaV_function) &dll_lua_settop},
+ {"lua_pushvalue", (luaV_function) &dll_lua_pushvalue},
+ {"lua_replace", (luaV_function) &dll_lua_replace},
+ {"lua_isnumber", (luaV_function) &dll_lua_isnumber},
+ {"lua_isstring", (luaV_function) &dll_lua_isstring},
+ {"lua_type", (luaV_function) &dll_lua_type},
+ {"lua_rawequal", (luaV_function) &dll_lua_rawequal},
+- {"lua_tonumber", (luaV_function) &dll_lua_tonumber},
+- {"lua_tointeger", (luaV_function) &dll_lua_tointeger},
+ {"lua_toboolean", (luaV_function) &dll_lua_toboolean},
+ {"lua_tolstring", (luaV_function) &dll_lua_tolstring},
+ {"lua_touserdata", (luaV_function) &dll_lua_touserdata},
+--- 254,307 ----
+
+ static const luaV_Reg luaV_dll[] = {
+ /* lauxlib */
++ #if LUA_VERSION_NUM <= 501
+ {"luaL_register", (luaV_function) &dll_luaL_register},
++ {"luaL_prepbuffer", (luaV_function) &dll_luaL_prepbuffer},
++ {"luaL_openlib", (luaV_function) &dll_luaL_openlib},
+ {"luaL_typerror", (luaV_function) &dll_luaL_typerror},
++ {"luaL_loadfile", (luaV_function) &dll_luaL_loadfile},
++ {"luaL_loadbuffer", (luaV_function) &dll_luaL_loadbuffer},
++ #else
++ {"luaL_prepbuffsize", (luaV_function) &dll_luaL_prepbuffsize},
++ {"luaL_setfuncs", (luaV_function) &dll_luaL_setfuncs},
++ {"luaL_loadfilex", (luaV_function) &dll_luaL_loadfilex},
++ {"luaL_loadbufferx", (luaV_function) &dll_luaL_loadbufferx},
++ {"luaL_argerror", (luaV_function) &dll_luaL_argerror},
++ #endif
+ {"luaL_checklstring", (luaV_function) &dll_luaL_checklstring},
+ {"luaL_checkinteger", (luaV_function) &dll_luaL_checkinteger},
+ {"luaL_optinteger", (luaV_function) &dll_luaL_optinteger},
+ {"luaL_checktype", (luaV_function) &dll_luaL_checktype},
+ {"luaL_error", (luaV_function) &dll_luaL_error},
+ {"luaL_newstate", (luaV_function) &dll_luaL_newstate},
+ {"luaL_buffinit", (luaV_function) &dll_luaL_buffinit},
+ {"luaL_addlstring", (luaV_function) &dll_luaL_addlstring},
+ {"luaL_pushresult", (luaV_function) &dll_luaL_pushresult},
+ /* lua */
++ #if LUA_VERSION_NUM <= 501
++ {"lua_tonumber", (luaV_function) &dll_lua_tonumber},
++ {"lua_tointeger", (luaV_function) &dll_lua_tointeger},
++ {"lua_call", (luaV_function) &dll_lua_call},
++ {"lua_pcall", (luaV_function) &dll_lua_pcall},
++ #else
++ {"lua_tonumberx", (luaV_function) &dll_lua_tonumberx},
++ {"lua_tointegerx", (luaV_function) &dll_lua_tointegerx},
++ {"lua_callk", (luaV_function) &dll_lua_callk},
++ {"lua_pcallk", (luaV_function) &dll_lua_pcallk},
++ {"lua_getglobal", (luaV_function) &dll_lua_getglobal},
++ {"lua_setglobal", (luaV_function) &dll_lua_setglobal},
++ {"lua_typename", (luaV_function) &dll_lua_typename},
++ #endif
+ {"lua_close", (luaV_function) &dll_lua_close},
+ {"lua_gettop", (luaV_function) &dll_lua_gettop},
+ {"lua_settop", (luaV_function) &dll_lua_settop},
+ {"lua_pushvalue", (luaV_function) &dll_lua_pushvalue},
+ {"lua_replace", (luaV_function) &dll_lua_replace},
++ {"lua_remove", (luaV_function) &dll_lua_remove},
+ {"lua_isnumber", (luaV_function) &dll_lua_isnumber},
+ {"lua_isstring", (luaV_function) &dll_lua_isstring},
+ {"lua_type", (luaV_function) &dll_lua_type},
+ {"lua_rawequal", (luaV_function) &dll_lua_rawequal},
+ {"lua_toboolean", (luaV_function) &dll_lua_toboolean},
+ {"lua_tolstring", (luaV_function) &dll_lua_tolstring},
+ {"lua_touserdata", (luaV_function) &dll_lua_touserdata},
+***************
+*** 225,240 ****
+ {"lua_pushlightuserdata", (luaV_function) &dll_lua_pushlightuserdata},
+ {"lua_getfield", (luaV_function) &dll_lua_getfield},
+ {"lua_rawget", (luaV_function) &dll_lua_rawget},
+ {"lua_createtable", (luaV_function) &dll_lua_createtable},
+ {"lua_newuserdata", (luaV_function) &dll_lua_newuserdata},
+ {"lua_getmetatable", (luaV_function) &dll_lua_getmetatable},
+ {"lua_setfield", (luaV_function) &dll_lua_setfield},
+ {"lua_rawset", (luaV_function) &dll_lua_rawset},
+ {"lua_rawseti", (luaV_function) &dll_lua_rawseti},
+- {"lua_remove", (luaV_function) &dll_lua_remove},
+ {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable},
+- {"lua_call", (luaV_function) &dll_lua_call},
+- {"lua_pcall", (luaV_function) &dll_lua_pcall},
+ /* libs */
+ {"luaopen_base", (luaV_function) &dll_luaopen_base},
+ {"luaopen_table", (luaV_function) &dll_luaopen_table},
+--- 316,329 ----
+ {"lua_pushlightuserdata", (luaV_function) &dll_lua_pushlightuserdata},
+ {"lua_getfield", (luaV_function) &dll_lua_getfield},
+ {"lua_rawget", (luaV_function) &dll_lua_rawget},
++ {"lua_rawgeti", (luaV_function) &dll_lua_rawgeti},
+ {"lua_createtable", (luaV_function) &dll_lua_createtable},
+ {"lua_newuserdata", (luaV_function) &dll_lua_newuserdata},
+ {"lua_getmetatable", (luaV_function) &dll_lua_getmetatable},
+ {"lua_setfield", (luaV_function) &dll_lua_setfield},
+ {"lua_rawset", (luaV_function) &dll_lua_rawset},
+ {"lua_rawseti", (luaV_function) &dll_lua_rawseti},
+ {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable},
+ /* libs */
+ {"luaopen_base", (luaV_function) &dll_luaopen_base},
+ {"luaopen_table", (luaV_function) &dll_luaopen_table},
+***************
+*** 294,299 ****
+--- 383,398 ----
+
+ #endif /* DYNAMIC_LUA */
+
++ #if LUA_VERSION_NUM > 501
++ static int
++ luaL_typeerror (lua_State *L, int narg, const char *tname)
++ {
++ const char *msg = lua_pushfstring(L, "%s expected, got %s",
++ tname, luaL_typename(L, narg));
++ return luaL_argerror(L, narg, msg);
++ }
++ #endif
++
+
+ /* ======= Internal ======= */
+
+***************
+*** 327,343 ****
+ }
+
+ static void *
+ luaV_checkudata(lua_State *L, int ud, const char *tname)
+ {
+ void *p = luaV_toudata(L, ud, tname);
+! if (p == NULL) luaL_typerror(L, ud, tname);
+ return p;
+ }
+
+ static void
+ luaV_pushtypval(lua_State *L, typval_T *tv)
+ {
+! if (tv == NULL) luaL_error(L, "null type");
+ switch (tv->v_type)
+ {
+ case VAR_STRING:
+--- 426,460 ----
+ }
+
+ static void *
++ luaV_checkcache(lua_State *L, void *p)
++ {
++ luaV_getudata(L, p);
++ if (lua_isnil(L, -1)) luaL_error(L, "invalid object");
++ lua_pop(L, 1);
++ return p;
++ }
++
++ #define luaV_unbox(L,luatyp,ud) (*((luatyp *) lua_touserdata((L),(ud))))
++
++ #define luaV_checkvalid(L,luatyp,ud) \
++ luaV_checkcache((L), (void *) luaV_unbox((L),luatyp,(ud)))
++
++ static void *
+ luaV_checkudata(lua_State *L, int ud, const char *tname)
+ {
+ void *p = luaV_toudata(L, ud, tname);
+! if (p == NULL) luaL_typeerror(L, ud, tname);
+ return p;
+ }
+
+ static void
+ luaV_pushtypval(lua_State *L, typval_T *tv)
+ {
+! if (tv == NULL)
+! {
+! lua_pushnil(L);
+! return;
+! }
+ switch (tv->v_type)
+ {
+ case VAR_STRING:
+***************
+*** 351,418 ****
+ lua_pushnumber(L, (lua_Number) tv->vval.v_float);
+ break;
+ #endif
+! case VAR_LIST: {
+! list_T *l = tv->vval.v_list;
+
+! if (l != NULL)
+ {
+! /* check cache */
+! lua_pushlightuserdata(L, (void *) l);
+! lua_rawget(L, LUA_ENVIRONINDEX);
+! if (lua_isnil(L, -1)) /* not interned? */
+ {
+! listitem_T *li;
+! int n = 0;
+! lua_pop(L, 1); /* nil */
+! lua_newtable(L);
+! lua_pushlightuserdata(L, (void *) l);
+! lua_pushvalue(L, -2);
+! lua_rawset(L, LUA_ENVIRONINDEX);
+! for (li = l->lv_first; li != NULL; li = li->li_next)
+! {
+! luaV_pushtypval(L, &li->li_tv);
+! lua_rawseti(L, -2, ++n);
+! }
+ }
+! }
+! else lua_pushnil(L);
+! break;
+! }
+! case VAR_DICT: {
+! dict_T *d = tv->vval.v_dict;
+!
+! if (d != NULL)
+! {
+! /* check cache */
+! lua_pushlightuserdata(L, (void *) d);
+! lua_rawget(L, LUA_ENVIRONINDEX);
+! if (lua_isnil(L, -1)) /* not interned? */
+ {
+! hashtab_T *ht = &d->dv_hashtab;
+! hashitem_T *hi;
+! int n = ht->ht_used; /* remaining items */
+! lua_pop(L, 1); /* nil */
+! lua_newtable(L);
+! lua_pushlightuserdata(L, (void *) d);
+! lua_pushvalue(L, -2);
+! lua_rawset(L, LUA_ENVIRONINDEX);
+! for (hi = ht->ht_array; n > 0; hi++)
+! {
+! if (!HASHITEM_EMPTY(hi))
+! {
+! dictitem_T *di = dict_lookup(hi);
+! luaV_pushtypval(L, &di->di_tv);
+! lua_setfield(L, -2, (char *) hi->hi_key);
+! n--;
+! }
+! }
+ }
+ }
+- else lua_pushnil(L);
+ break;
+ }
+ default:
+! luaL_error(L, "invalid type");
+ }
+ }
+
+--- 468,537 ----
+ lua_pushnumber(L, (lua_Number) tv->vval.v_float);
+ break;
+ #endif
+! case VAR_LIST:
+! luaV_pushlist(L, tv->vval.v_list);
+! break;
+! case VAR_DICT:
+! luaV_pushdict(L, tv->vval.v_dict);
+! break;
+! default:
+! lua_pushnil(L);
+! }
+! }
+
+! /* converts lua value at 'pos' to typval 'tv' */
+! static void
+! luaV_totypval (lua_State *L, int pos, typval_T *tv)
+! {
+! switch(lua_type(L, pos)) {
+! case LUA_TBOOLEAN:
+! tv->v_type = VAR_NUMBER;
+! tv->vval.v_number = (varnumber_T) lua_toboolean(L, pos);
+! break;
+! case LUA_TSTRING:
+! tv->v_type = VAR_STRING;
+! tv->vval.v_string = vim_strsave((char_u *) lua_tostring(L, pos));
+! break;
+! case LUA_TNUMBER:
+! #ifdef FEAT_FLOAT
+! tv->v_type = VAR_FLOAT;
+! tv->vval.v_float = (float_T) lua_tonumber(L, pos);
+! #else
+! tv->v_type = VAR_NUMBER;
+! tv->vval.v_number = (varnumber_T) lua_tointeger(L, pos);
+! #endif
+! break;
+! case LUA_TUSERDATA: {
+! void *p = lua_touserdata(L, pos);
+! if (lua_getmetatable(L, pos)) /* has metatable? */
+ {
+! /* check list */
+! luaV_getfield(L, LUAVIM_LIST);
+! if (lua_rawequal(L, -1, -2))
+ {
+! tv->v_type = VAR_LIST;
+! tv->vval.v_list = *((luaV_List *) p);
+! ++tv->vval.v_list->lv_refcount;
+! lua_pop(L, 2); /* MTs */
+! return;
+ }
+! /* check dict */
+! luaV_getfield(L, LUAVIM_DICT);
+! if (lua_rawequal(L, -1, -3))
+ {
+! tv->v_type = VAR_DICT;
+! tv->vval.v_dict = *((luaV_Dict *) p);
+! ++tv->vval.v_dict->dv_refcount;
+! lua_pop(L, 3); /* MTs */
+! return;
+ }
++ lua_pop(L, 3); /* MTs */
+ }
+ break;
+ }
+ default:
+! tv->v_type = VAR_NUMBER;
+! tv->vval.v_number = 0;
+ }
+ }
+
+***************
+*** 481,569 ****
+ lua_pop(L, 2); /* original and modified strings */
+ }
+
+
+! /* ======= Buffer type ======= */
+
+! static luaV_Buffer *
+! luaV_newbuffer(lua_State *L, buf_T *buf)
+ {
+! luaV_Buffer *b = (luaV_Buffer *) lua_newuserdata(L, sizeof(luaV_Buffer));
+! *b = buf;
+! lua_pushlightuserdata(L, (void *) buf);
+! lua_pushvalue(L, -2);
+! lua_rawset(L, LUA_ENVIRONINDEX); /* env[buf] = udata */
+! /* to avoid GC, store as key in env */
+! lua_pushvalue(L, -1);
+! lua_pushboolean(L, 1);
+! lua_rawset(L, LUA_ENVIRONINDEX); /* env[udata] = true */
+! /* set metatable */
+! luaV_getfield(L, LUAVIM_BUFFER);
+ lua_setmetatable(L, -2);
+! return b;
+ }
+
+! static luaV_Buffer *
+! luaV_pushbuffer (lua_State *L, buf_T *buf)
+ {
+! luaV_Buffer *b = NULL;
+! if (buf == NULL)
+! lua_pushnil(L);
+! else {
+! lua_pushlightuserdata(L, (void *) buf);
+! lua_rawget(L, LUA_ENVIRONINDEX);
+! if (lua_isnil(L, -1)) /* not interned? */
+ {
+! lua_pop(L, 1);
+! b = luaV_newbuffer(L, buf);
+ }
+ else
+! b = (luaV_Buffer *) lua_touserdata(L, -1);
+ }
+! return b;
+ }
+
+! /* Buffer metamethods */
+
+ static int
+! luaV_buffer_tostring(lua_State *L)
+ {
+! lua_pushfstring(L, "%s: %p", LUAVIM_BUFFER, lua_touserdata(L, 1));
+ return 1;
+ }
+
+ static int
+ luaV_buffer_len(lua_State *L)
+ {
+! luaV_Buffer *b = lua_touserdata(L, 1);
+! lua_pushinteger(L, (*b)->b_ml.ml_line_count);
+ return 1;
+ }
+
+ static int
+ luaV_buffer_call(lua_State *L)
+ {
+! luaV_Buffer *b = (luaV_Buffer *) lua_touserdata(L, 1);
+ lua_settop(L, 1);
+! set_curbuf(*b, DOBUF_SPLIT);
+ return 1;
+ }
+
+ static int
+ luaV_buffer_index(lua_State *L)
+ {
+! luaV_Buffer *b = (luaV_Buffer *) lua_touserdata(L, 1);
+ linenr_T n = (linenr_T) lua_tointeger(L, 2);
+! if (n > 0 && n <= (*b)->b_ml.ml_line_count)
+! luaV_pushline(L, *b, n);
+ else if (lua_isstring(L, 2))
+ {
+ const char *s = lua_tostring(L, 2);
+ if (strncmp(s, "name", 4) == 0)
+! lua_pushstring(L, (char *) (*b)->b_sfname);
+ else if (strncmp(s, "fname", 5) == 0)
+! lua_pushstring(L, (char *) (*b)->b_ffname);
+ else if (strncmp(s, "number", 6) == 0)
+! lua_pushinteger(L, (*b)->b_fnum);
+ /* methods */
+ else if (strncmp(s, "insert", 6) == 0
+ || strncmp(s, "next", 4) == 0
+--- 600,1107 ----
+ lua_pop(L, 2); /* original and modified strings */
+ }
+
++ #define luaV_newtype(typ,tname,luatyp,luatname) \
++ static luatyp * \
++ luaV_new##tname (lua_State *L, typ *obj) \
++ { \
++ luatyp *o = (luatyp *) lua_newuserdata(L, sizeof(luatyp)); \
++ *o = obj; \
++ luaV_setudata(L, obj); /* cache[obj] = udata */ \
++ luaV_getfield(L, luatname); \
++ lua_setmetatable(L, -2); \
++ return o; \
++ }
++
++ #define luaV_pushtype(typ,tname,luatyp) \
++ static luatyp * \
++ luaV_push##tname (lua_State *L, typ *obj) \
++ { \
++ luatyp *o = NULL; \
++ if (obj == NULL) \
++ lua_pushnil(L); \
++ else { \
++ luaV_getudata(L, obj); \
++ if (lua_isnil(L, -1)) /* not interned? */ \
++ { \
++ lua_pop(L, 1); \
++ o = luaV_new##tname(L, obj); \
++ } \
++ else \
++ o = (luatyp *) lua_touserdata(L, -1); \
++ } \
++ return o; \
++ }
++
++ #define luaV_type_tostring(tname,luatname) \
++ static int \
++ luaV_##tname##_tostring (lua_State *L) \
++ { \
++ lua_pushfstring(L, "%s: %p", luatname, lua_touserdata(L, 1)); \
++ return 1; \
++ }
++
+
+! /* adapted from eval.c */
+!
+! #define listitem_alloc() (listitem_T *)alloc(sizeof(listitem_T))
+!
+! static listitem_T *
+! list_find (list_T *l, long n)
+! {
+! listitem_T *li;
+! if (l == NULL || n < -l->lv_len || n >= l->lv_len)
+! return NULL;
+! if (n < 0) /* search backward? */
+! for (li = l->lv_last; n < -1; li = li->li_prev)
+! n++;
+! else /* search forward */
+! for (li = l->lv_first; n > 0; li = li->li_next)
+! n--;
+! return li;
+! }
+
+! static void
+! list_remove (list_T *l, listitem_T *li)
+ {
+! listwatch_T *lw;
+! --l->lv_len;
+! /* fix watchers */
+! for (lw = l->lv_watch; lw != NULL; lw = lw->lw_next)
+! if (lw->lw_item == li)
+! lw->lw_item = li->li_next;
+! /* fix list pointers */
+! if (li->li_next == NULL) /* last? */
+! l->lv_last = li->li_prev;
+! else
+! li->li_next->li_prev = li->li_prev;
+! if (li->li_prev == NULL) /* first? */
+! l->lv_first = li->li_next;
+! else
+! li->li_prev->li_next = li->li_next;
+! l->lv_idx_item = NULL;
+! }
+!
+! static void
+! list_append(list_T *l, listitem_T *item)
+! {
+! if (l->lv_last == NULL) /* empty list? */
+! l->lv_first = item;
+! else
+! l->lv_last->li_next = item;
+! item->li_prev = l->lv_last;
+! item->li_next = NULL;
+! l->lv_last = item;
+! ++l->lv_len;
+! }
+!
+! static int
+! list_insert_tv(list_T *l, typval_T *tv, listitem_T *item)
+! {
+! listitem_T *ni = listitem_alloc();
+!
+! if (ni == NULL)
+! return FAIL;
+! copy_tv(tv, &ni->li_tv);
+! if (item == NULL)
+! list_append(l, ni);
+! else
+! {
+! ni->li_prev = item->li_prev;
+! ni->li_next = item;
+! if (item->li_prev == NULL)
+! {
+! l->lv_first = ni;
+! ++l->lv_idx;
+! }
+! else
+! {
+! item->li_prev->li_next = ni;
+! l->lv_idx_item = NULL;
+! }
+! item->li_prev = ni;
+! ++l->lv_len;
+! }
+! return OK;
+! }
+!
+! /* set references */
+!
+! static void set_ref_in_tv (typval_T *tv, int copyID);
+!
+! static void
+! set_ref_in_dict(dict_T *d, int copyID)
+! {
+! hashtab_T *ht = &d->dv_hashtab;
+! int n = ht->ht_used;
+! hashitem_T *hi;
+! for (hi = ht->ht_array; n > 0; ++hi)
+! if (!HASHITEM_EMPTY(hi))
+! {
+! dictitem_T *di = dict_lookup(hi);
+! set_ref_in_tv(&di->di_tv, copyID);
+! --n;
+! }
+! }
+!
+! static void
+! set_ref_in_list(list_T *l, int copyID)
+! {
+! listitem_T *li;
+! for (li = l->lv_first; li != NULL; li = li->li_next)
+! set_ref_in_tv(&li->li_tv, copyID);
+! }
+!
+! static void
+! set_ref_in_tv(typval_T *tv, int copyID)
+! {
+! if (tv->v_type == VAR_LIST)
+! {
+! list_T *l = tv->vval.v_list;
+! if (l != NULL && l->lv_copyID != copyID)
+! {
+! l->lv_copyID = copyID;
+! set_ref_in_list(l, copyID);
+! }
+! }
+! else if (tv->v_type == VAR_DICT)
+! {
+! dict_T *d = tv->vval.v_dict;
+! if (d != NULL && d->dv_copyID != copyID)
+! {
+! d->dv_copyID = copyID;
+! set_ref_in_dict(d, copyID);
+! }
+! }
+! }
+!
+!
+! /* ======= List type ======= */
+!
+! static luaV_List *
+! luaV_newlist (lua_State *L, list_T *lis)
+! {
+! luaV_List *l = (luaV_List *) lua_newuserdata(L, sizeof(luaV_List));
+! *l = lis;
+! lis->lv_refcount++; /* reference in Lua */
+! luaV_setudata(L, lis); /* cache[lis] = udata */
+! luaV_getfield(L, LUAVIM_LIST);
+ lua_setmetatable(L, -2);
+! return l;
+ }
+
+! luaV_pushtype(list_T, list, luaV_List)
+! luaV_type_tostring(list, LUAVIM_LIST)
+!
+! static int
+! luaV_list_gc (lua_State *L)
+ {
+! list_unref(luaV_unbox(L, luaV_List, 1));
+! return 0;
+! }
+!
+! static int
+! luaV_list_len (lua_State *L)
+! {
+! list_T *l = luaV_unbox(L, luaV_List, 1);
+! lua_pushinteger(L, (l == NULL) ? 0 : (int) l->lv_len);
+! return 1;
+! }
+!
+! static int
+! luaV_list_iter (lua_State *L)
+! {
+! listitem_T *li = (listitem_T *) lua_touserdata(L, lua_upvalueindex(2));
+! if (li == NULL) return 0;
+! luaV_pushtypval(L, &li->li_tv);
+! lua_pushlightuserdata(L, (void *) li->li_next);
+! lua_replace(L, lua_upvalueindex(2));
+! return 1;
+! }
+!
+! static int
+! luaV_list_call (lua_State *L)
+! {
+! list_T *l = luaV_unbox(L, luaV_List, 1);
+! lua_pushvalue(L, lua_upvalueindex(1)); /* pass cache table along */
+! lua_pushlightuserdata(L, (void *) l->lv_first);
+! lua_pushcclosure(L, luaV_list_iter, 2);
+! return 1;
+! }
+!
+! static int
+! luaV_list_index (lua_State *L)
+! {
+! list_T *l = luaV_unbox(L, luaV_List, 1);
+! if (lua_isnumber(L, 2)) /* list item? */
+! {
+! listitem_T *li = list_find(l, (long) luaL_checkinteger(L, 2));
+! if (li == NULL)
+! lua_pushnil(L);
+! else
+! luaV_pushtypval(L, &li->li_tv);
+! }
+! else if (lua_isstring(L, 2)) /* method? */
+! {
+! const char *s = lua_tostring(L, 2);
+! if (strncmp(s, "add", 3) == 0
+! || strncmp(s, "insert", 6) == 0
+! || strncmp(s, "extend", 6) == 0)
+ {
+! lua_getmetatable(L, 1);
+! lua_getfield(L, -1, s);
+ }
+ else
+! lua_pushnil(L);
+ }
+! else
+! lua_pushnil(L);
+! return 1;
+ }
+
+! static int
+! luaV_list_newindex (lua_State *L)
+! {
+! list_T *l = luaV_unbox(L, luaV_List, 1);
+! long n = (long) luaL_checkinteger(L, 2);
+! listitem_T *li;
+! if (l->lv_lock)
+! luaL_error(L, "list is locked");
+! li = list_find(l, n);
+! if (li == NULL) return 0;
+! if (lua_isnil(L, 3)) /* remove? */
+! {
+! list_remove(l, li);
+! clear_tv(&li->li_tv);
+! vim_free(li);
+! }
+! else
+! {
+! typval_T v;
+! luaV_totypval(L, 3, &v);
+! clear_tv(&li->li_tv);
+! copy_tv(&v, &li->li_tv);
+! }
+! return 0;
+! }
+
+ static int
+! luaV_list_add (lua_State *L)
+ {
+! luaV_List *lis = luaV_checkudata(L, 1, LUAVIM_LIST);
+! list_T *l = (list_T *) luaV_checkcache(L, (void *) *lis);
+! listitem_T *li;
+! if (l->lv_lock)
+! luaL_error(L, "list is locked");
+! li = listitem_alloc();
+! if (li != NULL)
+! {
+! typval_T v;
+! lua_settop(L, 2);
+! luaV_totypval(L, 2, &v);
+! copy_tv(&v, &li->li_tv);
+! list_append(l, li);
+! }
+! lua_settop(L, 1);
+ return 1;
+ }
+
+ static int
++ luaV_list_insert (lua_State *L)
++ {
++ luaV_List *lis = luaV_checkudata(L, 1, LUAVIM_LIST);
++ list_T *l = (list_T *) luaV_checkcache(L, (void *) *lis);
++ long pos = luaL_optlong(L, 3, 0);
++ listitem_T *li = NULL;
++ typval_T v;
++ if (l->lv_lock)
++ luaL_error(L, "list is locked");
++ if (pos < l->lv_len)
++ {
++ li = list_find(l, pos);
++ if (li == NULL)
++ luaL_error(L, "invalid position");
++ }
++ lua_settop(L, 2);
++ luaV_totypval(L, 2, &v);
++ list_insert_tv(l, &v, li);
++ lua_settop(L, 1);
++ return 1;
++ }
++
++ static const luaL_Reg luaV_List_mt[] = {
++ {"__tostring", luaV_list_tostring},
++ {"__gc", luaV_list_gc},
++ {"__len", luaV_list_len},
++ {"__call", luaV_list_call},
++ {"__index", luaV_list_index},
++ {"__newindex", luaV_list_newindex},
++ {"add", luaV_list_add},
++ {"insert", luaV_list_insert},
++ {NULL, NULL}
++ };
++
++
++ /* ======= Dict type ======= */
++
++ static luaV_Dict *
++ luaV_newdict (lua_State *L, dict_T *dic)
++ {
++ luaV_Dict *d = (luaV_Dict *) lua_newuserdata(L, sizeof(luaV_Dict));
++ *d = dic;
++ dic->dv_refcount++; /* reference in Lua */
++ luaV_setudata(L, dic); /* cache[dic] = udata */
++ luaV_getfield(L, LUAVIM_DICT);
++ lua_setmetatable(L, -2);
++ return d;
++ }
++
++ luaV_pushtype(dict_T, dict, luaV_Dict)
++ luaV_type_tostring(dict, LUAVIM_DICT)
++
++ static int
++ luaV_dict_gc (lua_State *L)
++ {
++ dict_unref(luaV_unbox(L, luaV_Dict, 1));
++ return 0;
++ }
++
++ static int
++ luaV_dict_len (lua_State *L)
++ {
++ dict_T *d = luaV_unbox(L, luaV_Dict, 1);
++ lua_pushinteger(L, (d == NULL) ? 0 : (int) d->dv_hashtab.ht_used);
++ return 1;
++ }
++
++ static int
++ luaV_dict_iter (lua_State *L)
++ {
++ hashitem_T *hi = (hashitem_T *) lua_touserdata(L, lua_upvalueindex(2));
++ int n = lua_tointeger(L, lua_upvalueindex(3));
++ dictitem_T *di;
++ if (n <= 0) return 0;
++ while (HASHITEM_EMPTY(hi)) hi++;
++ di = dict_lookup(hi);
++ lua_pushstring(L, (char *) hi->hi_key);
++ luaV_pushtypval(L, &di->di_tv);
++ lua_pushlightuserdata(L, (void *) (hi + 1));
++ lua_replace(L, lua_upvalueindex(2));
++ lua_pushinteger(L, n - 1);
++ lua_replace(L, lua_upvalueindex(3));
++ return 2;
++ }
++
++ static int
++ luaV_dict_call (lua_State *L)
++ {
++ dict_T *d = luaV_unbox(L, luaV_Dict, 1);
++ hashtab_T *ht = &d->dv_hashtab;
++ lua_pushvalue(L, lua_upvalueindex(1)); /* pass cache table along */
++ lua_pushlightuserdata(L, (void *) ht->ht_array);
++ lua_pushinteger(L, ht->ht_used); /* # remaining items */
++ lua_pushcclosure(L, luaV_dict_iter, 3);
++ return 1;
++ }
++
++ static int
++ luaV_dict_index (lua_State *L)
++ {
++ dict_T *d = luaV_unbox(L, luaV_Dict, 1);
++ char_u *key = (char_u *) luaL_checkstring(L, 2);
++ dictitem_T *di = dict_find(d, key, -1);
++ if (di == NULL)
++ lua_pushnil(L);
++ else
++ luaV_pushtypval(L, &di->di_tv);
++ return 1;
++ }
++
++ static int
++ luaV_dict_newindex (lua_State *L)
++ {
++ dict_T *d = luaV_unbox(L, luaV_Dict, 1);
++ char_u *key = (char_u *) luaL_checkstring(L, 2);
++ dictitem_T *di;
++ if (d->dv_lock)
++ luaL_error(L, "dict is locked");
++ di = dict_find(d, key, -1);
++ if (di == NULL) /* non-existing key? */
++ {
++ if (lua_isnil(L, 3)) return 0;
++ di = dictitem_alloc(key);
++ if (di == NULL) return 0;
++ if (dict_add(d, di) == FAIL)
++ {
++ vim_free(di);
++ return 0;
++ }
++ }
++ else
++ clear_tv(&di->di_tv);
++ if (lua_isnil(L, 3)) /* remove? */
++ {
++ hashitem_T *hi = hash_find(&d->dv_hashtab, di->di_key);
++ hash_remove(&d->dv_hashtab, hi);
++ dictitem_free(di);
++ }
++ else {
++ typval_T v;
++ luaV_totypval(L, 3, &v);
++ copy_tv(&v, &di->di_tv);
++ }
++ return 0;
++ }
++
++ static const luaL_Reg luaV_Dict_mt[] = {
++ {"__tostring", luaV_dict_tostring},
++ {"__gc", luaV_dict_gc},
++ {"__len", luaV_dict_len},
++ {"__call", luaV_dict_call},
++ {"__index", luaV_dict_index},
++ {"__newindex", luaV_dict_newindex},
++ {NULL, NULL}
++ };
++
++
++ /* ======= Buffer type ======= */
++
++ luaV_newtype(buf_T, buffer, luaV_Buffer, LUAVIM_BUFFER)
++ luaV_pushtype(buf_T, buffer, luaV_Buffer)
++ luaV_type_tostring(buffer, LUAVIM_BUFFER)
++
++ static int
+ luaV_buffer_len(lua_State *L)
+ {
+! buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1);
+! lua_pushinteger(L, b->b_ml.ml_line_count);
+ return 1;
+ }
+
+ static int
+ luaV_buffer_call(lua_State *L)
+ {
+! buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1);
+ lua_settop(L, 1);
+! set_curbuf(b, DOBUF_SPLIT);
+ return 1;
+ }
+
+ static int
+ luaV_buffer_index(lua_State *L)
+ {
+! buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1);
+ linenr_T n = (linenr_T) lua_tointeger(L, 2);
+! if (n > 0 && n <= b->b_ml.ml_line_count)
+! luaV_pushline(L, b, n);
+ else if (lua_isstring(L, 2))
+ {
+ const char *s = lua_tostring(L, 2);
+ if (strncmp(s, "name", 4) == 0)
+! lua_pushstring(L, (char *) b->b_sfname);
+ else if (strncmp(s, "fname", 5) == 0)
+! lua_pushstring(L, (char *) b->b_ffname);
+ else if (strncmp(s, "number", 6) == 0)
+! lua_pushinteger(L, b->b_fnum);
+ /* methods */
+ else if (strncmp(s, "insert", 6) == 0
+ || strncmp(s, "next", 4) == 0
+***************
+*** 584,600 ****
+ static int
+ luaV_buffer_newindex(lua_State *L)
+ {
+! luaV_Buffer *b = (luaV_Buffer *) lua_touserdata(L, 1);
+ linenr_T n = (linenr_T) luaL_checkinteger(L, 2);
+ #ifdef HAVE_SANDBOX
+ luaV_checksandbox(L);
+ #endif
+! if (n < 1 || n > (*b)->b_ml.ml_line_count)
+ luaL_error(L, "invalid line number");
+ if (lua_isnil(L, 3)) /* delete line */
+ {
+ buf_T *buf = curbuf;
+! curbuf = *b;
+ if (u_savedel(n, 1L) == FAIL)
+ {
+ curbuf = buf;
+--- 1122,1138 ----
+ static int
+ luaV_buffer_newindex(lua_State *L)
+ {
+! buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1);
+ linenr_T n = (linenr_T) luaL_checkinteger(L, 2);
+ #ifdef HAVE_SANDBOX
+ luaV_checksandbox(L);
+ #endif
+! if (n < 1 || n > b->b_ml.ml_line_count)
+ luaL_error(L, "invalid line number");
+ if (lua_isnil(L, 3)) /* delete line */
+ {
+ buf_T *buf = curbuf;
+! curbuf = b;
+ if (u_savedel(n, 1L) == FAIL)
+ {
+ curbuf = buf;
+***************
+*** 607,613 ****
+ }
+ else {
+ deleted_lines_mark(n, 1L);
+! if (*b == curwin->w_buffer) /* fix cursor in current window? */
+ {
+ if (curwin->w_cursor.lnum >= n)
+ {
+--- 1145,1151 ----
+ }
+ else {
+ deleted_lines_mark(n, 1L);
+! if (b == curwin->w_buffer) /* fix cursor in current window? */
+ {
+ if (curwin->w_cursor.lnum >= n)
+ {
+***************
+*** 627,633 ****
+ else if (lua_isstring(L, 3)) /* update line */
+ {
+ buf_T *buf = curbuf;
+! curbuf = *b;
+ if (u_savesub(n) == FAIL)
+ {
+ curbuf = buf;
+--- 1165,1171 ----
+ else if (lua_isstring(L, 3)) /* update line */
+ {
+ buf_T *buf = curbuf;
+! curbuf = b;
+ if (u_savesub(n) == FAIL)
+ {
+ curbuf = buf;
+***************
+*** 640,646 ****
+ }
+ else changed_bytes(n, 0);
+ curbuf = buf;
+! if (*b == curwin->w_buffer)
+ check_cursor_col();
+ }
+ else
+--- 1178,1184 ----
+ }
+ else changed_bytes(n, 0);
+ curbuf = buf;
+! if (b == curwin->w_buffer)
+ check_cursor_col();
+ }
+ else
+***************
+*** 651,658 ****
+ static int
+ luaV_buffer_insert(lua_State *L)
+ {
+! luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER);
+! linenr_T last = (*b)->b_ml.ml_line_count;
+ linenr_T n = (linenr_T) luaL_optinteger(L, 3, last);
+ buf_T *buf;
+ luaL_checktype(L, 2, LUA_TSTRING);
+--- 1189,1197 ----
+ static int
+ luaV_buffer_insert(lua_State *L)
+ {
+! luaV_Buffer *lb = luaV_checkudata(L, 1, LUAVIM_BUFFER);
+! buf_T *b = (buf_T *) luaV_checkcache(L, (void *) *lb);
+! linenr_T last = b->b_ml.ml_line_count;
+ linenr_T n = (linenr_T) luaL_optinteger(L, 3, last);
+ buf_T *buf;
+ luaL_checktype(L, 2, LUA_TSTRING);
+***************
+*** 664,670 ****
+ if (n > last) n = last;
+ /* insert */
+ buf = curbuf;
+! curbuf = *b;
+ if (u_save(n, n + 1) == FAIL)
+ {
+ curbuf = buf;
+--- 1203,1209 ----
+ if (n > last) n = last;
+ /* insert */
+ buf = curbuf;
+! curbuf = b;
+ if (u_save(n, n + 1) == FAIL)
+ {
+ curbuf = buf;
+***************
+*** 686,692 ****
+ luaV_buffer_next(lua_State *L)
+ {
+ luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER);
+! luaV_pushbuffer(L, (*b)->b_next);
+ return 1;
+ }
+
+--- 1225,1232 ----
+ luaV_buffer_next(lua_State *L)
+ {
+ luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER);
+! buf_T *buf = (buf_T *) luaV_checkcache(L, (void *) *b);
+! luaV_pushbuffer(L, buf->b_next);
+ return 1;
+ }
+
+***************
+*** 694,700 ****
+ luaV_buffer_previous(lua_State *L)
+ {
+ luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER);
+! luaV_pushbuffer(L, (*b)->b_prev);
+ return 1;
+ }
+
+--- 1234,1241 ----
+ luaV_buffer_previous(lua_State *L)
+ {
+ luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER);
+! buf_T *buf = (buf_T *) luaV_checkcache(L, (void *) *b);
+! luaV_pushbuffer(L, buf->b_prev);
+ return 1;
+ }
+
+***************
+*** 702,709 ****
+ luaV_buffer_isvalid(lua_State *L)
+ {
+ luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER);
+! lua_pushlightuserdata(L, (void *) (*b));
+! lua_rawget(L, LUA_ENVIRONINDEX);
+ lua_pushboolean(L, !lua_isnil(L, -1));
+ return 1;
+ }
+--- 1243,1249 ----
+ luaV_buffer_isvalid(lua_State *L)
+ {
+ luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER);
+! luaV_getudata(L, *b);
+ lua_pushboolean(L, !lua_isnil(L, -1));
+ return 1;
+ }
+***************
+*** 724,801 ****
+
+ /* ======= Window type ======= */
+
+! static luaV_Window *
+! luaV_newwindow(lua_State *L, win_T *win)
+! {
+! luaV_Window *w = (luaV_Window *) lua_newuserdata(L, sizeof(luaV_Window));
+! *w = win;
+! lua_pushlightuserdata(L, (void *) win);
+! lua_pushvalue(L, -2);
+! lua_rawset(L, LUA_ENVIRONINDEX); /* env[win] = udata */
+! /* to avoid GC, store as key in env */
+! lua_pushvalue(L, -1);
+! lua_pushboolean(L, 1);
+! lua_rawset(L, LUA_ENVIRONINDEX); /* env[udata] = true */
+! /* set metatable */
+! luaV_getfield(L, LUAVIM_WINDOW);
+! lua_setmetatable(L, -2);
+! return w;
+! }
+!
+! static luaV_Window *
+! luaV_pushwindow(lua_State *L, win_T *win)
+! {
+! luaV_Window *w = NULL;
+! if (win == NULL)
+! lua_pushnil(L);
+! else {
+! lua_pushlightuserdata(L, (void *) win);
+! lua_rawget(L, LUA_ENVIRONINDEX);
+! if (lua_isnil(L, -1)) /* not interned? */
+! {
+! lua_pop(L, 1);
+! w = luaV_newwindow(L, win);
+! }
+! else w = (luaV_Window *) lua_touserdata(L, -1);
+! }
+! return w;
+! }
+!
+! /* Window metamethods */
+!
+! static int
+! luaV_window_tostring(lua_State *L)
+! {
+! lua_pushfstring(L, "%s: %p", LUAVIM_WINDOW, lua_touserdata(L, 1));
+! return 1;
+! }
+
+ static int
+ luaV_window_call(lua_State *L)
+ {
+! luaV_Window *w = (luaV_Window *) lua_touserdata(L, 1);
+ lua_settop(L, 1);
+! win_goto(*w);
+ return 1;
+ }
+
+ static int
+ luaV_window_index(lua_State *L)
+ {
+! luaV_Window *w = (luaV_Window *) lua_touserdata(L, 1);
+ const char *s = luaL_checkstring(L, 2);
+ if (strncmp(s, "buffer", 6) == 0)
+! luaV_pushbuffer(L, (*w)->w_buffer);
+ else if (strncmp(s, "line", 4) == 0)
+! lua_pushinteger(L, (*w)->w_cursor.lnum);
+ else if (strncmp(s, "col", 3) == 0)
+! lua_pushinteger(L, (*w)->w_cursor.col + 1);
+ #ifdef FEAT_VERTSPLIT
+ else if (strncmp(s, "width", 5) == 0)
+! lua_pushinteger(L, W_WIDTH((*w)));
+ #endif
+ else if (strncmp(s, "height", 6) == 0)
+! lua_pushinteger(L, (*w)->w_height);
+ /* methods */
+ else if (strncmp(s, "next", 4) == 0
+ || strncmp(s, "previous", 8) == 0
+--- 1264,1299 ----
+
+ /* ======= Window type ======= */
+
+! luaV_newtype(win_T, window, luaV_Window, LUAVIM_WINDOW)
+! luaV_pushtype(win_T, window, luaV_Window)
+! luaV_type_tostring(window, LUAVIM_WINDOW)
+
+ static int
+ luaV_window_call(lua_State *L)
+ {
+! win_T *w = (win_T *) luaV_checkvalid(L, luaV_Window, 1);
+ lua_settop(L, 1);
+! win_goto(w);
+ return 1;
+ }
+
+ static int
+ luaV_window_index(lua_State *L)
+ {
+! win_T *w = (win_T *) luaV_checkvalid(L, luaV_Window, 1);
+ const char *s = luaL_checkstring(L, 2);
+ if (strncmp(s, "buffer", 6) == 0)
+! luaV_pushbuffer(L, w->w_buffer);
+ else if (strncmp(s, "line", 4) == 0)
+! lua_pushinteger(L, w->w_cursor.lnum);
+ else if (strncmp(s, "col", 3) == 0)
+! lua_pushinteger(L, w->w_cursor.col + 1);
+ #ifdef FEAT_VERTSPLIT
+ else if (strncmp(s, "width", 5) == 0)
+! lua_pushinteger(L, W_WIDTH(w));
+ #endif
+ else if (strncmp(s, "height", 6) == 0)
+! lua_pushinteger(L, w->w_height);
+ /* methods */
+ else if (strncmp(s, "next", 4) == 0
+ || strncmp(s, "previous", 8) == 0
+***************
+*** 812,818 ****
+ static int
+ luaV_window_newindex (lua_State *L)
+ {
+! luaV_Window *w = (luaV_Window *) lua_touserdata(L, 1);
+ const char *s = luaL_checkstring(L, 2);
+ int v = luaL_checkinteger(L, 3);
+ if (strncmp(s, "line", 4) == 0)
+--- 1310,1316 ----
+ static int
+ luaV_window_newindex (lua_State *L)
+ {
+! win_T *w = (win_T *) luaV_checkvalid(L, luaV_Window, 1);
+ const char *s = luaL_checkstring(L, 2);
+ int v = luaL_checkinteger(L, 3);
+ if (strncmp(s, "line", 4) == 0)
+***************
+*** 820,828 ****
+ #ifdef HAVE_SANDBOX
+ luaV_checksandbox(L);
+ #endif
+! if (v < 1 || v > (*w)->w_buffer->b_ml.ml_line_count)
+ luaL_error(L, "line out of range");
+! (*w)->w_cursor.lnum = v;
+ update_screen(VALID);
+ }
+ else if (strncmp(s, "col", 3) == 0)
+--- 1318,1326 ----
+ #ifdef HAVE_SANDBOX
+ luaV_checksandbox(L);
+ #endif
+! if (v < 1 || v > w->w_buffer->b_ml.ml_line_count)
+ luaL_error(L, "line out of range");
+! w->w_cursor.lnum = v;
+ update_screen(VALID);
+ }
+ else if (strncmp(s, "col", 3) == 0)
+***************
+*** 830,836 ****
+ #ifdef HAVE_SANDBOX
+ luaV_checksandbox(L);
+ #endif
+! (*w)->w_cursor.col = v - 1;
+ update_screen(VALID);
+ }
+ #ifdef FEAT_VERTSPLIT
+--- 1328,1334 ----
+ #ifdef HAVE_SANDBOX
+ luaV_checksandbox(L);
+ #endif
+! w->w_cursor.col = v - 1;
+ update_screen(VALID);
+ }
+ #ifdef FEAT_VERTSPLIT
+***************
+*** 840,846 ****
+ #ifdef FEAT_GUI
+ need_mouse_correct = TRUE;
+ #endif
+! curwin = *w;
+ win_setwidth(v);
+ curwin = win;
+ }
+--- 1338,1344 ----
+ #ifdef FEAT_GUI
+ need_mouse_correct = TRUE;
+ #endif
+! curwin = w;
+ win_setwidth(v);
+ curwin = win;
+ }
+***************
+*** 851,857 ****
+ #ifdef FEAT_GUI
+ need_mouse_correct = TRUE;
+ #endif
+! curwin = *w;
+ win_setheight(v);
+ curwin = win;
+ }
+--- 1349,1355 ----
+ #ifdef FEAT_GUI
+ need_mouse_correct = TRUE;
+ #endif
+! curwin = w;
+ win_setheight(v);
+ curwin = win;
+ }
+***************
+*** 864,870 ****
+ luaV_window_next(lua_State *L)
+ {
+ luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW);
+! luaV_pushwindow(L, (*w)->w_next);
+ return 1;
+ }
+
+--- 1362,1369 ----
+ luaV_window_next(lua_State *L)
+ {
+ luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW);
+! win_T *win = (win_T *) luaV_checkcache(L, (void *) *w);
+! luaV_pushwindow(L, win->w_next);
+ return 1;
+ }
+
+***************
+*** 872,878 ****
+ luaV_window_previous(lua_State *L)
+ {
+ luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW);
+! luaV_pushwindow(L, (*w)->w_prev);
+ return 1;
+ }
+
+--- 1371,1378 ----
+ luaV_window_previous(lua_State *L)
+ {
+ luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW);
+! win_T *win = (win_T *) luaV_checkcache(L, (void *) *w);
+! luaV_pushwindow(L, win->w_prev);
+ return 1;
+ }
+
+***************
+*** 880,887 ****
+ luaV_window_isvalid(lua_State *L)
+ {
+ luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW);
+! lua_pushlightuserdata(L, (void *) (*w));
+! lua_rawget(L, LUA_ENVIRONINDEX);
+ lua_pushboolean(L, !lua_isnil(L, -1));
+ return 1;
+ }
+--- 1380,1386 ----
+ luaV_window_isvalid(lua_State *L)
+ {
+ luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW);
+! luaV_getudata(L, *w);
+ lua_pushboolean(L, !lua_isnil(L, -1));
+ return 1;
+ }
+***************
+*** 983,988 ****
+--- 1482,1509 ----
+ }
+
+ static int
++ luaV_list(lua_State *L)
++ {
++ list_T *l = list_alloc();
++ if (l == NULL)
++ lua_pushnil(L);
++ else
++ luaV_newlist(L, l);
++ return 1;
++ }
++
++ static int
++ luaV_dict(lua_State *L)
++ {
++ dict_T *d = dict_alloc();
++ if (d == NULL)
++ lua_pushnil(L);
++ else
++ luaV_newdict(L, d);
++ return 1;
++ }
++
++ static int
+ luaV_buffer(lua_State *L)
+ {
+ buf_T *buf;
+***************
+*** 1008,1022 ****
+ break;
+ }
+ }
+- if (buf == NULL) /* not found? */
+- lua_pushnil(L);
+- else
+- luaV_pushbuffer(L, buf);
+ }
+! else {
+ buf = (lua_toboolean(L, 1)) ? firstbuf : curbuf; /* first buffer? */
+! luaV_pushbuffer(L, buf);
+! }
+ return 1;
+ }
+
+--- 1529,1538 ----
+ break;
+ }
+ }
+ }
+! else
+ buf = (lua_toboolean(L, 1)) ? firstbuf : curbuf; /* first buffer? */
+! luaV_pushbuffer(L, buf);
+ return 1;
+ }
+
+***************
+*** 1029,1043 ****
+ int n = lua_tointeger(L, 1);
+ for (win = firstwin; win != NULL; win = win->w_next, n--)
+ if (n == 1) break;
+- if (win == NULL) /* not found? */
+- lua_pushnil(L);
+- else
+- luaV_pushwindow(L, win);
+ }
+! else {
+ win = (lua_toboolean(L, 1)) ? firstwin : curwin; /* first window? */
+! luaV_pushwindow(L, win);
+! }
+ return 1;
+ }
+
+--- 1545,1554 ----
+ int n = lua_tointeger(L, 1);
+ for (win = firstwin; win != NULL; win = win->w_next, n--)
+ if (n == 1) break;
+ }
+! else
+ win = (lua_toboolean(L, 1)) ? firstwin : curwin; /* first window? */
+! luaV_pushwindow(L, win);
+ return 1;
+ }
+
+***************
+*** 1054,1086 ****
+ }
+
+ static int
+! luaV_isbuffer(lua_State *L)
+! {
+! lua_pushboolean(L, luaV_toudata(L, 1, LUAVIM_BUFFER) != NULL);
+! return 1;
+! }
+!
+! static int
+! luaV_iswindow(lua_State *L)
+ {
+! lua_pushboolean(L, luaV_toudata(L, 1, LUAVIM_WINDOW) != NULL);
+! return 1;
+! }
+!
+! /* for freeing buffer and window objects; lightuserdata as arg */
+! static int
+! luaV_free(lua_State *L)
+! {
+! lua_pushvalue(L, 1); /* lightudata */
+! lua_rawget(L, LUA_ENVIRONINDEX);
+! if (!lua_isnil(L, -1))
+ {
+! lua_pushnil(L);
+! lua_rawset(L, LUA_ENVIRONINDEX); /* env[udata] = nil */
+! lua_pushnil(L);
+! lua_rawset(L, LUA_ENVIRONINDEX); /* env[lightudata] = nil */
+ }
+! return 0;
+ }
+
+ static const luaL_Reg luaV_module[] = {
+--- 1565,1606 ----
+ }
+
+ static int
+! luaV_type(lua_State *L)
+ {
+! luaL_checkany(L, 1);
+! if (lua_type(L, 1) == LUA_TUSERDATA) /* check vim udata? */
+ {
+! lua_settop(L, 1);
+! if (lua_getmetatable(L, 1))
+! {
+! luaV_getfield(L, LUAVIM_LIST);
+! if (lua_rawequal(L, -1, 2))
+! {
+! lua_pushstring(L, "list");
+! return 1;
+! }
+! luaV_getfield(L, LUAVIM_DICT);
+! if (lua_rawequal(L, -1, 2))
+! {
+! lua_pushstring(L, "dict");
+! return 1;
+! }
+! luaV_getfield(L, LUAVIM_BUFFER);
+! if (lua_rawequal(L, -1, 2))
+! {
+! lua_pushstring(L, "buffer");
+! return 1;
+! }
+! luaV_getfield(L, LUAVIM_WINDOW);
+! if (lua_rawequal(L, -1, 2))
+! {
+! lua_pushstring(L, "window");
+! return 1;
+! }
+! }
+ }
+! lua_pushstring(L, luaL_typename(L, 1)); /* fallback */
+! return 1;
+ }
+
+ static const luaL_Reg luaV_module[] = {
+***************
+*** 1088,1111 ****
+ {"eval", luaV_eval},
+ {"beep", luaV_beep},
+ {"line", luaV_line},
+ {"buffer", luaV_buffer},
+ {"window", luaV_window},
+ {"open", luaV_open},
+! {"isbuffer", luaV_isbuffer},
+! {"iswindow", luaV_iswindow},
+ {NULL, NULL}
+ };
+
+ static int
+ luaopen_vim(lua_State *L)
+ {
+! /* set environment */
+ lua_newtable(L);
+ lua_newtable(L);
+! lua_pushliteral(L, "v");
+ lua_setfield(L, -2, "__mode");
+! lua_setmetatable(L, -2);
+! lua_replace(L, LUA_ENVIRONINDEX);
+ /* print */
+ lua_pushcfunction(L, luaV_print);
+ lua_setglobal(L, "print");
+--- 1608,1695 ----
+ {"eval", luaV_eval},
+ {"beep", luaV_beep},
+ {"line", luaV_line},
++ {"list", luaV_list},
++ {"dict", luaV_dict},
+ {"buffer", luaV_buffer},
+ {"window", luaV_window},
+ {"open", luaV_open},
+! {"type", luaV_type},
+ {NULL, NULL}
+ };
+
++ /* for freeing list, dict, buffer and window objects; lightuserdata as arg */
++ static int
++ luaV_free(lua_State *L)
++ {
++ lua_pushnil(L);
++ luaV_setudata(L, lua_touserdata(L, 1));
++ return 0;
++ }
++
++ static int
++ luaV_luaeval (lua_State *L)
++ {
++ luaL_Buffer b;
++ size_t l;
++ const char *str = lua_tolstring(L, 1, &l);
++ typval_T *arg = (typval_T *) lua_touserdata(L, 2);
++ typval_T *rettv = (typval_T *) lua_touserdata(L, 3);
++ luaL_buffinit(L, &b);
++ luaL_addlstring(&b, LUAVIM_EVALHEADER, sizeof(LUAVIM_EVALHEADER) - 1);
++ luaL_addlstring(&b, str, l);
++ luaL_pushresult(&b);
++ str = lua_tolstring(L, -1, &l);
++ if (luaL_loadbuffer(L, str, l, LUAVIM_EVALNAME)) /* compile error? */
++ {
++ luaV_emsg(L);
++ return 0;
++ }
++ luaV_pushtypval(L, arg);
++ if (lua_pcall(L, 1, 1, 0)) /* running error? */
++ {
++ luaV_emsg(L);
++ return 0;
++ }
++ luaV_totypval(L, -1, rettv);
++ return 0;
++ }
++
++ static int
++ luaV_setref (lua_State *L)
++ {
++ int copyID = lua_tointeger(L, 1);
++ typval_T tv;
++ luaV_getfield(L, LUAVIM_LIST);
++ luaV_getfield(L, LUAVIM_DICT);
++ lua_pushnil(L);
++ while (lua_next(L, lua_upvalueindex(1)) != 0) /* traverse cache table */
++ {
++ lua_getmetatable(L, -1);
++ if (lua_rawequal(L, -1, 2)) /* list? */
++ {
++ tv.v_type = VAR_LIST;
++ tv.vval.v_list = (list_T *) lua_touserdata(L, 4); /* key */
++ }
++ else if (lua_rawequal(L, -1, 3)) /* dict? */
++ {
++ tv.v_type = VAR_DICT;
++ tv.vval.v_dict = (dict_T *) lua_touserdata(L, 4); /* key */
++ }
++ lua_pop(L, 2); /* metatable and value */
++ set_ref_in_tv(&tv, copyID);
++ }
++ return 0;
++ }
++
+ static int
+ luaopen_vim(lua_State *L)
+ {
+! /* set cache table */
+ lua_newtable(L);
+ lua_newtable(L);
+! lua_pushstring(L, "v");
+ lua_setfield(L, -2, "__mode");
+! lua_setmetatable(L, -2); /* cache is weak-valued */
+ /* print */
+ lua_pushcfunction(L, luaV_print);
+ lua_setglobal(L, "print");
+***************
+*** 1116,1129 ****
+ lua_pop(L, 1);
+ /* free */
+ lua_pushlightuserdata(L, (void *) LUAVIM_FREE);
+! lua_pushcfunction(L, luaV_free);
+ lua_rawset(L, LUA_REGISTRYINDEX);
+ /* register */
+ luaV_newmetatable(L, LUAVIM_BUFFER);
+! luaL_register(L, NULL, luaV_Buffer_mt);
+ luaV_newmetatable(L, LUAVIM_WINDOW);
+! luaL_register(L, NULL, luaV_Window_mt);
+! luaL_register(L, LUAVIM_NAME, luaV_module);
+ return 0;
+ }
+
+--- 1700,1735 ----
+ lua_pop(L, 1);
+ /* free */
+ lua_pushlightuserdata(L, (void *) LUAVIM_FREE);
+! lua_pushvalue(L, 1); /* cache table */
+! lua_pushcclosure(L, luaV_free, 1);
+! lua_rawset(L, LUA_REGISTRYINDEX);
+! /* luaeval */
+! lua_pushlightuserdata(L, (void *) LUAVIM_LUAEVAL);
+! lua_pushvalue(L, 1); /* cache table */
+! lua_pushcclosure(L, luaV_luaeval, 1);
+! lua_rawset(L, LUA_REGISTRYINDEX);
+! /* setref */
+! lua_pushlightuserdata(L, (void *) LUAVIM_SETREF);
+! lua_pushvalue(L, 1); /* cache table */
+! lua_pushcclosure(L, luaV_setref, 1);
+ lua_rawset(L, LUA_REGISTRYINDEX);
+ /* register */
++ luaV_newmetatable(L, LUAVIM_LIST);
++ lua_pushvalue(L, 1);
++ luaV_openlib(L, luaV_List_mt, 1);
++ luaV_newmetatable(L, LUAVIM_DICT);
++ lua_pushvalue(L, 1);
++ luaV_openlib(L, luaV_Dict_mt, 1);
+ luaV_newmetatable(L, LUAVIM_BUFFER);
+! lua_pushvalue(L, 1); /* cache table */
+! luaV_openlib(L, luaV_Buffer_mt, 1);
+ luaV_newmetatable(L, LUAVIM_WINDOW);
+! lua_pushvalue(L, 1); /* cache table */
+! luaV_openlib(L, luaV_Window_mt, 1);
+! lua_newtable(L); /* vim table */
+! lua_pushvalue(L, 1); /* cache table */
+! luaV_openlib(L, luaV_module, 1);
+! lua_setglobal(L, LUAVIM_NAME);
+ return 0;
+ }
+
+***************
+*** 1154,1160 ****
+ static lua_State *L = NULL;
+
+ static int
+! lua_is_open(void)
+ {
+ return L != NULL;
+ }
+--- 1760,1766 ----
+ static lua_State *L = NULL;
+
+ static int
+! lua_isopen(void)
+ {
+ return L != NULL;
+ }
+***************
+*** 1162,1168 ****
+ static int
+ lua_init(void)
+ {
+! if (L == NULL)
+ {
+ #ifdef DYNAMIC_LUA
+ if (!lua_enabled(TRUE))
+--- 1768,1774 ----
+ static int
+ lua_init(void)
+ {
+! if (!lua_isopen())
+ {
+ #ifdef DYNAMIC_LUA
+ if (!lua_enabled(TRUE))
+***************
+*** 1179,1185 ****
+ void
+ lua_end(void)
+ {
+! if (L != NULL)
+ {
+ lua_close(L);
+ L = NULL;
+--- 1785,1791 ----
+ void
+ lua_end(void)
+ {
+! if (lua_isopen())
+ {
+ lua_close(L);
+ L = NULL;
+***************
+*** 1273,1295 ****
+ }
+ }
+
+! /* buffer */
+ void
+! lua_buffer_free(buf_T *buf)
+ {
+! if (!lua_is_open()) return;
+! luaV_getfield(L, LUAVIM_FREE);
+! lua_pushlightuserdata(L, (void *) buf);
+! lua_call(L, 1, 0);
+ }
+
+- /* window */
+ void
+! lua_window_free(win_T *win)
+ {
+! if (!lua_is_open()) return;
+! luaV_getfield(L, LUAVIM_FREE);
+! lua_pushlightuserdata(L, (void *) win);
+ lua_call(L, 1, 0);
+ }
+
+--- 1879,1914 ----
+ }
+ }
+
+! #define luaV_freetype(typ,tname) \
+! void \
+! lua_##tname##_free(typ *o) \
+! { \
+! if (!lua_isopen()) return; \
+! luaV_getfield(L, LUAVIM_FREE); \
+! lua_pushlightuserdata(L, (void *) o); \
+! lua_call(L, 1, 0); \
+! }
+!
+! luaV_freetype(buf_T, buffer)
+! luaV_freetype(win_T, window)
+!
+ void
+! do_luaeval (char_u *str, typval_T *arg, typval_T *rettv)
+ {
+! lua_init();
+! luaV_getfield(L, LUAVIM_LUAEVAL);
+! lua_pushstring(L, (char *) str);
+! lua_pushlightuserdata(L, (void *) arg);
+! lua_pushlightuserdata(L, (void *) rettv);
+! lua_call(L, 3, 0);
+ }
+
+ void
+! set_ref_in_lua (int copyID)
+ {
+! if (!lua_isopen()) return;
+! luaV_getfield(L, LUAVIM_SETREF);
+! lua_pushinteger(L, copyID);
+ lua_call(L, 1, 0);
+ }
+
+*** ../vim-7.3.489/src/proto/if_lua.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/if_lua.pro 2012-04-05 16:41:35.000000000 +0200
+***************
+*** 6,9 ****
+--- 6,11 ----
+ void ex_luafile __ARGS((exarg_T *eap));
+ void lua_buffer_free __ARGS((buf_T *buf));
+ void lua_window_free __ARGS((win_T *win));
++ void do_luaeval __ARGS((char_u *str, typval_T *arg, typval_T *rettv));
++ void set_ref_in_lua __ARGS((int copyID));
+ /* vim: set ft=c : */
+*** ../vim-7.3.489/src/version.c 2012-04-05 16:07:01.000000000 +0200
+--- src/version.c 2012-04-05 16:52:08.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 490,
+ /**/
+
+--
+Even got a Datapoint 3600(?) with a DD50 connector instead of the
+usual DB25... what a nightmare trying to figure out the pinout
+for *that* with no spex...
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.491 b/source/ap/vim/patches/7.3.491
new file mode 100644
index 000000000..b675722e1
--- /dev/null
+++ b/source/ap/vim/patches/7.3.491
@@ -0,0 +1,235 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.491
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.491
+Problem: No tests for Lua.
+Solution: Add some simple tests for Lua. (Luis Carvalho)
+Files: src/testdir/test1.in, src/testdir/test85.in, src/testdir/test85.ok
+ src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak,
+ src/testdir/Make_ming.mak, src/testdir/Make_os2.mak,
+ src/testdir/Make_vms.mms, src/testdir/Makefile
+
+
+*** ../vim-7.3.490/src/testdir/test1.in 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test1.in 2012-04-05 16:37:37.000000000 +0200
+***************
+*** 15,20 ****
+--- 15,21 ----
+ be set like small.vim above. mbyte.vim is sourced by tests that require the
+ +multi_byte feature.
+ Similar logic is applied to the +mzscheme feature, using mzscheme.vim.
++ Similar logic is applied to the +lua feature, using lua.vim.
+
+ STARTTEST
+ :" Write a single line to test.out to check if testing works at all.
+***************
+*** 28,37 ****
+--- 29,45 ----
+ qa!
+ :w! mbyte.vim
+ :w! mzscheme.vim
++ :w! lua.vim
++ :"
+ :" If +multi_byte feature supported, make mbyte.vim empty.
+ :if has("multi_byte") | sp another | w! mbyte.vim | q | endif
++ :"
+ :" If +mzscheme feature supported, make mzscheme.vim empty.
+ :if has("mzscheme") | sp another | w! mzscheme.vim | q | endif
++ :"
++ :" If +lua feature supported, make lua.vim empty.
++ :if has("lua") | sp another | w! lua.vim | q | endif
++ :"
+ :" If +eval feature supported quit here, leaving tiny.vim and small.vim empty.
+ :" Otherwise write small.vim to skip the test.
+ :if 1 | q! | endif
+*** ../vim-7.3.490/src/testdir/test85.in 2012-04-05 16:56:12.000000000 +0200
+--- src/testdir/test85.in 2012-04-05 16:44:00.000000000 +0200
+***************
+*** 0 ****
+--- 1,42 ----
++ Test for Lua interface and luaeval() function
++
++ STARTTEST
++ :so small.vim
++ :so lua.vim
++ :set nocompatible viminfo+=nviminfo
++ :lua l = vim.list():add"item0":add"dictionary with list OK":add"item2"
++ :lua h = vim.dict(); h.list = l
++ :call garbagecollect()
++ /^1
++ :" change buffer contents
++ :lua curbuf = vim.buffer()
++ :lua curline = vim.eval"line('.')"
++ :lua curbuf[curline] = "1 changed line 1"
++ :" scalar test
++ :let tmp_string = luaeval('"string"')
++ :let tmp_1000 = luaeval('1000')
++ :if printf("%s%.0f", tmp_string, tmp_1000) == "string1000"
++ :let scalar_res = "OK"
++ :else
++ :let scalar_res = "FAILED"
++ :endif
++ :call append(search("^1"), "scalar test " . scalar_res)
++ :" dictionary containing a list
++ :let tmp = luaeval("h").list[1]
++ :/^2/put =tmp
++ :" circular list (at the same time test lists containing lists)
++ :lua l[2] = l
++ :let l2 = luaeval("h").list
++ :if l2[2] == l2
++ :let res = "OK"
++ :else
++ :let res = "FAILED"
++ :endif
++ :call setline(search("^3"), "circular test " . res)
++ :?^1?,$w! test.out
++ :qa!
++ ENDTEST
++
++ 1 line 1
++ 2 line 2
++ 3 line 3
+*** ../vim-7.3.490/src/testdir/test85.ok 2012-04-05 16:56:12.000000000 +0200
+--- src/testdir/test85.ok 2012-04-05 16:18:56.000000000 +0200
+***************
+*** 0 ****
+--- 1,5 ----
++ 1 changed line 1
++ scalar test OK
++ 2 line 2
++ dictionary with list OK
++ circular test OK
+*** ../vim-7.3.490/src/testdir/Make_amiga.mak 2012-03-28 19:58:34.000000000 +0200
+--- src/testdir/Make_amiga.mak 2012-04-05 16:21:55.000000000 +0200
+***************
+*** 13,18 ****
+--- 13,19 ----
+ # test25 uses symbolic link
+ # test27 can't edit file with "*"
+ # test52 only for Win32
++ # test85 no Lua interface
+
+ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
+ test7.out test8.out test9.out \
+*** ../vim-7.3.490/src/testdir/Make_dos.mak 2012-03-28 19:58:34.000000000 +0200
+--- src/testdir/Make_dos.mak 2012-04-05 16:22:16.000000000 +0200
+***************
+*** 30,36 ****
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+ test79.out test80.out test81.out test82.out test83.out \
+! test84.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 30,36 ----
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+ test79.out test80.out test81.out test82.out test83.out \
+! test84.out test85.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.3.490/src/testdir/Make_ming.mak 2012-03-28 19:58:34.000000000 +0200
+--- src/testdir/Make_ming.mak 2012-04-05 16:22:25.000000000 +0200
+***************
+*** 50,56 ****
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+ test79.out test80.out test81.out test82.out test83.out \
+! test84.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 50,56 ----
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+ test79.out test80.out test81.out test82.out test83.out \
+! test84.out test85.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.3.490/src/testdir/Make_os2.mak 2012-03-28 19:58:34.000000000 +0200
+--- src/testdir/Make_os2.mak 2012-04-05 16:22:38.000000000 +0200
+***************
+*** 13,18 ****
+--- 13,19 ----
+ # test25 uses symbolic link
+ # test27 can't edit file with "*" in file name
+ # test52 only for Win32
++ # test85 no Lua interface
+
+ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
+ test7.out test8.out test9.out \
+*** ../vim-7.3.490/src/testdir/Make_vms.mms 2012-03-28 19:58:34.000000000 +0200
+--- src/testdir/Make_vms.mms 2012-04-05 16:23:08.000000000 +0200
+***************
+*** 4,10 ****
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2012 Mar 28
+ #
+ # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+ # Edit the lines in the Configuration section below to select.
+--- 4,10 ----
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2012 Apr 05
+ #
+ # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+ # Edit the lines in the Configuration section below to select.
+***************
+*** 89,94 ****
+--- 89,95 ----
+ # with too many dots).
+ #
+ # Test 72: unknown reason
++ # Test 85: no Lua interface
+
+ .IFDEF WANT_GUI
+ SCRIPT_GUI = test16.out
+*** ../vim-7.3.490/src/testdir/Makefile 2012-03-28 19:58:34.000000000 +0200
+--- src/testdir/Makefile 2012-04-05 16:21:13.000000000 +0200
+***************
+*** 27,33 ****
+ test69.out test70.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+ test79.out test80.out test81.out test82.out test83.out \
+! test84.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 27,33 ----
+ test69.out test70.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+ test79.out test80.out test81.out test82.out test83.out \
+! test84.out test85.out
+
+ SCRIPTS_GUI = test16.out
+
+*** ../vim-7.3.490/src/version.c 2012-04-05 16:53:56.000000000 +0200
+--- src/version.c 2012-04-05 16:55:27.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 491,
+ /**/
+
+--
+You had connectors? Eeee, when I were a lad we 'ad to carry the
+bits between the computer and the terminal with a spoon...
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.492 b/source/ap/vim/patches/7.3.492
new file mode 100644
index 000000000..b32b6f68e
--- /dev/null
+++ b/source/ap/vim/patches/7.3.492
@@ -0,0 +1,718 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.492
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.492
+Problem: Can't indent conditions separately from function arguments.
+Solution: Add the 'k' flag in 'cino. (Lech Lorens)
+Files: runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in,
+ src/testdir/test3.ok
+
+
+*** ../vim-7.3.491/runtime/doc/indent.txt 2011-06-26 03:16:58.000000000 +0200
+--- runtime/doc/indent.txt 2012-04-05 17:12:14.000000000 +0200
+***************
+*** 459,464 ****
+--- 460,481 ----
+ a_short_line(argument, a_short_line(argument,
+ argument); argument);
+ <
++ *cino-k*
++ kN When in unclosed parentheses which follow "if", "for" or
++ "while" and N is non-zero, overrides the behaviour defined by
++ "(N": causes the indent to be N characters relative to the outer
++ context (i.e. the line where "if", "for" or "while" is). Has
++ no effect on deeper levels of nesting. Affects flags like "wN"
++ only for the "if", "for" and "while" conditions. If 0, defaults
++ to behaviour defined by the "(N" flag. (default: 0).
++
++ cino=(0 cino=(0,ks >
++ if (condition1 if (condition1
++ && condition2) && condition2)
++ action(); action();
++ function(argument1 function(argument1
++ && argument2); && argument2);
++ <
+ *cino-m*
+ mN When N is non-zero, line up a line starting with a closing
+ parentheses with the first character of the line with the
+***************
+*** 527,540 ****
+
+ *cino-#*
+ #N When N is non-zero recognize shell/Perl comments, starting with
+! '#'. Default N is zero: don't recognizes '#' comments. Note
+ that lines starting with # will still be seen as preprocessor
+ lines.
+
+
+ The defaults, spelled out in full, are:
+ cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s,
+! c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0
+
+ Vim puts a line in column 1 if:
+ - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'.
+--- 546,559 ----
+
+ *cino-#*
+ #N When N is non-zero recognize shell/Perl comments, starting with
+! '#'. Default N is zero: don't recognize '#' comments. Note
+ that lines starting with # will still be seen as preprocessor
+ lines.
+
+
+ The defaults, spelled out in full, are:
+ cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s,
+! c3,C0,/0,(2s,us,U0,w0,W0,k0,m0,j0,J0,)20,*70,#0
+
+ Vim puts a line in column 1 if:
+ - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'.
+*** ../vim-7.3.491/src/misc1.c 2012-02-29 13:49:03.000000000 +0100
+--- src/misc1.c 2012-04-05 17:12:14.000000000 +0200
+***************
+*** 5771,5776 ****
+--- 5771,5822 ----
+ }
+
+ /*
++ * Check whether in "p" there is an "if", "for" or "while" before offset.
++ * Return 0 if there is none.
++ * Otherwise return !0 and update "*poffset" to point to the place where the
++ * string was found.
++ */
++ static int
++ cin_is_if_for_while_before_offset(line, offset, poffset)
++ char_u *line;
++ size_t offset;
++ int *poffset;
++ {
++
++ if (offset-- < 2)
++ return 0;
++ while (offset > 2 && vim_iswhite(line[offset]))
++ --offset;
++
++ offset -= 1;
++ if (!STRNCMP(line + offset, "if", 2))
++ goto probablyFound;
++
++ if (offset >= 1)
++ {
++ offset -= 1;
++ if (!STRNCMP(line + offset, "for", 3))
++ goto probablyFound;
++
++ if (offset >= 2)
++ {
++ offset -= 2;
++ if (!STRNCMP(line + offset, "while", 5))
++ goto probablyFound;
++ }
++ }
++
++ return 0;
++ probablyFound:
++ if (!offset || !vim_isIDc(line[offset - 1]))
++ {
++ *poffset = offset;
++ return 1;
++ }
++ return 0;
++ }
++
++ /*
+ * Return TRUE if we are at the end of a do-while.
+ * do
+ * nothing;
+***************
+*** 6124,6130 ****
+
+ /*
+ * Find the matching '(', failing if it is in a comment.
+! * Return NULL of no match found.
+ */
+ static pos_T *
+ find_match_paren(ind_maxparen, ind_maxcomment) /* XXX */
+--- 6170,6176 ----
+
+ /*
+ * Find the matching '(', failing if it is in a comment.
+! * Return NULL if no match found.
+ */
+ static pos_T *
+ find_match_paren(ind_maxparen, ind_maxcomment) /* XXX */
+***************
+*** 6393,6398 ****
+--- 6439,6450 ----
+ */
+ int ind_cpp_namespace = 0;
+
++ /*
++ * handle continuation lines containing conditions of if(), for() and
++ * while()
++ */
++ int ind_if_for_while = 0;
++
+ pos_T cur_curpos;
+ int amount;
+ int scope_amount;
+***************
+*** 6437,6442 ****
+--- 6489,6495 ----
+ int cont_amount = 0; /* amount for continuation line */
+ int original_line_islabel;
+ int added_to_amount = 0;
++ int is_if_for_while = 0;
+
+ for (options = curbuf->b_p_cino; *options; )
+ {
+***************
+*** 6509,6514 ****
+--- 6562,6568 ----
+ case 'l': ind_keep_case_label = n; break;
+ case '#': ind_hash_comment = n; break;
+ case 'N': ind_cpp_namespace = n; break;
++ case 'k': ind_if_for_while = n; break;
+ }
+ if (*options == ',')
+ ++options;
+***************
+*** 6812,6817 ****
+--- 6866,6900 ----
+ if (amount == -1)
+ {
+ int ignore_paren_col = 0;
++ int is_if_for_while = 0;
++
++ if (ind_if_for_while)
++ {
++ /* Look for the outermost opening parenthesis on this line
++ * and check whether it belongs to an "if", "for" or "while". */
++
++ pos_T cursor_save = curwin->w_cursor;
++ pos_T outermost;
++ char_u *line;
++ int look_col;
++
++ trypos = &our_paren_pos;
++ do {
++ outermost = *trypos;
++ curwin->w_cursor.lnum = outermost.lnum;
++ curwin->w_cursor.col = outermost.col;
++
++ trypos = find_match_paren(ind_maxparen, ind_maxcomment);
++ } while (trypos && trypos->lnum == outermost.lnum);
++
++ curwin->w_cursor = cursor_save;
++
++ line = ml_get(outermost.lnum);
++
++ is_if_for_while =
++ cin_is_if_for_while_before_offset(line, outermost.col,
++ &outermost.col);
++ }
+
+ amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment);
+ look = skipwhite(look);
+***************
+*** 6836,6842 ****
+ curwin->w_cursor.lnum = save_lnum;
+ look = ml_get(our_paren_pos.lnum) + look_col;
+ }
+! if (theline[0] == ')' || ind_unclosed == 0
+ || (!ind_unclosed_noignore && *look == '('
+ && ignore_paren_col == 0))
+ {
+--- 6919,6925 ----
+ curwin->w_cursor.lnum = save_lnum;
+ look = ml_get(our_paren_pos.lnum) + look_col;
+ }
+! if (theline[0] == ')' || (ind_unclosed == 0 && is_if_for_while == 0)
+ || (!ind_unclosed_noignore && *look == '('
+ && ignore_paren_col == 0))
+ {
+***************
+*** 6907,6913 ****
+ {
+ /* Line up with the start of the matching paren line. */
+ }
+! else if (ind_unclosed == 0 || (!ind_unclosed_noignore
+ && *look == '(' && ignore_paren_col == 0))
+ {
+ if (cur_amount != MAXCOL)
+--- 6990,6997 ----
+ {
+ /* Line up with the start of the matching paren line. */
+ }
+! else if ((ind_unclosed == 0 && is_if_for_while == 0)
+! || (!ind_unclosed_noignore
+ && *look == '(' && ignore_paren_col == 0))
+ {
+ if (cur_amount != MAXCOL)
+***************
+*** 6943,6949 ****
+ if (find_match_paren(ind_maxparen, ind_maxcomment) != NULL)
+ amount += ind_unclosed2;
+ else
+! amount += ind_unclosed;
+ }
+ /*
+ * For a line starting with ')' use the minimum of the two
+--- 7027,7038 ----
+ if (find_match_paren(ind_maxparen, ind_maxcomment) != NULL)
+ amount += ind_unclosed2;
+ else
+! {
+! if (is_if_for_while)
+! amount += ind_if_for_while;
+! else
+! amount += ind_unclosed;
+! }
+ }
+ /*
+ * For a line starting with ')' use the minimum of the two
+*** ../vim-7.3.491/src/testdir/test3.in 2011-12-14 20:21:29.000000000 +0100
+--- src/testdir/test3.in 2012-04-05 17:12:14.000000000 +0200
+***************
+*** 1574,1579 ****
+--- 1574,1793 ----
+ }
+
+ STARTTEST
++ :set cino=k2s,(0
++ 2kdd3j=][
++ ENDTEST
++
++ void func(void)
++ {
++ if (condition1
++ && condition2)
++ action();
++ function(argument1
++ && argument2);
++
++ if (c1 && (c2 ||
++ c3))
++ foo;
++ if (c1 &&
++ (c2 || c3))
++ {
++ }
++
++ if ( c1
++ && ( c2
++ || c3))
++ foo;
++ func( c1
++ && ( c2
++ || c3))
++ foo;
++ }
++
++ STARTTEST
++ :set cino=k2s,(s
++ 2kdd3j=][
++ ENDTEST
++
++ void func(void)
++ {
++ if (condition1
++ && condition2)
++ action();
++ function(argument1
++ && argument2);
++
++ if (c1 && (c2 ||
++ c3))
++ foo;
++ if (c1 &&
++ (c2 || c3))
++ {
++ }
++
++ if ( c1
++ && ( c2
++ || c3))
++ foo;
++ func( c1
++ && ( c2
++ || c3))
++ foo;
++ }
++
++ STARTTEST
++ :set cino=k2s,(s,U1
++ 2kdd3j=][
++ ENDTEST
++
++ void func(void)
++ {
++ if (condition1
++ && condition2)
++ action();
++ function(argument1
++ && argument2);
++
++ if (c1 && (c2 ||
++ c3))
++ foo;
++ if (c1 &&
++ (c2 || c3))
++ {
++ }
++ if (c123456789
++ && (c22345
++ || c3))
++ printf("foo\n");
++
++ c = c1 &&
++ (
++ c2 ||
++ c3
++ ) && c4;
++ }
++
++ STARTTEST
++ :set cino=k2s,(0,W4
++ 2kdd3j=][
++ ENDTEST
++
++ void func(void)
++ {
++ if (condition1
++ && condition2)
++ action();
++ function(argument1
++ && argument2);
++
++ if (c1 && (c2 ||
++ c3))
++ foo;
++ if (c1 &&
++ (c2 || c3))
++ {
++ }
++ if (c123456789
++ && (c22345
++ || c3))
++ printf("foo\n");
++
++ if ( c1
++ && ( c2
++ || c3))
++ foo;
++
++ a_long_line(
++ argument,
++ argument);
++ a_short_line(argument,
++ argument);
++ }
++
++ STARTTEST
++ :set cino=k2s,u2
++ 2kdd3j=][
++ ENDTEST
++
++ void func(void)
++ {
++ if (condition1
++ && condition2)
++ action();
++ function(argument1
++ && argument2);
++
++ if (c1 && (c2 ||
++ c3))
++ foo;
++ if (c1 &&
++ (c2 || c3))
++ {
++ }
++ if (c123456789
++ && (c22345
++ || c3))
++ printf("foo\n");
++ }
++
++ STARTTEST
++ :set cino=k2s,(0,w1
++ 2kdd3j=][
++ ENDTEST
++
++ void func(void)
++ {
++ if (condition1
++ && condition2)
++ action();
++ function(argument1
++ && argument2);
++
++ if (c1 && (c2 ||
++ c3))
++ foo;
++ if (c1 &&
++ (c2 || c3))
++ {
++ }
++ if (c123456789
++ && (c22345
++ || c3))
++ printf("foo\n");
++
++ if ( c1
++ && ( c2
++ || c3))
++ foo;
++ func( c1
++ && ( c2
++ || c3))
++ foo;
++ }
++
++ STARTTEST
++ :set cino=k2,(s
++ 2kdd3j=][
++ ENDTEST
++
++ void func(void)
++ {
++ if (condition1
++ && condition2)
++ action();
++ function(argument1
++ && argument2);
++
++ if (c1 && (c2 ||
++ c3))
++ foo;
++ if (c1 &&
++ (c2 || c3))
++ {
++ }
++ }
++
++ STARTTEST
+ :set cino=N-s
+ /^NAMESPACESTART
+ =/^NAMESPACEEND
+*** ../vim-7.3.491/src/testdir/test3.ok 2011-12-14 20:21:29.000000000 +0100
+--- src/testdir/test3.ok 2012-04-05 17:12:14.000000000 +0200
+***************
+*** 1411,1416 ****
+--- 1411,1602 ----
+ }
+
+
++ void func(void)
++ {
++ if (condition1
++ && condition2)
++ action();
++ function(argument1
++ && argument2);
++
++ if (c1 && (c2 ||
++ c3))
++ foo;
++ if (c1 &&
++ (c2 || c3))
++ {
++ }
++
++ if ( c1
++ && ( c2
++ || c3))
++ foo;
++ func( c1
++ && ( c2
++ || c3))
++ foo;
++ }
++
++
++ void func(void)
++ {
++ if (condition1
++ && condition2)
++ action();
++ function(argument1
++ && argument2);
++
++ if (c1 && (c2 ||
++ c3))
++ foo;
++ if (c1 &&
++ (c2 || c3))
++ {
++ }
++
++ if ( c1
++ && ( c2
++ || c3))
++ foo;
++ func( c1
++ && ( c2
++ || c3))
++ foo;
++ }
++
++
++ void func(void)
++ {
++ if (condition1
++ && condition2)
++ action();
++ function(argument1
++ && argument2);
++
++ if (c1 && (c2 ||
++ c3))
++ foo;
++ if (c1 &&
++ (c2 || c3))
++ {
++ }
++ if (c123456789
++ && (c22345
++ || c3))
++ printf("foo\n");
++
++ c = c1 &&
++ (
++ c2 ||
++ c3
++ ) && c4;
++ }
++
++
++ void func(void)
++ {
++ if (condition1
++ && condition2)
++ action();
++ function(argument1
++ && argument2);
++
++ if (c1 && (c2 ||
++ c3))
++ foo;
++ if (c1 &&
++ (c2 || c3))
++ {
++ }
++ if (c123456789
++ && (c22345
++ || c3))
++ printf("foo\n");
++
++ if ( c1
++ && ( c2
++ || c3))
++ foo;
++
++ a_long_line(
++ argument,
++ argument);
++ a_short_line(argument,
++ argument);
++ }
++
++
++ void func(void)
++ {
++ if (condition1
++ && condition2)
++ action();
++ function(argument1
++ && argument2);
++
++ if (c1 && (c2 ||
++ c3))
++ foo;
++ if (c1 &&
++ (c2 || c3))
++ {
++ }
++ if (c123456789
++ && (c22345
++ || c3))
++ printf("foo\n");
++ }
++
++
++ void func(void)
++ {
++ if (condition1
++ && condition2)
++ action();
++ function(argument1
++ && argument2);
++
++ if (c1 && (c2 ||
++ c3))
++ foo;
++ if (c1 &&
++ (c2 || c3))
++ {
++ }
++ if (c123456789
++ && (c22345
++ || c3))
++ printf("foo\n");
++
++ if ( c1
++ && ( c2
++ || c3))
++ foo;
++ func( c1
++ && ( c2
++ || c3))
++ foo;
++ }
++
++
++ void func(void)
++ {
++ if (condition1
++ && condition2)
++ action();
++ function(argument1
++ && argument2);
++
++ if (c1 && (c2 ||
++ c3))
++ foo;
++ if (c1 &&
++ (c2 || c3))
++ {
++ }
++ }
++
++
+ NAMESPACESTART
+ /* valid namespaces with normal indent */
+ namespace
+*** ../vim-7.3.491/src/version.c 2012-04-05 16:56:38.000000000 +0200
+--- src/version.c 2012-04-05 17:14:18.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 492,
+ /**/
+
+--
+You were lucky to have a LAKE! There were a hundred and sixty of
+us living in a small shoebox in the middle of the road.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.493 b/source/ap/vim/patches/7.3.493
new file mode 100644
index 000000000..ff662b254
--- /dev/null
+++ b/source/ap/vim/patches/7.3.493
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.493
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.493 (after 7.3.492)
+Problem: Two unused variables.
+Solution: Remove them. (Hong Xu)
+Files: src/misc1.c
+
+
+*** ../vim-7.3.492/src/misc1.c 2012-04-05 17:17:38.000000000 +0200
+--- src/misc1.c 2012-04-06 13:49:39.000000000 +0200
+***************
+*** 6489,6495 ****
+ int cont_amount = 0; /* amount for continuation line */
+ int original_line_islabel;
+ int added_to_amount = 0;
+- int is_if_for_while = 0;
+
+ for (options = curbuf->b_p_cino; *options; )
+ {
+--- 6489,6494 ----
+***************
+*** 6876,6882 ****
+ pos_T cursor_save = curwin->w_cursor;
+ pos_T outermost;
+ char_u *line;
+- int look_col;
+
+ trypos = &our_paren_pos;
+ do {
+--- 6875,6880 ----
+*** ../vim-7.3.492/src/version.c 2012-04-05 17:17:38.000000000 +0200
+--- src/version.c 2012-04-06 13:50:21.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 493,
+ /**/
+
+--
+Not too long ago, compress was something you did to garbage...
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.494 b/source/ap/vim/patches/7.3.494
new file mode 100644
index 000000000..81bd24b7d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.494
@@ -0,0 +1,186 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.494
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.494 (after 7.3.491)
+Problem: Can't compile with Lua 9.1 or dynamic Lua.
+Solution: Fix dll_ methods. Fix luado(). (Muraoka Taro, Luis Carvalho)
+Files: src/if_lua.c
+
+
+*** ../vim-7.3.493/src/if_lua.c 2012-04-05 16:53:56.000000000 +0200
+--- src/if_lua.c 2012-04-06 14:24:06.000000000 +0200
+***************
+*** 95,100 ****
+--- 95,101 ----
+ #define luaL_loadbufferx dll_luaL_loadbufferx
+ #define luaL_argerror dll_luaL_argerror
+ #endif
++ #define luaL_checkany dll_luaL_checkany
+ #define luaL_checklstring dll_luaL_checklstring
+ #define luaL_checkinteger dll_luaL_checkinteger
+ #define luaL_optinteger dll_luaL_optinteger
+***************
+*** 117,124 ****
+ #define lua_pcallk dll_lua_pcallk
+ #define lua_getglobal dll_lua_getglobal
+ #define lua_setglobal dll_lua_setglobal
+- #define lua_typename dll_lua_typename
+ #endif
+ #define lua_close dll_lua_close
+ #define lua_gettop dll_lua_gettop
+ #define lua_settop dll_lua_settop
+--- 118,125 ----
+ #define lua_pcallk dll_lua_pcallk
+ #define lua_getglobal dll_lua_getglobal
+ #define lua_setglobal dll_lua_setglobal
+ #endif
++ #define lua_typename dll_lua_typename
+ #define lua_close dll_lua_close
+ #define lua_gettop dll_lua_gettop
+ #define lua_settop dll_lua_settop
+***************
+*** 151,156 ****
+--- 152,158 ----
+ #define lua_rawset dll_lua_rawset
+ #define lua_rawseti dll_lua_rawseti
+ #define lua_setmetatable dll_lua_setmetatable
++ #define lua_next dll_lua_next
+ /* libs */
+ #define luaopen_base dll_luaopen_base
+ #define luaopen_table dll_luaopen_table
+***************
+*** 177,182 ****
+--- 179,185 ----
+ int (*dll_luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz, const char *name, const char *mode);
+ int (*dll_luaL_argerror) (lua_State *L, int numarg, const char *extramsg);
+ #endif
++ void (*dll_luaL_checkany) (lua_State *L, int narg);
+ const char *(*dll_luaL_checklstring) (lua_State *L, int numArg, size_t *l);
+ lua_Integer (*dll_luaL_checkinteger) (lua_State *L, int numArg);
+ lua_Integer (*dll_luaL_optinteger) (lua_State *L, int nArg, lua_Integer def);
+***************
+*** 201,208 ****
+ int ctx, lua_CFunction k);
+ void (*dll_lua_getglobal) (lua_State *L, const char *var);
+ void (*dll_lua_setglobal) (lua_State *L, const char *var);
+- const char *(*dll_lua_typename) (lua_State *L, int tp);
+ #endif
+ void (*dll_lua_close) (lua_State *L);
+ int (*dll_lua_gettop) (lua_State *L);
+ void (*dll_lua_settop) (lua_State *L, int idx);
+--- 204,211 ----
+ int ctx, lua_CFunction k);
+ void (*dll_lua_getglobal) (lua_State *L, const char *var);
+ void (*dll_lua_setglobal) (lua_State *L, const char *var);
+ #endif
++ const char *(*dll_lua_typename) (lua_State *L, int tp);
+ void (*dll_lua_close) (lua_State *L);
+ int (*dll_lua_gettop) (lua_State *L);
+ void (*dll_lua_settop) (lua_State *L, int idx);
+***************
+*** 235,240 ****
+--- 238,244 ----
+ void (*dll_lua_rawset) (lua_State *L, int idx);
+ void (*dll_lua_rawseti) (lua_State *L, int idx, int n);
+ int (*dll_lua_setmetatable) (lua_State *L, int objindex);
++ int (*dll_lua_next) (lua_State *L, int idx);
+ /* libs */
+ int (*dll_luaopen_base) (lua_State *L);
+ int (*dll_luaopen_table) (lua_State *L);
+***************
+*** 268,273 ****
+--- 272,278 ----
+ {"luaL_loadbufferx", (luaV_function) &dll_luaL_loadbufferx},
+ {"luaL_argerror", (luaV_function) &dll_luaL_argerror},
+ #endif
++ {"luaL_checkany", (luaV_function) &dll_luaL_checkany},
+ {"luaL_checklstring", (luaV_function) &dll_luaL_checklstring},
+ {"luaL_checkinteger", (luaV_function) &dll_luaL_checkinteger},
+ {"luaL_optinteger", (luaV_function) &dll_luaL_optinteger},
+***************
+*** 290,297 ****
+ {"lua_pcallk", (luaV_function) &dll_lua_pcallk},
+ {"lua_getglobal", (luaV_function) &dll_lua_getglobal},
+ {"lua_setglobal", (luaV_function) &dll_lua_setglobal},
+- {"lua_typename", (luaV_function) &dll_lua_typename},
+ #endif
+ {"lua_close", (luaV_function) &dll_lua_close},
+ {"lua_gettop", (luaV_function) &dll_lua_gettop},
+ {"lua_settop", (luaV_function) &dll_lua_settop},
+--- 295,302 ----
+ {"lua_pcallk", (luaV_function) &dll_lua_pcallk},
+ {"lua_getglobal", (luaV_function) &dll_lua_getglobal},
+ {"lua_setglobal", (luaV_function) &dll_lua_setglobal},
+ #endif
++ {"lua_typename", (luaV_function) &dll_lua_typename},
+ {"lua_close", (luaV_function) &dll_lua_close},
+ {"lua_gettop", (luaV_function) &dll_lua_gettop},
+ {"lua_settop", (luaV_function) &dll_lua_settop},
+***************
+*** 324,329 ****
+--- 329,335 ----
+ {"lua_rawset", (luaV_function) &dll_lua_rawset},
+ {"lua_rawseti", (luaV_function) &dll_lua_rawseti},
+ {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable},
++ {"lua_next", (luaV_function) &dll_lua_next},
+ /* libs */
+ {"luaopen_base", (luaV_function) &dll_luaopen_base},
+ {"luaopen_table", (luaV_function) &dll_luaopen_table},
+***************
+*** 1828,1834 ****
+ }
+ luaV_setrange(L, eap->line1, eap->line2);
+ luaL_buffinit(L, &b);
+! luaL_addlstring(&b, "return function(line) ", 22); /* header */
+ luaL_addlstring(&b, s, strlen(s));
+ luaL_addlstring(&b, " end", 4); /* footer */
+ luaL_pushresult(&b);
+--- 1834,1840 ----
+ }
+ luaV_setrange(L, eap->line1, eap->line2);
+ luaL_buffinit(L, &b);
+! luaL_addlstring(&b, "return function(line, linenr) ", 30); /* header */
+ luaL_addlstring(&b, s, strlen(s));
+ luaL_addlstring(&b, " end", 4); /* footer */
+ luaL_pushresult(&b);
+***************
+*** 1845,1851 ****
+ {
+ lua_pushvalue(L, -1); /* function */
+ luaV_pushline(L, curbuf, l); /* current line as arg */
+! if (lua_pcall(L, 1, 1, 0))
+ {
+ luaV_emsg(L);
+ break;
+--- 1851,1858 ----
+ {
+ lua_pushvalue(L, -1); /* function */
+ luaV_pushline(L, curbuf, l); /* current line as arg */
+! lua_pushinteger(L, l); /* current line number as arg */
+! if (lua_pcall(L, 2, 1, 0))
+ {
+ luaV_emsg(L);
+ break;
+*** ../vim-7.3.493/src/version.c 2012-04-06 13:56:00.000000000 +0200
+--- src/version.c 2012-04-06 14:25:11.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 494,
+ /**/
+
+--
+Why doesn't Tarzan have a beard?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.495 b/source/ap/vim/patches/7.3.495
new file mode 100644
index 000000000..54c230627
--- /dev/null
+++ b/source/ap/vim/patches/7.3.495
@@ -0,0 +1,124 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.4
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.495 (after 7.3.492)
+Problem: Compiler warnings.
+Solution: Add function declaration. Remove "offset" argument.
+Files: src/misc1.c
+
+
+*** ../vim-7.3.494/src/misc1.c 2012-04-06 13:56:00.000000000 +0200
+--- src/misc1.c 2012-04-09 20:25:58.000000000 +0200
+***************
+*** 4972,4977 ****
+--- 4972,4978 ----
+ static int cin_iselse __ARGS((char_u *));
+ static int cin_isdo __ARGS((char_u *));
+ static int cin_iswhileofdo __ARGS((char_u *, linenr_T, int));
++ static int cin_is_if_for_while_before_offset __ARGS((char_u *line, int *poffset));
+ static int cin_iswhileofdo_end __ARGS((int terminated, int ind_maxparen, int ind_maxcomment));
+ static int cin_isbreak __ARGS((char_u *));
+ static int cin_is_cpp_baseclass __ARGS((colnr_T *col));
+***************
+*** 5771,5787 ****
+ }
+
+ /*
+! * Check whether in "p" there is an "if", "for" or "while" before offset.
+ * Return 0 if there is none.
+ * Otherwise return !0 and update "*poffset" to point to the place where the
+ * string was found.
+ */
+ static int
+! cin_is_if_for_while_before_offset(line, offset, poffset)
+ char_u *line;
+- size_t offset;
+ int *poffset;
+ {
+
+ if (offset-- < 2)
+ return 0;
+--- 5772,5788 ----
+ }
+
+ /*
+! * Check whether in "p" there is an "if", "for" or "while" before "*poffset".
+ * Return 0 if there is none.
+ * Otherwise return !0 and update "*poffset" to point to the place where the
+ * string was found.
+ */
+ static int
+! cin_is_if_for_while_before_offset(line, poffset)
+ char_u *line;
+ int *poffset;
+ {
++ int offset = *poffset;
+
+ if (offset-- < 2)
+ return 0;
+***************
+*** 5805,5812 ****
+ goto probablyFound;
+ }
+ }
+-
+ return 0;
+ probablyFound:
+ if (!offset || !vim_isIDc(line[offset - 1]))
+ {
+--- 5806,5813 ----
+ goto probablyFound;
+ }
+ }
+ return 0;
++
+ probablyFound:
+ if (!offset || !vim_isIDc(line[offset - 1]))
+ {
+***************
+*** 6890,6897 ****
+ line = ml_get(outermost.lnum);
+
+ is_if_for_while =
+! cin_is_if_for_while_before_offset(line, outermost.col,
+! &outermost.col);
+ }
+
+ amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment);
+--- 6891,6897 ----
+ line = ml_get(outermost.lnum);
+
+ is_if_for_while =
+! cin_is_if_for_while_before_offset(line, &outermost.col);
+ }
+
+ amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment);
+*** ../vim-7.3.494/src/version.c 2012-04-06 14:30:55.000000000 +0200
+--- src/version.c 2012-04-09 20:41:44.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 495,
+ /**/
+
+--
+ [clop clop]
+GUARD #1: Halt! Who goes there?
+ARTHUR: It is I, Arthur, son of Uther Pendragon, from the castle of
+ Camelot. King of the Britons, defeator of the Saxons, sovereign of
+ all England!
+GUARD #1: Pull the other one!
+ The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.496 b/source/ap/vim/patches/7.3.496
new file mode 100644
index 000000000..8b110517c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.496
@@ -0,0 +1,69 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.496
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.496
+Problem: MS-DOS: When "diff" trips over difference in line separators some
+ tests fail.
+Solution: Make some .ok files use unix line separators. (David Pope)
+Files: src/testdir/Make_dos.mak, src/testdir/Make_ming.mak
+
+
+*** ../vim-7.3.495/src/testdir/Make_dos.mak 2012-04-05 16:56:38.000000000 +0200
+--- src/testdir/Make_dos.mak 2012-04-09 21:23:43.000000000 +0200
+***************
+*** 52,58 ****
+
+ fixff:
+ -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok
+! -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=unix|upd" +q dotest.in
+
+ clean:
+ -del *.out
+--- 52,59 ----
+
+ fixff:
+ -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok
+! -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=unix|upd" +q \
+! dotest.in test60.ok test71.ok test74.ok
+
+ clean:
+ -del *.out
+*** ../vim-7.3.495/src/testdir/Make_ming.mak 2012-04-05 16:56:38.000000000 +0200
+--- src/testdir/Make_ming.mak 2012-04-09 21:25:55.000000000 +0200
+***************
+*** 75,80 ****
+--- 75,82 ----
+
+ fixff:
+ -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok
++ -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=unix|upd" +q \
++ dotest.in test60.ok test71.ok test74.ok
+
+ clean:
+ -$(DEL) *.out
+*** ../vim-7.3.495/src/version.c 2012-04-09 20:42:20.000000000 +0200
+--- src/version.c 2012-04-13 19:10:04.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 496,
+ /**/
+
+--
+There are 2 kinds of people in my world: those who know Unix, Perl, Vim, GNU,
+Linux, etc, and those who know COBOL. It gets very difficult for me at
+parties, not knowing which group to socialise with :-)
+ Sitaram Chamarty
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.497 b/source/ap/vim/patches/7.3.497
new file mode 100644
index 000000000..5cbffc4ae
--- /dev/null
+++ b/source/ap/vim/patches/7.3.497
@@ -0,0 +1,50 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.497
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.497
+Problem: Crash when doing ":python print" and compiled with gcc and
+ the optimizer enabled.
+Solution: Avoid the crash, doesn't really fix the problem. (Christian
+ Brabandt)
+Files: src/if_py_both.h
+
+
+*** ../vim-7.3.496/src/if_py_both.h 2012-02-04 20:17:21.000000000 +0100
+--- src/if_py_both.h 2012-04-20 13:24:31.000000000 +0200
+***************
+*** 77,82 ****
+--- 77,87 ----
+ if (!PyArg_ParseTuple(args, "et#", ENC_OPT, &str, &len))
+ return NULL;
+
++ /* TODO: This works around a gcc optimizer problem and avoids Vim
++ * from crashing. Should find a real solution. */
++ if (str == NULL)
++ return NULL;
++
+ Py_BEGIN_ALLOW_THREADS
+ Python_Lock_Vim();
+ writer((writefn)(error ? emsg : msg), (char_u *)str, len);
+*** ../vim-7.3.496/src/version.c 2012-04-13 19:11:16.000000000 +0200
+--- src/version.c 2012-04-20 13:26:22.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 497,
+ /**/
+
+--
+There can't be a crisis today, my schedule is already full.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.498 b/source/ap/vim/patches/7.3.498
new file mode 100644
index 000000000..aa9c621ee
--- /dev/null
+++ b/source/ap/vim/patches/7.3.498
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.498
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.498
+Problem: The behavior of the "- register changes depending on value of
+ the 'clipboard' option. (Szamotulski)
+Solution: Also set the "- register when the register is "*" or "+".
+ (Christian Brabandt)
+Files: src/ops.c
+
+
+*** ../vim-7.3.497/src/ops.c 2012-03-23 14:16:19.000000000 +0100
+--- src/ops.c 2012-04-20 13:36:32.000000000 +0200
+***************
+*** 1720,1728 ****
+ did_yank = TRUE;
+ }
+
+! /* Yank into small delete register when no register specified and the
+! * delete is within one line. */
+! if (oap->regname == 0 && oap->motion_type != MLINE
+ && oap->line_count == 1)
+ {
+ oap->regname = '-';
+--- 1720,1733 ----
+ did_yank = TRUE;
+ }
+
+! /* Yank into small delete register when no named register specified
+! * and the delete is within one line. */
+! if ((
+! #ifdef FEAT_CLIPBOARD
+! ((clip_unnamed & CLIP_UNNAMED) && oap->regname == '*') ||
+! ((clip_unnamed & CLIP_UNNAMED_PLUS) && oap->regname == '+') ||
+! #endif
+! oap->regname == 0) && oap->motion_type != MLINE
+ && oap->line_count == 1)
+ {
+ oap->regname = '-';
+*** ../vim-7.3.497/src/version.c 2012-04-20 13:31:16.000000000 +0200
+--- src/version.c 2012-04-20 13:45:26.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 498,
+ /**/
+
+--
+Did you ever stop to think... and forget to start again?
+ -- Steven Wright
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.499 b/source/ap/vim/patches/7.3.499
new file mode 100644
index 000000000..4e45e4fb7
--- /dev/null
+++ b/source/ap/vim/patches/7.3.499
@@ -0,0 +1,84 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.499
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.499
+Problem: When using any interface language when Vim is waiting for a child
+ process it gets confused by a child process started through the
+ interface.
+Solution: Always used waitpid() instead of wait(). (Yasuhiro Matsumoto)
+Files: src/os_unix.c
+
+
+*** ../vim-7.3.498/src/os_unix.c 2012-02-05 22:51:27.000000000 +0100
+--- src/os_unix.c 2012-04-20 15:47:17.000000000 +0200
+***************
+*** 3734,3757 ****
+
+ while (wait_pid != child)
+ {
+! # ifdef _THREAD_SAFE
+! /* Ugly hack: when compiled with Python threads are probably
+! * used, in which case wait() sometimes hangs for no obvious
+! * reason. Use waitpid() instead and loop (like the GUI). */
+! # ifdef __NeXT__
+ wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0);
+! # else
+ wait_pid = waitpid(child, status, WNOHANG);
+! # endif
+ if (wait_pid == 0)
+ {
+ /* Wait for 1/100 sec before trying again. */
+ mch_delay(10L, TRUE);
+ continue;
+ }
+- # else
+- wait_pid = wait(status);
+- # endif
+ if (wait_pid <= 0
+ # ifdef ECHILD
+ && errno == ECHILD
+--- 3734,3754 ----
+
+ while (wait_pid != child)
+ {
+! /* When compiled with Python threads are probably used, in which case
+! * wait() sometimes hangs for no obvious reason. Use waitpid()
+! * instead and loop (like the GUI). Also needed for other interfaces,
+! * they might call system(). */
+! # ifdef __NeXT__
+ wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0);
+! # else
+ wait_pid = waitpid(child, status, WNOHANG);
+! # endif
+ if (wait_pid == 0)
+ {
+ /* Wait for 1/100 sec before trying again. */
+ mch_delay(10L, TRUE);
+ continue;
+ }
+ if (wait_pid <= 0
+ # ifdef ECHILD
+ && errno == ECHILD
+*** ../vim-7.3.498/src/version.c 2012-04-20 13:46:02.000000000 +0200
+--- src/version.c 2012-04-20 15:54:05.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 499,
+ /**/
+
+--
+It's not hard to meet expenses, they're everywhere.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.500 b/source/ap/vim/patches/7.3.500
new file mode 100644
index 000000000..b3b6a375e
--- /dev/null
+++ b/source/ap/vim/patches/7.3.500
@@ -0,0 +1,46 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.500
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.500
+Problem: Ming makefile unconditionally sets WINVER.
+Solution: Only defined when not already defined. (Yasuhiro Matsumoto)
+Files: src/Make_ming.mak
+
+
+*** ../vim-7.3.499/src/Make_ming.mak 2012-03-28 17:43:06.000000000 +0200
+--- src/Make_ming.mak 2012-04-20 16:03:50.000000000 +0200
+***************
+*** 51,57 ****
+--- 51,59 ----
+ # set to yes to enable OLE support
+ OLE=no
+ # Set the default $(WINVER) to make it work with pre-Win2k
++ ifndef WINVER
+ WINVER = 0x0400
++ endif
+ # Set to yes to enable Cscope support
+ CSCOPE=yes
+ # Set to yes to enable Netbeans support
+*** ../vim-7.3.499/src/version.c 2012-04-20 15:55:10.000000000 +0200
+--- src/version.c 2012-04-20 16:12:34.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 500,
+ /**/
+
+--
+Life is a gift, living is an art. (Bram Moolenaar)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.501 b/source/ap/vim/patches/7.3.501
new file mode 100644
index 000000000..a74b02888
--- /dev/null
+++ b/source/ap/vim/patches/7.3.501
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.501
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.501
+Problem: Error for "flush" not being defined when using Ruby command.
+Solution: Defined "flush" as a no-op method. (Kent Sibilev)
+Files: src/if_ruby.c
+
+
+*** ../vim-7.3.500/src/if_ruby.c 2011-08-04 19:34:55.000000000 +0200
+--- src/if_ruby.c 2012-04-20 16:18:56.000000000 +0200
+***************
+*** 1238,1243 ****
+--- 1238,1248 ----
+ return Qnil;
+ }
+
++ static VALUE f_nop(VALUE self)
++ {
++ return Qnil;
++ }
++
+ static VALUE f_p(int argc, VALUE *argv, VALUE self UNUSED)
+ {
+ int i;
+***************
+*** 1259,1264 ****
+--- 1264,1270 ----
+
+ rb_stdout = rb_obj_alloc(rb_cObject);
+ rb_define_singleton_method(rb_stdout, "write", vim_message, 1);
++ rb_define_singleton_method(rb_stdout, "flush", f_nop, 0);
+ rb_define_global_function("p", f_p, -1);
+ }
+
+*** ../vim-7.3.500/src/version.c 2012-04-20 16:13:21.000000000 +0200
+--- src/version.c 2012-04-20 16:19:03.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 501,
+ /**/
+
+--
+Q: What do you call a fish without an eye?
+A: fsh!
+Q: What do you call a deer with no eyes?
+A: no eye deer.
+Q: What do you call a deer with no eyes and no legs?
+A: still no eye deer.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.502 b/source/ap/vim/patches/7.3.502
new file mode 100644
index 000000000..c9710abfb
--- /dev/null
+++ b/source/ap/vim/patches/7.3.502
@@ -0,0 +1,67 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.502
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.502
+Problem: Netbeans insert halfway a line actually appends to the line.
+Solution: Insert halfway the line. (Brian Victor)
+Files: src/netbeans.c
+
+
+*** ../vim-7.3.501/src/netbeans.c 2012-01-10 22:31:26.000000000 +0100
+--- src/netbeans.c 2012-04-20 19:44:31.000000000 +0200
+***************
+*** 1812,1825 ****
+ char_u *oldline = ml_get(lnum);
+ char_u *newline;
+
+! /* Insert halfway a line. For simplicity we assume we
+! * need to append to the line. */
+ newline = alloc_check(
+ (unsigned)(STRLEN(oldline) + len + 1));
+ if (newline != NULL)
+ {
+! STRCPY(newline, oldline);
+ STRCAT(newline, args);
+ ml_replace(lnum, newline, FALSE);
+ }
+ }
+--- 1812,1826 ----
+ char_u *oldline = ml_get(lnum);
+ char_u *newline;
+
+! /* Insert halfway a line. */
+ newline = alloc_check(
+ (unsigned)(STRLEN(oldline) + len + 1));
+ if (newline != NULL)
+ {
+! mch_memmove(newline, oldline, (size_t)pos->col);
+! newline[pos->col] = NUL;
+ STRCAT(newline, args);
++ STRCAT(newline, oldline + pos->col);
+ ml_replace(lnum, newline, FALSE);
+ }
+ }
+*** ../vim-7.3.501/src/version.c 2012-04-20 18:05:42.000000000 +0200
+--- src/version.c 2012-04-20 19:46:48.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 502,
+ /**/
+
+--
+Time flies like an arrow.
+Fruit flies like a banana.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.503 b/source/ap/vim/patches/7.3.503
new file mode 100644
index 000000000..5b776ae0d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.503
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.503
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.503 (after 7.3.501)
+Problem: Warning for unused argument.
+Solution: Add UNUSED.
+Files: src/if_ruby.c
+
+
+*** ../vim-7.3.502/src/if_ruby.c 2012-04-20 18:05:42.000000000 +0200
+--- src/if_ruby.c 2012-04-25 12:26:38.000000000 +0200
+***************
+*** 1238,1244 ****
+ return Qnil;
+ }
+
+! static VALUE f_nop(VALUE self)
+ {
+ return Qnil;
+ }
+--- 1238,1244 ----
+ return Qnil;
+ }
+
+! static VALUE f_nop(VALUE self UNUSED)
+ {
+ return Qnil;
+ }
+*** ../vim-7.3.502/src/version.c 2012-04-20 19:47:00.000000000 +0200
+--- src/version.c 2012-04-25 12:27:30.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 503,
+ /**/
+
+--
+Why isn't there mouse-flavored cat food?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.504 b/source/ap/vim/patches/7.3.504
new file mode 100644
index 000000000..752279060
--- /dev/null
+++ b/source/ap/vim/patches/7.3.504
@@ -0,0 +1,87 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.504
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.504
+Problem: Commands in help files are not highlighted.
+Solution: Allow for commands in backticks. Adjust CTRL-] to remove the
+ backticks.
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.3.503/src/ex_cmds.c 2012-04-05 16:04:58.000000000 +0200
+--- src/ex_cmds.c 2012-04-25 12:51:41.000000000 +0200
+***************
+*** 3421,3427 ****
+ * and re-attach to buffer, perhaps.
+ */
+ if (curwin->w_s == &(curwin->w_buffer->b_s))
+! curwin->w_s = &(buf->b_s);
+ #endif
+ curwin->w_buffer = buf;
+ curbuf = buf;
+--- 3421,3427 ----
+ * and re-attach to buffer, perhaps.
+ */
+ if (curwin->w_s == &(curwin->w_buffer->b_s))
+! curwin->w_s = &(buf->b_s);
+ #endif
+ curwin->w_buffer = buf;
+ curbuf = buf;
+***************
+*** 5965,5970 ****
+--- 5965,5993 ----
+ break;
+ }
+ *d = NUL;
++
++ if (*IObuff == '`')
++ {
++ if (d > IObuff + 2 && d[-1] == '`')
++ {
++ /* remove the backticks from `command` */
++ mch_memmove(IObuff, IObuff + 1, STRLEN(IObuff));
++ d[-2] = NUL;
++ }
++ else if (d > IObuff + 3 && d[-2] == '`' && d[-1] == ',')
++ {
++ /* remove the backticks and comma from `command`, */
++ mch_memmove(IObuff, IObuff + 1, STRLEN(IObuff));
++ d[-3] = NUL;
++ }
++ else if (d > IObuff + 4 && d[-3] == '`'
++ && d[-2] == '\\' && d[-1] == '.')
++ {
++ /* remove the backticks and dot from `command`\. */
++ mch_memmove(IObuff, IObuff + 1, STRLEN(IObuff));
++ d[-4] = NUL;
++ }
++ }
+ }
+ }
+
+*** ../vim-7.3.503/src/version.c 2012-04-25 12:28:05.000000000 +0200
+--- src/version.c 2012-04-25 12:46:43.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 504,
+ /**/
+
+--
+TIM: That is not an ordinary rabbit ... 'tis the most foul cruel and
+ bad-tempered thing you ever set eyes on.
+ROBIN: You tit. I soiled my armour I was so scared!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.505 b/source/ap/vim/patches/7.3.505
new file mode 100644
index 000000000..1a8a7ea37
--- /dev/null
+++ b/source/ap/vim/patches/7.3.505
@@ -0,0 +1,116 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.505
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.505
+Problem: Test 11 fails on MS-Windows in some versions.
+Solution: Fix #ifdefs for whether filtering through a pipe is possible. Move
+ setting b_no_eol_lnum back to where it was before patch 7.3.124.
+ (David Pope)
+Files: src/feature.h, src/eval.c, src/ex_cmds.c, src/fileio.c
+
+
+*** ../vim-7.3.504/src/feature.h 2011-10-20 21:09:25.000000000 +0200
+--- src/feature.h 2012-04-25 16:44:26.000000000 +0200
+***************
+*** 1316,1318 ****
+--- 1316,1326 ----
+ #ifdef FEAT_NORMAL
+ # define FEAT_PERSISTENT_UNDO
+ #endif
++
++ /*
++ * +filterpipe
++ */
++ #if (defined(UNIX) && !defined(USE_SYSTEM)) \
++ || (defined(WIN3264) && defined(FEAT_GUI_W32))
++ # define FEAT_FILTERPIPE
++ #endif
+*** ../vim-7.3.504/src/eval.c 2012-04-05 16:53:55.000000000 +0200
+--- src/eval.c 2012-04-25 16:43:53.000000000 +0200
+***************
+*** 12090,12096 ****
+ #ifdef FEAT_SEARCHPATH
+ "file_in_path",
+ #endif
+! #if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264)
+ "filterpipe",
+ #endif
+ #ifdef FEAT_FIND_ID
+--- 12090,12096 ----
+ #ifdef FEAT_SEARCHPATH
+ "file_in_path",
+ #endif
+! #ifdef FEAT_FILTERPIPE
+ "filterpipe",
+ #endif
+ #ifdef FEAT_FIND_ID
+*** ../vim-7.3.504/src/ex_cmds.c 2012-04-25 12:57:23.000000000 +0200
+--- src/ex_cmds.c 2012-04-25 16:46:02.000000000 +0200
+***************
+*** 1113,1119 ****
+ if (do_out)
+ shell_flags |= SHELL_DOOUT;
+
+! #if (!defined(USE_SYSTEM) && defined(UNIX)) || defined(WIN3264)
+ if (!do_in && do_out && !p_stmp)
+ {
+ /* Use a pipe to fetch stdout of the command, do not use a temp file. */
+--- 1113,1119 ----
+ if (do_out)
+ shell_flags |= SHELL_DOOUT;
+
+! #ifdef FEAT_FILTERPIPE
+ if (!do_in && do_out && !p_stmp)
+ {
+ /* Use a pipe to fetch stdout of the command, do not use a temp file. */
+*** ../vim-7.3.504/src/fileio.c 2012-02-29 18:22:03.000000000 +0100
+--- src/fileio.c 2012-04-25 16:40:37.000000000 +0200
+***************
+*** 2655,2664 ****
+ }
+ #endif
+
+- /* Reset now, following writes should not omit the EOL. Also, the line
+- * number will become invalid because of edits. */
+- curbuf->b_no_eol_lnum = 0;
+-
+ if (recoverymode && error)
+ return FAIL;
+ return OK;
+--- 2655,2660 ----
+***************
+*** 5098,5103 ****
+--- 5094,5101 ----
+ {
+ aco_save_T aco;
+
++ curbuf->b_no_eol_lnum = 0; /* in case it was set by the previous read */
++
+ /*
+ * Apply POST autocommands.
+ * Careful: The autocommands may call buf_write() recursively!
+*** ../vim-7.3.504/src/version.c 2012-04-25 12:57:23.000000000 +0200
+--- src/version.c 2012-04-25 16:49:50.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 505,
+ /**/
+
+--
+Lose weight, NEVER Diet again with
+ The "Invisible Weight Loss Patch"
+ (spam e-mail)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.506 b/source/ap/vim/patches/7.3.506
new file mode 100644
index 000000000..32be6fd10
--- /dev/null
+++ b/source/ap/vim/patches/7.3.506
@@ -0,0 +1,100 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.506
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.506
+Problem: GTK gives an error when selecting a non-existent file.
+Solution: Add a handler to avoid the error. (Christian Brabandt)
+Files: src/gui_gtk.c
+
+
+*** ../vim-7.3.505/src/gui_gtk.c 2011-06-26 04:48:56.000000000 +0200
+--- src/gui_gtk.c 2012-04-25 17:08:58.000000000 +0200
+***************
+*** 90,95 ****
+--- 90,100 ----
+ static void entry_activate_cb(GtkWidget *widget, gpointer data);
+ static void entry_changed_cb(GtkWidget *entry, GtkWidget *dialog);
+ static void find_replace_cb(GtkWidget *widget, gpointer data);
++ static void recent_func_log_func(
++ const gchar *log_domain,
++ GLogLevelFlags log_level,
++ const gchar *message,
++ gpointer user_data);
+
+ #if defined(FEAT_TOOLBAR)
+ /*
+***************
+*** 839,844 ****
+--- 844,851 ----
+ GtkWidget *fc;
+ #endif
+ char_u dirbuf[MAXPATHL];
++ guint log_handler;
++ const gchar *domain = "Gtk";
+
+ title = CONVERT_TO_UTF8(title);
+
+***************
+*** 853,858 ****
+--- 860,870 ----
+ /* If our pointer is currently hidden, then we should show it. */
+ gui_mch_mousehide(FALSE);
+
++ /* Hack: The GTK file dialog warns when it can't access a new file, this
++ * makes it shut up. http://bugzilla.gnome.org/show_bug.cgi?id=664587 */
++ log_handler = g_log_set_handler(domain, G_LOG_LEVEL_WARNING,
++ recent_func_log_func, NULL);
++
+ #ifdef USE_FILE_CHOOSER
+ /* We create the dialog each time, so that the button text can be "Open"
+ * or "Save" according to the action. */
+***************
+*** 916,921 ****
+--- 928,934 ----
+ gtk_widget_show(gui.filedlg);
+ gtk_main();
+ #endif
++ g_log_remove_handler(domain, log_handler);
+
+ CONVERT_TO_UTF8_FREE(title);
+ if (gui.browse_fname == NULL)
+***************
+*** 1882,1884 ****
+--- 1895,1908 ----
+ * backwards compatibility anyway. */
+ do_cmdline_cmd((char_u *)"emenu ToolBar.FindHelp");
+ }
++
++ static void
++ recent_func_log_func(const gchar *log_domain UNUSED,
++ GLogLevelFlags log_level UNUSED,
++ const gchar *message UNUSED,
++ gpointer user_data UNUSED)
++ {
++ /* We just want to suppress the warnings. */
++ /* http://bugzilla.gnome.org/show_bug.cgi?id=664587 */
++ }
++
+*** ../vim-7.3.505/src/version.c 2012-04-25 16:50:44.000000000 +0200
+--- src/version.c 2012-04-25 17:08:28.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 506,
+ /**/
+
+--
+Compilation process failed successfully.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.507 b/source/ap/vim/patches/7.3.507
new file mode 100644
index 000000000..c96561c39
--- /dev/null
+++ b/source/ap/vim/patches/7.3.507
@@ -0,0 +1,149 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.507
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.507
+Problem: When exiting with unsaved changes, selecting an existing file in
+ the file dialog, there is no dialog to ask whether the existing
+ file should be overwritten. (Felipe G. Nievinski)
+Solution: Call check_overwrite() before writing. (Christian Brabandt)
+Files: src/ex_cmds.c, src/ex_cmds2.c, src/proto/ex_cmds.pro
+
+
+*** ../vim-7.3.506/src/ex_cmds.c 2012-04-25 16:50:44.000000000 +0200
+--- src/ex_cmds.c 2012-04-25 17:19:53.000000000 +0200
+***************
+*** 25,31 ****
+ static int read_viminfo_up_to_marks __ARGS((vir_T *virp, int forceit, int writing));
+ #endif
+
+- static int check_overwrite __ARGS((exarg_T *eap, buf_T *buf, char_u *fname, char_u *ffname, int other));
+ static int check_readonly __ARGS((int *forceit, buf_T *buf));
+ #ifdef FEAT_AUTOCMD
+ static void delbuf_msg __ARGS((char_u *name));
+--- 25,30 ----
+***************
+*** 2722,2728 ****
+ * May set eap->forceit if a dialog says it's OK to overwrite.
+ * Return OK if it's OK, FAIL if it is not.
+ */
+! static int
+ check_overwrite(eap, buf, fname, ffname, other)
+ exarg_T *eap;
+ buf_T *buf;
+--- 2721,2727 ----
+ * May set eap->forceit if a dialog says it's OK to overwrite.
+ * Return OK if it's OK, FAIL if it is not.
+ */
+! int
+ check_overwrite(eap, buf, fname, ffname, other)
+ exarg_T *eap;
+ buf_T *buf;
+*** ../vim-7.3.506/src/ex_cmds2.c 2012-03-23 18:39:10.000000000 +0100
+--- src/ex_cmds2.c 2012-04-25 17:24:37.000000000 +0200
+***************
+*** 1489,1494 ****
+--- 1489,1495 ----
+ char_u buff[DIALOG_MSG_SIZE];
+ int ret;
+ buf_T *buf2;
++ exarg_T ea;
+
+ dialog_msg(buff, _("Save changes to \"%s\"?"),
+ (buf->b_fname != NULL) ?
+***************
+*** 1498,1510 ****
+ else
+ ret = vim_dialog_yesnocancel(VIM_QUESTION, NULL, buff, 1);
+
+ if (ret == VIM_YES)
+ {
+ #ifdef FEAT_BROWSE
+ /* May get file name, when there is none */
+ browse_save_fname(buf);
+ #endif
+! if (buf->b_fname != NULL) /* didn't hit Cancel */
+ (void)buf_write_all(buf, FALSE);
+ }
+ else if (ret == VIM_NO)
+--- 1499,1517 ----
+ else
+ ret = vim_dialog_yesnocancel(VIM_QUESTION, NULL, buff, 1);
+
++ /* Init ea pseudo-structure, this is needed for the check_overwrite()
++ * function. */
++ ea.append = ea.forceit = FALSE;
++
+ if (ret == VIM_YES)
+ {
+ #ifdef FEAT_BROWSE
+ /* May get file name, when there is none */
+ browse_save_fname(buf);
+ #endif
+! if (buf->b_fname != NULL && check_overwrite(&ea, buf,
+! buf->b_fname, buf->b_ffname, FALSE) == OK)
+! /* didn't hit Cancel */
+ (void)buf_write_all(buf, FALSE);
+ }
+ else if (ret == VIM_NO)
+***************
+*** 1532,1538 ****
+ /* May get file name, when there is none */
+ browse_save_fname(buf2);
+ #endif
+! if (buf2->b_fname != NULL) /* didn't hit Cancel */
+ (void)buf_write_all(buf2, FALSE);
+ #ifdef FEAT_AUTOCMD
+ /* an autocommand may have deleted the buffer */
+--- 1539,1547 ----
+ /* May get file name, when there is none */
+ browse_save_fname(buf2);
+ #endif
+! if (buf2->b_fname != NULL && check_overwrite(&ea, buf2,
+! buf2->b_fname, buf2->b_ffname, FALSE) == OK)
+! /* didn't hit Cancel */
+ (void)buf_write_all(buf2, FALSE);
+ #ifdef FEAT_AUTOCMD
+ /* an autocommand may have deleted the buffer */
+*** ../vim-7.3.506/src/proto/ex_cmds.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/ex_cmds.pro 2012-04-25 17:25:47.000000000 +0200
+***************
+*** 23,28 ****
+--- 23,29 ----
+ void ex_update __ARGS((exarg_T *eap));
+ void ex_write __ARGS((exarg_T *eap));
+ int do_write __ARGS((exarg_T *eap));
++ int check_overwrite __ARGS((exarg_T *eap, buf_T *buf, char_u *fname, char_u *ffname, int other));
+ void ex_wnext __ARGS((exarg_T *eap));
+ void do_wqall __ARGS((exarg_T *eap));
+ int not_writing __ARGS((void));
+*** ../vim-7.3.506/src/version.c 2012-04-25 17:10:12.000000000 +0200
+--- src/version.c 2012-04-25 17:17:30.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 507,
+ /**/
+
+--
+BROTHER MAYNARD: Armaments Chapter Two Verses Nine to Twenty One.
+ANOTHER MONK: And St. Attila raised his hand grenade up on high saying "O
+ Lord bless this thy hand grenade that with it thou mayest
+ blow thine enemies to tiny bits, in thy mercy. "and the Lord
+ did grin and people did feast upon the lambs and sloths and
+ carp and anchovies and orang-utans and breakfast cereals and
+ fruit bats and...
+BROTHER MAYNARD: Skip a bit brother ...
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.508 b/source/ap/vim/patches/7.3.508
new file mode 100644
index 000000000..7b8e7b261
--- /dev/null
+++ b/source/ap/vim/patches/7.3.508
@@ -0,0 +1,85 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.508
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.508
+Problem: Default for v:register is not set.
+Solution: Init v:register in eval_init(). Correct for 'clipboard' before the
+ main loop. (Ingo Karkat)
+Files: src/eval.c, src/main.c
+
+
+*** ../vim-7.3.507/src/eval.c 2012-04-25 16:50:44.000000000 +0200
+--- src/eval.c 2012-04-25 17:56:41.000000000 +0200
+***************
+*** 880,885 ****
+--- 880,886 ----
+ hash_add(&compat_hashtab, p->vv_di.di_key);
+ }
+ set_vim_var_nr(VV_SEARCHFORWARD, 1L);
++ set_reg_var(0); /* default for v:register is not 0 but '"' */
+
+ #ifdef EBCDIC
+ /*
+*** ../vim-7.3.507/src/main.c 2012-03-28 17:10:26.000000000 +0200
+--- src/main.c 2012-04-25 18:01:28.000000000 +0200
+***************
+*** 928,933 ****
+--- 928,945 ----
+ TIME_MSG("VimEnter autocommands");
+ #endif
+
++ #if defined(FEAT_EVAL) && defined(FEAT_CLIPBOARD)
++ /* Adjust default register name for "unnamed" in 'clipboard'. Can only be
++ * done after the clipboard is available and all initial commands that may
++ * modify the 'clipboard' setting have run; i.e. just before entering the
++ * main loop. */
++ {
++ int default_regname = 0;
++ adjust_clip_reg(&default_regname);
++ set_reg_var(default_regname);
++ }
++ #endif
++
+ #if defined(FEAT_DIFF) && defined(FEAT_SCROLLBIND)
+ /* When a startup script or session file setup for diff'ing and
+ * scrollbind, sync the scrollbind now. */
+***************
+*** 1357,1363 ****
+ {
+ apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname,
+ buf->b_fname, FALSE, buf);
+! buf->b_changedtick = -1; /* note that we did it already */
+ /* start all over, autocommands may mess up the lists */
+ next_tp = first_tabpage;
+ break;
+--- 1369,1375 ----
+ {
+ apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname,
+ buf->b_fname, FALSE, buf);
+! buf->b_changedtick = -1; /* note that we did it already */
+ /* start all over, autocommands may mess up the lists */
+ next_tp = first_tabpage;
+ break;
+*** ../vim-7.3.507/src/version.c 2012-04-25 17:32:14.000000000 +0200
+--- src/version.c 2012-04-25 18:00:28.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 508,
+ /**/
+
+--
+I wonder, do vegetarians eat fruit bats?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.509 b/source/ap/vim/patches/7.3.509
new file mode 100644
index 000000000..8dfe9c09d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.509
@@ -0,0 +1,304 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.509
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.509
+Problem: ":vimgrep" fails when 'autochdir' is set.
+Solution: A more generic solution for changing directory. (Ben Fritz)
+Files: src/quickfix.c
+
+
+*** ../vim-7.3.508/src/quickfix.c 2012-03-07 20:13:44.000000000 +0100
+--- src/quickfix.c 2012-04-25 18:52:24.000000000 +0200
+***************
+*** 130,138 ****
+ static void qf_fill_buffer __ARGS((qf_info_T *qi));
+ #endif
+ static char_u *get_mef_name __ARGS((void));
+! static buf_T *load_dummy_buffer __ARGS((char_u *fname));
+! static void wipe_dummy_buffer __ARGS((buf_T *buf));
+! static void unload_dummy_buffer __ARGS((buf_T *buf));
+ static qf_info_T *ll_get_or_alloc_list __ARGS((win_T *));
+
+ /* Quickfix window check helper macro */
+--- 130,139 ----
+ static void qf_fill_buffer __ARGS((qf_info_T *qi));
+ #endif
+ static char_u *get_mef_name __ARGS((void));
+! static void restore_start_dir __ARGS((char_u *dirname_start));
+! static buf_T *load_dummy_buffer __ARGS((char_u *fname, char_u *dirname_start, char_u *resulting_dir));
+! static void wipe_dummy_buffer __ARGS((buf_T *buf, char_u *dirname_start));
+! static void unload_dummy_buffer __ARGS((buf_T *buf, char_u *dirname_start));
+ static qf_info_T *ll_get_or_alloc_list __ARGS((win_T *));
+
+ /* Quickfix window check helper macro */
+***************
+*** 3237,3255 ****
+
+ /* Load file into a buffer, so that 'fileencoding' is detected,
+ * autocommands applied, etc. */
+! buf = load_dummy_buffer(fname);
+!
+! /* When autocommands changed directory: go back. We assume it was
+! * ":lcd %:p:h". */
+! mch_dirname(dirname_now, MAXPATHL);
+! if (STRCMP(dirname_start, dirname_now) != 0)
+! {
+! exarg_T ea;
+!
+! ea.arg = dirname_start;
+! ea.cmdidx = CMD_lcd;
+! ex_cd(&ea);
+! }
+
+ p_mls = save_mls;
+ #if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL)
+--- 3238,3244 ----
+
+ /* Load file into a buffer, so that 'fileencoding' is detected,
+ * autocommands applied, etc. */
+! buf = load_dummy_buffer(fname, dirname_start, dirname_now);
+
+ p_mls = save_mls;
+ #if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL)
+***************
+*** 3320,3326 ****
+ {
+ /* Never keep a dummy buffer if there is another buffer
+ * with the same name. */
+! wipe_dummy_buffer(buf);
+ buf = NULL;
+ }
+ else if (!cmdmod.hide
+--- 3309,3315 ----
+ {
+ /* Never keep a dummy buffer if there is another buffer
+ * with the same name. */
+! wipe_dummy_buffer(buf, dirname_start);
+ buf = NULL;
+ }
+ else if (!cmdmod.hide
+***************
+*** 3336,3347 ****
+ * many swap files. */
+ if (!found_match)
+ {
+! wipe_dummy_buffer(buf);
+ buf = NULL;
+ }
+ else if (buf != first_match_buf || (flags & VGR_NOJUMP))
+ {
+! unload_dummy_buffer(buf);
+ buf = NULL;
+ }
+ }
+--- 3325,3336 ----
+ * many swap files. */
+ if (!found_match)
+ {
+! wipe_dummy_buffer(buf, dirname_start);
+ buf = NULL;
+ }
+ else if (buf != first_match_buf || (flags & VGR_NOJUMP))
+ {
+! unload_dummy_buffer(buf, dirname_start);
+ buf = NULL;
+ }
+ }
+***************
+*** 3487,3499 ****
+ }
+
+ /*
+! * Load file "fname" into a dummy buffer and return the buffer pointer.
+ * Returns NULL if it fails.
+- * Must call unload_dummy_buffer() or wipe_dummy_buffer() later!
+ */
+ static buf_T *
+! load_dummy_buffer(fname)
+ char_u *fname;
+ {
+ buf_T *newbuf;
+ buf_T *newbuf_to_wipe = NULL;
+--- 3476,3523 ----
+ }
+
+ /*
+! * Restore current working directory to "dirname_start" if they differ, taking
+! * into account whether it is set locally or globally.
+! */
+! static void
+! restore_start_dir(dirname_start)
+! char_u *dirname_start;
+! {
+! char_u *dirname_now = alloc(MAXPATHL);
+!
+! if (NULL != dirname_now)
+! {
+! mch_dirname(dirname_now, MAXPATHL);
+! if (STRCMP(dirname_start, dirname_now) != 0)
+! {
+! /* If the directory has changed, change it back by building up an
+! * appropriate ex command and executing it. */
+! exarg_T ea;
+!
+! ea.arg = dirname_start;
+! ea.cmdidx = (curwin->w_localdir == NULL) ? CMD_cd : CMD_lcd;
+! ex_cd(&ea);
+! }
+! }
+! }
+!
+! /*
+! * Load file "fname" into a dummy buffer and return the buffer pointer,
+! * placing the directory resulting from the buffer load into the
+! * "resulting_dir" pointer. "resulting_dir" must be allocated by the caller
+! * prior to calling this function. Restores directory to "dirname_start" prior
+! * to returning, if autocmds or the 'autochdir' option have changed it.
+! *
+! * If creating the dummy buffer does not fail, must call unload_dummy_buffer()
+! * or wipe_dummy_buffer() later!
+! *
+ * Returns NULL if it fails.
+ */
+ static buf_T *
+! load_dummy_buffer(fname, dirname_start, resulting_dir)
+ char_u *fname;
++ char_u *dirname_start; /* in: old directory */
++ char_u *resulting_dir; /* out: new directory */
+ {
+ buf_T *newbuf;
+ buf_T *newbuf_to_wipe = NULL;
+***************
+*** 3548,3569 ****
+ wipe_buffer(newbuf_to_wipe, FALSE);
+ }
+
+ if (!buf_valid(newbuf))
+ return NULL;
+ if (failed)
+ {
+! wipe_dummy_buffer(newbuf);
+ return NULL;
+ }
+ return newbuf;
+ }
+
+ /*
+! * Wipe out the dummy buffer that load_dummy_buffer() created.
+ */
+ static void
+! wipe_dummy_buffer(buf)
+ buf_T *buf;
+ {
+ if (curbuf != buf) /* safety check */
+ {
+--- 3572,3604 ----
+ wipe_buffer(newbuf_to_wipe, FALSE);
+ }
+
++ /*
++ * When autocommands/'autochdir' option changed directory: go back.
++ * Let the caller know what the resulting dir was first, in case it is
++ * important.
++ */
++ mch_dirname(resulting_dir, MAXPATHL);
++ restore_start_dir(dirname_start);
++
+ if (!buf_valid(newbuf))
+ return NULL;
+ if (failed)
+ {
+! wipe_dummy_buffer(newbuf, dirname_start);
+ return NULL;
+ }
+ return newbuf;
+ }
+
+ /*
+! * Wipe out the dummy buffer that load_dummy_buffer() created. Restores
+! * directory to "dirname_start" prior to returning, if autocmds or the
+! * 'autochdir' option have changed it.
+ */
+ static void
+! wipe_dummy_buffer(buf, dirname_start)
+ buf_T *buf;
++ char_u *dirname_start;
+ {
+ if (curbuf != buf) /* safety check */
+ {
+***************
+*** 3583,3600 ****
+ * new aborting error, interrupt, or uncaught exception. */
+ leave_cleanup(&cs);
+ #endif
+ }
+ }
+
+ /*
+! * Unload the dummy buffer that load_dummy_buffer() created.
+ */
+ static void
+! unload_dummy_buffer(buf)
+ buf_T *buf;
+ {
+ if (curbuf != buf) /* safety check */
+ close_buffer(NULL, buf, DOBUF_UNLOAD, FALSE);
+ }
+
+ #if defined(FEAT_EVAL) || defined(PROTO)
+--- 3618,3645 ----
+ * new aborting error, interrupt, or uncaught exception. */
+ leave_cleanup(&cs);
+ #endif
++ /* When autocommands/'autochdir' option changed directory: go back. */
++ restore_start_dir(dirname_start);
+ }
+ }
+
+ /*
+! * Unload the dummy buffer that load_dummy_buffer() created. Restores
+! * directory to "dirname_start" prior to returning, if autocmds or the
+! * 'autochdir' option have changed it.
+ */
+ static void
+! unload_dummy_buffer(buf, dirname_start)
+ buf_T *buf;
++ char_u *dirname_start;
+ {
+ if (curbuf != buf) /* safety check */
++ {
+ close_buffer(NULL, buf, DOBUF_UNLOAD, FALSE);
++
++ /* When autocommands/'autochdir' option changed directory: go back. */
++ restore_start_dir(dirname_start);
++ }
+ }
+
+ #if defined(FEAT_EVAL) || defined(PROTO)
+*** ../vim-7.3.508/src/version.c 2012-04-25 18:24:24.000000000 +0200
+--- src/version.c 2012-04-25 18:43:10.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 509,
+ /**/
+
+--
+ Arthur pulls Pin out. The MONK blesses the grenade as ...
+ARTHUR: (quietly) One, two, five ...
+GALAHAD: Three, sir!
+ARTHUR: Three.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.510 b/source/ap/vim/patches/7.3.510
new file mode 100644
index 000000000..afe104144
--- /dev/null
+++ b/source/ap/vim/patches/7.3.510
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.510
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.510
+Problem: Test 77 fails on Solaris 7. (Michael Soyka)
+Solution: Replace any tabs with spaces.
+Files: src/testdir/test77.in
+
+
+*** ../vim-7.3.509/src/testdir/test77.in 2011-03-22 18:10:34.000000000 +0100
+--- src/testdir/test77.in 2012-04-30 11:30:31.000000000 +0200
+***************
+*** 21,27 ****
+ :while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile
+ ggdd
+ :w! Xtest
+! :!cksum Xtest > test.out
+ :qa!
+ ENDTEST
+
+--- 21,29 ----
+ :while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile
+ ggdd
+ :w! Xtest
+! :r !cksum Xtest
+! :s/\s/ /g
+! :.w! test.out
+ :qa!
+ ENDTEST
+
+*** ../vim-7.3.509/src/version.c 2012-04-25 18:57:17.000000000 +0200
+--- src/version.c 2012-04-30 11:33:35.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 510,
+ /**/
+
+--
+SIGFUN -- signature too funny (core dumped)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.511 b/source/ap/vim/patches/7.3.511
new file mode 100644
index 000000000..a2b6dce0f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.511
@@ -0,0 +1,49 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.511
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.511
+Problem: Using a FileReadCmd autocommand that does ":e! {file}" may cause a
+ crash. (Christian Brabandt)
+Solution: Properly restore curwin->w_s.
+Files: src/fileio.c
+
+
+*** ../vim-7.3.510/src/fileio.c 2012-04-25 16:50:44.000000000 +0200
+--- src/fileio.c 2012-04-30 17:04:22.000000000 +0200
+***************
+*** 8982,8987 ****
+--- 8982,8991 ----
+ && buf_valid(aco->new_curbuf)
+ && aco->new_curbuf->b_ml.ml_mfp != NULL)
+ {
++ # if defined(FEAT_SYN_HL) || defined(FEAT_SPELL)
++ if (curwin->w_s == &curbuf->b_s)
++ curwin->w_s = &aco->new_curbuf->b_s;
++ # endif
+ --curbuf->b_nwindows;
+ curbuf = aco->new_curbuf;
+ curwin->w_buffer = curbuf;
+*** ../vim-7.3.510/src/version.c 2012-04-30 11:34:20.000000000 +0200
+--- src/version.c 2012-04-30 17:01:05.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 511,
+ /**/
+
+--
+There is no right or wrong, there is only your personal opinion.
+ (Bram Moolenaar)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.512 b/source/ap/vim/patches/7.3.512
new file mode 100644
index 000000000..838ae3e2f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.512
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.512
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.512
+Problem: undofile() returns a useless name when passed an empty string.
+Solution: Return an empty string. (Christian Brabandt)
+Files: src/eval.c
+
+
+*** ../vim-7.3.511/src/eval.c 2012-04-25 18:24:24.000000000 +0200
+--- src/eval.c 2012-04-30 17:23:26.000000000 +0200
+***************
+*** 18259,18269 ****
+ rettv->v_type = VAR_STRING;
+ #ifdef FEAT_PERSISTENT_UNDO
+ {
+! char_u *ffname = FullName_save(get_tv_string(&argvars[0]), FALSE);
+
+! if (ffname != NULL)
+! rettv->vval.v_string = u_get_undo_file_name(ffname, FALSE);
+! vim_free(ffname);
+ }
+ #else
+ rettv->vval.v_string = NULL;
+--- 18259,18279 ----
+ rettv->v_type = VAR_STRING;
+ #ifdef FEAT_PERSISTENT_UNDO
+ {
+! char_u *fname = get_tv_string(&argvars[0]);
+
+! if (*fname == NUL)
+! {
+! /* If there is no file name there will be no undo file. */
+! rettv->vval.v_string = NULL;
+! }
+! else
+! {
+! char_u *ffname = FullName_save(fname, FALSE);
+!
+! if (ffname != NULL)
+! rettv->vval.v_string = u_get_undo_file_name(ffname, FALSE);
+! vim_free(ffname);
+! }
+ }
+ #else
+ rettv->vval.v_string = NULL;
+*** ../vim-7.3.511/src/version.c 2012-04-30 17:04:47.000000000 +0200
+--- src/version.c 2012-04-30 17:24:42.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 512,
+ /**/
+
+--
+It is illegal for a driver to be blindfolded while operating a vehicle.
+ [real standing law in Alabama, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.513 b/source/ap/vim/patches/7.3.513
new file mode 100644
index 000000000..396969f50
--- /dev/null
+++ b/source/ap/vim/patches/7.3.513
@@ -0,0 +1,129 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.513
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.513
+Problem: Cannot use CTRL-E and CTRL-Y with "r".
+Solution: Make CTRL-E and CTRL-Y work like in Insert mode. (Christian
+ Brabandt)
+Files: src/edit.c, src/normal.c, src/proto/edit.pro
+
+
+*** ../vim-7.3.512/src/edit.c 2012-04-05 16:07:01.000000000 +0200
+--- src/edit.c 2012-04-30 17:53:47.000000000 +0200
+***************
+*** 253,259 ****
+ #ifdef FEAT_DIGRAPHS
+ static int ins_digraph __ARGS((void));
+ #endif
+- static int ins_copychar __ARGS((linenr_T lnum));
+ static int ins_ctrl_ey __ARGS((int tc));
+ #ifdef FEAT_SMARTINDENT
+ static void ins_try_si __ARGS((int c));
+--- 253,258 ----
+***************
+*** 9899,9905 ****
+ * Handle CTRL-E and CTRL-Y in Insert mode: copy char from other line.
+ * Returns the char to be inserted, or NUL if none found.
+ */
+! static int
+ ins_copychar(lnum)
+ linenr_T lnum;
+ {
+--- 9898,9904 ----
+ * Handle CTRL-E and CTRL-Y in Insert mode: copy char from other line.
+ * Returns the char to be inserted, or NUL if none found.
+ */
+! int
+ ins_copychar(lnum)
+ linenr_T lnum;
+ {
+*** ../vim-7.3.512/src/normal.c 2012-03-28 12:59:53.000000000 +0200
+--- src/normal.c 2012-04-30 18:06:13.000000000 +0200
+***************
+*** 7070,7076 ****
+ for (n = cap->count1; n > 0; --n)
+ {
+ State = REPLACE;
+! ins_char(cap->nchar);
+ State = old_State;
+ if (cap->ncharC1 != 0)
+ ins_char(cap->ncharC1);
+--- 7070,7087 ----
+ for (n = cap->count1; n > 0; --n)
+ {
+ State = REPLACE;
+! if (cap->nchar == Ctrl_E || cap->nchar == Ctrl_Y)
+! {
+! int c = ins_copychar(curwin->w_cursor.lnum
+! + (cap->nchar == Ctrl_Y ? -1 : 1));
+! if (c != NUL)
+! ins_char(c);
+! else
+! /* will be decremented further down */
+! ++curwin->w_cursor.col;
+! }
+! else
+! ins_char(cap->nchar);
+ State = old_State;
+ if (cap->ncharC1 != 0)
+ ins_char(cap->ncharC1);
+***************
+*** 7092,7098 ****
+ * line will be changed.
+ */
+ ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE);
+! ptr[curwin->w_cursor.col] = cap->nchar;
+ if (p_sm && msg_silent == 0)
+ showmatch(cap->nchar);
+ ++curwin->w_cursor.col;
+--- 7103,7117 ----
+ * line will be changed.
+ */
+ ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE);
+! if (cap->nchar == Ctrl_E || cap->nchar == Ctrl_Y)
+! {
+! int c = ins_copychar(curwin->w_cursor.lnum
+! + (cap->nchar == Ctrl_Y ? -1 : 1));
+! if (c != NUL)
+! ptr[curwin->w_cursor.col] = c;
+! }
+! else
+! ptr[curwin->w_cursor.col] = cap->nchar;
+ if (p_sm && msg_silent == 0)
+ showmatch(cap->nchar);
+ ++curwin->w_cursor.col;
+*** ../vim-7.3.512/src/proto/edit.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/edit.pro 2012-04-30 17:54:41.000000000 +0200
+***************
+*** 39,42 ****
+--- 39,43 ----
+ int hkmap __ARGS((int c));
+ void ins_scroll __ARGS((void));
+ void ins_horscroll __ARGS((void));
++ int ins_copychar __ARGS((linenr_T lnum));
+ /* vim: set ft=c : */
+*** ../vim-7.3.512/src/version.c 2012-04-30 17:35:44.000000000 +0200
+--- src/version.c 2012-04-30 18:17:52.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 513,
+ /**/
+
+--
+It is illegal for anyone to try and stop a child from playfully jumping over
+puddles of water.
+ [real standing law in California, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.514 b/source/ap/vim/patches/7.3.514
new file mode 100644
index 000000000..79620f0e1
--- /dev/null
+++ b/source/ap/vim/patches/7.3.514
@@ -0,0 +1,232 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.514
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.514
+Problem: No completion for :history command.
+Solution: Add the completion and update the docs. Also fix ":behave"
+ completion. (Dominique Pelle)
+Files: runtime/doc/cmdline.txt, runtime/doc/map.txt, src/ex_docmd.c,
+ src/ex_getln.c, src/vim.h
+
+
+*** ../vim-7.3.513/runtime/doc/cmdline.txt 2010-08-15 21:57:17.000000000 +0200
+--- runtime/doc/cmdline.txt 2012-04-30 18:30:00.000000000 +0200
+***************
+*** 330,341 ****
+
+ :his[tory] [{name}] [{first}][, [{last}]]
+ List the contents of history {name} which can be:
+! c[md] or : command-line history
+! s[earch] or / search string history
+! e[xpr] or = expression register history
+! i[nput] or @ input line history
+! d[ebug] or > debug command history
+! a[ll] all of the above
+ {not in Vi}
+
+ If the numbers {first} and/or {last} are given, the respective
+--- 330,341 ----
+
+ :his[tory] [{name}] [{first}][, [{last}]]
+ List the contents of history {name} which can be:
+! c[md] or : command-line history
+! s[earch] or / or ? search string history
+! e[xpr] or = expression register history
+! i[nput] or @ input line history
+! d[ebug] or > debug command history
+! a[ll] all of the above
+ {not in Vi}
+
+ If the numbers {first} and/or {last} are given, the respective
+*** ../vim-7.3.513/runtime/doc/map.txt 2011-07-20 16:36:35.000000000 +0200
+--- runtime/doc/map.txt 2012-04-30 18:30:00.000000000 +0200
+***************
+*** 1202,1207 ****
+--- 1219,1225 ----
+
+ -complete=augroup autocmd groups
+ -complete=buffer buffer names
++ -complete=behave :behave suboptions
+ -complete=color color schemes
+ -complete=command Ex command (and arguments)
+ -complete=compiler compilers
+***************
+*** 1216,1221 ****
+--- 1234,1240 ----
+ -complete=function function name
+ -complete=help help subjects
+ -complete=highlight highlight groups
++ -complete=history :history suboptions
+ -complete=locale locale names (as output of locale -a)
+ -complete=mapping mapping name
+ -complete=menu menus
+*** ../vim-7.3.513/src/ex_docmd.c 2012-02-12 20:13:55.000000000 +0100
+--- src/ex_docmd.c 2012-04-30 18:33:27.000000000 +0200
+***************
+*** 3920,3927 ****
+--- 3920,3935 ----
+ #endif
+ case CMD_behave:
+ xp->xp_context = EXPAND_BEHAVE;
++ xp->xp_pattern = arg;
+ break;
+
++ #if defined(FEAT_CMDHIST)
++ case CMD_history:
++ xp->xp_context = EXPAND_HISTORY;
++ xp->xp_pattern = arg;
++ break;
++ #endif
++
+ #endif /* FEAT_CMDL_COMPL */
+
+ default:
+***************
+*** 5329,5334 ****
+--- 5337,5343 ----
+ } command_complete[] =
+ {
+ {EXPAND_AUGROUP, "augroup"},
++ {EXPAND_BEHAVE, "behave"},
+ {EXPAND_BUFFERS, "buffer"},
+ {EXPAND_COLORS, "color"},
+ {EXPAND_COMMANDS, "command"},
+***************
+*** 5350,5357 ****
+ {EXPAND_FUNCTIONS, "function"},
+ {EXPAND_HELP, "help"},
+ {EXPAND_HIGHLIGHT, "highlight"},
+ #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
+! && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
+ {EXPAND_LOCALES, "locale"},
+ #endif
+ {EXPAND_MAPPINGS, "mapping"},
+--- 5359,5369 ----
+ {EXPAND_FUNCTIONS, "function"},
+ {EXPAND_HELP, "help"},
+ {EXPAND_HIGHLIGHT, "highlight"},
++ #if defined(FEAT_CMDHIST)
++ {EXPAND_HISTORY, "history"},
++ #endif
+ #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
+! && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
+ {EXPAND_LOCALES, "locale"},
+ #endif
+ {EXPAND_MAPPINGS, "mapping"},
+*** ../vim-7.3.513/src/ex_getln.c 2012-03-07 19:16:49.000000000 +0100
+--- src/ex_getln.c 2012-04-30 18:36:04.000000000 +0200
+***************
+*** 25,31 ****
+ int cmdlen; /* number of chars in command line */
+ int cmdpos; /* current cursor position */
+ int cmdspos; /* cursor column on screen */
+! int cmdfirstc; /* ':', '/', '?', '=' or NUL */
+ int cmdindent; /* number of spaces before cmdline */
+ char_u *cmdprompt; /* message in front of cmdline */
+ int cmdattr; /* attributes for prompt */
+--- 25,31 ----
+ int cmdlen; /* number of chars in command line */
+ int cmdpos; /* current cursor position */
+ int cmdspos; /* cursor column on screen */
+! int cmdfirstc; /* ':', '/', '?', '=', '>' or NUL */
+ int cmdindent; /* number of spaces before cmdline */
+ char_u *cmdprompt; /* message in front of cmdline */
+ int cmdattr; /* attributes for prompt */
+***************
+*** 111,116 ****
+--- 111,119 ----
+ #ifdef FEAT_CMDL_COMPL
+ static int expand_shellcmd __ARGS((char_u *filepat, int *num_file, char_u ***file, int flagsarg));
+ static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname[]));
++ # ifdef FEAT_CMDHIST
++ static char_u *get_history_arg __ARGS((expand_T *xp, int idx));
++ # endif
+ # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
+ static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
+ static int ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file));
+***************
+*** 4628,4633 ****
+--- 4631,4639 ----
+ {
+ {EXPAND_COMMANDS, get_command_name, FALSE, TRUE},
+ {EXPAND_BEHAVE, get_behave_arg, TRUE, TRUE},
++ #ifdef FEAT_CMDHIST
++ {EXPAND_HISTORY, get_history_arg, TRUE, TRUE},
++ #endif
+ #ifdef FEAT_USR_CMDS
+ {EXPAND_USER_COMMANDS, get_user_commands, FALSE, TRUE},
+ {EXPAND_USER_CMD_FLAGS, get_user_cmd_flags, FALSE, TRUE},
+***************
+*** 5245,5250 ****
+--- 5251,5284 ----
+ NULL
+ };
+
++ #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
++ /*
++ * Function given to ExpandGeneric() to obtain the possible first
++ * arguments of the ":history command.
++ */
++ static char_u *
++ get_history_arg(xp, idx)
++ expand_T *xp UNUSED;
++ int idx;
++ {
++ static char_u compl[2] = { NUL, NUL };
++ char *short_names = ":=@>?/";
++ int short_names_count = STRLEN(short_names);
++ int history_name_count = sizeof(history_names) / sizeof(char *) - 1;
++
++ if (idx < short_names_count)
++ {
++ compl[0] = (char_u)short_names[idx];
++ return compl;
++ }
++ if (idx < short_names_count + history_name_count)
++ return (char_u *)history_names[idx - short_names_count];
++ if (idx == short_names_count + history_name_count)
++ return (char_u *)"all";
++ return NULL;
++ }
++ #endif
++
+ /*
+ * init_history() - Initialize the command line history.
+ * Also used to re-allocate the history when the size changes.
+*** ../vim-7.3.513/src/vim.h 2012-03-23 16:25:13.000000000 +0100
+--- src/vim.h 2012-04-30 18:30:00.000000000 +0200
+***************
+*** 781,786 ****
+--- 781,787 ----
+ #define EXPAND_FILES_IN_PATH 38
+ #define EXPAND_OWNSYNTAX 39
+ #define EXPAND_LOCALES 40
++ #define EXPAND_HISTORY 41
+
+ /* Values for exmode_active (0 is no exmode) */
+ #define EXMODE_NORMAL 1
+*** ../vim-7.3.513/src/version.c 2012-04-30 18:18:43.000000000 +0200
+--- src/version.c 2012-04-30 18:36:19.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 514,
+ /**/
+
+--
+You can be stopped by the police for biking over 65 miles per hour.
+You are not allowed to walk across a street on your hands.
+ [real standing laws in Connecticut, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.515 b/source/ap/vim/patches/7.3.515
new file mode 100644
index 000000000..dad6f617f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.515
@@ -0,0 +1,68 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.515
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.515
+Problem: 'wildignorecase' only applies to the last part of the path.
+Solution: Also ignore case for letters earlier in the path.
+Files: src/misc1.c
+
+
+*** ../vim-7.3.514/src/misc1.c 2012-04-09 20:42:20.000000000 +0200
+--- src/misc1.c 2012-04-30 21:00:18.000000000 +0200
+***************
+*** 9461,9466 ****
+--- 9461,9467 ----
+
+ /*
+ * Find the first part in the path name that contains a wildcard.
++ * When EW_ICASE is set every letter is considered to be a wildcard.
+ * Copy it into "buf", including the preceding characters.
+ */
+ p = buf;
+***************
+*** 9480,9486 ****
+ s = p + 1;
+ }
+ else if (path_end >= path + wildoff
+! && vim_strchr((char_u *)"*?[{~$", *path_end) != NULL)
+ e = p;
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+--- 9481,9492 ----
+ s = p + 1;
+ }
+ else if (path_end >= path + wildoff
+! && (vim_strchr((char_u *)"*?[{~$", *path_end) != NULL
+! #ifndef CASE_INSENSITIVE_FILENAME
+! || ((flags & EW_ICASE)
+! && isalpha(PTR2CHAR(path_end)))
+! #endif
+! ))
+ e = p;
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+*** ../vim-7.3.514/src/version.c 2012-04-30 18:48:38.000000000 +0200
+--- src/version.c 2012-04-30 21:05:10.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 515,
+ /**/
+
+--
+If an elephant is left tied to a parking meter, the parking fee has to be paid
+just as it would for a vehicle.
+ [real standing law in Florida, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.516 b/source/ap/vim/patches/7.3.516
new file mode 100644
index 000000000..d43be5a09
--- /dev/null
+++ b/source/ap/vim/patches/7.3.516
@@ -0,0 +1,94 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.516
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.516
+Problem: extend(o, o) may crash Vim.
+Solution: Fix crash and add test. (Thinca and Hirohito Higashi)
+Files: src/eval.c, src/testdir/test55.in, src/testdir/test55.ok
+
+
+*** ../vim-7.3.515/src/eval.c 2012-04-30 17:35:44.000000000 +0200
+--- src/eval.c 2012-05-18 12:02:44.000000000 +0200
+***************
+*** 10191,10197 ****
+ EMSG2(_("E737: Key already exists: %s"), hi2->hi_key);
+ break;
+ }
+! else if (*action == 'f')
+ {
+ clear_tv(&di1->di_tv);
+ copy_tv(&HI2DI(hi2)->di_tv, &di1->di_tv);
+--- 10191,10197 ----
+ EMSG2(_("E737: Key already exists: %s"), hi2->hi_key);
+ break;
+ }
+! else if (*action == 'f' && HI2DI(hi2) != di1)
+ {
+ clear_tv(&di1->di_tv);
+ copy_tv(&HI2DI(hi2)->di_tv, &di1->di_tv);
+*** ../vim-7.3.515/src/testdir/test55.in 2010-11-10 20:31:24.000000000 +0100
+--- src/testdir/test55.in 2012-05-18 11:57:23.000000000 +0200
+***************
+*** 352,357 ****
+--- 352,375 ----
+ :let dict4copy = deepcopy(dict4)
+ :$put =(l == lcopy)
+ :$put =(dict4 == dict4copy)
++ :"
++ :" Pass the same List to extend()
++ :let l = [1, 2, 3, 4, 5]
++ :call extend(l, l)
++ :$put =string(l)
++ :"
++ :" Pass the same Dict to extend()
++ :let d = { 'a': {'b': 'B'}}
++ :call extend(d, d)
++ :$put =string(d)
++ :"
++ :" Pass the same Dict to extend() with "error"
++ :try
++ : call extend(d, d, "error")
++ :catch
++ : $put =v:exception[:15] . v:exception[-1:-1]
++ :endtry
++ :$put =string(d)
+ :endfun
+ :"
+ :call Test(1, 2, [3, 4], {5: 6}) " This may take a while
+*** ../vim-7.3.515/src/testdir/test55.ok 2010-11-10 20:31:24.000000000 +0100
+--- src/testdir/test55.ok 2012-05-18 11:57:01.000000000 +0200
+***************
+*** 111,113 ****
+--- 111,117 ----
+ 0
+ 1
+ 1
++ [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
++ {'a': {'b': 'B'}}
++ Vim(call):E737: a
++ {'a': {'b': 'B'}}
+*** ../vim-7.3.515/src/version.c 2012-04-30 21:09:38.000000000 +0200
+--- src/version.c 2012-05-18 12:04:54.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 516,
+ /**/
+
+--
+I used to wonder about the meaning of life. But I looked it
+up in the dictionary under "L" and there it was - the meaning
+of life. It was less than I expected. - Dogbert
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.517 b/source/ap/vim/patches/7.3.517
new file mode 100644
index 000000000..343693ba3
--- /dev/null
+++ b/source/ap/vim/patches/7.3.517
@@ -0,0 +1,60 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.517
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.517
+Problem: Crash when using "vipvv". (Alexandre Provencio)
+Solution: Don't let the text length become negative.
+Files: src/ops.c
+
+
+*** ../vim-7.3.516/src/ops.c 2012-04-20 13:46:02.000000000 +0200
+--- src/ops.c 2012-05-18 12:28:09.000000000 +0200
+***************
+*** 3042,3047 ****
+--- 3042,3049 ----
+ }
+ #endif
+ }
++ if (endcol == MAXCOL)
++ endcol = (colnr_T)STRLEN(p);
+ if (startcol > endcol
+ #ifdef FEAT_VIRTUALEDIT
+ || is_oneChar
+***************
+*** 3050,3057 ****
+ bd.textlen = 0;
+ else
+ {
+- if (endcol == MAXCOL)
+- endcol = (colnr_T)STRLEN(p);
+ bd.textlen = endcol - startcol + oap->inclusive;
+ }
+ bd.textstart = p + startcol;
+--- 3052,3057 ----
+*** ../vim-7.3.516/src/version.c 2012-05-18 12:06:58.000000000 +0200
+--- src/version.c 2012-05-18 12:48:51.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 517,
+ /**/
+
+--
+BODY: I'm not dead!
+CART DRIVER: 'Ere. He says he's not dead.
+LARGE MAN: Yes he is.
+BODY: I'm not!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.518 b/source/ap/vim/patches/7.3.518
new file mode 100644
index 000000000..89429f0c6
--- /dev/null
+++ b/source/ap/vim/patches/7.3.518
@@ -0,0 +1,57 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.518
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.518
+Problem: When 'encoding' is a double-byte encoding ":helptags" may not find
+ tags correctly.
+Solution: Use vim_strbyte() instead of vim_strchr(). (Yasuhiro Matsumoto)
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.3.517/src/ex_cmds.c 2012-04-25 17:32:14.000000000 +0200
+--- src/ex_cmds.c 2012-05-18 16:20:20.000000000 +0200
+***************
+*** 6535,6541 ****
+ p1 = vim_strchr(IObuff, '*'); /* find first '*' */
+ while (p1 != NULL)
+ {
+! p2 = vim_strchr(p1 + 1, '*'); /* find second '*' */
+ if (p2 != NULL && p2 > p1 + 1) /* skip "*" and "**" */
+ {
+ for (s = p1 + 1; s < p2; ++s)
+--- 6535,6544 ----
+ p1 = vim_strchr(IObuff, '*'); /* find first '*' */
+ while (p1 != NULL)
+ {
+! /* Use vim_strbyte() instead of vim_strchr() so that when
+! * 'encoding' is dbcs it still works, don't find '*' in the
+! * second byte. */
+! p2 = vim_strbyte(p1 + 1, '*'); /* find second '*' */
+ if (p2 != NULL && p2 > p1 + 1) /* skip "*" and "**" */
+ {
+ for (s = p1 + 1; s < p2; ++s)
+*** ../vim-7.3.517/src/version.c 2012-05-18 12:49:33.000000000 +0200
+--- src/version.c 2012-05-18 16:23:50.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 518,
+ /**/
+
+--
+If all you have is a hammer, everything looks like a nail.
+When your hammer is C++, everything begins to look like a thumb.
+ -- Steve Hoflich, comp.lang.c++
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.519 b/source/ap/vim/patches/7.3.519
new file mode 100644
index 000000000..846cea6b5
--- /dev/null
+++ b/source/ap/vim/patches/7.3.519
@@ -0,0 +1,64 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.519
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.519
+Problem: When completefunction returns it cannot indicate end of completion
+ mode.
+Solution: Recognize completefunction returning -3. (Mtsushita Shougo)
+Files: src/edit.c
+
+
+*** ../vim-7.3.518/src/edit.c 2012-04-30 18:18:43.000000000 +0200
+--- src/edit.c 2012-05-18 16:35:06.000000000 +0200
+***************
+*** 5205,5213 ****
+ }
+
+ /* Return value -2 means the user complete function wants to
+! * cancel the complete without an error. */
+ if (col == -2)
+ return FAIL;
+
+ /*
+ * Reset extended parameters of completion, when start new
+--- 5205,5221 ----
+ }
+
+ /* Return value -2 means the user complete function wants to
+! * cancel the complete without an error.
+! * Return value -3 does the same as -2 and leaves CTRL-X mode.*/
+ if (col == -2)
+ return FAIL;
++ if (col == -3)
++ {
++ ctrl_x_mode = 0;
++ edit_submode = NULL;
++ msg_clr_cmdline();
++ return FAIL;
++ }
+
+ /*
+ * Reset extended parameters of completion, when start new
+*** ../vim-7.3.518/src/version.c 2012-05-18 16:24:06.000000000 +0200
+--- src/version.c 2012-05-18 16:34:27.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 519,
+ /**/
+
+--
+Looking at Perl through Lisp glasses, Perl looks atrocious.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.520 b/source/ap/vim/patches/7.3.520
new file mode 100644
index 000000000..9e2da8d7b
--- /dev/null
+++ b/source/ap/vim/patches/7.3.520
@@ -0,0 +1,140 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.520
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.520
+Problem: Gvim starts up slow on Unbuntu 12.04.
+Solution: Move the call to gui_mch_init_check() to after fork(). (Yasuhiro
+ Matsumoto) Do check $DISPLAY being set.
+Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro
+
+
+*** ../vim-7.3.519/src/gui.c 2011-10-20 21:27:57.000000000 +0200
+--- src/gui.c 2012-05-18 16:53:14.000000000 +0200
+***************
+*** 270,275 ****
+--- 270,281 ----
+ }
+ /* Child */
+
++ #ifdef FEAT_GUI_GTK
++ /* Call gtk_init_check() here after fork(). See gui_init_check(). */
++ if (gui_mch_init_check() != OK)
++ exit(1);
++ #endif
++
+ # if defined(HAVE_SETSID) || defined(HAVE_SETPGID)
+ /*
+ * Change our process group. On some systems/shells a CTRL-C in the
+***************
+*** 430,436 ****
+--- 436,452 ----
+ #ifdef ALWAYS_USE_GUI
+ result = OK;
+ #else
++ # ifdef FEAT_GUI_GTK
++ /*
++ * Note: Don't call gtk_init_check() before fork, it will be called after
++ * the fork. When calling it before fork, it make vim hang for a while.
++ * See gui_do_fork().
++ * Use a simpler check if the GUI window can probably be opened.
++ */
++ result = gui.dofork ? gui_mch_early_init_check() : gui_mch_init_check();
++ # else
+ result = gui_mch_init_check();
++ # endif
+ #endif
+ return result;
+ }
+*** ../vim-7.3.519/src/gui_gtk_x11.c 2011-10-26 11:36:21.000000000 +0200
+--- src/gui_gtk_x11.c 2012-05-18 17:00:45.000000000 +0200
+***************
+*** 1414,1420 ****
+ }
+
+ /*
+! * Check if the GUI can be started. Called before gvimrc is sourced.
+ * Return OK or FAIL.
+ */
+ int
+--- 1414,1442 ----
+ }
+
+ /*
+! * Check if the GUI can be started. Called before gvimrc is sourced and
+! * before fork().
+! * Return OK or FAIL.
+! */
+! int
+! gui_mch_early_init_check(void)
+! {
+! char_u *p;
+!
+! /* Guess that when $DISPLAY isn't set the GUI can't start. */
+! p = mch_getenv((char_u *)"DISPLAY");
+! if (p == NULL || *p == NUL)
+! {
+! gui.dying = TRUE;
+! EMSG(_((char *)e_opendisp));
+! return FAIL;
+! }
+! return OK;
+! }
+!
+! /*
+! * Check if the GUI can be started. Called before gvimrc is sourced but after
+! * fork().
+ * Return OK or FAIL.
+ */
+ int
+***************
+*** 3050,3056 ****
+
+ for (i = 0; i < (int)N_SELECTION_TARGETS; ++i)
+ {
+! /* OpenOffice tries to use TARGET_HTML and fails when it doesn't
+ * return something, instead of trying another target. Therefore only
+ * offer TARGET_HTML when it works. */
+ if (!clip_html && selection_targets[i].info == TARGET_HTML)
+--- 3072,3078 ----
+
+ for (i = 0; i < (int)N_SELECTION_TARGETS; ++i)
+ {
+! /* OpenOffice tries to use TARGET_HTML and fails when we don't
+ * return something, instead of trying another target. Therefore only
+ * offer TARGET_HTML when it works. */
+ if (!clip_html && selection_targets[i].info == TARGET_HTML)
+*** ../vim-7.3.519/src/proto/gui_gtk_x11.pro 2011-08-10 17:44:41.000000000 +0200
+--- src/proto/gui_gtk_x11.pro 2012-05-18 16:54:28.000000000 +0200
+***************
+*** 4,9 ****
+--- 4,10 ----
+ void gui_mch_set_blinking __ARGS((long waittime, long on, long off));
+ void gui_mch_stop_blink __ARGS((void));
+ void gui_mch_start_blink __ARGS((void));
++ int gui_mch_early_init_check __ARGS((void));
+ int gui_mch_init_check __ARGS((void));
+ void gui_mch_show_tabline __ARGS((int showit));
+ int gui_mch_showing_tabline __ARGS((void));
+*** ../vim-7.3.519/src/version.c 2012-05-18 16:35:17.000000000 +0200
+--- src/version.c 2012-05-18 16:45:30.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 520,
+ /**/
+
+--
+Bad programs can be written in any language.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.521 b/source/ap/vim/patches/7.3.521
new file mode 100644
index 000000000..efe7122b9
--- /dev/null
+++ b/source/ap/vim/patches/7.3.521
@@ -0,0 +1,129 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.521
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.521
+Problem: Using "z=" on a multi-byte character may cause a crash.
+Solution: Don't use strlen() on an int pointer.
+Files: src/spell.c
+
+
+*** ../vim-7.3.520/src/spell.c 2012-01-10 22:26:12.000000000 +0100
+--- src/spell.c 2012-05-18 18:01:58.000000000 +0200
+***************
+*** 14494,14506 ****
+ int p0 = -333;
+ int c0;
+ int did_white = FALSE;
+
+ /*
+ * Convert the multi-byte string to a wide-character string.
+ * Remove accents, if wanted. We actually remove all non-word characters.
+ * But keep white space.
+ */
+! n = 0;
+ for (s = inword; *s != NUL; )
+ {
+ t = s;
+--- 14494,14508 ----
+ int p0 = -333;
+ int c0;
+ int did_white = FALSE;
++ int wordlen;
++
+
+ /*
+ * Convert the multi-byte string to a wide-character string.
+ * Remove accents, if wanted. We actually remove all non-word characters.
+ * But keep white space.
+ */
+! wordlen = 0;
+ for (s = inword; *s != NUL; )
+ {
+ t = s;
+***************
+*** 14521,14532 ****
+ continue;
+ }
+ }
+! word[n++] = c;
+ }
+! word[n] = NUL;
+
+ /*
+! * This comes from Aspell phonet.cpp.
+ * Converted from C++ to C. Added support for multi-byte chars.
+ * Changed to keep spaces.
+ */
+--- 14523,14534 ----
+ continue;
+ }
+ }
+! word[wordlen++] = c;
+ }
+! word[wordlen] = NUL;
+
+ /*
+! * This algorithm comes from Aspell phonet.cpp.
+ * Converted from C++ to C. Added support for multi-byte chars.
+ * Changed to keep spaces.
+ */
+***************
+*** 14711,14717 ****
+ }
+ if (k > k0)
+ mch_memmove(word + i + k0, word + i + k,
+! sizeof(int) * (STRLEN(word + i + k) + 1));
+
+ /* new "actual letter" */
+ c = word[i];
+--- 14713,14719 ----
+ }
+ if (k > k0)
+ mch_memmove(word + i + k0, word + i + k,
+! sizeof(int) * (wordlen - (i + k) + 1));
+
+ /* new "actual letter" */
+ c = word[i];
+***************
+*** 14739,14745 ****
+ if (c != NUL)
+ wres[reslen++] = c;
+ mch_memmove(word, word + i + 1,
+! sizeof(int) * (STRLEN(word + i + 1) + 1));
+ i = 0;
+ z0 = 1;
+ }
+--- 14741,14747 ----
+ if (c != NUL)
+ wres[reslen++] = c;
+ mch_memmove(word, word + i + 1,
+! sizeof(int) * (wordlen - (i + 1) + 1));
+ i = 0;
+ z0 = 1;
+ }
+*** ../vim-7.3.520/src/version.c 2012-05-18 17:03:14.000000000 +0200
+--- src/version.c 2012-05-18 18:06:29.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 521,
+ /**/
+
+--
+OLD WOMAN: King of the WHO?
+ARTHUR: The Britons.
+OLD WOMAN: Who are the Britons?
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.522 b/source/ap/vim/patches/7.3.522
new file mode 100644
index 000000000..2f4d17ce7
--- /dev/null
+++ b/source/ap/vim/patches/7.3.522
@@ -0,0 +1,56 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.522
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.522
+Problem: Crash in vim_realloc() when using MEM_PROFILE.
+Solution: Avoid using a NULL argument. (Dominique Pelle)
+Files: src/eval.c
+
+
+*** ../vim-7.3.521/src/eval.c 2012-05-18 12:06:58.000000000 +0200
+--- src/eval.c 2012-05-18 18:19:25.000000000 +0200
+***************
+*** 14643,14649 ****
+ long growmin = (long)((p - start) * 2 + prevlen);
+ prevsize = grow50pc > growmin ? grow50pc : growmin;
+ }
+! if ((newprev = vim_realloc(prev, prevsize)) == NULL)
+ {
+ do_outofmem_msg((long_u)prevsize);
+ failed = TRUE;
+--- 14643,14651 ----
+ long growmin = (long)((p - start) * 2 + prevlen);
+ prevsize = grow50pc > growmin ? grow50pc : growmin;
+ }
+! newprev = prev == NULL ? alloc(prevsize)
+! : vim_realloc(prev, prevsize);
+! if (newprev == NULL)
+ {
+ do_outofmem_msg((long_u)prevsize);
+ failed = TRUE;
+*** ../vim-7.3.521/src/version.c 2012-05-18 18:07:57.000000000 +0200
+--- src/version.c 2012-05-18 18:33:36.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 522,
+ /**/
+
+--
+ARTHUR: ... and I am your king ....
+OLD WOMAN: Ooooh! I didn't know we had a king. I thought we were an
+ autonomous collective ...
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.523 b/source/ap/vim/patches/7.3.523
new file mode 100644
index 000000000..7eec3ea2f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.523
@@ -0,0 +1,103 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.523
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.523
+Problem: ":diffupdate" doesn't check for files changed elsewhere.
+Solution: Add the ! flag. (Christian Brabandt)
+Files: runtime/doc/diff.txt, src/diff.c, src/ex_cmds.h
+
+
+*** ../vim-7.3.522/runtime/doc/diff.txt 2010-08-15 21:57:16.000000000 +0200
+--- runtime/doc/diff.txt 2012-05-18 18:41:49.000000000 +0200
+***************
+*** 178,184 ****
+ nodiff" before hiding it.
+
+ *:diffu* *:diffupdate*
+! :diffu[pdate] Update the diff highlighting and folds.
+
+ Vim attempts to keep the differences updated when you make changes to the
+ text. This mostly takes care of inserted and deleted lines. Changes within a
+--- 178,184 ----
+ nodiff" before hiding it.
+
+ *:diffu* *:diffupdate*
+! :diffu[pdate][!] Update the diff highlighting and folds.
+
+ Vim attempts to keep the differences updated when you make changes to the
+ text. This mostly takes care of inserted and deleted lines. Changes within a
+***************
+*** 187,192 ****
+--- 187,195 ----
+
+ :diffupdate
+
++ If the ! is included Vim will check if the file was changed externally and
++ needs to be reloaded. It will prompt for each changed file, like `:checktime`
++ was used.
+
+ Vim will show filler lines for lines that are missing in one window but are
+ present in another. These lines were inserted in another file or deleted in
+*** ../vim-7.3.522/src/diff.c 2010-09-21 16:56:29.000000000 +0200
+--- src/diff.c 2012-05-18 18:45:09.000000000 +0200
+***************
+*** 783,788 ****
+--- 783,797 ----
+ goto theend;
+ }
+
++ /* :diffupdate! */
++ if (eap != NULL && eap->forceit)
++ for (idx_new = idx_orig; idx_new < DB_COUNT; ++idx_new)
++ {
++ buf = curtab->tp_diffbuf[idx_new];
++ if (buf_valid(buf))
++ buf_check_timestamp(buf, FALSE);
++ }
++
+ /* Write the first buffer to a tempfile. */
+ buf = curtab->tp_diffbuf[idx_orig];
+ if (diff_write(buf, tmp_orig) == FAIL)
+*** ../vim-7.3.522/src/ex_cmds.h 2012-02-13 00:01:38.000000000 +0100
+--- src/ex_cmds.h 2012-05-18 18:37:56.000000000 +0200
+***************
+*** 304,310 ****
+ EX(CMD_display, "display", ex_display,
+ EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN),
+ EX(CMD_diffupdate, "diffupdate", ex_diffupdate,
+! TRLBAR),
+ EX(CMD_diffget, "diffget", ex_diffgetput,
+ RANGE|EXTRA|TRLBAR|MODIFY),
+ EX(CMD_diffoff, "diffoff", ex_diffoff,
+--- 304,310 ----
+ EX(CMD_display, "display", ex_display,
+ EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN),
+ EX(CMD_diffupdate, "diffupdate", ex_diffupdate,
+! BANG|TRLBAR),
+ EX(CMD_diffget, "diffget", ex_diffgetput,
+ RANGE|EXTRA|TRLBAR|MODIFY),
+ EX(CMD_diffoff, "diffoff", ex_diffoff,
+*** ../vim-7.3.522/src/version.c 2012-05-18 18:34:15.000000000 +0200
+--- src/version.c 2012-05-18 18:39:13.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 523
+ /**/
+
+--
+"The future's already arrived - it's just not evenly distributed yet."
+ -- William Gibson
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.524 b/source/ap/vim/patches/7.3.524
new file mode 100644
index 000000000..80d7baf66
--- /dev/null
+++ b/source/ap/vim/patches/7.3.524
@@ -0,0 +1,46 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.524
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.524 (after 7.3.523)
+Problem: Missing comma.
+Solution: Add the comma.
+Files: src/version.c
+
+
+*** ../vim-7.3.523/src/version.c 2012-05-18 18:47:11.000000000 +0200
+--- src/version.c 2012-05-18 21:52:26.000000000 +0200
+***************
+*** 715,721 ****
+ static int included_patches[] =
+ { /* Add new patch number below this line */
+ /**/
+! 523
+ /**/
+ 522,
+ /**/
+--- 715,723 ----
+ static int included_patches[] =
+ { /* Add new patch number below this line */
+ /**/
+! 524,
+! /**/
+! 523,
+ /**/
+ 522,
+ /**/
+
+--
+DENNIS: You can't expect to wield supreme executive power just 'cause some
+ watery tart threw a sword at you!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.525 b/source/ap/vim/patches/7.3.525
new file mode 100644
index 000000000..c9741cbfc
--- /dev/null
+++ b/source/ap/vim/patches/7.3.525
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.525
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.525
+Problem: Compiler warning on 64 bit MS-Windows.
+Solution: Add type cast. (Mike Williams)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.3.524/src/ex_getln.c 2012-04-30 18:48:38.000000000 +0200
+--- src/ex_getln.c 2012-05-23 20:33:16.000000000 +0200
+***************
+*** 5263,5269 ****
+ {
+ static char_u compl[2] = { NUL, NUL };
+ char *short_names = ":=@>?/";
+! int short_names_count = STRLEN(short_names);
+ int history_name_count = sizeof(history_names) / sizeof(char *) - 1;
+
+ if (idx < short_names_count)
+--- 5263,5269 ----
+ {
+ static char_u compl[2] = { NUL, NUL };
+ char *short_names = ":=@>?/";
+! int short_names_count = (int)STRLEN(short_names);
+ int history_name_count = sizeof(history_names) / sizeof(char *) - 1;
+
+ if (idx < short_names_count)
+*** ../vim-7.3.524/src/version.c 2012-05-18 21:53:29.000000000 +0200
+--- src/version.c 2012-05-25 11:01:51.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 525,
+ /**/
+
+--
+For humans, honesty is a matter of degree. Engineers are always honest in
+matters of technology and human relationships. That's why it's a good idea
+to keep engineers away from customers, romantic interests, and other people
+who can't handle the truth.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.526 b/source/ap/vim/patches/7.3.526
new file mode 100644
index 000000000..036d401fd
--- /dev/null
+++ b/source/ap/vim/patches/7.3.526
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.526
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.526
+Problem: Confusing indenting for #ifdef.
+Solution: Remove and add indent. (Elias Diem)
+Files: src/normal.c
+
+
+*** ../vim-7.3.525/src/normal.c 2012-04-30 18:18:43.000000000 +0200
+--- src/normal.c 2012-05-23 20:35:13.000000000 +0200
+***************
+*** 29,37 ****
+ static void set_vcount_ca __ARGS((cmdarg_T *cap, int *set_prevcount));
+ #endif
+ static int
+! # ifdef __BORLANDC__
+! _RTLENTRYF
+! # endif
+ nv_compare __ARGS((const void *s1, const void *s2));
+ static int find_command __ARGS((int cmdchar));
+ static void op_colon __ARGS((oparg_T *oap));
+--- 29,37 ----
+ static void set_vcount_ca __ARGS((cmdarg_T *cap, int *set_prevcount));
+ #endif
+ static int
+! #ifdef __BORLANDC__
+! _RTLENTRYF
+! #endif
+ nv_compare __ARGS((const void *s1, const void *s2));
+ static int find_command __ARGS((int cmdchar));
+ static void op_colon __ARGS((oparg_T *oap));
+*** ../vim-7.3.525/src/version.c 2012-05-25 11:02:34.000000000 +0200
+--- src/version.c 2012-05-25 11:03:37.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 526,
+ /**/
+
+--
+While it's true that many normal people whould prefer not to _date_ an
+engineer, most normal people harbor an intense desire to _mate_ with them,
+thus producing engineerlike children who will have high-paying jobs long
+before losing their virginity.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.527 b/source/ap/vim/patches/7.3.527
new file mode 100644
index 000000000..0c6af2b0d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.527
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.527
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=latin1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.527
+Problem: Clang complains about non-ASCII characters in a string.
+Solution: Change to \x88 form. (Dominique Pelle)
+Files: src/charset.c
+
+
+*** ../vim-7.3.526/src/charset.c 2012-01-26 13:40:04.000000000 +0100
+--- src/charset.c 2012-05-25 11:49:58.000000000 +0200
+***************
+*** 1602,1611 ****
+ #define LATIN1LOWER 'l'
+ #define LATIN1UPPER 'U'
+
+- /* !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]%_'abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ */
+ static char_u latin1flags[257] = " UUUUUUUUUUUUUUUUUUUUUUUUUU llllllllllllllllllllllllll UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUllllllllllllllllllllllll llllllll";
+! static char_u latin1upper[257] = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ÷ØÙÚÛÜÝÞÿ";
+! static char_u latin1lower[257] = " !\"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿àáâãäåæçèéêëìíîïðñòóôõö×øùúûüýþßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ";
+
+ int
+ vim_islower(c)
+--- 1602,1610 ----
+ #define LATIN1LOWER 'l'
+ #define LATIN1UPPER 'U'
+
+ static char_u latin1flags[257] = " UUUUUUUUUUUUUUUUUUUUUUUUUU llllllllllllllllllllllllll UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUllllllllllllllllllllllll llllllll";
+! static char_u latin1upper[257] = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xf7\xd8\xd9\xda\xdb\xdc\xdd\xde\xff";
+! static char_u latin1lower[257] = " !\"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xd7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
+
+ int
+ vim_islower(c)
+*** ../vim-7.3.526/src/version.c 2012-05-25 11:04:34.000000000 +0200
+--- src/version.c 2012-05-25 11:52:06.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 527,
+ /**/
+
+--
+An alien life briefly visits earth. Just before departing it leaves a
+message in the dust on the back of a white van. The world is shocked
+and wants to know what it means. After months of studies the worlds
+best linguistic scientists are able to decipher the message: "Wash me!".
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.528 b/source/ap/vim/patches/7.3.528
new file mode 100644
index 000000000..41084ad4f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.528
@@ -0,0 +1,171 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.528
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.528
+Problem: Crash when closing last window in a tab. (Alex Efros)
+Solution: Use common code in close_last_window_tabpage(). (Christian
+ Brabandt)
+Files: src/window.c
+
+
+*** ../vim-7.3.527/src/window.c 2012-03-16 19:07:54.000000000 +0100
+--- src/window.c 2012-05-25 12:25:16.000000000 +0200
+***************
+*** 23,28 ****
+--- 23,29 ----
+ static void win_totop __ARGS((int size, int flags));
+ static void win_equal_rec __ARGS((win_T *next_curwin, int current, frame_T *topfr, int dir, int col, int row, int width, int height));
+ static int last_window __ARGS((void));
++ static int close_last_window_tabpage __ARGS((win_T *win, int free_buf, tabpage_T *prev_curtab));
+ static win_T *win_free_mem __ARGS((win_T *win, int *dirp, tabpage_T *tp));
+ static frame_T *win_altframe __ARGS((win_T *win, tabpage_T *tp));
+ static tabpage_T *alt_tabpage __ARGS((void));
+***************
+*** 2105,2110 ****
+--- 2106,2147 ----
+ }
+
+ /*
++ * Close the possibly last window in a tab page.
++ * Returns TRUE when the window was closed already.
++ */
++ static int
++ close_last_window_tabpage(win, free_buf, prev_curtab)
++ win_T *win;
++ int free_buf;
++ tabpage_T *prev_curtab;
++ {
++ if (firstwin == lastwin)
++ {
++ /*
++ * Closing the last window in a tab page. First go to another tab
++ * page and then close the window and the tab page. This avoids that
++ * curwin and curtab are invalid while we are freeing memory, they may
++ * be used in GUI events.
++ */
++ goto_tabpage_tp(alt_tabpage());
++ redraw_tabline = TRUE;
++
++ /* Safety check: Autocommands may have closed the window when jumping
++ * to the other tab page. */
++ if (valid_tabpage(prev_curtab) && prev_curtab->tp_firstwin == win)
++ {
++ int h = tabline_height();
++
++ win_close_othertab(win, free_buf, prev_curtab);
++ if (h != tabline_height())
++ shell_new_rows();
++ }
++ return TRUE;
++ }
++ return FALSE;
++ }
++
++ /*
+ * Close window "win". Only works for the current tab page.
+ * If "free_buf" is TRUE related buffer may be unloaded.
+ *
+***************
+*** 2143,2171 ****
+ }
+ #endif
+
+! /*
+! * When closing the last window in a tab page first go to another tab
+! * page and then close the window and the tab page. This avoids that
+! * curwin and curtab are not invalid while we are freeing memory, they may
+! * be used in GUI events.
+! */
+! if (firstwin == lastwin)
+! {
+! goto_tabpage_tp(alt_tabpage());
+! redraw_tabline = TRUE;
+!
+! /* Safety check: Autocommands may have closed the window when jumping
+! * to the other tab page. */
+! if (valid_tabpage(prev_curtab) && prev_curtab->tp_firstwin == win)
+! {
+! int h = tabline_height();
+!
+! win_close_othertab(win, free_buf, prev_curtab);
+! if (h != tabline_height())
+! shell_new_rows();
+! }
+! return;
+! }
+
+ /* When closing the help window, try restoring a snapshot after closing
+ * the window. Otherwise clear the snapshot, it's now invalid. */
+--- 2180,2190 ----
+ }
+ #endif
+
+! /* When closing the last window in a tab page first go to another tab page
+! * and then close the window and the tab page to avoid that curwin and
+! * curtab are invalid while we are freeing memory. */
+! if (close_last_window_tabpage(win, free_buf, prev_curtab))
+! return;
+
+ /* When closing the help window, try restoring a snapshot after closing
+ * the window. Otherwise clear the snapshot, it's now invalid. */
+***************
+*** 2225,2231 ****
+
+ /* Autocommands may have closed the window already, or closed the only
+ * other window or moved to another tab page. */
+! if (!win_valid(win) || last_window() || curtab != prev_curtab)
+ return;
+
+ /* Free the memory used for the window and get the window that received
+--- 2244,2251 ----
+
+ /* Autocommands may have closed the window already, or closed the only
+ * other window or moved to another tab page. */
+! if (!win_valid(win) || last_window() || curtab != prev_curtab
+! || close_last_window_tabpage(win, free_buf, prev_curtab))
+ return;
+
+ /* Free the memory used for the window and get the window that received
+***************
+*** 2310,2316 ****
+
+ /*
+ * Close window "win" in tab page "tp", which is not the current tab page.
+! * This may be the last window ih that tab page and result in closing the tab,
+ * thus "tp" may become invalid!
+ * Caller must check if buffer is hidden and whether the tabline needs to be
+ * updated.
+--- 2330,2336 ----
+
+ /*
+ * Close window "win" in tab page "tp", which is not the current tab page.
+! * This may be the last window in that tab page and result in closing the tab,
+ * thus "tp" may become invalid!
+ * Caller must check if buffer is hidden and whether the tabline needs to be
+ * updated.
+*** ../vim-7.3.527/src/version.c 2012-05-25 11:56:06.000000000 +0200
+--- src/version.c 2012-05-25 12:38:25.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 528,
+ /**/
+
+--
+For society, it's probably a good thing that engineers value function over
+appearance. For example, you wouldn't want engineers to build nuclear power
+plants that only _look_ like they would keep all the radiation inside.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.529 b/source/ap/vim/patches/7.3.529
new file mode 100644
index 000000000..386baf1fe
--- /dev/null
+++ b/source/ap/vim/patches/7.3.529
@@ -0,0 +1,81 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.529
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.529
+Problem: Using a count before "v" and "V" does not work (Kikyous)
+Solution: Make the count select that many characters or lines. (Christian
+ Brabandt)
+Files: src/normal.c
+
+
+*** ../vim-7.3.528/src/normal.c 2012-05-25 11:04:34.000000000 +0200
+--- src/normal.c 2012-05-25 13:12:06.000000000 +0200
+***************
+*** 7660,7672 ****
+ else /* start Visual mode */
+ {
+ check_visual_highlight();
+! if (cap->count0) /* use previously selected part */
+ {
+! if (resel_VIsual_mode == NUL) /* there is none */
+! {
+! beep_flush();
+! return;
+! }
+ VIsual = curwin->w_cursor;
+
+ VIsual_active = TRUE;
+--- 7660,7668 ----
+ else /* start Visual mode */
+ {
+ check_visual_highlight();
+! if (cap->count0 > 0 && resel_VIsual_mode != NUL)
+ {
+! /* use previously selected part */
+ VIsual = curwin->w_cursor;
+
+ VIsual_active = TRUE;
+***************
+*** 7725,7730 ****
+--- 7721,7736 ----
+ /* start Select mode when 'selectmode' contains "cmd" */
+ may_start_select('c');
+ n_start_visual_mode(cap->cmdchar);
++ if (VIsual_mode != 'V' && *p_sel == 'e')
++ ++cap->count1; /* include one more char */
++ if (cap->count0 > 0 && --cap->count1 > 0)
++ {
++ /* With a count select that many characters or lines. */
++ if (VIsual_mode == 'v' || VIsual_mode == Ctrl_V)
++ nv_right(cap);
++ else if (VIsual_mode == 'V')
++ nv_down(cap);
++ }
+ }
+ }
+ }
+*** ../vim-7.3.528/src/version.c 2012-05-25 12:38:57.000000000 +0200
+--- src/version.c 2012-05-25 12:59:58.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 529,
+ /**/
+
+--
+Normal people believe that if it ain't broke, don't fix it. Engineers believe
+that if it ain't broke, it doesn't have enough features yet.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.530 b/source/ap/vim/patches/7.3.530
new file mode 100644
index 000000000..216117ca2
--- /dev/null
+++ b/source/ap/vim/patches/7.3.530
@@ -0,0 +1,50 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.530
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.530 (after 7.3.520)
+Problem: Gvim does not work when 'guioptions' includes "f". (Davido)
+Solution: Call gui_mch_init_check() when running GUI in the foreground.
+ (Yasuhiro Matsumoto)
+Files: src/gui.c
+
+
+*** ../vim-7.3.529/src/gui.c 2012-05-18 17:03:13.000000000 +0200
+--- src/gui.c 2012-05-25 14:01:26.000000000 +0200
+***************
+*** 102,107 ****
+--- 102,111 ----
+ else
+ #endif
+ {
++ /* If there is 'f' in 'guioptions' and specify -g argument,
++ * gui_mch_init_check() was not called yet. */
++ if (gui_mch_init_check() != OK)
++ exit(1);
+ gui_attempt_start();
+ }
+
+*** ../vim-7.3.529/src/version.c 2012-05-25 13:12:33.000000000 +0200
+--- src/version.c 2012-05-25 14:05:46.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 530,
+ /**/
+
+--
+I think that you'll agree that engineers are very effective in their social
+interactions. It's the "normal" people who are nuts.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.531 b/source/ap/vim/patches/7.3.531
new file mode 100644
index 000000000..652bdb739
--- /dev/null
+++ b/source/ap/vim/patches/7.3.531
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.531
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.531 (after 7.3.530)
+Problem: GUI does not work on MS-Windows.
+Solution: Add the missing #ifdef. (Patrick Avery)
+Files: src/gui.c
+
+
+*** ../vim-7.3.530/src/gui.c 2012-05-25 14:06:18.000000000 +0200
+--- src/gui.c 2012-05-27 00:34:51.000000000 +0200
+***************
+*** 102,111 ****
+--- 102,113 ----
+ else
+ #endif
+ {
++ #ifdef FEAT_GUI_GTK
+ /* If there is 'f' in 'guioptions' and specify -g argument,
+ * gui_mch_init_check() was not called yet. */
+ if (gui_mch_init_check() != OK)
+ exit(1);
++ #endif
+ gui_attempt_start();
+ }
+
+*** ../vim-7.3.530/src/version.c 2012-05-25 14:06:18.000000000 +0200
+--- src/version.c 2012-05-27 00:37:33.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 531,
+ /**/
+
+--
+I learned the customs and mannerisms of engineers by observing them, much the
+way Jane Goodall learned about the great apes, but without the hassle of
+grooming.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.532 b/source/ap/vim/patches/7.3.532
new file mode 100644
index 000000000..071cab345
--- /dev/null
+++ b/source/ap/vim/patches/7.3.532
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.532
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.532
+Problem: Compiler warning from Clang.
+Solution: Use a different way to point inside a string. (Dominique Pelle)
+Files: src/syntax.c
+
+
+*** ../vim-7.3.531/src/syntax.c 2012-03-23 16:25:13.000000000 +0100
+--- src/syntax.c 2012-06-01 13:13:58.000000000 +0200
+***************
+*** 9476,9482 ****
+ int cnt;
+ int attr;
+ {
+! msg_puts_attr((char_u *)("N \bI \b! \b" + cnt / 11), attr);
+ msg_clr_eos();
+ out_flush();
+ ui_delay(cnt == 99 ? 40L : (long)cnt * 50L, FALSE);
+--- 9476,9482 ----
+ int cnt;
+ int attr;
+ {
+! msg_puts_attr((char_u *)&("N \bI \b! \b"[cnt / 11]), attr);
+ msg_clr_eos();
+ out_flush();
+ ui_delay(cnt == 99 ? 40L : (long)cnt * 50L, FALSE);
+*** ../vim-7.3.531/src/version.c 2012-05-27 00:37:45.000000000 +0200
+--- src/version.c 2012-06-01 13:14:51.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 532,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+8. You spend half of the plane trip with your laptop on your lap...and your
+ child in the overhead compartment.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.533 b/source/ap/vim/patches/7.3.533
new file mode 100644
index 000000000..1d71c8d18
--- /dev/null
+++ b/source/ap/vim/patches/7.3.533
@@ -0,0 +1,46 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.533
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.533
+Problem: Memory leak when writing undo file.
+Solution: Free the ACL. (Dominique Pelle)
+Files: src/undo.c
+
+
+*** ../vim-7.3.532/src/undo.c 2011-12-08 15:14:04.000000000 +0100
+--- src/undo.c 2012-06-01 13:38:42.000000000 +0200
+***************
+*** 1535,1540 ****
+--- 1535,1541 ----
+ /* For systems that support ACL: get the ACL from the original file. */
+ acl = mch_get_acl(buf->b_ffname);
+ mch_set_acl(file_name, acl);
++ mch_free_acl(acl);
+ }
+ #endif
+
+*** ../vim-7.3.532/src/version.c 2012-06-01 13:18:48.000000000 +0200
+--- src/version.c 2012-06-01 13:39:16.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 533,
+ /**/
+
+--
+"How is your new girlfriend?"
+"90-60-90 man!"
+"What, pale purple?"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.534 b/source/ap/vim/patches/7.3.534
new file mode 100644
index 000000000..618d6e4e1
--- /dev/null
+++ b/source/ap/vim/patches/7.3.534
@@ -0,0 +1,101 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.534
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.534 (after 7.3.461)
+Problem: When using an InsertCharPre autocommand autoindent fails.
+Solution: Proper handling of v:char. (Alexey Radkov)
+Files: src/edit.c
+
+
+*** ../vim-7.3.533/src/edit.c 2012-05-18 16:35:17.000000000 +0200
+--- src/edit.c 2012-06-01 14:41:06.000000000 +0200
+***************
+*** 10108,10129 ****
+ do_insert_char_pre(c)
+ int c;
+ {
+! char_u *res;
+
+ /* Return quickly when there is nothing to do. */
+ if (!has_insertcharpre())
+ return NULL;
+
+ /* Lock the text to avoid weird things from happening. */
+ ++textlock;
+! set_vim_var_char(c); /* set v:char */
+
+ if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL, FALSE, curbuf))
+! /* Get the new value of v:char. It may be empty or more than one
+! * character. */
+! res = vim_strsave(get_vim_var_str(VV_CHAR));
+! else
+! res = NULL;
+
+ set_vim_var_string(VV_CHAR, NULL, -1); /* clear v:char */
+ --textlock;
+--- 10108,10147 ----
+ do_insert_char_pre(c)
+ int c;
+ {
+! char_u *res;
+! #ifdef FEAT_MBYTE
+! char_u buf[MB_MAXBYTES + 1];
+! #else
+! char_u buf[2];
+! #endif
+
+ /* Return quickly when there is nothing to do. */
+ if (!has_insertcharpre())
+ return NULL;
+
++ #ifdef FEAT_MBYTE
++ if (has_mbyte)
++ buf[(*mb_char2bytes)(c, buf)] = NUL;
++ else
++ #endif
++ {
++ buf[0] = c;
++ buf[1] = NUL;
++ }
++
+ /* Lock the text to avoid weird things from happening. */
+ ++textlock;
+! set_vim_var_string(VV_CHAR, buf, -1); /* set v:char */
+
++ res = NULL;
+ if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL, FALSE, curbuf))
+! {
+! /* Get the value of v:char. It may be empty or more than one
+! * character. Only use it when changed, otherwise continue with the
+! * original character to avoid breaking autoindent. */
+! if (STRCMP(buf, get_vim_var_str(VV_CHAR)) != 0)
+! res = vim_strsave(get_vim_var_str(VV_CHAR));
+! }
+
+ set_vim_var_string(VV_CHAR, NULL, -1); /* clear v:char */
+ --textlock;
+*** ../vim-7.3.533/src/version.c 2012-06-01 13:46:06.000000000 +0200
+--- src/version.c 2012-06-01 14:42:19.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 534,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+11. You find yourself typing "com" after every period when using a word
+ processor.com
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.535 b/source/ap/vim/patches/7.3.535
new file mode 100644
index 000000000..e7f0f8a9c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.535
@@ -0,0 +1,356 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.535
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.535
+Problem: Many #ifdefs for MB_MAXBYTES.
+Solution: Also define MB_MAXBYTES without the +multi_byte feature. Fix
+ places where the buffer didn't include space for a NUL byte.
+Files: src/arabic.c, src/edit.c, src/eval.c, src/getchar.c, src/mbyte.c,
+ src/misc1.c, src/screen.c, src/spell.c, src/vim.h
+
+
+*** ../vim-7.3.534/src/arabic.c 2010-08-15 21:57:28.000000000 +0200
+--- src/arabic.c 2012-06-01 14:59:37.000000000 +0200
+***************
+*** 1066,1072 ****
+
+ if (curr_c != c && ccp != NULL)
+ {
+! char_u buf[MB_MAXBYTES];
+
+ /* Update the first byte of the character. */
+ (*mb_char2bytes)(curr_c, buf);
+--- 1066,1072 ----
+
+ if (curr_c != c && ccp != NULL)
+ {
+! char_u buf[MB_MAXBYTES + 1];
+
+ /* Update the first byte of the character. */
+ (*mb_char2bytes)(curr_c, buf);
+*** ../vim-7.3.534/src/edit.c 2012-06-01 14:57:47.000000000 +0200
+--- src/edit.c 2012-06-01 15:01:49.000000000 +0200
+***************
+*** 1648,1658 ****
+ #define PC_STATUS_RIGHT 1 /* right halve of double-wide char */
+ #define PC_STATUS_LEFT 2 /* left halve of double-wide char */
+ #define PC_STATUS_SET 3 /* pc_bytes was filled */
+- #ifdef FEAT_MBYTE
+ static char_u pc_bytes[MB_MAXBYTES + 1]; /* saved bytes */
+- #else
+- static char_u pc_bytes[2]; /* saved bytes */
+- #endif
+ static int pc_attr;
+ static int pc_row;
+ static int pc_col;
+--- 1648,1654 ----
+***************
+*** 6819,6829 ****
+ char_u *s;
+
+ vim_free(last_insert);
+- #ifdef FEAT_MBYTE
+ last_insert = alloc(MB_MAXBYTES * 3 + 5);
+- #else
+- last_insert = alloc(6);
+- #endif
+ if (last_insert != NULL)
+ {
+ s = last_insert;
+--- 6815,6821 ----
+***************
+*** 6861,6867 ****
+ char_u *s;
+ {
+ #ifdef FEAT_MBYTE
+! char_u temp[MB_MAXBYTES];
+ int i;
+ int len;
+
+--- 6853,6859 ----
+ char_u *s;
+ {
+ #ifdef FEAT_MBYTE
+! char_u temp[MB_MAXBYTES + 1];
+ int i;
+ int len;
+
+***************
+*** 7423,7429 ****
+ int cc;
+ {
+ int n;
+! char_u buf[MB_MAXBYTES];
+ int i;
+ int c;
+
+--- 7415,7421 ----
+ int cc;
+ {
+ int n;
+! char_u buf[MB_MAXBYTES + 1];
+ int i;
+ int c;
+
+***************
+*** 10109,10119 ****
+ int c;
+ {
+ char_u *res;
+- #ifdef FEAT_MBYTE
+ char_u buf[MB_MAXBYTES + 1];
+- #else
+- char_u buf[2];
+- #endif
+
+ /* Return quickly when there is nothing to do. */
+ if (!has_insertcharpre())
+--- 10101,10107 ----
+*** ../vim-7.3.534/src/eval.c 2012-05-18 18:34:15.000000000 +0200
+--- src/eval.c 2012-06-01 15:02:08.000000000 +0200
+***************
+*** 19170,19180 ****
+ set_vim_var_char(c)
+ int c;
+ {
+! #ifdef FEAT_MBYTE
+! char_u buf[MB_MAXBYTES];
+! #else
+! char_u buf[2];
+! #endif
+
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+--- 19170,19176 ----
+ set_vim_var_char(c)
+ int c;
+ {
+! char_u buf[MB_MAXBYTES + 1];
+
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+*** ../vim-7.3.534/src/getchar.c 2012-04-05 16:07:01.000000000 +0200
+--- src/getchar.c 2012-06-01 15:03:51.000000000 +0200
+***************
+*** 723,729 ****
+ int c;
+ #ifdef FEAT_MBYTE
+ int n;
+! char_u buf[MB_MAXBYTES];
+ int i;
+ #endif
+
+--- 723,729 ----
+ int c;
+ #ifdef FEAT_MBYTE
+ int n;
+! char_u buf[MB_MAXBYTES + 1];
+ int i;
+ #endif
+
+***************
+*** 1072,1078 ****
+ int c;
+ {
+ #ifdef FEAT_MBYTE
+! char_u buf[MB_MAXBYTES];
+ #else
+ char_u buf[4];
+ #endif
+--- 1072,1078 ----
+ int c;
+ {
+ #ifdef FEAT_MBYTE
+! char_u buf[MB_MAXBYTES + 1];
+ #else
+ char_u buf[4];
+ #endif
+***************
+*** 1547,1553 ****
+ int c, c2;
+ #ifdef FEAT_MBYTE
+ int n;
+! char_u buf[MB_MAXBYTES];
+ int i;
+ #endif
+
+--- 1547,1553 ----
+ int c, c2;
+ #ifdef FEAT_MBYTE
+ int n;
+! char_u buf[MB_MAXBYTES + 1];
+ int i;
+ #endif
+
+***************
+*** 4335,4345 ****
+ int scol; /* starting column of the abbr. */
+ int j;
+ char_u *s;
+- #ifdef FEAT_MBYTE
+ char_u tb[MB_MAXBYTES + 4];
+- #else
+- char_u tb[4];
+- #endif
+ mapblock_T *mp;
+ #ifdef FEAT_LOCALMAP
+ mapblock_T *mp2;
+--- 4335,4341 ----
+*** ../vim-7.3.534/src/mbyte.c 2012-03-07 19:38:52.000000000 +0100
+--- src/mbyte.c 2012-06-01 15:04:27.000000000 +0200
+***************
+*** 708,714 ****
+ */
+ n = (i & 0x80) ? 2 : 1;
+ # else
+! char buf[MB_MAXBYTES];
+ # ifdef X_LOCALE
+ # ifndef mblen
+ # define mblen _Xmblen
+--- 708,714 ----
+ */
+ n = (i & 0x80) ? 2 : 1;
+ # else
+! char buf[MB_MAXBYTES + 1];
+ # ifdef X_LOCALE
+ # ifndef mblen
+ # define mblen _Xmblen
+***************
+*** 1953,1959 ****
+ /*
+ * Convert the character at screen position "off" to a sequence of bytes.
+ * Includes the composing characters.
+! * "buf" must at least have the length MB_MAXBYTES.
+ * Only to be used when ScreenLinesUC[off] != 0.
+ * Returns the produced number of bytes.
+ */
+--- 1953,1959 ----
+ /*
+ * Convert the character at screen position "off" to a sequence of bytes.
+ * Includes the composing characters.
+! * "buf" must at least have the length MB_MAXBYTES + 1.
+ * Only to be used when ScreenLinesUC[off] != 0.
+ * Returns the produced number of bytes.
+ */
+*** ../vim-7.3.534/src/misc1.c 2012-04-30 21:09:38.000000000 +0200
+--- src/misc1.c 2012-06-01 15:04:56.000000000 +0200
+***************
+*** 1932,1938 ****
+ int c;
+ {
+ #if defined(FEAT_MBYTE) || defined(PROTO)
+! char_u buf[MB_MAXBYTES];
+ int n;
+
+ n = (*mb_char2bytes)(c, buf);
+--- 1932,1938 ----
+ int c;
+ {
+ #if defined(FEAT_MBYTE) || defined(PROTO)
+! char_u buf[MB_MAXBYTES + 1];
+ int n;
+
+ n = (*mb_char2bytes)(c, buf);
+*** ../vim-7.3.534/src/screen.c 2012-03-23 16:25:13.000000000 +0100
+--- src/screen.c 2012-06-01 15:06:03.000000000 +0200
+***************
+*** 6621,6636 ****
+ int row, col;
+ int attr;
+ {
+- #ifdef FEAT_MBYTE
+ char_u buf[MB_MAXBYTES + 1];
+
+! buf[(*mb_char2bytes)(c, buf)] = NUL;
+! #else
+! char_u buf[2];
+!
+! buf[0] = c;
+! buf[1] = NUL;
+ #endif
+ screen_puts(buf, row, col, attr);
+ }
+
+--- 6621,6637 ----
+ int row, col;
+ int attr;
+ {
+ char_u buf[MB_MAXBYTES + 1];
+
+! #ifdef FEAT_MBYTE
+! if (has_mbyte)
+! buf[(*mb_char2bytes)(c, buf)] = NUL;
+! else
+ #endif
++ {
++ buf[0] = c;
++ buf[1] = NUL;
++ }
+ screen_puts(buf, row, col, attr);
+ }
+
+*** ../vim-7.3.534/src/spell.c 2012-05-18 18:07:57.000000000 +0200
+--- src/spell.c 2012-06-01 15:06:30.000000000 +0200
+***************
+*** 13694,13700 ****
+ {
+ int m1, m2;
+ #ifdef FEAT_MBYTE
+! char_u buf[MB_MAXBYTES];
+ hashitem_T *hi;
+
+ if (c1 >= 256)
+--- 13694,13700 ----
+ {
+ int m1, m2;
+ #ifdef FEAT_MBYTE
+! char_u buf[MB_MAXBYTES + 1];
+ hashitem_T *hi;
+
+ if (c1 >= 256)
+*** ../vim-7.3.534/src/vim.h 2012-04-30 18:48:38.000000000 +0200
+--- src/vim.h 2012-06-01 14:59:28.000000000 +0200
+***************
+*** 1703,1708 ****
+--- 1703,1710 ----
+ * character of up to 6 bytes, or one 16-bit character of up to three bytes
+ * plus six following composing characters of three bytes each. */
+ # define MB_MAXBYTES 21
++ #else
++ # define MB_MAXBYTES 1
+ #endif
+
+ #if (defined(FEAT_PROFILE) || defined(FEAT_RELTIME)) && !defined(PROTO)
+***************
+*** 2017,2022 ****
+--- 2019,2025 ----
+ #pragma warning(disable : 4312)
+ #endif
+
++ /* Note: a NULL argument for vim_realloc() is not portable, don't use it. */
+ #if defined(MEM_PROFILE)
+ # define vim_realloc(ptr, size) mem_realloc((ptr), (size))
+ #else
+*** ../vim-7.3.534/src/version.c 2012-06-01 14:57:47.000000000 +0200
+--- src/version.c 2012-06-01 15:08:20.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 535,
+ /**/
+
+--
+Me? A skeptic? I trust you have proof.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.536 b/source/ap/vim/patches/7.3.536
new file mode 100644
index 000000000..e0c3f760f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.536
@@ -0,0 +1,73 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.536
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.536
+Problem: When spell checking the German sharp s is not seen as a word
+ character. (Aexl Bender)
+Solution: In utf_islower() return true for the sharp s. Note: also need
+ updated spell file for this to take effect.
+Files: src/mbyte.c
+
+
+*** ../vim-7.3.535/src/mbyte.c 2012-06-01 15:20:49.000000000 +0200
+--- src/mbyte.c 2012-06-01 16:50:41.000000000 +0200
+***************
+*** 2949,2955 ****
+ {
+ {0x61,0x7a,1,-32},
+ {0xb5,0xb5,-1,743},
+! {0xe0,0xf6,1,-32},
+ {0xf8,0xfe,1,-32},
+ {0xff,0xff,-1,121},
+ {0x101,0x12f,2,-1},
+--- 2949,2955 ----
+ {
+ {0x61,0x7a,1,-32},
+ {0xb5,0xb5,-1,743},
+! {0xe0,0xf6,1,-32}, /* 0xdf (German sharp s) is not upper-cased */
+ {0xf8,0xfe,1,-32},
+ {0xff,0xff,-1,121},
+ {0x101,0x12f,2,-1},
+***************
+*** 3129,3135 ****
+ utf_islower(a)
+ int a;
+ {
+! return (utf_toupper(a) != a);
+ }
+
+ /*
+--- 3129,3136 ----
+ utf_islower(a)
+ int a;
+ {
+! /* German sharp s is lower case but has no upper case equivalent. */
+! return (utf_toupper(a) != a) || a == 0xdf;
+ }
+
+ /*
+*** ../vim-7.3.535/src/version.c 2012-06-01 15:20:49.000000000 +0200
+--- src/version.c 2012-06-01 17:45:17.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 536,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+16. You step out of your room and realize that your parents have moved and
+ you don't have a clue when it happened.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.537 b/source/ap/vim/patches/7.3.537
new file mode 100644
index 000000000..76b41c8ad
--- /dev/null
+++ b/source/ap/vim/patches/7.3.537
@@ -0,0 +1,47 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.537
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.537
+Problem: Unecessary call to init_spell_chartab().
+Solution: Delete the call.
+Files: src/spell.c
+
+
+*** ../vim-7.3.536/src/spell.c 2012-06-01 15:20:49.000000000 +0200
+--- src/spell.c 2012-06-01 17:49:44.000000000 +0200
+***************
+*** 4721,4728 ****
+ int_wordlist = NULL;
+ }
+
+- init_spell_chartab();
+-
+ vim_free(repl_to);
+ repl_to = NULL;
+ vim_free(repl_from);
+--- 4721,4726 ----
+*** ../vim-7.3.536/src/version.c 2012-06-01 17:46:52.000000000 +0200
+--- src/version.c 2012-06-01 17:49:08.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 537,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+17. You turn on your intercom when leaving the room so you can hear if new
+ e-mail arrives.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.538 b/source/ap/vim/patches/7.3.538
new file mode 100644
index 000000000..947fa65bc
--- /dev/null
+++ b/source/ap/vim/patches/7.3.538
@@ -0,0 +1,321 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.538
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.538
+Problem: 'efm' does not handle Tabs in pointer lines.
+Solution: Add Tab support. Improve tests. (Lech Lorens)
+Files: src/quickfix.c, src/testdir/test10.in, src/testdir/test10.ok
+
+
+*** ../vim-7.3.537/src/quickfix.c 2012-04-25 18:57:17.000000000 +0200
+--- src/quickfix.c 2012-06-01 18:24:07.000000000 +0200
+***************
+*** 247,253 ****
+ {'t', "."},
+ {'m', ".\\+"},
+ {'r', ".*"},
+! {'p', "[- .]*"},
+ {'v', "\\d\\+"},
+ {'s', ".\\+"}
+ };
+--- 247,253 ----
+ {'t', "."},
+ {'m', ".\\+"},
+ {'r', ".*"},
+! {'p', "[- .]*"},
+ {'v', "\\d\\+"},
+ {'s', ".\\+"}
+ };
+***************
+*** 677,687 ****
+ }
+ if ((i = (int)fmt_ptr->addr[7]) > 0) /* %p */
+ {
+ if (regmatch.startp[i] == NULL || regmatch.endp[i] == NULL)
+ continue;
+! col = (int)(regmatch.endp[i] - regmatch.startp[i] + 1);
+! if (*((char_u *)regmatch.startp[i]) != TAB)
+! use_viscol = TRUE;
+ }
+ if ((i = (int)fmt_ptr->addr[8]) > 0) /* %v */
+ {
+--- 677,699 ----
+ }
+ if ((i = (int)fmt_ptr->addr[7]) > 0) /* %p */
+ {
++ char_u *match_ptr;
++
+ if (regmatch.startp[i] == NULL || regmatch.endp[i] == NULL)
+ continue;
+! col = 0;
+! for (match_ptr = regmatch.startp[i];
+! match_ptr != regmatch.endp[i]; ++match_ptr)
+! {
+! ++col;
+! if (*match_ptr == TAB)
+! {
+! col += 7;
+! col -= col % 8;
+! }
+! }
+! ++col;
+! use_viscol = TRUE;
+ }
+ if ((i = (int)fmt_ptr->addr[8]) > 0) /* %v */
+ {
+*** ../vim-7.3.537/src/testdir/test10.in 2011-08-10 18:36:49.000000000 +0200
+--- src/testdir/test10.in 2012-06-01 18:22:40.000000000 +0200
+***************
+*** 8,48 ****
+ :7/start of errorfile/,/end of errorfile/w! Xerrorfile1
+ :7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2
+ :/start of testfile/,/end of testfile/w! Xtestfile
+ :cf Xerrorfile2
+ :clast
+ :copen
+ :let a=w:quickfix_title
+ :wincmd p
+! gR=a 
+ :cf Xerrorfile1
+! rA
+ :cn
+! rB
+ :cn
+! rC
+ :cn
+! rD
+ :cn
+! rE
+ :cn
+ :wincmd w
+ :let a=w:quickfix_title
+ :wincmd p
+! gR=a 
+ :w! test.out " Write contents of this file
+ :qa!
+ ENDTEST
+
+ start of errorfile
+ "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set.
+! "Xtestfile", line 7 col 19; this is an error
+ gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c
+! Xtestfile:13: parse error before `asd'
+ make: *** [vim] Error 1
+! in file "Xtestfile" linenr 16: there is an error
+
+ 2 returned
+! "Xtestfile", linenr 19: yet another problem
+
+ Does anyone know what is the problem and how to correction it?
+ "Xtestfile", line 21 col 9: What is the title of the quickfix window?
+--- 8,88 ----
+ :7/start of errorfile/,/end of errorfile/w! Xerrorfile1
+ :7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2
+ :/start of testfile/,/end of testfile/w! Xtestfile
++ :set efm+==%f=\\,\ line\ %l%*\\D%v%*[^\ ]\ %m
++ :set efm^=%AError\ in\ \"%f\"\ at\ line\ %l:,%Z%p^,%C%m
+ :cf Xerrorfile2
+ :clast
+ :copen
+ :let a=w:quickfix_title
+ :wincmd p
+! lgR=a 
+ :cf Xerrorfile1
+! grA
+ :cn
+! gRLINE 6, COL 19
+ :cn
+! gRNO COLUMN SPECIFIED
+ :cn
+! gRAGAIN NO COLUMN
+ :cn
+! gRCOL 1
+ :cn
++ gRCOL 2
++ :cn
++ gRCOL 10
++ :cn
++ gRVCOL 10
++ :cn
++ grI
++ :cn
++ gR. SPACE POINTER
++ :cn
++ gR. DOT POINTER
++ :cn
++ gR. DASH POINTER
++ :cn
++ gR. TAB-SPACE POINTER
++ :clast
++ :cprev
++ :cprev
+ :wincmd w
+ :let a=w:quickfix_title
+ :wincmd p
+! lgR=a 
+ :w! test.out " Write contents of this file
+ :qa!
+ ENDTEST
+
+ start of errorfile
+ "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set.
+! "Xtestfile", line 6 col 19; this is an error
+ gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c
+! Xtestfile:9: parse error before `asd'
+ make: *** [vim] Error 1
+! in file "Xtestfile" linenr 10: there is an error
+
+ 2 returned
+! "Xtestfile", line 11 col 1; this is an error
+! "Xtestfile", line 12 col 2; this is another error
+! "Xtestfile", line 14:10; this is an error in column 10
+! =Xtestfile=, line 15:10; this is another error, but in vcol 10 this time
+! "Xtestfile", linenr 16: yet another problem
+! Error in "Xtestfile" at line 17:
+! x should be a dot
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17
+! ^
+! Error in "Xtestfile" at line 18:
+! x should be a dot
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18
+! .............^
+! Error in "Xtestfile" at line 19:
+! x should be a dot
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19
+! --------------^
+! Error in "Xtestfile" at line 20:
+! x should be a dot
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20
+! ^
+
+ Does anyone know what is the problem and how to correction it?
+ "Xtestfile", line 21 col 9: What is the title of the quickfix window?
+***************
+*** 50,74 ****
+ end of errorfile
+
+ start of testfile
+! line 2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 4 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 6 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 8 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 10 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 11 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 12 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 13 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 14 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 15 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 16 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 17 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 21 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 22 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ end of testfile
+--- 90,114 ----
+ end of errorfile
+
+ start of testfile
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 2
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 3
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 4
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 5
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 6
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 7
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 8
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 9
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 10
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 11
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 12
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 13
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 14
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 15
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 16
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 21
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 22
+ end of testfile
+*** ../vim-7.3.537/src/testdir/test10.ok 2011-08-10 18:36:49.000000000 +0200
+--- src/testdir/test10.ok 2012-06-01 18:22:40.000000000 +0200
+***************
+*** 1,23 ****
+ start of testfile
+! line 2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 4 xxxAxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 6 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 7 xxxxxxxxxxBxxxxxxxxxxxxxxxxxxx
+! line 8 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 10 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 11 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 12 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! Cine 13 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 14 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 15 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! Dine 16 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 17 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! Eine 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 21 :cf Xerrorfile1xxxxxxxxxxxxxxx
+! line 22 :cf Xerrorfile2xxxxxxxxxxxxxxx
+ end of testfile
+--- 1,23 ----
+ start of testfile
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 2
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 3
+! xxxxxxxxxxAxxxxxxxxxxxxxxxxxxx line 4
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 5
+! xxxxxxxxxxxxxxxxxLINE 6, COL 19 line 6
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 7
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 8
+! NO COLUMN SPECIFIEDxxxxxxxxxxx line 9
+! AGAIN NO COLUMNxxxxxxxxxxxxxxx line 10
+! COL 1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 11
+! COL 2xxxxxxxxxxxxxxxxxxxxxxxxx line 12
+! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 13
+! xxxxxxxxCOL 10xxxxxxxxxxxxxxxx line 14
+! xVCOL 10xxxxxxxxxxxxxxxxxxxxxx line 15
+! Ixxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 16
+! xxxx. SPACE POINTERxxxxxxxxxxx line 17
+! xxxxx. DOT POINTERxxxxxxxxxxxx line 18
+! xxxxxx. DASH POINTERxxxxxxxxxx line 19
+! xxxxxxx. TAB-SPACE POINTERxxxx line 20
+! xxxxxxxx:cf Xerrorfile1xxxxxxx line 21
+! xxxxxxxx:cf Xerrorfile2xxxxxxx line 22
+ end of testfile
+*** ../vim-7.3.537/src/version.c 2012-06-01 17:49:51.000000000 +0200
+--- src/version.c 2012-06-01 18:22:27.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 538,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+18. Your wife drapes a blond wig over your monitor to remind you of what she
+ looks like.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.539 b/source/ap/vim/patches/7.3.539
new file mode 100644
index 000000000..267c076d6
--- /dev/null
+++ b/source/ap/vim/patches/7.3.539
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.539
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.539
+Problem: Redrawing a character on the command line does not work properly
+ for multi-byte charactes.
+Solution: Count the number of bytes in a character. (Yukihiro Nakadaira)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.3.538/src/ex_getln.c 2012-05-25 11:02:34.000000000 +0200
+--- src/ex_getln.c 2012-06-06 11:50:37.000000000 +0200
+***************
+*** 2764,2769 ****
+--- 2764,2774 ----
+ msg_no_more = TRUE;
+ if (ccline.cmdlen == ccline.cmdpos)
+ msg_putchar(' ');
++ #ifdef FEAT_MBYTE
++ else if (has_mbyte)
++ draw_cmdline(ccline.cmdpos,
++ (*mb_ptr2len)(ccline.cmdbuff + ccline.cmdpos));
++ #endif
+ else
+ draw_cmdline(ccline.cmdpos, 1);
+ msg_no_more = FALSE;
+*** ../vim-7.3.538/src/version.c 2012-06-01 18:34:37.000000000 +0200
+--- src/version.c 2012-06-06 12:02:45.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 539,
+ /**/
+
+--
+If they don't keep on exercising their lips, he thought, their brains
+start working.
+ -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.540 b/source/ap/vim/patches/7.3.540
new file mode 100644
index 000000000..6793eb43a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.540
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.540
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.540
+Problem: Cursor is left on the text instead of the command line.
+Solution: Don't call setcursor() in command line mode.
+Files: src/getchar.c
+
+
+*** ../vim-7.3.539/src/getchar.c 2012-06-01 15:20:49.000000000 +0200
+--- src/getchar.c 2012-06-06 11:58:05.000000000 +0200
+***************
+*** 2819,2825 ****
+ edit_unputchar();
+ if (State & CMDLINE)
+ unputcmdline();
+! setcursor(); /* put cursor back where it belongs */
+ }
+
+ if (c < 0)
+--- 2819,2826 ----
+ edit_unputchar();
+ if (State & CMDLINE)
+ unputcmdline();
+! else
+! setcursor(); /* put cursor back where it belongs */
+ }
+
+ if (c < 0)
+*** ../vim-7.3.539/src/version.c 2012-06-06 12:02:57.000000000 +0200
+--- src/version.c 2012-06-06 12:05:22.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 540,
+ /**/
+
+--
+"Making it up? Why should I want to make anything up? Life's bad enough
+as it is without wanting to invent any more of it."
+ -- Marvin, the Paranoid Android in Douglas Adams'
+ "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.541 b/source/ap/vim/patches/7.3.541
new file mode 100644
index 000000000..133b82dad
--- /dev/null
+++ b/source/ap/vim/patches/7.3.541
@@ -0,0 +1,1090 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.541
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.541
+Problem: When joining lines comment leaders need to be removed manually.
+Solution: Add the 'j' flag to 'formatoptions'. (Lech Lorens)
+Files: runtime/doc/change.txt, src/edit.c, src/ex_docmd.c, src/misc1.c,
+ src/normal.c, src/ops.c, src/option.h, src/proto/misc1.pro,
+ src/proto/ops.pro, src/search.c, src/testdir/test29.in,
+ src/testdir/test29.ok
+
+
+*** ../vim-7.3.540/runtime/doc/change.txt 2011-05-05 14:26:37.000000000 +0200
+--- runtime/doc/change.txt 2012-06-06 13:05:04.000000000 +0200
+***************
+*** 1495,1500 ****
+--- 1522,1533 ----
+ characters. Overruled by the 'M' flag.
+ 1 Don't break a line after a one-letter word. It's broken before it
+ instead (if possible).
++ j Where it makes sense, remove a comment leader when joining lines. For
++ example, joining:
++ int i; // the index ~
++ // in the list ~
++ Becomes:
++ int i; // the index in the list ~
+
+
+ With 't' and 'c' you can specify when Vim performs auto-wrapping:
+*** ../vim-7.3.540/src/edit.c 2012-06-01 15:20:49.000000000 +0200
+--- src/edit.c 2012-06-06 13:00:29.000000000 +0200
+***************
+*** 5847,5853 ****
+ * Need to remove existing (middle) comment leader and insert end
+ * comment leader. First, check what comment leader we can find.
+ */
+! i = get_leader_len(line = ml_get_curline(), &p, FALSE);
+ if (i > 0 && vim_strchr(p, COM_MIDDLE) != NULL) /* Just checking */
+ {
+ /* Skip middle-comment string */
+--- 5847,5853 ----
+ * Need to remove existing (middle) comment leader and insert end
+ * comment leader. First, check what comment leader we can find.
+ */
+! i = get_leader_len(line = ml_get_curline(), &p, FALSE, TRUE);
+ if (i > 0 && vim_strchr(p, COM_MIDDLE) != NULL) /* Just checking */
+ {
+ /* Skip middle-comment string */
+***************
+*** 6085,6091 ****
+
+ /* Don't break until after the comment leader */
+ if (do_comments)
+! leader_len = get_leader_len(ml_get_curline(), NULL, FALSE);
+ else
+ leader_len = 0;
+
+--- 6085,6091 ----
+
+ /* Don't break until after the comment leader */
+ if (do_comments)
+! leader_len = get_leader_len(ml_get_curline(), NULL, FALSE, TRUE);
+ else
+ leader_len = 0;
+
+***************
+*** 6411,6417 ****
+ /* With the 'c' flag in 'formatoptions' and 't' missing: only format
+ * comments. */
+ if (has_format_option(FO_WRAP_COMS) && !has_format_option(FO_WRAP)
+! && get_leader_len(old, NULL, FALSE) == 0)
+ return;
+ #endif
+
+--- 6411,6417 ----
+ /* With the 'c' flag in 'formatoptions' and 't' missing: only format
+ * comments. */
+ if (has_format_option(FO_WRAP_COMS) && !has_format_option(FO_WRAP)
+! && get_leader_len(old, NULL, FALSE, TRUE) == 0)
+ return;
+ #endif
+
+***************
+*** 8565,8571 ****
+ {
+ temp = curwin->w_cursor.col;
+ if (!can_bs(BS_EOL) /* only if "eol" included */
+! || do_join(2, FALSE, TRUE) == FAIL)
+ vim_beep();
+ else
+ curwin->w_cursor.col = temp;
+--- 8565,8571 ----
+ {
+ temp = curwin->w_cursor.col;
+ if (!can_bs(BS_EOL) /* only if "eol" included */
+! || do_join(2, FALSE, TRUE, FALSE) == FAIL)
+ vim_beep();
+ else
+ curwin->w_cursor.col = temp;
+***************
+*** 8746,8752 ****
+ ptr[len - 1] = NUL;
+ }
+
+! (void)do_join(2, FALSE, FALSE);
+ if (temp == NUL && gchar_cursor() != NUL)
+ inc_cursor();
+ }
+--- 8746,8752 ----
+ ptr[len - 1] = NUL;
+ }
+
+! (void)do_join(2, FALSE, FALSE, FALSE);
+ if (temp == NUL && gchar_cursor() != NUL)
+ inc_cursor();
+ }
+*** ../vim-7.3.540/src/ex_docmd.c 2012-04-30 18:48:38.000000000 +0200
+--- src/ex_docmd.c 2012-06-06 13:00:29.000000000 +0200
+***************
+*** 8545,8551 ****
+ }
+ ++eap->line2;
+ }
+! (void)do_join(eap->line2 - eap->line1 + 1, !eap->forceit, TRUE);
+ beginline(BL_WHITE | BL_FIX);
+ ex_may_print(eap);
+ }
+--- 8545,8551 ----
+ }
+ ++eap->line2;
+ }
+! (void)do_join(eap->line2 - eap->line1 + 1, !eap->forceit, TRUE, TRUE);
+ beginline(BL_WHITE | BL_FIX);
+ ex_may_print(eap);
+ }
+*** ../vim-7.3.540/src/misc1.c 2012-06-01 15:20:49.000000000 +0200
+--- src/misc1.c 2012-06-06 13:27:32.000000000 +0200
+***************
+*** 671,677 ****
+ ptr = saved_line;
+ # ifdef FEAT_COMMENTS
+ if (flags & OPENLINE_DO_COM)
+! lead_len = get_leader_len(ptr, NULL, FALSE);
+ else
+ lead_len = 0;
+ # endif
+--- 671,677 ----
+ ptr = saved_line;
+ # ifdef FEAT_COMMENTS
+ if (flags & OPENLINE_DO_COM)
+! lead_len = get_leader_len(ptr, NULL, FALSE, TRUE);
+ else
+ lead_len = 0;
+ # endif
+***************
+*** 693,699 ****
+ }
+ # ifdef FEAT_COMMENTS
+ if (flags & OPENLINE_DO_COM)
+! lead_len = get_leader_len(ptr, NULL, FALSE);
+ else
+ lead_len = 0;
+ if (lead_len > 0)
+--- 693,699 ----
+ }
+ # ifdef FEAT_COMMENTS
+ if (flags & OPENLINE_DO_COM)
+! lead_len = get_leader_len(ptr, NULL, FALSE, TRUE);
+ else
+ lead_len = 0;
+ if (lead_len > 0)
+***************
+*** 836,842 ****
+ */
+ end_comment_pending = NUL;
+ if (flags & OPENLINE_DO_COM)
+! lead_len = get_leader_len(saved_line, &lead_flags, dir == BACKWARD);
+ else
+ lead_len = 0;
+ if (lead_len > 0)
+--- 836,842 ----
+ */
+ end_comment_pending = NUL;
+ if (flags & OPENLINE_DO_COM)
+! lead_len = get_leader_len(saved_line, &lead_flags, dir == BACKWARD, TRUE);
+ else
+ lead_len = 0;
+ if (lead_len > 0)
+***************
+*** 1548,1561 ****
+ * When "flags" is not NULL, it is set to point to the flags of the recognized
+ * comment leader.
+ * "backward" must be true for the "O" command.
+ */
+ int
+! get_leader_len(line, flags, backward)
+ char_u *line;
+ char_u **flags;
+ int backward;
+ {
+ int i, j;
+ int got_com = FALSE;
+ int found_one;
+ char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */
+--- 1548,1565 ----
+ * When "flags" is not NULL, it is set to point to the flags of the recognized
+ * comment leader.
+ * "backward" must be true for the "O" command.
++ * If "include_space" is set, include trailing whitespace while calculating the
++ * length.
+ */
+ int
+! get_leader_len(line, flags, backward, include_space)
+ char_u *line;
+ char_u **flags;
+ int backward;
++ int include_space;
+ {
+ int i, j;
++ int result;
+ int got_com = FALSE;
+ int found_one;
+ char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */
+***************
+*** 1565,1571 ****
+ char_u *prev_list;
+ char_u *saved_flags = NULL;
+
+! i = 0;
+ while (vim_iswhite(line[i])) /* leading white space is ignored */
+ ++i;
+
+--- 1569,1575 ----
+ char_u *prev_list;
+ char_u *saved_flags = NULL;
+
+! result = i = 0;
+ while (vim_iswhite(line[i])) /* leading white space is ignored */
+ ++i;
+
+***************
+*** 1668,1684 ****
+ if (!found_one)
+ break;
+
+ /* Include any trailing white space. */
+ while (vim_iswhite(line[i]))
+ ++i;
+
+ /* If this comment doesn't nest, stop here. */
+ got_com = TRUE;
+ if (vim_strchr(part_buf, COM_NEST) == NULL)
+ break;
+ }
+
+! return (got_com ? i : 0);
+ }
+ #endif
+
+--- 1672,1838 ----
+ if (!found_one)
+ break;
+
++ result = i;
++
+ /* Include any trailing white space. */
+ while (vim_iswhite(line[i]))
+ ++i;
+
++ if (include_space)
++ result = i;
++
+ /* If this comment doesn't nest, stop here. */
+ got_com = TRUE;
+ if (vim_strchr(part_buf, COM_NEST) == NULL)
+ break;
+ }
++ return result;
++ }
++
++ /*
++ * Return the offset at which the last comment in line starts. If there is no
++ * comment in the whole line, -1 is returned.
++ *
++ * When "flags" is not null, it is set to point to the flags describing the
++ * recognized comment leader.
++ */
++ int
++ get_last_leader_offset(line, flags)
++ char_u *line;
++ char_u **flags;
++ {
++ int result = -1;
++ int i, j;
++ int lower_check_bound = 0;
++ char_u *string;
++ char_u *com_leader;
++ char_u *com_flags;
++ char_u *list;
++ int found_one;
++ char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */
++
++ /*
++ * Repeat to match several nested comment strings.
++ */
++ i = (int)STRLEN(line);
++ while (--i >= lower_check_bound)
++ {
++ /*
++ * scan through the 'comments' option for a match
++ */
++ found_one = FALSE;
++ for (list = curbuf->b_p_com; *list; )
++ {
++ char_u *flags_save = list;
++
++ /*
++ * Get one option part into part_buf[]. Advance list to next one.
++ * put string at start of string.
++ */
++ (void)copy_option_part(&list, part_buf, COM_MAX_LEN, ",");
++ string = vim_strchr(part_buf, ':');
++ if (string == NULL) /* If everything is fine, this cannot actually
++ * happen. */
++ {
++ continue;
++ }
++ *string++ = NUL; /* Isolate flags from string. */
++ com_leader = string;
++
++ /*
++ * Line contents and string must match.
++ * When string starts with white space, must have some white space
++ * (but the amount does not need to match, there might be a mix of
++ * TABs and spaces).
++ */
++ if (vim_iswhite(string[0]))
++ {
++ if (i == 0 || !vim_iswhite(line[i - 1]))
++ continue;
++ while (vim_iswhite(string[0]))
++ ++string;
++ }
++ for (j = 0; string[j] != NUL && string[j] == line[i + j]; ++j)
++ /* do nothing */;
++ if (string[j] != NUL)
++ continue;
++
++ /*
++ * When 'b' flag used, there must be white space or an
++ * end-of-line after the string in the line.
++ */
++ if (vim_strchr(part_buf, COM_BLANK) != NULL
++ && !vim_iswhite(line[i + j]) && line[i + j] != NUL)
++ {
++ continue;
++ }
++
++ /*
++ * We have found a match, stop searching.
++ */
++ found_one = TRUE;
++
++ if (flags)
++ *flags = flags_save;
++ com_flags = flags_save;
++
++ break;
++ }
+
+! if (found_one)
+! {
+! char_u part_buf2[COM_MAX_LEN]; /* buffer for one option part */
+! int len1, len2, off;
+!
+! result = i;
+! /*
+! * If this comment nests, continue searching.
+! */
+! if (vim_strchr(part_buf, COM_NEST) != NULL)
+! continue;
+!
+! lower_check_bound = i;
+!
+! /* Let's verify whether the comment leader found is a substring
+! * of other comment leaders. If it is, let's adjust the
+! * lower_check_bound so that we make sure that we have determined
+! * the comment leader correctly.
+! */
+!
+! while (vim_iswhite(*com_leader))
+! ++com_leader;
+! len1 = (int)STRLEN(com_leader);
+!
+! for (list = curbuf->b_p_com; *list; )
+! {
+! char_u *flags_save = list;
+!
+! (void)copy_option_part(&list, part_buf2, COM_MAX_LEN, ",");
+! if (flags_save == com_flags)
+! continue;
+! string = vim_strchr(part_buf2, ':');
+! ++string;
+! while (vim_iswhite(*string))
+! ++string;
+! len2 = (int)STRLEN(string);
+! if (len2 == 0)
+! continue;
+!
+! /* Now we have to verify whether string ends with a substring
+! * beginning the com_leader. */
+! for (off = (len2 > i ? i : len2); off > 0 && off + len1 > len2;)
+! {
+! --off;
+! if (!STRNCMP(string + off, com_leader, len2 - off))
+! {
+! if (i - off < lower_check_bound)
+! lower_check_bound = i - off;
+! }
+! }
+! }
+! }
+! }
+! return result;
+ }
+ #endif
+
+*** ../vim-7.3.540/src/normal.c 2012-05-25 13:12:33.000000000 +0200
+--- src/normal.c 2012-06-06 13:00:29.000000000 +0200
+***************
+*** 1968,1974 ****
+ beep_flush();
+ else
+ {
+! (void)do_join(oap->line_count, oap->op_type == OP_JOIN, TRUE);
+ auto_format(FALSE, TRUE);
+ }
+ break;
+--- 1968,1974 ----
+ beep_flush();
+ else
+ {
+! (void)do_join(oap->line_count, oap->op_type == OP_JOIN, TRUE, TRUE);
+ auto_format(FALSE, TRUE);
+ }
+ break;
+***************
+*** 4426,4432 ****
+ break;
+ }
+ #ifdef FEAT_COMMENTS
+! if (get_leader_len(ml_get_curline(), NULL, FALSE) > 0)
+ {
+ /* Ignore this line, continue at start of next line. */
+ ++curwin->w_cursor.lnum;
+--- 4426,4432 ----
+ break;
+ }
+ #ifdef FEAT_COMMENTS
+! if (get_leader_len(ml_get_curline(), NULL, FALSE, TRUE) > 0)
+ {
+ /* Ignore this line, continue at start of next line. */
+ ++curwin->w_cursor.lnum;
+***************
+*** 9324,9330 ****
+ {
+ prep_redo(cap->oap->regname, cap->count0,
+ NUL, cap->cmdchar, NUL, NUL, cap->nchar);
+! (void)do_join(cap->count0, cap->nchar == NUL, TRUE);
+ }
+ }
+ }
+--- 9324,9330 ----
+ {
+ prep_redo(cap->oap->regname, cap->count0,
+ NUL, cap->cmdchar, NUL, NUL, cap->nchar);
+! (void)do_join(cap->count0, cap->nchar == NUL, TRUE, TRUE);
+ }
+ }
+ }
+*** ../vim-7.3.540/src/ops.c 2012-05-18 12:49:33.000000000 +0200
+--- src/ops.c 2012-06-06 15:43:31.000000000 +0200
+***************
+*** 112,117 ****
+--- 112,120 ----
+ # endif
+ #endif
+ static void dis_msg __ARGS((char_u *p, int skip_esc));
++ #if defined(FEAT_COMMENTS) || defined(PROTO)
++ static char_u *skip_comment __ARGS((char_u *line, int process, int include_space, int *is_comment));
++ #endif
+ #ifdef FEAT_VISUAL
+ static void block_prep __ARGS((oparg_T *oap, struct block_def *, linenr_T, int));
+ #endif
+***************
+*** 1987,1993 ****
+ curwin->w_cursor = curpos; /* restore curwin->w_cursor */
+ }
+ if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
+! (void)do_join(2, FALSE, FALSE);
+ }
+ }
+
+--- 1990,1996 ----
+ curwin->w_cursor = curpos; /* restore curwin->w_cursor */
+ }
+ if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
+! (void)do_join(2, FALSE, FALSE, FALSE);
+ }
+ }
+
+***************
+*** 4197,4213 ****
+ ui_breakcheck();
+ }
+
+ /*
+ * Join 'count' lines (minimal 2) at cursor position.
+ * When "save_undo" is TRUE save lines for undo first.
+ *
+ * return FAIL for failure, OK otherwise
+ */
+ int
+! do_join(count, insert_space, save_undo)
+ long count;
+ int insert_space;
+ int save_undo;
+ {
+ char_u *curr = NULL;
+ char_u *curr_start = NULL;
+--- 4200,4297 ----
+ ui_breakcheck();
+ }
+
++ #if defined(FEAT_COMMENTS) || defined(PROTO)
++ /*
++ * If "process" is TRUE and the line begins with a comment leader (possibly
++ * after some white space), return a pointer to the text after it. Put a boolean
++ * value indicating whether the line ends with an unclosed comment in
++ * "is_comment".
++ * line - line to be processed,
++ * process - if FALSE, will only check whether the line ends with an unclosed
++ * comment,
++ * include_space - whether to also skip space following the comment leader,
++ * is_comment - will indicate whether the current line ends with an unclosed
++ * comment.
++ */
++ static char_u *
++ skip_comment(line, process, include_space, is_comment)
++ char_u *line;
++ int process;
++ int include_space;
++ int *is_comment;
++ {
++ char_u *comment_flags = NULL;
++ int lead_len;
++ int leader_offset = get_last_leader_offset(line, &comment_flags);
++
++ *is_comment = FALSE;
++ if (leader_offset != -1)
++ {
++ /* Let's check whether the line ends with an unclosed comment.
++ * If the last comment leader has COM_END in flags, there's no comment.
++ */
++ while (*comment_flags)
++ {
++ if (*comment_flags == COM_END
++ || *comment_flags == ':')
++ break;
++ ++comment_flags;
++ }
++ if (*comment_flags != COM_END)
++ *is_comment = TRUE;
++ }
++
++ if (process == FALSE)
++ return line;
++
++ lead_len = get_leader_len(line, &comment_flags, FALSE, include_space);
++
++ if (lead_len == 0)
++ return line;
++
++ /* Find:
++ * - COM_START,
++ * - COM_END,
++ * - colon,
++ * whichever comes first.
++ */
++ while (*comment_flags)
++ {
++ if (*comment_flags == COM_START
++ || *comment_flags == COM_END
++ || *comment_flags == ':')
++ {
++ break;
++ }
++ ++comment_flags;
++ }
++
++ /* If we found a colon, it means that we are not processing a line
++ * starting with an opening or a closing part of a three-part
++ * comment. That's good, because we don't want to remove those as
++ * this would be annoying.
++ */
++ if (*comment_flags == ':' || *comment_flags == NUL)
++ line += lead_len;
++
++ return line;
++ }
++ #endif
++
+ /*
+ * Join 'count' lines (minimal 2) at cursor position.
+ * When "save_undo" is TRUE save lines for undo first.
++ * Set "use_formatoptions" to FALSE when e.g. processing
++ * backspace and comment leaders should not be removed.
+ *
+ * return FAIL for failure, OK otherwise
+ */
+ int
+! do_join(count, insert_space, save_undo, use_formatoptions)
+ long count;
+ int insert_space;
+ int save_undo;
++ int use_formatoptions UNUSED;
+ {
+ char_u *curr = NULL;
+ char_u *curr_start = NULL;
+***************
+*** 4221,4226 ****
+--- 4305,4317 ----
+ linenr_T t;
+ colnr_T col = 0;
+ int ret = OK;
++ #if defined(FEAT_COMMENTS) || defined(PROTO)
++ int *comments;
++ int remove_comments = (use_formatoptions == TRUE)
++ && has_format_option(FO_REMOVE_COMS);
++ int prev_was_comment;
++ #endif
++
+
+ if (save_undo && u_save((linenr_T)(curwin->w_cursor.lnum - 1),
+ (linenr_T)(curwin->w_cursor.lnum + count)) == FAIL)
+***************
+*** 4232,4237 ****
+--- 4323,4339 ----
+ spaces = lalloc_clear((long_u)count, TRUE);
+ if (spaces == NULL)
+ return FAIL;
++ #if defined(FEAT_COMMENTS) || defined(PROTO)
++ if (remove_comments)
++ {
++ comments = (int *)lalloc_clear((long_u)count * sizeof(int), TRUE);
++ if (comments == NULL)
++ {
++ vim_free(spaces);
++ return FAIL;
++ }
++ }
++ #endif
+
+ /*
+ * Don't move anything, just compute the final line length
+***************
+*** 4240,4245 ****
+--- 4342,4366 ----
+ for (t = 0; t < count; ++t)
+ {
+ curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t));
++ #if defined(FEAT_COMMENTS) || defined(PROTO)
++ if (remove_comments)
++ {
++ /* We don't want to remove the comment leader if the
++ * previous line is not a comment. */
++ if (t > 0 && prev_was_comment)
++ {
++
++ char_u *new_curr = skip_comment(curr, TRUE, insert_space,
++ &prev_was_comment);
++ comments[t] = new_curr - curr;
++ curr = new_curr;
++ }
++ else
++ curr = skip_comment(curr, FALSE, insert_space,
++ &prev_was_comment);
++ }
++ #endif
++
+ if (insert_space && t > 0)
+ {
+ curr = skipwhite(curr);
+***************
+*** 4327,4332 ****
+--- 4448,4457 ----
+ if (t == 0)
+ break;
+ curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t - 1));
++ #if defined(FEAT_COMMENTS) || defined(PROTO)
++ if (remove_comments)
++ curr += comments[t - 1];
++ #endif
+ if (insert_space && t > 1)
+ curr = skipwhite(curr);
+ currsize = (int)STRLEN(curr);
+***************
+*** 4364,4369 ****
+--- 4489,4498 ----
+
+ theend:
+ vim_free(spaces);
++ #if defined(FEAT_COMMENTS) || defined(PROTO)
++ if (remove_comments)
++ vim_free(comments);
++ #endif
+ return ret;
+ }
+
+***************
+*** 4788,4794 ****
+ (long)-next_leader_len);
+ #endif
+ curwin->w_cursor.lnum--;
+! if (do_join(2, TRUE, FALSE) == FAIL)
+ {
+ beep_flush();
+ break;
+--- 4917,4923 ----
+ (long)-next_leader_len);
+ #endif
+ curwin->w_cursor.lnum--;
+! if (do_join(2, TRUE, FALSE, FALSE) == FAIL)
+ {
+ beep_flush();
+ break;
+***************
+*** 4844,4850 ****
+
+ ptr = ml_get(lnum);
+ if (do_comments)
+! *leader_len = get_leader_len(ptr, leader_flags, FALSE);
+ else
+ *leader_len = 0;
+
+--- 4973,4979 ----
+
+ ptr = ml_get(lnum);
+ if (do_comments)
+! *leader_len = get_leader_len(ptr, leader_flags, FALSE, TRUE);
+ else
+ *leader_len = 0;
+
+*** ../vim-7.3.540/src/option.h 2012-02-20 22:18:22.000000000 +0100
+--- src/option.h 2012-06-06 13:00:29.000000000 +0200
+***************
+*** 104,113 ****
+ #define FO_ONE_LETTER '1'
+ #define FO_WHITE_PAR 'w' /* trailing white space continues paragr. */
+ #define FO_AUTO 'a' /* automatic formatting */
+
+ #define DFLT_FO_VI "vt"
+ #define DFLT_FO_VIM "tcq"
+! #define FO_ALL "tcroq2vlb1mMBn,aw" /* for do_set() */
+
+ /* characters for the p_cpo option: */
+ #define CPO_ALTREAD 'a' /* ":read" sets alternate file name */
+--- 104,114 ----
+ #define FO_ONE_LETTER '1'
+ #define FO_WHITE_PAR 'w' /* trailing white space continues paragr. */
+ #define FO_AUTO 'a' /* automatic formatting */
++ #define FO_REMOVE_COMS 'j' /* remove comment leaders when joining lines */
+
+ #define DFLT_FO_VI "vt"
+ #define DFLT_FO_VIM "tcq"
+! #define FO_ALL "tcroq2vlb1mMBn,awj" /* for do_set() */
+
+ /* characters for the p_cpo option: */
+ #define CPO_ALTREAD 'a' /* ":read" sets alternate file name */
+*** ../vim-7.3.540/src/proto/misc1.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/misc1.pro 2012-06-06 13:00:29.000000000 +0200
+***************
+*** 6,12 ****
+ int set_indent __ARGS((int size, int flags));
+ int get_number_indent __ARGS((linenr_T lnum));
+ int open_line __ARGS((int dir, int flags, int old_indent));
+! int get_leader_len __ARGS((char_u *line, char_u **flags, int backward));
+ int plines __ARGS((linenr_T lnum));
+ int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight));
+ int plines_nofill __ARGS((linenr_T lnum));
+--- 6,13 ----
+ int set_indent __ARGS((int size, int flags));
+ int get_number_indent __ARGS((linenr_T lnum));
+ int open_line __ARGS((int dir, int flags, int old_indent));
+! int get_leader_len __ARGS((char_u *line, char_u **flags, int backward, int do_skip_space));
+! int get_last_leader_offset __ARGS((char_u *line, char_u **flags));
+ int plines __ARGS((linenr_T lnum));
+ int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight));
+ int plines_nofill __ARGS((linenr_T lnum));
+*** ../vim-7.3.540/src/proto/ops.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/ops.pro 2012-06-06 13:00:29.000000000 +0200
+***************
+*** 36,42 ****
+ int preprocs_left __ARGS((void));
+ int get_register_name __ARGS((int num));
+ void ex_display __ARGS((exarg_T *eap));
+! int do_join __ARGS((long count, int insert_space, int save_undo));
+ void op_format __ARGS((oparg_T *oap, int keep_cursor));
+ void op_formatexpr __ARGS((oparg_T *oap));
+ int fex_format __ARGS((linenr_T lnum, long count, int c));
+--- 36,42 ----
+ int preprocs_left __ARGS((void));
+ int get_register_name __ARGS((int num));
+ void ex_display __ARGS((exarg_T *eap));
+! int do_join __ARGS((long count, int insert_space, int save_undo, int use_formatoptions));
+ void op_format __ARGS((oparg_T *oap, int keep_cursor));
+ void op_formatexpr __ARGS((oparg_T *oap));
+ int fex_format __ARGS((linenr_T lnum, long count, int c));
+*** ../vim-7.3.540/src/search.c 2012-02-04 23:34:57.000000000 +0100
+--- src/search.c 2012-06-06 13:00:29.000000000 +0200
+***************
+*** 1548,1554 ****
+ int len;
+ int stop = TRUE;
+ #ifdef FEAT_MBYTE
+! static char_u bytes[MB_MAXBYTES];
+ static int bytelen = 1; /* >1 for multi-byte char */
+ #endif
+
+--- 1548,1554 ----
+ int len;
+ int stop = TRUE;
+ #ifdef FEAT_MBYTE
+! static char_u bytes[MB_MAXBYTES + 1];
+ static int bytelen = 1; /* >1 for multi-byte char */
+ #endif
+
+***************
+*** 4901,4907 ****
+ #ifdef FEAT_COMMENTS
+ if ((*line != '#' ||
+ STRNCMP(skipwhite(line + 1), "define", 6) != 0)
+! && get_leader_len(line, NULL, FALSE))
+ matched = FALSE;
+
+ /*
+--- 4901,4907 ----
+ #ifdef FEAT_COMMENTS
+ if ((*line != '#' ||
+ STRNCMP(skipwhite(line + 1), "define", 6) != 0)
+! && get_leader_len(line, NULL, FALSE, TRUE))
+ matched = FALSE;
+
+ /*
+*** ../vim-7.3.540/src/testdir/test29.in 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test29.in 2012-06-06 15:44:38.000000000 +0200
+***************
+*** 4,19 ****
+ and with 'cpoptions' flag 'j' set or not
+
+ STARTTEST
+ :set nocompatible viminfo+=nviminfo
+ :set nojoinspaces
+ :set cpoptions-=j
+ /firstline/
+! j"tdGpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j
+ j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces
+ j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j
+ j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible
+! j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjdG:?firstline?+1,$w! test.out
+! :qa!
+ ENDTEST
+
+ firstline
+--- 4,20 ----
+ and with 'cpoptions' flag 'j' set or not
+
+ STARTTEST
++ :so small.vim
+ :set nocompatible viminfo+=nviminfo
+ :set nojoinspaces
+ :set cpoptions-=j
+ /firstline/
+! j"td/^STARTTEST/-1
+! PJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j
+ j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces
+ j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j
+ j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible
+! j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjd/STARTTEST/-2
+ ENDTEST
+
+ firstline
+***************
+*** 54,56 ****
+--- 55,181 ----
+ hjkl iop!
+ ert
+
++ STARTTEST
++ /^{/+1
++ :set comments=s1:/*,mb:*,ex:*/,://
++ :set nojoinspaces fo=j
++ :set backspace=eol,start
++ :.,+3join
++ j4J
++ :.,+2join
++ j3J
++ :.,+2join
++ j3J
++ :.,+2join
++ jj3J
++ ENDTEST
++
++ {
++
++ /*
++ * Make sure the previous comment leader is not removed.
++ */
++
++ /*
++ * Make sure the previous comment leader is not removed.
++ */
++
++ // Should the next comment leader be left alone?
++ // Yes.
++
++ // Should the next comment leader be left alone?
++ // Yes.
++
++ /* Here the comment leader should be left intact. */
++ // And so should this one.
++
++ /* Here the comment leader should be left intact. */
++ // And so should this one.
++
++ if (condition) // Remove the next comment leader!
++ // OK, I will.
++ action();
++
++ if (condition) // Remove the next comment leader!
++ // OK, I will.
++ action();
++ }
++
++ STARTTEST
++ /^{/+1
++ :set comments=s1:/*,mb:*,ex:*/,://
++ :set comments+=s1:>#,mb:#,ex:#<,:<
++ :set cpoptions-=j joinspaces fo=j
++ :set backspace=eol,start
++ :.,+3join
++ j4J
++ :.,+2join
++ j3J
++ :.,+2join
++ j3J
++ :.,+2join
++ jj3J
++ j:.,+2join
++ jj3J
++ j:.,+5join
++ j6J
++ oSome code! // Make sure backspacing does not remove this comment leader.0i
++ ENDTEST
++
++ {
++
++ /*
++ * Make sure the previous comment leader is not removed.
++ */
++
++ /*
++ * Make sure the previous comment leader is not removed.
++ */
++
++ // Should the next comment leader be left alone?
++ // Yes.
++
++ // Should the next comment leader be left alone?
++ // Yes.
++
++ /* Here the comment leader should be left intact. */
++ // And so should this one.
++
++ /* Here the comment leader should be left intact. */
++ // And so should this one.
++
++ if (condition) // Remove the next comment leader!
++ // OK, I will.
++ action();
++
++ if (condition) // Remove the next comment leader!
++ // OK, I will.
++ action();
++
++ int i = 7 /* foo *// 3
++ // comment
++ ;
++
++ int i = 7 /* foo *// 3
++ // comment
++ ;
++
++ ># Note that the last character of the ending comment leader (left angle
++ # bracket) is a comment leader itself. Make sure that this comment leader is
++ # not removed from the next line #<
++ < On this line a new comment is opened which spans 2 lines. This comment should
++ < retain its comment leader.
++
++ ># Note that the last character of the ending comment leader (left angle
++ # bracket) is a comment leader itself. Make sure that this comment leader is
++ # not removed from the next line #<
++ < On this line a new comment is opened which spans 2 lines. This comment should
++ < retain its comment leader.
++
++ }
++
++ STARTTEST
++ :g/^STARTTEST/.,/^ENDTEST/d
++ :?firstline?+1,$w! test.out
++ :qa!
++ ENDTEST
+*** ../vim-7.3.540/src/testdir/test29.ok 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test29.ok 2012-06-06 13:00:29.000000000 +0200
+***************
+*** 47,49 ****
+--- 47,86 ----
+ asdfasdf asdf
+ asdfasdf asdf
+ zx cvn. as dfg? hjkl iop! ert a
++
++
++ {
++ /* Make sure the previous comment leader is not removed. */
++ /* Make sure the previous comment leader is not removed. */
++ // Should the next comment leader be left alone? Yes.
++ // Should the next comment leader be left alone? Yes.
++ /* Here the comment leader should be left intact. */ // And so should this one.
++ /* Here the comment leader should be left intact. */ // And so should this one.
++ if (condition) // Remove the next comment leader! OK, I will.
++ action();
++ if (condition) // Remove the next comment leader! OK, I will.
++ action();
++ }
++
++
++ {
++ /* Make sure the previous comment leader is not removed. */
++ /* Make sure the previous comment leader is not removed. */
++ // Should the next comment leader be left alone? Yes.
++ // Should the next comment leader be left alone? Yes.
++ /* Here the comment leader should be left intact. */ // And so should this one.
++ /* Here the comment leader should be left intact. */ // And so should this one.
++ if (condition) // Remove the next comment leader! OK, I will.
++ action();
++ if (condition) // Remove the next comment leader! OK, I will.
++ action();
++ int i = 7 /* foo *// 3 // comment
++ ;
++ int i = 7 /* foo *// 3 // comment
++ ;
++ ># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader.
++ ># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader.
++
++ Some code!// Make sure backspacing does not remove this comment leader.
++ }
++
+*** ../vim-7.3.540/src/version.c 2012-06-06 12:06:10.000000000 +0200
+--- src/version.c 2012-06-06 16:10:03.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 541,
+ /**/
+
+--
+I have a drinking problem -- I don't have a drink!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.542 b/source/ap/vim/patches/7.3.542
new file mode 100644
index 000000000..81086126f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.542
@@ -0,0 +1,73 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.542
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.542 (after 7.3.506)
+Problem: Function is sometimes unused.
+Solution: Add #ifdef.
+Files: src/gui_gtk.c
+
+
+*** ../vim-7.3.541/src/gui_gtk.c 2012-04-25 17:10:12.000000000 +0200
+--- src/gui_gtk.c 2012-06-06 15:25:12.000000000 +0200
+***************
+*** 90,100 ****
+--- 90,102 ----
+ static void entry_activate_cb(GtkWidget *widget, gpointer data);
+ static void entry_changed_cb(GtkWidget *entry, GtkWidget *dialog);
+ static void find_replace_cb(GtkWidget *widget, gpointer data);
++ #if defined(FEAT_BROWSE) || defined(PROTO)
+ static void recent_func_log_func(
+ const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *message,
+ gpointer user_data);
++ #endif
+
+ #if defined(FEAT_TOOLBAR)
+ /*
+***************
+*** 1896,1901 ****
+--- 1898,1904 ----
+ do_cmdline_cmd((char_u *)"emenu ToolBar.FindHelp");
+ }
+
++ #if defined(FEAT_BROWSE) || defined(PROTO)
+ static void
+ recent_func_log_func(const gchar *log_domain UNUSED,
+ GLogLevelFlags log_level UNUSED,
+***************
+*** 1905,1908 ****
+ /* We just want to suppress the warnings. */
+ /* http://bugzilla.gnome.org/show_bug.cgi?id=664587 */
+ }
+!
+--- 1908,1911 ----
+ /* We just want to suppress the warnings. */
+ /* http://bugzilla.gnome.org/show_bug.cgi?id=664587 */
+ }
+! #endif
+*** ../vim-7.3.541/src/version.c 2012-06-06 16:12:54.000000000 +0200
+--- src/version.c 2012-06-06 16:14:17.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 542,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+1. At lunch time, sit in your parked car with sunglasses on and point
+ a hair dryer at passing cars. See if they slow down.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.543 b/source/ap/vim/patches/7.3.543
new file mode 100644
index 000000000..3fa569cc9
--- /dev/null
+++ b/source/ap/vim/patches/7.3.543
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.543
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.543
+Problem: The cursor is in the wrong line after using ":copen". (John
+ Beckett)
+Solution: Invoke more drastic redraw method.
+Files: src/eval.c
+
+
+*** ../vim-7.3.542/src/eval.c 2012-06-01 15:20:49.000000000 +0200
+--- src/eval.c 2012-06-06 16:28:11.000000000 +0200
+***************
+*** 18507,18515 ****
+ curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol");
+
+ check_cursor();
+! changed_cline_bef_curs();
+! invalidate_botline();
+! redraw_later(VALID);
+
+ if (curwin->w_topline == 0)
+ curwin->w_topline = 1;
+--- 18507,18513 ----
+ curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol");
+
+ check_cursor();
+! changed_window_setting();
+
+ if (curwin->w_topline == 0)
+ curwin->w_topline = 1;
+*** ../vim-7.3.542/src/version.c 2012-06-06 16:14:36.000000000 +0200
+--- src/version.c 2012-06-06 16:28:16.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 543,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+2. Page yourself over the intercom. Don't disguise your voice.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.544 b/source/ap/vim/patches/7.3.544
new file mode 100644
index 000000000..198a6cb1f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.544
@@ -0,0 +1,81 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.544
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.544
+Problem: There is no good way to close a quickfix window when closing the
+ last ordinary window.
+Solution: Add the QuitPre autocommand.
+Files: src/ex_docmd.c, src/fileio.c, src/vim.h
+
+
+*** ../vim-7.3.543/src/ex_docmd.c 2012-06-06 16:12:54.000000000 +0200
+--- src/ex_docmd.c 2012-06-06 17:58:41.000000000 +0200
+***************
+*** 6458,6463 ****
+--- 6458,6464 ----
+ return;
+ }
+ #ifdef FEAT_AUTOCMD
++ apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
+ if (curbuf_locked())
+ return;
+ #endif
+*** ../vim-7.3.543/src/fileio.c 2012-04-30 17:04:47.000000000 +0200
+--- src/fileio.c 2012-06-06 17:32:12.000000000 +0200
+***************
+*** 7678,7683 ****
+--- 7678,7684 ----
+ {"MenuPopup", EVENT_MENUPOPUP},
+ {"QuickFixCmdPost", EVENT_QUICKFIXCMDPOST},
+ {"QuickFixCmdPre", EVENT_QUICKFIXCMDPRE},
++ {"QuitPre", EVENT_QUITPRE},
+ {"RemoteReply", EVENT_REMOTEREPLY},
+ {"SessionLoadPost", EVENT_SESSIONLOADPOST},
+ {"ShellCmdPost", EVENT_SHELLCMDPOST},
+*** ../vim-7.3.543/src/vim.h 2012-06-01 15:20:49.000000000 +0200
+--- src/vim.h 2012-06-06 17:30:01.000000000 +0200
+***************
+*** 1264,1271 ****
+ EVENT_INSERTENTER, /* when entering Insert mode */
+ EVENT_INSERTLEAVE, /* when leaving Insert mode */
+ EVENT_MENUPOPUP, /* just before popup menu is displayed */
+! EVENT_QUICKFIXCMDPOST, /* after :make, :grep etc */
+! EVENT_QUICKFIXCMDPRE, /* before :make, :grep etc */
+ EVENT_SESSIONLOADPOST, /* after loading a session file */
+ EVENT_STDINREADPOST, /* after reading from stdin */
+ EVENT_STDINREADPRE, /* before reading from stdin */
+--- 1264,1272 ----
+ EVENT_INSERTENTER, /* when entering Insert mode */
+ EVENT_INSERTLEAVE, /* when leaving Insert mode */
+ EVENT_MENUPOPUP, /* just before popup menu is displayed */
+! EVENT_QUICKFIXCMDPOST, /* after :make, :grep etc. */
+! EVENT_QUICKFIXCMDPRE, /* before :make, :grep etc. */
+! EVENT_QUITPRE, /* before :quit */
+ EVENT_SESSIONLOADPOST, /* after loading a session file */
+ EVENT_STDINREADPOST, /* after reading from stdin */
+ EVENT_STDINREADPRE, /* before reading from stdin */
+*** ../vim-7.3.543/src/version.c 2012-06-06 16:29:06.000000000 +0200
+--- src/version.c 2012-06-06 18:02:09.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 544,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+3. Every time someone asks you to do something, ask if they want fries
+ with that.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.545 b/source/ap/vim/patches/7.3.545
new file mode 100644
index 000000000..1bd76ebee
--- /dev/null
+++ b/source/ap/vim/patches/7.3.545
@@ -0,0 +1,359 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.545
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.545
+Problem: When closing a window or buffer autocommands may close it too,
+ causing problems for where the autocommand was invoked from.
+Solution: Add the w_closing and b_closing flags. When set disallow ":q" and
+ ":close" to prevent recursive closing.
+Files: src/structs.h, src/buffer.c, src/ex_docmd.c, src/window.c
+
+
+*** ../vim-7.3.544/src/structs.h 2012-02-04 21:57:44.000000000 +0100
+--- src/structs.h 2012-06-06 16:43:34.000000000 +0200
+***************
+*** 1201,1206 ****
+--- 1201,1210 ----
+ typedef struct qf_info_S qf_info_T;
+ #endif
+
++ /*
++ * These are items normally related to a buffer. But when using ":ownsyntax"
++ * a window may have its own instance.
++ */
+ typedef struct {
+ #ifdef FEAT_SYN_HL
+ hashtab_T b_keywtab; /* syntax keywords hash table */
+***************
+*** 1290,1295 ****
+--- 1294,1303 ----
+ int b_nwindows; /* nr of windows open on this buffer */
+
+ int b_flags; /* various BF_ flags */
++ #ifdef FEAT_AUTOCMD
++ int b_closing; /* buffer is being closed, don't let
++ autocommands close it too. */
++ #endif
+
+ /*
+ * b_ffname has the full path of the file (NULL for no name).
+***************
+*** 1853,1858 ****
+--- 1861,1870 ----
+ win_T *w_prev; /* link to previous window */
+ win_T *w_next; /* link to next window */
+ #endif
++ #ifdef FEAT_AUTOCMD
++ int w_closing; /* window is being closed, don't let
++ autocommands close it too. */
++ #endif
+
+ frame_T *w_frame; /* frame containing this window */
+
+*** ../vim-7.3.544/src/buffer.c 2012-03-16 14:32:10.000000000 +0100
+--- src/buffer.c 2012-06-06 18:57:27.000000000 +0200
+***************
+*** 377,404 ****
+ /* When the buffer is no longer in a window, trigger BufWinLeave */
+ if (buf->b_nwindows == 1)
+ {
+ apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, buf->b_fname,
+ FALSE, buf);
+! /* Return if autocommands deleted the buffer or made it the only one. */
+! if (!buf_valid(buf) || (abort_if_last && one_window()))
+ {
+ EMSG(_(e_auabort));
+ return;
+ }
+
+ /* When the buffer becomes hidden, but is not unloaded, trigger
+ * BufHidden */
+ if (!unload_buf)
+ {
+ apply_autocmds(EVENT_BUFHIDDEN, buf->b_fname, buf->b_fname,
+ FALSE, buf);
+! /* Return if autocommands deleted the buffer or made it the only
+! * one. */
+! if (!buf_valid(buf) || (abort_if_last && one_window()))
+! {
+! EMSG(_(e_auabort));
+! return;
+! }
+ }
+ # ifdef FEAT_EVAL
+ if (aborting()) /* autocmds may abort script processing */
+--- 377,411 ----
+ /* When the buffer is no longer in a window, trigger BufWinLeave */
+ if (buf->b_nwindows == 1)
+ {
++ buf->b_closing = TRUE;
+ apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, buf->b_fname,
+ FALSE, buf);
+! if (!buf_valid(buf))
+ {
++ /* Autocommands deleted the buffer. */
++ aucmd_abort:
+ EMSG(_(e_auabort));
+ return;
+ }
++ buf->b_closing = FALSE;
++ if (abort_if_last && one_window())
++ /* Autocommands made this the only window. */
++ goto aucmd_abort;
+
+ /* When the buffer becomes hidden, but is not unloaded, trigger
+ * BufHidden */
+ if (!unload_buf)
+ {
++ buf->b_closing = TRUE;
+ apply_autocmds(EVENT_BUFHIDDEN, buf->b_fname, buf->b_fname,
+ FALSE, buf);
+! if (!buf_valid(buf))
+! /* Autocommands deleted the buffer. */
+! goto aucmd_abort;
+! buf->b_closing = FALSE;
+! if (abort_if_last && one_window())
+! /* Autocommands made this the only window. */
+! goto aucmd_abort;
+ }
+ # ifdef FEAT_EVAL
+ if (aborting()) /* autocmds may abort script processing */
+***************
+*** 552,557 ****
+--- 559,565 ----
+ #ifdef FEAT_AUTOCMD
+ int is_curbuf = (buf == curbuf);
+
++ buf->b_closing = TRUE;
+ apply_autocmds(EVENT_BUFUNLOAD, buf->b_fname, buf->b_fname, FALSE, buf);
+ if (!buf_valid(buf)) /* autocommands may delete the buffer */
+ return;
+***************
+*** 568,573 ****
+--- 576,582 ----
+ if (!buf_valid(buf)) /* autocommands may delete the buffer */
+ return;
+ }
++ buf->b_closing = FALSE;
+ # ifdef FEAT_EVAL
+ if (aborting()) /* autocmds may abort script processing */
+ return;
+***************
+*** 1150,1155 ****
+--- 1159,1167 ----
+ * a window with this buffer.
+ */
+ while (buf == curbuf
++ # ifdef FEAT_AUTOCMD
++ && !(curwin->w_closing || curwin->w_buffer->b_closing)
++ # endif
+ && (firstwin != lastwin || first_tabpage->tp_next != NULL))
+ win_close(curwin, FALSE);
+ #endif
+***************
+*** 4750,4756 ****
+ #ifdef FEAT_WINDOWS
+ || (had_tab > 0 && wp != firstwin)
+ #endif
+! ) && firstwin != lastwin)
+ {
+ win_close(wp, FALSE);
+ #ifdef FEAT_AUTOCMD
+--- 4762,4772 ----
+ #ifdef FEAT_WINDOWS
+ || (had_tab > 0 && wp != firstwin)
+ #endif
+! ) && firstwin != lastwin
+! #ifdef FEAT_AUTOCMD
+! && !(wp->w_closing || wp->w_buffer->b_closing)
+! #endif
+! )
+ {
+ win_close(wp, FALSE);
+ #ifdef FEAT_AUTOCMD
+*** ../vim-7.3.544/src/ex_docmd.c 2012-06-06 18:03:01.000000000 +0200
+--- src/ex_docmd.c 2012-06-06 18:06:46.000000000 +0200
+***************
+*** 6459,6465 ****
+ }
+ #ifdef FEAT_AUTOCMD
+ apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
+! if (curbuf_locked())
+ return;
+ #endif
+
+--- 6459,6467 ----
+ }
+ #ifdef FEAT_AUTOCMD
+ apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
+! /* Refuse to quick when locked or when the buffer in the last window is
+! * being closed (can only happen in autocommands). */
+! if (curbuf_locked() || (curbuf->b_nwindows == 1 && curbuf->b_closing))
+ return;
+ #endif
+
+*** ../vim-7.3.544/src/window.c 2012-05-25 12:38:57.000000000 +0200
+--- src/window.c 2012-06-06 18:47:19.000000000 +0200
+***************
+*** 2034,2040 ****
+
+ for (wp = firstwin; wp != NULL && lastwin != firstwin; )
+ {
+! if (wp->w_buffer == buf && (!keep_curwin || wp != curwin))
+ {
+ win_close(wp, FALSE);
+
+--- 2034,2044 ----
+
+ for (wp = firstwin; wp != NULL && lastwin != firstwin; )
+ {
+! if (wp->w_buffer == buf && (!keep_curwin || wp != curwin)
+! #ifdef FEAT_AUTOCMD
+! && !(wp->w_closing || wp->w_buffer->b_closing)
+! #endif
+! )
+ {
+ win_close(wp, FALSE);
+
+***************
+*** 2051,2057 ****
+ nexttp = tp->tp_next;
+ if (tp != curtab)
+ for (wp = tp->tp_firstwin; wp != NULL; wp = wp->w_next)
+! if (wp->w_buffer == buf)
+ {
+ win_close_othertab(wp, FALSE, tp);
+
+--- 2055,2065 ----
+ nexttp = tp->tp_next;
+ if (tp != curtab)
+ for (wp = tp->tp_firstwin; wp != NULL; wp = wp->w_next)
+! if (wp->w_buffer == buf
+! #ifdef FEAT_AUTOCMD
+! && !(wp->w_closing || wp->w_buffer->b_closing)
+! #endif
+! )
+ {
+ win_close_othertab(wp, FALSE, tp);
+
+***************
+*** 2168,2173 ****
+--- 2176,2183 ----
+ }
+
+ #ifdef FEAT_AUTOCMD
++ if (win->w_closing || win->w_buffer->b_closing)
++ return; /* window is already being closed */
+ if (win == aucmd_win)
+ {
+ EMSG(_("E813: Cannot close autocmd window"));
+***************
+*** 2203,2219 ****
+ wp = frame2win(win_altframe(win, NULL));
+
+ /*
+! * Be careful: If autocommands delete the window, return now.
+ */
+ if (wp->w_buffer != curbuf)
+ {
+ other_buffer = TRUE;
+ apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf);
+! if (!win_valid(win) || last_window())
+ return;
+ }
+ apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf);
+! if (!win_valid(win) || last_window())
+ return;
+ # ifdef FEAT_EVAL
+ /* autocmds may abort script processing */
+--- 2213,2238 ----
+ wp = frame2win(win_altframe(win, NULL));
+
+ /*
+! * Be careful: If autocommands delete the window or cause this window
+! * to be the last one left, return now.
+ */
+ if (wp->w_buffer != curbuf)
+ {
+ other_buffer = TRUE;
++ win->w_closing = TRUE;
+ apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf);
+! if (!win_valid(win))
+! return;
+! win->w_closing = FALSE;
+! if (last_window())
+ return;
+ }
++ win->w_closing = TRUE;
+ apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf);
+! if (!win_valid(win))
+! return;
+! win->w_closing = FALSE;
+! if (last_window())
+ return;
+ # ifdef FEAT_EVAL
+ /* autocmds may abort script processing */
+***************
+*** 2240,2246 ****
+ * Close the link to the buffer.
+ */
+ if (win->w_buffer != NULL)
+! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, TRUE);
+
+ /* Autocommands may have closed the window already, or closed the only
+ * other window or moved to another tab page. */
+--- 2259,2274 ----
+ * Close the link to the buffer.
+ */
+ if (win->w_buffer != NULL)
+! {
+! #ifdef FEAT_AUTOCMD
+! win->w_closing = TRUE;
+! #endif
+! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, FALSE);
+! #ifdef FEAT_AUTOCMD
+! if (win_valid(win))
+! win->w_closing = FALSE;
+! #endif
+! }
+
+ /* Autocommands may have closed the window already, or closed the only
+ * other window or moved to another tab page. */
+***************
+*** 2346,2351 ****
+--- 2374,2384 ----
+ tabpage_T *ptp = NULL;
+ int free_tp = FALSE;
+
++ #ifdef FEAT_AUTOCMD
++ if (win->w_closing || win->w_buffer->b_closing)
++ return; /* window is already being closed */
++ #endif
++
+ /* Close the link to the buffer. */
+ close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, FALSE);
+
+*** ../vim-7.3.544/src/version.c 2012-06-06 18:03:01.000000000 +0200
+--- src/version.c 2012-06-06 18:53:06.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 545,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+4. Put your garbage can on your desk and label it "in".
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.546 b/source/ap/vim/patches/7.3.546
new file mode 100644
index 000000000..c883d2d62
--- /dev/null
+++ b/source/ap/vim/patches/7.3.546
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.546
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.546
+Problem: Bogus line break.
+Solution: Remove the line break.
+Files: src/screen.c
+
+
+*** ../vim-7.3.545/src/screen.c 2012-06-01 15:20:49.000000000 +0200
+--- src/screen.c 2012-06-01 16:31:30.000000000 +0200
+***************
+*** 3228,3235 ****
+ /* no bad word found at line start, don't check until end of a
+ * word */
+ spell_hlf = HLF_COUNT;
+! word_end = (int)(spell_to_word_end(ptr, wp)
+! - line + 1);
+ }
+ else
+ {
+--- 3228,3234 ----
+ /* no bad word found at line start, don't check until end of a
+ * word */
+ spell_hlf = HLF_COUNT;
+! word_end = (int)(spell_to_word_end(ptr, wp) - line + 1);
+ }
+ else
+ {
+*** ../vim-7.3.545/src/version.c 2012-06-06 19:02:40.000000000 +0200
+--- src/version.c 2012-06-06 19:05:11.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 546,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+5. Put decaf in the coffee maker for 3 weeks. Once everyone has gotten
+ over their caffeine addictions, switch to espresso.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.547 b/source/ap/vim/patches/7.3.547
new file mode 100644
index 000000000..5533144a2
--- /dev/null
+++ b/source/ap/vim/patches/7.3.547
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.547
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.547 (after 7.3.541)
+Problem: Compiler warning for uninitialized variable.
+Solution: Initialize it.
+Files: src/ops.c
+
+
+*** ../vim-7.3.546/src/ops.c 2012-06-06 16:12:54.000000000 +0200
+--- src/ops.c 2012-06-06 23:06:45.000000000 +0200
+***************
+*** 4306,4312 ****
+ colnr_T col = 0;
+ int ret = OK;
+ #if defined(FEAT_COMMENTS) || defined(PROTO)
+! int *comments;
+ int remove_comments = (use_formatoptions == TRUE)
+ && has_format_option(FO_REMOVE_COMS);
+ int prev_was_comment;
+--- 4306,4312 ----
+ colnr_T col = 0;
+ int ret = OK;
+ #if defined(FEAT_COMMENTS) || defined(PROTO)
+! int *comments = NULL;
+ int remove_comments = (use_formatoptions == TRUE)
+ && has_format_option(FO_REMOVE_COMS);
+ int prev_was_comment;
+*** ../vim-7.3.546/src/version.c 2012-06-06 19:05:45.000000000 +0200
+--- src/version.c 2012-06-06 23:07:26.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 547,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+9. As often as possible, skip rather than walk.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.548 b/source/ap/vim/patches/7.3.548
new file mode 100644
index 000000000..3692a9a90
--- /dev/null
+++ b/source/ap/vim/patches/7.3.548
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.548
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.548
+Problem: Compiler warning on 64 bit Windows.
+Solution: Add type cast. (Mike Williams)
+Files: src/ops.c
+
+
+*** ../vim-7.3.547/src/ops.c 2012-06-06 23:08:33.000000000 +0200
+--- src/ops.c 2012-06-07 21:07:57.000000000 +0200
+***************
+*** 4352,4358 ****
+
+ char_u *new_curr = skip_comment(curr, TRUE, insert_space,
+ &prev_was_comment);
+! comments[t] = new_curr - curr;
+ curr = new_curr;
+ }
+ else
+--- 4352,4358 ----
+
+ char_u *new_curr = skip_comment(curr, TRUE, insert_space,
+ &prev_was_comment);
+! comments[t] = (int)(new_curr - curr);
+ curr = new_curr;
+ }
+ else
+*** ../vim-7.3.547/src/version.c 2012-06-06 23:08:33.000000000 +0200
+--- src/version.c 2012-06-07 21:08:35.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 548,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+17. When the money comes out the ATM, scream "I won!, I won! 3rd
+ time this week!!!!!"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.549 b/source/ap/vim/patches/7.3.549
new file mode 100644
index 000000000..6d27fc3fd
--- /dev/null
+++ b/source/ap/vim/patches/7.3.549
@@ -0,0 +1,125 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.549
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.549
+Problem: In 'cinoptions' "0s" is interpreted as one shiftwidth. (David
+ Pineau)
+Solution: Use the zero as zero. (Lech Lorens)
+Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.548/src/misc1.c 2012-06-06 16:12:54.000000000 +0200
+--- src/misc1.c 2012-06-13 13:17:11.000000000 +0200
+***************
+*** 6635,6640 ****
+--- 6635,6641 ----
+ int whilelevel;
+ linenr_T lnum;
+ char_u *options;
++ char_u *digits;
+ int fraction = 0; /* init for GCC */
+ int divider;
+ int n;
+***************
+*** 6650,6655 ****
+--- 6651,6657 ----
+ l = options++;
+ if (*options == '-')
+ ++options;
++ digits = options; /* remember where the digits start */
+ n = getdigits(&options);
+ divider = 0;
+ if (*options == '.') /* ".5s" means a fraction */
+***************
+*** 6666,6672 ****
+ }
+ if (*options == 's') /* "2s" means two times 'shiftwidth' */
+ {
+! if (n == 0 && fraction == 0)
+ n = curbuf->b_p_sw; /* just "s" is one 'shiftwidth' */
+ else
+ {
+--- 6668,6674 ----
+ }
+ if (*options == 's') /* "2s" means two times 'shiftwidth' */
+ {
+! if (options == digits)
+ n = curbuf->b_p_sw; /* just "s" is one 'shiftwidth' */
+ else
+ {
+*** ../vim-7.3.548/src/testdir/test3.in 2012-04-05 17:17:38.000000000 +0200
+--- src/testdir/test3.in 2012-06-13 13:17:31.000000000 +0200
+***************
+*** 977,982 ****
+--- 977,1000 ----
+
+ STARTTEST
+ :set cin
++ :set cino=es,n0s
++ /main
++ =][
++ ENDTEST
++
++ main(void)
++ {
++ /* Make sure that cino=X0s is not parsed like cino=Xs. */
++ if (cond)
++ foo();
++ else
++ {
++ bar();
++ }
++ }
++
++ STARTTEST
++ :set cin
+ :set cino=
+ ]]=][
+ ENDTEST
+*** ../vim-7.3.548/src/testdir/test3.ok 2012-04-05 17:17:38.000000000 +0200
+--- src/testdir/test3.ok 2012-06-13 13:17:31.000000000 +0200
+***************
+*** 940,945 ****
+--- 940,957 ----
+ }
+
+
++ main(void)
++ {
++ /* Make sure that cino=X0s is not parsed like cino=Xs. */
++ if (cond)
++ foo();
++ else
++ {
++ bar();
++ }
++ }
++
++
+ {
+ do
+ {
+*** ../vim-7.3.548/src/version.c 2012-06-07 21:09:35.000000000 +0200
+--- src/version.c 2012-06-13 13:37:18.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 549,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+29. Your phone bill comes to your doorstep in a box.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.550 b/source/ap/vim/patches/7.3.550
new file mode 100644
index 000000000..6fba66cd5
--- /dev/null
+++ b/source/ap/vim/patches/7.3.550
@@ -0,0 +1,160 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.550
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.550 (after 7.3.541)
+Problem: With "j" in 'formatoptions' a list leader is not removed. (Gary
+ Johnson)
+Solution: Don't ignore the start of a three part comment. (Lech Lorens)
+Files: src/ops.c, src/testdir/test29.in, src/testdir/test29.ok
+
+
+*** ../vim-7.3.549/src/ops.c 2012-06-07 21:09:35.000000000 +0200
+--- src/ops.c 2012-06-13 13:48:26.000000000 +0200
+***************
+*** 4250,4264 ****
+ return line;
+
+ /* Find:
+- * - COM_START,
+ * - COM_END,
+ * - colon,
+ * whichever comes first.
+ */
+ while (*comment_flags)
+ {
+! if (*comment_flags == COM_START
+! || *comment_flags == COM_END
+ || *comment_flags == ':')
+ {
+ break;
+--- 4250,4262 ----
+ return line;
+
+ /* Find:
+ * - COM_END,
+ * - colon,
+ * whichever comes first.
+ */
+ while (*comment_flags)
+ {
+! if (*comment_flags == COM_END
+ || *comment_flags == ':')
+ {
+ break;
+***************
+*** 4267,4275 ****
+ }
+
+ /* If we found a colon, it means that we are not processing a line
+! * starting with an opening or a closing part of a three-part
+! * comment. That's good, because we don't want to remove those as
+! * this would be annoying.
+ */
+ if (*comment_flags == ':' || *comment_flags == NUL)
+ line += lead_len;
+--- 4265,4272 ----
+ }
+
+ /* If we found a colon, it means that we are not processing a line
+! * starting with a closing part of a three-part comment. That's good,
+! * because we don't want to remove those as this would be annoying.
+ */
+ if (*comment_flags == ':' || *comment_flags == NUL)
+ line += lead_len;
+*** ../vim-7.3.549/src/testdir/test29.in 2012-06-06 16:12:54.000000000 +0200
+--- src/testdir/test29.in 2012-06-13 13:48:26.000000000 +0200
+***************
+*** 103,114 ****
+
+ STARTTEST
+ /^{/+1
+! :set comments=s1:/*,mb:*,ex:*/,://
+ :set comments+=s1:>#,mb:#,ex:#<,:<
+ :set cpoptions-=j joinspaces fo=j
+ :set backspace=eol,start
+ :.,+3join
+ j4J
+ :.,+2join
+ j3J
+ :.,+2join
+--- 103,117 ----
+
+ STARTTEST
+ /^{/+1
+! :set comments=sO:*\ -,mO:*\ \ ,exO:*/
+! :set comments+=s1:/*,mb:*,ex:*/,://
+ :set comments+=s1:>#,mb:#,ex:#<,:<
+ :set cpoptions-=j joinspaces fo=j
+ :set backspace=eol,start
+ :.,+3join
+ j4J
++ :.,+8join
++ j9J
+ :.,+2join
+ j3J
+ :.,+2join
+***************
+*** 132,137 ****
+--- 135,158 ----
+ * Make sure the previous comment leader is not removed.
+ */
+
++ /* List:
++ * - item1
++ * foo bar baz
++ * foo bar baz
++ * - item2
++ * foo bar baz
++ * foo bar baz
++ */
++
++ /* List:
++ * - item1
++ * foo bar baz
++ * foo bar baz
++ * - item2
++ * foo bar baz
++ * foo bar baz
++ */
++
+ // Should the next comment leader be left alone?
+ // Yes.
+
+*** ../vim-7.3.549/src/testdir/test29.ok 2012-06-06 16:12:54.000000000 +0200
+--- src/testdir/test29.ok 2012-06-13 13:48:26.000000000 +0200
+***************
+*** 66,71 ****
+--- 66,73 ----
+ {
+ /* Make sure the previous comment leader is not removed. */
+ /* Make sure the previous comment leader is not removed. */
++ /* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */
++ /* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */
+ // Should the next comment leader be left alone? Yes.
+ // Should the next comment leader be left alone? Yes.
+ /* Here the comment leader should be left intact. */ // And so should this one.
+*** ../vim-7.3.549/src/version.c 2012-06-13 13:40:45.000000000 +0200
+--- src/version.c 2012-06-13 13:50:23.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 550,
+ /**/
+
+--
+If you put 7 of the most talented OSS developers in a room for a week
+and asked them to fix a bug in a spreadsheet program, in 1 week
+you'd have 2 new mail readers and a text-based web browser.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.551 b/source/ap/vim/patches/7.3.551
new file mode 100644
index 000000000..db8dbac78
--- /dev/null
+++ b/source/ap/vim/patches/7.3.551
@@ -0,0 +1,494 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.551
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.551
+Problem: When using :tablose a TabEnter autocommand is triggered too early.
+ (Karthick)
+Solution: Don't trigger *Enter autocommands before closing the tab.
+ (Christian Brabandt)
+Files: src/buffer.c, src/eval.c, src/ex_cmds2.c, src/fileio.c,
+ src/proto/window.pro, src/window.c
+
+
+*** ../vim-7.3.550/src/buffer.c 2012-06-06 19:02:40.000000000 +0200
+--- src/buffer.c 2012-06-13 14:18:58.000000000 +0200
+***************
+*** 4470,4476 ****
+ * When the ":tab" modifier was used do this for all tab pages.
+ */
+ if (had_tab > 0)
+! goto_tabpage_tp(first_tabpage);
+ for (;;)
+ {
+ tpnext = curtab->tp_next;
+--- 4470,4476 ----
+ * When the ":tab" modifier was used do this for all tab pages.
+ */
+ if (had_tab > 0)
+! goto_tabpage_tp(first_tabpage, TRUE);
+ for (;;)
+ {
+ tpnext = curtab->tp_next;
+***************
+*** 4582,4588 ****
+ if (!valid_tabpage(tpnext))
+ tpnext = first_tabpage; /* start all over...*/
+ # endif
+! goto_tabpage_tp(tpnext);
+ }
+
+ /*
+--- 4582,4588 ----
+ if (!valid_tabpage(tpnext))
+ tpnext = first_tabpage; /* start all over...*/
+ # endif
+! goto_tabpage_tp(tpnext, TRUE);
+ }
+
+ /*
+***************
+*** 4686,4698 ****
+ if (last_curtab != new_curtab)
+ {
+ if (valid_tabpage(last_curtab))
+! goto_tabpage_tp(last_curtab);
+ if (win_valid(last_curwin))
+ win_enter(last_curwin, FALSE);
+ }
+ /* to window with first arg */
+ if (valid_tabpage(new_curtab))
+! goto_tabpage_tp(new_curtab);
+ if (win_valid(new_curwin))
+ win_enter(new_curwin, FALSE);
+
+--- 4686,4698 ----
+ if (last_curtab != new_curtab)
+ {
+ if (valid_tabpage(last_curtab))
+! goto_tabpage_tp(last_curtab, TRUE);
+ if (win_valid(last_curwin))
+ win_enter(last_curwin, FALSE);
+ }
+ /* to window with first arg */
+ if (valid_tabpage(new_curtab))
+! goto_tabpage_tp(new_curtab, TRUE);
+ if (win_valid(new_curwin))
+ win_enter(new_curwin, FALSE);
+
+***************
+*** 4744,4750 ****
+ */
+ #ifdef FEAT_WINDOWS
+ if (had_tab > 0)
+! goto_tabpage_tp(first_tabpage);
+ for (;;)
+ {
+ #endif
+--- 4744,4750 ----
+ */
+ #ifdef FEAT_WINDOWS
+ if (had_tab > 0)
+! goto_tabpage_tp(first_tabpage, TRUE);
+ for (;;)
+ {
+ #endif
+***************
+*** 4784,4790 ****
+ /* Without the ":tab" modifier only do the current tab page. */
+ if (had_tab == 0 || tpnext == NULL)
+ break;
+! goto_tabpage_tp(tpnext);
+ }
+ #endif
+
+--- 4784,4790 ----
+ /* Without the ":tab" modifier only do the current tab page. */
+ if (had_tab == 0 || tpnext == NULL)
+ break;
+! goto_tabpage_tp(tpnext, TRUE);
+ }
+ #endif
+
+*** ../vim-7.3.550/src/eval.c 2012-06-06 16:29:06.000000000 +0200
+--- src/eval.c 2012-06-13 14:18:58.000000000 +0200
+***************
+*** 16415,16421 ****
+ if (tp != NULL && varname != NULL && varp != NULL)
+ {
+ save_curtab = curtab;
+! goto_tabpage_tp(tp);
+
+ tabvarname = alloc((unsigned)STRLEN(varname) + 3);
+ if (tabvarname != NULL)
+--- 16415,16421 ----
+ if (tp != NULL && varname != NULL && varp != NULL)
+ {
+ save_curtab = curtab;
+! goto_tabpage_tp(tp, TRUE);
+
+ tabvarname = alloc((unsigned)STRLEN(varname) + 3);
+ if (tabvarname != NULL)
+***************
+*** 16428,16434 ****
+
+ /* Restore current tabpage */
+ if (valid_tabpage(save_curtab))
+! goto_tabpage_tp(save_curtab);
+ }
+ }
+
+--- 16428,16434 ----
+
+ /* Restore current tabpage */
+ if (valid_tabpage(save_curtab))
+! goto_tabpage_tp(save_curtab, TRUE);
+ }
+ }
+
+***************
+*** 16492,16498 ****
+ /* set curwin to be our win, temporarily */
+ save_curwin = curwin;
+ save_curtab = curtab;
+! goto_tabpage_tp(tp);
+ if (!win_valid(win))
+ return;
+ curwin = win;
+--- 16492,16498 ----
+ /* set curwin to be our win, temporarily */
+ save_curwin = curwin;
+ save_curtab = curtab;
+! goto_tabpage_tp(tp, TRUE);
+ if (!win_valid(win))
+ return;
+ curwin = win;
+***************
+*** 16527,16533 ****
+ /* Restore current tabpage and window, if still valid (autocomands can
+ * make them invalid). */
+ if (valid_tabpage(save_curtab))
+! goto_tabpage_tp(save_curtab);
+ if (win_valid(save_curwin))
+ {
+ curwin = save_curwin;
+--- 16527,16533 ----
+ /* Restore current tabpage and window, if still valid (autocomands can
+ * make them invalid). */
+ if (valid_tabpage(save_curtab))
+! goto_tabpage_tp(save_curtab, TRUE);
+ if (win_valid(save_curwin))
+ {
+ curwin = save_curwin;
+*** ../vim-7.3.550/src/ex_cmds2.c 2012-04-25 17:32:14.000000000 +0200
+--- src/ex_cmds2.c 2012-06-13 14:18:58.000000000 +0200
+***************
+*** 2476,2482 ****
+ /* go to window "tp" */
+ if (!valid_tabpage(tp))
+ break;
+! goto_tabpage_tp(tp);
+ tp = tp->tp_next;
+ }
+ #endif
+--- 2476,2482 ----
+ /* go to window "tp" */
+ if (!valid_tabpage(tp))
+ break;
+! goto_tabpage_tp(tp, TRUE);
+ tp = tp->tp_next;
+ }
+ #endif
+*** ../vim-7.3.550/src/fileio.c 2012-06-06 18:03:01.000000000 +0200
+--- src/fileio.c 2012-06-13 14:18:58.000000000 +0200
+***************
+*** 8918,8924 ****
+ if (wp == aucmd_win)
+ {
+ if (tp != curtab)
+! goto_tabpage_tp(tp);
+ win_goto(aucmd_win);
+ goto win_found;
+ }
+--- 8918,8924 ----
+ if (wp == aucmd_win)
+ {
+ if (tp != curtab)
+! goto_tabpage_tp(tp, TRUE);
+ win_goto(aucmd_win);
+ goto win_found;
+ }
+*** ../vim-7.3.550/src/proto/window.pro 2012-02-22 14:58:24.000000000 +0100
+--- src/proto/window.pro 2012-06-13 14:23:06.000000000 +0200
+***************
+*** 27,33 ****
+ tabpage_T *find_tabpage __ARGS((int n));
+ int tabpage_index __ARGS((tabpage_T *ftp));
+ void goto_tabpage __ARGS((int n));
+! void goto_tabpage_tp __ARGS((tabpage_T *tp));
+ void goto_tabpage_win __ARGS((tabpage_T *tp, win_T *wp));
+ void tabpage_move __ARGS((int nr));
+ void win_goto __ARGS((win_T *wp));
+--- 27,33 ----
+ tabpage_T *find_tabpage __ARGS((int n));
+ int tabpage_index __ARGS((tabpage_T *ftp));
+ void goto_tabpage __ARGS((int n));
+! void goto_tabpage_tp __ARGS((tabpage_T *tp, int trigger_autocmds));
+ void goto_tabpage_win __ARGS((tabpage_T *tp, win_T *wp));
+ void tabpage_move __ARGS((int nr));
+ void win_goto __ARGS((win_T *wp));
+*** ../vim-7.3.550/src/window.c 2012-06-06 19:02:40.000000000 +0200
+--- src/window.c 2012-06-13 14:24:38.000000000 +0200
+***************
+*** 45,51 ****
+ #if defined(FEAT_WINDOWS) || defined(PROTO)
+ static tabpage_T *alloc_tabpage __ARGS((void));
+ static int leave_tabpage __ARGS((buf_T *new_curbuf));
+! static void enter_tabpage __ARGS((tabpage_T *tp, buf_T *old_curbuf));
+ static void frame_fix_height __ARGS((win_T *wp));
+ static int frame_minheight __ARGS((frame_T *topfrp, win_T *next_curwin));
+ static void win_enter_ext __ARGS((win_T *wp, int undo_sync, int no_curwin));
+--- 45,51 ----
+ #if defined(FEAT_WINDOWS) || defined(PROTO)
+ static tabpage_T *alloc_tabpage __ARGS((void));
+ static int leave_tabpage __ARGS((buf_T *new_curbuf));
+! static void enter_tabpage __ARGS((tabpage_T *tp, buf_T *old_curbuf, int trigger_autocmds));
+ static void frame_fix_height __ARGS((win_T *wp));
+ static int frame_minheight __ARGS((frame_T *topfrp, win_T *next_curwin));
+ static void win_enter_ext __ARGS((win_T *wp, int undo_sync, int no_curwin));
+***************
+*** 355,365 ****
+ && valid_tabpage(oldtab))
+ {
+ newtab = curtab;
+! goto_tabpage_tp(oldtab);
+ if (curwin == wp)
+ win_close(curwin, FALSE);
+ if (valid_tabpage(newtab))
+! goto_tabpage_tp(newtab);
+ }
+ }
+ break;
+--- 355,365 ----
+ && valid_tabpage(oldtab))
+ {
+ newtab = curtab;
+! goto_tabpage_tp(oldtab, TRUE);
+ if (curwin == wp)
+ win_close(curwin, FALSE);
+ if (valid_tabpage(newtab))
+! goto_tabpage_tp(newtab, TRUE);
+ }
+ }
+ break;
+***************
+*** 2130,2137 ****
+ * page and then close the window and the tab page. This avoids that
+ * curwin and curtab are invalid while we are freeing memory, they may
+ * be used in GUI events.
+ */
+! goto_tabpage_tp(alt_tabpage());
+ redraw_tabline = TRUE;
+
+ /* Safety check: Autocommands may have closed the window when jumping
+--- 2130,2139 ----
+ * page and then close the window and the tab page. This avoids that
+ * curwin and curtab are invalid while we are freeing memory, they may
+ * be used in GUI events.
++ * Don't trigger autocommands yet, they may use wrong values, so do
++ * that below.
+ */
+! goto_tabpage_tp(alt_tabpage(), FALSE);
+ redraw_tabline = TRUE;
+
+ /* Safety check: Autocommands may have closed the window when jumping
+***************
+*** 2144,2149 ****
+--- 2146,2157 ----
+ if (h != tabline_height())
+ shell_new_rows();
+ }
++ /* Since goto_tabpage_tp above did not trigger *Enter autocommands, do
++ * that now. */
++ #ifdef FEAT_AUTOCMD
++ apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf);
++ apply_autocmds(EVENT_WINENTER, NULL, NULL, FALSE, curbuf);
++ #endif
+ return TRUE;
+ }
+ return FALSE;
+***************
+*** 3556,3562 ****
+ }
+
+ /* Failed, get back the previous Tab page */
+! enter_tabpage(curtab, curbuf);
+ return FAIL;
+ }
+
+--- 3564,3570 ----
+ }
+
+ /* Failed, get back the previous Tab page */
+! enter_tabpage(curtab, curbuf, TRUE);
+ return FAIL;
+ }
+
+***************
+*** 3709,3719 ****
+ /*
+ * Start using tab page "tp".
+ * Only to be used after leave_tabpage() or freeing the current tab page.
+ */
+ static void
+! enter_tabpage(tp, old_curbuf)
+ tabpage_T *tp;
+ buf_T *old_curbuf UNUSED;
+ {
+ int old_off = tp->tp_firstwin->w_winrow;
+ win_T *next_prevwin = tp->tp_prevwin;
+--- 3717,3729 ----
+ /*
+ * Start using tab page "tp".
+ * Only to be used after leave_tabpage() or freeing the current tab page.
++ * Only trigger *Enter autocommands when trigger_autocmds is TRUE.
+ */
+ static void
+! enter_tabpage(tp, old_curbuf, trigger_autocmds)
+ tabpage_T *tp;
+ buf_T *old_curbuf UNUSED;
++ int trigger_autocmds;
+ {
+ int old_off = tp->tp_firstwin->w_winrow;
+ win_T *next_prevwin = tp->tp_prevwin;
+***************
+*** 3761,3769 ****
+ #ifdef FEAT_AUTOCMD
+ /* Apply autocommands after updating the display, when 'rows' and
+ * 'columns' have been set correctly. */
+! apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf);
+! if (old_curbuf != curbuf)
+! apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf);
+ #endif
+
+ redraw_all_later(CLEAR);
+--- 3771,3782 ----
+ #ifdef FEAT_AUTOCMD
+ /* Apply autocommands after updating the display, when 'rows' and
+ * 'columns' have been set correctly. */
+! if (trigger_autocmds)
+! {
+! apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf);
+! if (old_curbuf != curbuf)
+! apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf);
+! }
+ #endif
+
+ redraw_all_later(CLEAR);
+***************
+*** 3839,3845 ****
+ }
+ }
+
+! goto_tabpage_tp(tp);
+
+ #ifdef FEAT_GUI_TABLINE
+ if (gui_use_tabline())
+--- 3852,3858 ----
+ }
+ }
+
+! goto_tabpage_tp(tp, TRUE);
+
+ #ifdef FEAT_GUI_TABLINE
+ if (gui_use_tabline())
+***************
+*** 3849,3859 ****
+
+ /*
+ * Go to tabpage "tp".
+ * Note: doesn't update the GUI tab.
+ */
+ void
+! goto_tabpage_tp(tp)
+ tabpage_T *tp;
+ {
+ /* Don't repeat a message in another tab page. */
+ set_keep_msg(NULL, 0);
+--- 3862,3874 ----
+
+ /*
+ * Go to tabpage "tp".
++ * Only trigger *Enter autocommands when trigger_autocmds is TRUE.
+ * Note: doesn't update the GUI tab.
+ */
+ void
+! goto_tabpage_tp(tp, trigger_autocmds)
+ tabpage_T *tp;
++ int trigger_autocmds;
+ {
+ /* Don't repeat a message in another tab page. */
+ set_keep_msg(NULL, 0);
+***************
+*** 3861,3869 ****
+ if (tp != curtab && leave_tabpage(tp->tp_curwin->w_buffer) == OK)
+ {
+ if (valid_tabpage(tp))
+! enter_tabpage(tp, curbuf);
+ else
+! enter_tabpage(curtab, curbuf);
+ }
+ }
+
+--- 3876,3884 ----
+ if (tp != curtab && leave_tabpage(tp->tp_curwin->w_buffer) == OK)
+ {
+ if (valid_tabpage(tp))
+! enter_tabpage(tp, curbuf, trigger_autocmds);
+ else
+! enter_tabpage(curtab, curbuf, trigger_autocmds);
+ }
+ }
+
+***************
+*** 3876,3882 ****
+ tabpage_T *tp;
+ win_T *wp;
+ {
+! goto_tabpage_tp(tp);
+ if (curtab == tp && win_valid(wp))
+ {
+ win_enter(wp, TRUE);
+--- 3891,3897 ----
+ tabpage_T *tp;
+ win_T *wp;
+ {
+! goto_tabpage_tp(tp, TRUE);
+ if (curtab == tp && win_valid(wp))
+ {
+ win_enter(wp, TRUE);
+*** ../vim-7.3.550/src/version.c 2012-06-13 14:01:36.000000000 +0200
+--- src/version.c 2012-06-13 14:28:00.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 551,
+ /**/
+
+--
+Give a man a computer program and you give him a headache,
+but teach him to program computers and you give him the power
+to create headaches for others for the rest of his life...
+ R. B. Forest
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.552 b/source/ap/vim/patches/7.3.552
new file mode 100644
index 000000000..e9a560ec5
--- /dev/null
+++ b/source/ap/vim/patches/7.3.552
@@ -0,0 +1,582 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.552
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.552
+Problem: Formatting inside comments does not use the "2" flag in
+ 'formatoptions'.
+Solution: Support the "2" flag. (Tor Perkins)
+Files: src/vim.h, src/ops.c, src/edit.c, src/misc1.c,
+ src/testdir/test68.in, src/testdir/test68.ok
+
+
+*** ../vim-7.3.551/src/vim.h 2012-06-06 18:03:01.000000000 +0200
+--- src/vim.h 2012-06-13 16:07:27.000000000 +0200
+***************
+*** 1072,1083 ****
+--- 1072,1085 ----
+ #define INSCHAR_DO_COM 2 /* format comments */
+ #define INSCHAR_CTRLV 4 /* char typed just after CTRL-V */
+ #define INSCHAR_NO_FEX 8 /* don't use 'formatexpr' */
++ #define INSCHAR_COM_LIST 16 /* format comments with list/2nd line indent */
+
+ /* flags for open_line() */
+ #define OPENLINE_DELSPACES 1 /* delete spaces after cursor */
+ #define OPENLINE_DO_COM 2 /* format comments */
+ #define OPENLINE_KEEPTRAIL 4 /* keep trailing spaces */
+ #define OPENLINE_MARKFIX 8 /* fix mark positions */
++ #define OPENLINE_COM_LIST 16 /* format comments with list/2nd line indent */
+
+ /*
+ * There are four history tables:
+*** ../vim-7.3.551/src/ops.c 2012-06-13 14:01:36.000000000 +0200
+--- src/ops.c 2012-06-13 16:53:44.000000000 +0200
+***************
+*** 1727,1734 ****
+ * and the delete is within one line. */
+ if ((
+ #ifdef FEAT_CLIPBOARD
+! ((clip_unnamed & CLIP_UNNAMED) && oap->regname == '*') ||
+! ((clip_unnamed & CLIP_UNNAMED_PLUS) && oap->regname == '+') ||
+ #endif
+ oap->regname == 0) && oap->motion_type != MLINE
+ && oap->line_count == 1)
+--- 1727,1734 ----
+ * and the delete is within one line. */
+ if ((
+ #ifdef FEAT_CLIPBOARD
+! ((clip_unnamed & CLIP_UNNAMED) && oap->regname == '*') ||
+! ((clip_unnamed & CLIP_UNNAMED_PLUS) && oap->regname == '+') ||
+ #endif
+ oap->regname == 0) && oap->motion_type != MLINE
+ && oap->line_count == 1)
+***************
+*** 4208,4217 ****
+ * "is_comment".
+ * line - line to be processed,
+ * process - if FALSE, will only check whether the line ends with an unclosed
+! * comment,
+ * include_space - whether to also skip space following the comment leader,
+ * is_comment - will indicate whether the current line ends with an unclosed
+! * comment.
+ */
+ static char_u *
+ skip_comment(line, process, include_space, is_comment)
+--- 4208,4217 ----
+ * "is_comment".
+ * line - line to be processed,
+ * process - if FALSE, will only check whether the line ends with an unclosed
+! * comment,
+ * include_space - whether to also skip space following the comment leader,
+ * is_comment - will indicate whether the current line ends with an unclosed
+! * comment.
+ */
+ static char_u *
+ skip_comment(line, process, include_space, is_comment)
+***************
+*** 4723,4731 ****
+ char_u *leader_flags = NULL; /* flags for leader of current line */
+ char_u *next_leader_flags; /* flags for leader of next line */
+ int do_comments; /* format comments */
+ #endif
+ int advance = TRUE;
+! int second_indent = -1;
+ int do_second_indent;
+ int do_number_indent;
+ int do_trail_white;
+--- 4723,4733 ----
+ char_u *leader_flags = NULL; /* flags for leader of current line */
+ char_u *next_leader_flags; /* flags for leader of next line */
+ int do_comments; /* format comments */
++ int do_comments_list = 0; /* format comments with 'n' or '2' */
+ #endif
+ int advance = TRUE;
+! int second_indent = -1; /* indent for second line (comment
+! * aware) */
+ int do_second_indent;
+ int do_number_indent;
+ int do_trail_white;
+***************
+*** 4828,4845 ****
+ if (first_par_line
+ && (do_second_indent || do_number_indent)
+ && prev_is_end_par
+! && curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count
+ #ifdef FEAT_COMMENTS
+! && leader_len == 0
+! && next_leader_len == 0
+ #endif
+! )
+! {
+! if (do_second_indent
+! && !lineempty(curwin->w_cursor.lnum + 1))
+! second_indent = get_indent_lnum(curwin->w_cursor.lnum + 1);
+ else if (do_number_indent)
+! second_indent = get_number_indent(curwin->w_cursor.lnum);
+ }
+
+ /*
+--- 4830,4875 ----
+ if (first_par_line
+ && (do_second_indent || do_number_indent)
+ && prev_is_end_par
+! && curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
+! {
+! if (do_second_indent && !lineempty(curwin->w_cursor.lnum + 1))
+! {
+ #ifdef FEAT_COMMENTS
+! if (leader_len == 0 && next_leader_len == 0)
+! {
+! /* no comment found */
+ #endif
+! second_indent =
+! get_indent_lnum(curwin->w_cursor.lnum + 1);
+! #ifdef FEAT_COMMENTS
+! }
+! else
+! {
+! second_indent = next_leader_len;
+! do_comments_list = 1;
+! }
+! #endif
+! }
+ else if (do_number_indent)
+! {
+! #ifdef FEAT_COMMENTS
+! if (leader_len == 0 && next_leader_len == 0)
+! {
+! /* no comment found */
+! #endif
+! second_indent =
+! get_number_indent(curwin->w_cursor.lnum);
+! #ifdef FEAT_COMMENTS
+! }
+! else
+! {
+! /* get_number_indent() is now "comment aware"... */
+! second_indent =
+! get_number_indent(curwin->w_cursor.lnum);
+! do_comments_list = 1;
+! }
+! #endif
+! }
+ }
+
+ /*
+***************
+*** 4878,4883 ****
+--- 4908,4915 ----
+ insertchar(NUL, INSCHAR_FORMAT
+ #ifdef FEAT_COMMENTS
+ + (do_comments ? INSCHAR_DO_COM : 0)
++ + (do_comments && do_comments_list
++ ? INSCHAR_COM_LIST : 0)
+ #endif
+ + (avoid_fex ? INSCHAR_NO_FEX : 0), second_indent);
+ State = old_State;
+*** ../vim-7.3.551/src/edit.c 2012-06-06 16:12:54.000000000 +0200
+--- src/edit.c 2012-06-13 16:54:10.000000000 +0200
+***************
+*** 1463,1469 ****
+ * what check_abbr() expects. */
+ (has_mbyte && c >= 0x100) ? (c + ABBR_OFF) :
+ #endif
+! c) && c != Ctrl_RSB))
+ {
+ insert_special(c, FALSE, FALSE);
+ #ifdef FEAT_RIGHTLEFT
+--- 1463,1469 ----
+ * what check_abbr() expects. */
+ (has_mbyte && c >= 0x100) ? (c + ABBR_OFF) :
+ #endif
+! c) && c != Ctrl_RSB))
+ {
+ insert_special(c, FALSE, FALSE);
+ #ifdef FEAT_RIGHTLEFT
+***************
+*** 5769,5774 ****
+--- 5769,5784 ----
+ # define WHITECHAR(cc) vim_iswhite(cc)
+ #endif
+
++ /*
++ * "flags": INSCHAR_FORMAT - force formatting
++ * INSCHAR_CTRLV - char typed just after CTRL-V
++ * INSCHAR_NO_FEX - don't use 'formatexpr'
++ *
++ * NOTE: passes the flags value straight through to internal_format() which,
++ * beside INSCHAR_FORMAT (above), is also looking for these:
++ * INSCHAR_DO_COM - format comments
++ * INSCHAR_COM_LIST - format comments with num list or 2nd line indent
++ */
+ void
+ insertchar(c, flags, second_indent)
+ int c; /* character to insert or NUL */
+***************
+*** 6011,6016 ****
+--- 6021,6029 ----
+
+ /*
+ * Format text at the current insert position.
++ *
++ * If the INSCHAR_COM_LIST flag is present, then the value of second_indent
++ * will be the comment leader length sent to open_line().
+ */
+ static void
+ internal_format(textwidth, second_indent, flags, format_only, c)
+***************
+*** 6289,6311 ****
+ + (fo_white_par ? OPENLINE_KEEPTRAIL : 0)
+ #ifdef FEAT_COMMENTS
+ + (do_comments ? OPENLINE_DO_COM : 0)
+ #endif
+! , old_indent);
+! old_indent = 0;
+
+ replace_offset = 0;
+ if (first_line)
+ {
+! if (second_indent < 0 && has_format_option(FO_Q_NUMBER))
+! second_indent = get_number_indent(curwin->w_cursor.lnum -1);
+! if (second_indent >= 0)
+ {
+ #ifdef FEAT_VREPLACE
+! if (State & VREPLACE_FLAG)
+! change_indent(INDENT_SET, second_indent, FALSE, NUL, TRUE);
+! else
+ #endif
+! (void)set_indent(second_indent, SIN_CHANGED);
+ }
+ first_line = FALSE;
+ }
+--- 6302,6337 ----
+ + (fo_white_par ? OPENLINE_KEEPTRAIL : 0)
+ #ifdef FEAT_COMMENTS
+ + (do_comments ? OPENLINE_DO_COM : 0)
++ + ((flags & INSCHAR_COM_LIST) ? OPENLINE_COM_LIST : 0)
+ #endif
+! , ((flags & INSCHAR_COM_LIST) ? second_indent : old_indent));
+! if (!(flags & INSCHAR_COM_LIST))
+! old_indent = 0;
+
+ replace_offset = 0;
+ if (first_line)
+ {
+! if (!(flags & INSCHAR_COM_LIST))
+ {
++ /*
++ * This section is for numeric lists w/o comments. If comment
++ * indents are needed with numeric lists (formatoptions=nq),
++ * then the INSCHAR_COM_LIST flag will cause the corresponding
++ * OPENLINE_COM_LIST flag to be passed through to open_line()
++ * (as seen above)...
++ */
++ if (second_indent < 0 && has_format_option(FO_Q_NUMBER))
++ second_indent = get_number_indent(curwin->w_cursor.lnum -1);
++ if (second_indent >= 0)
++ {
+ #ifdef FEAT_VREPLACE
+! if (State & VREPLACE_FLAG)
+! change_indent(INDENT_SET, second_indent,
+! FALSE, NUL, TRUE);
+! else
+ #endif
+! (void)set_indent(second_indent, SIN_CHANGED);
+! }
+ }
+ first_line = FALSE;
+ }
+*** ../vim-7.3.551/src/misc1.c 2012-06-13 13:40:45.000000000 +0200
+--- src/misc1.c 2012-06-13 16:54:59.000000000 +0200
+***************
+*** 423,449 ****
+ {
+ colnr_T col;
+ pos_T pos;
+- regmmatch_T regmatch;
+
+ if (lnum > curbuf->b_ml.ml_line_count)
+ return -1;
+ pos.lnum = 0;
+! regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC);
+! if (regmatch.regprog != NULL)
+ {
+! regmatch.rmm_ic = FALSE;
+! regmatch.rmm_maxcol = 0;
+! if (vim_regexec_multi(&regmatch, curwin, curbuf, lnum,
+! (colnr_T)0, NULL))
+ {
+! pos.lnum = regmatch.endpos[0].lnum + lnum;
+! pos.col = regmatch.endpos[0].col;
+ #ifdef FEAT_VIRTUALEDIT
+! pos.coladd = 0;
+ #endif
+ }
+ vim_free(regmatch.regprog);
+ }
+
+ if (pos.lnum == 0 || *ml_get_pos(&pos) == NUL)
+ return -1;
+--- 423,492 ----
+ {
+ colnr_T col;
+ pos_T pos;
+
+ if (lnum > curbuf->b_ml.ml_line_count)
+ return -1;
+ pos.lnum = 0;
+!
+! #ifdef FEAT_COMMENTS
+! if (has_format_option(FO_Q_COMS) && has_format_option(FO_Q_NUMBER))
+ {
+! regmatch_T regmatch;
+! int lead_len; /* length of comment leader */
+!
+! lead_len = get_leader_len(ml_get(lnum), NULL, FALSE, TRUE);
+! regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC);
+! if (regmatch.regprog != NULL)
+ {
+! regmatch.rm_ic = FALSE;
+!
+! /* vim_regexec() expects a pointer to a line. This lets us
+! * start matching for the flp beyond any comment leader... */
+! if (vim_regexec(&regmatch, ml_get(lnum) + lead_len, (colnr_T)0))
+! {
+! pos.lnum = lnum;
+! pos.col = *regmatch.endp - (ml_get(lnum) + lead_len);
+! pos.col += lead_len;
+ #ifdef FEAT_VIRTUALEDIT
+! pos.coladd = 0;
+ #endif
++ }
+ }
+ vim_free(regmatch.regprog);
+ }
++ else
++ {
++ /*
++ * What follows is the orig code that is not "comment aware"...
++ *
++ * I'm not sure if regmmatch_T (multi-match) is needed in this case.
++ * It may be true that this section would work properly using the
++ * regmatch_T code above, in which case, these two seperate sections
++ * should be consolidated w/ FEAT_COMMENTS making lead_len > 0...
++ */
++ #endif
++ regmmatch_T regmatch;
++
++ regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC);
++
++ if (regmatch.regprog != NULL)
++ {
++ regmatch.rmm_ic = FALSE;
++ regmatch.rmm_maxcol = 0;
++ if (vim_regexec_multi(&regmatch, curwin, curbuf,
++ lnum, (colnr_T)0, NULL))
++ {
++ pos.lnum = regmatch.endpos[0].lnum + lnum;
++ pos.col = regmatch.endpos[0].col;
++ #ifdef FEAT_VIRTUALEDIT
++ pos.coladd = 0;
++ #endif
++ }
++ vim_free(regmatch.regprog);
++ }
++ #ifdef FEAT_COMMENTS
++ }
++ #endif
+
+ if (pos.lnum == 0 || *ml_get_pos(&pos) == NUL)
+ return -1;
+***************
+*** 502,515 ****
+ * OPENLINE_DO_COM format comments
+ * OPENLINE_KEEPTRAIL keep trailing spaces
+ * OPENLINE_MARKFIX adjust mark positions after the line break
+ *
+ * Return TRUE for success, FALSE for failure
+ */
+ int
+! open_line(dir, flags, old_indent)
+ int dir; /* FORWARD or BACKWARD */
+ int flags;
+! int old_indent; /* indent for after ^^D in Insert mode */
+ {
+ char_u *saved_line; /* copy of the original line */
+ char_u *next_line = NULL; /* copy of the next line */
+--- 545,562 ----
+ * OPENLINE_DO_COM format comments
+ * OPENLINE_KEEPTRAIL keep trailing spaces
+ * OPENLINE_MARKFIX adjust mark positions after the line break
++ * OPENLINE_COM_LIST format comments with list or 2nd line indent
++ *
++ * "second_line_indent": indent for after ^^D in Insert mode or if flag
++ * OPENLINE_COM_LIST
+ *
+ * Return TRUE for success, FALSE for failure
+ */
+ int
+! open_line(dir, flags, second_line_indent)
+ int dir; /* FORWARD or BACKWARD */
+ int flags;
+! int second_line_indent;
+ {
+ char_u *saved_line; /* copy of the original line */
+ char_u *next_line = NULL; /* copy of the next line */
+***************
+*** 650,657 ****
+ * count white space on current line
+ */
+ newindent = get_indent_str(saved_line, (int)curbuf->b_p_ts);
+! if (newindent == 0)
+! newindent = old_indent; /* for ^^D command in insert mode */
+
+ #ifdef FEAT_SMARTINDENT
+ /*
+--- 697,704 ----
+ * count white space on current line
+ */
+ newindent = get_indent_str(saved_line, (int)curbuf->b_p_ts);
+! if (newindent == 0 && !(flags & OPENLINE_COM_LIST))
+! newindent = second_line_indent; /* for ^^D command in insert mode */
+
+ #ifdef FEAT_SMARTINDENT
+ /*
+***************
+*** 1008,1015 ****
+ if (lead_len)
+ {
+ /* allocate buffer (may concatenate p_exta later) */
+! leader = alloc(lead_len + lead_repl_len + extra_space +
+! extra_len + 1);
+ allocated = leader; /* remember to free it later */
+
+ if (leader == NULL)
+--- 1055,1062 ----
+ if (lead_len)
+ {
+ /* allocate buffer (may concatenate p_exta later) */
+! leader = alloc(lead_len + lead_repl_len + extra_space + extra_len
+! + (second_line_indent > 0 ? second_line_indent : 0));
+ allocated = leader; /* remember to free it later */
+
+ if (leader == NULL)
+***************
+*** 1304,1309 ****
+--- 1351,1370 ----
+ /* concatenate leader and p_extra, if there is a leader */
+ if (lead_len)
+ {
++ if (flags & OPENLINE_COM_LIST && second_line_indent > 0)
++ {
++ int i;
++ int padding = second_line_indent - (newindent + STRLEN(leader));
++
++ /* Here whitespace is inserted after the comment char.
++ * Below, set_indent(newindent, SIN_INSERT) will insert the
++ * whitespace needed before the comment char. */
++ for (i = 0; i < padding; i++)
++ {
++ STRCAT(leader, " ");
++ newcol++;
++ }
++ }
+ STRCAT(leader, p_extra);
+ p_extra = leader;
+ did_ai = TRUE; /* So truncating blanks works with comments */
+***************
+*** 4966,4973 ****
+ char_u *
+ FullName_save(fname, force)
+ char_u *fname;
+! int force; /* force expansion, even when it already looks
+! like a full path name */
+ {
+ char_u *buf;
+ char_u *new_fname = NULL;
+--- 5027,5034 ----
+ char_u *
+ FullName_save(fname, force)
+ char_u *fname;
+! int force; /* force expansion, even when it already looks
+! * like a full path name */
+ {
+ char_u *buf;
+ char_u *new_fname = NULL;
+*** ../vim-7.3.551/src/testdir/test68.in 2010-10-09 17:21:42.000000000 +0200
+--- src/testdir/test68.in 2012-06-13 15:49:38.000000000 +0200
+***************
+*** 51,56 ****
+--- 51,77 ----
+ }
+
+ STARTTEST
++ /^{/+1
++ :set tw=5 fo=qn comments=:#
++ gwap
++ ENDTEST
++
++ {
++ # 1 a b
++ }
++
++ STARTTEST
++ /^{/+1
++ :set tw=5 fo=q2 comments=:#
++ gwap
++ ENDTEST
++
++ {
++ # x
++ # a b
++ }
++
++ STARTTEST
+ /^{/+2
+ :set tw& fo=a
+ I^^
+*** ../vim-7.3.551/src/testdir/test68.ok 2010-10-09 17:21:42.000000000 +0200
+--- src/testdir/test68.ok 2012-06-13 15:49:38.000000000 +0200
+***************
+*** 34,38 ****
+--- 34,50 ----
+ }
+
+
++ {
++ # 1 a
++ # b
++ }
++
++
++ {
++ # x a
++ # b
++ }
++
++
+ { 1aa ^^2bb }
+
+*** ../vim-7.3.551/src/version.c 2012-06-13 14:28:16.000000000 +0200
+--- src/version.c 2012-06-13 16:36:14.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 552,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+31. You code your homework in HTML and give your instructor the URL.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.553 b/source/ap/vim/patches/7.3.553
new file mode 100644
index 000000000..82c757e10
--- /dev/null
+++ b/source/ap/vim/patches/7.3.553
@@ -0,0 +1,85 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.553
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.553
+Problem: With double-width characters and 'listchars' containing "precedes"
+ the text is displayed one cell off.
+Solution: Check for double-width character being overwritten by the
+ "precedes" character. (Yasuhiro Matsumoto)
+Files: src/screen.c
+
+
+*** ../vim-7.3.552/src/screen.c 2012-06-06 19:05:45.000000000 +0200
+--- src/screen.c 2012-06-13 17:55:10.000000000 +0200
+***************
+*** 89,94 ****
+--- 89,97 ----
+
+ #include "vim.h"
+
++ #define MB_FILLER_CHAR '<' /* character used when a double-width character
++ * doesn't fit. */
++
+ /*
+ * The attributes that are actually active for writing to the screen.
+ */
+***************
+*** 4016,4022 ****
+ if (n_skip > 0 && mb_l > 1 && n_extra == 0)
+ {
+ n_extra = 1;
+! c_extra = '<';
+ c = ' ';
+ if (area_attr == 0 && search_attr == 0)
+ {
+--- 4019,4025 ----
+ if (n_skip > 0 && mb_l > 1 && n_extra == 0)
+ {
+ n_extra = 1;
+! c_extra = MB_FILLER_CHAR;
+ c = ' ';
+ if (area_attr == 0 && search_attr == 0)
+ {
+***************
+*** 4576,4581 ****
+--- 4579,4593 ----
+ c = lcs_prec;
+ lcs_prec_todo = NUL;
+ #ifdef FEAT_MBYTE
++ if (has_mbyte && (*mb_char2cells)(mb_c) > 1)
++ {
++ /* Double-width character being overwritten by the "precedes"
++ * character, need to fill up half the character. */
++ c_extra = MB_FILLER_CHAR;
++ n_extra = 1;
++ n_attr = 2;
++ extra_attr = hl_attr(HLF_AT);
++ }
+ mb_c = c;
+ if (enc_utf8 && (*mb_char2len)(c) > 1)
+ {
+*** ../vim-7.3.552/src/version.c 2012-06-13 17:28:51.000000000 +0200
+--- src/version.c 2012-06-13 17:48:45.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 553,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+32. You don't know what sex three of your closest friends are, because they
+ have neutral nicknames and you never bothered to ask.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.554 b/source/ap/vim/patches/7.3.554
new file mode 100644
index 000000000..e8d4d37a9
--- /dev/null
+++ b/source/ap/vim/patches/7.3.554
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.554
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.554 (after 7.3.551)
+Problem: Compiler warning for unused argument.
+Solution: Add UNUSED.
+Files: src/window.c
+
+
+*** ../vim-7.3.553/src/window.c 2012-06-13 14:28:16.000000000 +0200
+--- src/window.c 2012-06-13 17:46:49.000000000 +0200
+***************
+*** 3723,3729 ****
+ enter_tabpage(tp, old_curbuf, trigger_autocmds)
+ tabpage_T *tp;
+ buf_T *old_curbuf UNUSED;
+! int trigger_autocmds;
+ {
+ int old_off = tp->tp_firstwin->w_winrow;
+ win_T *next_prevwin = tp->tp_prevwin;
+--- 3723,3729 ----
+ enter_tabpage(tp, old_curbuf, trigger_autocmds)
+ tabpage_T *tp;
+ buf_T *old_curbuf UNUSED;
+! int trigger_autocmds UNUSED;
+ {
+ int old_off = tp->tp_firstwin->w_winrow;
+ win_T *next_prevwin = tp->tp_prevwin;
+*** ../vim-7.3.553/src/version.c 2012-06-13 18:06:32.000000000 +0200
+--- src/version.c 2012-06-13 18:15:08.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 554,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+33. You name your children Eudora, Mozilla and Dotcom.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.555 b/source/ap/vim/patches/7.3.555
new file mode 100644
index 000000000..acb684522
--- /dev/null
+++ b/source/ap/vim/patches/7.3.555
@@ -0,0 +1,232 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.555
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.555
+Problem: Building on IBM z/OS fails.
+Solution: Adjust configure. Use the QUOTESED value from config.mk instead of
+ the hard coded one in Makefile. (Stephen Bovy)
+Files: src/configure.in, src/auto/configure, src/Makefile
+
+
+*** ../vim-7.3.554/src/configure.in 2012-02-05 22:51:27.000000000 +0100
+--- src/configure.in 2012-06-13 18:52:11.000000000 +0200
+***************
+*** 329,343 ****
+ echo ""
+ echo "------------------------------------------"
+ echo " On z/OS Unix, the environment variable"
+! echo " __CC_${ccn}MODE must be set to \"1\"!"
+ echo " Do:"
+ echo " export _CC_${ccn}MODE=1"
+ echo " and then call configure again."
+ echo "------------------------------------------"
+ exit 1
+ fi
+! CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float\\(IEEE\\)";
+! LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
+ AC_MSG_RESULT(yes)
+ ;;
+ *) zOSUnix="no";
+--- 329,346 ----
+ echo ""
+ echo "------------------------------------------"
+ echo " On z/OS Unix, the environment variable"
+! echo " _CC_${ccn}MODE must be set to \"1\"!"
+ echo " Do:"
+ echo " export _CC_${ccn}MODE=1"
+ echo " and then call configure again."
+ echo "------------------------------------------"
+ exit 1
+ fi
+! # Set CFLAGS for configure process.
+! # This will be reset later for config.mk.
+! # Use haltonmsg to force error for missing H files.
+! CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
+! LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
+ AC_MSG_RESULT(yes)
+ ;;
+ *) zOSUnix="no";
+***************
+*** 2378,2387 ****
+ if test -z "$SKIP_MOTIF"; then
+ cppflags_save=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+! AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
+! Xm/UnhighlightT.h Xm/Notebook.h)
+
+! if test $ac_cv_header_Xm_XpmP_h = yes; then
+ dnl Solaris uses XpmAttributes_21, very annoying.
+ AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
+ AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
+--- 2381,2395 ----
+ if test -z "$SKIP_MOTIF"; then
+ cppflags_save=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+! if test "$zOSUnix" = "yes"; then
+! xmheader="Xm/Xm.h"
+! else
+! xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
+! Xm/UnhighlightT.h Xm/Notebook.h"
+! fi
+! AC_CHECK_HEADERS($xmheader)
+
+! if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
+ dnl Solaris uses XpmAttributes_21, very annoying.
+ AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
+ AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
+***************
+*** 3642,3647 ****
+--- 3650,3660 ----
+ fi
+ AC_SUBST(LINK_AS_NEEDED)
+
++ # IBM z/OS reset CFLAGS for config.mk
++ if test "$zOSUnix" = "yes"; then
++ CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
++ fi
++
+ dnl write output files
+ AC_OUTPUT(auto/config.mk:config.mk.in)
+
+*** ../vim-7.3.554/src/auto/configure 2012-02-05 22:51:27.000000000 +0100
+--- src/auto/configure 2012-06-13 18:53:04.000000000 +0200
+***************
+*** 4426,4440 ****
+ echo ""
+ echo "------------------------------------------"
+ echo " On z/OS Unix, the environment variable"
+! echo " __CC_${ccn}MODE must be set to \"1\"!"
+ echo " Do:"
+ echo " export _CC_${ccn}MODE=1"
+ echo " and then call configure again."
+ echo "------------------------------------------"
+ exit 1
+ fi
+! CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float\\(IEEE\\)";
+! LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ $as_echo "yes" >&6; }
+ ;;
+--- 4426,4443 ----
+ echo ""
+ echo "------------------------------------------"
+ echo " On z/OS Unix, the environment variable"
+! echo " _CC_${ccn}MODE must be set to \"1\"!"
+ echo " Do:"
+ echo " export _CC_${ccn}MODE=1"
+ echo " and then call configure again."
+ echo "------------------------------------------"
+ exit 1
+ fi
+! # Set CFLAGS for configure process.
+! # This will be reset later for config.mk.
+! # Use haltonmsg to force error for missing H files.
+! CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
+! LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ $as_echo "yes" >&6; }
+ ;;
+***************
+*** 8697,8704 ****
+ if test -z "$SKIP_MOTIF"; then
+ cppflags_save=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+! for ac_header in Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
+! Xm/UnhighlightT.h Xm/Notebook.h
+ do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+--- 8700,8712 ----
+ if test -z "$SKIP_MOTIF"; then
+ cppflags_save=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+! if test "$zOSUnix" = "yes"; then
+! xmheader="Xm/Xm.h"
+! else
+! xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
+! Xm/UnhighlightT.h Xm/Notebook.h"
+! fi
+! for ac_header in $xmheader
+ do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+***************
+*** 8713,8719 ****
+ done
+
+
+! if test $ac_cv_header_Xm_XpmP_h = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XpmAttributes_21 in Xm/XpmP.h" >&5
+ $as_echo_n "checking for XpmAttributes_21 in Xm/XpmP.h... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+--- 8721,8727 ----
+ done
+
+
+! if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XpmAttributes_21 in Xm/XpmP.h" >&5
+ $as_echo_n "checking for XpmAttributes_21 in Xm/XpmP.h... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+***************
+*** 12590,12595 ****
+--- 12598,12608 ----
+ fi
+
+
++ # IBM z/OS reset CFLAGS for config.mk
++ if test "$zOSUnix" = "yes"; then
++ CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
++ fi
++
+ ac_config_files="$ac_config_files auto/config.mk:config.mk.in"
+
+ cat >confcache <<\_ACEOF
+*** ../vim-7.3.554/src/Makefile 2012-03-28 17:17:45.000000000 +0200
+--- src/Makefile 2012-06-13 18:48:13.000000000 +0200
+***************
+*** 875,880 ****
+--- 875,884 ----
+ #CFLAGS = -O -Qtarget=m88110compat
+ #EXTRA_LIBS = -lgen
+
++ # The value of QUOTESED comes from auto/config.mk.
++ # Uncomment the next line to use the default value.
++ # QUOTESED = sed -e 's/[\\"]/\\&/g' -e 's/\\"/"/' -e 's/\\";$$/";/'
++
+ ##################### end of system specific lines ################### }}}
+
+ ### Names of the programs and targets {{{1
+***************
+*** 2411,2417 ****
+ auto/osdef.h: auto/config.h osdef.sh osdef1.h.in osdef2.h.in
+ CC="$(CC) $(OSDEF_CFLAGS)" srcdir=$(srcdir) sh $(srcdir)/osdef.sh
+
+- QUOTESED = sed -e 's/[\\"]/\\&/g' -e 's/\\"/"/' -e 's/\\";$$/";/'
+ auto/pathdef.c: Makefile auto/config.mk
+ -@echo creating $@
+ -@echo '/* pathdef.c */' > $@
+--- 2415,2420 ----
+*** ../vim-7.3.554/src/version.c 2012-06-13 18:15:13.000000000 +0200
+--- src/version.c 2012-06-13 19:13:54.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 555,
+ /**/
+
+--
+My sister Cecilia opened a computer store in Hawaii.
+She sells C shells by the seashore.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.556 b/source/ap/vim/patches/7.3.556
new file mode 100644
index 000000000..068b8d1f8
--- /dev/null
+++ b/source/ap/vim/patches/7.3.556
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.556
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.556
+Problem: Compiler warnings on 64 bit Windows.
+Solution: Add type casts. (Mike Williams)
+Files: src/misc1.c
+
+
+*** ../vim-7.3.555/src/misc1.c 2012-06-13 17:28:51.000000000 +0200
+--- src/misc1.c 2012-06-14 20:55:47.000000000 +0200
+***************
+*** 445,452 ****
+ if (vim_regexec(&regmatch, ml_get(lnum) + lead_len, (colnr_T)0))
+ {
+ pos.lnum = lnum;
+! pos.col = *regmatch.endp - (ml_get(lnum) + lead_len);
+! pos.col += lead_len;
+ #ifdef FEAT_VIRTUALEDIT
+ pos.coladd = 0;
+ #endif
+--- 445,451 ----
+ if (vim_regexec(&regmatch, ml_get(lnum) + lead_len, (colnr_T)0))
+ {
+ pos.lnum = lnum;
+! pos.col = (colnr_T)(*regmatch.endp - ml_get(lnum));
+ #ifdef FEAT_VIRTUALEDIT
+ pos.coladd = 0;
+ #endif
+***************
+*** 1354,1360 ****
+ if (flags & OPENLINE_COM_LIST && second_line_indent > 0)
+ {
+ int i;
+! int padding = second_line_indent - (newindent + STRLEN(leader));
+
+ /* Here whitespace is inserted after the comment char.
+ * Below, set_indent(newindent, SIN_INSERT) will insert the
+--- 1353,1360 ----
+ if (flags & OPENLINE_COM_LIST && second_line_indent > 0)
+ {
+ int i;
+! int padding = second_line_indent
+! - (newindent + (int)STRLEN(leader));
+
+ /* Here whitespace is inserted after the comment char.
+ * Below, set_indent(newindent, SIN_INSERT) will insert the
+*** ../vim-7.3.555/src/version.c 2012-06-13 19:19:36.000000000 +0200
+--- src/version.c 2012-06-14 20:54:59.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 556,
+ /**/
+
+--
+He who laughs last, thinks slowest.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.557 b/source/ap/vim/patches/7.3.557
new file mode 100644
index 000000000..663c0720e
--- /dev/null
+++ b/source/ap/vim/patches/7.3.557
@@ -0,0 +1,99 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.557
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.557
+Problem: Crash when an autocommand wipes out a buffer when it is hidden.
+Solution: Restore the current window when needed. (Christian Brabandt)
+Files: src/buffer.c
+
+
+*** ../vim-7.3.556/src/buffer.c 2012-06-13 14:28:16.000000000 +0200
+--- src/buffer.c 2012-06-20 11:49:54.000000000 +0200
+***************
+*** 1363,1368 ****
+--- 1363,1369 ----
+ int action;
+ {
+ buf_T *prevbuf;
++ win_T *prevwin;
+ int unload = (action == DOBUF_UNLOAD || action == DOBUF_DEL
+ || action == DOBUF_WIPE);
+
+***************
+*** 1402,1423 ****
+ if (buf_valid(prevbuf))
+ #endif
+ {
+ if (prevbuf == curbuf)
+ u_sync(FALSE);
+ close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf,
+ unload ? action : (action == DOBUF_GOTO
+ && !P_HID(prevbuf)
+ && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE);
+ }
+ }
+ #ifdef FEAT_AUTOCMD
+ /* An autocommand may have deleted "buf", already entered it (e.g., when
+! * it did ":bunload") or aborted the script processing! */
+! # ifdef FEAT_EVAL
+! if (buf_valid(buf) && buf != curbuf && !aborting())
+! # else
+! if (buf_valid(buf) && buf != curbuf)
+! # endif
+ #endif
+ enter_buffer(buf);
+ }
+--- 1403,1432 ----
+ if (buf_valid(prevbuf))
+ #endif
+ {
++ prevwin = curwin;
+ if (prevbuf == curbuf)
+ u_sync(FALSE);
+ close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf,
+ unload ? action : (action == DOBUF_GOTO
+ && !P_HID(prevbuf)
+ && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE);
++ if (curwin != prevwin && win_valid(prevwin))
++ /* autocommands changed curwin, Grr! */
++ curwin = prevwin;
+ }
+ }
+ #ifdef FEAT_AUTOCMD
+ /* An autocommand may have deleted "buf", already entered it (e.g., when
+! * it did ":bunload") or aborted the script processing!
+! * If curwin->w_buffer is null, enter_buffer() will make it valid again */
+! if ((buf_valid(buf) && buf != curbuf
+! #ifdef FEAT_EVAL
+! && !aborting()
+! #endif
+! #ifdef FEAT_WINDOWS
+! ) || curwin->w_buffer == NULL
+! #endif
+! )
+ #endif
+ enter_buffer(buf);
+ }
+*** ../vim-7.3.556/src/version.c 2012-06-14 20:59:20.000000000 +0200
+--- src/version.c 2012-06-20 11:53:56.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 557,
+ /**/
+
+--
+Don't read everything you believe.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.558 b/source/ap/vim/patches/7.3.558
new file mode 100644
index 000000000..015bc37da
--- /dev/null
+++ b/source/ap/vim/patches/7.3.558
@@ -0,0 +1,90 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.558
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.558
+Problem: Memory access error. (Gary Johnson)
+Solution: Allocate one more byte. (Dominique Pelle)
+Files: src/misc1.c
+
+
+*** ../vim-7.3.557/src/misc1.c 2012-06-14 20:59:20.000000000 +0200
+--- src/misc1.c 2012-06-20 12:34:57.000000000 +0200
+***************
+*** 460,466 ****
+ *
+ * I'm not sure if regmmatch_T (multi-match) is needed in this case.
+ * It may be true that this section would work properly using the
+! * regmatch_T code above, in which case, these two seperate sections
+ * should be consolidated w/ FEAT_COMMENTS making lead_len > 0...
+ */
+ #endif
+--- 460,466 ----
+ *
+ * I'm not sure if regmmatch_T (multi-match) is needed in this case.
+ * It may be true that this section would work properly using the
+! * regmatch_T code above, in which case, these two separate sections
+ * should be consolidated w/ FEAT_COMMENTS making lead_len > 0...
+ */
+ #endif
+***************
+*** 1053,1061 ****
+ }
+ if (lead_len)
+ {
+! /* allocate buffer (may concatenate p_exta later) */
+ leader = alloc(lead_len + lead_repl_len + extra_space + extra_len
+! + (second_line_indent > 0 ? second_line_indent : 0));
+ allocated = leader; /* remember to free it later */
+
+ if (leader == NULL)
+--- 1053,1061 ----
+ }
+ if (lead_len)
+ {
+! /* allocate buffer (may concatenate p_extra later) */
+ leader = alloc(lead_len + lead_repl_len + extra_space + extra_len
+! + (second_line_indent > 0 ? second_line_indent : 0) + 1);
+ allocated = leader; /* remember to free it later */
+
+ if (leader == NULL)
+***************
+*** 3342,3348 ****
+ buf = alloc(buflen);
+ else if (maxlen < 10)
+ {
+! /* Need some more space. This migth happen when receiving a long
+ * escape sequence. */
+ buflen += 100;
+ buf = vim_realloc(buf, buflen);
+--- 3342,3348 ----
+ buf = alloc(buflen);
+ else if (maxlen < 10)
+ {
+! /* Need some more space. This might happen when receiving a long
+ * escape sequence. */
+ buflen += 100;
+ buf = vim_realloc(buf, buflen);
+*** ../vim-7.3.557/src/version.c 2012-06-20 11:54:55.000000000 +0200
+--- src/version.c 2012-06-20 12:36:29.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 558,
+ /**/
+
+--
+George: "I just got a new set of golf clubs for my wife!"
+ John: "Great trade!"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.559 b/source/ap/vim/patches/7.3.559
new file mode 100644
index 000000000..df7673723
--- /dev/null
+++ b/source/ap/vim/patches/7.3.559
@@ -0,0 +1,131 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.559
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.559
+Problem: home_replace() does not work with 8.3 filename.
+Solution: Make ":p" expand 8.3 name to full path. (Yasuhiro Matsumoto)
+Files: src/eval.c, src/misc1.c
+
+
+*** ../vim-7.3.558/src/eval.c 2012-06-13 14:28:16.000000000 +0200
+--- src/eval.c 2012-06-20 13:52:47.000000000 +0200
+***************
+*** 23554,23559 ****
+--- 23554,23580 ----
+ return -1;
+ }
+
++ #ifdef WIN3264
++ # if _WIN32_WINNT >= 0x0500
++ if (vim_strchr(*fnamep, '~') != NULL)
++ {
++ /* Expand 8.3 filename to full path. Needed to make sure the same
++ * file does not have two different names.
++ * Note: problem does not occur if _WIN32_WINNT < 0x0500. */
++ p = alloc(_MAX_PATH + 1);
++ if (p != NULL)
++ {
++ if (GetLongPathName(*fnamep, p, MAXPATHL))
++ {
++ vim_free(*bufp);
++ *bufp = *fnamep = p;
++ }
++ else
++ vim_free(p);
++ }
++ }
++ # endif
++ #endif
+ /* Append a path separator to a directory. */
+ if (mch_isdir(*fnamep))
+ {
+*** ../vim-7.3.558/src/misc1.c 2012-06-20 12:40:01.000000000 +0200
+--- src/misc1.c 2012-06-20 13:57:22.000000000 +0200
+***************
+*** 4499,4505 ****
+ {
+ size_t dirlen = 0, envlen = 0;
+ size_t len;
+! char_u *homedir_env;
+ char_u *p;
+
+ if (src == NULL)
+--- 4499,4505 ----
+ {
+ size_t dirlen = 0, envlen = 0;
+ size_t len;
+! char_u *homedir_env, *homedir_env_orig;
+ char_u *p;
+
+ if (src == NULL)
+***************
+*** 4525,4533 ****
+ dirlen = STRLEN(homedir);
+
+ #ifdef VMS
+! homedir_env = mch_getenv((char_u *)"SYS$LOGIN");
+ #else
+! homedir_env = mch_getenv((char_u *)"HOME");
+ #endif
+
+ if (homedir_env != NULL && *homedir_env == NUL)
+--- 4525,4548 ----
+ dirlen = STRLEN(homedir);
+
+ #ifdef VMS
+! homedir_env_orig = homedir_env = mch_getenv((char_u *)"SYS$LOGIN");
+ #else
+! homedir_env_orig = homedir_env = mch_getenv((char_u *)"HOME");
+! #endif
+! #if defined(FEAT_MODIFY_FNAME) || defined(WIN3264)
+! if (vim_strchr(homedir_env, '~') != NULL)
+! {
+! int usedlen = 0;
+! int flen;
+! char_u *fbuf = NULL;
+!
+! flen = (int)STRLEN(homedir_env);
+! (void)modify_fname(":p", &usedlen, &homedir_env, &fbuf, &flen);
+! flen = (int)STRLEN(homedir_env);
+! if (flen > 0 && vim_ispathsep(homedir_env[flen - 1]))
+! /* Remove the trailing / that is added to a directory. */
+! homedir_env[flen - 1] = NUL;
+! }
+ #endif
+
+ if (homedir_env != NULL && *homedir_env == NUL)
+***************
+*** 4585,4590 ****
+--- 4600,4608 ----
+ /* if (dstlen == 0) out of space, what to do??? */
+
+ *dst = NUL;
++
++ if (homedir_env != homedir_env_orig)
++ vim_free(homedir_env);
+ }
+
+ /*
+*** ../vim-7.3.558/src/version.c 2012-06-20 12:40:01.000000000 +0200
+--- src/version.c 2012-06-20 14:02:11.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 559,
+ /**/
+
+--
+The future isn't what it used to be.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.560 b/source/ap/vim/patches/7.3.560
new file mode 100644
index 000000000..7f4641118
--- /dev/null
+++ b/source/ap/vim/patches/7.3.560
@@ -0,0 +1,49 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.560
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.560
+Problem: Get an error for a locked argument in extend().
+Solution: Initialize the lock flag for a dictionary. (Yukihiro Nakadaira)
+Files: src/eval.c
+
+
+*** ../vim-7.3.559/src/eval.c 2012-06-20 14:02:23.000000000 +0200
+--- src/eval.c 2012-06-20 14:08:34.000000000 +0200
+***************
+*** 19981,19986 ****
+--- 19981,19987 ----
+ dictitem_T *dict_var;
+ {
+ hash_init(&dict->dv_hashtab);
++ dict->dv_lock = 0;
+ dict->dv_refcount = DO_NOT_FREE_CNT;
+ dict->dv_copyID = 0;
+ dict_var->di_tv.vval.v_dict = dict;
+*** ../vim-7.3.559/src/version.c 2012-06-20 14:02:23.000000000 +0200
+--- src/version.c 2012-06-20 14:09:34.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 560,
+ /**/
+
+--
+"Oh, no! NOT the Spanish Inquisition!"
+"NOBODY expects the Spanish Inquisition!!!"
+ -- Monty Python sketch --
+"Oh, no! NOT another option!"
+"EVERYBODY expects another option!!!"
+ -- Discussion in vim-dev mailing list --
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.561 b/source/ap/vim/patches/7.3.561
new file mode 100644
index 000000000..d51030c4e
--- /dev/null
+++ b/source/ap/vim/patches/7.3.561
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.561
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.561
+Problem: Using refresh: always in a complete function breaks the "."
+ command. (Val Markovic)
+Solution: Add match leader to the redo buffer. (Yasuhiro Matsumoto)
+Files: src/edit.c
+
+
+*** ../vim-7.3.560/src/edit.c 2012-06-13 17:28:51.000000000 +0200
+--- src/edit.c 2012-06-20 14:22:23.000000000 +0200
+***************
+*** 3467,3476 ****
+--- 3467,3480 ----
+ (*mb_char2bytes)(c, buf);
+ buf[cc] = NUL;
+ ins_char_bytes(buf, cc);
++ AppendToRedobuff(buf);
+ }
+ else
+ #endif
++ {
+ ins_char(c);
++ AppendCharToRedobuff(c);
++ }
+
+ /* If we didn't complete finding matches we must search again. */
+ if (ins_compl_need_restart())
+*** ../vim-7.3.560/src/version.c 2012-06-20 14:13:02.000000000 +0200
+--- src/version.c 2012-06-20 14:20:13.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 561,
+ /**/
+
+--
+Microsoft is to software what McDonalds is to gourmet cooking
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.562 b/source/ap/vim/patches/7.3.562
new file mode 100644
index 000000000..626de4950
--- /dev/null
+++ b/source/ap/vim/patches/7.3.562
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.562
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.562
+Problem: ":profdel" should not work when the +profile feature is disabled.
+Solution: Call ex_ni(). (Yasuhiro Matsumoto)
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.3.561/src/ex_cmds2.c 2012-06-13 14:28:16.000000000 +0200
+--- src/ex_cmds2.c 2012-06-20 15:43:44.000000000 +0200
+***************
+*** 596,605 ****
+ garray_T *gap;
+
+ gap = &dbg_breakp;
+- #ifdef FEAT_PROFILE
+ if (eap->cmdidx == CMD_profdel)
+ gap = &prof_ga;
+ #endif
+
+ if (vim_isdigit(*eap->arg))
+ {
+--- 596,610 ----
+ garray_T *gap;
+
+ gap = &dbg_breakp;
+ if (eap->cmdidx == CMD_profdel)
++ {
++ #ifdef FEAT_PROFILE
+ gap = &prof_ga;
++ #else
++ ex_ni(eap);
++ return;
+ #endif
++ }
+
+ if (vim_isdigit(*eap->arg))
+ {
+*** ../vim-7.3.561/src/version.c 2012-06-20 14:26:30.000000000 +0200
+--- src/version.c 2012-06-20 15:44:00.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 562,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+42. Your virtual girlfriend finds a new net sweetheart with a larger bandwidth.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.563 b/source/ap/vim/patches/7.3.563
new file mode 100644
index 000000000..c2ebf4105
--- /dev/null
+++ b/source/ap/vim/patches/7.3.563
@@ -0,0 +1,97 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.563
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.563 (after 7.3.557)
+Problem: Can't build with tiny features.
+Solution: Add #ifdef.
+Files: src/buffer.c
+
+
+*** ../vim-7.3.562/src/buffer.c 2012-06-20 11:54:55.000000000 +0200
+--- src/buffer.c 2012-06-20 17:40:59.000000000 +0200
+***************
+*** 1363,1369 ****
+--- 1363,1371 ----
+ int action;
+ {
+ buf_T *prevbuf;
++ #ifdef FEAT_WINDOWS
+ win_T *prevwin;
++ #endif
+ int unload = (action == DOBUF_UNLOAD || action == DOBUF_DEL
+ || action == DOBUF_WIPE);
+
+***************
+*** 1403,1418 ****
+--- 1405,1424 ----
+ if (buf_valid(prevbuf))
+ #endif
+ {
++ #ifdef FEAT_WINDOWS
+ prevwin = curwin;
++ #endif
+ if (prevbuf == curbuf)
+ u_sync(FALSE);
+ close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf,
+ unload ? action : (action == DOBUF_GOTO
+ && !P_HID(prevbuf)
+ && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE);
++ #ifdef FEAT_WINDOWS
+ if (curwin != prevwin && win_valid(prevwin))
+ /* autocommands changed curwin, Grr! */
+ curwin = prevwin;
++ #endif
+ }
+ }
+ #ifdef FEAT_AUTOCMD
+***************
+*** 1420,1431 ****
+ * it did ":bunload") or aborted the script processing!
+ * If curwin->w_buffer is null, enter_buffer() will make it valid again */
+ if ((buf_valid(buf) && buf != curbuf
+! #ifdef FEAT_EVAL
+ && !aborting()
+! #endif
+! #ifdef FEAT_WINDOWS
+ ) || curwin->w_buffer == NULL
+! #endif
+ )
+ #endif
+ enter_buffer(buf);
+--- 1426,1437 ----
+ * it did ":bunload") or aborted the script processing!
+ * If curwin->w_buffer is null, enter_buffer() will make it valid again */
+ if ((buf_valid(buf) && buf != curbuf
+! # ifdef FEAT_EVAL
+ && !aborting()
+! # endif
+! # ifdef FEAT_WINDOWS
+ ) || curwin->w_buffer == NULL
+! # endif
+ )
+ #endif
+ enter_buffer(buf);
+*** ../vim-7.3.562/src/version.c 2012-06-20 15:48:53.000000000 +0200
+--- src/version.c 2012-06-20 17:54:01.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 563,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+45. You buy a Captain Kirk chair with a built-in keyboard and mouse.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.564 b/source/ap/vim/patches/7.3.564
new file mode 100644
index 000000000..e806b8e46
--- /dev/null
+++ b/source/ap/vim/patches/7.3.564
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.564
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.564 (after 7.3.559)
+Problem: Warning for pointer conversion.
+Solution: Add type cast.
+Files: src/misc1.c
+
+
+*** ../vim-7.3.563/src/misc1.c 2012-06-20 14:02:23.000000000 +0200
+--- src/misc1.c 2012-06-20 17:41:22.000000000 +0200
+***************
+*** 4537,4543 ****
+ char_u *fbuf = NULL;
+
+ flen = (int)STRLEN(homedir_env);
+! (void)modify_fname(":p", &usedlen, &homedir_env, &fbuf, &flen);
+ flen = (int)STRLEN(homedir_env);
+ if (flen > 0 && vim_ispathsep(homedir_env[flen - 1]))
+ /* Remove the trailing / that is added to a directory. */
+--- 4537,4544 ----
+ char_u *fbuf = NULL;
+
+ flen = (int)STRLEN(homedir_env);
+! (void)modify_fname((char_u *)":p", &usedlen,
+! &homedir_env, &fbuf, &flen);
+ flen = (int)STRLEN(homedir_env);
+ if (flen > 0 && vim_ispathsep(homedir_env[flen - 1]))
+ /* Remove the trailing / that is added to a directory. */
+*** ../vim-7.3.563/src/version.c 2012-06-20 17:54:34.000000000 +0200
+--- src/version.c 2012-06-20 17:55:26.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 564,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+46. Your wife makes a new rule: "The computer cannot come to bed."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.565 b/source/ap/vim/patches/7.3.565
new file mode 100644
index 000000000..171520b36
--- /dev/null
+++ b/source/ap/vim/patches/7.3.565
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.566
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.566
+Problem: Can't generate proto file for Python 3.
+Solution: Add PYTHON3_CFLAGS to LINT_CFLAGS.
+Files: src/Makefile
+
+
+*** ../vim-7.3.564/src/Makefile 2012-06-13 19:19:36.000000000 +0200
+--- src/Makefile 2012-06-20 18:36:14.000000000 +0200
+***************
+*** 1339,1345 ****
+ # with "-E".
+ OSDEF_CFLAGS = $(PRE_DEFS) $(POST_DEFS)
+
+! LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(RUBY_CFLAGS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca
+
+ LINT_EXTRA = -DUSE_SNIFF -DHANGUL_INPUT -D"__attribute__(x)="
+
+--- 1339,1345 ----
+ # with "-E".
+ OSDEF_CFLAGS = $(PRE_DEFS) $(POST_DEFS)
+
+! LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(RUBY_CFLAGS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) $(PYTHON3_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca
+
+ LINT_EXTRA = -DUSE_SNIFF -DHANGUL_INPUT -D"__attribute__(x)="
+
+*** ../vim-7.3.564/src/version.c 2012-06-20 17:56:06.000000000 +0200
+--- src/version.c 2012-06-20 18:39:04.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 565,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+47. You are so familiar with the WWW that you find the search engines useless.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.566 b/source/ap/vim/patches/7.3.566
new file mode 100644
index 000000000..a0600e812
--- /dev/null
+++ b/source/ap/vim/patches/7.3.566
@@ -0,0 +1,83 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.566
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.566 (after 7.3.561)
+Problem: Redo after completion does not work correctly when refresh: always
+ is not used. (Raymond Ko)
+Solution: Check the compl_opt_refresh_always flag. (Christian Brabandt)
+Files: src/edit.c
+
+
+*** ../vim-7.3.565/src/edit.c 2012-06-20 14:26:30.000000000 +0200
+--- src/edit.c 2012-06-20 22:52:03.000000000 +0200
+***************
+*** 3467,3479 ****
+ (*mb_char2bytes)(c, buf);
+ buf[cc] = NUL;
+ ins_char_bytes(buf, cc);
+! AppendToRedobuff(buf);
+ }
+ else
+ #endif
+ {
+ ins_char(c);
+! AppendCharToRedobuff(c);
+ }
+
+ /* If we didn't complete finding matches we must search again. */
+--- 3467,3481 ----
+ (*mb_char2bytes)(c, buf);
+ buf[cc] = NUL;
+ ins_char_bytes(buf, cc);
+! if (compl_opt_refresh_always)
+! AppendToRedobuff(buf);
+ }
+ else
+ #endif
+ {
+ ins_char(c);
+! if (compl_opt_refresh_always)
+! AppendCharToRedobuff(c);
+ }
+
+ /* If we didn't complete finding matches we must search again. */
+***************
+*** 3481,3487 ****
+ ins_compl_restart();
+
+ /* When 'always' is set, don't reset compl_leader. While completing,
+! * cursor don't point original position, changing compl_leader would
+ * break redo. */
+ if (!compl_opt_refresh_always)
+ {
+--- 3483,3489 ----
+ ins_compl_restart();
+
+ /* When 'always' is set, don't reset compl_leader. While completing,
+! * cursor doesn't point original position, changing compl_leader would
+ * break redo. */
+ if (!compl_opt_refresh_always)
+ {
+*** ../vim-7.3.565/src/version.c 2012-06-20 18:39:12.000000000 +0200
+--- src/version.c 2012-06-20 22:54:27.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 566,
+ /**/
+
+--
+CVS sux, men don't like commitment
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.567 b/source/ap/vim/patches/7.3.567
new file mode 100644
index 000000000..62399f18a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.567
@@ -0,0 +1,56 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.567
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.567
+Problem: Missing copyright notice.
+Solution: Add Vim copyright notice. (Taro Muraoka)
+Files: src/dehqx.py
+
+
+*** ../vim-7.3.566/src/dehqx.py 2010-08-15 21:57:32.000000000 +0200
+--- src/dehqx.py 2012-06-29 11:27:41.000000000 +0200
+***************
+*** 1,7 ****
+ # Python script to get both the data and resource fork from a BinHex encoded
+ # file.
+! # Author: Taro Muraoka
+! # Last Change: 2003 Oct 25
+
+ import sys
+ import binhex
+--- 1,10 ----
+ # Python script to get both the data and resource fork from a BinHex encoded
+ # file.
+! # Author: MURAOKA Taro <koron.kaoriya@gmail.com>
+! # Last Change: 2012 Jun 29
+! #
+! # Copyright (C) 2003,12 MURAOKA Taro <koron.kaoriya@gmail.com>
+! # THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE.
+
+ import sys
+ import binhex
+*** ../vim-7.3.566/src/version.c 2012-06-20 22:55:56.000000000 +0200
+--- src/version.c 2012-06-29 11:45:36.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 567,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+66. You create a homepage with the impression to cure the afflicted...but
+ your hidden agenda is to receive more e-mail.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.568 b/source/ap/vim/patches/7.3.568
new file mode 100644
index 000000000..ef4fcfe51
--- /dev/null
+++ b/source/ap/vim/patches/7.3.568
@@ -0,0 +1,138 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.568
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.568
+Problem: Bad indents for #ifdefs.
+Solution: Add and remove spaces. (Elias Diem)
+Files: src/globals.h
+
+
+*** ../vim-7.3.567/src/globals.h 2012-02-11 23:45:30.000000000 +0100
+--- src/globals.h 2012-06-29 12:32:14.000000000 +0200
+***************
+*** 513,520 ****
+ # define ONE_CLIPBOARD
+ # endif
+
+! #define CLIP_UNNAMED 1
+! #define CLIP_UNNAMED_PLUS 2
+ EXTERN int clip_unnamed INIT(= 0); /* above two values or'ed */
+
+ EXTERN int clip_autoselect INIT(= FALSE);
+--- 513,520 ----
+ # define ONE_CLIPBOARD
+ # endif
+
+! # define CLIP_UNNAMED 1
+! # define CLIP_UNNAMED_PLUS 2
+ EXTERN int clip_unnamed INIT(= 0); /* above two values or'ed */
+
+ EXTERN int clip_autoselect INIT(= FALSE);
+***************
+*** 737,745 ****
+ #endif
+
+ EXTERN pos_T saved_cursor /* w_cursor before formatting text. */
+! # ifdef DO_INIT
+ = INIT_POS_T(0, 0, 0)
+! # endif
+ ;
+
+ /*
+--- 737,745 ----
+ #endif
+
+ EXTERN pos_T saved_cursor /* w_cursor before formatting text. */
+! #ifdef DO_INIT
+ = INIT_POS_T(0, 0, 0)
+! #endif
+ ;
+
+ /*
+***************
+*** 807,815 ****
+ # endif
+ EXTERN int has_mbyte INIT(= 0); /* any multi-byte encoding */
+
+! #if defined(WIN3264) && defined(FEAT_MBYTE)
+ EXTERN int wide_WindowProc INIT(= FALSE); /* use wide WindowProc() */
+! #endif
+
+ /*
+ * To speed up BYTELEN() we fill a table with the byte lengths whenever
+--- 807,815 ----
+ # endif
+ EXTERN int has_mbyte INIT(= 0); /* any multi-byte encoding */
+
+! # if defined(WIN3264) && defined(FEAT_MBYTE)
+ EXTERN int wide_WindowProc INIT(= FALSE); /* use wide WindowProc() */
+! # endif
+
+ /*
+ * To speed up BYTELEN() we fill a table with the byte lengths whenever
+***************
+*** 1099,1106 ****
+ EXTERN int save_p_ls INIT(= -1); /* Save 'laststatus' setting */
+ EXTERN int save_p_wmh INIT(= -1); /* Save 'winminheight' setting */
+ EXTERN int wild_menu_showing INIT(= 0);
+! #define WM_SHOWN 1 /* wildmenu showing */
+! #define WM_SCROLLED 2 /* wildmenu showing with scroll */
+ #endif
+
+ #ifdef MSWIN
+--- 1099,1106 ----
+ EXTERN int save_p_ls INIT(= -1); /* Save 'laststatus' setting */
+ EXTERN int save_p_wmh INIT(= -1); /* Save 'winminheight' setting */
+ EXTERN int wild_menu_showing INIT(= 0);
+! # define WM_SHOWN 1 /* wildmenu showing */
+! # define WM_SCROLLED 2 /* wildmenu showing with scroll */
+ #endif
+
+ #ifdef MSWIN
+***************
+*** 1310,1318 ****
+ EXTERN Atom commProperty INIT(= None);
+ EXTERN char_u *serverDelayedStartName INIT(= NULL);
+ # else
+! # ifdef PROTO
+ typedef int HWND;
+! # endif
+ EXTERN HWND clientWindow INIT(= 0);
+ # endif
+ #endif
+--- 1310,1318 ----
+ EXTERN Atom commProperty INIT(= None);
+ EXTERN char_u *serverDelayedStartName INIT(= NULL);
+ # else
+! # ifdef PROTO
+ typedef int HWND;
+! # endif
+ EXTERN HWND clientWindow INIT(= 0);
+ # endif
+ #endif
+*** ../vim-7.3.567/src/version.c 2012-06-29 11:46:28.000000000 +0200
+--- src/version.c 2012-06-29 12:34:21.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 568,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+67. Your hard drive crashes. You haven't logged in for two hours. You start
+ to twitch. You pick up the phone and manually dial your ISP's access
+ number. You try to hum to communicate with the modem. You succeed.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.569 b/source/ap/vim/patches/7.3.569
new file mode 100644
index 000000000..435733fee
--- /dev/null
+++ b/source/ap/vim/patches/7.3.569
@@ -0,0 +1,4762 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.569
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.569
+Problem: Evaluating Vim expression in Python is insufficient.
+Solution: Add vim.bindeval(). Also add pyeval() and py3eval(). (ZyX)
+Files: runtime/doc/eval.txt, runtime/doc/if_pyth.txt, src/eval.c,
+ src/if_lua.c, src/if_py_both.h, src/if_python.c, src/if_python3.c,
+ src/proto/eval.pro, src/proto/if_python.pro,
+ src/proto/if_python3.pro, src/testdir/Make_amiga.mak,
+ src/testdir/Make_dos.mak, src/testdir/Make_ming.mak,
+ src/testdir/Make_os2.mak, src/testdir/Makefile,
+ src/testdir/test86.in, src/testdir/test86.ok,
+ src/testdir/test87.in, src/testdir/test87.ok
+
+
+*** ../vim-7.3.568/runtime/doc/eval.txt 2012-03-07 19:16:49.000000000 +0100
+--- runtime/doc/eval.txt 2012-06-20 18:01:02.000000000 +0200
+***************
+*** 1836,1844 ****
+ localtime() Number current time
+ log( {expr}) Float natural logarithm (base e) of {expr}
+ log10( {expr}) Float logarithm of Float {expr} to base 10
+ map( {expr}, {string}) List/Dict change each item in {expr} to {expr}
+ maparg( {name}[, {mode} [, {abbr} [, {dict}]]])
+! String rhs of mapping {name} in mode {mode}
+ mapcheck( {name}[, {mode} [, {abbr}]])
+ String check for mappings matching {name}
+ match( {expr}, {pat}[, {start}[, {count}]])
+--- 1847,1857 ----
+ localtime() Number current time
+ log( {expr}) Float natural logarithm (base e) of {expr}
+ log10( {expr}) Float logarithm of Float {expr} to base 10
++ luaeval( {expr}[, {expr}]) any evaluate |Lua| expression
+ map( {expr}, {string}) List/Dict change each item in {expr} to {expr}
+ maparg( {name}[, {mode} [, {abbr} [, {dict}]]])
+! String or Dict
+! rhs of mapping {name} in mode {mode}
+ mapcheck( {name}[, {mode} [, {abbr}]])
+ String check for mappings matching {name}
+ match( {expr}, {pat}[, {start}[, {count}]])
+***************
+*** 1867,1872 ****
+--- 1880,1887 ----
+ prevnonblank( {lnum}) Number line nr of non-blank line <= {lnum}
+ printf( {fmt}, {expr1}...) String format text
+ pumvisible() Number whether popup menu is visible
++ pyeval( {expr}) any evaluate |Python| expression
++ py3eval( {expr}) any evaluate |python3| expression
+ range( {expr} [, {max} [, {stride}]])
+ List items from {expr} to {max}
+ readfile( {fname} [, {binary} [, {max}]])
+***************
+*** 3980,3985 ****
+--- 4003,4022 ----
+ < -2.0
+ {only available when compiled with the |+float| feature}
+
++ luaeval({expr}[, {expr}]) *luaeval()*
++ Evaluate Lua expression {expr} and return its result converted
++ to Vim data structures. Second {expr} may hold additional
++ argument accessible as _A inside first {expr}.
++ Strings are returned as they are.
++ Boolean objects are converted to numbers.
++ Numbers are converted to |Float| values if vim was compiled
++ with |+float| and to numbers otherwise.
++ Dictionaries and lists obtained by vim.eval() are returned
++ as-is.
++ Other objects are returned as zero without any errors.
++ See |lua-luaeval| for more details.
++ {only available when compiled with the |+lua| feature}
++
+ map({expr}, {string}) *map()*
+ {expr} must be a |List| or a |Dictionary|.
+ Replace each item in {expr} with the result of evaluating
+***************
+*** 4574,4579 ****
+--- 4612,4640 ----
+ This can be used to avoid some things that would remove the
+ popup menu.
+
++ *E860* *E861*
++ py3eval({expr}) *py3eval()*
++ Evaluate Python expression {expr} and return its result
++ converted to Vim data structures.
++ Numbers and strings are returned as they are (strings are
++ copied though, unicode strings are additionally converted to
++ 'encoding').
++ Lists are represented as Vim |List| type.
++ Dictionaries are represented as Vim |Dictionary| type with
++ keys converted to strings.
++ {only available when compiled with the |+python3| feature}
++
++ *E858* *E859*
++ pyeval({expr}) *pyeval()*
++ Evaluate Python expression {expr} and return its result
++ converted to Vim data structures.
++ Numbers and strings are returned as they are (strings are
++ copied though).
++ Lists are represented as Vim |List| type.
++ Dictionaries are represented as Vim |Dictionary| type with
++ keys converted to strings.
++ {only available when compiled with the |+python| feature}
++
+ *E726* *E727*
+ range({expr} [, {max} [, {stride}]]) *range()*
+ Returns a |List| with Numbers:
+***************
+*** 4807,4812 ****
+--- 4868,4877 ----
+ Search for regexp pattern {pattern}. The search starts at the
+ cursor position (you can use |cursor()| to set it).
+
++ If there is no match a 0 is returned and the cursor doesn't
++ move. No error message is given.
++ When a match has been found its line number is returned.
++
+ {flags} is a String, which can contain these character flags:
+ 'b' search backward instead of forward
+ 'c' accept a match at the cursor position
+*** ../vim-7.3.568/runtime/doc/if_pyth.txt 2010-08-15 21:57:12.000000000 +0200
+--- runtime/doc/if_pyth.txt 2012-06-20 18:01:02.000000000 +0200
+***************
+*** 1,4 ****
+! *if_pyth.txt* For Vim version 7.3. Last change: 2010 Aug 13
+
+
+ VIM REFERENCE MANUAL by Paul Moore
+--- 1,4 ----
+! *if_pyth.txt* For Vim version 7.3. Last change: 2012 Feb 04
+
+
+ VIM REFERENCE MANUAL by Paul Moore
+***************
+*** 6,18 ****
+
+ The Python Interface to Vim *python* *Python*
+
+! 1. Commands |python-commands|
+! 2. The vim module |python-vim|
+! 3. Buffer objects |python-buffer|
+! 4. Range objects |python-range|
+! 5. Window objects |python-window|
+! 6. Dynamic loading |python-dynamic|
+! 7. Python 3 |python3|
+
+ {Vi does not have any of these commands}
+
+--- 6,19 ----
+
+ The Python Interface to Vim *python* *Python*
+
+! 1. Commands |python-commands|
+! 2. The vim module |python-vim|
+! 3. Buffer objects |python-buffer|
+! 4. Range objects |python-range|
+! 5. Window objects |python-window|
+! 6. pyeval(), py3eval() Vim functions |python-pyeval|
+! 7. Dynamic loading |python-dynamic|
+! 8. Python 3 |python3|
+
+ {Vi does not have any of these commands}
+
+***************
+*** 150,155 ****
+--- 151,172 ----
+ [{'cmd': '/^eval_expr(arg, nextcmd)$/', 'static': 0, 'name':
+ 'eval_expr', 'kind': 'f', 'filename': './src/eval.c'}]
+
++ vim.bindeval(str) *python-bindeval*
++ Like |python-eval|, but
++ 1. if expression evaluates to |List| or |Dictionary| it is returned as
++ vimlist or vimdictionary python type that are connected to original
++ list or dictionary. Thus modifications to these objects imply
++ modifications of the original.
++ 2. if expression evaluates to a function reference, then it returns
++ callable vimfunction object. Use self keyword argument to assign
++ |self| object for dictionary functions.
++
++ Note: this function has the same behavior as |lua-eval| (except that
++ lua does not support running vim functions), |python-eval| is
++ kept for backwards compatibility in order not to make scripts
++ relying on outputs of vim.eval() being a copy of original or
++ vim.eval("1") returning a string.
++
+
+
+ Error object of the "vim" module
+***************
+*** 222,229 ****
+ - from indexing vim.buffers (|python-buffers|)
+ - from the "buffer" attribute of a window (|python-window|)
+
+! Buffer objects have one read-only attribute - name - the full file name for
+! the buffer. They also have three methods (append, mark, and range; see below).
+
+ You can also treat buffer objects as sequence objects. In this context, they
+ act as if they were lists (yes, they are mutable) of strings, with each
+--- 239,247 ----
+ - from indexing vim.buffers (|python-buffers|)
+ - from the "buffer" attribute of a window (|python-window|)
+
+! Buffer objects have two read-only attributes - name - the full file name for
+! the buffer, and number - the buffer number. They also have three methods
+! (append, mark, and range; see below).
+
+ You can also treat buffer objects as sequence objects. In this context, they
+ act as if they were lists (yes, they are mutable) of strings, with each
+***************
+*** 318,324 ****
+ The width attribute is writable only if the screen is split vertically.
+
+ ==============================================================================
+! 6. Dynamic loading *python-dynamic*
+
+ On MS-Windows the Python library can be loaded dynamically. The |:version|
+ output then includes |+python/dyn|.
+--- 336,348 ----
+ The width attribute is writable only if the screen is split vertically.
+
+ ==============================================================================
+! 6. pyeval() and py3eval() Vim functions *python-pyeval*
+!
+! To facilitate bi-directional interface, you can use |pyeval()| and |py3eval()|
+! functions to evaluate Python expressions and pass their values to VimL.
+!
+! ==============================================================================
+! 7. Dynamic loading *python-dynamic*
+
+ On MS-Windows the Python library can be loaded dynamically. The |:version|
+ output then includes |+python/dyn|.
+***************
+*** 335,347 ****
+ sure edit "gvim.exe" and search for "python\d*.dll\c".
+
+ ==============================================================================
+! 7. Python 3 *python3*
+
+ *:py3* *:python3*
+ The |:py3| and |:python3| commands work similar to |:python|.
+ *:py3file*
+ The |:py3file| command works similar to |:pyfile|.
+
+ Vim can be built in four ways (:version output):
+ 1. No Python support (-python, -python3)
+ 2. Python 2 support only (+python or +python/dyn, -python3)
+--- 359,372 ----
+ sure edit "gvim.exe" and search for "python\d*.dll\c".
+
+ ==============================================================================
+! 8. Python 3 *python3*
+
+ *:py3* *:python3*
+ The |:py3| and |:python3| commands work similar to |:python|.
+ *:py3file*
+ The |:py3file| command works similar to |:pyfile|.
+
++
+ Vim can be built in four ways (:version output):
+ 1. No Python support (-python, -python3)
+ 2. Python 2 support only (+python or +python/dyn, -python3)
+***************
+*** 355,361 ****
+ When doing this on Linux/Unix systems and importing global symbols, this leads
+ to a crash when the second Python version is used. So either global symbols
+ are loaded but only one Python version is activated, or no global symbols are
+! loaded. The latter makes Python's "import" fail on libaries that expect the
+ symbols to be provided by Vim.
+ *E836* *E837*
+ Vim's configuration script makes a guess for all libraries based on one
+--- 380,386 ----
+ When doing this on Linux/Unix systems and importing global symbols, this leads
+ to a crash when the second Python version is used. So either global symbols
+ are loaded but only one Python version is activated, or no global symbols are
+! loaded. The latter makes Python's "import" fail on libraries that expect the
+ symbols to be provided by Vim.
+ *E836* *E837*
+ Vim's configuration script makes a guess for all libraries based on one
+***************
+*** 377,382 ****
+--- 402,419 ----
+ 3. You undefine PY_NO_RTLD_GLOBAL in auto/config.h after configuration. This
+ may crash Vim though.
+
++ *has-python*
++ You can test what Python version is available with: >
++ if has('python')
++ echo 'there is Python 2.x'
++ elseif has('python3')
++ echo 'there is Python 3.x'
++ endif
++
++ Note however, that when Python 2 and 3 are both available and loaded
++ dynamically, these has() calls will try to load them. If only one can be
++ loaded at a time, just checking if Python 2 or 3 are available will prevent
++ the other one from being available.
+
+ ==============================================================================
+ vim:tw=78:ts=8:ft=help:norl:
+*** ../vim-7.3.568/src/eval.c 2012-06-20 14:13:02.000000000 +0200
+--- src/eval.c 2012-06-20 18:29:15.000000000 +0200
+***************
+*** 424,453 ****
+ static int get_lit_string_tv __ARGS((char_u **arg, typval_T *rettv, int evaluate));
+ static int get_list_tv __ARGS((char_u **arg, typval_T *rettv, int evaluate));
+ static int rettv_list_alloc __ARGS((typval_T *rettv));
+- static listitem_T *listitem_alloc __ARGS((void));
+ static void listitem_free __ARGS((listitem_T *item));
+- static void listitem_remove __ARGS((list_T *l, listitem_T *item));
+ static long list_len __ARGS((list_T *l));
+ static int list_equal __ARGS((list_T *l1, list_T *l2, int ic, int recursive));
+ static int dict_equal __ARGS((dict_T *d1, dict_T *d2, int ic, int recursive));
+ static int tv_equal __ARGS((typval_T *tv1, typval_T *tv2, int ic, int recursive));
+- static listitem_T *list_find __ARGS((list_T *l, long n));
+ static long list_find_nr __ARGS((list_T *l, long idx, int *errorp));
+ static long list_idx_of_item __ARGS((list_T *l, listitem_T *item));
+- static void list_append __ARGS((list_T *l, listitem_T *item));
+ static int list_append_number __ARGS((list_T *l, varnumber_T n));
+- static int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item));
+ static int list_extend __ARGS((list_T *l1, list_T *l2, listitem_T *bef));
+ static int list_concat __ARGS((list_T *l1, list_T *l2, typval_T *tv));
+ static list_T *list_copy __ARGS((list_T *orig, int deep, int copyID));
+- static void list_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2));
+ static char_u *list2string __ARGS((typval_T *tv, int copyID));
+ static int list_join_inner __ARGS((garray_T *gap, list_T *l, char_u *sep, int echo_style, int copyID, garray_T *join_gap));
+ static int list_join __ARGS((garray_T *gap, list_T *l, char_u *sep, int echo, int copyID));
+ static int free_unref_items __ARGS((int copyID));
+- static void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID));
+- static void set_ref_in_list __ARGS((list_T *l, int copyID));
+- static void set_ref_in_item __ARGS((typval_T *tv, int copyID));
+ static int rettv_dict_alloc __ARGS((typval_T *rettv));
+ static void dict_free __ARGS((dict_T *d, int recurse));
+ static dictitem_T *dictitem_copy __ARGS((dictitem_T *org));
+--- 424,444 ----
+***************
+*** 654,659 ****
+--- 645,656 ----
+ static void f_prevnonblank __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_printf __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_pumvisible __ARGS((typval_T *argvars, typval_T *rettv));
++ #ifdef FEAT_PYTHON3
++ static void f_py3eval __ARGS((typval_T *argvars, typval_T *rettv));
++ #endif
++ #ifdef FEAT_PYTHON
++ static void f_pyeval __ARGS((typval_T *argvars, typval_T *rettv));
++ #endif
+ static void f_range __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_readfile __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_reltime __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 824,831 ****
+ static char_u *autoload_name __ARGS((char_u *name));
+ static void cat_func_name __ARGS((char_u *buf, ufunc_T *fp));
+ static void func_free __ARGS((ufunc_T *fp));
+- static void func_unref __ARGS((char_u *name));
+- static void func_ref __ARGS((char_u *name));
+ static void call_user_func __ARGS((ufunc_T *fp, int argcount, typval_T *argvars, typval_T *rettv, linenr_T firstline, linenr_T lastline, dict_T *selfdict));
+ static int can_free_funccal __ARGS((funccall_T *fc, int copyID)) ;
+ static void free_funccal __ARGS((funccall_T *fc, int free_val));
+--- 821,826 ----
+***************
+*** 5927,5933 ****
+ /*
+ * Allocate a list item.
+ */
+! static listitem_T *
+ listitem_alloc()
+ {
+ return (listitem_T *)alloc(sizeof(listitem_T));
+--- 5922,5928 ----
+ /*
+ * Allocate a list item.
+ */
+! listitem_T *
+ listitem_alloc()
+ {
+ return (listitem_T *)alloc(sizeof(listitem_T));
+***************
+*** 5947,5953 ****
+ /*
+ * Remove a list item from a List and free it. Also clears the value.
+ */
+! static void
+ listitem_remove(l, item)
+ list_T *l;
+ listitem_T *item;
+--- 5942,5948 ----
+ /*
+ * Remove a list item from a List and free it. Also clears the value.
+ */
+! void
+ listitem_remove(l, item)
+ list_T *l;
+ listitem_T *item;
+***************
+*** 6123,6129 ****
+ * A negative index is counted from the end; -1 is the last item.
+ * Returns NULL when "n" is out of range.
+ */
+! static listitem_T *
+ list_find(l, n)
+ list_T *l;
+ long n;
+--- 6118,6124 ----
+ * A negative index is counted from the end; -1 is the last item.
+ * Returns NULL when "n" is out of range.
+ */
+! listitem_T *
+ list_find(l, n)
+ list_T *l;
+ long n;
+***************
+*** 6265,6271 ****
+ /*
+ * Append item "item" to the end of list "l".
+ */
+! static void
+ list_append(l, item)
+ list_T *l;
+ listitem_T *item;
+--- 6260,6266 ----
+ /*
+ * Append item "item" to the end of list "l".
+ */
+! void
+ list_append(l, item)
+ list_T *l;
+ listitem_T *item;
+***************
+*** 6378,6384 ****
+ * If "item" is NULL append at the end.
+ * Return FAIL when out of memory.
+ */
+! static int
+ list_insert_tv(l, tv, item)
+ list_T *l;
+ typval_T *tv;
+--- 6373,6379 ----
+ * If "item" is NULL append at the end.
+ * Return FAIL when out of memory.
+ */
+! int
+ list_insert_tv(l, tv, item)
+ list_T *l;
+ typval_T *tv;
+***************
+*** 6523,6529 ****
+ * Remove items "item" to "item2" from list "l".
+ * Does not free the listitem or the value!
+ */
+! static void
+ list_remove(l, item, item2)
+ list_T *l;
+ listitem_T *item;
+--- 6518,6524 ----
+ * Remove items "item" to "item2" from list "l".
+ * Does not free the listitem or the value!
+ */
+! void
+ list_remove(l, item, item2)
+ list_T *l;
+ listitem_T *item;
+***************
+*** 6785,6790 ****
+--- 6780,6793 ----
+ set_ref_in_lua(copyID);
+ #endif
+
++ #ifdef FEAT_PYTHON
++ set_ref_in_python(copyID);
++ #endif
++
++ #ifdef FEAT_PYTHON3
++ set_ref_in_python3(copyID);
++ #endif
++
+ /*
+ * 2. Free lists and dictionaries that are not referenced.
+ */
+***************
+*** 6870,6876 ****
+ /*
+ * Mark all lists and dicts referenced through hashtab "ht" with "copyID".
+ */
+! static void
+ set_ref_in_ht(ht, copyID)
+ hashtab_T *ht;
+ int copyID;
+--- 6873,6879 ----
+ /*
+ * Mark all lists and dicts referenced through hashtab "ht" with "copyID".
+ */
+! void
+ set_ref_in_ht(ht, copyID)
+ hashtab_T *ht;
+ int copyID;
+***************
+*** 6890,6896 ****
+ /*
+ * Mark all lists and dicts referenced through list "l" with "copyID".
+ */
+! static void
+ set_ref_in_list(l, copyID)
+ list_T *l;
+ int copyID;
+--- 6893,6899 ----
+ /*
+ * Mark all lists and dicts referenced through list "l" with "copyID".
+ */
+! void
+ set_ref_in_list(l, copyID)
+ list_T *l;
+ int copyID;
+***************
+*** 6904,6910 ****
+ /*
+ * Mark all lists and dicts referenced through typval "tv" with "copyID".
+ */
+! static void
+ set_ref_in_item(tv, copyID)
+ typval_T *tv;
+ int copyID;
+--- 6907,6913 ----
+ /*
+ * Mark all lists and dicts referenced through typval "tv" with "copyID".
+ */
+! void
+ set_ref_in_item(tv, copyID)
+ typval_T *tv;
+ int copyID;
+***************
+*** 7986,7991 ****
+--- 7989,8000 ----
+ {"prevnonblank", 1, 1, f_prevnonblank},
+ {"printf", 2, 19, f_printf},
+ {"pumvisible", 0, 0, f_pumvisible},
++ #ifdef FEAT_PYTHON3
++ {"py3eval", 1, 1, f_py3eval},
++ #endif
++ #ifdef FEAT_PYTHON
++ {"pyeval", 1, 1, f_pyeval},
++ #endif
+ {"range", 1, 3, f_range},
+ {"readfile", 1, 3, f_readfile},
+ {"reltime", 0, 2, f_reltime},
+***************
+*** 9150,9155 ****
+--- 9159,9203 ----
+ #endif
+ }
+
++ int
++ func_call(name, args, selfdict, rettv)
++ char_u *name;
++ typval_T *args;
++ dict_T *selfdict;
++ typval_T *rettv;
++ {
++ listitem_T *item;
++ typval_T argv[MAX_FUNC_ARGS + 1];
++ int argc = 0;
++ int dummy;
++ int r = 0;
++
++ for (item = args->vval.v_list->lv_first; item != NULL;
++ item = item->li_next)
++ {
++ if (argc == MAX_FUNC_ARGS)
++ {
++ EMSG(_("E699: Too many arguments"));
++ break;
++ }
++ /* Make a copy of each argument. This is needed to be able to set
++ * v_lock to VAR_FIXED in the copy without changing the original list.
++ */
++ copy_tv(&item->li_tv, &argv[argc++]);
++ }
++
++ if (item == NULL)
++ r = call_func(name, (int)STRLEN(name), rettv, argc, argv,
++ curwin->w_cursor.lnum, curwin->w_cursor.lnum,
++ &dummy, TRUE, selfdict);
++
++ /* Free the arguments. */
++ while (argc > 0)
++ clear_tv(&argv[--argc]);
++
++ return r;
++ }
++
+ /*
+ * "call(func, arglist)" function
+ */
+***************
+*** 9159,9168 ****
+ typval_T *rettv;
+ {
+ char_u *func;
+- typval_T argv[MAX_FUNC_ARGS + 1];
+- int argc = 0;
+- listitem_T *item;
+- int dummy;
+ dict_T *selfdict = NULL;
+
+ if (argvars[1].v_type != VAR_LIST)
+--- 9207,9212 ----
+***************
+*** 9190,9217 ****
+ selfdict = argvars[2].vval.v_dict;
+ }
+
+! for (item = argvars[1].vval.v_list->lv_first; item != NULL;
+! item = item->li_next)
+! {
+! if (argc == MAX_FUNC_ARGS)
+! {
+! EMSG(_("E699: Too many arguments"));
+! break;
+! }
+! /* Make a copy of each argument. This is needed to be able to set
+! * v_lock to VAR_FIXED in the copy without changing the original list.
+! */
+! copy_tv(&item->li_tv, &argv[argc++]);
+! }
+!
+! if (item == NULL)
+! (void)call_func(func, (int)STRLEN(func), rettv, argc, argv,
+! curwin->w_cursor.lnum, curwin->w_cursor.lnum,
+! &dummy, TRUE, selfdict);
+!
+! /* Free the arguments. */
+! while (argc > 0)
+! clear_tv(&argv[--argc]);
+ }
+
+ #ifdef FEAT_FLOAT
+--- 9234,9240 ----
+ selfdict = argvars[2].vval.v_dict;
+ }
+
+! (void)func_call(func, &argvars[1], selfdict, rettv);
+ }
+
+ #ifdef FEAT_FLOAT
+***************
+*** 14424,14429 ****
+--- 14447,14486 ----
+ #endif
+ }
+
++ #ifdef FEAT_PYTHON3
++ /*
++ * "py3eval()" function
++ */
++ static void
++ f_py3eval(argvars, rettv)
++ typval_T *argvars;
++ typval_T *rettv;
++ {
++ char_u *str;
++ char_u buf[NUMBUFLEN];
++
++ str = get_tv_string_buf(&argvars[0], buf);
++ do_py3eval(str, rettv);
++ }
++ #endif
++
++ #ifdef FEAT_PYTHON
++ /*
++ * "pyeval()" function
++ */
++ static void
++ f_pyeval(argvars, rettv)
++ typval_T *argvars;
++ typval_T *rettv;
++ {
++ char_u *str;
++ char_u buf[NUMBUFLEN];
++
++ str = get_tv_string_buf(&argvars[0], buf);
++ do_pyeval(str, rettv);
++ }
++ #endif
++
+ /*
+ * "range()" function
+ */
+***************
+*** 22139,22145 ****
+ * Unreference a Function: decrement the reference count and free it when it
+ * becomes zero. Only for numbered functions.
+ */
+! static void
+ func_unref(name)
+ char_u *name;
+ {
+--- 22196,22202 ----
+ * Unreference a Function: decrement the reference count and free it when it
+ * becomes zero. Only for numbered functions.
+ */
+! void
+ func_unref(name)
+ char_u *name;
+ {
+***************
+*** 22163,22169 ****
+ /*
+ * Count a reference to a Function.
+ */
+! static void
+ func_ref(name)
+ char_u *name;
+ {
+--- 22220,22226 ----
+ /*
+ * Count a reference to a Function.
+ */
+! void
+ func_ref(name)
+ char_u *name;
+ {
+*** ../vim-7.3.568/src/if_lua.c 2012-04-06 14:30:55.000000000 +0200
+--- src/if_lua.c 2012-06-20 18:16:33.000000000 +0200
+***************
+*** 199,207 ****
+ lua_Number (*dll_lua_tonumberx) (lua_State *L, int idx, int *isnum);
+ lua_Integer (*dll_lua_tointegerx) (lua_State *L, int idx, int *isnum);
+ void (*dll_lua_callk) (lua_State *L, int nargs, int nresults, int ctx,
+! lua_CFunction k);
+ int (*dll_lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc,
+! int ctx, lua_CFunction k);
+ void (*dll_lua_getglobal) (lua_State *L, const char *var);
+ void (*dll_lua_setglobal) (lua_State *L, const char *var);
+ #endif
+--- 199,207 ----
+ lua_Number (*dll_lua_tonumberx) (lua_State *L, int idx, int *isnum);
+ lua_Integer (*dll_lua_tointegerx) (lua_State *L, int idx, int *isnum);
+ void (*dll_lua_callk) (lua_State *L, int nargs, int nresults, int ctx,
+! lua_CFunction k);
+ int (*dll_lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc,
+! int ctx, lua_CFunction k);
+ void (*dll_lua_getglobal) (lua_State *L, const char *var);
+ void (*dll_lua_setglobal) (lua_State *L, const char *var);
+ #endif
+***************
+*** 394,400 ****
+ luaL_typeerror (lua_State *L, int narg, const char *tname)
+ {
+ const char *msg = lua_pushfstring(L, "%s expected, got %s",
+! tname, luaL_typename(L, narg));
+ return luaL_argerror(L, narg, msg);
+ }
+ #endif
+--- 394,400 ----
+ luaL_typeerror (lua_State *L, int narg, const char *tname)
+ {
+ const char *msg = lua_pushfstring(L, "%s expected, got %s",
+! tname, luaL_typename(L, narg));
+ return luaL_argerror(L, narg, msg);
+ }
+ #endif
+***************
+*** 646,786 ****
+ return 1; \
+ }
+
+-
+- /* adapted from eval.c */
+-
+- #define listitem_alloc() (listitem_T *)alloc(sizeof(listitem_T))
+-
+- static listitem_T *
+- list_find (list_T *l, long n)
+- {
+- listitem_T *li;
+- if (l == NULL || n < -l->lv_len || n >= l->lv_len)
+- return NULL;
+- if (n < 0) /* search backward? */
+- for (li = l->lv_last; n < -1; li = li->li_prev)
+- n++;
+- else /* search forward */
+- for (li = l->lv_first; n > 0; li = li->li_next)
+- n--;
+- return li;
+- }
+-
+- static void
+- list_remove (list_T *l, listitem_T *li)
+- {
+- listwatch_T *lw;
+- --l->lv_len;
+- /* fix watchers */
+- for (lw = l->lv_watch; lw != NULL; lw = lw->lw_next)
+- if (lw->lw_item == li)
+- lw->lw_item = li->li_next;
+- /* fix list pointers */
+- if (li->li_next == NULL) /* last? */
+- l->lv_last = li->li_prev;
+- else
+- li->li_next->li_prev = li->li_prev;
+- if (li->li_prev == NULL) /* first? */
+- l->lv_first = li->li_next;
+- else
+- li->li_prev->li_next = li->li_next;
+- l->lv_idx_item = NULL;
+- }
+-
+- static void
+- list_append(list_T *l, listitem_T *item)
+- {
+- if (l->lv_last == NULL) /* empty list? */
+- l->lv_first = item;
+- else
+- l->lv_last->li_next = item;
+- item->li_prev = l->lv_last;
+- item->li_next = NULL;
+- l->lv_last = item;
+- ++l->lv_len;
+- }
+-
+- static int
+- list_insert_tv(list_T *l, typval_T *tv, listitem_T *item)
+- {
+- listitem_T *ni = listitem_alloc();
+-
+- if (ni == NULL)
+- return FAIL;
+- copy_tv(tv, &ni->li_tv);
+- if (item == NULL)
+- list_append(l, ni);
+- else
+- {
+- ni->li_prev = item->li_prev;
+- ni->li_next = item;
+- if (item->li_prev == NULL)
+- {
+- l->lv_first = ni;
+- ++l->lv_idx;
+- }
+- else
+- {
+- item->li_prev->li_next = ni;
+- l->lv_idx_item = NULL;
+- }
+- item->li_prev = ni;
+- ++l->lv_len;
+- }
+- return OK;
+- }
+-
+- /* set references */
+-
+- static void set_ref_in_tv (typval_T *tv, int copyID);
+-
+- static void
+- set_ref_in_dict(dict_T *d, int copyID)
+- {
+- hashtab_T *ht = &d->dv_hashtab;
+- int n = ht->ht_used;
+- hashitem_T *hi;
+- for (hi = ht->ht_array; n > 0; ++hi)
+- if (!HASHITEM_EMPTY(hi))
+- {
+- dictitem_T *di = dict_lookup(hi);
+- set_ref_in_tv(&di->di_tv, copyID);
+- --n;
+- }
+- }
+-
+- static void
+- set_ref_in_list(list_T *l, int copyID)
+- {
+- listitem_T *li;
+- for (li = l->lv_first; li != NULL; li = li->li_next)
+- set_ref_in_tv(&li->li_tv, copyID);
+- }
+-
+- static void
+- set_ref_in_tv(typval_T *tv, int copyID)
+- {
+- if (tv->v_type == VAR_LIST)
+- {
+- list_T *l = tv->vval.v_list;
+- if (l != NULL && l->lv_copyID != copyID)
+- {
+- l->lv_copyID = copyID;
+- set_ref_in_list(l, copyID);
+- }
+- }
+- else if (tv->v_type == VAR_DICT)
+- {
+- dict_T *d = tv->vval.v_dict;
+- if (d != NULL && d->dv_copyID != copyID)
+- {
+- d->dv_copyID = copyID;
+- set_ref_in_dict(d, copyID);
+- }
+- }
+- }
+-
+-
+ /* ======= List type ======= */
+
+ static luaV_List *
+--- 646,651 ----
+***************
+*** 876,882 ****
+ if (li == NULL) return 0;
+ if (lua_isnil(L, 3)) /* remove? */
+ {
+! list_remove(l, li);
+ clear_tv(&li->li_tv);
+ vim_free(li);
+ }
+--- 741,747 ----
+ if (li == NULL) return 0;
+ if (lua_isnil(L, 3)) /* remove? */
+ {
+! list_remove(l, li, li);
+ clear_tv(&li->li_tv);
+ vim_free(li);
+ }
+***************
+*** 904,911 ****
+ typval_T v;
+ lua_settop(L, 2);
+ luaV_totypval(L, 2, &v);
+! copy_tv(&v, &li->li_tv);
+! list_append(l, li);
+ }
+ lua_settop(L, 1);
+ return 1;
+--- 769,775 ----
+ typval_T v;
+ lua_settop(L, 2);
+ luaV_totypval(L, 2, &v);
+! list_append_tv(l, &v);
+ }
+ lua_settop(L, 1);
+ return 1;
+***************
+*** 1682,1688 ****
+ tv.vval.v_dict = (dict_T *) lua_touserdata(L, 4); /* key */
+ }
+ lua_pop(L, 2); /* metatable and value */
+! set_ref_in_tv(&tv, copyID);
+ }
+ return 0;
+ }
+--- 1546,1552 ----
+ tv.vval.v_dict = (dict_T *) lua_touserdata(L, 4); /* key */
+ }
+ lua_pop(L, 2); /* metatable and value */
+! set_ref_in_item(&tv, copyID);
+ }
+ return 0;
+ }
+*** ../vim-7.3.568/src/if_py_both.h 2012-04-20 13:31:16.000000000 +0200
+--- src/if_py_both.h 2012-06-29 12:03:52.000000000 +0200
+***************
+*** 1,4 ****
+! /* vi:set ts=8 sts=4 sw=4:
+ *
+ * VIM - Vi IMproved by Bram Moolenaar
+ *
+--- 1,4 ----
+! /* vi:set ts=8 sts=4 sw=4 noet:
+ *
+ * VIM - Vi IMproved by Bram Moolenaar
+ *
+***************
+*** 105,111 ****
+ return NULL;
+ Py_INCREF(list);
+
+! if (!PyList_Check(list)) {
+ PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+ Py_DECREF(list);
+ return NULL;
+--- 105,112 ----
+ return NULL;
+ Py_INCREF(list);
+
+! if (!PyList_Check(list))
+! {
+ PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+ Py_DECREF(list);
+ return NULL;
+***************
+*** 119,125 ****
+ char *str = NULL;
+ PyInt len;
+
+! if (!PyArg_Parse(line, "et#", ENC_OPT, &str, &len)) {
+ PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+ Py_DECREF(list);
+ return NULL;
+--- 120,127 ----
+ char *str = NULL;
+ PyInt len;
+
+! if (!PyArg_Parse(line, "et#", ENC_OPT, &str, &len))
+! {
+ PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+ Py_DECREF(list);
+ return NULL;
+***************
+*** 297,303 ****
+ {
+ PyObject *result;
+ PyObject *newObj;
+! char ptrBuf[NUMBUFLEN];
+
+ /* Avoid infinite recursion */
+ if (depth > 100)
+--- 299,305 ----
+ {
+ PyObject *result;
+ PyObject *newObj;
+! char ptrBuf[sizeof(void *) * 2 + 3];
+
+ /* Avoid infinite recursion */
+ if (depth > 100)
+***************
+*** 312,320 ****
+ if ((our_tv->v_type == VAR_LIST && our_tv->vval.v_list != NULL)
+ || (our_tv->v_type == VAR_DICT && our_tv->vval.v_dict != NULL))
+ {
+! sprintf(ptrBuf, PRINTF_DECIMAL_LONG_U,
+! our_tv->v_type == VAR_LIST ? (long_u)our_tv->vval.v_list
+! : (long_u)our_tv->vval.v_dict);
+ result = PyDict_GetItemString(lookupDict, ptrBuf);
+ if (result != NULL)
+ {
+--- 314,322 ----
+ if ((our_tv->v_type == VAR_LIST && our_tv->vval.v_list != NULL)
+ || (our_tv->v_type == VAR_DICT && our_tv->vval.v_dict != NULL))
+ {
+! sprintf(ptrBuf, "%p",
+! our_tv->v_type == VAR_LIST ? (void *)our_tv->vval.v_list
+! : (void *)our_tv->vval.v_dict);
+ result = PyDict_GetItemString(lookupDict, ptrBuf);
+ if (result != NULL)
+ {
+***************
+*** 374,509 ****
+ hashitem_T *hi;
+ dictitem_T *di;
+
+! PyDict_SetItemString(lookupDict, ptrBuf, result);
+
+! for (hi = ht->ht_array; todo > 0; ++hi)
+ {
+! if (!HASHITEM_EMPTY(hi))
+! {
+! --todo;
+!
+! di = dict_lookup(hi);
+! newObj = VimToPython(&di->di_tv, depth + 1, lookupDict);
+! PyDict_SetItemString(result, (char *)hi->hi_key, newObj);
+! Py_DECREF(newObj);
+! }
+ }
+ }
+ }
+! else
+ {
+! Py_INCREF(Py_None);
+! result = Py_None;
+ }
+
+! return result;
+ }
+- #endif
+
+ static PyObject *
+! VimEval(PyObject *self UNUSED, PyObject *args UNUSED)
+ {
+! #ifdef FEAT_EVAL
+! char *expr;
+! typval_T *our_tv;
+! PyObject *result;
+! PyObject *lookup_dict;
+
+! if (!PyArg_ParseTuple(args, "s", &expr))
+ return NULL;
+
+! Py_BEGIN_ALLOW_THREADS
+! Python_Lock_Vim();
+! our_tv = eval_expr((char_u *)expr, NULL);
+!
+! Python_Release_Vim();
+! Py_END_ALLOW_THREADS
+!
+! if (our_tv == NULL)
+ {
+! PyErr_SetVim(_("invalid expression"));
+ return NULL;
+ }
+
+- /* Convert the Vim type into a Python type. Create a dictionary that's
+- * used to check for recursive loops. */
+ lookup_dict = PyDict_New();
+! result = VimToPython(our_tv, 1, lookup_dict);
+ Py_DECREF(lookup_dict);
+
+!
+! Py_BEGIN_ALLOW_THREADS
+! Python_Lock_Vim();
+! free_tv(our_tv);
+! Python_Release_Vim();
+! Py_END_ALLOW_THREADS
+!
+! return result;
+! #else
+! PyErr_SetVim(_("expressions disabled at compile time"));
+! return NULL;
+! #endif
+ }
+
+! /*
+! * Vim module - Definitions
+! */
+!
+! static struct PyMethodDef VimMethods[] = {
+! /* name, function, calling, documentation */
+! {"command", VimCommand, 1, "Execute a Vim ex-mode command" },
+! {"eval", VimEval, 1, "Evaluate an expression using Vim evaluator" },
+! { NULL, NULL, 0, NULL }
+ };
+
+ typedef struct
+ {
+ PyObject_HEAD
+! buf_T *buf;
+! }
+! BufferObject;
+
+! #define INVALID_BUFFER_VALUE ((buf_T *)(-1))
+!
+! /*
+! * Buffer list object - Implementation
+! */
+
+! static PyInt
+! BufListLength(PyObject *self UNUSED)
+ {
+! buf_T *b = firstbuf;
+! PyInt n = 0;
+
+! while (b)
+ {
+! ++n;
+! b = b->b_next;
+ }
+!
+! return n;
+ }
+
+ static PyObject *
+! BufListItem(PyObject *self UNUSED, PyInt n)
+ {
+! buf_T *b;
+
+! for (b = firstbuf; b; b = b->b_next, --n)
+ {
+! if (n == 0)
+! return BufferNew(b);
+ }
+
+! PyErr_SetString(PyExc_IndexError, _("no such buffer"));
+! return NULL;
+ }
+
+! typedef struct
+! {
+! PyObject_HEAD
+! win_T *win;
+! } WindowObject;
+
+ #define INVALID_WINDOW_VALUE ((win_T *)(-1))
+
+--- 376,1325 ----
+ hashitem_T *hi;
+ dictitem_T *di;
+
+! PyDict_SetItemString(lookupDict, ptrBuf, result);
+!
+! for (hi = ht->ht_array; todo > 0; ++hi)
+! {
+! if (!HASHITEM_EMPTY(hi))
+! {
+! --todo;
+!
+! di = dict_lookup(hi);
+! newObj = VimToPython(&di->di_tv, depth + 1, lookupDict);
+! PyDict_SetItemString(result, (char *)hi->hi_key, newObj);
+! Py_DECREF(newObj);
+! }
+! }
+! }
+! }
+! else
+! {
+! Py_INCREF(Py_None);
+! result = Py_None;
+! }
+!
+! return result;
+! }
+! #endif
+!
+! static PyObject *
+! VimEval(PyObject *self UNUSED, PyObject *args UNUSED)
+! {
+! #ifdef FEAT_EVAL
+! char *expr;
+! typval_T *our_tv;
+! PyObject *result;
+! PyObject *lookup_dict;
+!
+! if (!PyArg_ParseTuple(args, "s", &expr))
+! return NULL;
+!
+! Py_BEGIN_ALLOW_THREADS
+! Python_Lock_Vim();
+! our_tv = eval_expr((char_u *)expr, NULL);
+!
+! Python_Release_Vim();
+! Py_END_ALLOW_THREADS
+!
+! if (our_tv == NULL)
+! {
+! PyErr_SetVim(_("invalid expression"));
+! return NULL;
+! }
+!
+! /* Convert the Vim type into a Python type. Create a dictionary that's
+! * used to check for recursive loops. */
+! lookup_dict = PyDict_New();
+! result = VimToPython(our_tv, 1, lookup_dict);
+! Py_DECREF(lookup_dict);
+!
+!
+! Py_BEGIN_ALLOW_THREADS
+! Python_Lock_Vim();
+! free_tv(our_tv);
+! Python_Release_Vim();
+! Py_END_ALLOW_THREADS
+!
+! return result;
+! #else
+! PyErr_SetVim(_("expressions disabled at compile time"));
+! return NULL;
+! #endif
+! }
+!
+! static PyObject *ConvertToPyObject(typval_T *);
+!
+! static PyObject *
+! VimEvalPy(PyObject *self UNUSED, PyObject *args UNUSED)
+! {
+! #ifdef FEAT_EVAL
+! char *expr;
+! typval_T *our_tv;
+! PyObject *result;
+!
+! if (!PyArg_ParseTuple(args, "s", &expr))
+! return NULL;
+!
+! Py_BEGIN_ALLOW_THREADS
+! Python_Lock_Vim();
+! our_tv = eval_expr((char_u *)expr, NULL);
+!
+! Python_Release_Vim();
+! Py_END_ALLOW_THREADS
+!
+! if (our_tv == NULL)
+! {
+! PyErr_SetVim(_("invalid expression"));
+! return NULL;
+! }
+!
+! result = ConvertToPyObject(our_tv);
+! Py_BEGIN_ALLOW_THREADS
+! Python_Lock_Vim();
+! free_tv(our_tv);
+! Python_Release_Vim();
+! Py_END_ALLOW_THREADS
+!
+! return result;
+! #else
+! PyErr_SetVim(_("expressions disabled at compile time"));
+! return NULL;
+! #endif
+! }
+!
+! static PyObject *
+! VimStrwidth(PyObject *self UNUSED, PyObject *args)
+! {
+! char *expr;
+!
+! if (!PyArg_ParseTuple(args, "s", &expr))
+! return NULL;
+!
+! return PyLong_FromLong(mb_string2cells((char_u *)expr, STRLEN(expr)));
+! }
+!
+! /*
+! * Vim module - Definitions
+! */
+!
+! static struct PyMethodDef VimMethods[] = {
+! /* name, function, calling, documentation */
+! {"command", VimCommand, 1, "Execute a Vim ex-mode command" },
+! {"eval", VimEval, 1, "Evaluate an expression using Vim evaluator" },
+! {"bindeval", VimEvalPy, 1, "Like eval(), but returns objects attached to vim ones"},
+! {"strwidth", VimStrwidth, 1, "Screen string width, counts <Tab> as having width 1"},
+! { NULL, NULL, 0, NULL }
+! };
+!
+! typedef struct
+! {
+! PyObject_HEAD
+! buf_T *buf;
+! } BufferObject;
+!
+! #define INVALID_BUFFER_VALUE ((buf_T *)(-1))
+!
+! /*
+! * Buffer list object - Implementation
+! */
+!
+! static PyInt
+! BufListLength(PyObject *self UNUSED)
+! {
+! buf_T *b = firstbuf;
+! PyInt n = 0;
+!
+! while (b)
+! {
+! ++n;
+! b = b->b_next;
+! }
+!
+! return n;
+! }
+!
+! static PyObject *
+! BufListItem(PyObject *self UNUSED, PyInt n)
+! {
+! buf_T *b;
+!
+! for (b = firstbuf; b; b = b->b_next, --n)
+! {
+! if (n == 0)
+! return BufferNew(b);
+! }
+!
+! PyErr_SetString(PyExc_IndexError, _("no such buffer"));
+! return NULL;
+! }
+!
+! typedef struct
+! {
+! PyObject_HEAD
+! win_T *win;
+! } WindowObject;
+!
+! static int ConvertFromPyObject(PyObject *, typval_T *);
+! static int _ConvertFromPyObject(PyObject *, typval_T *, PyObject *);
+!
+! typedef struct pylinkedlist_S {
+! struct pylinkedlist_S *pll_next;
+! struct pylinkedlist_S *pll_prev;
+! PyObject *pll_obj;
+! } pylinkedlist_T;
+!
+! static pylinkedlist_T *lastdict = NULL;
+! static pylinkedlist_T *lastlist = NULL;
+!
+! static void
+! pyll_remove(pylinkedlist_T *ref, pylinkedlist_T **last)
+! {
+! if (ref->pll_prev == NULL)
+! {
+! if (ref->pll_next == NULL)
+! {
+! *last = NULL;
+! return;
+! }
+! }
+! else
+! ref->pll_prev->pll_next = ref->pll_next;
+!
+! if (ref->pll_next == NULL)
+! *last = ref->pll_prev;
+! else
+! ref->pll_next->pll_prev = ref->pll_prev;
+! }
+!
+! static void
+! pyll_add(PyObject *self, pylinkedlist_T *ref, pylinkedlist_T **last)
+! {
+! if (*last == NULL)
+! ref->pll_prev = NULL;
+! else
+! {
+! (*last)->pll_next = ref;
+! ref->pll_prev = *last;
+! }
+! ref->pll_next = NULL;
+! ref->pll_obj = self;
+! *last = ref;
+! }
+!
+! static PyTypeObject DictionaryType;
+!
+! typedef struct
+! {
+! PyObject_HEAD
+! dict_T *dict;
+! pylinkedlist_T ref;
+! } DictionaryObject;
+!
+! static PyObject *
+! DictionaryNew(dict_T *dict)
+! {
+! DictionaryObject *self;
+!
+! self = PyObject_NEW(DictionaryObject, &DictionaryType);
+! if (self == NULL)
+! return NULL;
+! self->dict = dict;
+! ++dict->dv_refcount;
+!
+! pyll_add((PyObject *)(self), &self->ref, &lastdict);
+!
+! return (PyObject *)(self);
+! }
+!
+! static int
+! pydict_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict)
+! {
+! dict_T *d;
+! char_u *key;
+! dictitem_T *di;
+! PyObject *keyObject;
+! PyObject *valObject;
+! Py_ssize_t iter = 0;
+!
+! d = dict_alloc();
+! if (d == NULL)
+! {
+! PyErr_NoMemory();
+! return -1;
+! }
+!
+! tv->v_type = VAR_DICT;
+! tv->vval.v_dict = d;
+!
+! while (PyDict_Next(obj, &iter, &keyObject, &valObject))
+! {
+! DICTKEY_DECL
+!
+! if (keyObject == NULL)
+! return -1;
+! if (valObject == NULL)
+! return -1;
+!
+! DICTKEY_GET(-1)
+!
+! di = dictitem_alloc(key);
+!
+! DICTKEY_UNREF
+!
+! if (di == NULL)
+! {
+! PyErr_NoMemory();
+! return -1;
+! }
+! di->di_tv.v_lock = 0;
+!
+! if (_ConvertFromPyObject(valObject, &di->di_tv, lookupDict) == -1)
+! {
+! vim_free(di);
+! return -1;
+! }
+! if (dict_add(d, di) == FAIL)
+! {
+! vim_free(di);
+! PyErr_SetVim(_("failed to add key to dictionary"));
+! return -1;
+! }
+! }
+! return 0;
+! }
+!
+! static int
+! pymap_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict)
+! {
+! dict_T *d;
+! char_u *key;
+! dictitem_T *di;
+! PyObject *list;
+! PyObject *litem;
+! PyObject *keyObject;
+! PyObject *valObject;
+! Py_ssize_t lsize;
+!
+! d = dict_alloc();
+! if (d == NULL)
+! {
+! PyErr_NoMemory();
+! return -1;
+! }
+!
+! tv->v_type = VAR_DICT;
+! tv->vval.v_dict = d;
+!
+! list = PyMapping_Items(obj);
+! lsize = PyList_Size(list);
+! while (lsize--)
+! {
+! DICTKEY_DECL
+!
+! litem = PyList_GetItem(list, lsize);
+! if (litem == NULL)
+! {
+! Py_DECREF(list);
+! return -1;
+! }
+!
+! keyObject = PyTuple_GetItem(litem, 0);
+! if (keyObject == NULL)
+! {
+! Py_DECREF(list);
+! Py_DECREF(litem);
+! return -1;
+! }
+!
+! DICTKEY_GET(-1)
+!
+! valObject = PyTuple_GetItem(litem, 1);
+! if (valObject == NULL)
+! {
+! Py_DECREF(list);
+! Py_DECREF(litem);
+! return -1;
+! }
+!
+! di = dictitem_alloc(key);
+!
+! DICTKEY_UNREF
+!
+! if (di == NULL)
+! {
+! Py_DECREF(list);
+! Py_DECREF(litem);
+! PyErr_NoMemory();
+! return -1;
+! }
+! di->di_tv.v_lock = 0;
+!
+! if (_ConvertFromPyObject(valObject, &di->di_tv, lookupDict) == -1)
+! {
+! vim_free(di);
+! Py_DECREF(list);
+! Py_DECREF(litem);
+! return -1;
+! }
+! if (dict_add(d, di) == FAIL)
+! {
+! vim_free(di);
+! Py_DECREF(list);
+! Py_DECREF(litem);
+! PyErr_SetVim(_("failed to add key to dictionary"));
+! return -1;
+! }
+! Py_DECREF(litem);
+! }
+! Py_DECREF(list);
+! return 0;
+! }
+!
+! static PyInt
+! DictionaryLength(PyObject *self)
+! {
+! return ((PyInt) ((((DictionaryObject *)(self))->dict->dv_hashtab.ht_used)));
+! }
+!
+! static PyObject *
+! DictionaryItem(PyObject *self, PyObject *keyObject)
+! {
+! char_u *key;
+! dictitem_T *val;
+! DICTKEY_DECL
+!
+! DICTKEY_GET(NULL)
+!
+! val = dict_find(((DictionaryObject *) (self))->dict, key, -1);
+!
+! DICTKEY_UNREF
+!
+! return ConvertToPyObject(&val->di_tv);
+! }
+!
+! static PyInt
+! DictionaryAssItem(PyObject *self, PyObject *keyObject, PyObject *valObject)
+! {
+! char_u *key;
+! typval_T tv;
+! dict_T *d = ((DictionaryObject *)(self))->dict;
+! dictitem_T *di;
+! DICTKEY_DECL
+!
+! if (d->dv_lock)
+! {
+! PyErr_SetVim(_("dict is locked"));
+! return -1;
+! }
+!
+! DICTKEY_GET(-1)
+!
+! di = dict_find(d, key, -1);
+!
+! if (valObject == NULL)
+! {
+! if (di == NULL)
+! {
+! PyErr_SetString(PyExc_IndexError, _("no such key in dictionary"));
+! return -1;
+! }
+! hashitem_T *hi = hash_find(&d->dv_hashtab, di->di_key);
+! hash_remove(&d->dv_hashtab, hi);
+! dictitem_free(di);
+! return 0;
+! }
+!
+! if (ConvertFromPyObject(valObject, &tv) == -1)
+! {
+! return -1;
+! }
+!
+! if (di == NULL)
+! {
+! di = dictitem_alloc(key);
+! if (di == NULL)
+! {
+! PyErr_NoMemory();
+! return -1;
+! }
+! di->di_tv.v_lock = 0;
+!
+! if (dict_add(d, di) == FAIL)
+! {
+! vim_free(di);
+! PyErr_SetVim(_("failed to add key to dictionary"));
+! return -1;
+! }
+! }
+! else
+! clear_tv(&di->di_tv);
+!
+! DICTKEY_UNREF
+!
+! copy_tv(&tv, &di->di_tv);
+! return 0;
+! }
+!
+! static PyObject *
+! DictionaryListKeys(PyObject *self)
+! {
+! dict_T *dict = ((DictionaryObject *)(self))->dict;
+! long_u todo = dict->dv_hashtab.ht_used;
+! Py_ssize_t i = 0;
+! PyObject *r;
+! hashitem_T *hi;
+!
+! r = PyList_New(todo);
+! for (hi = dict->dv_hashtab.ht_array; todo > 0; ++hi)
+! {
+! if (!HASHITEM_EMPTY(hi))
+! {
+! PyList_SetItem(r, i, PyBytes_FromString((char *)(hi->hi_key)));
+! --todo;
+! ++i;
+! }
+! }
+! return r;
+! }
+!
+! static struct PyMethodDef DictionaryMethods[] = {
+! {"keys", (PyCFunction)DictionaryListKeys, METH_NOARGS, ""},
+! { NULL, NULL, 0, NULL }
+! };
+!
+! static PyTypeObject ListType;
+!
+! typedef struct
+! {
+! PyObject_HEAD
+! list_T *list;
+! pylinkedlist_T ref;
+! } ListObject;
+!
+! static PyObject *
+! ListNew(list_T *list)
+! {
+! ListObject *self;
+!
+! self = PyObject_NEW(ListObject, &ListType);
+! if (self == NULL)
+! return NULL;
+! self->list = list;
+! ++list->lv_refcount;
+!
+! pyll_add((PyObject *)(self), &self->ref, &lastlist);
+!
+! return (PyObject *)(self);
+! }
+!
+! static int
+! list_py_concat(list_T *l, PyObject *obj, PyObject *lookupDict)
+! {
+! Py_ssize_t i;
+! Py_ssize_t lsize = PySequence_Size(obj);
+! PyObject *litem;
+! listitem_T *li;
+!
+! for(i=0; i<lsize; i++)
+! {
+! li = listitem_alloc();
+! if (li == NULL)
+! {
+! PyErr_NoMemory();
+! return -1;
+! }
+! li->li_tv.v_lock = 0;
+!
+! litem = PySequence_GetItem(obj, i);
+! if (litem == NULL)
+! return -1;
+! if (_ConvertFromPyObject(litem, &li->li_tv, lookupDict) == -1)
+! return -1;
+!
+! list_append(l, li);
+! }
+! return 0;
+! }
+!
+! static int
+! pyseq_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict)
+! {
+! list_T *l;
+!
+! l = list_alloc();
+! if (l == NULL)
+! {
+! PyErr_NoMemory();
+! return -1;
+! }
+!
+! tv->v_type = VAR_LIST;
+! tv->vval.v_list = l;
+!
+! if (list_py_concat(l, obj, lookupDict) == -1)
+! return -1;
+!
+! return 0;
+! }
+!
+! static int
+! pyiter_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict)
+! {
+! PyObject *iterator = PyObject_GetIter(obj);
+! PyObject *item;
+! list_T *l;
+! listitem_T *li;
+!
+! l = list_alloc();
+!
+! if (l == NULL)
+! {
+! PyErr_NoMemory();
+! return -1;
+! }
+!
+! tv->vval.v_list = l;
+! tv->v_type = VAR_LIST;
+!
+!
+! if (iterator == NULL)
+! return -1;
+!
+! while ((item = PyIter_Next(obj)))
+! {
+! li = listitem_alloc();
+! if (li == NULL)
+! {
+! PyErr_NoMemory();
+! return -1;
+! }
+! li->li_tv.v_lock = 0;
+!
+! if (_ConvertFromPyObject(item, &li->li_tv, lookupDict) == -1)
+! return -1;
+!
+! list_append(l, li);
+!
+! Py_DECREF(item);
+! }
+!
+! Py_DECREF(iterator);
+! return 0;
+! }
+!
+! static PyInt
+! ListLength(PyObject *self)
+! {
+! return ((PyInt) (((ListObject *) (self))->list->lv_len));
+! }
+!
+! static PyObject *
+! ListItem(PyObject *self, Py_ssize_t index)
+! {
+! listitem_T *li;
+!
+! if (index>=ListLength(self))
+! {
+! PyErr_SetString(PyExc_IndexError, "list index out of range");
+! return NULL;
+! }
+! li = list_find(((ListObject *) (self))->list, (long) index);
+! if (li == NULL)
+! {
+! PyErr_SetVim(_("internal error: failed to get vim list item"));
+! return NULL;
+! }
+! return ConvertToPyObject(&li->li_tv);
+! }
+!
+! #define PROC_RANGE \
+! if (last < 0) {\
+! if (last < -size) \
+! last = 0; \
+! else \
+! last += size; \
+! } \
+! if (first < 0) \
+! first = 0; \
+! if (first > size) \
+! first = size; \
+! if (last > size) \
+! last = size;
+!
+! static PyObject *
+! ListSlice(PyObject *self, Py_ssize_t first, Py_ssize_t last)
+! {
+! PyInt i;
+! PyInt size = ListLength(self);
+! PyInt n;
+! PyObject *list;
+! int reversed = 0;
+!
+! PROC_RANGE
+! if (first >= last)
+! first = last;
+!
+! n = last-first;
+! list = PyList_New(n);
+! if (list == NULL)
+! return NULL;
+!
+! for (i = 0; i < n; ++i)
+! {
+! PyObject *item = ListItem(self, i);
+! if (item == NULL)
+! {
+! Py_DECREF(list);
+! return NULL;
+! }
+!
+! if ((PyList_SetItem(list, ((reversed)?(n-i-1):(i)), item)))
+! {
+! Py_DECREF(item);
+! Py_DECREF(list);
+! return NULL;
+! }
+! }
+!
+! return list;
+! }
+!
+! static int
+! ListAssItem(PyObject *self, Py_ssize_t index, PyObject *obj)
+! {
+! typval_T tv;
+! list_T *l = ((ListObject *) (self))->list;
+! listitem_T *li;
+! Py_ssize_t length = ListLength(self);
+!
+! if (l->lv_lock)
+! {
+! PyErr_SetVim(_("list is locked"));
+! return -1;
+! }
+! if (index>length || (index==length && obj==NULL))
+! {
+! PyErr_SetString(PyExc_IndexError, "list index out of range");
+! return -1;
+! }
+!
+! if (obj == NULL)
+! {
+! li = list_find(l, (long) index);
+! list_remove(l, li, li);
+! clear_tv(&li->li_tv);
+! vim_free(li);
+! return 0;
+! }
+!
+! if (ConvertFromPyObject(obj, &tv) == -1)
+! return -1;
+!
+! if (index == length)
+! {
+! if (list_append_tv(l, &tv) == FAIL)
+! {
+! PyErr_SetVim(_("Failed to add item to list"));
+! return -1;
+! }
+! }
+! else
+! {
+! li = list_find(l, (long) index);
+! clear_tv(&li->li_tv);
+! copy_tv(&tv, &li->li_tv);
+! }
+! return 0;
+! }
+!
+! static int
+! ListAssSlice(PyObject *self, Py_ssize_t first, Py_ssize_t last, PyObject *obj)
+! {
+! PyInt size = ListLength(self);
+! Py_ssize_t i;
+! Py_ssize_t lsize;
+! PyObject *litem;
+! listitem_T *li;
+! listitem_T *next;
+! typval_T v;
+! list_T *l = ((ListObject *) (self))->list;
+!
+! if (l->lv_lock)
+! {
+! PyErr_SetVim(_("list is locked"));
+! return -1;
+! }
+!
+! PROC_RANGE
+
+! if (first == size)
+! li = NULL;
+! else
+! {
+! li = list_find(l, (long) first);
+! if (li == NULL)
+! {
+! PyErr_SetVim(_("internal error: no vim list item"));
+! return -1;
+! }
+! if (last > first)
+! {
+! i = last - first;
+! while (i-- && li != NULL)
+ {
+! next = li->li_next;
+! listitem_remove(l, li);
+! li = next;
+ }
+ }
+ }
+!
+! if (obj == NULL)
+! return 0;
+!
+! if (!PyList_Check(obj))
+ {
+! PyErr_SetString(PyExc_TypeError, _("can only assign lists to slice"));
+! return -1;
+ }
+
+! lsize = PyList_Size(obj);
+!
+! for(i=0; i<lsize; i++)
+! {
+! litem = PyList_GetItem(obj, i);
+! if (litem == NULL)
+! return -1;
+! if (ConvertFromPyObject(litem, &v) == -1)
+! return -1;
+! if (list_insert_tv(l, &v, li) == FAIL)
+! {
+! PyErr_SetVim(_("internal error: failed to add item to list"));
+! return -1;
+! }
+! }
+! return 0;
+ }
+
+ static PyObject *
+! ListConcatInPlace(PyObject *self, PyObject *obj)
+ {
+! list_T *l = ((ListObject *) (self))->list;
+! PyObject *lookup_dict;
+
+! if (l->lv_lock)
+! {
+! PyErr_SetVim(_("list is locked"));
+ return NULL;
++ }
+
+! if (!PySequence_Check(obj))
+ {
+! PyErr_SetString(PyExc_TypeError, _("can only concatenate with lists"));
+ return NULL;
+ }
+
+ lookup_dict = PyDict_New();
+! if (list_py_concat(l, obj, lookup_dict) == -1)
+! {
+! Py_DECREF(lookup_dict);
+! return NULL;
+! }
+ Py_DECREF(lookup_dict);
+
+! Py_INCREF(self);
+! return self;
+ }
+
+! static struct PyMethodDef ListMethods[] = {
+! {"extend", (PyCFunction)ListConcatInPlace, METH_O, ""},
+! { NULL, NULL, 0, NULL }
+ };
+
+ typedef struct
+ {
+ PyObject_HEAD
+! char_u *name;
+! } FunctionObject;
+
+! static PyTypeObject FunctionType;
+
+! static PyObject *
+! FunctionNew(char_u *name)
+ {
+! FunctionObject *self;
+
+! self = PyObject_NEW(FunctionObject, &FunctionType);
+! if (self == NULL)
+! return NULL;
+! self->name = PyMem_New(char_u, STRLEN(name) + 1);
+! if (self->name == NULL)
+ {
+! PyErr_NoMemory();
+! return NULL;
+ }
+! STRCPY(self->name, name);
+! func_ref(name);
+! return (PyObject *)(self);
+ }
+
+ static PyObject *
+! FunctionCall(PyObject *self, PyObject *argsObject, PyObject *kwargs)
+ {
+! FunctionObject *this = (FunctionObject *)(self);
+! char_u *name = this->name;
+! typval_T args;
+! typval_T selfdicttv;
+! typval_T rettv;
+! dict_T *selfdict = NULL;
+! PyObject *selfdictObject;
+! PyObject *result;
+! int error;
+
+! if (ConvertFromPyObject(argsObject, &args) == -1)
+! return NULL;
+!
+! if (kwargs != NULL)
+ {
+! selfdictObject = PyDict_GetItemString(kwargs, "self");
+! if (selfdictObject != NULL)
+! {
+! if (!PyDict_Check(selfdictObject))
+! {
+! PyErr_SetString(PyExc_TypeError, _("'self' argument must be a dictionary"));
+! clear_tv(&args);
+! return NULL;
+! }
+! if (ConvertFromPyObject(selfdictObject, &selfdicttv) == -1)
+! return NULL;
+! selfdict = selfdicttv.vval.v_dict;
+! }
+ }
+
+! error = func_call(name, &args, selfdict, &rettv);
+! if (error != OK)
+! {
+! result = NULL;
+! PyErr_SetVim(_("failed to run function"));
+! }
+! else
+! result = ConvertToPyObject(&rettv);
+!
+! /* FIXME Check what should really be cleared. */
+! clear_tv(&args);
+! clear_tv(&rettv);
+! /*
+! * if (selfdict!=NULL)
+! * clear_tv(selfdicttv);
+! */
+!
+! return result;
+ }
+
+! static struct PyMethodDef FunctionMethods[] = {
+! {"__call__", (PyCFunction)FunctionCall, METH_VARARGS|METH_KEYWORDS, ""},
+! { NULL, NULL, 0, NULL }
+! };
+
+ #define INVALID_WINDOW_VALUE ((win_T *)(-1))
+
+***************
+*** 1567,1569 ****
+--- 2383,2638 ----
+ { NULL, NULL, 0, NULL }
+ };
+
++ static void
++ set_ref_in_py(const int copyID)
++ {
++ pylinkedlist_T *cur;
++ dict_T *dd;
++ list_T *ll;
++
++ if (lastdict != NULL)
++ for(cur = lastdict ; cur != NULL ; cur = cur->pll_prev)
++ {
++ dd = ((DictionaryObject *) (cur->pll_obj))->dict;
++ if (dd->dv_copyID != copyID)
++ {
++ dd->dv_copyID = copyID;
++ set_ref_in_ht(&dd->dv_hashtab, copyID);
++ }
++ }
++
++ if (lastlist != NULL)
++ for(cur = lastlist ; cur != NULL ; cur = cur->pll_prev)
++ {
++ ll = ((ListObject *) (cur->pll_obj))->list;
++ if (ll->lv_copyID != copyID)
++ {
++ ll->lv_copyID = copyID;
++ set_ref_in_list(ll, copyID);
++ }
++ }
++ }
++
++ static int
++ set_string_copy(char_u *str, typval_T *tv)
++ {
++ tv->vval.v_string = vim_strsave(str);
++ if (tv->vval.v_string == NULL)
++ {
++ PyErr_NoMemory();
++ return -1;
++ }
++ return 0;
++ }
++
++ #ifdef FEAT_EVAL
++ typedef int (*pytotvfunc)(PyObject *, typval_T *, PyObject *);
++
++ static int
++ convert_dl(PyObject *obj, typval_T *tv,
++ pytotvfunc py_to_tv, PyObject *lookupDict)
++ {
++ PyObject *capsule;
++ char hexBuf[sizeof(void *) * 2 + 3];
++
++ sprintf(hexBuf, "%p", obj);
++
++ capsule = PyDict_GetItemString(lookupDict, hexBuf);
++ if (capsule == NULL)
++ {
++ capsule = PyCapsule_New(tv, NULL, NULL);
++ PyDict_SetItemString(lookupDict, hexBuf, capsule);
++ Py_DECREF(capsule);
++ if (py_to_tv(obj, tv, lookupDict) == -1)
++ {
++ tv->v_type = VAR_UNKNOWN;
++ return -1;
++ }
++ /* As we are not using copy_tv which increments reference count we must
++ * do it ourself. */
++ switch(tv->v_type)
++ {
++ case VAR_DICT: ++tv->vval.v_dict->dv_refcount; break;
++ case VAR_LIST: ++tv->vval.v_list->lv_refcount; break;
++ }
++ }
++ else
++ {
++ typval_T *v = PyCapsule_GetPointer(capsule, NULL);
++ copy_tv(v, tv);
++ }
++ return 0;
++ }
++
++ static int
++ ConvertFromPyObject(PyObject *obj, typval_T *tv)
++ {
++ PyObject *lookup_dict;
++ int r;
++
++ lookup_dict = PyDict_New();
++ r = _ConvertFromPyObject(obj, tv, lookup_dict);
++ Py_DECREF(lookup_dict);
++ return r;
++ }
++
++ static int
++ _ConvertFromPyObject(PyObject *obj, typval_T *tv, PyObject *lookupDict)
++ {
++ if (obj->ob_type == &DictionaryType)
++ {
++ tv->v_type = VAR_DICT;
++ tv->vval.v_dict = (((DictionaryObject *)(obj))->dict);
++ ++tv->vval.v_dict->dv_refcount;
++ }
++ else if (obj->ob_type == &ListType)
++ {
++ tv->v_type = VAR_LIST;
++ tv->vval.v_list = (((ListObject *)(obj))->list);
++ ++tv->vval.v_list->lv_refcount;
++ }
++ else if (obj->ob_type == &FunctionType)
++ {
++ if (set_string_copy(((FunctionObject *) (obj))->name, tv) == -1)
++ return -1;
++
++ tv->v_type = VAR_FUNC;
++ func_ref(tv->vval.v_string);
++ }
++ #if PY_MAJOR_VERSION >= 3
++ else if (PyBytes_Check(obj))
++ {
++ char_u *result = (char_u *) PyBytes_AsString(obj);
++
++ if (result == NULL)
++ return -1;
++
++ if (set_string_copy(result, tv) == -1)
++ return -1;
++
++ tv->v_type = VAR_STRING;
++ }
++ else if (PyUnicode_Check(obj))
++ {
++ PyObject *bytes;
++ char_u *result;
++
++ bytes = PyString_AsBytes(obj);
++ if (bytes == NULL)
++ return -1;
++
++ result = (char_u *) PyBytes_AsString(bytes);
++ if (result == NULL)
++ return -1;
++
++ if (set_string_copy(result, tv) == -1)
++ {
++ Py_XDECREF(bytes);
++ return -1;
++ }
++ Py_XDECREF(bytes);
++
++ tv->v_type = VAR_STRING;
++ }
++ #else
++ else if (PyUnicode_Check(obj))
++ {
++ PyObject *bytes;
++ char_u *result;
++
++ bytes = PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, NULL);
++ if (bytes == NULL)
++ return -1;
++
++ result=(char_u *) PyString_AsString(bytes);
++ if (result == NULL)
++ return -1;
++
++ if (set_string_copy(result, tv) == -1)
++ {
++ Py_XDECREF(bytes);
++ return -1;
++ }
++ Py_XDECREF(bytes);
++
++ tv->v_type = VAR_STRING;
++ }
++ else if (PyString_Check(obj))
++ {
++ char_u *result = (char_u *) PyString_AsString(obj);
++
++ if (result == NULL)
++ return -1;
++
++ if (set_string_copy(result, tv) == -1)
++ return -1;
++
++ tv->v_type = VAR_STRING;
++ }
++ else if (PyInt_Check(obj))
++ {
++ tv->v_type = VAR_NUMBER;
++ tv->vval.v_number = (varnumber_T) PyInt_AsLong(obj);
++ }
++ #endif
++ else if (PyLong_Check(obj))
++ {
++ tv->v_type = VAR_NUMBER;
++ tv->vval.v_number = (varnumber_T) PyLong_AsLong(obj);
++ }
++ else if (PyDict_Check(obj))
++ return convert_dl(obj, tv, pydict_to_tv, lookupDict);
++ #ifdef FEAT_FLOAT
++ else if (PyFloat_Check(obj))
++ {
++ tv->v_type = VAR_FLOAT;
++ tv->vval.v_float = (float_T) PyFloat_AsDouble(obj);
++ }
++ #endif
++ else if (PyIter_Check(obj))
++ return convert_dl(obj, tv, pyiter_to_tv, lookupDict);
++ else if (PySequence_Check(obj))
++ return convert_dl(obj, tv, pyseq_to_tv, lookupDict);
++ else if (PyMapping_Check(obj))
++ return convert_dl(obj, tv, pymap_to_tv, lookupDict);
++ else
++ {
++ PyErr_SetString(PyExc_TypeError, _("unable to convert to vim structure"));
++ return -1;
++ }
++ return 0;
++ }
++
++ static PyObject *
++ ConvertToPyObject(typval_T *tv)
++ {
++ if (tv == NULL)
++ {
++ PyErr_SetVim(_("NULL reference passed"));
++ return NULL;
++ }
++ switch (tv->v_type)
++ {
++ case VAR_STRING:
++ return PyBytes_FromString((char *) tv->vval.v_string);
++ case VAR_NUMBER:
++ return PyLong_FromLong((long) tv->vval.v_number);
++ #ifdef FEAT_FLOAT
++ case VAR_FLOAT:
++ return PyFloat_FromDouble((double) tv->vval.v_float);
++ #endif
++ case VAR_LIST:
++ return ListNew(tv->vval.v_list);
++ case VAR_DICT:
++ return DictionaryNew(tv->vval.v_dict);
++ case VAR_FUNC:
++ return FunctionNew(tv->vval.v_string);
++ case VAR_UNKNOWN:
++ Py_INCREF(Py_None);
++ return Py_None;
++ default:
++ PyErr_SetVim(_("internal error: invalid value type"));
++ return NULL;
++ }
++ }
++ #endif
+*** ../vim-7.3.568/src/if_python.c 2011-08-28 16:00:14.000000000 +0200
+--- src/if_python.c 2012-06-29 12:47:48.000000000 +0200
+***************
+*** 1,4 ****
+! /* vi:set ts=8 sts=4 sw=4:
+ *
+ * VIM - Vi IMproved by Bram Moolenaar
+ *
+--- 1,4 ----
+! /* vi:set ts=8 sts=4 sw=4 noet:
+ *
+ * VIM - Vi IMproved by Bram Moolenaar
+ *
+***************
+*** 56,61 ****
+--- 56,63 ----
+
+ static void init_structs(void);
+
++ #define PyBytes_FromString PyString_FromString
++
+ /* No-op conversion functions, use with care! */
+ #define PyString_AsBytes(obj) (obj)
+ #define PyString_FreeBytes(obj)
+***************
+*** 122,132 ****
+--- 124,136 ----
+ /* This makes if_python.c compile without warnings against Python 2.5
+ * on Win32 and Win64. */
+ # undef PyRun_SimpleString
++ # undef PyRun_String
+ # undef PyArg_Parse
+ # undef PyArg_ParseTuple
+ # undef Py_BuildValue
+ # undef Py_InitModule4
+ # undef Py_InitModule4_64
++ # undef PyObject_CallMethod
+
+ /*
+ * Wrapper defines
+***************
+*** 134,139 ****
+--- 138,144 ----
+ # define PyArg_Parse dll_PyArg_Parse
+ # define PyArg_ParseTuple dll_PyArg_ParseTuple
+ # define PyMem_Free dll_PyMem_Free
++ # define PyMem_Malloc dll_PyMem_Malloc
+ # define PyDict_SetItemString dll_PyDict_SetItemString
+ # define PyErr_BadArgument dll_PyErr_BadArgument
+ # define PyErr_Clear dll_PyErr_Clear
+***************
+*** 150,172 ****
+--- 155,202 ----
+ # endif
+ # define PyInt_AsLong dll_PyInt_AsLong
+ # define PyInt_FromLong dll_PyInt_FromLong
++ # define PyLong_AsLong dll_PyLong_AsLong
++ # define PyLong_FromLong dll_PyLong_FromLong
+ # define PyInt_Type (*dll_PyInt_Type)
++ # define PyLong_Type (*dll_PyLong_Type)
+ # define PyList_GetItem dll_PyList_GetItem
+ # define PyList_Append dll_PyList_Append
+ # define PyList_New dll_PyList_New
+ # define PyList_SetItem dll_PyList_SetItem
+ # define PyList_Size dll_PyList_Size
+ # define PyList_Type (*dll_PyList_Type)
++ # define PySequence_Check dll_PySequence_Check
++ # define PySequence_Size dll_PySequence_Size
++ # define PySequence_GetItem dll_PySequence_GetItem
++ # define PyTuple_Size dll_PyTuple_Size
++ # define PyTuple_GetItem dll_PyTuple_GetItem
++ # define PyTuple_Type (*dll_PyTuple_Type)
+ # define PyImport_ImportModule dll_PyImport_ImportModule
+ # define PyDict_New dll_PyDict_New
+ # define PyDict_GetItemString dll_PyDict_GetItemString
++ # define PyDict_Next dll_PyDict_Next
++ # ifdef PyMapping_Items
++ # define PY_NO_MAPPING_ITEMS
++ # else
++ # define PyMapping_Items dll_PyMapping_Items
++ # endif
++ # define PyObject_CallMethod dll_PyObject_CallMethod
++ # define PyMapping_Check dll_PyMapping_Check
++ # define PyIter_Next dll_PyIter_Next
+ # define PyModule_GetDict dll_PyModule_GetDict
+ # define PyRun_SimpleString dll_PyRun_SimpleString
++ # define PyRun_String dll_PyRun_String
+ # define PyString_AsString dll_PyString_AsString
+ # define PyString_FromString dll_PyString_FromString
+ # define PyString_FromStringAndSize dll_PyString_FromStringAndSize
+ # define PyString_Size dll_PyString_Size
+ # define PyString_Type (*dll_PyString_Type)
++ # define PyUnicode_Type (*dll_PyUnicode_Type)
++ # define PyUnicodeUCS4_AsEncodedString (*dll_PyUnicodeUCS4_AsEncodedString)
++ # define PyFloat_AsDouble dll_PyFloat_AsDouble
++ # define PyFloat_FromDouble dll_PyFloat_FromDouble
++ # define PyFloat_Type (*dll_PyFloat_Type)
++ # define PyImport_AddModule (*dll_PyImport_AddModule)
+ # define PySys_SetObject dll_PySys_SetObject
+ # define PySys_SetArgv dll_PySys_SetArgv
+ # define PyType_Type (*dll_PyType_Type)
+***************
+*** 179,186 ****
+--- 209,218 ----
+ # define Py_Finalize dll_Py_Finalize
+ # define Py_IsInitialized dll_Py_IsInitialized
+ # define _PyObject_New dll__PyObject_New
++ # define _PyObject_NextNotImplemented (*dll__PyObject_NextNotImplemented)
+ # define _Py_NoneStruct (*dll__Py_NoneStruct)
+ # define PyObject_Init dll__PyObject_Init
++ # define PyObject_GetIter dll_PyObject_GetIter
+ # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000
+ # define PyType_IsSubtype dll_PyType_IsSubtype
+ # endif
+***************
+*** 188,193 ****
+--- 220,227 ----
+ # define PyObject_Malloc dll_PyObject_Malloc
+ # define PyObject_Free dll_PyObject_Free
+ # endif
++ # define PyCapsule_New dll_PyCapsule_New
++ # define PyCapsule_GetPointer dll_PyCapsule_GetPointer
+
+ /*
+ * Pointers for dynamic link
+***************
+*** 195,200 ****
+--- 229,235 ----
+ static int(*dll_PyArg_Parse)(PyObject *, char *, ...);
+ static int(*dll_PyArg_ParseTuple)(PyObject *, char *, ...);
+ static int(*dll_PyMem_Free)(void *);
++ static void* (*dll_PyMem_Malloc)(size_t);
+ static int(*dll_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item);
+ static int(*dll_PyErr_BadArgument)(void);
+ static void(*dll_PyErr_Clear)(void);
+***************
+*** 208,233 ****
+ # ifdef PY_CAN_RECURSE
+ static PyGILState_STATE (*dll_PyGILState_Ensure)(void);
+ static void (*dll_PyGILState_Release)(PyGILState_STATE);
+! #endif
+ static long(*dll_PyInt_AsLong)(PyObject *);
+ static PyObject*(*dll_PyInt_FromLong)(long);
+ static PyTypeObject* dll_PyInt_Type;
+ static PyObject*(*dll_PyList_GetItem)(PyObject *, PyInt);
+ static PyObject*(*dll_PyList_Append)(PyObject *, PyObject *);
+ static PyObject*(*dll_PyList_New)(PyInt size);
+ static int(*dll_PyList_SetItem)(PyObject *, PyInt, PyObject *);
+ static PyInt(*dll_PyList_Size)(PyObject *);
+ static PyTypeObject* dll_PyList_Type;
+ static PyObject*(*dll_PyImport_ImportModule)(const char *);
+ static PyObject*(*dll_PyDict_New)(void);
+ static PyObject*(*dll_PyDict_GetItemString)(PyObject *, const char *);
+ static PyObject*(*dll_PyModule_GetDict)(PyObject *);
+ static int(*dll_PyRun_SimpleString)(char *);
+ static char*(*dll_PyString_AsString)(PyObject *);
+ static PyObject*(*dll_PyString_FromString)(const char *);
+ static PyObject*(*dll_PyString_FromStringAndSize)(const char *, PyInt);
+ static PyInt(*dll_PyString_Size)(PyObject *);
+ static PyTypeObject* dll_PyString_Type;
+ static int(*dll_PySys_SetObject)(char *, PyObject *);
+ static int(*dll_PySys_SetArgv)(int, char **);
+ static PyTypeObject* dll_PyType_Type;
+--- 243,290 ----
+ # ifdef PY_CAN_RECURSE
+ static PyGILState_STATE (*dll_PyGILState_Ensure)(void);
+ static void (*dll_PyGILState_Release)(PyGILState_STATE);
+! # endif
+ static long(*dll_PyInt_AsLong)(PyObject *);
+ static PyObject*(*dll_PyInt_FromLong)(long);
++ static long(*dll_PyLong_AsLong)(PyObject *);
++ static PyObject*(*dll_PyLong_FromLong)(long);
+ static PyTypeObject* dll_PyInt_Type;
++ static PyTypeObject* dll_PyLong_Type;
+ static PyObject*(*dll_PyList_GetItem)(PyObject *, PyInt);
+ static PyObject*(*dll_PyList_Append)(PyObject *, PyObject *);
+ static PyObject*(*dll_PyList_New)(PyInt size);
+ static int(*dll_PyList_SetItem)(PyObject *, PyInt, PyObject *);
+ static PyInt(*dll_PyList_Size)(PyObject *);
+ static PyTypeObject* dll_PyList_Type;
++ static int (*dll_PySequence_Check)(PyObject *);
++ static PyInt(*dll_PySequence_Size)(PyObject *);
++ static PyObject*(*dll_PySequence_GetItem)(PyObject *, PyInt);
++ static PyInt(*dll_PyTuple_Size)(PyObject *);
++ static PyObject*(*dll_PyTuple_GetItem)(PyObject *, PyInt);
++ static PyTypeObject* dll_PyTuple_Type;
+ static PyObject*(*dll_PyImport_ImportModule)(const char *);
+ static PyObject*(*dll_PyDict_New)(void);
+ static PyObject*(*dll_PyDict_GetItemString)(PyObject *, const char *);
++ static int (*dll_PyDict_Next)(PyObject *, Py_ssize_t *, PyObject **, PyObject **);
++ # ifndef PY_NO_MAPPING_ITEMS
++ static PyObject* (*dll_PyMapping_Items)(PyObject *);
++ # endif
++ static PyObject* (*dll_PyObject_CallMethod)(PyObject *, char *, PyObject *);
++ static int (*dll_PyMapping_Check)(PyObject *);
++ static PyObject* (*dll_PyIter_Next)(PyObject *);
+ static PyObject*(*dll_PyModule_GetDict)(PyObject *);
+ static int(*dll_PyRun_SimpleString)(char *);
++ static PyObject *(*dll_PyRun_String)(char *, int, PyObject *, PyObject *);
+ static char*(*dll_PyString_AsString)(PyObject *);
+ static PyObject*(*dll_PyString_FromString)(const char *);
+ static PyObject*(*dll_PyString_FromStringAndSize)(const char *, PyInt);
+ static PyInt(*dll_PyString_Size)(PyObject *);
+ static PyTypeObject* dll_PyString_Type;
++ static PyTypeObject* dll_PyUnicode_Type;
++ static PyObject *(*PyUnicodeUCS4_AsEncodedString)(PyObject *, char *, char *);
++ static double(*dll_PyFloat_AsDouble)(PyObject *);
++ static PyObject*(*dll_PyFloat_FromDouble)(double);
++ static PyTypeObject* dll_PyFloat_Type;
+ static int(*dll_PySys_SetObject)(char *, PyObject *);
+ static int(*dll_PySys_SetArgv)(int, char **);
+ static PyTypeObject* dll_PyType_Type;
+***************
+*** 235,246 ****
+--- 292,306 ----
+ static PyObject*(*dll_Py_BuildValue)(char *, ...);
+ static PyObject*(*dll_Py_FindMethod)(struct PyMethodDef[], PyObject *, char *);
+ static PyObject*(*dll_Py_InitModule4)(char *, struct PyMethodDef *, char *, PyObject *, int);
++ static PyObject*(*dll_PyImport_AddModule)(char *);
+ static void(*dll_Py_SetPythonHome)(char *home);
+ static void(*dll_Py_Initialize)(void);
+ static void(*dll_Py_Finalize)(void);
+ static int(*dll_Py_IsInitialized)(void);
+ static PyObject*(*dll__PyObject_New)(PyTypeObject *, PyObject *);
+ static PyObject*(*dll__PyObject_Init)(PyObject *, PyTypeObject *);
++ static PyObject* (*dll_PyObject_GetIter)(PyObject *);
++ static iternextfunc dll__PyObject_NextNotImplemented;
+ static PyObject* dll__Py_NoneStruct;
+ # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000
+ static int (*dll_PyType_IsSubtype)(PyTypeObject *, PyTypeObject *);
+***************
+*** 249,254 ****
+--- 309,316 ----
+ static void* (*dll_PyObject_Malloc)(size_t);
+ static void (*dll_PyObject_Free)(void*);
+ # endif
++ static PyObject* (*dll_PyCapsule_New)(void *, char *, PyCapsule_Destructor);
++ static void* (*dll_PyCapsule_GetPointer)(PyObject *, char *);
+
+ static HINSTANCE hinstPython = 0; /* Instance of python.dll */
+
+***************
+*** 278,283 ****
+--- 340,346 ----
+ {"PyArg_Parse", (PYTHON_PROC*)&dll_PyArg_Parse},
+ {"PyArg_ParseTuple", (PYTHON_PROC*)&dll_PyArg_ParseTuple},
+ {"PyMem_Free", (PYTHON_PROC*)&dll_PyMem_Free},
++ {"PyMem_Malloc", (PYTHON_PROC*)&dll_PyMem_Malloc},
+ {"PyDict_SetItemString", (PYTHON_PROC*)&dll_PyDict_SetItemString},
+ {"PyErr_BadArgument", (PYTHON_PROC*)&dll_PyErr_BadArgument},
+ {"PyErr_Clear", (PYTHON_PROC*)&dll_PyErr_Clear},
+***************
+*** 294,316 ****
+--- 357,402 ----
+ # endif
+ {"PyInt_AsLong", (PYTHON_PROC*)&dll_PyInt_AsLong},
+ {"PyInt_FromLong", (PYTHON_PROC*)&dll_PyInt_FromLong},
++ {"PyLong_AsLong", (PYTHON_PROC*)&dll_PyLong_AsLong},
++ {"PyLong_FromLong", (PYTHON_PROC*)&dll_PyLong_FromLong},
+ {"PyInt_Type", (PYTHON_PROC*)&dll_PyInt_Type},
++ {"PyLong_Type", (PYTHON_PROC*)&dll_PyLong_Type},
+ {"PyList_GetItem", (PYTHON_PROC*)&dll_PyList_GetItem},
+ {"PyList_Append", (PYTHON_PROC*)&dll_PyList_Append},
+ {"PyList_New", (PYTHON_PROC*)&dll_PyList_New},
+ {"PyList_SetItem", (PYTHON_PROC*)&dll_PyList_SetItem},
+ {"PyList_Size", (PYTHON_PROC*)&dll_PyList_Size},
+ {"PyList_Type", (PYTHON_PROC*)&dll_PyList_Type},
++ {"PySequence_GetItem", (PYTHON_PROC*)&dll_PySequence_GetItem},
++ {"PySequence_Size", (PYTHON_PROC*)&dll_PySequence_Size},
++ {"PySequence_Check", (PYTHON_PROC*)&dll_PySequence_Check},
++ {"PyTuple_GetItem", (PYTHON_PROC*)&dll_PyTuple_GetItem},
++ {"PyTuple_Size", (PYTHON_PROC*)&dll_PyTuple_Size},
++ {"PyTuple_Type", (PYTHON_PROC*)&dll_PyTuple_Type},
+ {"PyImport_ImportModule", (PYTHON_PROC*)&dll_PyImport_ImportModule},
+ {"PyDict_GetItemString", (PYTHON_PROC*)&dll_PyDict_GetItemString},
++ {"PyDict_Next", (PYTHON_PROC*)&dll_PyDict_Next},
+ {"PyDict_New", (PYTHON_PROC*)&dll_PyDict_New},
++ # ifndef PY_NO_MAPPING_ITEMS
++ {"PyMapping_Items", (PYTHON_PROC*)&dll_PyMapping_Items},
++ # endif
++ {"PyObject_CallMethod", (PYTHON_PROC*)&dll_PyObject_CallMethod},
++ {"PyMapping_Check", (PYTHON_PROC*)&dll_PyMapping_Check},
++ {"PyIter_Next", (PYTHON_PROC*)&dll_PyIter_Next},
+ {"PyModule_GetDict", (PYTHON_PROC*)&dll_PyModule_GetDict},
+ {"PyRun_SimpleString", (PYTHON_PROC*)&dll_PyRun_SimpleString},
++ {"PyRun_String", (PYTHON_PROC*)&dll_PyRun_String},
+ {"PyString_AsString", (PYTHON_PROC*)&dll_PyString_AsString},
+ {"PyString_FromString", (PYTHON_PROC*)&dll_PyString_FromString},
+ {"PyString_FromStringAndSize", (PYTHON_PROC*)&dll_PyString_FromStringAndSize},
+ {"PyString_Size", (PYTHON_PROC*)&dll_PyString_Size},
+ {"PyString_Type", (PYTHON_PROC*)&dll_PyString_Type},
++ {"PyUnicode_Type", (PYTHON_PROC*)&dll_PyUnicode_Type},
++ {"PyUnicodeUCS4_AsEncodedString", (PYTHON_PROC*)&dll_PyUnicodeUCS4_AsEncodedString},
++ {"PyFloat_Type", (PYTHON_PROC*)&dll_PyFloat_Type},
++ {"PyFloat_AsDouble", (PYTHON_PROC*)&dll_PyFloat_AsDouble},
++ {"PyFloat_FromDouble", (PYTHON_PROC*)&dll_PyFloat_FromDouble},
++ {"PyImport_AddModule", (PYTHON_PROC*)&dll_PyImport_AddModule},
+ {"PySys_SetObject", (PYTHON_PROC*)&dll_PySys_SetObject},
+ {"PySys_SetArgv", (PYTHON_PROC*)&dll_PySys_SetArgv},
+ {"PyType_Type", (PYTHON_PROC*)&dll_PyType_Type},
+***************
+*** 328,333 ****
+--- 414,421 ----
+ {"Py_IsInitialized", (PYTHON_PROC*)&dll_Py_IsInitialized},
+ {"_PyObject_New", (PYTHON_PROC*)&dll__PyObject_New},
+ {"PyObject_Init", (PYTHON_PROC*)&dll__PyObject_Init},
++ {"PyObject_GetIter", (PYTHON_PROC*)&dll_PyObject_GetIter},
++ {"_PyObject_NextNotImplemented", (PYTHON_PROC*)&dll__PyObject_NextNotImplemented},
+ {"_Py_NoneStruct", (PYTHON_PROC*)&dll__Py_NoneStruct},
+ # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000
+ {"PyType_IsSubtype", (PYTHON_PROC*)&dll_PyType_IsSubtype},
+***************
+*** 336,341 ****
+--- 424,431 ----
+ {"PyObject_Malloc", (PYTHON_PROC*)&dll_PyObject_Malloc},
+ {"PyObject_Free", (PYTHON_PROC*)&dll_PyObject_Free},
+ # endif
++ {"PyCapsule_New", (PYTHON_PROC*)&dll_PyCapsule_New},
++ {"PyCapsule_GetPointer", (PYTHON_PROC*)&dll_PyCapsule_GetPointer},
+ {"", NULL},
+ };
+
+***************
+*** 434,443 ****
+--- 524,548 ----
+
+ static PyObject *BufferNew (buf_T *);
+ static PyObject *WindowNew(win_T *);
++ static PyObject *DictionaryNew(dict_T *);
+ static PyObject *LineToString(const char *);
+
+ static PyTypeObject RangeType;
+
++ static int initialised = 0;
++ #define PYINITIALISED initialised
++
++ /* Add conversion from PyInt? */
++ #define DICTKEY_GET(err) \
++ if (!PyString_Check(keyObject)) \
++ { \
++ PyErr_SetString(PyExc_TypeError, _("only string keys are allowed")); \
++ return err; \
++ } \
++ key = (char_u *) PyString_AsString(keyObject);
++ #define DICTKEY_UNREF
++ #define DICTKEY_DECL
++
+ /*
+ * Include the code shared with if_python3.c
+ */
+***************
+*** 451,456 ****
+--- 556,563 ----
+ static PyInt RangeStart;
+ static PyInt RangeEnd;
+
++ static PyObject *globals;
++
+ static void PythonIO_Flush(void);
+ static int PythonIO_Init(void);
+ static int PythonMod_Init(void);
+***************
+*** 466,473 ****
+ * 1. Python interpreter main program.
+ */
+
+- static int initialised = 0;
+-
+ #if PYTHON_API_VERSION < 1007 /* Python 1.4 */
+ typedef PyObject PyThreadState;
+ #endif
+--- 573,578 ----
+***************
+*** 581,586 ****
+--- 686,693 ----
+ if (PythonMod_Init())
+ goto fail;
+
++ globals = PyModule_GetDict(PyImport_AddModule("__main__"));
++
+ /* Remove the element from sys.path that was added because of our
+ * argv[0] value in PythonMod_Init(). Previously we used an empty
+ * string, but dependinding on the OS we then get an empty entry or
+***************
+*** 609,615 ****
+ * External interface
+ */
+ static void
+! DoPythonCommand(exarg_T *eap, const char *cmd)
+ {
+ #ifndef PY_CAN_RECURSE
+ static int recursive = 0;
+--- 716,722 ----
+ * External interface
+ */
+ static void
+! DoPythonCommand(exarg_T *eap, const char *cmd, typval_T *rettv)
+ {
+ #ifndef PY_CAN_RECURSE
+ static int recursive = 0;
+***************
+*** 639,646 ****
+ if (Python_Init())
+ goto theend;
+
+! RangeStart = eap->line1;
+! RangeEnd = eap->line2;
+ Python_Release_Vim(); /* leave vim */
+
+ #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
+--- 746,761 ----
+ if (Python_Init())
+ goto theend;
+
+! if (rettv == NULL)
+! {
+! RangeStart = eap->line1;
+! RangeEnd = eap->line2;
+! }
+! else
+! {
+! RangeStart = (PyInt) curwin->w_cursor.lnum;
+! RangeEnd = RangeStart;
+! }
+ Python_Release_Vim(); /* leave vim */
+
+ #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
+***************
+*** 658,664 ****
+
+ Python_RestoreThread(); /* enter python */
+
+! PyRun_SimpleString((char *)(cmd));
+
+ Python_SaveThread(); /* leave python */
+
+--- 773,795 ----
+
+ Python_RestoreThread(); /* enter python */
+
+! if (rettv == NULL)
+! PyRun_SimpleString((char *)(cmd));
+! else
+! {
+! PyObject *r;
+!
+! r = PyRun_String((char *)(cmd), Py_eval_input, globals, globals);
+! if (r == NULL)
+! EMSG(_("E858: Eval did not return a valid python object"));
+! else
+! {
+! if (ConvertFromPyObject(r, rettv) == -1)
+! EMSG(_("E859: Failed to convert returned python object to vim value"));
+! Py_DECREF(r);
+! }
+! PyErr_Clear();
+! }
+
+ Python_SaveThread(); /* leave python */
+
+***************
+*** 680,686 ****
+ #ifndef PY_CAN_RECURSE
+ --recursive;
+ #endif
+! return; /* keeps lint happy */
+ }
+
+ /*
+--- 811,817 ----
+ #ifndef PY_CAN_RECURSE
+ --recursive;
+ #endif
+! return;
+ }
+
+ /*
+***************
+*** 695,703 ****
+ if (!eap->skip)
+ {
+ if (script == NULL)
+! DoPythonCommand(eap, (char *)eap->arg);
+ else
+! DoPythonCommand(eap, (char *)script);
+ }
+ vim_free(script);
+ }
+--- 826,834 ----
+ if (!eap->skip)
+ {
+ if (script == NULL)
+! DoPythonCommand(eap, (char *)eap->arg, NULL);
+ else
+! DoPythonCommand(eap, (char *)script, NULL);
+ }
+ vim_free(script);
+ }
+***************
+*** 743,749 ****
+ *p++ = '\0';
+
+ /* Execute the file */
+! DoPythonCommand(eap, buffer);
+ }
+
+ /******************************************************
+--- 874,880 ----
+ *p++ = '\0';
+
+ /* Execute the file */
+! DoPythonCommand(eap, buffer, NULL);
+ }
+
+ /******************************************************
+***************
+*** 765,778 ****
+ static int
+ OutputSetattr(PyObject *self, char *name, PyObject *val)
+ {
+! if (val == NULL) {
+ PyErr_SetString(PyExc_AttributeError, _("can't delete OutputObject attributes"));
+ return -1;
+ }
+
+ if (strcmp(name, "softspace") == 0)
+ {
+! if (!PyInt_Check(val)) {
+ PyErr_SetString(PyExc_TypeError, _("softspace must be an integer"));
+ return -1;
+ }
+--- 896,911 ----
+ static int
+ OutputSetattr(PyObject *self, char *name, PyObject *val)
+ {
+! if (val == NULL)
+! {
+ PyErr_SetString(PyExc_AttributeError, _("can't delete OutputObject attributes"));
+ return -1;
+ }
+
+ if (strcmp(name, "softspace") == 0)
+ {
+! if (!PyInt_Check(val))
+! {
+ PyErr_SetString(PyExc_TypeError, _("softspace must be an integer"));
+ return -1;
+ }
+***************
+*** 800,805 ****
+--- 933,941 ----
+ * 3. Implementation of the Vim module for Python
+ */
+
++ static PyObject *ConvertToPyObject(typval_T *);
++ static int ConvertFromPyObject(PyObject *, typval_T *);
++
+ /* Window type - Implementation functions
+ * --------------------------------------
+ */
+***************
+*** 1441,1446 ****
+--- 1577,1748 ----
+ return result;
+ }
+
++ static void DictionaryDestructor(PyObject *);
++ static PyObject *DictionaryGetattr(PyObject *, char*);
++
++ static PyMappingMethods DictionaryAsMapping = {
++ (PyInquiry) DictionaryLength,
++ (binaryfunc) DictionaryItem,
++ (objobjargproc) DictionaryAssItem,
++ };
++
++ static PyTypeObject DictionaryType = {
++ PyObject_HEAD_INIT(0)
++ 0,
++ "vimdictionary",
++ sizeof(DictionaryObject),
++ 0,
++
++ (destructor) DictionaryDestructor,
++ (printfunc) 0,
++ (getattrfunc) DictionaryGetattr,
++ (setattrfunc) 0,
++ (cmpfunc) 0,
++ (reprfunc) 0,
++
++ 0, /* as number */
++ 0, /* as sequence */
++ &DictionaryAsMapping, /* as mapping */
++
++ (hashfunc) 0,
++ (ternaryfunc) 0,
++ (reprfunc) 0,
++ };
++
++ static void
++ DictionaryDestructor(PyObject *self)
++ {
++ DictionaryObject *this = ((DictionaryObject *) (self));
++
++ pyll_remove(&this->ref, &lastdict);
++ dict_unref(this->dict);
++
++ Py_DECREF(self);
++ }
++
++ static PyObject *
++ DictionaryGetattr(PyObject *self, char *name)
++ {
++ return Py_FindMethod(DictionaryMethods, self, name);
++ }
++
++ static void ListDestructor(PyObject *);
++ static PyObject *ListGetattr(PyObject *, char *);
++
++ static PySequenceMethods ListAsSeq = {
++ (PyInquiry) ListLength,
++ (binaryfunc) 0,
++ (PyIntArgFunc) 0,
++ (PyIntArgFunc) ListItem,
++ (PyIntIntArgFunc) ListSlice,
++ (PyIntObjArgProc) ListAssItem,
++ (PyIntIntObjArgProc) ListAssSlice,
++ (objobjproc) 0,
++ #if PY_MAJOR_VERSION >= 2
++ (binaryfunc) ListConcatInPlace,
++ 0,
++ #endif
++ };
++
++ static PyTypeObject ListType = {
++ PyObject_HEAD_INIT(0)
++ 0,
++ "vimlist",
++ sizeof(ListObject),
++ 0,
++
++ (destructor) ListDestructor,
++ (printfunc) 0,
++ (getattrfunc) ListGetattr,
++ (setattrfunc) 0,
++ (cmpfunc) 0,
++ (reprfunc) 0,
++
++ 0, /* as number */
++ &ListAsSeq, /* as sequence */
++ 0, /* as mapping */
++
++ (hashfunc) 0,
++ (ternaryfunc) 0,
++ (reprfunc) 0,
++ };
++
++ static void
++ ListDestructor(PyObject *self)
++ {
++ ListObject *this = ((ListObject *) (self));
++
++ pyll_remove(&this->ref, &lastlist);
++ list_unref(this->list);
++
++ Py_DECREF(self);
++ }
++
++ static PyObject *
++ ListGetattr(PyObject *self, char *name)
++ {
++ return Py_FindMethod(ListMethods, self, name);
++ }
++
++ static void FunctionDestructor(PyObject *);
++ static PyObject *FunctionGetattr(PyObject *, char *);
++
++ static PyTypeObject FunctionType = {
++ PyObject_HEAD_INIT(0)
++ 0,
++ "vimfunction",
++ sizeof(FunctionObject),
++ 0,
++
++ (destructor) FunctionDestructor,
++ (printfunc) 0,
++ (getattrfunc) FunctionGetattr,
++ (setattrfunc) 0,
++ (cmpfunc) 0,
++ (reprfunc) 0,
++
++ 0, /* as number */
++ 0, /* as sequence */
++ 0, /* as mapping */
++
++ (hashfunc) 0,
++ (ternaryfunc) FunctionCall,
++ (reprfunc) 0,
++ };
++
++ static void
++ FunctionDestructor(PyObject *self)
++ {
++ FunctionObject *this = (FunctionObject *) (self);
++
++ func_unref(this->name);
++ PyMem_Del(this->name);
++
++ Py_DECREF(self);
++ }
++
++ static PyObject *
++ FunctionGetattr(PyObject *self, char *name)
++ {
++ FunctionObject *this = (FunctionObject *)(self);
++
++ if (strcmp(name, "name") == 0)
++ return PyString_FromString((char *)(this->name));
++ else
++ return Py_FindMethod(FunctionMethods, self, name);
++ }
++
++ void
++ do_pyeval (char_u *str, typval_T *rettv)
++ {
++ DoPythonCommand(NULL, (char *) str, rettv);
++ switch(rettv->v_type)
++ {
++ case VAR_DICT: ++rettv->vval.v_dict->dv_refcount; break;
++ case VAR_LIST: ++rettv->vval.v_list->lv_refcount; break;
++ case VAR_FUNC: func_ref(rettv->vval.v_string); break;
++ }
++ }
+
+ /* Don't generate a prototype for the next function, it generates an error on
+ * newer Python versions. */
+***************
+*** 1453,1458 ****
+--- 1755,1766 ----
+ }
+ #endif /* Python 1.4 */
+
++ void
++ set_ref_in_python (int copyID)
++ {
++ set_ref_in_py(copyID);
++ }
++
+ static void
+ init_structs(void)
+ {
+*** ../vim-7.3.568/src/if_python3.c 2012-02-04 20:17:21.000000000 +0100
+--- src/if_python3.c 2012-06-29 11:54:10.000000000 +0200
+***************
+*** 77,83 ****
+
+ #define PyInt Py_ssize_t
+ #define PyString_Check(obj) PyUnicode_Check(obj)
+! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, CODEC_ERROR_HANDLER);
+ #define PyString_FreeBytes(obj) Py_XDECREF(bytes)
+ #define PyString_AsString(obj) PyBytes_AsString(obj)
+ #define PyString_Size(obj) PyBytes_GET_SIZE(bytes)
+--- 77,83 ----
+
+ #define PyInt Py_ssize_t
+ #define PyString_Check(obj) PyUnicode_Check(obj)
+! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, CODEC_ERROR_HANDLER)
+ #define PyString_FreeBytes(obj) Py_XDECREF(bytes)
+ #define PyString_AsString(obj) PyBytes_AsString(obj)
+ #define PyString_Size(obj) PyBytes_GET_SIZE(bytes)
+***************
+*** 109,114 ****
+--- 109,115 ----
+ # undef PyArg_ParseTuple
+ # define PyArg_ParseTuple py3_PyArg_ParseTuple
+ # define PyMem_Free py3_PyMem_Free
++ # define PyMem_Malloc py3_PyMem_Malloc
+ # define PyDict_SetItemString py3_PyDict_SetItemString
+ # define PyErr_BadArgument py3_PyErr_BadArgument
+ # define PyErr_Clear py3_PyErr_Clear
+***************
+*** 128,141 ****
+--- 129,155 ----
+ # define PyList_New py3_PyList_New
+ # define PyList_SetItem py3_PyList_SetItem
+ # define PyList_Size py3_PyList_Size
++ # define PySequence_Check py3_PySequence_Check
++ # define PySequence_Size py3_PySequence_Size
++ # define PySequence_GetItem py3_PySequence_GetItem
++ # define PyTuple_Size py3_PyTuple_Size
++ # define PyTuple_GetItem py3_PyTuple_GetItem
+ # define PySlice_GetIndicesEx py3_PySlice_GetIndicesEx
+ # define PyImport_ImportModule py3_PyImport_ImportModule
++ # define PyImport_AddModule py3_PyImport_AddModule
+ # define PyObject_Init py3__PyObject_Init
+ # define PyDict_New py3_PyDict_New
+ # define PyDict_GetItemString py3_PyDict_GetItemString
++ # define PyDict_Next py3_PyDict_Next
++ # define PyMapping_Check py3_PyMapping_Check
++ # define PyMapping_Items py3_PyMapping_Items
++ # define PyIter_Next py3_PyIter_Next
++ # define PyObject_GetIter py3_PyObject_GetIter
+ # define PyModule_GetDict py3_PyModule_GetDict
+ #undef PyRun_SimpleString
+ # define PyRun_SimpleString py3_PyRun_SimpleString
++ #undef PyRun_String
++ # define PyRun_String py3_PyRun_String
+ # define PySys_SetObject py3_PySys_SetObject
+ # define PySys_SetArgv py3_PySys_SetArgv
+ # define PyType_Type (*py3_PyType_Type)
+***************
+*** 147,152 ****
+--- 161,167 ----
+ # define Py_Finalize py3_Py_Finalize
+ # define Py_IsInitialized py3_Py_IsInitialized
+ # define _Py_NoneStruct (*py3__Py_NoneStruct)
++ # define _PyObject_NextNotImplemented (*py3__PyObject_NextNotImplemented)
+ # define PyModule_AddObject py3_PyModule_AddObject
+ # define PyImport_AppendInittab py3_PyImport_AppendInittab
+ # define _PyUnicode_AsString py3__PyUnicode_AsString
+***************
+*** 154,161 ****
+--- 169,181 ----
+ # define PyUnicode_AsEncodedString py3_PyUnicode_AsEncodedString
+ # undef PyBytes_AsString
+ # define PyBytes_AsString py3_PyBytes_AsString
++ # undef PyBytes_FromString
++ # define PyBytes_FromString py3_PyBytes_FromString
++ # define PyFloat_FromDouble py3_PyFloat_FromDouble
++ # define PyFloat_AsDouble py3_PyFloat_AsDouble
+ # define PyObject_GenericGetAttr py3_PyObject_GenericGetAttr
+ # define PySlice_Type (*py3_PySlice_Type)
++ # define PyFloat_Type (*py3_PyFloat_Type)
+ # define PyErr_NewException py3_PyErr_NewException
+ # ifdef Py_DEBUG
+ # define _Py_NegativeRefcount py3__Py_NegativeRefcount
+***************
+*** 174,179 ****
+--- 194,202 ----
+ # define PyUnicode_FromString py3_PyUnicode_FromString
+ # undef PyUnicode_Decode
+ # define PyUnicode_Decode py3_PyUnicode_Decode
++ # define PyType_IsSubtype py3_PyType_IsSubtype
++ # define PyCapsule_New py3_PyCapsule_New
++ # define PyCapsule_GetPointer py3_PyCapsule_GetPointer
+
+ # ifdef Py_DEBUG
+ # undef PyObject_NEW
+***************
+*** 194,215 ****
+--- 217,250 ----
+ static int (*py3_PySys_SetObject)(char *, PyObject *);
+ static PyObject* (*py3_PyList_Append)(PyObject *, PyObject *);
+ static Py_ssize_t (*py3_PyList_Size)(PyObject *);
++ static int (*py3_PySequence_Check)(PyObject *);
++ static Py_ssize_t (*py3_PySequence_Size)(PyObject *);
++ static PyObject* (*py3_PySequence_GetItem)(PyObject *, Py_ssize_t);
++ static Py_ssize_t (*py3_PyTuple_Size)(PyObject *);
++ static PyObject* (*py3_PyTuple_GetItem)(PyObject *, Py_ssize_t);
++ static int (*py3_PyMapping_Check)(PyObject *);
++ static PyObject* (*py3_PyMapping_Items)(PyObject *);
+ static int (*py3_PySlice_GetIndicesEx)(PyObject *r, Py_ssize_t length,
+ Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength);
+ static PyObject* (*py3_PyErr_NoMemory)(void);
+ static void (*py3_Py_Finalize)(void);
+ static void (*py3_PyErr_SetString)(PyObject *, const char *);
+ static int (*py3_PyRun_SimpleString)(char *);
++ static PyObject* (*py3_PyRun_String)(char *, int, PyObject *, PyObject *);
+ static PyObject* (*py3_PyList_GetItem)(PyObject *, Py_ssize_t);
+ static PyObject* (*py3_PyImport_ImportModule)(const char *);
++ static PyObject* (*py3_PyImport_AddModule)(const char *);
+ static int (*py3_PyErr_BadArgument)(void);
+ static PyTypeObject* py3_PyType_Type;
+ static PyObject* (*py3_PyErr_Occurred)(void);
+ static PyObject* (*py3_PyModule_GetDict)(PyObject *);
+ static int (*py3_PyList_SetItem)(PyObject *, Py_ssize_t, PyObject *);
+ static PyObject* (*py3_PyDict_GetItemString)(PyObject *, const char *);
++ static int (*py3_PyDict_Next)(PyObject *, Py_ssize_t *, PyObject **, PyObject **);
+ static PyObject* (*py3_PyLong_FromLong)(long);
+ static PyObject* (*py3_PyDict_New)(void);
++ static PyObject* (*py3_PyIter_Next)(PyObject *);
++ static PyObject* (*py3_PyObject_GetIter)(PyObject *);
+ static PyObject* (*py3_Py_BuildValue)(char *, ...);
+ static int (*py3_PyType_Ready)(PyTypeObject *type);
+ static int (*py3_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item);
+***************
+*** 224,244 ****
+--- 259,287 ----
+ static int (*py3_PyArg_Parse)(PyObject *, char *, ...);
+ static int (*py3_PyArg_ParseTuple)(PyObject *, char *, ...);
+ static int (*py3_PyMem_Free)(void *);
++ static void* (*py3_PyMem_Malloc)(size_t);
+ static int (*py3_Py_IsInitialized)(void);
+ static void (*py3_PyErr_Clear)(void);
+ static PyObject*(*py3__PyObject_Init)(PyObject *, PyTypeObject *);
++ static iternextfunc py3__PyObject_NextNotImplemented;
+ static PyObject* py3__Py_NoneStruct;
+ static int (*py3_PyModule_AddObject)(PyObject *m, const char *name, PyObject *o);
+ static int (*py3_PyImport_AppendInittab)(const char *name, PyObject* (*initfunc)(void));
+ static char* (*py3__PyUnicode_AsString)(PyObject *unicode);
+ static PyObject* (*py3_PyUnicode_AsEncodedString)(PyObject *unicode, const char* encoding, const char* errors);
+ static char* (*py3_PyBytes_AsString)(PyObject *bytes);
++ static PyObject* (*py3_PyBytes_FromString)(char *str);
++ static PyObject* (*py3_PyFloat_FromDouble)(double num);
++ static double (*py3_PyFloat_AsDouble)(PyObject *);
+ static PyObject* (*py3_PyObject_GenericGetAttr)(PyObject *obj, PyObject *name);
+ static PyObject* (*py3_PyModule_Create2)(struct PyModuleDef* module, int module_api_version);
+ static PyObject* (*py3_PyType_GenericAlloc)(PyTypeObject *type, Py_ssize_t nitems);
+ static PyObject* (*py3_PyType_GenericNew)(PyTypeObject *type, PyObject *args, PyObject *kwds);
+ static PyTypeObject* py3_PySlice_Type;
++ static PyTypeObject* py3_PyFloat_Type;
+ static PyObject* (*py3_PyErr_NewException)(char *name, PyObject *base, PyObject *dict);
++ static PyObject* (*py3_PyCapsule_New)(void *, char *, PyCapsule_Destructor);
++ static void* (*py3_PyCapsule_GetPointer)(PyObject *, char *);
+ # ifdef Py_DEBUG
+ static void (*py3__Py_NegativeRefcount)(const char *fname, int lineno, PyObject *op);
+ static Py_ssize_t* py3__Py_RefTotal;
+***************
+*** 249,254 ****
+--- 292,298 ----
+ static void (*py3_PyObject_Free)(void*);
+ static void* (*py3_PyObject_Malloc)(size_t);
+ # endif
++ static int (*py3_PyType_IsSubtype)(PyTypeObject *, PyTypeObject *);
+
+ static HINSTANCE hinstPy3 = 0; /* Instance of python.dll */
+
+***************
+*** 280,304 ****
+--- 324,361 ----
+ {"Py_Initialize", (PYTHON_PROC*)&py3_Py_Initialize},
+ {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple},
+ {"PyMem_Free", (PYTHON_PROC*)&py3_PyMem_Free},
++ {"PyMem_Malloc", (PYTHON_PROC*)&py3_PyMem_Malloc},
+ {"PyList_New", (PYTHON_PROC*)&py3_PyList_New},
+ {"PyGILState_Ensure", (PYTHON_PROC*)&py3_PyGILState_Ensure},
+ {"PyGILState_Release", (PYTHON_PROC*)&py3_PyGILState_Release},
+ {"PySys_SetObject", (PYTHON_PROC*)&py3_PySys_SetObject},
+ {"PyList_Append", (PYTHON_PROC*)&py3_PyList_Append},
+ {"PyList_Size", (PYTHON_PROC*)&py3_PyList_Size},
++ {"PySequence_Check", (PYTHON_PROC*)&py3_PySequence_Check},
++ {"PySequence_Size", (PYTHON_PROC*)&py3_PySequence_Size},
++ {"PySequence_GetItem", (PYTHON_PROC*)&py3_PySequence_GetItem},
++ {"PyTuple_Size", (PYTHON_PROC*)&py3_PyTuple_Size},
++ {"PyTuple_GetItem", (PYTHON_PROC*)&py3_PyTuple_GetItem},
+ {"PySlice_GetIndicesEx", (PYTHON_PROC*)&py3_PySlice_GetIndicesEx},
+ {"PyErr_NoMemory", (PYTHON_PROC*)&py3_PyErr_NoMemory},
+ {"Py_Finalize", (PYTHON_PROC*)&py3_Py_Finalize},
+ {"PyErr_SetString", (PYTHON_PROC*)&py3_PyErr_SetString},
+ {"PyRun_SimpleString", (PYTHON_PROC*)&py3_PyRun_SimpleString},
++ {"PyRun_String", (PYTHON_PROC*)&py3_PyRun_String},
+ {"PyList_GetItem", (PYTHON_PROC*)&py3_PyList_GetItem},
+ {"PyImport_ImportModule", (PYTHON_PROC*)&py3_PyImport_ImportModule},
++ {"PyImport_AddModule", (PYTHON_PROC*)&py3_PyImport_AddModule},
+ {"PyErr_BadArgument", (PYTHON_PROC*)&py3_PyErr_BadArgument},
+ {"PyType_Type", (PYTHON_PROC*)&py3_PyType_Type},
+ {"PyErr_Occurred", (PYTHON_PROC*)&py3_PyErr_Occurred},
+ {"PyModule_GetDict", (PYTHON_PROC*)&py3_PyModule_GetDict},
+ {"PyList_SetItem", (PYTHON_PROC*)&py3_PyList_SetItem},
+ {"PyDict_GetItemString", (PYTHON_PROC*)&py3_PyDict_GetItemString},
++ {"PyDict_Next", (PYTHON_PROC*)&py3_PyDict_Next},
++ {"PyMapping_Check", (PYTHON_PROC*)&py3_PyMapping_Check},
++ {"PyMapping_Items", (PYTHON_PROC*)&py3_PyMapping_Items},
++ {"PyIter_Next", (PYTHON_PROC*)&py3_PyIter_Next},
++ {"PyObject_GetIter", (PYTHON_PROC*)&py3_PyObject_GetIter},
+ {"PyLong_FromLong", (PYTHON_PROC*)&py3_PyLong_FromLong},
+ {"PyDict_New", (PYTHON_PROC*)&py3_PyDict_New},
+ {"Py_BuildValue", (PYTHON_PROC*)&py3_Py_BuildValue},
+***************
+*** 311,316 ****
+--- 368,374 ----
+ {"PyEval_SaveThread", (PYTHON_PROC*)&py3_PyEval_SaveThread},
+ {"PyArg_Parse", (PYTHON_PROC*)&py3_PyArg_Parse},
+ {"Py_IsInitialized", (PYTHON_PROC*)&py3_Py_IsInitialized},
++ {"_PyObject_NextNotImplemented", (PYTHON_PROC*)&py3__PyObject_NextNotImplemented},
+ {"_Py_NoneStruct", (PYTHON_PROC*)&py3__Py_NoneStruct},
+ {"PyErr_Clear", (PYTHON_PROC*)&py3_PyErr_Clear},
+ {"PyObject_Init", (PYTHON_PROC*)&py3__PyObject_Init},
+***************
+*** 318,328 ****
+--- 376,390 ----
+ {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab},
+ {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString},
+ {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString},
++ {"PyBytes_FromString", (PYTHON_PROC*)&py3_PyBytes_FromString},
++ {"PyFloat_FromDouble", (PYTHON_PROC*)&py3_PyFloat_FromDouble},
++ {"PyFloat_AsDouble", (PYTHON_PROC*)&py3_PyFloat_AsDouble},
+ {"PyObject_GenericGetAttr", (PYTHON_PROC*)&py3_PyObject_GenericGetAttr},
+ {"PyModule_Create2", (PYTHON_PROC*)&py3_PyModule_Create2},
+ {"PyType_GenericAlloc", (PYTHON_PROC*)&py3_PyType_GenericAlloc},
+ {"PyType_GenericNew", (PYTHON_PROC*)&py3_PyType_GenericNew},
+ {"PySlice_Type", (PYTHON_PROC*)&py3_PySlice_Type},
++ {"PyFloat_Type", (PYTHON_PROC*)&py3_PyFloat_Type},
+ {"PyErr_NewException", (PYTHON_PROC*)&py3_PyErr_NewException},
+ # ifdef Py_DEBUG
+ {"_Py_NegativeRefcount", (PYTHON_PROC*)&py3__Py_NegativeRefcount},
+***************
+*** 334,339 ****
+--- 396,404 ----
+ {"PyObject_Malloc", (PYTHON_PROC*)&py3_PyObject_Malloc},
+ {"PyObject_Free", (PYTHON_PROC*)&py3_PyObject_Free},
+ # endif
++ {"PyType_IsSubtype", (PYTHON_PROC*)&py3_PyType_IsSubtype},
++ {"PyCapsule_New", (PYTHON_PROC*)&py3_PyCapsule_New},
++ {"PyCapsule_GetPointer", (PYTHON_PROC*)&py3_PyCapsule_GetPointer},
+ {"", NULL},
+ };
+
+***************
+*** 472,482 ****
+--- 537,577 ----
+
+ static PyTypeObject RangeType;
+
++ static int py3initialised = 0;
++
++ #define PYINITIALISED py3initialised
++
++ /* Add conversion from PyInt? */
++ #define DICTKEY_GET(err) \
++ if (PyBytes_Check(keyObject)) \
++ key = (char_u *) PyBytes_AsString(keyObject); \
++ else if (PyUnicode_Check(keyObject)) \
++ { \
++ bytes = PyString_AsBytes(keyObject); \
++ if (bytes == NULL) \
++ return err; \
++ key = (char_u *) PyBytes_AsString(bytes); \
++ if (key == NULL) \
++ return err; \
++ } \
++ else \
++ { \
++ PyErr_SetString(PyExc_TypeError, _("only string keys are allowed")); \
++ return err; \
++ }
++ #define DICTKEY_UNREF \
++ if (bytes != NULL) \
++ Py_XDECREF(bytes);
++
++ #define DICTKEY_DECL PyObject *bytes = NULL;
++
+ /*
+ * Include the code shared with if_python.c
+ */
+ #include "if_py_both.h"
+
++ #define PY3OBJ_DELETED(obj) (obj->ob_base.ob_refcnt<=0)
++
+ static void
+ call_PyObject_Free(void *p)
+ {
+***************
+*** 506,511 ****
+--- 601,608 ----
+ static Py_ssize_t RangeStart;
+ static Py_ssize_t RangeEnd;
+
++ static PyObject *globals;
++
+ static int PythonIO_Init(void);
+ static void PythonIO_Fini(void);
+ PyMODINIT_FUNC Py3Init_vim(void);
+***************
+*** 514,521 ****
+ * 1. Python interpreter main program.
+ */
+
+- static int py3initialised = 0;
+-
+ static PyGILState_STATE pygilstate = PyGILState_UNLOCKED;
+
+ void
+--- 611,616 ----
+***************
+*** 593,598 ****
+--- 688,695 ----
+
+ PyImport_AppendInittab("vim", Py3Init_vim);
+
++ globals = PyModule_GetDict(PyImport_AddModule("__main__"));
++
+ /* Remove the element from sys.path that was added because of our
+ * argv[0] value in Py3Init_vim(). Previously we used an empty
+ * string, but dependinding on the OS we then get an empty entry or
+***************
+*** 629,635 ****
+ * External interface
+ */
+ static void
+! DoPy3Command(exarg_T *eap, const char *cmd)
+ {
+ #if defined(MACOS) && !defined(MACOS_X_UNIX)
+ GrafPtr oldPort;
+--- 726,732 ----
+ * External interface
+ */
+ static void
+! DoPy3Command(exarg_T *eap, const char *cmd, typval_T *rettv)
+ {
+ #if defined(MACOS) && !defined(MACOS_X_UNIX)
+ GrafPtr oldPort;
+***************
+*** 649,656 ****
+ if (Python3_Init())
+ goto theend;
+
+! RangeStart = eap->line1;
+! RangeEnd = eap->line2;
+ Python_Release_Vim(); /* leave vim */
+
+ #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
+--- 746,761 ----
+ if (Python3_Init())
+ goto theend;
+
+! if (rettv == NULL)
+! {
+! RangeStart = eap->line1;
+! RangeEnd = eap->line2;
+! }
+! else
+! {
+! RangeStart = (PyInt) curwin->w_cursor.lnum;
+! RangeEnd = RangeStart;
+! }
+ Python_Release_Vim(); /* leave vim */
+
+ #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
+***************
+*** 674,680 ****
+ (char *)ENC_OPT, CODEC_ERROR_HANDLER);
+ cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", CODEC_ERROR_HANDLER);
+ Py_XDECREF(cmdstr);
+! PyRun_SimpleString(PyBytes_AsString(cmdbytes));
+ Py_XDECREF(cmdbytes);
+
+ PyGILState_Release(pygilstate);
+--- 779,802 ----
+ (char *)ENC_OPT, CODEC_ERROR_HANDLER);
+ cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", CODEC_ERROR_HANDLER);
+ Py_XDECREF(cmdstr);
+! if (rettv == NULL)
+! PyRun_SimpleString(PyBytes_AsString(cmdbytes));
+! else
+! {
+! PyObject *r;
+!
+! r = PyRun_String(PyBytes_AsString(cmdbytes), Py_eval_input,
+! globals, globals);
+! if (r == NULL)
+! EMSG(_("E860: Eval did not return a valid python 3 object"));
+! else
+! {
+! if (ConvertFromPyObject(r, rettv) == -1)
+! EMSG(_("E861: Failed to convert returned python 3 object to vim value"));
+! Py_DECREF(r);
+! }
+! PyErr_Clear();
+! }
+ Py_XDECREF(cmdbytes);
+
+ PyGILState_Release(pygilstate);
+***************
+*** 709,717 ****
+ if (!eap->skip)
+ {
+ if (script == NULL)
+! DoPy3Command(eap, (char *)eap->arg);
+ else
+! DoPy3Command(eap, (char *)script);
+ }
+ vim_free(script);
+ }
+--- 831,839 ----
+ if (!eap->skip)
+ {
+ if (script == NULL)
+! DoPy3Command(eap, (char *)eap->arg, NULL);
+ else
+! DoPy3Command(eap, (char *)script, NULL);
+ }
+ vim_free(script);
+ }
+***************
+*** 772,778 ****
+
+
+ /* Execute the file */
+! DoPy3Command(eap, buffer);
+ }
+
+ /******************************************************
+--- 894,900 ----
+
+
+ /* Execute the file */
+! DoPy3Command(eap, buffer, NULL);
+ }
+
+ /******************************************************
+***************
+*** 802,815 ****
+ if (PyUnicode_Check(nameobj))
+ name = _PyUnicode_AsString(nameobj);
+
+! if (val == NULL) {
+ PyErr_SetString(PyExc_AttributeError, _("can't delete OutputObject attributes"));
+ return -1;
+ }
+
+ if (strcmp(name, "softspace") == 0)
+ {
+! if (!PyLong_Check(val)) {
+ PyErr_SetString(PyExc_TypeError, _("softspace must be an integer"));
+ return -1;
+ }
+--- 924,939 ----
+ if (PyUnicode_Check(nameobj))
+ name = _PyUnicode_AsString(nameobj);
+
+! if (val == NULL)
+! {
+ PyErr_SetString(PyExc_AttributeError, _("can't delete OutputObject attributes"));
+ return -1;
+ }
+
+ if (strcmp(name, "softspace") == 0)
+ {
+! if (!PyLong_Check(val))
+! {
+ PyErr_SetString(PyExc_TypeError, _("softspace must be an integer"));
+ return -1;
+ }
+***************
+*** 1030,1049 ****
+ static PyObject *
+ BufferSubscript(PyObject *self, PyObject* idx)
+ {
+! if (PyLong_Check(idx)) {
+ long _idx = PyLong_AsLong(idx);
+ return BufferItem(self,_idx);
+! } else if (PySlice_Check(idx)) {
+ Py_ssize_t start, stop, step, slicelen;
+
+ if (PySlice_GetIndicesEx((PyObject *)idx,
+ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1,
+ &start, &stop,
+! &step, &slicelen) < 0) {
+ return NULL;
+ }
+ return BufferSlice(self, start, stop);
+! } else {
+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+ return NULL;
+ }
+--- 1154,1178 ----
+ static PyObject *
+ BufferSubscript(PyObject *self, PyObject* idx)
+ {
+! if (PyLong_Check(idx))
+! {
+ long _idx = PyLong_AsLong(idx);
+ return BufferItem(self,_idx);
+! } else if (PySlice_Check(idx))
+! {
+ Py_ssize_t start, stop, step, slicelen;
+
+ if (PySlice_GetIndicesEx((PyObject *)idx,
+ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1,
+ &start, &stop,
+! &step, &slicelen) < 0)
+! {
+ return NULL;
+ }
+ return BufferSlice(self, start, stop);
+! }
+! else
+! {
+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+ return NULL;
+ }
+***************
+*** 1052,1075 ****
+ static Py_ssize_t
+ BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val)
+ {
+! if (PyLong_Check(idx)) {
+ long n = PyLong_AsLong(idx);
+ return RBAsItem((BufferObject *)(self), n, val, 1,
+ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count,
+ NULL);
+! } else if (PySlice_Check(idx)) {
+ Py_ssize_t start, stop, step, slicelen;
+
+ if (PySlice_GetIndicesEx((PyObject *)idx,
+ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1,
+ &start, &stop,
+! &step, &slicelen) < 0) {
+ return -1;
+ }
+ return RBAsSlice((BufferObject *)(self), start, stop, val, 1,
+ (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count,
+ NULL);
+! } else {
+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+ return -1;
+ }
+--- 1181,1209 ----
+ static Py_ssize_t
+ BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val)
+ {
+! if (PyLong_Check(idx))
+! {
+ long n = PyLong_AsLong(idx);
+ return RBAsItem((BufferObject *)(self), n, val, 1,
+ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count,
+ NULL);
+! } else if (PySlice_Check(idx))
+! {
+ Py_ssize_t start, stop, step, slicelen;
+
+ if (PySlice_GetIndicesEx((PyObject *)idx,
+ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1,
+ &start, &stop,
+! &step, &slicelen) < 0)
+! {
+ return -1;
+ }
+ return RBAsSlice((BufferObject *)(self), start, stop, val, 1,
+ (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count,
+ NULL);
+! }
+! else
+! {
+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+ return -1;
+ }
+***************
+*** 1142,1161 ****
+ static PyObject *
+ RangeSubscript(PyObject *self, PyObject* idx)
+ {
+! if (PyLong_Check(idx)) {
+ long _idx = PyLong_AsLong(idx);
+ return RangeItem(self,_idx);
+! } else if (PySlice_Check(idx)) {
+ Py_ssize_t start, stop, step, slicelen;
+
+ if (PySlice_GetIndicesEx((PyObject *)idx,
+ ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1,
+ &start, &stop,
+! &step, &slicelen) < 0) {
+ return NULL;
+ }
+ return RangeSlice(self, start, stop);
+! } else {
+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+ return NULL;
+ }
+--- 1276,1300 ----
+ static PyObject *
+ RangeSubscript(PyObject *self, PyObject* idx)
+ {
+! if (PyLong_Check(idx))
+! {
+ long _idx = PyLong_AsLong(idx);
+ return RangeItem(self,_idx);
+! } else if (PySlice_Check(idx))
+! {
+ Py_ssize_t start, stop, step, slicelen;
+
+ if (PySlice_GetIndicesEx((PyObject *)idx,
+ ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1,
+ &start, &stop,
+! &step, &slicelen) < 0)
+! {
+ return NULL;
+ }
+ return RangeSlice(self, start, stop);
+! }
+! else
+! {
+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+ return NULL;
+ }
+***************
+*** 1164,1183 ****
+ static Py_ssize_t
+ RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val)
+ {
+! if (PyLong_Check(idx)) {
+ long n = PyLong_AsLong(idx);
+ return RangeAsItem(self, n, val);
+! } else if (PySlice_Check(idx)) {
+ Py_ssize_t start, stop, step, slicelen;
+
+ if (PySlice_GetIndicesEx((PyObject *)idx,
+ ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1,
+ &start, &stop,
+! &step, &slicelen) < 0) {
+ return -1;
+ }
+ return RangeAsSlice(self, start, stop, val);
+! } else {
+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+ return -1;
+ }
+--- 1303,1327 ----
+ static Py_ssize_t
+ RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val)
+ {
+! if (PyLong_Check(idx))
+! {
+ long n = PyLong_AsLong(idx);
+ return RangeAsItem(self, n, val);
+! } else if (PySlice_Check(idx))
+! {
+ Py_ssize_t start, stop, step, slicelen;
+
+ if (PySlice_GetIndicesEx((PyObject *)idx,
+ ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1,
+ &start, &stop,
+! &step, &slicelen) < 0)
+! {
+ return -1;
+ }
+ return RangeAsSlice(self, start, stop, val);
+! }
+! else
+! {
+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+ return -1;
+ }
+***************
+*** 1390,1395 ****
+--- 1534,1680 ----
+ }
+ }
+
++ /* Dictionary object - Definitions
++ */
++
++ static PyInt DictionaryLength(PyObject *);
++
++ static PyMappingMethods DictionaryAsMapping = {
++ /* mp_length */ (lenfunc) DictionaryLength,
++ /* mp_subscript */ (binaryfunc) DictionaryItem,
++ /* mp_ass_subscript */ (objobjargproc) DictionaryAssItem,
++ };
++
++ static PyTypeObject DictionaryType;
++
++ static void
++ DictionaryDestructor(PyObject *self)
++ {
++ DictionaryObject *this = (DictionaryObject *)(self);
++
++ pyll_remove(&this->ref, &lastdict);
++ dict_unref(this->dict);
++
++ Py_TYPE(self)->tp_free((PyObject*)self);
++ }
++
++ /* List object - Definitions
++ */
++
++ static PyInt ListLength(PyObject *);
++ static PyObject *ListItem(PyObject *, Py_ssize_t);
++
++ static PySequenceMethods ListAsSeq = {
++ (lenfunc) ListLength, /* sq_length, len(x) */
++ (binaryfunc) 0, /* RangeConcat, sq_concat, x+y */
++ (ssizeargfunc) 0, /* RangeRepeat, sq_repeat, x*n */
++ (ssizeargfunc) ListItem, /* sq_item, x[i] */
++ (void *) 0, /* was_sq_slice, x[i:j] */
++ (ssizeobjargproc) ListAssItem, /* sq_as_item, x[i]=v */
++ (void *) 0, /* was_sq_ass_slice, x[i:j]=v */
++ 0, /* sq_contains */
++ (binaryfunc) ListConcatInPlace,/* sq_inplace_concat */
++ 0, /* sq_inplace_repeat */
++ };
++
++ static PyObject *ListSubscript(PyObject *, PyObject *);
++ static Py_ssize_t ListAsSubscript(PyObject *, PyObject *, PyObject *);
++
++ static PyMappingMethods ListAsMapping = {
++ /* mp_length */ (lenfunc) ListLength,
++ /* mp_subscript */ (binaryfunc) ListSubscript,
++ /* mp_ass_subscript */ (objobjargproc) ListAsSubscript,
++ };
++
++ static PyTypeObject ListType;
++
++ static PyObject *
++ ListSubscript(PyObject *self, PyObject* idxObject)
++ {
++ if (PyLong_Check(idxObject))
++ {
++ long idx = PyLong_AsLong(idxObject);
++ return ListItem(self, idx);
++ }
++ else if (PySlice_Check(idxObject))
++ {
++ Py_ssize_t start, stop, step, slicelen;
++
++ if (PySlice_GetIndicesEx(idxObject, ListLength(self), &start, &stop,
++ &step, &slicelen) < 0)
++ return NULL;
++ return ListSlice(self, start, stop);
++ }
++ else
++ {
++ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
++ return NULL;
++ }
++ }
++
++ static Py_ssize_t
++ ListAsSubscript(PyObject *self, PyObject *idxObject, PyObject *obj)
++ {
++ if (PyLong_Check(idxObject))
++ {
++ long idx = PyLong_AsLong(idxObject);
++ return ListAssItem(self, idx, obj);
++ }
++ else if (PySlice_Check(idxObject))
++ {
++ Py_ssize_t start, stop, step, slicelen;
++
++ if (PySlice_GetIndicesEx(idxObject, ListLength(self), &start, &stop,
++ &step, &slicelen) < 0)
++ return -1;
++ return ListAssSlice(self, start, stop, obj);
++ }
++ else
++ {
++ PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
++ return -1;
++ }
++ }
++
++ static void
++ ListDestructor(PyObject *self)
++ {
++ ListObject *this = (ListObject *)(self);
++
++ pyll_remove(&this->ref, &lastlist);
++ list_unref(this->list);
++
++ Py_TYPE(self)->tp_free((PyObject*)self);
++ }
++
++ /* Function object - Definitions
++ */
++
++ static void
++ FunctionDestructor(PyObject *self)
++ {
++ FunctionObject *this = (FunctionObject *) (self);
++
++ func_unref(this->name);
++ PyMem_Del(this->name);
++
++ Py_TYPE(self)->tp_free((PyObject*)self);
++ }
++
++ static PyObject *
++ FunctionGetattro(PyObject *self, PyObject *nameobj)
++ {
++ FunctionObject *this = (FunctionObject *)(self);
++ char *name = "";
++ if (PyUnicode_Check(nameobj))
++ name = _PyUnicode_AsString(nameobj);
++
++ if (strcmp(name, "name") == 0)
++ return PyUnicode_FromString((char *)(this->name));
++
++ return PyObject_GenericGetAttr(self, nameobj);
++ }
++
+ /* External interface
+ */
+
+***************
+*** 1449,1454 ****
+--- 1734,1742 ----
+ PyType_Ready(&BufListType);
+ PyType_Ready(&WinListType);
+ PyType_Ready(&CurrentType);
++ PyType_Ready(&DictionaryType);
++ PyType_Ready(&ListType);
++ PyType_Ready(&FunctionType);
+
+ /* Set sys.argv[] to avoid a crash in warn(). */
+ PySys_SetArgv(1, argv);
+***************
+*** 1517,1522 ****
+--- 1805,1828 ----
+ return result;
+ }
+
++ void
++ do_py3eval (char_u *str, typval_T *rettv)
++ {
++ DoPy3Command(NULL, (char *) str, rettv);
++ switch(rettv->v_type)
++ {
++ case VAR_DICT: ++rettv->vval.v_dict->dv_refcount; break;
++ case VAR_LIST: ++rettv->vval.v_list->lv_refcount; break;
++ case VAR_FUNC: func_ref(rettv->vval.v_string); break;
++ }
++ }
++
++ void
++ set_ref_in_python3 (int copyID)
++ {
++ set_ref_in_py(copyID);
++ }
++
+ static void
+ init_structs(void)
+ {
+***************
+*** 1598,1603 ****
+--- 1904,1938 ----
+ CurrentType.tp_flags = Py_TPFLAGS_DEFAULT;
+ CurrentType.tp_doc = "vim current object";
+
++ vim_memset(&DictionaryType, 0, sizeof(DictionaryType));
++ DictionaryType.tp_name = "vim.dictionary";
++ DictionaryType.tp_basicsize = sizeof(DictionaryObject);
++ DictionaryType.tp_dealloc = DictionaryDestructor;
++ DictionaryType.tp_as_mapping = &DictionaryAsMapping;
++ DictionaryType.tp_flags = Py_TPFLAGS_DEFAULT;
++ DictionaryType.tp_doc = "dictionary pushing modifications to vim structure";
++ DictionaryType.tp_methods = DictionaryMethods;
++
++ vim_memset(&ListType, 0, sizeof(ListType));
++ ListType.tp_name = "vim.list";
++ ListType.tp_dealloc = ListDestructor;
++ ListType.tp_basicsize = sizeof(ListObject);
++ ListType.tp_as_sequence = &ListAsSeq;
++ ListType.tp_as_mapping = &ListAsMapping;
++ ListType.tp_flags = Py_TPFLAGS_DEFAULT;
++ ListType.tp_doc = "list pushing modifications to vim structure";
++ ListType.tp_methods = ListMethods;
++
++ vim_memset(&FunctionType, 0, sizeof(FunctionType));
++ FunctionType.tp_name = "vim.list";
++ FunctionType.tp_basicsize = sizeof(FunctionObject);
++ FunctionType.tp_getattro = FunctionGetattro;
++ FunctionType.tp_dealloc = FunctionDestructor;
++ FunctionType.tp_call = FunctionCall;
++ FunctionType.tp_flags = Py_TPFLAGS_DEFAULT;
++ FunctionType.tp_doc = "object that calls vim function";
++ FunctionType.tp_methods = FunctionMethods;
++
+ vim_memset(&vimmodule, 0, sizeof(vimmodule));
+ vimmodule.m_name = "vim";
+ vimmodule.m_doc = vim_module_doc;
+*** ../vim-7.3.568/src/proto/eval.pro 2011-09-14 16:52:02.000000000 +0200
+--- src/proto/eval.pro 2012-06-20 18:20:28.000000000 +0200
+***************
+*** 46,57 ****
+--- 46,66 ----
+ list_T *list_alloc __ARGS((void));
+ void list_unref __ARGS((list_T *l));
+ void list_free __ARGS((list_T *l, int recurse));
++ listitem_T *listitem_alloc __ARGS((void));
++ void listitem_remove __ARGS((list_T *l, listitem_T *item));
+ dictitem_T *dict_lookup __ARGS((hashitem_T *hi));
++ listitem_T *list_find __ARGS((list_T *l, long n));
+ char_u *list_find_str __ARGS((list_T *l, long idx));
++ void list_append __ARGS((list_T *l, listitem_T *item));
+ int list_append_tv __ARGS((list_T *l, typval_T *tv));
+ int list_append_dict __ARGS((list_T *list, dict_T *dict));
+ int list_append_string __ARGS((list_T *l, char_u *str, int len));
++ int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item));
++ void list_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2));
+ int garbage_collect __ARGS((void));
++ void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID));
++ void set_ref_in_list __ARGS((list_T *l, int copyID));
++ void set_ref_in_item __ARGS((typval_T *tv, int copyID));
+ dict_T *dict_alloc __ARGS((void));
+ void dict_unref __ARGS((dict_T *d));
+ dictitem_T *dictitem_alloc __ARGS((char_u *key));
+***************
+*** 64,69 ****
+--- 73,79 ----
+ long get_dict_number __ARGS((dict_T *d, char_u *key));
+ char_u *get_function_name __ARGS((expand_T *xp, int idx));
+ char_u *get_expr_name __ARGS((expand_T *xp, int idx));
++ int func_call __ARGS((char_u *name, typval_T *args, dict_T *selfdict, typval_T *rettv));
+ long do_searchpair __ARGS((char_u *spat, char_u *mpat, char_u *epat, int dir, char_u *skip, int flags, pos_T *match_pos, linenr_T lnum_stop, long time_limit));
+ void set_vim_var_nr __ARGS((int idx, long val));
+ long get_vim_var_nr __ARGS((int idx));
+***************
+*** 94,99 ****
+--- 104,111 ----
+ void func_dump_profile __ARGS((FILE *fd));
+ char_u *get_user_func_name __ARGS((expand_T *xp, int idx));
+ void ex_delfunction __ARGS((exarg_T *eap));
++ void func_unref __ARGS((char_u *name));
++ void func_ref __ARGS((char_u *name));
+ void ex_return __ARGS((exarg_T *eap));
+ int do_return __ARGS((exarg_T *eap, int reanimate, int is_cmd, void *rettv));
+ void discard_pending_return __ARGS((void *rettv));
+*** ../vim-7.3.568/src/proto/if_python.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/if_python.pro 2012-06-20 18:23:06.000000000 +0200
+***************
+*** 6,9 ****
+--- 6,11 ----
+ void ex_pyfile __ARGS((exarg_T *eap));
+ void python_buffer_free __ARGS((buf_T *buf));
+ void python_window_free __ARGS((win_T *win));
++ void do_pyeval __ARGS((char_u *str, typval_T *rettv));
++ void set_ref_in_python __ARGS((int copyID));
+ /* vim: set ft=c : */
+*** ../vim-7.3.568/src/proto/if_python3.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/if_python3.pro 2012-06-20 18:34:26.000000000 +0200
+***************
+*** 6,9 ****
+--- 6,11 ----
+ void ex_py3file __ARGS((exarg_T *eap));
+ void python3_buffer_free __ARGS((buf_T *buf));
+ void python3_window_free __ARGS((win_T *win));
++ void do_py3eval __ARGS((char_u *str, typval_T *rettv));
++ void set_ref_in_python3 __ARGS((int copyID));
+ /* vim: set ft=c : */
+*** ../vim-7.3.568/src/testdir/Make_amiga.mak 2012-04-05 16:56:38.000000000 +0200
+--- src/testdir/Make_amiga.mak 2012-06-20 18:43:05.000000000 +0200
+***************
+*** 14,19 ****
+--- 14,20 ----
+ # test27 can't edit file with "*"
+ # test52 only for Win32
+ # test85 no Lua interface
++ # test86, 87 no Python interface
+
+ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
+ test7.out test8.out test9.out \
+*** ../vim-7.3.568/src/testdir/Make_dos.mak 2012-04-13 19:11:16.000000000 +0200
+--- src/testdir/Make_dos.mak 2012-06-20 18:43:45.000000000 +0200
+***************
+*** 30,36 ****
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+ test79.out test80.out test81.out test82.out test83.out \
+! test84.out test85.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 30,36 ----
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+ test79.out test80.out test81.out test82.out test83.out \
+! test84.out test85.out test86.out test87.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.3.568/src/testdir/Make_ming.mak 2012-04-13 19:11:16.000000000 +0200
+--- src/testdir/Make_ming.mak 2012-06-20 18:44:12.000000000 +0200
+***************
+*** 50,56 ****
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+ test79.out test80.out test81.out test82.out test83.out \
+! test84.out test85.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 50,56 ----
+ test68.out test69.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+ test79.out test80.out test81.out test82.out test83.out \
+! test84.out test85.out test86.out test87.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.3.568/src/testdir/Make_os2.mak 2012-04-05 16:56:38.000000000 +0200
+--- src/testdir/Make_os2.mak 2012-06-20 18:44:32.000000000 +0200
+***************
+*** 14,19 ****
+--- 14,20 ----
+ # test27 can't edit file with "*" in file name
+ # test52 only for Win32
+ # test85 no Lua interface
++ # test86, 87 no Python interface
+
+ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
+ test7.out test8.out test9.out \
+*** ../vim-7.3.568/src/testdir/Makefile 2012-04-05 16:56:38.000000000 +0200
+--- src/testdir/Makefile 2012-06-29 11:56:00.000000000 +0200
+***************
+*** 27,33 ****
+ test69.out test70.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+ test79.out test80.out test81.out test82.out test83.out \
+! test84.out test85.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 27,33 ----
+ test69.out test70.out test71.out test72.out test73.out \
+ test74.out test75.out test76.out test77.out test78.out \
+ test79.out test80.out test81.out test82.out test83.out \
+! test84.out test85.out test86.out test87.out
+
+ SCRIPTS_GUI = test16.out
+
+*** ../vim-7.3.568/src/testdir/test86.in 2012-06-20 20:19:31.000000000 +0200
+--- src/testdir/test86.in 2012-06-20 18:01:02.000000000 +0200
+***************
+*** 0 ****
+--- 1,211 ----
++ Tests for various python features. vim: set ft=vim :
++
++ STARTTEST
++ :so small.vim
++ :if !has('python') | e! test.ok | wq! test.out | endif
++ :py import vim
++ :fun Test()
++ :let l = []
++ :py l=vim.bindeval('l')
++ :py f=vim.bindeval('function("strlen")')
++ :" Extending List directly with different types
++ :py l.extend([1, "as'd", [1, 2, f, {'a': 1}]])
++ :$put =string(l)
++ :$put =string(l[-1])
++ :try
++ : $put =string(l[-4])
++ :catch
++ : $put =v:exception[:13]
++ :endtry
++ :" List assignment
++ :py l[0]=0
++ :$put =string(l)
++ :py l[-2]=f
++ :$put =string(l)
++ :"
++ :" Extending Dictionary directly with different types
++ :let d = {}
++ :py d=vim.bindeval('d')
++ :py d['1']='asd'
++ :py d['b']=[1, 2, f]
++ :py d['-1']={'a': 1}
++ :let dkeys = []
++ :py dk=vim.bindeval('dkeys')
++ :py dkeys=d.keys()
++ :py dkeys.sort()
++ :py dk.extend(dkeys)
++ :$put =string(dkeys)
++ :for [key, val] in sort(items(d))
++ : $put =string(key) . ' : ' . string(val)
++ : unlet key val
++ :endfor
++ :"
++ :" removing items with del
++ :py del l[2]
++ :$put =string(l)
++ :let l = range(8)
++ :py l=vim.bindeval('l')
++ :try
++ : py del l[:3]
++ : py del l[1:]
++ :catch
++ : $put =v:exception
++ :endtry
++ :$put =string(l)
++ :"
++ :py del d['-1']
++ :$put =string(d)
++ :"
++ :" removing items out of range: silently skip items that don't exist
++ :let l = [0, 1, 2, 3]
++ :py l=vim.bindeval('l')
++ :" The following two ranges delete nothing as they match empty list:
++ :py del l[2:1]
++ :$put =string(l)
++ :py del l[2:2]
++ :$put =string(l)
++ :py del l[2:3]
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py l=vim.bindeval('l')
++ :py del l[2:4]
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py l=vim.bindeval('l')
++ :py del l[2:5]
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py l=vim.bindeval('l')
++ :py del l[2:6]
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py l=vim.bindeval('l')
++ :" The following two ranges delete nothing as they match empty list:
++ :py del l[-1:2]
++ :$put =string(l)
++ :py del l[-2:2]
++ :$put =string(l)
++ :py del l[-3:2]
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py l=vim.bindeval('l')
++ :py del l[-4:2]
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py l=vim.bindeval('l')
++ :py del l[-5:2]
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py l=vim.bindeval('l')
++ :py del l[-6:2]
++ :$put =string(l)
++ :"
++ :" Slice assignment to a list
++ :let l = [0, 1, 2, 3]
++ :py l=vim.bindeval('l')
++ :py l[0:0]=['a']
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py l=vim.bindeval('l')
++ :py l[1:2]=['b']
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py l=vim.bindeval('l')
++ :py l[2:4]=['c']
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py l=vim.bindeval('l')
++ :py l[4:4]=['d']
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py l=vim.bindeval('l')
++ :py l[-1:2]=['e']
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py l=vim.bindeval('l')
++ :py l[-10:2]=['f']
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py l=vim.bindeval('l')
++ :py l[2:-10]=['g']
++ :$put =string(l)
++ :let l = []
++ :py l=vim.bindeval('l')
++ :py l[0:0]=['h']
++ :$put =string(l)
++ :"
++ :" Locked variables
++ :let l = [0, 1, 2, 3]
++ :py l=vim.bindeval('l')
++ :lockvar! l
++ :py l[2]='i'
++ :$put =string(l)
++ :unlockvar! l
++ :"
++ :" Function calls
++ :function New(...)
++ :return ['NewStart']+a:000+['NewEnd']
++ :endfunction
++ :function DictNew(...) dict
++ :return ['DictNewStart']+a:000+['DictNewEnd', self]
++ :endfunction
++ :let l=[function('New'), function('DictNew')]
++ :py l=vim.bindeval('l')
++ :py l.extend(list(l[0](1, 2, 3)))
++ :$put =string(l)
++ :py l.extend(list(l[1](1, 2, 3, self={'a': 'b'})))
++ :$put =string(l)
++ :py l.extend([l[0].name])
++ :$put =string(l)
++ :try
++ : py l[1](1, 2, 3)
++ :catch
++ : $put =v:exception[:16]
++ :endtry
++ :delfunction New
++ :try
++ : py l[0](1, 2, 3)
++ :catch
++ : $put =v:exception[:16]
++ :endtry
++ :if has('float')
++ : let l=[0.0]
++ : py l=vim.bindeval('l')
++ : py l.extend([0.0])
++ : $put =string(l)
++ :else
++ : $put ='[0.0, 0.0]'
++ :endif
++ :"
++ :" pyeval()
++ :let l=pyeval('range(3)')
++ :$put =string(l)
++ :let d=pyeval('{"a": "b", "c": 1, "d": ["e"]}')
++ :$put =sort(items(d))
++ :try
++ : let undef=pyeval('undefined_name')
++ :catch
++ : $put =v:exception[:13]
++ :endtry
++ :try
++ : let vim=pyeval('vim')
++ :catch
++ : $put =v:exception[:13]
++ :endtry
++ :if has('float')
++ : let f=pyeval('0.0')
++ : $put =string(f)
++ :else
++ : $put ='0.0'
++ :endif
++ :endfun
++ :"
++ :call Test()
++ :"
++ :delfunc Test
++ :call garbagecollect(1)
++ :"
++ :/^start:/,$wq! test.out
++ ENDTEST
++
++ start:
+*** ../vim-7.3.568/src/testdir/test86.ok 2012-06-20 20:19:31.000000000 +0200
+--- src/testdir/test86.ok 2012-06-20 18:01:02.000000000 +0200
+***************
+*** 0 ****
+--- 1,47 ----
++ start:
++ [1, 'as''d', [1, 2, function('strlen'), {'a': 1}]]
++ [1, 2, function('strlen'), {'a': 1}]
++ Vim(put):E684:
++ [0, 'as''d', [1, 2, function('strlen'), {'a': 1}]]
++ [0, function('strlen'), [1, 2, function('strlen'), {'a': 1}]]
++ ['-1', '1', 'b']
++ '-1' : {'a': 1}
++ '1' : 'asd'
++ 'b' : [1, 2, function('strlen')]
++ [0, function('strlen')]
++ [3]
++ {'1': 'asd', 'b': [1, 2, function('strlen')]}
++ [0, 1, 2, 3]
++ [0, 1, 2, 3]
++ [0, 1, 3]
++ [0, 1]
++ [0, 1]
++ [0, 1]
++ [0, 1, 2, 3]
++ [0, 1, 2, 3]
++ [0, 2, 3]
++ [2, 3]
++ [2, 3]
++ [2, 3]
++ ['a', 0, 1, 2, 3]
++ [0, 'b', 2, 3]
++ [0, 1, 'c']
++ [0, 1, 2, 3, 'd']
++ [0, 1, 2, 'e', 3]
++ ['f', 2, 3]
++ [0, 1, 'g', 2, 3]
++ ['h']
++ [0, 1, 2, 3]
++ [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd']
++ [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}]
++ [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}, 'New']
++ Vim(python):E725:
++ Vim(python):E117:
++ [0.0, 0.0]
++ [0, 1, 2]
++ ['a', 'b']
++ ['c', 1]
++ ['d', ['e']]
++ Vim(let):E858:
++ Vim(let):E859:
++ 0.0
+*** ../vim-7.3.568/src/testdir/test87.in 2012-06-20 20:19:31.000000000 +0200
+--- src/testdir/test87.in 2012-06-20 18:01:02.000000000 +0200
+***************
+*** 0 ****
+--- 1,211 ----
++ Tests for various python features. vim: set ft=vim :
++
++ STARTTEST
++ :so small.vim
++ :if !has('python3') | e! test.ok | wq! test.out | endif
++ :py3 import vim
++ :fun Test()
++ :let l = []
++ :py3 l=vim.bindeval('l')
++ :py3 f=vim.bindeval('function("strlen")')
++ :" Extending List directly with different types
++ :py3 l+=[1, "as'd", [1, 2, f, {'a': 1}]]
++ :$put =string(l)
++ :$put =string(l[-1])
++ :try
++ : $put =string(l[-4])
++ :catch
++ : $put =v:exception[:13]
++ :endtry
++ :" List assignment
++ :py3 l[0]=0
++ :$put =string(l)
++ :py3 l[-2]=f
++ :$put =string(l)
++ :"
++ :" Extending Dictionary directly with different types
++ :let d = {}
++ :py3 d=vim.bindeval('d')
++ :py3 d['1']='asd'
++ :py3 d['b']=[1, 2, f]
++ :py3 d['-1']={'a': 1}
++ :let dkeys = []
++ :py3 dk=vim.bindeval('dkeys')
++ :py3 dkeys=d.keys()
++ :py3 dkeys.sort()
++ :py3 dk+=dkeys
++ :$put =string(dkeys)
++ :for [key, val] in sort(items(d))
++ : $put =string(key) . ' : ' . string(val)
++ : unlet key val
++ :endfor
++ :"
++ :" removing items with del
++ :py3 del l[2]
++ :$put =string(l)
++ :let l = range(8)
++ :py3 l=vim.bindeval('l')
++ :try
++ : py3 del l[:3]
++ : py3 del l[1:]
++ :catch
++ : $put =v:exception
++ :endtry
++ :$put =string(l)
++ :"
++ :py3 del d['-1']
++ :$put =string(d)
++ :"
++ :" removing items out of range: silently skip items that don't exist
++ :let l = [0, 1, 2, 3]
++ :py3 l=vim.bindeval('l')
++ :" The following two ranges delete nothing as they match empty list:
++ :py3 del l[2:1]
++ :$put =string(l)
++ :py3 del l[2:2]
++ :$put =string(l)
++ :py3 del l[2:3]
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py3 l=vim.bindeval('l')
++ :py3 del l[2:4]
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py3 l=vim.bindeval('l')
++ :py3 del l[2:5]
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py3 l=vim.bindeval('l')
++ :py3 del l[2:6]
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py3 l=vim.bindeval('l')
++ :" The following two ranges delete nothing as they match empty list:
++ :py3 del l[-1:2]
++ :$put =string(l)
++ :py3 del l[-2:2]
++ :$put =string(l)
++ :py3 del l[-3:2]
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py3 l=vim.bindeval('l')
++ :py3 del l[-4:2]
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py3 l=vim.bindeval('l')
++ :py3 del l[-5:2]
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py3 l=vim.bindeval('l')
++ :py3 del l[-6:2]
++ :$put =string(l)
++ :"
++ :" Slice assignment to a list
++ :let l = [0, 1, 2, 3]
++ :py3 l=vim.bindeval('l')
++ :py3 l[0:0]=['a']
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py3 l=vim.bindeval('l')
++ :py3 l[1:2]=['b']
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py3 l=vim.bindeval('l')
++ :py3 l[2:4]=['c']
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py3 l=vim.bindeval('l')
++ :py3 l[4:4]=['d']
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py3 l=vim.bindeval('l')
++ :py3 l[-1:2]=['e']
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py3 l=vim.bindeval('l')
++ :py3 l[-10:2]=['f']
++ :$put =string(l)
++ :let l = [0, 1, 2, 3]
++ :py3 l=vim.bindeval('l')
++ :py3 l[2:-10]=['g']
++ :$put =string(l)
++ :let l = []
++ :py3 l=vim.bindeval('l')
++ :py3 l[0:0]=['h']
++ :$put =string(l)
++ :"
++ :" Locked variables
++ :let l = [0, 1, 2, 3]
++ :py3 l=vim.bindeval('l')
++ :lockvar! l
++ :py3 l[2]='i'
++ :$put =string(l)
++ :unlockvar! l
++ :"
++ :" Function calls
++ :function New(...)
++ :return ['NewStart']+a:000+['NewEnd']
++ :endfunction
++ :function DictNew(...) dict
++ :return ['DictNewStart']+a:000+['DictNewEnd', self]
++ :endfunction
++ :let l=[function('New'), function('DictNew')]
++ :py3 l=vim.bindeval('l')
++ :py3 l.extend(list(l[0](1, 2, 3)))
++ :$put =string(l)
++ :py3 l.extend(list(l[1](1, 2, 3, self={'a': 'b'})))
++ :$put =string(l)
++ :py3 l+=[l[0].name]
++ :$put =string(l)
++ :try
++ : py3 l[1](1, 2, 3)
++ :catch
++ : $put =v:exception[:13]
++ :endtry
++ :delfunction New
++ :try
++ : py3 l[0](1, 2, 3)
++ :catch
++ : $put =v:exception[:13]
++ :endtry
++ :if has('float')
++ : let l=[0.0]
++ : py3 l=vim.bindeval('l')
++ : py3 l.extend([0.0])
++ : $put =string(l)
++ :else
++ : $put ='[0.0, 0.0]'
++ :endif
++ :"
++ :" py3eval()
++ :let l=py3eval('[0, 1, 2]')
++ :$put =string(l)
++ :let d=py3eval('{"a": "b", "c": 1, "d": ["e"]}')
++ :$put =sort(items(d))
++ :try
++ : let undef=py3eval('undefined_name')
++ :catch
++ : $put =v:exception[:13]
++ :endtry
++ :try
++ : let vim=py3eval('vim')
++ :catch
++ : $put =v:exception[:13]
++ :endtry
++ :if has('float')
++ : let f=py3eval('0.0')
++ : $put =string(f)
++ :else
++ : $put ='0.0'
++ :endif
++ :endfun
++ :"
++ :call Test()
++ :"
++ :delfunc Test
++ :call garbagecollect(1)
++ :"
++ :/^start:/,$wq! test.out
++ ENDTEST
++
++ start:
+*** ../vim-7.3.568/src/testdir/test87.ok 2012-06-20 20:19:31.000000000 +0200
+--- src/testdir/test87.ok 2012-06-20 18:01:02.000000000 +0200
+***************
+*** 0 ****
+--- 1,47 ----
++ start:
++ [1, 'as''d', [1, 2, function('strlen'), {'a': 1}]]
++ [1, 2, function('strlen'), {'a': 1}]
++ Vim(put):E684:
++ [0, 'as''d', [1, 2, function('strlen'), {'a': 1}]]
++ [0, function('strlen'), [1, 2, function('strlen'), {'a': 1}]]
++ ['-1', '1', 'b']
++ '-1' : {'a': 1}
++ '1' : 'asd'
++ 'b' : [1, 2, function('strlen')]
++ [0, function('strlen')]
++ [3]
++ {'1': 'asd', 'b': [1, 2, function('strlen')]}
++ [0, 1, 2, 3]
++ [0, 1, 2, 3]
++ [0, 1, 3]
++ [0, 1]
++ [0, 1]
++ [0, 1]
++ [0, 1, 2, 3]
++ [0, 1, 2, 3]
++ [0, 2, 3]
++ [2, 3]
++ [2, 3]
++ [2, 3]
++ ['a', 0, 1, 2, 3]
++ [0, 'b', 2, 3]
++ [0, 1, 'c']
++ [0, 1, 2, 3, 'd']
++ [0, 1, 2, 'e', 3]
++ ['f', 2, 3]
++ [0, 1, 'g', 2, 3]
++ ['h']
++ [0, 1, 2, 3]
++ [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd']
++ [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}]
++ [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}, 'New']
++ Vim(py3):E725:
++ Vim(py3):E117:
++ [0.0, 0.0]
++ [0, 1, 2]
++ ['a', 'b']
++ ['c', 1]
++ ['d', ['e']]
++ Vim(let):E860:
++ Vim(let):E861:
++ 0.0
+*** ../vim-7.3.568/src/version.c 2012-06-29 12:35:40.000000000 +0200
+--- src/version.c 2012-06-29 12:47:03.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 569,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+69. Yahoo welcomes you with your own start page
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.570 b/source/ap/vim/patches/7.3.570
new file mode 100644
index 000000000..c644194d5
--- /dev/null
+++ b/source/ap/vim/patches/7.3.570
@@ -0,0 +1,145 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.570
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.570
+Problem: ":vimgrep" does not obey 'wildignore'.
+Solution: Apply 'wildignore' and 'suffixes' to ":vimgrep". (Ingo Karkat)
+Files: src/ex_cmds2.c, src/proto/ex_cmds2.pro, src/quickfix.c, src/spell.c
+
+
+*** ../vim-7.3.569/src/ex_cmds2.c 2012-06-20 15:48:53.000000000 +0200
+--- src/ex_cmds2.c 2012-06-29 12:43:34.000000000 +0200
+***************
+*** 1850,1871 ****
+ #if defined(FEAT_QUICKFIX) || defined(FEAT_SYN_HL) || defined(PROTO)
+ /*
+ * Parse a list of arguments (file names), expand them and return in
+! * "fnames[fcountp]".
+ * Return FAIL or OK.
+ */
+ int
+! get_arglist_exp(str, fcountp, fnamesp)
+ char_u *str;
+ int *fcountp;
+ char_u ***fnamesp;
+ {
+ garray_T ga;
+ int i;
+
+ if (get_arglist(&ga, str) == FAIL)
+ return FAIL;
+! i = gen_expand_wildcards(ga.ga_len, (char_u **)ga.ga_data,
+! fcountp, fnamesp, EW_FILE|EW_NOTFOUND);
+ ga_clear(&ga);
+ return i;
+ }
+--- 1850,1877 ----
+ #if defined(FEAT_QUICKFIX) || defined(FEAT_SYN_HL) || defined(PROTO)
+ /*
+ * Parse a list of arguments (file names), expand them and return in
+! * "fnames[fcountp]". When "wig" is TRUE, removes files matching 'wildignore'.
+ * Return FAIL or OK.
+ */
+ int
+! get_arglist_exp(str, fcountp, fnamesp, wig)
+ char_u *str;
+ int *fcountp;
+ char_u ***fnamesp;
++ int wig;
+ {
+ garray_T ga;
+ int i;
+
+ if (get_arglist(&ga, str) == FAIL)
+ return FAIL;
+! if (wig == TRUE)
+! i = expand_wildcards(ga.ga_len, (char_u **)ga.ga_data,
+! fcountp, fnamesp, EW_FILE|EW_NOTFOUND);
+! else
+! i = gen_expand_wildcards(ga.ga_len, (char_u **)ga.ga_data,
+! fcountp, fnamesp, EW_FILE|EW_NOTFOUND);
+!
+ ga_clear(&ga);
+ return i;
+ }
+*** ../vim-7.3.569/src/proto/ex_cmds2.pro 2011-05-19 18:26:34.000000000 +0200
+--- src/proto/ex_cmds2.pro 2012-06-29 12:43:49.000000000 +0200
+***************
+*** 42,48 ****
+ int check_fname __ARGS((void));
+ int buf_write_all __ARGS((buf_T *buf, int forceit));
+ int get_arglist __ARGS((garray_T *gap, char_u *str));
+! int get_arglist_exp __ARGS((char_u *str, int *fcountp, char_u ***fnamesp));
+ void set_arglist __ARGS((char_u *str));
+ void check_arg_idx __ARGS((win_T *win));
+ void ex_args __ARGS((exarg_T *eap));
+--- 42,48 ----
+ int check_fname __ARGS((void));
+ int buf_write_all __ARGS((buf_T *buf, int forceit));
+ int get_arglist __ARGS((garray_T *gap, char_u *str));
+! int get_arglist_exp __ARGS((char_u *str, int *fcountp, char_u ***fnamesp, int wig));
+ void set_arglist __ARGS((char_u *str));
+ void check_arg_idx __ARGS((win_T *win));
+ void ex_args __ARGS((exarg_T *eap));
+*** ../vim-7.3.569/src/quickfix.c 2012-06-01 18:34:37.000000000 +0200
+--- src/quickfix.c 2012-06-29 12:43:49.000000000 +0200
+***************
+*** 3189,3195 ****
+ ;
+
+ /* parse the list of arguments */
+! if (get_arglist_exp(p, &fcount, &fnames) == FAIL)
+ goto theend;
+ if (fcount == 0)
+ {
+--- 3189,3195 ----
+ ;
+
+ /* parse the list of arguments */
+! if (get_arglist_exp(p, &fcount, &fnames, TRUE) == FAIL)
+ goto theend;
+ if (fcount == 0)
+ {
+*** ../vim-7.3.569/src/spell.c 2012-06-01 17:49:51.000000000 +0200
+--- src/spell.c 2012-06-29 12:43:49.000000000 +0200
+***************
+*** 8553,8559 ****
+ }
+
+ /* Expand all the remaining arguments (e.g., $VIMRUNTIME). */
+! if (get_arglist_exp(arg, &fcount, &fnames) == OK)
+ {
+ mkspell(fcount, fnames, ascii, eap->forceit, FALSE);
+ FreeWild(fcount, fnames);
+--- 8553,8559 ----
+ }
+
+ /* Expand all the remaining arguments (e.g., $VIMRUNTIME). */
+! if (get_arglist_exp(arg, &fcount, &fnames, FALSE) == OK)
+ {
+ mkspell(fcount, fnames, ascii, eap->forceit, FALSE);
+ FreeWild(fcount, fnames);
+*** ../vim-7.3.569/src/version.c 2012-06-29 12:54:32.000000000 +0200
+--- src/version.c 2012-06-29 12:56:12.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 570,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+70. ISDN lines are added to your house on a hourly basis
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.571 b/source/ap/vim/patches/7.3.571
new file mode 100644
index 000000000..ad62ffc2b
--- /dev/null
+++ b/source/ap/vim/patches/7.3.571
@@ -0,0 +1,117 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.571
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.571
+Problem: Duplicated condition.
+Solution: Remove one. (Dominique Pelle)
+Files: src/os_win32.c
+
+
+*** ../vim-7.3.570/src/os_win32.c 2012-02-29 13:58:43.000000000 +0100
+--- src/os_win32.c 2012-06-29 13:10:54.000000000 +0200
+***************
+*** 308,314 ****
+ # ifndef GETTEXT_DLL
+ # define GETTEXT_DLL "libintl.dll"
+ # endif
+! /* Dummy funcitons */
+ static char *null_libintl_gettext(const char *);
+ static char *null_libintl_textdomain(const char *);
+ static char *null_libintl_bindtextdomain(const char *, const char *);
+--- 308,314 ----
+ # ifndef GETTEXT_DLL
+ # define GETTEXT_DLL "libintl.dll"
+ # endif
+! /* Dummy functions */
+ static char *null_libintl_gettext(const char *);
+ static char *null_libintl_textdomain(const char *);
+ static char *null_libintl_bindtextdomain(const char *, const char *);
+***************
+*** 1409,1415 ****
+
+
+ /*
+! * mch_inchar(): low-level input funcion.
+ * Get one or more characters from the keyboard or the mouse.
+ * If time == 0, do not wait for characters.
+ * If time == n, wait a short time for characters.
+--- 1409,1415 ----
+
+
+ /*
+! * mch_inchar(): low-level input function.
+ * Get one or more characters from the keyboard or the mouse.
+ * If time == 0, do not wait for characters.
+ * If time == n, wait a short time for characters.
+***************
+*** 3451,3464 ****
+ * to avoid to perform a blocking read */
+ ret = PeekNamedPipe(g_hChildStd_OUT_Rd, /* pipe to query */
+ NULL, /* optional buffer */
+! 0, /* buffe size */
+ NULL, /* number of read bytes */
+ &availableBytes, /* available bytes total */
+ NULL); /* byteLeft */
+
+ repeatCount = 0;
+ /* We got real data in the pipe, read it */
+! while (ret != 0 && availableBytes > 0 && availableBytes > 0)
+ {
+ repeatCount++;
+ toRead =
+--- 3451,3464 ----
+ * to avoid to perform a blocking read */
+ ret = PeekNamedPipe(g_hChildStd_OUT_Rd, /* pipe to query */
+ NULL, /* optional buffer */
+! 0, /* buffer size */
+ NULL, /* number of read bytes */
+ &availableBytes, /* available bytes total */
+ NULL); /* byteLeft */
+
+ repeatCount = 0;
+ /* We got real data in the pipe, read it */
+! while (ret != 0 && availableBytes > 0)
+ {
+ repeatCount++;
+ toRead =
+***************
+*** 3638,3644 ****
+ NULL, /* Process security attributes */
+ NULL, /* Thread security attributes */
+
+! // this command can be litigeous, handle inheritence was
+ // deactivated for pending temp file, but, if we deactivate
+ // it, the pipes don't work for some reason.
+ TRUE, /* Inherit handles, first deactivated,
+--- 3638,3644 ----
+ NULL, /* Process security attributes */
+ NULL, /* Thread security attributes */
+
+! // this command can be litigious, handle inheritance was
+ // deactivated for pending temp file, but, if we deactivate
+ // it, the pipes don't work for some reason.
+ TRUE, /* Inherit handles, first deactivated,
+*** ../vim-7.3.570/src/version.c 2012-06-29 12:57:03.000000000 +0200
+--- src/version.c 2012-06-29 13:12:31.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 571,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+71. You wonder how people walk
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.572 b/source/ap/vim/patches/7.3.572
new file mode 100644
index 000000000..14fc127ec
--- /dev/null
+++ b/source/ap/vim/patches/7.3.572
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.572
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.572
+Problem: Duplicate statement in if and else. (Dominique Pelle)
+Solution: Remove the condition and add a TODO.
+Files: src/gui_xmebw.c
+
+
+*** ../vim-7.3.571/src/gui_xmebw.c 2010-08-15 21:57:29.000000000 +0200
+--- src/gui_xmebw.c 2012-06-29 13:17:15.000000000 +0200
+***************
+*** 375,385 ****
+
+ XGetGeometry(dpy, pix, &root, &x, &y, &width, &height, &border, &depth);
+
+! if (eb->enhancedbutton.label_location == (int)XmTOP
+! || eb->enhancedbutton.label_location == (int)XmBOTTOM)
+! shift = eb->primitive.shadow_thickness / 2;
+! else
+! shift = eb->primitive.shadow_thickness / 2;
+
+ if (shift < 1)
+ shift = 1;
+--- 375,382 ----
+
+ XGetGeometry(dpy, pix, &root, &x, &y, &width, &height, &border, &depth);
+
+! /* TODO: does the shift depend on label_location somehow? */
+! shift = eb->primitive.shadow_thickness / 2;
+
+ if (shift < 1)
+ shift = 1;
+*** ../vim-7.3.571/src/version.c 2012-06-29 13:13:59.000000000 +0200
+--- src/version.c 2012-06-29 13:18:41.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 572,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+72. Somebody at IRC just mentioned a way to obtain full motion video without
+ a PC using a wireless protocol called NTSC, you wonder how you never
+ heard about it
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.573 b/source/ap/vim/patches/7.3.573
new file mode 100644
index 000000000..7734a76a0
--- /dev/null
+++ b/source/ap/vim/patches/7.3.573
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.573
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.573
+Problem: Using array index before bounds checking.
+Solution: Swap the parts of the condition. (Dominique Pelle)
+Files: src/ops.c
+
+
+*** ../vim-7.3.572/src/ops.c 2012-06-13 17:28:51.000000000 +0200
+--- src/ops.c 2012-06-29 13:27:11.000000000 +0200
+***************
+*** 6458,6464 ****
+ long chars = 0;
+ int is_word = 0;
+
+! for (i = 0; line[i] && i < limit; )
+ {
+ if (is_word)
+ {
+--- 6458,6464 ----
+ long chars = 0;
+ int is_word = 0;
+
+! for (i = 0; i < limit && line[i] != NUL; )
+ {
+ if (is_word)
+ {
+*** ../vim-7.3.572/src/version.c 2012-06-29 13:19:23.000000000 +0200
+--- src/version.c 2012-06-29 13:27:59.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 573,
+ /**/
+
+--
+"Thou shalt not follow the Null Pointer, for at its end Chaos and
+Madness lie."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.574 b/source/ap/vim/patches/7.3.574
new file mode 100644
index 000000000..e23d818f1
--- /dev/null
+++ b/source/ap/vim/patches/7.3.574
@@ -0,0 +1,88 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.574
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.574
+Problem: When pasting a register in the search command line a CTRL-L
+ character is not pasted. (Dominique Pelle)
+Solution: Escape the CTRL-L. (Christian Brabandt)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.3.573/src/ex_getln.c 2012-06-06 12:02:57.000000000 +0200
+--- src/ex_getln.c 2012-06-29 13:39:03.000000000 +0200
+***************
+*** 3133,3139 ****
+ else
+ #endif
+ c = *s++;
+! if (cv == Ctrl_V || c == ESC || c == Ctrl_C || c == CAR || c == NL
+ #ifdef UNIX
+ || c == intr_char
+ #endif
+--- 3133,3140 ----
+ else
+ #endif
+ c = *s++;
+! if (cv == Ctrl_V || c == ESC || c == Ctrl_C
+! || c == CAR || c == NL || c == Ctrl_L
+ #ifdef UNIX
+ || c == intr_char
+ #endif
+***************
+*** 4692,4698 ****
+ if (tab[i].ic)
+ regmatch.rm_ic = TRUE;
+ ret = ExpandGeneric(xp, &regmatch, num_file, file,
+! tab[i].func, tab[i].escaped);
+ break;
+ }
+ }
+--- 4693,4699 ----
+ if (tab[i].ic)
+ regmatch.rm_ic = TRUE;
+ ret = ExpandGeneric(xp, &regmatch, num_file, file,
+! tab[i].func, tab[i].escaped);
+ break;
+ }
+ }
+***************
+*** 5125,5131 ****
+ vim_free(matches);
+ }
+ if (ga.ga_len == 0)
+! return FAIL;
+
+ /* Sort and remove duplicates which can happen when specifying multiple
+ * directories in dirnames. */
+--- 5126,5132 ----
+ vim_free(matches);
+ }
+ if (ga.ga_len == 0)
+! return FAIL;
+
+ /* Sort and remove duplicates which can happen when specifying multiple
+ * directories in dirnames. */
+*** ../vim-7.3.573/src/version.c 2012-06-29 13:34:15.000000000 +0200
+--- src/version.c 2012-06-29 13:38:22.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 574,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+73. You give your dog used motherboards instead of bones
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.575 b/source/ap/vim/patches/7.3.575
new file mode 100644
index 000000000..f5d80d724
--- /dev/null
+++ b/source/ap/vim/patches/7.3.575
@@ -0,0 +1,60 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.575
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.575
+Problem: "ygt" tries to yank instead of giving an error. (Daniel Mueller)
+Solution: Check for a pending operator.
+Files: src/normal.c
+
+
+*** ../vim-7.3.574/src/normal.c 2012-06-06 16:12:54.000000000 +0200
+--- src/normal.c 2012-06-29 13:50:26.000000000 +0200
+***************
+*** 8393,8402 ****
+
+ #ifdef FEAT_WINDOWS
+ case 't':
+! goto_tabpage((int)cap->count0);
+ break;
+ case 'T':
+! goto_tabpage(-(int)cap->count1);
+ break;
+ #endif
+
+--- 8393,8404 ----
+
+ #ifdef FEAT_WINDOWS
+ case 't':
+! if (!checkclearop(oap))
+! goto_tabpage((int)cap->count0);
+ break;
+ case 'T':
+! if (!checkclearop(oap))
+! goto_tabpage(-(int)cap->count1);
+ break;
+ #endif
+
+*** ../vim-7.3.574/src/version.c 2012-06-29 13:44:37.000000000 +0200
+--- src/version.c 2012-06-29 13:52:01.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 575,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+74. Your most erotic dreams are about cybersex
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.576 b/source/ap/vim/patches/7.3.576
new file mode 100644
index 000000000..bc226d90c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.576
@@ -0,0 +1,255 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.576
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.576
+Problem: Formatting of lists inside comments is not right yet.
+Solution: Use another solution and add a test. (Tor Perkins)
+Files: src/edit.c, src/misc1.c, src/testdir/test68.in,
+ src/testdir/test69.ok
+
+
+*** ../vim-7.3.575/src/edit.c 2012-06-20 22:55:56.000000000 +0200
+--- src/edit.c 2012-06-29 14:10:36.000000000 +0200
+***************
+*** 6320,6333 ****
+ if (!(flags & INSCHAR_COM_LIST))
+ {
+ /*
+! * This section is for numeric lists w/o comments. If comment
+! * indents are needed with numeric lists (formatoptions=nq),
+! * then the INSCHAR_COM_LIST flag will cause the corresponding
+! * OPENLINE_COM_LIST flag to be passed through to open_line()
+! * (as seen above)...
+ */
+ if (second_indent < 0 && has_format_option(FO_Q_NUMBER))
+! second_indent = get_number_indent(curwin->w_cursor.lnum -1);
+ if (second_indent >= 0)
+ {
+ #ifdef FEAT_VREPLACE
+--- 6320,6334 ----
+ if (!(flags & INSCHAR_COM_LIST))
+ {
+ /*
+! * This section is for auto-wrap of numeric lists. When not
+! * in insert mode (i.e. format_lines()), the INSCHAR_COM_LIST
+! * flag will be set and open_line() will handle it (as seen
+! * above). The code here (and in get_number_indent()) will
+! * recognize comments if needed...
+ */
+ if (second_indent < 0 && has_format_option(FO_Q_NUMBER))
+! second_indent =
+! get_number_indent(curwin->w_cursor.lnum - 1);
+ if (second_indent >= 0)
+ {
+ #ifdef FEAT_VREPLACE
+***************
+*** 6336,6342 ****
+--- 6337,6367 ----
+ FALSE, NUL, TRUE);
+ else
+ #endif
++ #ifdef FEAT_COMMENTS
++ if (leader_len > 0 && second_indent - leader_len > 0)
++ {
++ int i;
++ int padding = second_indent - leader_len;
++
++ /* We started at the first_line of a numbered list
++ * that has a comment. the open_line() function has
++ * inserted the proper comment leader and positioned
++ * the cursor at the end of the split line. Now we
++ * add the additional whitespace needed after the
++ * comment leader for the numbered list. */
++ for (i = 0; i < padding; i++)
++ {
++ ins_str((char_u *)" ");
++ changed_bytes(curwin->w_cursor.lnum, leader_len);
++ }
++ }
++ else
++ {
++ #endif
+ (void)set_indent(second_indent, SIN_CHANGED);
++ #ifdef FEAT_COMMENTS
++ }
++ #endif
+ }
+ }
+ first_line = FALSE;
+*** ../vim-7.3.575/src/misc1.c 2012-06-20 17:56:06.000000000 +0200
+--- src/misc1.c 2012-06-29 14:10:12.000000000 +0200
+***************
+*** 424,491 ****
+ colnr_T col;
+ pos_T pos;
+
+ if (lnum > curbuf->b_ml.ml_line_count)
+ return -1;
+ pos.lnum = 0;
+
+ #ifdef FEAT_COMMENTS
+! if (has_format_option(FO_Q_COMS) && has_format_option(FO_Q_NUMBER))
+! {
+! regmatch_T regmatch;
+! int lead_len; /* length of comment leader */
+!
+ lead_len = get_leader_len(ml_get(lnum), NULL, FALSE, TRUE);
+- regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC);
+- if (regmatch.regprog != NULL)
+- {
+- regmatch.rm_ic = FALSE;
+-
+- /* vim_regexec() expects a pointer to a line. This lets us
+- * start matching for the flp beyond any comment leader... */
+- if (vim_regexec(&regmatch, ml_get(lnum) + lead_len, (colnr_T)0))
+- {
+- pos.lnum = lnum;
+- pos.col = (colnr_T)(*regmatch.endp - ml_get(lnum));
+- #ifdef FEAT_VIRTUALEDIT
+- pos.coladd = 0;
+ #endif
+! }
+! }
+! vim_free(regmatch.regprog);
+! }
+! else
+ {
+! /*
+! * What follows is the orig code that is not "comment aware"...
+! *
+! * I'm not sure if regmmatch_T (multi-match) is needed in this case.
+! * It may be true that this section would work properly using the
+! * regmatch_T code above, in which case, these two separate sections
+! * should be consolidated w/ FEAT_COMMENTS making lead_len > 0...
+! */
+! #endif
+! regmmatch_T regmatch;
+
+! regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC);
+!
+! if (regmatch.regprog != NULL)
+ {
+! regmatch.rmm_ic = FALSE;
+! regmatch.rmm_maxcol = 0;
+! if (vim_regexec_multi(&regmatch, curwin, curbuf,
+! lnum, (colnr_T)0, NULL))
+! {
+! pos.lnum = regmatch.endpos[0].lnum + lnum;
+! pos.col = regmatch.endpos[0].col;
+ #ifdef FEAT_VIRTUALEDIT
+! pos.coladd = 0;
+ #endif
+- }
+- vim_free(regmatch.regprog);
+ }
+- #ifdef FEAT_COMMENTS
+ }
+! #endif
+
+ if (pos.lnum == 0 || *ml_get_pos(&pos) == NUL)
+ return -1;
+--- 424,458 ----
+ colnr_T col;
+ pos_T pos;
+
++ regmatch_T regmatch;
++ int lead_len = 0; /* length of comment leader */
++
+ if (lnum > curbuf->b_ml.ml_line_count)
+ return -1;
+ pos.lnum = 0;
+
+ #ifdef FEAT_COMMENTS
+! /* In format_lines() (i.e. not insert mode), fo+=q is needed too... */
+! if ((State & INSERT) || has_format_option(FO_Q_COMS))
+ lead_len = get_leader_len(ml_get(lnum), NULL, FALSE, TRUE);
+ #endif
+! regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC);
+! if (regmatch.regprog != NULL)
+ {
+! regmatch.rm_ic = FALSE;
+
+! /* vim_regexec() expects a pointer to a line. This lets us
+! * start matching for the flp beyond any comment leader... */
+! if (vim_regexec(&regmatch, ml_get(lnum) + lead_len, (colnr_T)0))
+ {
+! pos.lnum = lnum;
+! pos.col = (colnr_T)(*regmatch.endp - ml_get(lnum));
+ #ifdef FEAT_VIRTUALEDIT
+! pos.coladd = 0;
+ #endif
+ }
+ }
+! vim_free(regmatch.regprog);
+
+ if (pos.lnum == 0 || *ml_get_pos(&pos) == NUL)
+ return -1;
+*** ../vim-7.3.575/src/testdir/test68.in 2012-06-13 17:28:51.000000000 +0200
+--- src/testdir/test68.in 2012-06-29 14:27:27.000000000 +0200
+***************
+*** 52,57 ****
+--- 52,68 ----
+
+ STARTTEST
+ /^{/+1
++ :set tw=5 fo=tcn comments=:#
++ A bjA b
++ ENDTEST
++
++ {
++ 1 a
++ # 1 a
++ }
++
++ STARTTEST
++ /^{/+1
+ :set tw=5 fo=qn comments=:#
+ gwap
+ ENDTEST
+***************
+*** 83,88 ****
+--- 94,107 ----
+ }
+
+ STARTTEST
++ /^#/
++ :setl tw=12 fo=tqnc comments=:#
++ A foobar
++ ENDTEST
++
++ # 1 xxxxx
++
++ STARTTEST
+ :g/^STARTTEST/.,/^ENDTEST/d
+ :1;/^Results/,$wq! test.out
+ ENDTEST
+*** ../vim-7.3.575/src/version.c 2012-06-29 13:56:01.000000000 +0200
+--- src/version.c 2012-06-29 15:03:10.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 576,
+ /**/
+
+--
+Proof techniques #2: Proof by Oddity.
+ SAMPLE: To prove that horses have an infinite number of legs.
+(1) Horses have an even number of legs.
+(2) They have two legs in back and fore legs in front.
+(3) This makes a total of six legs, which certainly is an odd number of
+ legs for a horse.
+(4) But the only number that is both odd and even is infinity.
+(5) Therefore, horses must have an infinite number of legs.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.577 b/source/ap/vim/patches/7.3.577
new file mode 100644
index 000000000..2929b22d3
--- /dev/null
+++ b/source/ap/vim/patches/7.3.577
@@ -0,0 +1,273 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.577
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.577
+Problem: Size of memory does not fit in 32 bit unsigned.
+Solution: Use Kbyte instead of byte. Call GlobalMemoryStatusEx() instead of
+ GlobalMemoryStatus() when available.
+Files: src/misc2.c, src/option.c, src/os_amiga.c, src/os_msdos.c,
+ src/os_win16.c, src/os_win32.c
+
+
+*** ../vim-7.3.576/src/misc2.c 2012-02-29 13:58:43.000000000 +0100
+--- src/misc2.c 2012-06-29 15:30:54.000000000 +0200
+***************
+*** 815,820 ****
+--- 815,821 ----
+ #else
+ # define KEEP_ROOM (2 * 8192L)
+ #endif
++ #define KEEP_ROOM_KB (KEEP_ROOM / 1024L)
+
+ /*
+ * Note: if unsigned is 16 bits we can only allocate up to 64K with alloc().
+***************
+*** 940,946 ****
+ allocated = 0;
+ # endif
+ /* 3. check for available memory: call mch_avail_mem() */
+! if (mch_avail_mem(TRUE) < KEEP_ROOM && !releasing)
+ {
+ free((char *)p); /* System is low... no go! */
+ p = NULL;
+--- 941,947 ----
+ allocated = 0;
+ # endif
+ /* 3. check for available memory: call mch_avail_mem() */
+! if (mch_avail_mem(TRUE) < KEEP_ROOM_KB && !releasing)
+ {
+ free((char *)p); /* System is low... no go! */
+ p = NULL;
+*** ../vim-7.3.576/src/option.c 2012-03-28 19:58:34.000000000 +0200
+--- src/option.c 2012-06-29 15:31:46.000000000 +0200
+***************
+*** 3154,3160 ****
+ {
+ #ifdef HAVE_AVAIL_MEM
+ /* Use amount of memory available at this moment. */
+! n = (mch_avail_mem(FALSE) >> 11);
+ #else
+ # ifdef HAVE_TOTAL_MEM
+ /* Use amount of memory available to Vim. */
+--- 3154,3160 ----
+ {
+ #ifdef HAVE_AVAIL_MEM
+ /* Use amount of memory available at this moment. */
+! n = (mch_avail_mem(FALSE) >> 1);
+ #else
+ # ifdef HAVE_TOTAL_MEM
+ /* Use amount of memory available to Vim. */
+***************
+*** 6702,6708 ****
+ {
+ for (s = *varp; *s;)
+ {
+! while(*s == ',' || *s == ' ')
+ s++;
+ if (!*s)
+ break;
+--- 6702,6708 ----
+ {
+ for (s = *varp; *s;)
+ {
+! while (*s == ',' || *s == ' ')
+ s++;
+ if (!*s)
+ break;
+***************
+*** 7391,7397 ****
+ new_unnamed |= CLIP_UNNAMED;
+ p += 7;
+ }
+! else if (STRNCMP(p, "unnamedplus", 11) == 0
+ && (p[11] == ',' || p[11] == NUL))
+ {
+ new_unnamed |= CLIP_UNNAMED_PLUS;
+--- 7391,7397 ----
+ new_unnamed |= CLIP_UNNAMED;
+ p += 7;
+ }
+! else if (STRNCMP(p, "unnamedplus", 11) == 0
+ && (p[11] == ',' || p[11] == NUL))
+ {
+ new_unnamed |= CLIP_UNNAMED_PLUS;
+*** ../vim-7.3.576/src/os_amiga.c 2011-10-20 18:24:16.000000000 +0200
+--- src/os_amiga.c 2012-06-29 15:33:59.000000000 +0200
+***************
+*** 191,206 ****
+ }
+
+ /*
+! * Return amount of memory still available.
+ */
+ long_u
+ mch_avail_mem(special)
+ int special;
+ {
+ #ifdef __amigaos4__
+! return (long_u)AvailMem(MEMF_ANY);
+ #else
+! return (long_u)AvailMem(special ? (long)MEMF_CHIP : (long)MEMF_ANY);
+ #endif
+ }
+
+--- 191,206 ----
+ }
+
+ /*
+! * Return amount of memory still available in Kbyte.
+ */
+ long_u
+ mch_avail_mem(special)
+ int special;
+ {
+ #ifdef __amigaos4__
+! return (long_u)AvailMem(MEMF_ANY) >> 10;
+ #else
+! return (long_u)(AvailMem(special ? (long)MEMF_CHIP : (long)MEMF_ANY)) >> 10;
+ #endif
+ }
+
+*** ../vim-7.3.576/src/os_msdos.c 2011-06-19 01:14:22.000000000 +0200
+--- src/os_msdos.c 2012-06-29 15:33:26.000000000 +0200
+***************
+*** 550,564 ****
+ #endif
+
+ /*
+! * Return amount of memory currently available.
+ */
+ long_u
+ mch_avail_mem(int special)
+ {
+ #ifdef DJGPP
+! return _go32_dpmi_remaining_virtual_memory();
+ #else
+! return coreleft();
+ #endif
+ }
+
+--- 550,564 ----
+ #endif
+
+ /*
+! * Return amount of memory currently available in Kbyte.
+ */
+ long_u
+ mch_avail_mem(int special)
+ {
+ #ifdef DJGPP
+! return _go32_dpmi_remaining_virtual_memory() >> 10;
+ #else
+! return coreleft() >> 10;
+ #endif
+ }
+
+*** ../vim-7.3.576/src/os_win16.c 2011-10-20 18:24:16.000000000 +0200
+--- src/os_win16.c 2012-06-29 15:34:18.000000000 +0200
+***************
+*** 379,391 ****
+
+
+ /*
+! * How much memory is available?
+ */
+ long_u
+ mch_avail_mem(
+ int special)
+ {
+! return GetFreeSpace(0);
+ }
+
+
+--- 379,391 ----
+
+
+ /*
+! * How much memory is available in Kbyte?
+ */
+ long_u
+ mch_avail_mem(
+ int special)
+ {
+! return GetFreeSpace(0) >> 10;
+ }
+
+
+*** ../vim-7.3.576/src/os_win32.c 2012-06-29 13:13:59.000000000 +0200
+--- src/os_win32.c 2012-06-29 15:39:52.000000000 +0200
+***************
+*** 4992,5009 ****
+
+
+ /*
+! * How much memory is available?
+ * Return sum of available physical and page file memory.
+ */
+ /*ARGSUSED*/
+ long_u
+ mch_avail_mem(int special)
+ {
+! MEMORYSTATUS ms;
+
+! ms.dwLength = sizeof(MEMORYSTATUS);
+! GlobalMemoryStatus(&ms);
+! return (long_u) (ms.dwAvailPhys + ms.dwAvailPageFile);
+ }
+
+ #ifdef FEAT_MBYTE
+--- 4992,5020 ----
+
+
+ /*
+! * How much memory is available in Kbyte?
+ * Return sum of available physical and page file memory.
+ */
+ /*ARGSUSED*/
+ long_u
+ mch_avail_mem(int special)
+ {
+! if (g_PlatformId != VER_PLATFORM_WIN32_NT)
+! {
+! MEMORYSTATUS ms;
+
+! ms.dwLength = sizeof(MEMORYSTATUS);
+! GlobalMemoryStatus(&ms);
+! return (long_u)((ms.dwAvailPhys + ms.dwAvailPageFile) >> 10);
+! }
+! else
+! {
+! MEMORYSTATUSEX ms;
+!
+! ms.dwLength = sizeof(MEMORYSTATUSEX);
+! GlobalMemoryStatusEx(&ms);
+! return (long_u)((ms.ullAvailPhys + ms.ullAvailPageFile) >> 10);
+! }
+ }
+
+ #ifdef FEAT_MBYTE
+*** ../vim-7.3.576/src/version.c 2012-06-29 15:04:34.000000000 +0200
+--- src/version.c 2012-06-29 15:45:44.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 577,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+75. You start wondering whether you could actually upgrade your brain
+ with a Pentium Pro microprocessor 80. The upgrade works just fine.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.578 b/source/ap/vim/patches/7.3.578
new file mode 100644
index 000000000..9b0aedd26
--- /dev/null
+++ b/source/ap/vim/patches/7.3.578
@@ -0,0 +1,80 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.578
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.578
+Problem: Misplaced declaration.
+Solution: Move declaration to start of block.
+Files: src/if_py_both.h
+
+
+*** ../vim-7.3.577/src/if_py_both.h 2012-06-29 12:54:32.000000000 +0200
+--- src/if_py_both.h 2012-06-29 16:15:29.000000000 +0200
+***************
+*** 818,838 ****
+
+ if (valObject == NULL)
+ {
+ if (di == NULL)
+ {
+ PyErr_SetString(PyExc_IndexError, _("no such key in dictionary"));
+ return -1;
+ }
+! hashitem_T *hi = hash_find(&d->dv_hashtab, di->di_key);
+ hash_remove(&d->dv_hashtab, hi);
+ dictitem_free(di);
+ return 0;
+ }
+
+ if (ConvertFromPyObject(valObject, &tv) == -1)
+- {
+ return -1;
+- }
+
+ if (di == NULL)
+ {
+--- 818,838 ----
+
+ if (valObject == NULL)
+ {
++ hashitem_T *hi;
++
+ if (di == NULL)
+ {
+ PyErr_SetString(PyExc_IndexError, _("no such key in dictionary"));
+ return -1;
+ }
+! hi = hash_find(&d->dv_hashtab, di->di_key);
+ hash_remove(&d->dv_hashtab, hi);
+ dictitem_free(di);
+ return 0;
+ }
+
+ if (ConvertFromPyObject(valObject, &tv) == -1)
+ return -1;
+
+ if (di == NULL)
+ {
+*** ../vim-7.3.577/src/version.c 2012-06-29 15:51:26.000000000 +0200
+--- src/version.c 2012-06-29 16:18:10.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 578,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+77. The phone company asks you to test drive their new PBX system
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.579 b/source/ap/vim/patches/7.3.579
new file mode 100644
index 000000000..ed618fe72
--- /dev/null
+++ b/source/ap/vim/patches/7.3.579
@@ -0,0 +1,232 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.579
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.579 (after 7.3.569)
+Problem: Can't compile with Python 2.5.
+Solution: Use PyCObject when Capsules are not available.
+Files: src/if_py_both.h, src/if_python.c, src/if_python3.c
+
+
+*** ../vim-7.3.578/src/if_py_both.h 2012-06-29 16:19:46.000000000 +0200
+--- src/if_py_both.h 2012-06-29 16:15:29.000000000 +0200
+***************
+*** 56,62 ****
+ /* name, function, calling, documentation */
+ {"write", OutputWrite, 1, ""},
+ {"writelines", OutputWritelines, 1, ""},
+! {"flush", OutputFlush, 1, ""},
+ { NULL, NULL, 0, NULL}
+ };
+
+--- 56,62 ----
+ /* name, function, calling, documentation */
+ {"write", OutputWrite, 1, ""},
+ {"writelines", OutputWritelines, 1, ""},
+! {"flush", OutputFlush, 1, ""},
+ { NULL, NULL, 0, NULL}
+ };
+
+***************
+*** 506,513 ****
+ /* name, function, calling, documentation */
+ {"command", VimCommand, 1, "Execute a Vim ex-mode command" },
+ {"eval", VimEval, 1, "Evaluate an expression using Vim evaluator" },
+! {"bindeval", VimEvalPy, 1, "Like eval(), but returns objects attached to vim ones"},
+! {"strwidth", VimStrwidth, 1, "Screen string width, counts <Tab> as having width 1"},
+ { NULL, NULL, 0, NULL }
+ };
+
+--- 506,513 ----
+ /* name, function, calling, documentation */
+ {"command", VimCommand, 1, "Execute a Vim ex-mode command" },
+ {"eval", VimEval, 1, "Evaluate an expression using Vim evaluator" },
+! {"bindeval", VimEvalPy, 1, "Like eval(), but returns objects attached to vim ones"},
+! {"strwidth", VimStrwidth, 1, "Screen string width, counts <Tab> as having width 1"},
+ { NULL, NULL, 0, NULL }
+ };
+
+***************
+*** 2432,2448 ****
+--- 2432,2463 ----
+ convert_dl(PyObject *obj, typval_T *tv,
+ pytotvfunc py_to_tv, PyObject *lookupDict)
+ {
++ # ifdef PY_USE_CAPSULE
+ PyObject *capsule;
++ # else
++ PyCObject *cobject;
++ # endif
+ char hexBuf[sizeof(void *) * 2 + 3];
+
+ sprintf(hexBuf, "%p", obj);
+
++ # ifdef PY_USE_CAPSULE
+ capsule = PyDict_GetItemString(lookupDict, hexBuf);
+ if (capsule == NULL)
++ # else
++ cobject = (PyCObject *)PyDict_GetItemString(lookupDict, hexBuf);
++ if (cobject == NULL)
++ # endif
+ {
++ # ifdef PY_USE_CAPSULE
+ capsule = PyCapsule_New(tv, NULL, NULL);
+ PyDict_SetItemString(lookupDict, hexBuf, capsule);
+ Py_DECREF(capsule);
++ # else
++ cobject = PyCObject_FromVoidPtr(tv, NULL);
++ PyDict_SetItemString(lookupDict, hexBuf, cobject);
++ Py_DECREF(cobject);
++ # endif
+ if (py_to_tv(obj, tv, lookupDict) == -1)
+ {
+ tv->v_type = VAR_UNKNOWN;
+***************
+*** 2458,2464 ****
+ }
+ else
+ {
+! typval_T *v = PyCapsule_GetPointer(capsule, NULL);
+ copy_tv(v, tv);
+ }
+ return 0;
+--- 2473,2485 ----
+ }
+ else
+ {
+! typval_T *v;
+!
+! # ifdef PY_USE_CAPSULE
+! v = PyCapsule_GetPointer(capsule, NULL);
+! # else
+! v = PyCObject_AsVoidPtr(cobject);
+! # endif
+ copy_tv(v, tv);
+ }
+ return 0;
+*** ../vim-7.3.578/src/if_python.c 2012-06-29 12:54:32.000000000 +0200
+--- src/if_python.c 2012-06-29 16:17:44.000000000 +0200
+***************
+*** 71,76 ****
+--- 71,80 ----
+ # define PySequenceMethods Py_ssize_t
+ #endif
+
++ #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000
++ # define PY_USE_CAPSULE
++ #endif
++
+ #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000
+ # define PyInt Py_ssize_t
+ # define PyInquiry lenfunc
+***************
+*** 220,227 ****
+ # define PyObject_Malloc dll_PyObject_Malloc
+ # define PyObject_Free dll_PyObject_Free
+ # endif
+! # define PyCapsule_New dll_PyCapsule_New
+! # define PyCapsule_GetPointer dll_PyCapsule_GetPointer
+
+ /*
+ * Pointers for dynamic link
+--- 224,236 ----
+ # define PyObject_Malloc dll_PyObject_Malloc
+ # define PyObject_Free dll_PyObject_Free
+ # endif
+! # ifdef PY_USE_CAPSULE
+! # define PyCapsule_New dll_PyCapsule_New
+! # define PyCapsule_GetPointer dll_PyCapsule_GetPointer
+! # else
+! # define PyCObject_FromVoidPtr dll_PyCObject_FromVoidPtr
+! # define PyCObject_AsVoidPtr dll_PyCObject_AsVoidPtr
+! # endif
+
+ /*
+ * Pointers for dynamic link
+***************
+*** 309,316 ****
+--- 318,330 ----
+ static void* (*dll_PyObject_Malloc)(size_t);
+ static void (*dll_PyObject_Free)(void*);
+ # endif
++ # ifdef PY_USE_CAPSULE
+ static PyObject* (*dll_PyCapsule_New)(void *, char *, PyCapsule_Destructor);
+ static void* (*dll_PyCapsule_GetPointer)(PyObject *, char *);
++ # else
++ static PyCObject* (*dll_PyCObject_FromVoidPtr)(void *cobj, void (*destr)(void *));
++ static void* (*dll_PyCObject_AsVoidPtr)(PyCObject *);
++ # endif
+
+ static HINSTANCE hinstPython = 0; /* Instance of python.dll */
+
+***************
+*** 403,409 ****
+ {"PyType_Ready", (PYTHON_PROC*)&dll_PyType_Ready},
+ {"Py_BuildValue", (PYTHON_PROC*)&dll_Py_BuildValue},
+ {"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod},
+! # if (PY_VERSION_HEX >= 0x02050000) && SIZEOF_SIZE_T != SIZEOF_INT
+ {"Py_InitModule4_64", (PYTHON_PROC*)&dll_Py_InitModule4},
+ # else
+ {"Py_InitModule4", (PYTHON_PROC*)&dll_Py_InitModule4},
+--- 417,424 ----
+ {"PyType_Ready", (PYTHON_PROC*)&dll_PyType_Ready},
+ {"Py_BuildValue", (PYTHON_PROC*)&dll_Py_BuildValue},
+ {"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod},
+! # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 \
+! && SIZEOF_SIZE_T != SIZEOF_INT
+ {"Py_InitModule4_64", (PYTHON_PROC*)&dll_Py_InitModule4},
+ # else
+ {"Py_InitModule4", (PYTHON_PROC*)&dll_Py_InitModule4},
+***************
+*** 424,431 ****
+--- 439,451 ----
+ {"PyObject_Malloc", (PYTHON_PROC*)&dll_PyObject_Malloc},
+ {"PyObject_Free", (PYTHON_PROC*)&dll_PyObject_Free},
+ # endif
++ # ifdef PY_USE_CAPSULE
+ {"PyCapsule_New", (PYTHON_PROC*)&dll_PyCapsule_New},
+ {"PyCapsule_GetPointer", (PYTHON_PROC*)&dll_PyCapsule_GetPointer},
++ # else
++ {"PyCObject_FromVoidPtr", (PYTHON_PROC*)&dll_PyCObject_FromVoidPtr},
++ {"PyCObject_AsVoidPtr", (PYTHON_PROC*)&dll_PyCObject_AsVoidPtr},
++ # endif
+ {"", NULL},
+ };
+
+*** ../vim-7.3.578/src/if_python3.c 2012-06-29 12:54:32.000000000 +0200
+--- src/if_python3.c 2012-06-29 16:16:54.000000000 +0200
+***************
+*** 75,80 ****
+--- 75,83 ----
+ # define CODEC_ERROR_HANDLER NULL
+ #endif
+
++ /* Python 3 does not support CObjects, always use Capsules */
++ #define PY_USE_CAPSULE
++
+ #define PyInt Py_ssize_t
+ #define PyString_Check(obj) PyUnicode_Check(obj)
+ #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, CODEC_ERROR_HANDLER)
+*** ../vim-7.3.578/src/version.c 2012-06-29 16:19:46.000000000 +0200
+--- src/version.c 2012-06-29 16:21:25.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 579,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+78. You find yourself dialing IP numbers on the phone.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.580 b/source/ap/vim/patches/7.3.580
new file mode 100644
index 000000000..c2c2a5371
--- /dev/null
+++ b/source/ap/vim/patches/7.3.580
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.580
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.580
+Problem: Warning on 64 bit MS-Windows.
+Solution: Add type cast. (Mike Williams)
+Files: src/if_py_both.h
+
+
+*** ../vim-7.3.579/src/if_py_both.h 2012-06-29 16:28:23.000000000 +0200
+--- src/if_py_both.h 2012-06-29 17:49:59.000000000 +0200
+***************
+*** 495,501 ****
+ if (!PyArg_ParseTuple(args, "s", &expr))
+ return NULL;
+
+! return PyLong_FromLong(mb_string2cells((char_u *)expr, STRLEN(expr)));
+ }
+
+ /*
+--- 495,501 ----
+ if (!PyArg_ParseTuple(args, "s", &expr))
+ return NULL;
+
+! return PyLong_FromLong(mb_string2cells((char_u *)expr, (int)STRLEN(expr)));
+ }
+
+ /*
+*** ../vim-7.3.579/src/version.c 2012-06-29 16:28:23.000000000 +0200
+--- src/version.c 2012-06-29 17:50:36.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 580,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+79. All of your most erotic dreams have a scrollbar at the right side.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.581 b/source/ap/vim/patches/7.3.581
new file mode 100644
index 000000000..553003039
--- /dev/null
+++ b/source/ap/vim/patches/7.3.581
@@ -0,0 +1,117 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.581
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.581
+Problem: Problems compiling with Python.
+Solution: Pick UCS2 or UCS4 function at runtime. (lilydjwg)
+Files: src/if_python.c
+
+
+*** ../vim-7.3.580/src/if_python.c 2012-06-29 16:28:23.000000000 +0200
+--- src/if_python.c 2012-06-29 19:10:53.000000000 +0200
+***************
+*** 196,202 ****
+ # define PyString_Size dll_PyString_Size
+ # define PyString_Type (*dll_PyString_Type)
+ # define PyUnicode_Type (*dll_PyUnicode_Type)
+! # define PyUnicodeUCS4_AsEncodedString (*dll_PyUnicodeUCS4_AsEncodedString)
+ # define PyFloat_AsDouble dll_PyFloat_AsDouble
+ # define PyFloat_FromDouble dll_PyFloat_FromDouble
+ # define PyFloat_Type (*dll_PyFloat_Type)
+--- 196,203 ----
+ # define PyString_Size dll_PyString_Size
+ # define PyString_Type (*dll_PyString_Type)
+ # define PyUnicode_Type (*dll_PyUnicode_Type)
+! # undef PyUnicode_AsEncodedString
+! # define PyUnicode_AsEncodedString py_PyUnicode_AsEncodedString
+ # define PyFloat_AsDouble dll_PyFloat_AsDouble
+ # define PyFloat_FromDouble dll_PyFloat_FromDouble
+ # define PyFloat_Type (*dll_PyFloat_Type)
+***************
+*** 290,296 ****
+ static PyInt(*dll_PyString_Size)(PyObject *);
+ static PyTypeObject* dll_PyString_Type;
+ static PyTypeObject* dll_PyUnicode_Type;
+! static PyObject *(*PyUnicodeUCS4_AsEncodedString)(PyObject *, char *, char *);
+ static double(*dll_PyFloat_AsDouble)(PyObject *);
+ static PyObject*(*dll_PyFloat_FromDouble)(double);
+ static PyTypeObject* dll_PyFloat_Type;
+--- 291,297 ----
+ static PyInt(*dll_PyString_Size)(PyObject *);
+ static PyTypeObject* dll_PyString_Type;
+ static PyTypeObject* dll_PyUnicode_Type;
+! static PyObject *(*py_PyUnicode_AsEncodedString)(PyObject *, char *, char *);
+ static double(*dll_PyFloat_AsDouble)(PyObject *);
+ static PyObject*(*dll_PyFloat_FromDouble)(double);
+ static PyTypeObject* dll_PyFloat_Type;
+***************
+*** 406,412 ****
+ {"PyString_Size", (PYTHON_PROC*)&dll_PyString_Size},
+ {"PyString_Type", (PYTHON_PROC*)&dll_PyString_Type},
+ {"PyUnicode_Type", (PYTHON_PROC*)&dll_PyUnicode_Type},
+- {"PyUnicodeUCS4_AsEncodedString", (PYTHON_PROC*)&dll_PyUnicodeUCS4_AsEncodedString},
+ {"PyFloat_Type", (PYTHON_PROC*)&dll_PyFloat_Type},
+ {"PyFloat_AsDouble", (PYTHON_PROC*)&dll_PyFloat_AsDouble},
+ {"PyFloat_FromDouble", (PYTHON_PROC*)&dll_PyFloat_FromDouble},
+--- 407,412 ----
+***************
+*** 471,476 ****
+--- 471,477 ----
+ python_runtime_link_init(char *libname, int verbose)
+ {
+ int i;
++ void *ucs_as_encoded_string;
+
+ #if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON3)
+ /* Can't have Python and Python3 loaded at the same time.
+***************
+*** 506,511 ****
+--- 507,531 ----
+ return FAIL;
+ }
+ }
++
++ /* Load unicode functions separately as only the ucs2 or the ucs4 functions
++ * will be present in the library. */
++ ucs_as_encoded_string = symbol_from_dll(hinstPython,
++ "PyUnicodeUCS2_AsEncodedString");
++ if (ucs_as_encoded_string == NULL)
++ ucs_as_encoded_string = symbol_from_dll(hinstPython,
++ "PyUnicodeUCS4_AsEncodedString");
++ if (ucs_as_encoded_string != NULL)
++ py_PyUnicode_AsEncodedString = ucs_as_encoded_string;
++ else
++ {
++ close_dll(hinstPython);
++ hinstPython = 0;
++ if (verbose)
++ EMSG2(_(e_loadfunc), "PyUnicode_UCSX_*");
++ return FAIL;
++ }
++
+ return OK;
+ }
+
+*** ../vim-7.3.580/src/version.c 2012-06-29 17:51:58.000000000 +0200
+--- src/version.c 2012-06-29 19:13:47.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 581,
+ /**/
+
+--
+ASCII stupid question, get a stupid ANSI.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.582 b/source/ap/vim/patches/7.3.582
new file mode 100644
index 000000000..4e118a7df
--- /dev/null
+++ b/source/ap/vim/patches/7.3.582
@@ -0,0 +1,61 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.582
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.582 (after 7.3.576)
+Problem: Missing parts of the test OK file.
+Solution: Add the missing parts.
+Files: src/testdir/test68.ok
+
+
+*** ../vim-7.3.581/src/testdir/test68.ok 2012-06-13 17:28:51.000000000 +0200
+--- src/testdir/test68.ok 2012-06-29 15:00:13.000000000 +0200
+***************
+*** 35,40 ****
+--- 35,48 ----
+
+
+ {
++ 1 a
++ b
++ # 1 a
++ # b
++ }
++
++
++ {
+ # 1 a
+ # b
+ }
+***************
+*** 48,50 ****
+--- 56,62 ----
+
+ { 1aa ^^2bb }
+
++
++ # 1 xxxxx
++ # foobar
++
+*** ../vim-7.3.581/src/version.c 2012-06-29 19:14:48.000000000 +0200
+--- src/version.c 2012-06-29 23:57:43.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 582,
+ /**/
+
+--
+If your nose runs, and your feet smell, you might be upside down.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.583 b/source/ap/vim/patches/7.3.583
new file mode 100644
index 000000000..2ea7f9d26
--- /dev/null
+++ b/source/ap/vim/patches/7.3.583
@@ -0,0 +1,79 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.583
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.583
+Problem: PyObject_NextNotImplemented is not defined before Python 2.7.
+ (Danek Duvall)
+Solution: Add #ifdefs.
+Files: src/if_python.c
+
+
+*** ../vim-7.3.582/src/if_python.c 2012-06-29 19:14:48.000000000 +0200
+--- src/if_python.c 2012-06-30 12:59:38.000000000 +0200
+***************
+*** 214,220 ****
+ # define Py_Finalize dll_Py_Finalize
+ # define Py_IsInitialized dll_Py_IsInitialized
+ # define _PyObject_New dll__PyObject_New
+! # define _PyObject_NextNotImplemented (*dll__PyObject_NextNotImplemented)
+ # define _Py_NoneStruct (*dll__Py_NoneStruct)
+ # define PyObject_Init dll__PyObject_Init
+ # define PyObject_GetIter dll_PyObject_GetIter
+--- 214,222 ----
+ # define Py_Finalize dll_Py_Finalize
+ # define Py_IsInitialized dll_Py_IsInitialized
+ # define _PyObject_New dll__PyObject_New
+! # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000
+! # define _PyObject_NextNotImplemented (*dll__PyObject_NextNotImplemented)
+! # endif
+ # define _Py_NoneStruct (*dll__Py_NoneStruct)
+ # define PyObject_Init dll__PyObject_Init
+ # define PyObject_GetIter dll_PyObject_GetIter
+***************
+*** 310,316 ****
+--- 312,320 ----
+ static PyObject*(*dll__PyObject_New)(PyTypeObject *, PyObject *);
+ static PyObject*(*dll__PyObject_Init)(PyObject *, PyTypeObject *);
+ static PyObject* (*dll_PyObject_GetIter)(PyObject *);
++ # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000
+ static iternextfunc dll__PyObject_NextNotImplemented;
++ # endif
+ static PyObject* dll__Py_NoneStruct;
+ # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000
+ static int (*dll_PyType_IsSubtype)(PyTypeObject *, PyTypeObject *);
+***************
+*** 430,436 ****
+--- 434,442 ----
+ {"_PyObject_New", (PYTHON_PROC*)&dll__PyObject_New},
+ {"PyObject_Init", (PYTHON_PROC*)&dll__PyObject_Init},
+ {"PyObject_GetIter", (PYTHON_PROC*)&dll_PyObject_GetIter},
++ # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000
+ {"_PyObject_NextNotImplemented", (PYTHON_PROC*)&dll__PyObject_NextNotImplemented},
++ # endif
+ {"_Py_NoneStruct", (PYTHON_PROC*)&dll__Py_NoneStruct},
+ # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000
+ {"PyType_IsSubtype", (PYTHON_PROC*)&dll_PyType_IsSubtype},
+*** ../vim-7.3.582/src/version.c 2012-06-29 23:57:50.000000000 +0200
+--- src/version.c 2012-06-30 13:20:46.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 583,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+90. Instead of calling you to dinner, your spouse sends e-mail.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.584 b/source/ap/vim/patches/7.3.584
new file mode 100644
index 000000000..d7f1bdeb4
--- /dev/null
+++ b/source/ap/vim/patches/7.3.584
@@ -0,0 +1,134 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.584
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.584
+Problem: PyCObject is not always defined.
+Solution: Use PyObject instead.
+Files: src/if_py_both.h, src/if_python.c
+
+
+*** ../vim-7.3.583/src/if_py_both.h 2012-06-29 17:51:58.000000000 +0200
+--- src/if_py_both.h 2012-06-30 13:25:24.000000000 +0200
+***************
+*** 2432,2463 ****
+ convert_dl(PyObject *obj, typval_T *tv,
+ pytotvfunc py_to_tv, PyObject *lookupDict)
+ {
+- # ifdef PY_USE_CAPSULE
+ PyObject *capsule;
+- # else
+- PyCObject *cobject;
+- # endif
+ char hexBuf[sizeof(void *) * 2 + 3];
+
+ sprintf(hexBuf, "%p", obj);
+
+ # ifdef PY_USE_CAPSULE
+ capsule = PyDict_GetItemString(lookupDict, hexBuf);
+- if (capsule == NULL)
+ # else
+! cobject = (PyCObject *)PyDict_GetItemString(lookupDict, hexBuf);
+! if (cobject == NULL)
+ # endif
+ {
+ # ifdef PY_USE_CAPSULE
+ capsule = PyCapsule_New(tv, NULL, NULL);
+- PyDict_SetItemString(lookupDict, hexBuf, capsule);
+- Py_DECREF(capsule);
+ # else
+! cobject = PyCObject_FromVoidPtr(tv, NULL);
+! PyDict_SetItemString(lookupDict, hexBuf, cobject);
+! Py_DECREF(cobject);
+ # endif
+ if (py_to_tv(obj, tv, lookupDict) == -1)
+ {
+ tv->v_type = VAR_UNKNOWN;
+--- 2432,2456 ----
+ convert_dl(PyObject *obj, typval_T *tv,
+ pytotvfunc py_to_tv, PyObject *lookupDict)
+ {
+ PyObject *capsule;
+ char hexBuf[sizeof(void *) * 2 + 3];
+
+ sprintf(hexBuf, "%p", obj);
+
+ # ifdef PY_USE_CAPSULE
+ capsule = PyDict_GetItemString(lookupDict, hexBuf);
+ # else
+! capsule = (PyObject *)PyDict_GetItemString(lookupDict, hexBuf);
+ # endif
++ if (capsule == NULL)
+ {
+ # ifdef PY_USE_CAPSULE
+ capsule = PyCapsule_New(tv, NULL, NULL);
+ # else
+! capsule = PyCObject_FromVoidPtr(tv, NULL);
+ # endif
++ PyDict_SetItemString(lookupDict, hexBuf, capsule);
++ Py_DECREF(capsule);
+ if (py_to_tv(obj, tv, lookupDict) == -1)
+ {
+ tv->v_type = VAR_UNKNOWN;
+***************
+*** 2478,2484 ****
+ # ifdef PY_USE_CAPSULE
+ v = PyCapsule_GetPointer(capsule, NULL);
+ # else
+! v = PyCObject_AsVoidPtr(cobject);
+ # endif
+ copy_tv(v, tv);
+ }
+--- 2471,2477 ----
+ # ifdef PY_USE_CAPSULE
+ v = PyCapsule_GetPointer(capsule, NULL);
+ # else
+! v = PyCObject_AsVoidPtr(capsule);
+ # endif
+ copy_tv(v, tv);
+ }
+*** ../vim-7.3.583/src/if_python.c 2012-06-30 13:21:03.000000000 +0200
+--- src/if_python.c 2012-06-30 13:23:22.000000000 +0200
+***************
+*** 327,334 ****
+ static PyObject* (*dll_PyCapsule_New)(void *, char *, PyCapsule_Destructor);
+ static void* (*dll_PyCapsule_GetPointer)(PyObject *, char *);
+ # else
+! static PyCObject* (*dll_PyCObject_FromVoidPtr)(void *cobj, void (*destr)(void *));
+! static void* (*dll_PyCObject_AsVoidPtr)(PyCObject *);
+ # endif
+
+ static HINSTANCE hinstPython = 0; /* Instance of python.dll */
+--- 327,334 ----
+ static PyObject* (*dll_PyCapsule_New)(void *, char *, PyCapsule_Destructor);
+ static void* (*dll_PyCapsule_GetPointer)(PyObject *, char *);
+ # else
+! static PyObject* (*dll_PyCObject_FromVoidPtr)(void *cobj, void (*destr)(void *));
+! static void* (*dll_PyCObject_AsVoidPtr)(PyObject *);
+ # endif
+
+ static HINSTANCE hinstPython = 0; /* Instance of python.dll */
+*** ../vim-7.3.583/src/version.c 2012-06-30 13:21:03.000000000 +0200
+--- src/version.c 2012-06-30 13:33:08.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 584,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+91. It's Saturday afternoon in the middle of May and you
+ are on computer.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.585 b/source/ap/vim/patches/7.3.585
new file mode 100644
index 000000000..6509780c7
--- /dev/null
+++ b/source/ap/vim/patches/7.3.585
@@ -0,0 +1,56 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.585
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.585
+Problem: Calling changed_bytes() too often.
+Solution: Move changed_bytes() out of a loop. (Tor Perkins)
+Files: src/edit.c
+
+
+*** ../vim-7.3.584/src/edit.c 2012-06-29 15:04:34.000000000 +0200
+--- src/edit.c 2012-07-06 13:29:25.000000000 +0200
+***************
+*** 6350,6359 ****
+ * add the additional whitespace needed after the
+ * comment leader for the numbered list. */
+ for (i = 0; i < padding; i++)
+- {
+ ins_str((char_u *)" ");
+! changed_bytes(curwin->w_cursor.lnum, leader_len);
+! }
+ }
+ else
+ {
+--- 6350,6357 ----
+ * add the additional whitespace needed after the
+ * comment leader for the numbered list. */
+ for (i = 0; i < padding; i++)
+ ins_str((char_u *)" ");
+! changed_bytes(curwin->w_cursor.lnum, leader_len);
+ }
+ else
+ {
+*** ../vim-7.3.584/src/version.c 2012-07-06 13:36:02.000000000 +0200
+--- src/version.c 2012-07-06 13:35:03.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 585,
+ /**/
+
+--
+From "know your smileys":
+ :'-D Laughing so much that they're crying
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.586 b/source/ap/vim/patches/7.3.586
new file mode 100644
index 000000000..889ebd137
--- /dev/null
+++ b/source/ap/vim/patches/7.3.586
@@ -0,0 +1,103 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.586
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.586
+Problem: When compiling with Cygwin or MingW MEMORYSTATUSEX is not defined.
+Solution: Set the default for WINVER to 0x0500.
+Files: src/Make_ming.mak, src/Make_cyg.mak
+
+
+*** ../vim-7.3.585/src/Make_ming.mak 2012-04-20 16:13:21.000000000 +0200
+--- src/Make_ming.mak 2012-06-30 21:23:55.000000000 +0200
+***************
+*** 52,58 ****
+ OLE=no
+ # Set the default $(WINVER) to make it work with pre-Win2k
+ ifndef WINVER
+! WINVER = 0x0400
+ endif
+ # Set to yes to enable Cscope support
+ CSCOPE=yes
+--- 52,58 ----
+ OLE=no
+ # Set the default $(WINVER) to make it work with pre-Win2k
+ ifndef WINVER
+! WINVER = 0x0500
+ endif
+ # Set to yes to enable Cscope support
+ CSCOPE=yes
+*** ../vim-7.3.585/src/Make_cyg.mak 2011-09-30 16:56:00.000000000 +0200
+--- src/Make_cyg.mak 2012-06-30 21:23:42.000000000 +0200
+***************
+*** 1,6 ****
+ #
+ # Makefile for VIM on Win32, using Cygnus gcc
+! # Last updated by Dan Sharp. Last Change: 2010 Nov 03
+ #
+ # Also read INSTALLpc.txt!
+ #
+--- 1,6 ----
+ #
+ # Makefile for VIM on Win32, using Cygnus gcc
+! # Last updated by Dan Sharp. Last Change: 2012 Jun 30
+ #
+ # Also read INSTALLpc.txt!
+ #
+***************
+*** 48,54 ****
+ # -L/lib/w32api to EXTRA_LIBS.
+ # POSTSCRIPT no or yes: set to yes for PostScript printing (no)
+ # FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG)
+! # WINVER Lowest Win32 version to support. (0x0400)
+ # CSCOPE no or yes: to include cscope interface support (yes)
+ # OPTIMIZE SPACE, SPEED, or MAXSPEED: set optimization level (MAXSPEED)
+ # NETBEANS no or yes: to include netbeans interface support (yes when GUI
+--- 48,54 ----
+ # -L/lib/w32api to EXTRA_LIBS.
+ # POSTSCRIPT no or yes: set to yes for PostScript printing (no)
+ # FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG)
+! # WINVER Lowest Win32 version to support. (0x0500)
+ # CSCOPE no or yes: to include cscope interface support (yes)
+ # OPTIMIZE SPACE, SPEED, or MAXSPEED: set optimization level (MAXSPEED)
+ # NETBEANS no or yes: to include netbeans interface support (yes when GUI
+***************
+*** 85,91 ****
+ endif
+
+ ifndef WINVER
+! WINVER = 0x0400
+ endif
+
+ ifndef CSCOPE
+--- 85,91 ----
+ endif
+
+ ifndef WINVER
+! WINVER = 0x0500
+ endif
+
+ ifndef CSCOPE
+*** ../vim-7.3.585/src/version.c 2012-07-06 13:36:36.000000000 +0200
+--- src/version.c 2012-07-06 13:39:41.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 586,
+ /**/
+
+--
+From "know your smileys":
+ :-& Eating spaghetti
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.587 b/source/ap/vim/patches/7.3.587
new file mode 100644
index 000000000..22252318b
--- /dev/null
+++ b/source/ap/vim/patches/7.3.587
@@ -0,0 +1,84 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.587
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.587
+Problem: Compiler warning for local var shadowing global var.
+Solution: Rename the var and move it to an inner block. (Christian Brabandt)
+Files: src/buffer.c
+
+
+*** ../vim-7.3.586/src/buffer.c 2012-06-20 17:54:34.000000000 +0200
+--- src/buffer.c 2012-07-06 16:19:32.000000000 +0200
+***************
+*** 1363,1371 ****
+ int action;
+ {
+ buf_T *prevbuf;
+- #ifdef FEAT_WINDOWS
+- win_T *prevwin;
+- #endif
+ int unload = (action == DOBUF_UNLOAD || action == DOBUF_DEL
+ || action == DOBUF_WIPE);
+
+--- 1363,1368 ----
+***************
+*** 1406,1412 ****
+ #endif
+ {
+ #ifdef FEAT_WINDOWS
+! prevwin = curwin;
+ #endif
+ if (prevbuf == curbuf)
+ u_sync(FALSE);
+--- 1403,1409 ----
+ #endif
+ {
+ #ifdef FEAT_WINDOWS
+! win_T *previouswin = curwin;
+ #endif
+ if (prevbuf == curbuf)
+ u_sync(FALSE);
+***************
+*** 1415,1423 ****
+ && !P_HID(prevbuf)
+ && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE);
+ #ifdef FEAT_WINDOWS
+! if (curwin != prevwin && win_valid(prevwin))
+ /* autocommands changed curwin, Grr! */
+! curwin = prevwin;
+ #endif
+ }
+ }
+--- 1412,1420 ----
+ && !P_HID(prevbuf)
+ && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE);
+ #ifdef FEAT_WINDOWS
+! if (curwin != previouswin && win_valid(previouswin))
+ /* autocommands changed curwin, Grr! */
+! curwin = previouswin;
+ #endif
+ }
+ }
+*** ../vim-7.3.586/src/version.c 2012-07-06 13:40:44.000000000 +0200
+--- src/version.c 2012-07-06 16:19:08.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 587,
+ /**/
+
+--
+There's no place like $(HOME)!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.588 b/source/ap/vim/patches/7.3.588
new file mode 100644
index 000000000..6dfabd073
--- /dev/null
+++ b/source/ap/vim/patches/7.3.588
@@ -0,0 +1,85 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.588
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.588
+Problem: Crash on NULL pointer.
+Solution: Fix the immediate problem by checking for NULL. (Lech Lorens)
+Files: src/window.c
+
+
+*** ../vim-7.3.587/src/window.c 2012-06-13 18:15:13.000000000 +0200
+--- src/window.c 2012-07-06 16:32:59.000000000 +0200
+***************
+*** 2184,2190 ****
+ }
+
+ #ifdef FEAT_AUTOCMD
+! if (win->w_closing || win->w_buffer->b_closing)
+ return; /* window is already being closed */
+ if (win == aucmd_win)
+ {
+--- 2184,2190 ----
+ }
+
+ #ifdef FEAT_AUTOCMD
+! if (win->w_closing || (win->w_buffer != NULL && win->w_buffer->b_closing))
+ return; /* window is already being closed */
+ if (win == aucmd_win)
+ {
+***************
+*** 3723,3729 ****
+ enter_tabpage(tp, old_curbuf, trigger_autocmds)
+ tabpage_T *tp;
+ buf_T *old_curbuf UNUSED;
+! int trigger_autocmds UNUSED;
+ {
+ int old_off = tp->tp_firstwin->w_winrow;
+ win_T *next_prevwin = tp->tp_prevwin;
+--- 3723,3729 ----
+ enter_tabpage(tp, old_curbuf, trigger_autocmds)
+ tabpage_T *tp;
+ buf_T *old_curbuf UNUSED;
+! int trigger_autocmds UNUSED;
+ {
+ int old_off = tp->tp_firstwin->w_winrow;
+ win_T *next_prevwin = tp->tp_prevwin;
+***************
+*** 3868,3874 ****
+ void
+ goto_tabpage_tp(tp, trigger_autocmds)
+ tabpage_T *tp;
+! int trigger_autocmds;
+ {
+ /* Don't repeat a message in another tab page. */
+ set_keep_msg(NULL, 0);
+--- 3868,3874 ----
+ void
+ goto_tabpage_tp(tp, trigger_autocmds)
+ tabpage_T *tp;
+! int trigger_autocmds;
+ {
+ /* Don't repeat a message in another tab page. */
+ set_keep_msg(NULL, 0);
+*** ../vim-7.3.587/src/version.c 2012-07-06 16:21:58.000000000 +0200
+--- src/version.c 2012-07-06 16:37:47.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 588,
+ /**/
+
+--
+Momento mori, ergo carpe diem
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.589 b/source/ap/vim/patches/7.3.589
new file mode 100644
index 000000000..fdda2b95f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.589
@@ -0,0 +1,69 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.589
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.589
+Problem: Crash when $HOME is not set.
+Solution: Check for a NULL pointer. (Chris Webb)
+Files: src/misc1.c
+
+
+*** ../vim-7.3.588/src/misc1.c 2012-06-29 15:04:34.000000000 +0200
+--- src/misc1.c 2012-07-06 16:44:39.000000000 +0200
+***************
+*** 4496,4503 ****
+ #else
+ homedir_env_orig = homedir_env = mch_getenv((char_u *)"HOME");
+ #endif
+ #if defined(FEAT_MODIFY_FNAME) || defined(WIN3264)
+! if (vim_strchr(homedir_env, '~') != NULL)
+ {
+ int usedlen = 0;
+ int flen;
+--- 4496,4507 ----
+ #else
+ homedir_env_orig = homedir_env = mch_getenv((char_u *)"HOME");
+ #endif
++ /* Empty is the same as not set. */
++ if (homedir_env != NULL && *homedir_env == NUL)
++ homedir_env = NULL;
++
+ #if defined(FEAT_MODIFY_FNAME) || defined(WIN3264)
+! if (homedir_env != NULL && vim_strchr(homedir_env, '~') != NULL)
+ {
+ int usedlen = 0;
+ int flen;
+***************
+*** 4513,4520 ****
+ }
+ #endif
+
+- if (homedir_env != NULL && *homedir_env == NUL)
+- homedir_env = NULL;
+ if (homedir_env != NULL)
+ envlen = STRLEN(homedir_env);
+
+--- 4517,4522 ----
+*** ../vim-7.3.588/src/version.c 2012-07-06 16:39:43.000000000 +0200
+--- src/version.c 2012-07-06 16:45:18.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 589,
+ /**/
+
+--
+I AM THANKFUL...
+...for the taxes that I pay because it means that I am employed.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.590 b/source/ap/vim/patches/7.3.590
new file mode 100644
index 000000000..4e524f79b
--- /dev/null
+++ b/source/ap/vim/patches/7.3.590
@@ -0,0 +1,61 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.590
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.590
+Problem: The '< and '> marks cannot be set directly.
+Solution: Allow setting '< and '>. (Christian Brabandt)
+Files: src/mark.c
+
+
+*** ../vim-7.3.589/src/mark.c 2011-02-25 15:11:17.000000000 +0100
+--- src/mark.c 2012-07-06 17:47:23.000000000 +0200
+***************
+*** 98,103 ****
+--- 98,116 ----
+ return OK;
+ }
+
++ #ifdef FEAT_VISUAL
++ if (c == '<')
++ {
++ curbuf->b_visual.vi_start = *pos;
++ return OK;
++ }
++ if (c == '>')
++ {
++ curbuf->b_visual.vi_end = *pos;
++ return OK;
++ }
++ #endif
++
+ #ifndef EBCDIC
+ if (c > 'z') /* some islower() and isupper() cannot handle
+ characters above 127 */
+*** ../vim-7.3.589/src/version.c 2012-07-06 16:49:37.000000000 +0200
+--- src/version.c 2012-07-06 17:49:00.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 590,
+ /**/
+
+--
+The primary purpose of the DATA statement is to give names to constants;
+instead of referring to pi as 3.141592653589793 at every appearance, the
+variable PI can be given that value with a DATA statement and used instead
+of the longer form of the constant. This also simplifies modifying the
+program, should the value of pi change.
+ -- FORTRAN manual for Xerox Computers
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.591 b/source/ap/vim/patches/7.3.591
new file mode 100644
index 000000000..180fe6080
--- /dev/null
+++ b/source/ap/vim/patches/7.3.591
@@ -0,0 +1,208 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.591
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.591
+Problem: Can only move to a tab by absolute number.
+Solution: Move a number of tabs to the left or the right. (Lech Lorens)
+Files: runtime/doc/tabpage.txt, src/ex_cmds.h, src/ex_docmd.c,
+ src/testdir/test62.in, src/testdir/test62.ok, src/window.c
+
+
+*** ../vim-7.3.590/runtime/doc/tabpage.txt 2010-08-15 21:57:17.000000000 +0200
+--- runtime/doc/tabpage.txt 2012-07-06 18:10:06.000000000 +0200
+***************
+*** 173,182 ****
+--- 173,192 ----
+ REORDERING TAB PAGES:
+
+ :tabm[ove] [N] *:tabm* *:tabmove*
++ :[N]tabm[ove]
+ Move the current tab page to after tab page N. Use zero to
+ make the current tab page the first one. Without N the tab
+ page is made the last one.
+
++ :tabm[ove] +[N]
++ :tabm[ove] -[N]
++ Move the current tab page N places to the right (with +) or to
++ the left (with -).
++
++ Note that although it is possible to move a tab behind the N-th one by using
++ :Ntabmove, it is impossible to move it by N places by using :+Ntabmove. For
++ clarification what +N means in this context see |[range]|.
++
+
+ LOOPING OVER TAB PAGES:
+
+*** ../vim-7.3.590/src/ex_cmds.h 2012-05-18 18:47:11.000000000 +0200
+--- src/ex_cmds.h 2012-07-06 18:10:13.000000000 +0200
+***************
+*** 944,950 ****
+ EX(CMD_tabfirst, "tabfirst", ex_tabnext,
+ TRLBAR),
+ EX(CMD_tabmove, "tabmove", ex_tabmove,
+! RANGE|NOTADR|ZEROR|COUNT|TRLBAR|ZEROR),
+ EX(CMD_tablast, "tablast", ex_tabnext,
+ TRLBAR),
+ EX(CMD_tabnext, "tabnext", ex_tabnext,
+--- 944,950 ----
+ EX(CMD_tabfirst, "tabfirst", ex_tabnext,
+ TRLBAR),
+ EX(CMD_tabmove, "tabmove", ex_tabmove,
+! RANGE|NOTADR|ZEROR|EXTRA|NOSPC|TRLBAR),
+ EX(CMD_tablast, "tablast", ex_tabnext,
+ TRLBAR),
+ EX(CMD_tabnext, "tabnext", ex_tabnext,
+*** ../vim-7.3.590/src/ex_docmd.c 2012-06-06 19:02:40.000000000 +0200
+--- src/ex_docmd.c 2012-07-06 18:16:25.000000000 +0200
+***************
+*** 7478,7484 ****
+ ex_tabmove(eap)
+ exarg_T *eap;
+ {
+! tabpage_move(eap->addr_count == 0 ? 9999 : (int)eap->line2);
+ }
+
+ /*
+--- 7478,7519 ----
+ ex_tabmove(eap)
+ exarg_T *eap;
+ {
+! int tab_number = 9999;
+!
+! if (eap->arg && *eap->arg != NUL)
+! {
+! char_u *p = eap->arg;
+! int relative = 0; /* argument +N/-N means: move N places to the
+! * right/left relative to the current position. */
+!
+! if (*eap->arg == '-')
+! {
+! relative = -1;
+! p = eap->arg + 1;
+! }
+! else if (*eap->arg == '+')
+! {
+! relative = 1;
+! p = eap->arg + 1;
+! }
+! else
+! p = eap->arg;
+!
+! if (p == skipdigits(p))
+! {
+! /* No numbers as argument. */
+! eap->errmsg = e_invarg;
+! return;
+! }
+!
+! tab_number = getdigits(&p);
+! if (relative != 0)
+! tab_number = tab_number * relative + tabpage_index(curtab) - 1;;
+! }
+! else if (eap->addr_count != 0)
+! tab_number = eap->line2;
+!
+! tabpage_move(tab_number);
+ }
+
+ /*
+*** ../vim-7.3.590/src/testdir/test62.in 2012-03-07 22:55:17.000000000 +0100
+--- src/testdir/test62.in 2012-07-06 18:10:13.000000000 +0200
+***************
+*** 93,98 ****
+--- 93,126 ----
+ :endif
+ :"
+ :"
++ :for i in range(9) | tabnew | endfor
++ 1gt
++ Go=tabpagenr() 
++ :tabmove 5
++ i=tabpagenr() 
++ :tabmove -2
++ i=tabpagenr() 
++ :tabmove +4
++ i=tabpagenr() 
++ :tabmove
++ i=tabpagenr() 
++ :tabmove -20
++ i=tabpagenr() 
++ :tabmove +20
++ i=tabpagenr() 
++ :3tabmove
++ i=tabpagenr() 
++ :7tabmove 5
++ i=tabpagenr() 
++ :let a='No error caught.'
++ :try
++ :tabmove foo
++ :catch E474
++ :let a='E474 caught.'
++ :endtry
++ i=a 
++ :"
++ :"
+ :/^Results/,$w! test.out
+ :qa!
+ ENDTEST
+*** ../vim-7.3.590/src/testdir/test62.ok 2012-02-22 19:13:00.000000000 +0100
+--- src/testdir/test62.ok 2012-07-06 18:10:13.000000000 +0200
+***************
+*** 8,10 ****
+--- 8,20 ----
+ tab drop 1: pass
+ tab drop 2: pass
+ tab drop 3: pass
++ 1
++ 6
++ 4
++ 8
++ 10
++ 1
++ 10
++ 4
++ 6
++ E474 caught.
+*** ../vim-7.3.590/src/window.c 2012-07-06 16:39:43.000000000 +0200
+--- src/window.c 2012-07-06 18:10:13.000000000 +0200
+***************
+*** 3929,3935 ****
+ }
+
+ /* Re-insert it at the specified position. */
+! if (n == 0)
+ {
+ curtab->tp_next = first_tabpage;
+ first_tabpage = curtab;
+--- 3929,3935 ----
+ }
+
+ /* Re-insert it at the specified position. */
+! if (n <= 0)
+ {
+ curtab->tp_next = first_tabpage;
+ first_tabpage = curtab;
+*** ../vim-7.3.590/src/version.c 2012-07-06 17:51:24.000000000 +0200
+--- src/version.c 2012-07-06 18:11:08.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 591,
+ /**/
+
+--
+Bare feet magnetize sharp metal objects so they point upward from the
+floor -- especially in the dark.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.592 b/source/ap/vim/patches/7.3.592
new file mode 100644
index 000000000..be13ef744
--- /dev/null
+++ b/source/ap/vim/patches/7.3.592
@@ -0,0 +1,126 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.592
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.592
+Problem: Vim on GTK does not support g:browsefilter.
+Solution: Add a GtkFileFilter to the file chooser. (Christian Brabandt)
+Files: src/gui_gtk.c
+
+
+*** ../vim-7.3.591/src/gui_gtk.c 2012-06-06 16:14:36.000000000 +0200
+--- src/gui_gtk.c 2012-07-10 13:08:06.000000000 +0200
+***************
+*** 840,846 ****
+ char_u *dflt,
+ char_u *ext UNUSED,
+ char_u *initdir,
+! char_u *filter UNUSED)
+ {
+ #ifdef USE_FILE_CHOOSER
+ GtkWidget *fc;
+--- 840,846 ----
+ char_u *dflt,
+ char_u *ext UNUSED,
+ char_u *initdir,
+! char_u *filter)
+ {
+ #ifdef USE_FILE_CHOOSER
+ GtkWidget *fc;
+***************
+*** 848,853 ****
+--- 848,854 ----
+ char_u dirbuf[MAXPATHL];
+ guint log_handler;
+ const gchar *domain = "Gtk";
++ GtkFileFilter *gfilter;
+
+ title = CONVERT_TO_UTF8(title);
+
+***************
+*** 879,884 ****
+--- 880,924 ----
+ NULL);
+ gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(fc),
+ (const gchar *)dirbuf);
++
++ if (filter != NULL && *filter != NUL)
++ {
++ int i = 0;
++ char_u *patt;
++ char_u *p = filter;
++
++ gfilter = gtk_file_filter_new();
++ patt = alloc(STRLEN(filter));
++ while (p != NULL && *p != NUL)
++ {
++ if (*p == '\n' || *p == ';' || *p == '\t')
++ {
++ STRNCPY(patt, filter, i);
++ patt[i] = '\0';
++ if (*p == '\t')
++ gtk_file_filter_set_name(gfilter, (gchar *)patt);
++ else
++ {
++ gtk_file_filter_add_pattern(gfilter, (gchar *)patt);
++ if (*p == '\n')
++ {
++ gtk_file_chooser_add_filter((GtkFileChooser *)fc,
++ gfilter);
++ if (*(p + 1) != NUL)
++ gfilter = gtk_file_filter_new();
++ }
++ }
++ filter = ++p;
++ i = 0;
++ }
++ else
++ {
++ p++;
++ i++;
++ }
++ }
++ vim_free(patt);
++ }
+ if (saving && dflt != NULL && *dflt != NUL)
+ gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(fc), (char *)dflt);
+
+***************
+*** 1304,1310 ****
+ gtk_widget_show(entry);
+
+ /* Make Enter work like pressing OK. */
+! gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
+
+ text = CONVERT_TO_UTF8(textfield);
+ gtk_entry_set_text(GTK_ENTRY(entry), (const char *)text);
+--- 1344,1350 ----
+ gtk_widget_show(entry);
+
+ /* Make Enter work like pressing OK. */
+! gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
+
+ text = CONVERT_TO_UTF8(textfield);
+ gtk_entry_set_text(GTK_ENTRY(entry), (const char *)text);
+*** ../vim-7.3.591/src/version.c 2012-07-06 18:27:34.000000000 +0200
+--- src/version.c 2012-07-10 13:00:29.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 592,
+ /**/
+
+--
+To be rich is not the end, but only a change of worries.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.593 b/source/ap/vim/patches/7.3.593
new file mode 100644
index 000000000..b8f26748f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.593
@@ -0,0 +1,81 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.593
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.593
+Problem: No easy way to decide if b:browsefilter will work.
+Solution: Add the browsefilter feature.
+Files: src/gui_gtk.c, src/eval.c, src/vim.h
+
+
+*** ../vim-7.3.592/src/gui_gtk.c 2012-07-10 13:12:46.000000000 +0200
+--- src/gui_gtk.c 2012-07-10 13:40:38.000000000 +0200
+***************
+*** 779,787 ****
+ /*
+ * Implementation of the file selector related stuff
+ */
+- #if GTK_CHECK_VERSION(2,4,0)
+- # define USE_FILE_CHOOSER
+- #endif
+
+ #ifndef USE_FILE_CHOOSER
+ static void
+--- 779,784 ----
+*** ../vim-7.3.592/src/eval.c 2012-06-29 12:54:32.000000000 +0200
+--- src/eval.c 2012-07-10 13:34:10.000000000 +0200
+***************
+*** 12044,12049 ****
+--- 12044,12054 ----
+ "all_builtin_terms",
+ # endif
+ #endif
++ #if defined(FEAT_BROWSE) && (defined(USE_FILE_CHOOSER) \
++ || defined(FEAT_GUI_W32) \
++ || defined(FEAT_GUI_MOTIF))
++ "browsefilter",
++ #endif
+ #ifdef FEAT_BYTEOFF
+ "byte_offset",
+ #endif
+*** ../vim-7.3.592/src/vim.h 2012-06-13 17:28:51.000000000 +0200
+--- src/vim.h 2012-07-10 13:30:44.000000000 +0200
+***************
+*** 2125,2130 ****
+--- 2125,2136 ----
+ # endif
+ #endif
+
++ #if defined(FEAT_BROWSE) && defined(GTK_CHECK_VERSION)
++ # if GTK_CHECK_VERSION(2,4,0)
++ # define USE_FILE_CHOOSER
++ # endif
++ #endif
++
+ #ifndef FEAT_NETBEANS_INTG
+ # undef NBDEBUG
+ #endif
+*** ../vim-7.3.592/src/version.c 2012-07-10 13:12:46.000000000 +0200
+--- src/version.c 2012-07-10 13:34:50.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 593,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+102. When filling out your driver's license application, you give
+ your IP address.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.594 b/source/ap/vim/patches/7.3.594
new file mode 100644
index 000000000..3f7d3b261
--- /dev/null
+++ b/source/ap/vim/patches/7.3.594
@@ -0,0 +1,171 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.594
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.594
+Problem: The X command server doesn't work perfectly. It sends an empty
+ reply for as-keys requests.
+Solution: Remove duplicate ga_init2(). Do not send a reply for as-keys
+ requests. (Brian Burns)
+Files: src/if_xcmdsrv.c
+
+
+*** ../vim-7.3.593/src/if_xcmdsrv.c 2010-08-15 21:57:27.000000000 +0200
+--- src/if_xcmdsrv.c 2012-07-10 14:15:59.000000000 +0200
+***************
+*** 655,661 ****
+ if (SendInit(dpy) < 0)
+ return NULL;
+ }
+- ga_init2(&ga, 1, 100);
+
+ /*
+ * Read the registry property.
+--- 655,660 ----
+***************
+*** 1198,1206 ****
+ if ((*p == 'c' || *p == 'k') && (p[1] == 0))
+ {
+ Window resWindow;
+! char_u *name, *script, *serial, *end, *res;
+ Bool asKeys = *p == 'k';
+- garray_T reply;
+ char_u *enc;
+
+ /*
+--- 1197,1204 ----
+ if ((*p == 'c' || *p == 'k') && (p[1] == 0))
+ {
+ Window resWindow;
+! char_u *name, *script, *serial, *end;
+ Bool asKeys = *p == 'k';
+ char_u *enc;
+
+ /*
+***************
+*** 1256,1305 ****
+ if (script == NULL || name == NULL)
+ continue;
+
+! /*
+! * Initialize the result property, so that we're ready at any
+! * time if we need to return an error.
+! */
+! if (resWindow != None)
+! {
+! ga_init2(&reply, 1, 100);
+ #ifdef FEAT_MBYTE
+! ga_grow(&reply, 50 + STRLEN(p_enc));
+! sprintf(reply.ga_data, "%cr%c-E %s%c-s %s%c-r ",
+ 0, 0, p_enc, 0, serial, 0);
+! reply.ga_len = 14 + STRLEN(p_enc) + STRLEN(serial);
+ #else
+! ga_grow(&reply, 50);
+! sprintf(reply.ga_data, "%cr%c-s %s%c-r ", 0, 0, serial, 0);
+! reply.ga_len = 10 + STRLEN(serial);
+ #endif
+! }
+! res = NULL;
+! if (serverName != NULL && STRICMP(name, serverName) == 0)
+! {
+! script = serverConvert(enc, script, &tofree);
+! if (asKeys)
+! server_to_input_buf(script);
+! else
+! res = eval_client_expr_to_string(script);
+! vim_free(tofree);
+! }
+! if (resWindow != None)
+! {
+! if (res != NULL)
+! ga_concat(&reply, res);
+! else if (asKeys == 0)
+! {
+! ga_concat(&reply, (char_u *)_(e_invexprmsg));
+! ga_append(&reply, 0);
+! ga_concat(&reply, (char_u *)"-c 1");
+! }
+! ga_append(&reply, NUL);
+! (void)AppendPropCarefully(dpy, resWindow, commProperty,
+! reply.ga_data, reply.ga_len);
+! ga_clear(&reply);
+! }
+! vim_free(res);
+ }
+ else if (*p == 'r' && p[1] == 0)
+ {
+--- 1254,1305 ----
+ if (script == NULL || name == NULL)
+ continue;
+
+! if (serverName != NULL && STRICMP(name, serverName) == 0)
+! {
+! script = serverConvert(enc, script, &tofree);
+! if (asKeys)
+! server_to_input_buf(script);
+! else
+! {
+! char_u *res;
+!
+! res = eval_client_expr_to_string(script);
+! if (resWindow != None)
+! {
+! garray_T reply;
+!
+! /* Initialize the result property. */
+! ga_init2(&reply, 1, 100);
+ #ifdef FEAT_MBYTE
+! ga_grow(&reply, 50 + STRLEN(p_enc));
+! sprintf(reply.ga_data, "%cr%c-E %s%c-s %s%c-r ",
+ 0, 0, p_enc, 0, serial, 0);
+! reply.ga_len = 14 + STRLEN(p_enc) + STRLEN(serial);
+ #else
+! ga_grow(&reply, 50);
+! sprintf(reply.ga_data, "%cr%c-s %s%c-r ",
+! 0, 0, serial, 0);
+! reply.ga_len = 10 + STRLEN(serial);
+ #endif
+!
+! /* Evaluate the expression and return the result. */
+! if (res != NULL)
+! ga_concat(&reply, res);
+! else
+! {
+! ga_concat(&reply, (char_u *)_(e_invexprmsg));
+! ga_append(&reply, 0);
+! ga_concat(&reply, (char_u *)"-c 1");
+! }
+! ga_append(&reply, NUL);
+! (void)AppendPropCarefully(dpy, resWindow, commProperty,
+! reply.ga_data, reply.ga_len);
+! ga_clear(&reply);
+! }
+! vim_free(res);
+! }
+! vim_free(tofree);
+! }
+ }
+ else if (*p == 'r' && p[1] == 0)
+ {
+*** ../vim-7.3.593/src/version.c 2012-07-10 13:41:09.000000000 +0200
+--- src/version.c 2012-07-10 14:17:50.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 594,
+ /**/
+
+--
+A meeting is an event at which the minutes are kept and the hours are lost.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.595 b/source/ap/vim/patches/7.3.595
new file mode 100644
index 000000000..0fc9b522e
--- /dev/null
+++ b/source/ap/vim/patches/7.3.595
@@ -0,0 +1,154 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.595
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.595
+Problem: The X command server responds slowly
+Solution: Change the loop that waits for replies. (Brian Burns)
+Files: src/if_xcmdsrv.c
+
+
+*** ../vim-7.3.594/src/if_xcmdsrv.c 2012-07-10 14:25:00.000000000 +0200
+--- src/if_xcmdsrv.c 2012-07-10 14:44:13.000000000 +0200
+***************
+*** 572,632 ****
+ {
+ time_t start;
+ time_t now;
+- time_t lastChk = 0;
+ XEvent event;
+! XPropertyEvent *e = (XPropertyEvent *)&event;
+! # define SEND_MSEC_POLL 50
+
+ time(&start);
+! while (endCond(endData) == 0)
+ {
+ time(&now);
+ if (seconds >= 0 && (now - start) >= seconds)
+ break;
+! if (now != lastChk)
+! {
+! lastChk = now;
+! if (!WindowValid(dpy, w))
+! break;
+! /*
+! * Sometimes the PropertyChange event doesn't come.
+! * This can be seen in eg: vim -c 'echo remote_expr("gvim", "3+2")'
+! */
+! serverEventProc(dpy, NULL);
+! }
+ if (localLoop)
+ {
+- /* Just look out for the answer without calling back into Vim */
+ #ifndef HAVE_SELECT
+- struct pollfd fds;
+-
+- fds.fd = ConnectionNumber(dpy);
+- fds.events = POLLIN;
+ if (poll(&fds, 1, SEND_MSEC_POLL) < 0)
+ break;
+ #else
+! fd_set fds;
+! struct timeval tv;
+!
+! tv.tv_sec = 0;
+! tv.tv_usec = SEND_MSEC_POLL * 1000;
+! FD_ZERO(&fds);
+! FD_SET(ConnectionNumber(dpy), &fds);
+! if (select(ConnectionNumber(dpy) + 1, &fds, NULL, NULL, &tv) < 0)
+ break;
+ #endif
+- while (XEventsQueued(dpy, QueuedAfterReading) > 0)
+- {
+- XNextEvent(dpy, &event);
+- if (event.type == PropertyNotify && e->window == commWindow)
+- serverEventProc(dpy, &event);
+- }
+ }
+ else
+ {
+ if (got_int)
+ break;
+! ui_delay((long)SEND_MSEC_POLL, TRUE);
+ ui_breakcheck();
+ }
+ }
+--- 572,626 ----
+ {
+ time_t start;
+ time_t now;
+ XEvent event;
+!
+! #define UI_MSEC_DELAY 50
+! #define SEND_MSEC_POLL 500
+! #ifndef HAVE_SELECT
+! struct pollfd fds;
+!
+! fds.fd = ConnectionNumber(dpy);
+! fds.events = POLLIN;
+! #else
+! fd_set fds;
+! struct timeval tv;
+!
+! tv.tv_sec = 0;
+! tv.tv_usec = SEND_MSEC_POLL * 1000;
+! FD_ZERO(&fds);
+! FD_SET(ConnectionNumber(dpy), &fds);
+! #endif
+
+ time(&start);
+! while (TRUE)
+ {
++ while (XCheckWindowEvent(dpy, commWindow, PropertyChangeMask, &event))
++ serverEventProc(dpy, &event);
++
++ if (endCond(endData) != 0)
++ break;
++ if (!WindowValid(dpy, w))
++ break;
+ time(&now);
+ if (seconds >= 0 && (now - start) >= seconds)
+ break;
+!
+! /* Just look out for the answer without calling back into Vim */
+ if (localLoop)
+ {
+ #ifndef HAVE_SELECT
+ if (poll(&fds, 1, SEND_MSEC_POLL) < 0)
+ break;
+ #else
+! if (select(FD_SETSIZE, &fds, NULL, NULL, &tv) < 0)
+ break;
+ #endif
+ }
+ else
+ {
+ if (got_int)
+ break;
+! ui_delay((long)UI_MSEC_DELAY, TRUE);
+ ui_breakcheck();
+ }
+ }
+*** ../vim-7.3.594/src/version.c 2012-07-10 14:25:00.000000000 +0200
+--- src/version.c 2012-07-10 14:52:16.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 595,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+104. When people ask about the Presidential Election you ask "Which country?"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.596 b/source/ap/vim/patches/7.3.596
new file mode 100644
index 000000000..59513b2b2
--- /dev/null
+++ b/source/ap/vim/patches/7.3.596
@@ -0,0 +1,171 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.596
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.596
+Problem: Can't remove all signs for a file or buffer.
+Solution: Support "*" for the sign id. (Christian Brabandt)
+Files: runtime/doc/sign.txt, src/buffer.c, src/ex_cmds.c,
+ src/proto/buffer.pro
+
+
+*** ../vim-7.3.595/runtime/doc/sign.txt 2010-08-15 21:57:17.000000000 +0200
+--- runtime/doc/sign.txt 2012-07-10 15:05:19.000000000 +0200
+***************
+*** 150,157 ****
+ Remove the previously placed sign {id} from file {fname}.
+ See remark above about {fname} |:sign-fname|.
+
+ :sign unplace {id} buffer={nr}
+! Same, but use buffer {nr}.
+
+ :sign unplace {id}
+ Remove the previously placed sign {id} from all files it
+--- 153,166 ----
+ Remove the previously placed sign {id} from file {fname}.
+ See remark above about {fname} |:sign-fname|.
+
++ :sign unplace * file={fname}
++ Remove all placed signs in file {fname}.
++
+ :sign unplace {id} buffer={nr}
+! Remove the previously placed sign {id} from buffer {nr}.
+!
+! :sign unplace * buffer={nr}
+! Remove all placed signs in buffer {nr}.
+
+ :sign unplace {id}
+ Remove the previously placed sign {id} from all files it
+*** ../vim-7.3.595/src/buffer.c 2012-07-06 16:21:58.000000000 +0200
+--- src/buffer.c 2012-07-10 15:06:05.000000000 +0200
+***************
+*** 57,63 ****
+
+ #if defined(FEAT_SIGNS)
+ static void insert_sign __ARGS((buf_T *buf, signlist_T *prev, signlist_T *next, int id, linenr_T lnum, int typenr));
+- static void buf_delete_signs __ARGS((buf_T *buf));
+ #endif
+
+ #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+--- 57,62 ----
+***************
+*** 5537,5543 ****
+ /*
+ * Delete signs in buffer "buf".
+ */
+! static void
+ buf_delete_signs(buf)
+ buf_T *buf;
+ {
+--- 5536,5542 ----
+ /*
+ * Delete signs in buffer "buf".
+ */
+! void
+ buf_delete_signs(buf)
+ buf_T *buf;
+ {
+*** ../vim-7.3.595/src/ex_cmds.c 2012-05-18 16:24:06.000000000 +0200
+--- src/ex_cmds.c 2012-07-10 15:14:22.000000000 +0200
+***************
+*** 6997,7002 ****
+--- 6997,7012 ----
+ lnum = atoi((char *)arg);
+ arg = skiptowhite(arg);
+ }
++ else if (STRNCMP(arg, "*", 1) == 0 && idx == SIGNCMD_UNPLACE)
++ {
++ if (id != -1)
++ {
++ EMSG(_(e_invarg));
++ return;
++ }
++ id = -2;
++ arg = skiptowhite(arg + 1);
++ }
+ else if (STRNCMP(arg, "name=", 5) == 0)
+ {
+ arg += 5;
+***************
+*** 7033,7039 ****
+ {
+ EMSG2(_("E158: Invalid buffer name: %s"), arg);
+ }
+! else if (id <= 0)
+ {
+ if (lnum >= 0 || sign_name != NULL)
+ EMSG(_(e_invarg));
+--- 7043,7049 ----
+ {
+ EMSG2(_("E158: Invalid buffer name: %s"), arg);
+ }
+! else if (id <= 0 && !(idx == SIGNCMD_UNPLACE && id == -2))
+ {
+ if (lnum >= 0 || sign_name != NULL)
+ EMSG(_(e_invarg));
+***************
+*** 7074,7084 ****
+ }
+ else if (idx == SIGNCMD_UNPLACE)
+ {
+- /* ":sign unplace {id} file={fname}" */
+ if (lnum >= 0 || sign_name != NULL)
+ EMSG(_(e_invarg));
+ else
+ {
+ lnum = buf_delsign(buf, id);
+ update_debug_sign(buf, lnum);
+ }
+--- 7084,7100 ----
+ }
+ else if (idx == SIGNCMD_UNPLACE)
+ {
+ if (lnum >= 0 || sign_name != NULL)
+ EMSG(_(e_invarg));
++ else if (id == -2)
++ {
++ /* ":sign unplace * file={fname}" */
++ redraw_buf_later(buf, NOT_VALID);
++ buf_delete_signs(buf);
++ }
+ else
+ {
++ /* ":sign unplace {id} file={fname}" */
+ lnum = buf_delsign(buf, id);
+ update_debug_sign(buf, lnum);
+ }
+*** ../vim-7.3.595/src/proto/buffer.pro 2012-02-22 14:58:24.000000000 +0100
+--- src/proto/buffer.pro 2012-07-10 15:06:10.000000000 +0200
+***************
+*** 60,65 ****
+--- 60,66 ----
+ int buf_findsign_id __ARGS((buf_T *buf, linenr_T lnum));
+ int buf_findsigntype_id __ARGS((buf_T *buf, linenr_T lnum, int typenr));
+ int buf_signcount __ARGS((buf_T *buf, linenr_T lnum));
++ void buf_delete_signs __ARGS((buf_T *buf));
+ void buf_delete_all_signs __ARGS((void));
+ void sign_list_placed __ARGS((buf_T *rbuf));
+ void sign_mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after));
+*** ../vim-7.3.595/src/version.c 2012-07-10 14:56:42.000000000 +0200
+--- src/version.c 2012-07-10 15:16:40.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 596,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+105. When someone asks you for your address, you tell them your URL.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.597 b/source/ap/vim/patches/7.3.597
new file mode 100644
index 000000000..2a4f0b3d7
--- /dev/null
+++ b/source/ap/vim/patches/7.3.597
@@ -0,0 +1,720 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.597
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.597
+Problem: 'clipboard' "autoselect" only applies to the * register. (Sergey
+ Vakulenko)
+Solution: Make 'autoselect' work for the + register. (Christian Brabant)
+ Add the "autoselectplus" option in 'clipboard' and the "P" flag in
+ 'guioptions'.
+Files: runtime/doc/options.txt, src/normal.c, src/ops.c, src/screen.c,
+ src/ui.c, src/globals.h, src/proto/ui.pro, src/option.h, src/gui.c
+
+
+*** ../vim-7.3.596/runtime/doc/options.txt 2012-02-20 22:18:23.000000000 +0100
+--- runtime/doc/options.txt 2012-07-10 15:40:35.000000000 +0200
+***************
+*** 1437,1442 ****
+--- 1452,1458 ----
+ This option is a list of comma separated names.
+ These names are recognized:
+
++ *clipboard-unnamed*
+ unnamed When included, Vim will use the clipboard register '*'
+ for all yank, delete, change and put operations which
+ would normally go to the unnamed register. When a
+***************
+*** 1446,1460 ****
+ explicitly accessed using the "* notation. Also see
+ |gui-clipboard|.
+
+ unnamedplus A variant of "unnamed" flag which uses the clipboard
+ register '+' (|quoteplus|) instead of register '*' for
+ all operations except yank. Yank shall copy the text
+ into register '+' and also into '*' when "unnamed" is
+ included.
+! Only available with the |+x11| feature.
+ Availability can be checked with: >
+ if has('unnamedplus')
+ <
+ autoselect Works like the 'a' flag in 'guioptions': If present,
+ then whenever Visual mode is started, or the Visual
+ area extended, Vim tries to become the owner of the
+--- 1462,1478 ----
+ explicitly accessed using the "* notation. Also see
+ |gui-clipboard|.
+
++ *clipboard-unnamedplus*
+ unnamedplus A variant of "unnamed" flag which uses the clipboard
+ register '+' (|quoteplus|) instead of register '*' for
+ all operations except yank. Yank shall copy the text
+ into register '+' and also into '*' when "unnamed" is
+ included.
+! Only available with the |+X11| feature.
+ Availability can be checked with: >
+ if has('unnamedplus')
+ <
++ *clipboard-autoselect*
+ autoselect Works like the 'a' flag in 'guioptions': If present,
+ then whenever Visual mode is started, or the Visual
+ area extended, Vim tries to become the owner of the
+***************
+*** 1466,1474 ****
+--- 1484,1499 ----
+ "autoselect" flag is used.
+ Also applies to the modeless selection.
+
++ *clipboard-autoselectplus*
++ autoselectplus Like "autoselect" but using the + register instead of
++ the * register. Compare to the 'P' flag in
++ 'guioptions'.
++
++ *clipboard-autoselectml*
+ autoselectml Like "autoselect", but for the modeless selection
+ only. Compare to the 'A' flag in 'guioptions'.
+
++ *clipboard-html*
+ html When the clipboard contains HTML, use this when
+ pasting. When putting text on the clipboard, mark it
+ as HTML. This works to copy rendered HTML from
+***************
+*** 1479,1484 ****
+--- 1504,1510 ----
+ Only supported for GTK version 2 and later.
+ Only available with the |+multi_byte| feature.
+
++ *clipboard-exclude*
+ exclude:{pattern}
+ Defines a pattern that is matched against the name of
+ the terminal 'term'. If there is a match, no
+***************
+*** 3547,3552 ****
+--- 3600,3608 ----
+ windowing system's global selection unless explicitly told to
+ by a yank or delete operation for the "* register.
+ The same applies to the modeless selection.
++ *'go-P'*
++ 'P' Like autoselect but using the "+ register instead of the "*
++ register.
+ *'go-A'*
+ 'A' Autoselect for the modeless selection. Like 'a', but only
+ applies to the modeless selection.
+*** ../vim-7.3.596/src/normal.c 2012-06-29 13:56:01.000000000 +0200
+--- src/normal.c 2012-07-10 15:44:24.000000000 +0200
+***************
+*** 1451,1457 ****
+ * This could call do_pending_operator() recursively, but that's OK
+ * because gui_yank will be TRUE for the nested call.
+ */
+! if (clip_star.available
+ && oap->op_type != OP_NOP
+ && !gui_yank
+ # ifdef FEAT_VISUAL
+--- 1451,1457 ----
+ * This could call do_pending_operator() recursively, but that's OK
+ * because gui_yank will be TRUE for the nested call.
+ */
+! if ((clip_star.available || clip_plus.available)
+ && oap->op_type != OP_NOP
+ && !gui_yank
+ # ifdef FEAT_VISUAL
+*** ../vim-7.3.596/src/ops.c 2012-06-29 13:34:15.000000000 +0200
+--- src/ops.c 2012-07-10 16:20:29.000000000 +0200
+***************
+*** 962,969 ****
+ * selection too. */
+ if (name == '*' && clip_star.available)
+ {
+! if (clip_isautosel())
+! clip_update_selection();
+ may_get_selection(name);
+ }
+ #endif
+--- 962,975 ----
+ * selection too. */
+ if (name == '*' && clip_star.available)
+ {
+! if (clip_isautosel_star())
+! clip_update_selection(&clip_star);
+! may_get_selection(name);
+! }
+! if (name == '+' && clip_plus.available)
+! {
+! if (clip_isautosel_plus())
+! clip_update_selection(&clip_plus);
+ may_get_selection(name);
+ }
+ #endif
+***************
+*** 3190,3196 ****
+
+ clip_own_selection(&clip_plus);
+ clip_gen_set_selection(&clip_plus);
+! if (!clip_isautosel() && !did_star && curr == &(y_regs[PLUS_REGISTER]))
+ {
+ copy_yank_reg(&(y_regs[STAR_REGISTER]));
+ clip_own_selection(&clip_star);
+--- 3196,3203 ----
+
+ clip_own_selection(&clip_plus);
+ clip_gen_set_selection(&clip_plus);
+! if (!clip_isautosel_star() && !did_star
+! && curr == &(y_regs[PLUS_REGISTER]))
+ {
+ copy_yank_reg(&(y_regs[STAR_REGISTER]));
+ clip_own_selection(&clip_star);
+*** ../vim-7.3.596/src/screen.c 2012-06-13 18:06:32.000000000 +0200
+--- src/screen.c 2012-07-10 16:39:01.000000000 +0200
+***************
+*** 519,526 ****
+ # endif
+ # ifdef FEAT_CLIPBOARD
+ /* When Visual area changed, may have to update selection. */
+! if (clip_star.available && clip_isautosel())
+! clip_update_selection();
+ # endif
+ #ifdef FEAT_GUI
+ /* Remove the cursor before starting to do anything, because
+--- 519,528 ----
+ # endif
+ # ifdef FEAT_CLIPBOARD
+ /* When Visual area changed, may have to update selection. */
+! if (clip_star.available && clip_isautosel_star())
+! clip_update_selection(&clip_star);
+! if (clip_plus.available && clip_isautosel_plus())
+! clip_update_selection(&clip_plus);
+ # endif
+ #ifdef FEAT_GUI
+ /* Remove the cursor before starting to do anything, because
+***************
+*** 814,821 ****
+
+ #ifdef FEAT_CLIPBOARD
+ /* When Visual area changed, may have to update selection. */
+! if (clip_star.available && clip_isautosel())
+! clip_update_selection();
+ #endif
+
+ win_update(wp);
+--- 816,825 ----
+
+ #ifdef FEAT_CLIPBOARD
+ /* When Visual area changed, may have to update selection. */
+! if (clip_star.available && clip_isautosel_star())
+! clip_update_selection(&clip_star);
+! if (clip_plus.available && clip_isautosel_plus())
+! clip_update_selection(&clip_plus);
+ #endif
+
+ win_update(wp);
+***************
+*** 3000,3006 ****
+ area_highlighting = TRUE;
+ attr = hl_attr(HLF_V);
+ #if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
+! if (clip_star.available && !clip_star.owned && clip_isautosel())
+ attr = hl_attr(HLF_VNC);
+ #endif
+ }
+--- 3004,3013 ----
+ area_highlighting = TRUE;
+ attr = hl_attr(HLF_V);
+ #if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
+! if ((clip_star.available && !clip_star.owned
+! && clip_isautosel_star())
+! || (clip_plus.available && !clip_plus.owned
+! && clip_isautosel_plus()))
+ attr = hl_attr(HLF_VNC);
+ #endif
+ }
+***************
+*** 9060,9066 ****
+ || (wp != NULL && wp->w_width != Columns)
+ # endif
+ )
+! clip_clear_selection();
+ else
+ clip_scroll_selection(-line_count);
+ #endif
+--- 9067,9073 ----
+ || (wp != NULL && wp->w_width != Columns)
+ # endif
+ )
+! clip_clear_selection(&clip_star);
+ else
+ clip_scroll_selection(-line_count);
+ #endif
+***************
+*** 9281,9287 ****
+ || (wp != NULL && wp->w_width != Columns)
+ # endif
+ )
+! clip_clear_selection();
+ else
+ clip_scroll_selection(line_count);
+ #endif
+--- 9288,9294 ----
+ || (wp != NULL && wp->w_width != Columns)
+ # endif
+ )
+! clip_clear_selection(&clip_star);
+ else
+ clip_scroll_selection(line_count);
+ #endif
+*** ../vim-7.3.596/src/ui.c 2012-02-12 01:35:06.000000000 +0100
+--- src/ui.c 2012-07-10 16:43:17.000000000 +0200
+***************
+*** 381,386 ****
+--- 381,388 ----
+
+ #if defined(FEAT_CLIPBOARD) || defined(PROTO)
+
++ static void clip_copy_selection __ARGS((VimClipboard *clip));
++
+ /*
+ * Selection stuff using Visual mode, for cutting and pasting text to other
+ * windows.
+***************
+*** 423,431 ****
+ * this is called whenever VIsual mode is ended.
+ */
+ void
+! clip_update_selection()
+ {
+! pos_T start, end;
+
+ /* If visual mode is only due to a redo command ("."), then ignore it */
+ if (!redo_VIsual_busy && VIsual_active && (State & NORMAL))
+--- 425,434 ----
+ * this is called whenever VIsual mode is ended.
+ */
+ void
+! clip_update_selection(clip)
+! VimClipboard *clip;
+ {
+! pos_T start, end;
+
+ /* If visual mode is only due to a redo command ("."), then ignore it */
+ if (!redo_VIsual_busy && VIsual_active && (State & NORMAL))
+***************
+*** 444,460 ****
+ start = curwin->w_cursor;
+ end = VIsual;
+ }
+! if (!equalpos(clip_star.start, start)
+! || !equalpos(clip_star.end, end)
+! || clip_star.vmode != VIsual_mode)
+ {
+! clip_clear_selection();
+! clip_star.start = start;
+! clip_star.end = end;
+! clip_star.vmode = VIsual_mode;
+! clip_free_selection(&clip_star);
+! clip_own_selection(&clip_star);
+! clip_gen_set_selection(&clip_star);
+ }
+ }
+ }
+--- 447,463 ----
+ start = curwin->w_cursor;
+ end = VIsual;
+ }
+! if (!equalpos(clip->start, start)
+! || !equalpos(clip->end, end)
+! || clip->vmode != VIsual_mode)
+ {
+! clip_clear_selection(clip);
+! clip->start = start;
+! clip->end = end;
+! clip->vmode = VIsual_mode;
+! clip_free_selection(clip);
+! clip_own_selection(clip);
+! clip_gen_set_selection(clip);
+ }
+ }
+ }
+***************
+*** 475,481 ****
+ int was_owned = cbd->owned;
+
+ cbd->owned = (clip_gen_own_selection(cbd) == OK);
+! if (!was_owned && cbd == &clip_star)
+ {
+ /* May have to show a different kind of highlighting for the
+ * selected area. There is no specific redraw command for this,
+--- 478,484 ----
+ int was_owned = cbd->owned;
+
+ cbd->owned = (clip_gen_own_selection(cbd) == OK);
+! if (!was_owned && (cbd == &clip_star || cbd == &clip_plus))
+ {
+ /* May have to show a different kind of highlighting for the
+ * selected area. There is no specific redraw command for this,
+***************
+*** 483,489 ****
+ if (cbd->owned
+ && (get_real_state() == VISUAL
+ || get_real_state() == SELECTMODE)
+! && clip_isautosel()
+ && hl_attr(HLF_V) != hl_attr(HLF_VNC))
+ redraw_curbuf_later(INVERTED_ALL);
+ }
+--- 486,493 ----
+ if (cbd->owned
+ && (get_real_state() == VISUAL
+ || get_real_state() == SELECTMODE)
+! && (cbd == &clip_star ? clip_isautosel_star()
+! : clip_isautosel_plus())
+ && hl_attr(HLF_V) != hl_attr(HLF_VNC))
+ redraw_curbuf_later(INVERTED_ALL);
+ }
+***************
+*** 502,513 ****
+ #ifdef FEAT_X11
+ int was_owned = cbd->owned;
+ #endif
+! int visual_selection = (cbd == &clip_star);
+
+ clip_free_selection(cbd);
+ cbd->owned = FALSE;
+ if (visual_selection)
+! clip_clear_selection();
+ clip_gen_lose_selection(cbd);
+ #ifdef FEAT_X11
+ if (visual_selection)
+--- 506,520 ----
+ #ifdef FEAT_X11
+ int was_owned = cbd->owned;
+ #endif
+! int visual_selection = FALSE;
+!
+! if (cbd == &clip_star || cbd == &clip_plus)
+! visual_selection = TRUE;
+
+ clip_free_selection(cbd);
+ cbd->owned = FALSE;
+ if (visual_selection)
+! clip_clear_selection(cbd);
+ clip_gen_lose_selection(cbd);
+ #ifdef FEAT_X11
+ if (visual_selection)
+***************
+*** 518,524 ****
+ if (was_owned
+ && (get_real_state() == VISUAL
+ || get_real_state() == SELECTMODE)
+! && clip_isautosel()
+ && hl_attr(HLF_V) != hl_attr(HLF_VNC))
+ {
+ update_curbuf(INVERTED_ALL);
+--- 525,532 ----
+ if (was_owned
+ && (get_real_state() == VISUAL
+ || get_real_state() == SELECTMODE)
+! && (cbd == &clip_star ?
+! clip_isautosel_star() : clip_isautosel_plus())
+ && hl_attr(HLF_V) != hl_attr(HLF_VNC))
+ {
+ update_curbuf(INVERTED_ALL);
+***************
+*** 534,551 ****
+ #endif
+ }
+
+! void
+! clip_copy_selection()
+! {
+! if (VIsual_active && (State & NORMAL) && clip_star.available)
+! {
+! if (clip_isautosel())
+! clip_update_selection();
+! clip_free_selection(&clip_star);
+! clip_own_selection(&clip_star);
+! if (clip_star.owned)
+! clip_get_selection(&clip_star);
+! clip_gen_set_selection(&clip_star);
+ }
+ }
+
+--- 542,559 ----
+ #endif
+ }
+
+! static void
+! clip_copy_selection(clip)
+! VimClipboard *clip;
+! {
+! if (VIsual_active && (State & NORMAL) && clip->available)
+! {
+! clip_update_selection(clip);
+! clip_free_selection(clip);
+! clip_own_selection(clip);
+! if (clip->owned)
+! clip_get_selection(clip);
+! clip_gen_set_selection(clip);
+ }
+ }
+
+***************
+*** 555,575 ****
+ void
+ clip_auto_select()
+ {
+! if (clip_isautosel())
+! clip_copy_selection();
+ }
+
+ /*
+! * Return TRUE if automatic selection of Visual area is desired.
+ */
+ int
+! clip_isautosel()
+ {
+ return (
+ #ifdef FEAT_GUI
+ gui.in_use ? (vim_strchr(p_go, GO_ASEL) != NULL) :
+ #endif
+! clip_autoselect);
+ }
+
+
+--- 563,600 ----
+ void
+ clip_auto_select()
+ {
+! if (clip_isautosel_star())
+! clip_copy_selection(&clip_star);
+! if (clip_isautosel_plus())
+! clip_copy_selection(&clip_plus);
+ }
+
+ /*
+! * Return TRUE if automatic selection of Visual area is desired for the *
+! * register.
+ */
+ int
+! clip_isautosel_star()
+ {
+ return (
+ #ifdef FEAT_GUI
+ gui.in_use ? (vim_strchr(p_go, GO_ASEL) != NULL) :
+ #endif
+! clip_autoselect_star);
+! }
+!
+! /*
+! * Return TRUE if automatic selection of Visual area is desired for the +
+! * register.
+! */
+! int
+! clip_isautosel_plus()
+! {
+! return (
+! #ifdef FEAT_GUI
+! gui.in_use ? (vim_strchr(p_go, GO_ASELPLUS) != NULL) :
+! #endif
+! clip_autoselect_plus);
+ }
+
+
+***************
+*** 657,663 ****
+ VimClipboard *cb = &clip_star;
+
+ if (cb->state == SELECT_DONE)
+! clip_clear_selection();
+
+ row = check_row(row);
+ col = check_col(col);
+--- 682,688 ----
+ VimClipboard *cb = &clip_star;
+
+ if (cb->state == SELECT_DONE)
+! clip_clear_selection(cb);
+
+ row = check_row(row);
+ col = check_col(col);
+***************
+*** 749,755 ****
+ printf("Selection ended: (%u,%u) to (%u,%u)\n", cb->start.lnum,
+ cb->start.col, cb->end.lnum, cb->end.col);
+ #endif
+! if (clip_isautosel()
+ || (
+ #ifdef FEAT_GUI
+ gui.in_use ? (vim_strchr(p_go, GO_ASELML) != NULL) :
+--- 774,780 ----
+ printf("Selection ended: (%u,%u) to (%u,%u)\n", cb->start.lnum,
+ cb->start.col, cb->end.lnum, cb->end.col);
+ #endif
+! if (clip_isautosel_star()
+ || (
+ #ifdef FEAT_GUI
+ gui.in_use ? (vim_strchr(p_go, GO_ASELML) != NULL) :
+***************
+*** 932,947 ****
+ * Called from outside to clear selected region from the display
+ */
+ void
+! clip_clear_selection()
+ {
+- VimClipboard *cb = &clip_star;
+
+! if (cb->state == SELECT_CLEARED)
+ return;
+
+! clip_invert_area((int)cb->start.lnum, cb->start.col, (int)cb->end.lnum,
+! cb->end.col, CLIP_CLEAR);
+! cb->state = SELECT_CLEARED;
+ }
+
+ /*
+--- 957,972 ----
+ * Called from outside to clear selected region from the display
+ */
+ void
+! clip_clear_selection(cbd)
+! VimClipboard *cbd;
+ {
+
+! if (cbd->state == SELECT_CLEARED)
+ return;
+
+! clip_invert_area((int)cbd->start.lnum, cbd->start.col, (int)cbd->end.lnum,
+! cbd->end.col, CLIP_CLEAR);
+! cbd->state = SELECT_CLEARED;
+ }
+
+ /*
+***************
+*** 954,960 ****
+ if (clip_star.state == SELECT_DONE
+ && row2 >= clip_star.start.lnum
+ && row1 <= clip_star.end.lnum)
+! clip_clear_selection();
+ }
+
+ /*
+--- 979,985 ----
+ if (clip_star.state == SELECT_DONE
+ && row2 >= clip_star.start.lnum
+ && row1 <= clip_star.end.lnum)
+! clip_clear_selection(&clip_star);
+ }
+
+ /*
+*** ../vim-7.3.596/src/globals.h 2012-06-29 12:35:40.000000000 +0200
+--- src/globals.h 2012-07-10 16:35:13.000000000 +0200
+***************
+*** 517,523 ****
+ # define CLIP_UNNAMED_PLUS 2
+ EXTERN int clip_unnamed INIT(= 0); /* above two values or'ed */
+
+! EXTERN int clip_autoselect INIT(= FALSE);
+ EXTERN int clip_autoselectml INIT(= FALSE);
+ EXTERN int clip_html INIT(= FALSE);
+ EXTERN regprog_T *clip_exclude_prog INIT(= NULL);
+--- 517,524 ----
+ # define CLIP_UNNAMED_PLUS 2
+ EXTERN int clip_unnamed INIT(= 0); /* above two values or'ed */
+
+! EXTERN int clip_autoselect_star INIT(= FALSE);
+! EXTERN int clip_autoselect_plus INIT(= FALSE);
+ EXTERN int clip_autoselectml INIT(= FALSE);
+ EXTERN int clip_html INIT(= FALSE);
+ EXTERN regprog_T *clip_exclude_prog INIT(= NULL);
+*** ../vim-7.3.596/src/proto/ui.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/ui.pro 2012-07-10 16:37:35.000000000 +0200
+***************
+*** 11,27 ****
+ void ui_new_shellsize __ARGS((void));
+ void ui_breakcheck __ARGS((void));
+ void clip_init __ARGS((int can_use));
+! void clip_update_selection __ARGS((void));
+ void clip_own_selection __ARGS((VimClipboard *cbd));
+ void clip_lose_selection __ARGS((VimClipboard *cbd));
+- void clip_copy_selection __ARGS((void));
+ void clip_auto_select __ARGS((void));
+! int clip_isautosel __ARGS((void));
+ void clip_modeless __ARGS((int button, int is_click, int is_drag));
+ void clip_start_selection __ARGS((int col, int row, int repeated_click));
+ void clip_process_selection __ARGS((int button, int col, int row, int_u repeated_click));
+ void clip_may_redraw_selection __ARGS((int row, int col, int len));
+! void clip_clear_selection __ARGS((void));
+ void clip_may_clear_selection __ARGS((int row1, int row2));
+ void clip_scroll_selection __ARGS((int rows));
+ void clip_copy_modeless_selection __ARGS((int both));
+--- 11,27 ----
+ void ui_new_shellsize __ARGS((void));
+ void ui_breakcheck __ARGS((void));
+ void clip_init __ARGS((int can_use));
+! void clip_update_selection __ARGS((VimClipboard *clip));
+ void clip_own_selection __ARGS((VimClipboard *cbd));
+ void clip_lose_selection __ARGS((VimClipboard *cbd));
+ void clip_auto_select __ARGS((void));
+! int clip_isautosel_star __ARGS((void));
+! int clip_isautosel_plus __ARGS((void));
+ void clip_modeless __ARGS((int button, int is_click, int is_drag));
+ void clip_start_selection __ARGS((int col, int row, int repeated_click));
+ void clip_process_selection __ARGS((int button, int col, int row, int_u repeated_click));
+ void clip_may_redraw_selection __ARGS((int row, int col, int len));
+! void clip_clear_selection __ARGS((VimClipboard *cbd));
+ void clip_may_clear_selection __ARGS((int row1, int row2));
+ void clip_scroll_selection __ARGS((int rows));
+ void clip_copy_modeless_selection __ARGS((int both));
+*** ../vim-7.3.596/src/option.h 2012-06-06 16:12:54.000000000 +0200
+--- src/option.h 2012-07-10 15:54:32.000000000 +0200
+***************
+*** 229,234 ****
+--- 229,235 ----
+ #define GO_MENUS 'm' /* use menu bar */
+ #define GO_NOSYSMENU 'M' /* don't source system menu */
+ #define GO_POINTER 'p' /* pointer enter/leave callbacks */
++ #define GO_ASELPLUS 'P' /* autoselectPlus */
+ #define GO_RIGHT 'r' /* use right scrollbar */
+ #define GO_VRIGHT 'R' /* right scrollbar with vert split */
+ #define GO_TEAROFF 't' /* add tear-off menu items */
+*** ../vim-7.3.596/src/gui.c 2012-05-27 00:37:45.000000000 +0200
+--- src/gui.c 2012-07-10 16:43:34.000000000 +0200
+***************
+*** 3154,3160 ****
+ }
+
+ if (clip_star.state != SELECT_CLEARED && !did_clip)
+! clip_clear_selection();
+ #endif
+
+ /* Don't put events in the input queue now. */
+--- 3154,3160 ----
+ }
+
+ if (clip_star.state != SELECT_CLEARED && !did_clip)
+! clip_clear_selection(&clip_star);
+ #endif
+
+ /* Don't put events in the input queue now. */
+*** ../vim-7.3.596/src/version.c 2012-07-10 15:18:18.000000000 +0200
+--- src/version.c 2012-07-10 16:32:16.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 597,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+106. When told to "go to your room" you inform your parents that you
+ can't...because you were kicked out and banned.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.598 b/source/ap/vim/patches/7.3.598
new file mode 100644
index 000000000..3a38b4a78
--- /dev/null
+++ b/source/ap/vim/patches/7.3.598
@@ -0,0 +1,73 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.598
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.598
+Problem: Cannot act upon end of completion. (Taro Muraoka)
+Solution: Add an autocommand event that is triggered when completion has
+ finished. (Idea by Florian Klein)
+Files: src/edit.c, src/fileio.c, src/vim.h
+
+
+*** ../vim-7.3.597/src/edit.c 2012-07-06 13:36:36.000000000 +0200
+--- src/edit.c 2012-07-10 17:02:37.000000000 +0200
+***************
+*** 3824,3829 ****
+--- 3824,3834 ----
+ if (want_cindent && in_cinkeys(KEY_COMPLETE, ' ', inindent(0)))
+ do_c_expr_indent();
+ #endif
++ #ifdef FEAT_AUTOCMD
++ /* Trigger the CompleteDone event to give scripts a chance to act
++ * upon the completion. */
++ apply_autocmds(EVENT_COMPLETEDONE, NULL, NULL, FALSE, curbuf);
++ #endif
+ }
+ }
+
+*** ../vim-7.3.597/src/fileio.c 2012-06-13 14:28:16.000000000 +0200
+--- src/fileio.c 2012-07-10 17:05:51.000000000 +0200
+***************
+*** 7643,7648 ****
+--- 7643,7649 ----
+ {"CmdwinEnter", EVENT_CMDWINENTER},
+ {"CmdwinLeave", EVENT_CMDWINLEAVE},
+ {"ColorScheme", EVENT_COLORSCHEME},
++ {"CompleteDone", EVENT_COMPLETEDONE},
+ {"CursorHold", EVENT_CURSORHOLD},
+ {"CursorHoldI", EVENT_CURSORHOLDI},
+ {"CursorMoved", EVENT_CURSORMOVED},
+*** ../vim-7.3.597/src/vim.h 2012-07-10 13:41:09.000000000 +0200
+--- src/vim.h 2012-07-10 17:06:24.000000000 +0200
+***************
+*** 1241,1246 ****
+--- 1241,1247 ----
+ EVENT_CMDWINENTER, /* after entering the cmdline window */
+ EVENT_CMDWINLEAVE, /* before leaving the cmdline window */
+ EVENT_COLORSCHEME, /* after loading a colorscheme */
++ EVENT_COMPLETEDONE, /* after finishing insert complete */
+ EVENT_FILEAPPENDPOST, /* after appending to a file */
+ EVENT_FILEAPPENDPRE, /* before appending to a file */
+ EVENT_FILEAPPENDCMD, /* append to a file using command */
+*** ../vim-7.3.597/src/version.c 2012-07-10 16:49:08.000000000 +0200
+--- src/version.c 2012-07-10 17:08:41.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 598,
+ /**/
+
+--
+Laughing helps. It's like jogging on the inside.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.599 b/source/ap/vim/patches/7.3.599
new file mode 100644
index 000000000..adfe6f996
--- /dev/null
+++ b/source/ap/vim/patches/7.3.599
@@ -0,0 +1,107 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.599
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.599 (after 7.3.597)
+Problem: Missing change in one file.
+Solution: Patch for changed clip_autoselect().
+Files: src/option.c
+
+
+*** ../vim-7.3.598/src/option.c 2012-06-29 15:51:26.000000000 +0200
+--- src/option.c 2012-07-10 16:35:07.000000000 +0200
+***************
+*** 7377,7383 ****
+ check_clipboard_option()
+ {
+ int new_unnamed = 0;
+! int new_autoselect = FALSE;
+ int new_autoselectml = FALSE;
+ int new_html = FALSE;
+ regprog_T *new_exclude_prog = NULL;
+--- 7377,7384 ----
+ check_clipboard_option()
+ {
+ int new_unnamed = 0;
+! int new_autoselect_star = FALSE;
+! int new_autoselect_plus = FALSE;
+ int new_autoselectml = FALSE;
+ int new_html = FALSE;
+ regprog_T *new_exclude_prog = NULL;
+***************
+*** 7398,7410 ****
+ p += 11;
+ }
+ else if (STRNCMP(p, "autoselect", 10) == 0
+! && (p[10] == ',' || p[10] == NUL))
+ {
+! new_autoselect = TRUE;
+ p += 10;
+ }
+ else if (STRNCMP(p, "autoselectml", 12) == 0
+! && (p[12] == ',' || p[12] == NUL))
+ {
+ new_autoselectml = TRUE;
+ p += 12;
+--- 7399,7417 ----
+ p += 11;
+ }
+ else if (STRNCMP(p, "autoselect", 10) == 0
+! && (p[10] == ',' || p[10] == NUL))
+ {
+! new_autoselect_star = TRUE;
+ p += 10;
+ }
++ else if (STRNCMP(p, "autoselectplus", 14) == 0
++ && (p[14] == ',' || p[14] == NUL))
++ {
++ new_autoselect_plus = TRUE;
++ p += 14;
++ }
+ else if (STRNCMP(p, "autoselectml", 12) == 0
+! && (p[12] == ',' || p[12] == NUL))
+ {
+ new_autoselectml = TRUE;
+ p += 12;
+***************
+*** 7433,7439 ****
+ if (errmsg == NULL)
+ {
+ clip_unnamed = new_unnamed;
+! clip_autoselect = new_autoselect;
+ clip_autoselectml = new_autoselectml;
+ clip_html = new_html;
+ vim_free(clip_exclude_prog);
+--- 7440,7447 ----
+ if (errmsg == NULL)
+ {
+ clip_unnamed = new_unnamed;
+! clip_autoselect_star = new_autoselect_star;
+! clip_autoselect_plus = new_autoselect_plus;
+ clip_autoselectml = new_autoselectml;
+ clip_html = new_html;
+ vim_free(clip_exclude_prog);
+*** ../vim-7.3.598/src/version.c 2012-07-10 17:14:50.000000000 +0200
+--- src/version.c 2012-07-10 18:30:17.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 599,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+108. While reading a magazine, you look for the Zoom icon for a better
+ look at a photograph.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.600 b/source/ap/vim/patches/7.3.600
new file mode 100644
index 000000000..6504da017
--- /dev/null
+++ b/source/ap/vim/patches/7.3.600
@@ -0,0 +1,68 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.600
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.600
+Problem: <f-args> is not expanded properly with DBCS encoding.
+Solution: Skip over character instead of byte. (Yukihiro Nakadaira)
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.3.599/src/ex_docmd.c 2012-07-06 18:27:34.000000000 +0200
+--- src/ex_docmd.c 2012-07-10 19:20:10.000000000 +0200
+***************
+*** 5845,5852 ****
+--- 5845,5858 ----
+ }
+ else
+ {
++ #ifdef FEAT_MBYTE
++ int charlen = (*mb_ptr2len)(p);
++ len += charlen;
++ p += charlen;
++ #else
+ ++len;
+ ++p;
++ #endif
+ }
+ }
+
+***************
+*** 5889,5895 ****
+ }
+ else
+ {
+! *q++ = *p++;
+ }
+ }
+ *q++ = '"';
+--- 5895,5901 ----
+ }
+ else
+ {
+! MB_COPY_CHAR(p, q);
+ }
+ }
+ *q++ = '"';
+*** ../vim-7.3.599/src/version.c 2012-07-10 18:31:49.000000000 +0200
+--- src/version.c 2012-07-10 19:21:29.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 600,
+ /**/
+
+--
+In a world without walls and borders, who needs windows and gates?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.601 b/source/ap/vim/patches/7.3.601
new file mode 100644
index 000000000..b61a93316
--- /dev/null
+++ b/source/ap/vim/patches/7.3.601
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.601
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.601
+Problem: Bad code style.
+Solution: Insert space, remove parens.
+Files: src/farsi.c
+
+
+*** ../vim-7.3.600/src/farsi.c 2010-08-15 21:57:28.000000000 +0200
+--- src/farsi.c 2012-07-12 21:59:15.000000000 +0200
+***************
+*** 1813,1819 ****
+ ptr[i] = toF_leading(ptr[i]);
+ ++i;
+
+! while(canF_Rjoin(ptr[i]) && (i < llen))
+ {
+ ptr[i] = toF_Rjoin(ptr[i]);
+ if (F_isterm(ptr[i]) || !F_isalpha(ptr[i]))
+--- 1813,1819 ----
+ ptr[i] = toF_leading(ptr[i]);
+ ++i;
+
+! while (canF_Rjoin(ptr[i]) && i < llen)
+ {
+ ptr[i] = toF_Rjoin(ptr[i]);
+ if (F_isterm(ptr[i]) || !F_isalpha(ptr[i]))
+*** ../vim-7.3.600/src/version.c 2012-07-10 19:25:06.000000000 +0200
+--- src/version.c 2012-07-16 17:25:48.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 601,
+ /**/
+
+--
+There are three kinds of persons: Those who can count and those who can't.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.602 b/source/ap/vim/patches/7.3.602
new file mode 100644
index 000000000..fd5f3cf47
--- /dev/null
+++ b/source/ap/vim/patches/7.3.602
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.602
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.602
+Problem: Missing files in distribution.
+Solution: Update the list of files.
+Files: Filelist
+
+
+*** ../vim-7.3.601/Filelist 2011-10-20 16:35:25.000000000 +0200
+--- Filelist 2012-06-20 12:06:41.000000000 +0200
+***************
+*** 463,468 ****
+--- 463,469 ----
+ runtime/macros/hanoi/hanoi.vim \
+ runtime/macros/hanoi/poster \
+ runtime/macros/justify.vim \
++ runtime/macros/less.bat \
+ runtime/macros/less.sh \
+ runtime/macros/less.vim \
+ runtime/macros/life/click.me \
+***************
+*** 666,671 ****
+--- 667,674 ----
+
+ # generic language files
+ LANG_GEN = \
++ runtime/doc/*-de.1 \
++ runtime/doc/*-de.UTF-8.1 \
+ runtime/doc/*-fr.1 \
+ runtime/doc/*-fr.UTF-8.1 \
+ runtime/doc/*-it.1 \
+*** ../vim-7.3.601/src/version.c 2012-07-16 17:26:18.000000000 +0200
+--- src/version.c 2012-07-16 17:27:31.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 602,
+ /**/
+
+--
+Never eat yellow snow.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.603 b/source/ap/vim/patches/7.3.603
new file mode 100644
index 000000000..00a024b0a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.603
@@ -0,0 +1,370 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.603
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.603
+Problem: It is possible to add replace builtin functions by calling
+ extend() on g:.
+Solution: Add a flag to a dict to indicate it is a scope. Check for
+ existing functions. (ZyX)
+Files: src/buffer.c, src/eval.c, src/proto/eval.pro, src/structs.h,
+ src/testdir/test34.in, src/testdir/test34.ok, src/window.c
+
+
+*** ../vim-7.3.602/src/buffer.c 2012-07-10 15:18:18.000000000 +0200
+--- src/buffer.c 2012-07-16 16:52:58.000000000 +0200
+***************
+*** 1747,1753 ****
+ buf->b_wininfo->wi_win = curwin;
+
+ #ifdef FEAT_EVAL
+! init_var_dict(&buf->b_vars, &buf->b_bufvar); /* init b: variables */
+ #endif
+ #ifdef FEAT_SYN_HL
+ hash_init(&buf->b_s.b_keywtab);
+--- 1747,1754 ----
+ buf->b_wininfo->wi_win = curwin;
+
+ #ifdef FEAT_EVAL
+! /* init b: variables */
+! init_var_dict(&buf->b_vars, &buf->b_bufvar, VAR_SCOPE);
+ #endif
+ #ifdef FEAT_SYN_HL
+ hash_init(&buf->b_s.b_keywtab);
+*** ../vim-7.3.602/src/eval.c 2012-07-10 13:41:09.000000000 +0200
+--- src/eval.c 2012-07-16 17:18:11.000000000 +0200
+***************
+*** 850,857 ****
+ int i;
+ struct vimvar *p;
+
+! init_var_dict(&globvardict, &globvars_var);
+! init_var_dict(&vimvardict, &vimvars_var);
+ vimvardict.dv_lock = VAR_FIXED;
+ hash_init(&compat_hashtab);
+ hash_init(&func_hashtab);
+--- 850,857 ----
+ int i;
+ struct vimvar *p;
+
+! init_var_dict(&globvardict, &globvars_var, VAR_DEF_SCOPE);
+! init_var_dict(&vimvardict, &vimvars_var, VAR_SCOPE);
+ vimvardict.dv_lock = VAR_FIXED;
+ hash_init(&compat_hashtab);
+ hash_init(&func_hashtab);
+***************
+*** 2725,2738 ****
+ lp->ll_dict = lp->ll_tv->vval.v_dict;
+ lp->ll_di = dict_find(lp->ll_dict, key, len);
+
+! /* When assigning to g: check that a function and variable name is
+! * valid. */
+! if (rettv != NULL && lp->ll_dict == &globvardict)
+ {
+! if (rettv->v_type == VAR_FUNC
+ && var_check_func_name(key, lp->ll_di == NULL))
+! return NULL;
+! if (!valid_varname(key))
+ return NULL;
+ }
+
+--- 2725,2750 ----
+ lp->ll_dict = lp->ll_tv->vval.v_dict;
+ lp->ll_di = dict_find(lp->ll_dict, key, len);
+
+! /* When assigning to a scope dictionary check that a function and
+! * variable name is valid (only variable name unless it is l: or
+! * g: dictionary). Disallow overwriting a builtin function. */
+! if (rettv != NULL && lp->ll_dict->dv_scope != 0)
+ {
+! int prevval;
+! int wrong;
+!
+! if (len != -1)
+! {
+! prevval = key[len];
+! key[len] = NUL;
+! }
+! wrong = (lp->ll_dict->dv_scope == VAR_DEF_SCOPE
+! && rettv->v_type == VAR_FUNC
+ && var_check_func_name(key, lp->ll_di == NULL))
+! || !valid_varname(key);
+! if (len != -1)
+! key[len] = prevval;
+! if (wrong)
+ return NULL;
+ }
+
+***************
+*** 6951,6957 ****
+ d = (dict_T *)alloc(sizeof(dict_T));
+ if (d != NULL)
+ {
+! /* Add the list to the list of dicts for garbage collection. */
+ if (first_dict != NULL)
+ first_dict->dv_used_prev = d;
+ d->dv_used_next = first_dict;
+--- 6963,6969 ----
+ d = (dict_T *)alloc(sizeof(dict_T));
+ if (d != NULL)
+ {
+! /* Add the dict to the list of dicts for garbage collection. */
+ if (first_dict != NULL)
+ first_dict->dv_used_prev = d;
+ d->dv_used_next = first_dict;
+***************
+*** 6960,6965 ****
+--- 6972,6978 ----
+
+ hash_init(&d->dv_hashtab);
+ d->dv_lock = 0;
++ d->dv_scope = 0;
+ d->dv_refcount = 0;
+ d->dv_copyID = 0;
+ }
+***************
+*** 10203,10208 ****
+--- 10216,10234 ----
+ {
+ --todo;
+ di1 = dict_find(d1, hi2->hi_key, -1);
++ if (d1->dv_scope != 0)
++ {
++ /* Disallow replacing a builtin function in l: and g:.
++ * Check the key to be valid when adding to any
++ * scope. */
++ if (d1->dv_scope == VAR_DEF_SCOPE
++ && HI2DI(hi2)->di_tv.v_type == VAR_FUNC
++ && var_check_func_name(hi2->hi_key,
++ di1 == NULL))
++ break;
++ if (!valid_varname(hi2->hi_key))
++ break;
++ }
+ if (di1 == NULL)
+ {
+ di1 = dictitem_copy(HI2DI(hi2));
+***************
+*** 20027,20033 ****
+ {
+ sv = SCRIPT_SV(ga_scripts.ga_len + 1) =
+ (scriptvar_T *)alloc_clear(sizeof(scriptvar_T));
+! init_var_dict(&sv->sv_dict, &sv->sv_var);
+ ++ga_scripts.ga_len;
+ }
+ }
+--- 20053,20059 ----
+ {
+ sv = SCRIPT_SV(ga_scripts.ga_len + 1) =
+ (scriptvar_T *)alloc_clear(sizeof(scriptvar_T));
+! init_var_dict(&sv->sv_dict, &sv->sv_var, VAR_SCOPE);
+ ++ga_scripts.ga_len;
+ }
+ }
+***************
+*** 20038,20049 ****
+ * point to it.
+ */
+ void
+! init_var_dict(dict, dict_var)
+ dict_T *dict;
+ dictitem_T *dict_var;
+ {
+ hash_init(&dict->dv_hashtab);
+ dict->dv_lock = 0;
+ dict->dv_refcount = DO_NOT_FREE_CNT;
+ dict->dv_copyID = 0;
+ dict_var->di_tv.vval.v_dict = dict;
+--- 20064,20077 ----
+ * point to it.
+ */
+ void
+! init_var_dict(dict, dict_var, scope)
+ dict_T *dict;
+ dictitem_T *dict_var;
++ int scope;
+ {
+ hash_init(&dict->dv_hashtab);
+ dict->dv_lock = 0;
++ dict->dv_scope = scope;
+ dict->dv_refcount = DO_NOT_FREE_CNT;
+ dict->dv_copyID = 0;
+ dict_var->di_tv.vval.v_dict = dict;
+***************
+*** 22304,22310 ****
+ /*
+ * Init l: variables.
+ */
+! init_var_dict(&fc->l_vars, &fc->l_vars_var);
+ if (selfdict != NULL)
+ {
+ /* Set l:self to "selfdict". Use "name" to avoid a warning from
+--- 22332,22338 ----
+ /*
+ * Init l: variables.
+ */
+! init_var_dict(&fc->l_vars, &fc->l_vars_var, VAR_DEF_SCOPE);
+ if (selfdict != NULL)
+ {
+ /* Set l:self to "selfdict". Use "name" to avoid a warning from
+***************
+*** 22325,22331 ****
+ * Set a:0 to "argcount".
+ * Set a:000 to a list with room for the "..." arguments.
+ */
+! init_var_dict(&fc->l_avars, &fc->l_avars_var);
+ add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "0",
+ (varnumber_T)(argcount - fp->uf_args.ga_len));
+ /* Use "name" to avoid a warning from some compiler that checks the
+--- 22353,22359 ----
+ * Set a:0 to "argcount".
+ * Set a:000 to a list with room for the "..." arguments.
+ */
+! init_var_dict(&fc->l_avars, &fc->l_avars_var, VAR_SCOPE);
+ add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "0",
+ (varnumber_T)(argcount - fp->uf_args.ga_len));
+ /* Use "name" to avoid a warning from some compiler that checks the
+*** ../vim-7.3.602/src/proto/eval.pro 2012-06-29 12:54:32.000000000 +0200
+--- src/proto/eval.pro 2012-07-16 16:55:16.000000000 +0200
+***************
+*** 93,99 ****
+ char_u *get_tv_string_chk __ARGS((typval_T *varp));
+ char_u *get_var_value __ARGS((char_u *name));
+ void new_script_vars __ARGS((scid_T id));
+! void init_var_dict __ARGS((dict_T *dict, dictitem_T *dict_var));
+ void vars_clear __ARGS((hashtab_T *ht));
+ void copy_tv __ARGS((typval_T *from, typval_T *to));
+ void ex_echo __ARGS((exarg_T *eap));
+--- 93,99 ----
+ char_u *get_tv_string_chk __ARGS((typval_T *varp));
+ char_u *get_var_value __ARGS((char_u *name));
+ void new_script_vars __ARGS((scid_T id));
+! void init_var_dict __ARGS((dict_T *dict, dictitem_T *dict_var, int scope));
+ void vars_clear __ARGS((hashtab_T *ht));
+ void copy_tv __ARGS((typval_T *from, typval_T *to));
+ void ex_echo __ARGS((exarg_T *eap));
+*** ../vim-7.3.602/src/structs.h 2012-06-06 19:02:40.000000000 +0200
+--- src/structs.h 2012-07-16 16:56:43.000000000 +0200
+***************
+*** 1106,1111 ****
+--- 1106,1116 ----
+ #define VAR_DICT 5 /* "v_dict" is used */
+ #define VAR_FLOAT 6 /* "v_float" is used */
+
++ /* Values for "dv_scope". */
++ #define VAR_SCOPE 1 /* a:, v:, s:, etc. scope dictionaries */
++ #define VAR_DEF_SCOPE 2 /* l:, g: scope dictionaries: here funcrefs are not
++ allowed to mask existing functions */
++
+ /* Values for "v_lock". */
+ #define VAR_LOCKED 1 /* locked with lock(), can use unlock() */
+ #define VAR_FIXED 2 /* locked forever */
+***************
+*** 1181,1186 ****
+--- 1186,1192 ----
+ int dv_copyID; /* ID used by deepcopy() */
+ dict_T *dv_copydict; /* copied dict used by deepcopy() */
+ char dv_lock; /* zero, VAR_LOCKED, VAR_FIXED */
++ char dv_scope; /* zero, VAR_SCOPE, VAR_DEF_SCOPE */
+ dict_T *dv_used_next; /* next dict in used dicts list */
+ dict_T *dv_used_prev; /* previous dict in used dicts list */
+ };
+*** ../vim-7.3.602/src/testdir/test34.in 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test34.in 2012-07-16 16:51:29.000000000 +0200
+***************
+*** 1,5 ****
+--- 1,6 ----
+ Test for user functions.
+ Also test an <expr> mapping calling a function.
++ Also test that a builtin function cannot be replaced.
+
+ STARTTEST
+ :so small.vim
+***************
+*** 58,64 ****
+ ---*---
+ (one
+ (two
+! [(one again:$-5,$w! test.out
+ :delfunc Table
+ :delfunc Compute
+ :delfunc Expr1
+--- 59,68 ----
+ ---*---
+ (one
+ (two
+! [(one again:call append(line('$'), max([1, 2, 3]))
+! :call extend(g:, {'max': function('min')})
+! :call append(line('$'), max([1, 2, 3]))
+! :$-7,$w! test.out
+ :delfunc Table
+ :delfunc Compute
+ :delfunc Expr1
+*** ../vim-7.3.602/src/testdir/test34.ok 2011-10-12 22:02:07.000000000 +0200
+--- src/testdir/test34.ok 2012-07-16 16:43:15.000000000 +0200
+***************
+*** 4,6 ****
+--- 4,8 ----
+ 1. one
+ 2. two
+ 1. one again
++ 3
++ 3
+*** ../vim-7.3.602/src/window.c 2012-07-06 18:27:34.000000000 +0200
+--- src/window.c 2012-07-16 16:53:45.000000000 +0200
+***************
+*** 3468,3474 ****
+ # endif
+ #ifdef FEAT_EVAL
+ /* init t: variables */
+! init_var_dict(&tp->tp_vars, &tp->tp_winvar);
+ #endif
+ tp->tp_ch_used = p_ch;
+ }
+--- 3468,3474 ----
+ # endif
+ #ifdef FEAT_EVAL
+ /* init t: variables */
+! init_var_dict(&tp->tp_vars, &tp->tp_winvar, VAR_SCOPE);
+ #endif
+ tp->tp_ch_used = p_ch;
+ }
+***************
+*** 4410,4416 ****
+ #endif
+ #ifdef FEAT_EVAL
+ /* init w: variables */
+! init_var_dict(&new_wp->w_vars, &new_wp->w_winvar);
+ #endif
+ #ifdef FEAT_FOLDING
+ foldInitWin(new_wp);
+--- 4410,4416 ----
+ #endif
+ #ifdef FEAT_EVAL
+ /* init w: variables */
+! init_var_dict(&new_wp->w_vars, &new_wp->w_winvar, VAR_SCOPE);
+ #endif
+ #ifdef FEAT_FOLDING
+ foldInitWin(new_wp);
+*** ../vim-7.3.602/src/version.c 2012-07-16 17:27:57.000000000 +0200
+--- src/version.c 2012-07-16 17:29:06.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 603,
+ /**/
+
+--
+Birthdays are healthy. The more you have them, the longer you live.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.604 b/source/ap/vim/patches/7.3.604
new file mode 100644
index 000000000..f7e63bd0d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.604
@@ -0,0 +1,60 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.604
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.604
+Problem: inputdialog() doesn't use the cancel argument in the console.
+ (David Fishburn)
+Solution: Use the third argument. (Christian Brabant)
+Files: src/eval.c
+
+
+*** ../vim-7.3.603/src/eval.c 2012-07-16 17:31:48.000000000 +0200
+--- src/eval.c 2012-07-16 19:20:47.000000000 +0200
+***************
+*** 12940,12945 ****
+--- 12940,12946 ----
+ int xp_namelen;
+ long argt;
+
++ /* input() with a third argument: completion */
+ rettv->vval.v_string = NULL;
+
+ xp_name = get_tv_string_buf_chk(&argvars[2], buf);
+***************
+*** 12958,12963 ****
+--- 12959,12969 ----
+ rettv->vval.v_string =
+ getcmdline_prompt(inputsecret_flag ? NUL : '@', p, echo_attr,
+ xp_type, xp_arg);
++ if (rettv->vval.v_string == NULL
++ && argvars[1].v_type != VAR_UNKNOWN
++ && argvars[2].v_type != VAR_UNKNOWN)
++ rettv->vval.v_string = vim_strsave(get_tv_string_buf(
++ &argvars[2], buf));
+
+ vim_free(xp_arg);
+
+*** ../vim-7.3.603/src/version.c 2012-07-16 17:31:48.000000000 +0200
+--- src/version.c 2012-07-16 19:23:11.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 604,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+135. You cut classes or miss work so you can stay home and browse the web.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.605 b/source/ap/vim/patches/7.3.605
new file mode 100644
index 000000000..703382516
--- /dev/null
+++ b/source/ap/vim/patches/7.3.605
@@ -0,0 +1,86 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.605
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.605 (after 7.3.577)
+Problem: MS-Windows: Can't compile with older compilers. (Titov Anatoly)
+Solution: Add #ifdef for MEMORYSTATUSEX.
+Files: src/os_win32.c
+
+
+*** ../vim-7.3.604/src/os_win32.c 2012-06-29 15:51:26.000000000 +0200
+--- src/os_win32.c 2012-07-19 11:35:00.000000000 +0200
+***************
+*** 4999,5020 ****
+ long_u
+ mch_avail_mem(int special)
+ {
+! if (g_PlatformId != VER_PLATFORM_WIN32_NT)
+! {
+! MEMORYSTATUS ms;
+!
+! ms.dwLength = sizeof(MEMORYSTATUS);
+! GlobalMemoryStatus(&ms);
+! return (long_u)((ms.dwAvailPhys + ms.dwAvailPageFile) >> 10);
+! }
+! else
+ {
+ MEMORYSTATUSEX ms;
+
+ ms.dwLength = sizeof(MEMORYSTATUSEX);
+ GlobalMemoryStatusEx(&ms);
+ return (long_u)((ms.ullAvailPhys + ms.ullAvailPageFile) >> 10);
+ }
+ }
+
+ #ifdef FEAT_MBYTE
+--- 4999,5025 ----
+ long_u
+ mch_avail_mem(int special)
+ {
+! #ifdef MEMORYSTATUSEX
+! PlatformId();
+! if (g_PlatformId == VER_PLATFORM_WIN32_NT)
+ {
+ MEMORYSTATUSEX ms;
+
++ /* Need to use GlobalMemoryStatusEx() when there is more memory than
++ * what fits in 32 bits. But it's not always available. */
+ ms.dwLength = sizeof(MEMORYSTATUSEX);
+ GlobalMemoryStatusEx(&ms);
+ return (long_u)((ms.ullAvailPhys + ms.ullAvailPageFile) >> 10);
+ }
++ else
++ #endif
++ {
++ MEMORYSTATUS ms;
++
++ ms.dwLength = sizeof(MEMORYSTATUS);
++ GlobalMemoryStatus(&ms);
++ return (long_u)((ms.dwAvailPhys + ms.dwAvailPageFile) >> 10);
++ }
+ }
+
+ #ifdef FEAT_MBYTE
+*** ../vim-7.3.604/src/version.c 2012-07-16 19:27:25.000000000 +0200
+--- src/version.c 2012-07-19 11:36:12.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 605,
+ /**/
+
+--
+Fingers not found - Pound head on keyboard to continue.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.606 b/source/ap/vim/patches/7.3.606
new file mode 100644
index 000000000..2296653c4
--- /dev/null
+++ b/source/ap/vim/patches/7.3.606
@@ -0,0 +1,76 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.606
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.606
+Problem: CTRL-P completion has a problem with multi-byte characters.
+Solution: Check for next character being NUL properly. (Yasuhiro Matsumoto)
+Files: src/search.c, src/macros.h
+
+
+*** ../vim-7.3.605/src/search.c 2012-06-06 16:12:54.000000000 +0200
+--- src/search.c 2012-07-19 17:09:20.000000000 +0200
+***************
+*** 5141,5147 ****
+ && !(compl_cont_status & CONT_SOL)
+ #endif
+ && *startp != NUL
+! && *(p = startp + 1) != NUL)
+ goto search_line;
+ }
+ line_breakcheck();
+--- 5141,5147 ----
+ && !(compl_cont_status & CONT_SOL)
+ #endif
+ && *startp != NUL
+! && *(p = startp + MB_PTR2LEN(startp)) != NUL)
+ goto search_line;
+ }
+ line_breakcheck();
+*** ../vim-7.3.605/src/macros.h 2010-09-21 16:56:29.000000000 +0200
+--- src/macros.h 2012-07-19 17:08:38.000000000 +0200
+***************
+*** 259,264 ****
+--- 259,266 ----
+ * PTR2CHAR(): get character from pointer.
+ */
+ #ifdef FEAT_MBYTE
++ /* Get the length of the character p points to */
++ # define MB_PTR2LEN(p) (has_mbyte ? (*mb_ptr2len)(p) : 1)
+ /* Advance multi-byte pointer, skip over composing chars. */
+ # define mb_ptr_adv(p) p += has_mbyte ? (*mb_ptr2len)(p) : 1
+ /* Advance multi-byte pointer, do not skip over composing chars. */
+***************
+*** 272,277 ****
+--- 274,280 ----
+ # define MB_CHARLEN(p) (has_mbyte ? mb_charlen(p) : (int)STRLEN(p))
+ # define PTR2CHAR(p) (has_mbyte ? mb_ptr2char(p) : (int)*(p))
+ #else
++ # define MB_PTR2LEN(p) 1
+ # define mb_ptr_adv(p) ++p
+ # define mb_cptr_adv(p) ++p
+ # define mb_ptr_back(s, p) --p
+*** ../vim-7.3.605/src/version.c 2012-07-19 11:37:22.000000000 +0200
+--- src/version.c 2012-07-19 17:13:53.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 606,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+151. You find yourself engaged to someone you've never actually met,
+ except through e-mail.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.607 b/source/ap/vim/patches/7.3.607
new file mode 100644
index 000000000..4dbf559dd
--- /dev/null
+++ b/source/ap/vim/patches/7.3.607
@@ -0,0 +1,56 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.607
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.607
+Problem: With an 8 color terminal the selected menu item is black on black,
+ because darkGrey as bg is the same as black.
+Solution: Swap fg and bg colors. (James McCoy)
+Files: src/syntax.c
+
+
+*** ../vim-7.3.606/src/syntax.c 2012-06-01 13:18:48.000000000 +0200
+--- src/syntax.c 2012-07-19 17:34:42.000000000 +0200
+***************
+*** 6653,6660 ****
+ "PmenuThumb ctermbg=White guibg=White"),
+ CENT("Pmenu ctermbg=Magenta ctermfg=Black",
+ "Pmenu ctermbg=Magenta ctermfg=Black guibg=Magenta"),
+! CENT("PmenuSel ctermbg=DarkGrey ctermfg=Black",
+! "PmenuSel ctermbg=DarkGrey ctermfg=Black guibg=DarkGrey"),
+ #endif
+ CENT("Title term=bold ctermfg=LightMagenta",
+ "Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta"),
+--- 6653,6660 ----
+ "PmenuThumb ctermbg=White guibg=White"),
+ CENT("Pmenu ctermbg=Magenta ctermfg=Black",
+ "Pmenu ctermbg=Magenta ctermfg=Black guibg=Magenta"),
+! CENT("PmenuSel ctermbg=Black ctermfg=DarkGrey",
+! "PmenuSel ctermbg=Black ctermfg=DarkGrey guibg=DarkGrey"),
+ #endif
+ CENT("Title term=bold ctermfg=LightMagenta",
+ "Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta"),
+*** ../vim-7.3.606/src/version.c 2012-07-19 17:18:21.000000000 +0200
+--- src/version.c 2012-07-19 17:38:05.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 607,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+152. You find yourself falling for someone you've never seen or hardly
+ know, but, boy can he/she TYPE!!!!!!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.608 b/source/ap/vim/patches/7.3.608
new file mode 100644
index 000000000..148bc494e
--- /dev/null
+++ b/source/ap/vim/patches/7.3.608
@@ -0,0 +1,119 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.608
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.608
+Problem: winrestview() does not always restore the view correctly.
+Solution: Call win_new_height() and win_new_width(). (Lech Lorens)
+Files: src/eval.c, src/proto/window.pro, src/window.c
+
+
+*** ../vim-7.3.607/src/eval.c 2012-07-16 19:27:25.000000000 +0200
+--- src/eval.c 2012-07-19 17:50:16.000000000 +0200
+***************
+*** 18601,18606 ****
+--- 18601,18610 ----
+ curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol");
+
+ check_cursor();
++ win_new_height(curwin, curwin->w_height);
++ # ifdef FEAT_VERTSPLIT
++ win_new_width(curwin, W_WIDTH(curwin));
++ # endif
+ changed_window_setting();
+
+ if (curwin->w_topline == 0)
+*** ../vim-7.3.607/src/proto/window.pro 2012-06-13 14:28:16.000000000 +0200
+--- src/proto/window.pro 2012-07-19 18:05:10.000000000 +0200
+***************
+*** 51,56 ****
+--- 51,58 ----
+ void win_setminheight __ARGS((void));
+ void win_drag_status_line __ARGS((win_T *dragwin, int offset));
+ void win_drag_vsep_line __ARGS((win_T *dragwin, int offset));
++ void win_new_height __ARGS((win_T *wp, int height));
++ void win_new_width __ARGS((win_T *wp, int width));
+ void win_comp_scroll __ARGS((win_T *wp));
+ void command_height __ARGS((void));
+ void last_status __ARGS((int morewin));
+*** ../vim-7.3.607/src/window.c 2012-07-16 17:31:48.000000000 +0200
+--- src/window.c 2012-07-19 18:05:18.000000000 +0200
+***************
+*** 54,60 ****
+ static void frame_insert __ARGS((frame_T *before, frame_T *frp));
+ static void frame_remove __ARGS((frame_T *frp));
+ #ifdef FEAT_VERTSPLIT
+- static void win_new_width __ARGS((win_T *wp, int width));
+ static void win_goto_ver __ARGS((int up, long count));
+ static void win_goto_hor __ARGS((int left, long count));
+ #endif
+--- 54,59 ----
+***************
+*** 71,77 ****
+
+ static win_T *win_alloc __ARGS((win_T *after, int hidden));
+ static void set_fraction __ARGS((win_T *wp));
+- static void win_new_height __ARGS((win_T *wp, int height));
+
+ #define URL_SLASH 1 /* path_is_url() has found "://" */
+ #define URL_BACKSLASH 2 /* path_is_url() has found ":\\" */
+--- 70,75 ----
+***************
+*** 5557,5563 ****
+ * This takes care of the things inside the window, not what happens to the
+ * window position, the frame or to other windows.
+ */
+! static void
+ win_new_height(wp, height)
+ win_T *wp;
+ int height;
+--- 5555,5561 ----
+ * This takes care of the things inside the window, not what happens to the
+ * window position, the frame or to other windows.
+ */
+! void
+ win_new_height(wp, height)
+ win_T *wp;
+ int height;
+***************
+*** 5697,5703 ****
+ /*
+ * Set the width of a window.
+ */
+! static void
+ win_new_width(wp, width)
+ win_T *wp;
+ int width;
+--- 5695,5701 ----
+ /*
+ * Set the width of a window.
+ */
+! void
+ win_new_width(wp, width)
+ win_T *wp;
+ int width;
+*** ../vim-7.3.607/src/version.c 2012-07-19 17:39:01.000000000 +0200
+--- src/version.c 2012-07-19 17:53:37.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 608,
+ /**/
+
+--
+Although the scythe isn't pre-eminent among the weapons of war, anyone who
+has been on the wrong end of, say, a peasants' revolt will know that in
+skilled hands it is fearsome.
+ -- (Terry Pratchett, Mort)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.609 b/source/ap/vim/patches/7.3.609
new file mode 100644
index 000000000..ed731f509
--- /dev/null
+++ b/source/ap/vim/patches/7.3.609
@@ -0,0 +1,251 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.609
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.609
+Problem: File names in :checkpath! output are garbled.
+Solution: Check for \zs in the pattern. (Lech Lorens)
+Files: src/search.c, src/testdir/test17.in, src/testdir/test17.ok
+
+
+*** ../vim-7.3.608/src/search.c 2012-07-19 17:18:21.000000000 +0200
+--- src/search.c 2012-07-25 13:33:08.000000000 +0200
+***************
+*** 4740,4756 ****
+ * Isolate the file name.
+ * Include the surrounding "" or <> if present.
+ */
+! for (p = incl_regmatch.endp[0]; !vim_isfilec(*p); p++)
+! ;
+! for (i = 0; vim_isfilec(p[i]); i++)
+! ;
+ if (i == 0)
+ {
+ /* Nothing found, use the rest of the line. */
+ p = incl_regmatch.endp[0];
+ i = (int)STRLEN(p);
+ }
+! else
+ {
+ if (p[-1] == '"' || p[-1] == '<')
+ {
+--- 4740,4772 ----
+ * Isolate the file name.
+ * Include the surrounding "" or <> if present.
+ */
+! if (inc_opt != NULL
+! && strstr((char *)inc_opt, "\\zs") != NULL)
+! {
+! /* pattern contains \zs, use the match */
+! p = incl_regmatch.startp[0];
+! i = (int)(incl_regmatch.endp[0]
+! - incl_regmatch.startp[0]);
+! }
+! else
+! {
+! /* find the file name after the end of the match */
+! for (p = incl_regmatch.endp[0];
+! *p && !vim_isfilec(*p); p++)
+! ;
+! for (i = 0; vim_isfilec(p[i]); i++)
+! ;
+! }
+!
+ if (i == 0)
+ {
+ /* Nothing found, use the rest of the line. */
+ p = incl_regmatch.endp[0];
+ i = (int)STRLEN(p);
+ }
+! /* Avoid checking before the start of the line, can
+! * happen if \zs appears in the regexp. */
+! else if (p > line)
+ {
+ if (p[-1] == '"' || p[-1] == '<')
+ {
+*** ../vim-7.3.608/src/testdir/test17.in 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test17.in 2012-07-25 13:41:43.000000000 +0200
+***************
+*** 1,4 ****
+! Tests for "gf" on ${VAR}
+
+ STARTTEST
+ :so small.vim
+--- 1,6 ----
+! Tests for:
+! - "gf" on ${VAR},
+! - ":checkpath!" with various 'include' settings.
+
+ STARTTEST
+ :so small.vim
+***************
+*** 20,27 ****
+ :endif
+ gf
+ :w! test.out
+! :qa!
+ ENDTEST
+
+ ${CDIR}/test17a.in
+ $TDIR/test17a.in
+--- 22,120 ----
+ :endif
+ gf
+ :w! test.out
+! :brewind
+ ENDTEST
+
+ ${CDIR}/test17a.in
+ $TDIR/test17a.in
++
++ STARTTEST
++ :" check for 'include' without \zs or \ze
++ :lang C
++ :!rm -f ./Xbase.a
++ :!rm -rf ./Xdir1
++ :!mkdir -p Xdir1/dir2
++ :e Xdir1/dir2/foo.a
++ i#include "bar.a"
++ :w
++ :e Xdir1/dir2/bar.a
++ i#include "baz.a"
++ :w
++ :e Xdir1/dir2/baz.a
++ i#include "foo.a"
++ :w
++ :e Xbase.a
++ :set path=Xdir1/dir2
++ i#include <foo.a>
++ :w
++ :redir! >>test.out
++ :checkpath!
++ :redir END
++ :brewind
++ ENDTEST
++
++ STARTTEST
++ :" check for 'include' with \zs and \ze
++ :!rm -f ./Xbase.b
++ :!rm -rf ./Xdir1
++ :!mkdir -p Xdir1/dir2
++ :let &include='^\s*%inc\s*/\zs[^/]\+\ze'
++ :function! DotsToSlashes()
++ : return substitute(v:fname, '\.', '/', 'g') . '.b'
++ :endfunction
++ :let &includeexpr='DotsToSlashes()'
++ :e Xdir1/dir2/foo.b
++ i%inc /bar/
++ :w
++ :e Xdir1/dir2/bar.b
++ i%inc /baz/
++ :w
++ :e Xdir1/dir2/baz.b
++ i%inc /foo/
++ :w
++ :e Xbase.b
++ :set path=Xdir1/dir2
++ i%inc /foo/
++ :w
++ :redir! >>test.out
++ :checkpath!
++ :redir END
++ :brewind
++ ENDTEST
++
++ STARTTEST
++ :" check for 'include' with \zs and no \ze
++ :!rm -f ./Xbase.c
++ :!rm -rf ./Xdir1
++ :!mkdir -p Xdir1/dir2
++ :let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
++ :function! StripNewlineChar()
++ : if v:fname =~ '\n$'
++ : return v:fname[:-2]
++ : endif
++ : return v:fname
++ :endfunction
++ :let &includeexpr='StripNewlineChar()'
++ :e Xdir1/dir2/foo.c
++ i%inc bar.c
++ :w
++ :e Xdir1/dir2/bar.c
++ i%inc baz.c
++ :w
++ :e Xdir1/dir2/baz.c
++ i%inc foo.c
++ :w
++ :e Xdir1/dir2/FALSE.c
++ i%inc foo.c
++ :w
++ :e Xbase.c
++ :set path=Xdir1/dir2
++ i%inc FALSE.c foo.c
++ :w
++ :redir! >>test.out
++ :checkpath!
++ :redir END
++ :brewind
++ :q
++ ENDTEST
++
+*** ../vim-7.3.608/src/testdir/test17.ok 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test17.ok 2012-07-25 13:45:37.000000000 +0200
+***************
+*** 1,3 ****
+--- 1,33 ----
+ This file is just to test "gf" in test 17.
+ The contents is not important.
+ Just testing!
++
++
++ --- Included files in path ---
++ Xdir1/dir2/foo.a
++ Xdir1/dir2/foo.a -->
++ Xdir1/dir2/bar.a
++ Xdir1/dir2/bar.a -->
++ Xdir1/dir2/baz.a
++ Xdir1/dir2/baz.a -->
++ "foo.a" (Already listed)
++
++
++ --- Included files in path ---
++ Xdir1/dir2/foo.b
++ Xdir1/dir2/foo.b -->
++ Xdir1/dir2/bar.b
++ Xdir1/dir2/bar.b -->
++ Xdir1/dir2/baz.b
++ Xdir1/dir2/baz.b -->
++ foo (Already listed)
++
++
++ --- Included files in path ---
++ Xdir1/dir2/foo.c
++ Xdir1/dir2/foo.c -->
++ Xdir1/dir2/bar.c
++ Xdir1/dir2/bar.c -->
++ Xdir1/dir2/baz.c
++ Xdir1/dir2/baz.c -->
++ foo.c^@ (Already listed)
+*** ../vim-7.3.608/src/version.c 2012-07-19 18:05:40.000000000 +0200
+--- src/version.c 2012-07-25 13:38:54.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 609,
+ /**/
+
+--
+"The question of whether computers can think is just like the question
+of whether submarines can swim." -- Edsger W. Dijkstra
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.610 b/source/ap/vim/patches/7.3.610
new file mode 100644
index 000000000..5e48837fa
--- /dev/null
+++ b/source/ap/vim/patches/7.3.610
@@ -0,0 +1,400 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.610
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.610
+Problem: Cannot operate on the text that a search pattern matches.
+Solution: Add the "gn" and "gN" commands. (Christian Brabandt)
+Files: runtime/doc/index.txt, runtime/doc/visual.txt, src/normal.c,
+ src/proto/search.pro, src/search.c, src/testdir/test53.in,
+ src/testdir/test53.ok
+
+
+*** ../vim-7.3.609/runtime/doc/index.txt 2010-08-15 21:57:18.000000000 +0200
+--- runtime/doc/index.txt 2012-07-25 14:27:20.000000000 +0200
+***************
+*** 719,726 ****
+--- 719,729 ----
+ |gH| gH start Select line mode
+ |gI| gI 2 like "I", but always start in column 1
+ |gJ| gJ 2 join lines without inserting space
++ |gN| gN 1,2 find the previous match with the last used
++ search pattern and Visually select it
+ |gP| ["x]gP 2 put the text [from register x] before the
+ cursor N times, leave the cursor after it
++ |gQ| gQ switch to "Ex" mode with Vim editing
+ |gR| gR 2 enter Virtual Replace mode
+ |gU| gU{motion} 2 make Nmove text uppercase
+ |gV| gV don't reselect the previous Visual area
+***************
+*** 750,755 ****
+--- 753,760 ----
+ lines down
+ |gk| gk 1 like "k", but when 'wrap' on go N screen
+ lines up
++ |gn| gn 1,2 find the next match with the last used
++ search pattern and Visually select it
+ |gm| gm 1 go to character at middle of the screenline
+ |go| go 1 cursor to byte N in the buffer
+ |gp| ["x]gp 2 put the text [from register x] after the
+*** ../vim-7.3.609/runtime/doc/visual.txt 2010-08-15 21:57:16.000000000 +0200
+--- runtime/doc/visual.txt 2012-07-25 14:42:22.000000000 +0200
+***************
+*** 94,99 ****
+--- 99,116 ----
+ After using "p" or "P" in Visual mode the text that
+ was put will be selected.
+
++ *gn* *v_gn*
++ gn Search forward for the last used search pattern, like
++ with `n`, and start Visual mode to select the match.
++ If the cursor is on the match, visually selects it.
++ If an operator is pending, operates on the match.
++ E.g., "dgn" deletes the text of the next match.
++ If Visual mode is active, extends the selection
++ until the end of the next match.
++
++ *gN* *v_gN*
++ gN Like |gn| but searches backward, like with `N`.
++
+ *<LeftMouse>*
+ <LeftMouse> Set the current cursor position. If Visual mode is
+ active it is stopped. Only when 'mouse' option is
+*** ../vim-7.3.609/src/normal.c 2012-07-10 16:49:08.000000000 +0200
+--- src/normal.c 2012-07-25 14:31:40.000000000 +0200
+***************
+*** 1780,1789 ****
+ {
+ /* Prepare for redoing. Only use the nchar field for "r",
+ * otherwise it might be the second char of the operator. */
+! prep_redo(oap->regname, 0L, NUL, 'v',
+! get_op_char(oap->op_type),
+! get_extra_op_char(oap->op_type),
+! oap->op_type == OP_REPLACE ? cap->nchar : NUL);
+ if (!redo_VIsual_busy)
+ {
+ redo_VIsual_mode = resel_VIsual_mode;
+--- 1780,1797 ----
+ {
+ /* Prepare for redoing. Only use the nchar field for "r",
+ * otherwise it might be the second char of the operator. */
+! if (cap->cmdchar == 'g' && (cap->nchar == 'n'
+! || cap->nchar == 'N'))
+! /* "gn" and "gN" are a bit different */
+! prep_redo(oap->regname, 0L, NUL, cap->cmdchar, cap->nchar,
+! get_op_char(oap->op_type),
+! get_extra_op_char(oap->op_type));
+! else
+! prep_redo(oap->regname, 0L, NUL, 'v',
+! get_op_char(oap->op_type),
+! get_extra_op_char(oap->op_type),
+! oap->op_type == OP_REPLACE
+! ? cap->nchar : NUL);
+ if (!redo_VIsual_busy)
+ {
+ redo_VIsual_mode = resel_VIsual_mode;
+***************
+*** 7987,7992 ****
+--- 7995,8011 ----
+ cap->arg = TRUE;
+ nv_visual(cap);
+ break;
++
++ /* "gn", "gN" visually select next/previous search match
++ * "gn" selects next match
++ * "gN" selects previous match
++ */
++ case 'N':
++ case 'n':
++ if (!current_search(cap->count1, cap->nchar == 'n'))
++ beep_flush();
++
++ break;
+ #endif /* FEAT_VISUAL */
+
+ /*
+*** ../vim-7.3.609/src/proto/search.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/search.pro 2012-07-25 14:24:01.000000000 +0200
+***************
+*** 27,32 ****
+--- 27,33 ----
+ int end_word __ARGS((long count, int bigword, int stop, int empty));
+ int bckend_word __ARGS((long count, int bigword, int eol));
+ int current_word __ARGS((oparg_T *oap, long count, int include, int bigword));
++ int current_search __ARGS((long count, int forward));
+ int current_sent __ARGS((oparg_T *oap, long count, int include));
+ int current_block __ARGS((oparg_T *oap, long count, int include, int what, int other));
+ int current_tagblock __ARGS((oparg_T *oap, long count_arg, int include));
+*** ../vim-7.3.609/src/search.c 2012-07-25 13:46:25.000000000 +0200
+--- src/search.c 2012-07-25 14:54:28.000000000 +0200
+***************
+*** 3397,3402 ****
+--- 3397,3547 ----
+ return OK;
+ }
+
++ #if defined(FEAT_VISUAL) || defined(PROTO)
++ /*
++ * Find next search match under cursor, cursor at end.
++ * Used while an operator is pending, and in Visual mode.
++ * TODO: redo only works when used in operator pending mode
++ */
++ int
++ current_search(count, forward)
++ long count;
++ int forward; /* move forward or backwards */
++ {
++ pos_T start_pos; /* position before the pattern */
++ pos_T orig_pos; /* position of the cursor at beginning */
++ pos_T pos; /* position after the pattern */
++ int i;
++ int dir;
++ int result; /* result of various function calls */
++ char_u old_p_ws = p_ws;
++ int visual_active = FALSE;
++ int flags = 0;
++ pos_T save_VIsual;
++
++
++ /* wrapping should not occur */
++ p_ws = FALSE;
++
++ /* Correct cursor when 'selection' is exclusive */
++ if (VIsual_active && *p_sel == 'e' && lt(VIsual, curwin->w_cursor))
++ dec_cursor();
++
++ if (VIsual_active)
++ {
++ orig_pos = curwin->w_cursor;
++ save_VIsual = VIsual;
++ visual_active = TRUE;
++
++ /* just started visual selection, only one character */
++ if (equalpos(VIsual, curwin->w_cursor))
++ visual_active = FALSE;
++
++ pos = curwin->w_cursor;
++ start_pos = VIsual;
++
++ /* make sure, searching further will extend the match */
++ if (VIsual_active)
++ {
++ if (forward)
++ incl(&pos);
++ else
++ decl(&pos);
++ }
++ }
++ else
++ orig_pos = pos = start_pos = curwin->w_cursor;
++
++ /*
++ * The trick is to first search backwards and then search forward again,
++ * so that a match at the current cursor position will be correctly
++ * captured.
++ */
++ for (i = 0; i < 2; i++)
++ {
++ if (i && count == 1)
++ flags = SEARCH_START;
++
++ if (forward)
++ dir = i;
++ else
++ dir = !i;
++ result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD),
++ spats[last_idx].pat, (long) (i ? count : 1),
++ SEARCH_KEEP | flags | (dir ? 0 : SEARCH_END),
++ RE_SEARCH, 0, NULL);
++
++ /* First search may fail, but then start searching from the
++ * beginning of the file (cursor might be on the search match)
++ * except when Visual mode is active, so that extending the visual
++ * selection works. */
++ if (!result && i) /* not found, abort */
++ {
++ curwin->w_cursor = orig_pos;
++ if (VIsual_active)
++ VIsual = save_VIsual;
++ p_ws = old_p_ws;
++ return FAIL;
++ }
++ else if (!i && !result && !visual_active)
++ {
++ if (forward) /* try again from start of buffer */
++ {
++ clearpos(&pos);
++ }
++ else /* try again from end of buffer */
++ {
++ /* searching backwards, so set pos to last line and col */
++ pos.lnum = curwin->w_buffer->b_ml.ml_line_count;
++ pos.col = STRLEN(ml_get(curwin->w_buffer->b_ml.ml_line_count));
++ }
++ }
++
++ }
++
++ start_pos = pos;
++ flags = (forward ? SEARCH_END : 0);
++
++ /* move to match */
++ result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD),
++ spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL);
++
++ if (!VIsual_active)
++ VIsual = start_pos;
++
++ p_ws = old_p_ws;
++ curwin->w_cursor = pos;
++ VIsual_active = TRUE;
++ VIsual_mode = 'v';
++
++ if (VIsual_active)
++ {
++ redraw_curbuf_later(INVERTED); /* update the inversion */
++ if (*p_sel == 'e' && ltoreq(VIsual, curwin->w_cursor))
++ inc_cursor();
++ }
++
++ #ifdef FEAT_FOLDING
++ if (fdo_flags & FDO_SEARCH && KeyTyped)
++ foldOpenCursor();
++ #endif
++
++ may_start_select('c');
++ #ifdef FEAT_MOUSE
++ setmouse();
++ #endif
++ #ifdef FEAT_CLIPBOARD
++ /* Make sure the clipboard gets updated. Needed because start and
++ * end are still the same, and the selection needs to be owned */
++ clip_star.vmode = NUL;
++ #endif
++ redraw_curbuf_later(INVERTED);
++ showmode();
++
++ return OK;
++ }
++ #endif /* FEAT_VISUAL */
++
+ /*
+ * Find sentence(s) under the cursor, cursor at end.
+ * When Visual active, extend it by one or more sentences.
+***************
+*** 3420,3426 ****
+
+ #ifdef FEAT_VISUAL
+ /*
+! * When visual area is bigger than one character: Extend it.
+ */
+ if (VIsual_active && !equalpos(start_pos, VIsual))
+ {
+--- 3565,3571 ----
+
+ #ifdef FEAT_VISUAL
+ /*
+! * When the Visual area is bigger than one character: Extend it.
+ */
+ if (VIsual_active && !equalpos(start_pos, VIsual))
+ {
+***************
+*** 3508,3515 ****
+ #endif
+
+ /*
+! * If cursor started on blank, check if it is just before the start of the
+! * next sentence.
+ */
+ while (c = gchar_pos(&pos), vim_iswhite(c)) /* vim_iswhite() is a macro */
+ incl(&pos);
+--- 3653,3660 ----
+ #endif
+
+ /*
+! * If the cursor started on a blank, check if it is just before the start
+! * of the next sentence.
+ */
+ while (c = gchar_pos(&pos), vim_iswhite(c)) /* vim_iswhite() is a macro */
+ incl(&pos);
+***************
+*** 3558,3564 ****
+ #ifdef FEAT_VISUAL
+ if (VIsual_active)
+ {
+! /* avoid getting stuck with "is" on a single space before a sent. */
+ if (equalpos(start_pos, curwin->w_cursor))
+ goto extend;
+ if (*p_sel == 'e')
+--- 3703,3709 ----
+ #ifdef FEAT_VISUAL
+ if (VIsual_active)
+ {
+! /* Avoid getting stuck with "is" on a single space before a sentence. */
+ if (equalpos(start_pos, curwin->w_cursor))
+ goto extend;
+ if (*p_sel == 'e')
+*** ../vim-7.3.609/src/testdir/test53.in 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test53.in 2012-07-25 15:01:34.000000000 +0200
+***************
+*** 28,33 ****
+--- 28,40 ----
+ :put =matchstr(\"abcd\", \".\", 0, -1) " a
+ :put =match(\"abcd\", \".\", 0, 5) " -1
+ :put =match(\"abcd\", \".\", 0, -1) " 0
++ /^foobar
++ gncsearchmatch/one\_s*two\_s
++ :1
++ gnd
++ /[a]bcdx
++ :1
++ 2gnd
+ :/^start:/,/^end:/wq! test.out
+ ENDTEST
+
+***************
+*** 45,48 ****
+--- 52,60 ----
+ -<b>asdf<i>Xasdf</i>asdf</b>-
+ -<b>asdX<i>as<b />df</i>asdf</b>-
+ </begin>
++ SEARCH:
++ foobar
++ one
++ two
++ abcdx | abcdx | abcdx
+ end:
+*** ../vim-7.3.609/src/testdir/test53.ok 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test53.ok 2012-07-25 14:24:01.000000000 +0200
+***************
+*** 18,21 ****
+--- 18,24 ----
+ a
+ -1
+ 0
++ SEARCH:
++ searchmatch
++ abcdx | | abcdx
+ end:
+*** ../vim-7.3.609/src/version.c 2012-07-25 13:46:25.000000000 +0200
+--- src/version.c 2012-07-25 15:03:43.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 610,
+ /**/
+
+--
+Did you ever see a "Hit any key to continue" message in a music piece?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.611 b/source/ap/vim/patches/7.3.611
new file mode 100644
index 000000000..5e366a784
--- /dev/null
+++ b/source/ap/vim/patches/7.3.611
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.611
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.611
+Problem: Can't use Vim dictionary as self argument in Python.
+Solution: Fix the check for the "self" argument. (ZyX)
+Files: src/if_py_both.h
+
+
+*** ../vim-7.3.610/src/if_py_both.h 2012-06-30 13:34:29.000000000 +0200
+--- src/if_py_both.h 2012-07-25 15:32:10.000000000 +0200
+***************
+*** 1284,1292 ****
+ selfdictObject = PyDict_GetItemString(kwargs, "self");
+ if (selfdictObject != NULL)
+ {
+! if (!PyDict_Check(selfdictObject))
+ {
+! PyErr_SetString(PyExc_TypeError, _("'self' argument must be a dictionary"));
+ clear_tv(&args);
+ return NULL;
+ }
+--- 1284,1293 ----
+ selfdictObject = PyDict_GetItemString(kwargs, "self");
+ if (selfdictObject != NULL)
+ {
+! if (!PyMapping_Check(selfdictObject))
+ {
+! PyErr_SetString(PyExc_TypeError,
+! _("'self' argument must be a dictionary"));
+ clear_tv(&args);
+ return NULL;
+ }
+*** ../vim-7.3.610/src/version.c 2012-07-25 15:06:20.000000000 +0200
+--- src/version.c 2012-07-25 15:32:24.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 611,
+ /**/
+
+--
+In Joseph Heller's novel "Catch-22", the main character tries to get out of a
+war by proving he is crazy. But the mere fact he wants to get out of the war
+only shows he isn't crazy -- creating the original "Catch-22".
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.612 b/source/ap/vim/patches/7.3.612
new file mode 100644
index 000000000..7b2207ede
--- /dev/null
+++ b/source/ap/vim/patches/7.3.612
@@ -0,0 +1,83 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.612
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.612
+Problem: Auto formatting messes up text when 'fo' contains "2". (ZyX)
+Solution: Decrement "less_cols". (Tor Perkins)
+Files: src/misc1.c, src/testdir/test68.in, src/testdir/test68.ok
+
+
+*** ../vim-7.3.611/src/misc1.c 2012-07-06 16:49:37.000000000 +0200
+--- src/misc1.c 2012-07-25 16:03:58.000000000 +0200
+***************
+*** 1329,1334 ****
+--- 1329,1335 ----
+ for (i = 0; i < padding; i++)
+ {
+ STRCAT(leader, " ");
++ less_cols--;
+ newcol++;
+ }
+ }
+*** ../vim-7.3.611/src/testdir/test68.in 2012-06-29 15:04:34.000000000 +0200
+--- src/testdir/test68.in 2012-07-25 15:57:06.000000000 +0200
+***************
+*** 94,99 ****
+--- 94,109 ----
+ }
+
+ STARTTEST
++ /mno pqr/
++ :setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/
++ A vwx yz
++ ENDTEST
++
++ /* abc def ghi jkl
++ * mno pqr stu
++ */
++
++ STARTTEST
+ /^#/
+ :setl tw=12 fo=tqnc comments=:#
+ A foobar
+*** ../vim-7.3.611/src/testdir/test68.ok 2012-06-29 23:57:50.000000000 +0200
+--- src/testdir/test68.ok 2012-07-25 16:03:05.000000000 +0200
+***************
+*** 57,62 ****
+--- 57,68 ----
+ { 1aa ^^2bb }
+
+
++ /* abc def ghi jkl
++ * mno pqr stu
++ * vwx yz
++ */
++
++
+ # 1 xxxxx
+ # foobar
+
+*** ../vim-7.3.611/src/version.c 2012-07-25 15:36:00.000000000 +0200
+--- src/version.c 2012-07-25 16:08:02.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 612,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+169. You hire a housekeeper for your home page.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.613 b/source/ap/vim/patches/7.3.613
new file mode 100644
index 000000000..520e87c38
--- /dev/null
+++ b/source/ap/vim/patches/7.3.613
@@ -0,0 +1,149 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.613
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.613
+Problem: Including Python's config.c in the build causes trouble. It is
+ not clear why it was there.
+Solution: Omit the config file. (James McCoy)
+Files: src/Makefile, src/auto/configure, src/configure.in
+
+
+*** ../vim-7.3.612/src/Makefile 2012-06-20 18:39:12.000000000 +0200
+--- src/Makefile 2012-07-25 16:22:57.000000000 +0200
+***************
+*** 2559,2577 ****
+ objects/if_perlsfio.o: if_perlsfio.c
+ $(CCC) $(PERL_CFLAGS) -o $@ if_perlsfio.c
+
+- objects/py_config.o: $(PYTHON_CONFDIR)/config.c
+- $(CCC) $(PYTHON_CFLAGS) -o $@ $(PYTHON_CONFDIR)/config.c \
+- -I$(PYTHON_CONFDIR) -DHAVE_CONFIG_H -DNO_MAIN
+-
+ objects/py_getpath.o: $(PYTHON_CONFDIR)/getpath.c
+ $(CCC) $(PYTHON_CFLAGS) -o $@ $(PYTHON_CONFDIR)/getpath.c \
+ -I$(PYTHON_CONFDIR) -DHAVE_CONFIG_H -DNO_MAIN \
+ $(PYTHON_GETPATH_CFLAGS)
+
+- objects/py3_config.o: $(PYTHON3_CONFDIR)/config.c
+- $(CCC) $(PYTHON3_CFLAGS) -o $@ $(PYTHON3_CONFDIR)/config.c \
+- -I$(PYTHON3_CONFDIR) -DHAVE_CONFIG_H -DNO_MAIN
+-
+ objects/if_python.o: if_python.c if_py_both.h
+ $(CCC) $(PYTHON_CFLAGS) $(PYTHON_CFLAGS_EXTRA) -o $@ if_python.c
+
+--- 2559,2569 ----
+*** ../vim-7.3.612/src/auto/configure 2012-06-13 19:19:36.000000000 +0200
+--- src/auto/configure 2012-07-25 16:23:49.000000000 +0200
+***************
+*** 5357,5367 ****
+ PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
+ fi
+ PYTHON_SRC="if_python.c"
+! if test "x$MACOSX" = "xyes"; then
+! PYTHON_OBJ="objects/if_python.o"
+! else
+! PYTHON_OBJ="objects/if_python.o objects/py_config.o"
+! fi
+ if test "${vi_cv_var_python_version}" = "1.4"; then
+ PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
+ fi
+--- 5357,5363 ----
+ PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
+ fi
+ PYTHON_SRC="if_python.c"
+! PYTHON_OBJ="objects/if_python.o"
+ if test "${vi_cv_var_python_version}" = "1.4"; then
+ PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
+ fi
+***************
+*** 5656,5666 ****
+ PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ fi
+ PYTHON3_SRC="if_python3.c"
+! if test "x$MACOSX" = "xyes"; then
+! PYTHON3_OBJ="objects/if_python3.o"
+! else
+! PYTHON3_OBJ="objects/if_python3.o objects/py3_config.o"
+! fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread should be used" >&5
+ $as_echo_n "checking if -pthread should be used... " >&6; }
+--- 5652,5658 ----
+ PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ fi
+ PYTHON3_SRC="if_python3.c"
+! PYTHON3_OBJ="objects/if_python3.o"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread should be used" >&5
+ $as_echo_n "checking if -pthread should be used... " >&6; }
+*** ../vim-7.3.612/src/configure.in 2012-06-13 19:19:36.000000000 +0200
+--- src/configure.in 2012-07-25 16:23:41.000000000 +0200
+***************
+*** 916,927 ****
+ PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
+ fi
+ PYTHON_SRC="if_python.c"
+! dnl For Mac OSX 10.2 config.o is included in the Python library.
+! if test "x$MACOSX" = "xyes"; then
+! PYTHON_OBJ="objects/if_python.o"
+! else
+! PYTHON_OBJ="objects/if_python.o objects/py_config.o"
+! fi
+ if test "${vi_cv_var_python_version}" = "1.4"; then
+ PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
+ fi
+--- 916,922 ----
+ PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
+ fi
+ PYTHON_SRC="if_python.c"
+! PYTHON_OBJ="objects/if_python.o"
+ if test "${vi_cv_var_python_version}" = "1.4"; then
+ PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
+ fi
+***************
+*** 1106,1117 ****
+ PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ fi
+ PYTHON3_SRC="if_python3.c"
+! dnl For Mac OSX 10.2 config.o is included in the Python library.
+! if test "x$MACOSX" = "xyes"; then
+! PYTHON3_OBJ="objects/if_python3.o"
+! else
+! PYTHON3_OBJ="objects/if_python3.o objects/py3_config.o"
+! fi
+
+ dnl On FreeBSD linking with "-pthread" is required to use threads.
+ dnl _THREAD_SAFE must be used for compiling then.
+--- 1101,1107 ----
+ PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+ fi
+ PYTHON3_SRC="if_python3.c"
+! PYTHON3_OBJ="objects/if_python3.o"
+
+ dnl On FreeBSD linking with "-pthread" is required to use threads.
+ dnl _THREAD_SAFE must be used for compiling then.
+*** ../vim-7.3.612/src/version.c 2012-07-25 16:09:59.000000000 +0200
+--- src/version.c 2012-07-25 16:29:52.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 613,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+170. You introduce your wife as "my_lady@home.wife" and refer to your
+ children as "forked processes."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.614 b/source/ap/vim/patches/7.3.614
new file mode 100644
index 000000000..87d7a4512
--- /dev/null
+++ b/source/ap/vim/patches/7.3.614
@@ -0,0 +1,176 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.614
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.614
+Problem: Number argument gets turned into a number while it should be a
+ string.
+Solution: Add flag to the call_vim_function() call. (Yasuhiro Matsumoto)
+Files: src/edit.c, src/eval.c, src/proto/eval.pro
+
+
+*** ../vim-7.3.613/src/edit.c 2012-07-10 17:14:50.000000000 +0200
+--- src/edit.c 2012-07-25 16:40:07.000000000 +0200
+***************
+*** 3959,3965 ****
+ curbuf_save = curbuf;
+
+ /* Call a function, which returns a list or dict. */
+! if (call_vim_function(funcname, 2, args, FALSE, &rettv) == OK)
+ {
+ switch (rettv.v_type)
+ {
+--- 3959,3965 ----
+ curbuf_save = curbuf;
+
+ /* Call a function, which returns a list or dict. */
+! if (call_vim_function(funcname, 2, args, FALSE, FALSE, &rettv) == OK)
+ {
+ switch (rettv.v_type)
+ {
+*** ../vim-7.3.613/src/eval.c 2012-07-19 18:05:40.000000000 +0200
+--- src/eval.c 2012-07-25 16:42:41.000000000 +0200
+***************
+*** 1564,1574 ****
+ * Returns OK or FAIL.
+ */
+ int
+! call_vim_function(func, argc, argv, safe, rettv)
+ char_u *func;
+ int argc;
+ char_u **argv;
+ int safe; /* use the sandbox */
+ typval_T *rettv;
+ {
+ typval_T *argvars;
+--- 1564,1575 ----
+ * Returns OK or FAIL.
+ */
+ int
+! call_vim_function(func, argc, argv, safe, str_arg_only, rettv)
+ char_u *func;
+ int argc;
+ char_u **argv;
+ int safe; /* use the sandbox */
++ int str_arg_only; /* all arguments are strings */
+ typval_T *rettv;
+ {
+ typval_T *argvars;
+***************
+*** 1593,1600 ****
+ continue;
+ }
+
+! /* Recognize a number argument, the others must be strings. */
+! vim_str2nr(argv[i], NULL, &len, TRUE, TRUE, &n, NULL);
+ if (len != 0 && len == (int)STRLEN(argv[i]))
+ {
+ argvars[i].v_type = VAR_NUMBER;
+--- 1594,1604 ----
+ continue;
+ }
+
+! if (str_arg_only)
+! len = 0;
+! else
+! /* Recognize a number argument, the others must be strings. */
+! vim_str2nr(argv[i], NULL, &len, TRUE, TRUE, &n, NULL);
+ if (len != 0 && len == (int)STRLEN(argv[i]))
+ {
+ argvars[i].v_type = VAR_NUMBER;
+***************
+*** 1646,1652 ****
+ typval_T rettv;
+ char_u *retval;
+
+! if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL)
+ return NULL;
+
+ retval = vim_strsave(get_tv_string(&rettv));
+--- 1650,1657 ----
+ typval_T rettv;
+ char_u *retval;
+
+! /* All arguments are passed as strings, no conversion to number. */
+! if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL)
+ return NULL;
+
+ retval = vim_strsave(get_tv_string(&rettv));
+***************
+*** 1671,1677 ****
+ typval_T rettv;
+ long retval;
+
+! if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL)
+ return -1;
+
+ retval = get_tv_number_chk(&rettv, NULL);
+--- 1676,1683 ----
+ typval_T rettv;
+ long retval;
+
+! /* All arguments are passed as strings, no conversion to number. */
+! if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL)
+ return -1;
+
+ retval = get_tv_number_chk(&rettv, NULL);
+***************
+*** 1694,1700 ****
+ {
+ typval_T rettv;
+
+! if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL)
+ return NULL;
+
+ if (rettv.v_type != VAR_LIST)
+--- 1700,1707 ----
+ {
+ typval_T rettv;
+
+! /* All arguments are passed as strings, no conversion to number. */
+! if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL)
+ return NULL;
+
+ if (rettv.v_type != VAR_LIST)
+*** ../vim-7.3.613/src/proto/eval.pro 2012-07-16 17:31:48.000000000 +0200
+--- src/proto/eval.pro 2012-07-25 16:42:59.000000000 +0200
+***************
+*** 23,29 ****
+ list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr));
+ int get_spellword __ARGS((list_T *list, char_u **pp));
+ typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd));
+! int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, typval_T *rettv));
+ void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe));
+ long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe));
+ void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe));
+--- 23,29 ----
+ list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr));
+ int get_spellword __ARGS((list_T *list, char_u **pp));
+ typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd));
+! int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, int str_arg_only, typval_T *rettv));
+ void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe));
+ long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe));
+ void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe));
+*** ../vim-7.3.613/src/version.c 2012-07-25 16:32:03.000000000 +0200
+--- src/version.c 2012-07-25 16:46:11.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 614,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+171. You invent another person and chat with yourself in empty chat rooms.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.615 b/source/ap/vim/patches/7.3.615
new file mode 100644
index 000000000..96f6885fa
--- /dev/null
+++ b/source/ap/vim/patches/7.3.615
@@ -0,0 +1,107 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.615
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.615
+Problem: Completion for a user command does not recognize backslash before
+ a space.
+Solution: Recognize escaped characters. (Yasuhiro Matsumoto)
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.3.614/src/ex_docmd.c 2012-07-10 19:25:06.000000000 +0200
+--- src/ex_docmd.c 2012-07-25 17:10:16.000000000 +0200
+***************
+*** 3390,3401 ****
+ return NULL;
+
+ /* Find start of last argument (argument just before cursor): */
+! p = buff + STRLEN(buff);
+! while (p != arg && *p != ' ' && *p != TAB)
+! p--;
+! if (*p == ' ' || *p == TAB)
+! p++;
+ xp->xp_pattern = p;
+
+ if (ea.argt & XFILE)
+ {
+--- 3390,3412 ----
+ return NULL;
+
+ /* Find start of last argument (argument just before cursor): */
+! p = buff;
+ xp->xp_pattern = p;
++ len = STRLEN(buff);
++ while (*p && p < buff + len)
++ {
++ if (*p == ' ' || *p == TAB)
++ {
++ /* argument starts after a space */
++ xp->xp_pattern = ++p;
++ }
++ else
++ {
++ if (*p == '\\' && *(p + 1) != NUL)
++ ++p; /* skip over escaped character */
++ mb_ptr_adv(p);
++ }
++ }
+
+ if (ea.argt & XFILE)
+ {
+***************
+*** 3821,3828 ****
+ if (compl == EXPAND_MAPPINGS)
+ return set_context_in_map_cmd(xp, (char_u *)"map",
+ arg, forceit, FALSE, FALSE, CMD_map);
+! while ((xp->xp_pattern = vim_strchr(arg, ' ')) != NULL)
+! arg = xp->xp_pattern + 1;
+ xp->xp_pattern = arg;
+ }
+ xp->xp_context = compl;
+--- 3832,3853 ----
+ if (compl == EXPAND_MAPPINGS)
+ return set_context_in_map_cmd(xp, (char_u *)"map",
+ arg, forceit, FALSE, FALSE, CMD_map);
+! /* Find start of last argument. */
+! p = arg;
+! while (*p)
+! {
+! if (*p == ' ')
+! {
+! /* argument starts after a space */
+! arg = p + 1;
+! }
+! else
+! {
+! if (*p == '\\' && *(p + 1) != NUL)
+! ++p; /* skip over escaped character */
+! mb_ptr_adv(p);
+! }
+! }
+ xp->xp_pattern = arg;
+ }
+ xp->xp_context = compl;
+*** ../vim-7.3.614/src/version.c 2012-07-25 16:46:59.000000000 +0200
+--- src/version.c 2012-07-25 17:17:05.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 615,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+172. You join listservers just for the extra e-mail.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.616 b/source/ap/vim/patches/7.3.616
new file mode 100644
index 000000000..5898eafe9
--- /dev/null
+++ b/source/ap/vim/patches/7.3.616
@@ -0,0 +1,46 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.616
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.616 (after 7.3.610)
+Problem: Can't compile without +visual.
+Solution: Add #ifdef.
+Files: src/normal.c
+
+
+*** ../vim-7.3.615/src/normal.c 2012-07-25 15:06:20.000000000 +0200
+--- src/normal.c 2012-07-27 20:52:01.000000000 +0200
+***************
+*** 8002,8008 ****
+--- 8002,8010 ----
+ */
+ case 'N':
+ case 'n':
++ #ifdef FEAT_VISUAL
+ if (!current_search(cap->count1, cap->nchar == 'n'))
++ #endif
+ beep_flush();
+
+ break;
+*** ../vim-7.3.615/src/version.c 2012-07-25 17:22:17.000000000 +0200
+--- src/version.c 2012-07-27 20:52:58.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 616,
+ /**/
+
+--
+The CIA drives around in cars with the "Intel inside" logo.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.617 b/source/ap/vim/patches/7.3.617
new file mode 100644
index 000000000..48062cd2a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.617
@@ -0,0 +1,65 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.617
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.617 (after 7.3.615)
+Problem: Hang on completion.
+Solution: Skip over the space. (Yasuhiro Matsumoto)
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.3.616/src/ex_docmd.c 2012-07-25 17:22:17.000000000 +0200
+--- src/ex_docmd.c 2012-07-27 21:07:42.000000000 +0200
+***************
+*** 3837,3852 ****
+ while (*p)
+ {
+ if (*p == ' ')
+- {
+ /* argument starts after a space */
+ arg = p + 1;
+! }
+! else
+! {
+! if (*p == '\\' && *(p + 1) != NUL)
+! ++p; /* skip over escaped character */
+! mb_ptr_adv(p);
+! }
+ }
+ xp->xp_pattern = arg;
+ }
+--- 3837,3847 ----
+ while (*p)
+ {
+ if (*p == ' ')
+ /* argument starts after a space */
+ arg = p + 1;
+! else if (*p == '\\' && *(p + 1) != NUL)
+! ++p; /* skip over escaped character */
+! mb_ptr_adv(p);
+ }
+ xp->xp_pattern = arg;
+ }
+*** ../vim-7.3.616/src/version.c 2012-07-27 21:05:51.000000000 +0200
+--- src/version.c 2012-07-27 21:08:31.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 617,
+ /**/
+
+--
+If Microsoft would build a car...
+... You'd have to press the "Start" button to turn the engine off.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.618 b/source/ap/vim/patches/7.3.618
new file mode 100644
index 000000000..d0cc9c681
--- /dev/null
+++ b/source/ap/vim/patches/7.3.618
@@ -0,0 +1,367 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.618
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.618 (after 7.3.616)
+Problem: Still doesn't compile with small features.
+Solution: Move current_search() out of #ifdef. (Dominique Pelle)
+Files: src/normal.c, src/search.c
+
+
+*** ../vim-7.3.617/src/normal.c 2012-07-27 21:05:51.000000000 +0200
+--- src/normal.c 2012-07-28 13:34:13.000000000 +0200
+***************
+*** 7995,8000 ****
+--- 7995,8001 ----
+ cap->arg = TRUE;
+ nv_visual(cap);
+ break;
++ #endif /* FEAT_VISUAL */
+
+ /* "gn", "gN" visually select next/previous search match
+ * "gn" selects next match
+***************
+*** 8006,8014 ****
+ if (!current_search(cap->count1, cap->nchar == 'n'))
+ #endif
+ beep_flush();
+-
+ break;
+- #endif /* FEAT_VISUAL */
+
+ /*
+ * "gj" and "gk" two new funny movement keys -- up and down
+--- 8007,8013 ----
+*** ../vim-7.3.617/src/search.c 2012-07-25 15:06:20.000000000 +0200
+--- src/search.c 2012-07-28 13:37:19.000000000 +0200
+***************
+*** 3397,3547 ****
+ return OK;
+ }
+
+- #if defined(FEAT_VISUAL) || defined(PROTO)
+- /*
+- * Find next search match under cursor, cursor at end.
+- * Used while an operator is pending, and in Visual mode.
+- * TODO: redo only works when used in operator pending mode
+- */
+- int
+- current_search(count, forward)
+- long count;
+- int forward; /* move forward or backwards */
+- {
+- pos_T start_pos; /* position before the pattern */
+- pos_T orig_pos; /* position of the cursor at beginning */
+- pos_T pos; /* position after the pattern */
+- int i;
+- int dir;
+- int result; /* result of various function calls */
+- char_u old_p_ws = p_ws;
+- int visual_active = FALSE;
+- int flags = 0;
+- pos_T save_VIsual;
+-
+-
+- /* wrapping should not occur */
+- p_ws = FALSE;
+-
+- /* Correct cursor when 'selection' is exclusive */
+- if (VIsual_active && *p_sel == 'e' && lt(VIsual, curwin->w_cursor))
+- dec_cursor();
+-
+- if (VIsual_active)
+- {
+- orig_pos = curwin->w_cursor;
+- save_VIsual = VIsual;
+- visual_active = TRUE;
+-
+- /* just started visual selection, only one character */
+- if (equalpos(VIsual, curwin->w_cursor))
+- visual_active = FALSE;
+-
+- pos = curwin->w_cursor;
+- start_pos = VIsual;
+-
+- /* make sure, searching further will extend the match */
+- if (VIsual_active)
+- {
+- if (forward)
+- incl(&pos);
+- else
+- decl(&pos);
+- }
+- }
+- else
+- orig_pos = pos = start_pos = curwin->w_cursor;
+-
+- /*
+- * The trick is to first search backwards and then search forward again,
+- * so that a match at the current cursor position will be correctly
+- * captured.
+- */
+- for (i = 0; i < 2; i++)
+- {
+- if (i && count == 1)
+- flags = SEARCH_START;
+-
+- if (forward)
+- dir = i;
+- else
+- dir = !i;
+- result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD),
+- spats[last_idx].pat, (long) (i ? count : 1),
+- SEARCH_KEEP | flags | (dir ? 0 : SEARCH_END),
+- RE_SEARCH, 0, NULL);
+-
+- /* First search may fail, but then start searching from the
+- * beginning of the file (cursor might be on the search match)
+- * except when Visual mode is active, so that extending the visual
+- * selection works. */
+- if (!result && i) /* not found, abort */
+- {
+- curwin->w_cursor = orig_pos;
+- if (VIsual_active)
+- VIsual = save_VIsual;
+- p_ws = old_p_ws;
+- return FAIL;
+- }
+- else if (!i && !result && !visual_active)
+- {
+- if (forward) /* try again from start of buffer */
+- {
+- clearpos(&pos);
+- }
+- else /* try again from end of buffer */
+- {
+- /* searching backwards, so set pos to last line and col */
+- pos.lnum = curwin->w_buffer->b_ml.ml_line_count;
+- pos.col = STRLEN(ml_get(curwin->w_buffer->b_ml.ml_line_count));
+- }
+- }
+-
+- }
+-
+- start_pos = pos;
+- flags = (forward ? SEARCH_END : 0);
+-
+- /* move to match */
+- result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD),
+- spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL);
+-
+- if (!VIsual_active)
+- VIsual = start_pos;
+-
+- p_ws = old_p_ws;
+- curwin->w_cursor = pos;
+- VIsual_active = TRUE;
+- VIsual_mode = 'v';
+-
+- if (VIsual_active)
+- {
+- redraw_curbuf_later(INVERTED); /* update the inversion */
+- if (*p_sel == 'e' && ltoreq(VIsual, curwin->w_cursor))
+- inc_cursor();
+- }
+-
+- #ifdef FEAT_FOLDING
+- if (fdo_flags & FDO_SEARCH && KeyTyped)
+- foldOpenCursor();
+- #endif
+-
+- may_start_select('c');
+- #ifdef FEAT_MOUSE
+- setmouse();
+- #endif
+- #ifdef FEAT_CLIPBOARD
+- /* Make sure the clipboard gets updated. Needed because start and
+- * end are still the same, and the selection needs to be owned */
+- clip_star.vmode = NUL;
+- #endif
+- redraw_curbuf_later(INVERTED);
+- showmode();
+-
+- return OK;
+- }
+- #endif /* FEAT_VISUAL */
+-
+ /*
+ * Find sentence(s) under the cursor, cursor at end.
+ * When Visual active, extend it by one or more sentences.
+--- 3397,3402 ----
+***************
+*** 4670,4675 ****
+--- 4525,4675 ----
+
+ #endif /* FEAT_TEXTOBJ */
+
++ #if defined(FEAT_VISUAL) || defined(PROTO)
++ /*
++ * Find next search match under cursor, cursor at end.
++ * Used while an operator is pending, and in Visual mode.
++ * TODO: redo only works when used in operator pending mode
++ */
++ int
++ current_search(count, forward)
++ long count;
++ int forward; /* move forward or backwards */
++ {
++ pos_T start_pos; /* position before the pattern */
++ pos_T orig_pos; /* position of the cursor at beginning */
++ pos_T pos; /* position after the pattern */
++ int i;
++ int dir;
++ int result; /* result of various function calls */
++ char_u old_p_ws = p_ws;
++ int visual_active = FALSE;
++ int flags = 0;
++ pos_T save_VIsual;
++
++
++ /* wrapping should not occur */
++ p_ws = FALSE;
++
++ /* Correct cursor when 'selection' is exclusive */
++ if (VIsual_active && *p_sel == 'e' && lt(VIsual, curwin->w_cursor))
++ dec_cursor();
++
++ if (VIsual_active)
++ {
++ orig_pos = curwin->w_cursor;
++ save_VIsual = VIsual;
++ visual_active = TRUE;
++
++ /* just started visual selection, only one character */
++ if (equalpos(VIsual, curwin->w_cursor))
++ visual_active = FALSE;
++
++ pos = curwin->w_cursor;
++ start_pos = VIsual;
++
++ /* make sure, searching further will extend the match */
++ if (VIsual_active)
++ {
++ if (forward)
++ incl(&pos);
++ else
++ decl(&pos);
++ }
++ }
++ else
++ orig_pos = pos = start_pos = curwin->w_cursor;
++
++ /*
++ * The trick is to first search backwards and then search forward again,
++ * so that a match at the current cursor position will be correctly
++ * captured.
++ */
++ for (i = 0; i < 2; i++)
++ {
++ if (i && count == 1)
++ flags = SEARCH_START;
++
++ if (forward)
++ dir = i;
++ else
++ dir = !i;
++ result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD),
++ spats[last_idx].pat, (long) (i ? count : 1),
++ SEARCH_KEEP | flags | (dir ? 0 : SEARCH_END),
++ RE_SEARCH, 0, NULL);
++
++ /* First search may fail, but then start searching from the
++ * beginning of the file (cursor might be on the search match)
++ * except when Visual mode is active, so that extending the visual
++ * selection works. */
++ if (!result && i) /* not found, abort */
++ {
++ curwin->w_cursor = orig_pos;
++ if (VIsual_active)
++ VIsual = save_VIsual;
++ p_ws = old_p_ws;
++ return FAIL;
++ }
++ else if (!i && !result && !visual_active)
++ {
++ if (forward) /* try again from start of buffer */
++ {
++ clearpos(&pos);
++ }
++ else /* try again from end of buffer */
++ {
++ /* searching backwards, so set pos to last line and col */
++ pos.lnum = curwin->w_buffer->b_ml.ml_line_count;
++ pos.col = STRLEN(ml_get(curwin->w_buffer->b_ml.ml_line_count));
++ }
++ }
++
++ }
++
++ start_pos = pos;
++ flags = (forward ? SEARCH_END : 0);
++
++ /* move to match */
++ result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD),
++ spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL);
++
++ if (!VIsual_active)
++ VIsual = start_pos;
++
++ p_ws = old_p_ws;
++ curwin->w_cursor = pos;
++ VIsual_active = TRUE;
++ VIsual_mode = 'v';
++
++ if (VIsual_active)
++ {
++ redraw_curbuf_later(INVERTED); /* update the inversion */
++ if (*p_sel == 'e' && ltoreq(VIsual, curwin->w_cursor))
++ inc_cursor();
++ }
++
++ #ifdef FEAT_FOLDING
++ if (fdo_flags & FDO_SEARCH && KeyTyped)
++ foldOpenCursor();
++ #endif
++
++ may_start_select('c');
++ #ifdef FEAT_MOUSE
++ setmouse();
++ #endif
++ #ifdef FEAT_CLIPBOARD
++ /* Make sure the clipboard gets updated. Needed because start and
++ * end are still the same, and the selection needs to be owned */
++ clip_star.vmode = NUL;
++ #endif
++ redraw_curbuf_later(INVERTED);
++ showmode();
++
++ return OK;
++ }
++ #endif /* FEAT_VISUAL */
++
+ #if defined(FEAT_LISP) || defined(FEAT_CINDENT) || defined(FEAT_TEXTOBJ) \
+ || defined(PROTO)
+ /*
+*** ../vim-7.3.617/src/version.c 2012-07-27 21:12:03.000000000 +0200
+--- src/version.c 2012-07-29 12:54:29.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 618,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+185. You order fast food over the Internet
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.619 b/source/ap/vim/patches/7.3.619
new file mode 100644
index 000000000..1fedcc786
--- /dev/null
+++ b/source/ap/vim/patches/7.3.619
@@ -0,0 +1,50 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.619
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.619
+Problem: When executing a shell command Vim may become slow to respond.
+Solution: Don't wait after every processed message. (idea by Yasuhiro
+ Matsumoto)
+Files: src/os_win32.c
+
+
+*** ../vim-7.3.618/src/os_win32.c 2012-07-19 11:37:22.000000000 +0200
+--- src/os_win32.c 2012-08-02 12:30:52.000000000 +0200
+***************
+*** 3319,3324 ****
+--- 3319,3326 ----
+ {
+ TranslateMessage(&msg);
+ pDispatchMessage(&msg);
++ delay = 1;
++ continue;
+ }
+ if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT)
+ break;
+*** ../vim-7.3.618/src/version.c 2012-07-29 12:55:21.000000000 +0200
+--- src/version.c 2012-08-02 12:29:08.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 619,
+ /**/
+
+--
+Some of the well know MS-Windows errors:
+ EMULTI Multitasking attempted, system confused
+ EKEYBOARD Keyboard locked, try getting out of this one!
+ EXPLAIN Unexplained error, please tell us what happened
+ EFUTURE Reserved for our future mistakes
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.620 b/source/ap/vim/patches/7.3.620
new file mode 100644
index 000000000..5890f15f9
--- /dev/null
+++ b/source/ap/vim/patches/7.3.620
@@ -0,0 +1,163 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.620
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.620
+Problem: Building with recent Ruby on Win32 doesn't work.
+Solution: Add a separate argument for the API version. (Yasuhiro Matsumoto)
+Files: src/Make_ming.mak, src/Make_mvc.mak
+
+
+*** ../vim-7.3.619/src/Make_ming.mak 2012-07-06 13:40:44.000000000 +0200
+--- src/Make_ming.mak 2012-08-02 17:02:34.000000000 +0200
+***************
+*** 260,266 ****
+ # DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically)
+ # RUBY_VER=[Ruby version, eg 16, 17] (default is 16)
+ # RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.6)
+! # You must set RUBY_VER_LONG when change RUBY_VER.
+ #RUBY=c:/ruby
+ ifdef RUBY
+ ifndef DYNAMIC_RUBY
+--- 260,268 ----
+ # DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically)
+ # RUBY_VER=[Ruby version, eg 16, 17] (default is 16)
+ # RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.6)
+! # You must set RUBY_VER_LONG when changing RUBY_VER.
+! # You must set RUBY_API_VER version to RUBY_VER_LONG.
+! # Don't set ruby API version to RUBY_VER like 191.
+ #RUBY=c:/ruby
+ ifdef RUBY
+ ifndef DYNAMIC_RUBY
+***************
+*** 273,278 ****
+--- 275,283 ----
+ ifndef RUBY_VER_LONG
+ RUBY_VER_LONG = 1.6
+ endif
++ ifndef RUBY_API_VER
++ RUBY_API_VER = $(subst .,,$(RUBY_VER_LONG))
++ endif
+
+ ifndef RUBY_PLATFORM
+ ifeq ($(RUBY_VER), 16)
+***************
+*** 288,296 ****
+
+ ifndef RUBY_INSTALL_NAME
+ ifeq ($(RUBY_VER), 16)
+! RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_VER)
+ else
+! RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_VER)
+ endif
+ endif
+
+--- 293,301 ----
+
+ ifndef RUBY_INSTALL_NAME
+ ifeq ($(RUBY_VER), 16)
+! RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER)
+ else
+! RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER)
+ endif
+ endif
+
+*** ../vim-7.3.619/src/Make_mvc.mak 2012-02-22 16:01:53.000000000 +0100
+--- src/Make_mvc.mak 2012-08-02 17:42:31.000000000 +0200
+***************
+*** 63,68 ****
+--- 63,70 ----
+ # RUBY_VER=[Ruby version, eg 16, 17] (default is 18)
+ # RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.8)
+ # You must set RUBY_VER_LONG when change RUBY_VER.
++ # You must set RUBY_API_VER to RUBY_VER_LONG.
++ # Don't set ruby API version to RUBY_VER like 191.
+ #
+ # Tcl interface:
+ # TCL=[Path to Tcl directory]
+***************
+*** 807,834 ****
+ !ifndef RUBY_VER_LONG
+ RUBY_VER_LONG = 1.8
+ !endif
+
+ !if $(RUBY_VER) >= 18
+ !ifndef RUBY_PLATFORM
+ RUBY_PLATFORM = i386-mswin32
+ !endif
+ !ifndef RUBY_INSTALL_NAME
+! RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_VER)
+ !endif
+ !else
+ !ifndef RUBY_PLATFORM
+ RUBY_PLATFORM = i586-mswin32
+ !endif
+ !ifndef RUBY_INSTALL_NAME
+! RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_VER)
+ !endif
+ !endif # $(RUBY_VER) >= 18
+
+ !message Ruby requested (version $(RUBY_VER)) - root dir is "$(RUBY)"
+ CFLAGS = $(CFLAGS) -DFEAT_RUBY
+ RUBY_OBJ = $(OUTDIR)\if_ruby.obj
+! !if $(RUBY_VER) >= 190
+! RUBY_INC = /I "$(RUBY)\include\ruby-$(RUBY_VER_LONG)\$(RUBY_PLATFORM)" /I "$(RUBY)\include\ruby-$(RUBY_VER_LONG)"
+ !else
+ RUBY_INC = /I "$(RUBY)\lib\ruby\$(RUBY_VER_LONG)\$(RUBY_PLATFORM)"
+ !endif
+--- 813,843 ----
+ !ifndef RUBY_VER_LONG
+ RUBY_VER_LONG = 1.8
+ !endif
++ !ifndef RUBY_API_VER
++ RUBY_API_VER = $(RUBY_VER_LONG:.=)
++ !endif
+
+ !if $(RUBY_VER) >= 18
+ !ifndef RUBY_PLATFORM
+ RUBY_PLATFORM = i386-mswin32
+ !endif
+ !ifndef RUBY_INSTALL_NAME
+! RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER)
+ !endif
+ !else
+ !ifndef RUBY_PLATFORM
+ RUBY_PLATFORM = i586-mswin32
+ !endif
+ !ifndef RUBY_INSTALL_NAME
+! RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER)
+ !endif
+ !endif # $(RUBY_VER) >= 18
+
+ !message Ruby requested (version $(RUBY_VER)) - root dir is "$(RUBY)"
+ CFLAGS = $(CFLAGS) -DFEAT_RUBY
+ RUBY_OBJ = $(OUTDIR)\if_ruby.obj
+! !if $(RUBY_VER) >= 19
+! RUBY_INC = /I "$(RUBY)\lib\ruby\$(RUBY_VER_LONG)\$(RUBY_PLATFORM)" /I "$(RUBY)\include\ruby-$(RUBY_VER_LONG)" /I "$(RUBY)\include\ruby-$(RUBY_VER_LONG)\$(RUBY_PLATFORM)"
+ !else
+ RUBY_INC = /I "$(RUBY)\lib\ruby\$(RUBY_VER_LONG)\$(RUBY_PLATFORM)"
+ !endif
+*** ../vim-7.3.619/src/version.c 2012-08-02 12:31:40.000000000 +0200
+--- src/version.c 2012-08-02 21:20:28.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 620,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+199. You read this entire list of symptoms, looking for something
+ that doesn't describe you.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.621 b/source/ap/vim/patches/7.3.621
new file mode 100644
index 000000000..7e3fe2a55
--- /dev/null
+++ b/source/ap/vim/patches/7.3.621
@@ -0,0 +1,72 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.621
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.621
+Problem: Compiler warnings on 64 bit windows.
+Solution: Add type casts. (Mike Williams)
+Files: src/ex_docmd.c, src/search.c
+
+
+*** ../vim-7.3.620/src/ex_docmd.c 2012-07-27 21:12:03.000000000 +0200
+--- src/ex_docmd.c 2012-08-02 21:19:22.000000000 +0200
+***************
+*** 3392,3398 ****
+ /* Find start of last argument (argument just before cursor): */
+ p = buff;
+ xp->xp_pattern = p;
+! len = STRLEN(buff);
+ while (*p && p < buff + len)
+ {
+ if (*p == ' ' || *p == TAB)
+--- 3392,3398 ----
+ /* Find start of last argument (argument just before cursor): */
+ p = buff;
+ xp->xp_pattern = p;
+! len = (int)STRLEN(buff);
+ while (*p && p < buff + len)
+ {
+ if (*p == ' ' || *p == TAB)
+*** ../vim-7.3.620/src/search.c 2012-07-29 12:55:21.000000000 +0200
+--- src/search.c 2012-08-02 21:20:02.000000000 +0200
+***************
+*** 4621,4627 ****
+ {
+ /* searching backwards, so set pos to last line and col */
+ pos.lnum = curwin->w_buffer->b_ml.ml_line_count;
+! pos.col = STRLEN(ml_get(curwin->w_buffer->b_ml.ml_line_count));
+ }
+ }
+
+--- 4621,4628 ----
+ {
+ /* searching backwards, so set pos to last line and col */
+ pos.lnum = curwin->w_buffer->b_ml.ml_line_count;
+! pos.col = (colnr_T)STRLEN(
+! ml_get(curwin->w_buffer->b_ml.ml_line_count));
+ }
+ }
+
+*** ../vim-7.3.620/src/version.c 2012-08-02 21:21:43.000000000 +0200
+--- src/version.c 2012-08-02 21:23:13.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 621,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+200. You really believe in the concept of a "paperless" office.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.622 b/source/ap/vim/patches/7.3.622
new file mode 100644
index 000000000..a2c260147
--- /dev/null
+++ b/source/ap/vim/patches/7.3.622
@@ -0,0 +1,56 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.622
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.622
+Problem: XPM library for Win32 can't be found.
+Solution: Suggest using the one from the Vim ftp site.
+Files: src/Make_mvc.mak
+
+
+*** ../vim-7.3.621/src/Make_mvc.mak 2012-08-02 21:21:43.000000000 +0200
+--- src/Make_mvc.mak 2012-08-02 21:45:52.000000000 +0200
+***************
+*** 281,287 ****
+
+ !ifdef XPM
+ # XPM - Include support for XPM signs
+! # you can get xpm.lib from http://iamphet.nm.ru/xpm or create it yourself
+ XPM_OBJ = $(OBJDIR)/xpm_w32.obj
+ XPM_DEFS = -DFEAT_XPM_W32
+ XPM_LIB = $(XPM)\lib\libXpm.lib
+--- 281,291 ----
+
+ !ifdef XPM
+ # XPM - Include support for XPM signs
+! # You need to download or build xpm.lib somehow.
+! # You can get the most recent version of libXpm-*.zip from
+! # http://cgit.freedesktop.org/xorg/lib/libXpm
+! # from which you must build xpm.lib yourself
+! # OR get and unpack: ftp://ftp.vim.org/pub/vim/pcextra/xpm.zip
+ XPM_OBJ = $(OBJDIR)/xpm_w32.obj
+ XPM_DEFS = -DFEAT_XPM_W32
+ XPM_LIB = $(XPM)\lib\libXpm.lib
+*** ../vim-7.3.621/src/version.c 2012-08-02 21:24:38.000000000 +0200
+--- src/version.c 2012-08-02 21:46:43.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 622,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+202. You're amazed to find out Spam is a food.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.623 b/source/ap/vim/patches/7.3.623
new file mode 100644
index 000000000..72aea71f6
--- /dev/null
+++ b/source/ap/vim/patches/7.3.623
@@ -0,0 +1,92 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.623
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.623
+Problem: Perl 5.14 commands crash Vim on MS-Windows.
+Solution: Use perl_get_sv() instead of GvSV(). (Raymond Ko)
+Files: src/if_perl.xs
+
+
+*** ../vim-7.3.622/src/if_perl.xs 2012-03-16 19:34:43.000000000 +0100
+--- src/if_perl.xs 2012-08-08 13:15:29.000000000 +0200
+***************
+*** 76,81 ****
+--- 76,87 ----
+ # define EXTERN_C
+ #endif
+
++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) && defined(_MSC_VER)
++ /* Using PL_errgv to get the error message after perl_eval_sv() causes a crash
++ * with MSVC and Perl version 5.14. */
++ # define AVOID_PL_ERRGV
++ #endif
++
+ /* Compatibility hacks over */
+
+ static PerlInterpreter *perl_interp = NULL;
+***************
+*** 796,802 ****
+--- 802,812 ----
+
+ SvREFCNT_dec(sv);
+
++ #ifdef AVOID_PL_ERRGV
++ err = SvPV(perl_get_sv("@", GV_ADD), length);
++ #else
+ err = SvPV(GvSV(PL_errgv), length);
++ #endif
+
+ FREETMPS;
+ LEAVE;
+***************
+*** 866,872 ****
+--- 876,886 ----
+ sv_catpvn(sv, "}", 1);
+ perl_eval_sv(sv, G_DISCARD | G_NOARGS);
+ SvREFCNT_dec(sv);
++ #ifdef AVOID_PL_ERRGV
++ str = SvPV(perl_get_sv("@", GV_ADD), length);
++ #else
+ str = SvPV(GvSV(PL_errgv), length);
++ #endif
+ if (length)
+ goto err;
+
+***************
+*** 880,886 ****
+--- 894,904 ----
+ sv_setpv(GvSV(PL_defgv), (char *)ml_get(i));
+ PUSHMARK(sp);
+ perl_call_pv("VIM::perldo", G_SCALAR | G_EVAL);
++ #ifdef AVOID_PL_ERRGV
++ str = SvPV(perl_get_sv("@", GV_ADD), length);
++ #else
+ str = SvPV(GvSV(PL_errgv), length);
++ #endif
+ if (length)
+ break;
+ SPAGAIN;
+*** ../vim-7.3.622/src/version.c 2012-08-02 21:48:20.000000000 +0200
+--- src/version.c 2012-08-08 13:08:10.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 623,
+ /**/
+
+--
+Don't be humble ... you're not that great.
+ -- Golda Meir
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.624 b/source/ap/vim/patches/7.3.624
new file mode 100644
index 000000000..f1150b634
--- /dev/null
+++ b/source/ap/vim/patches/7.3.624
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.624
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.624
+Problem: When cancelling input() it returns the third argument. That should
+ only happen for inputdialog().
+Solution: Check if inputdialog() was used. (Hirohito Higashi)
+Files: src/eval.c
+
+
+*** ../vim-7.3.623/src/eval.c 2012-07-25 16:46:59.000000000 +0200
+--- src/eval.c 2012-08-08 14:31:48.000000000 +0200
+***************
+*** 12966,12972 ****
+ rettv->vval.v_string =
+ getcmdline_prompt(inputsecret_flag ? NUL : '@', p, echo_attr,
+ xp_type, xp_arg);
+! if (rettv->vval.v_string == NULL
+ && argvars[1].v_type != VAR_UNKNOWN
+ && argvars[2].v_type != VAR_UNKNOWN)
+ rettv->vval.v_string = vim_strsave(get_tv_string_buf(
+--- 12966,12972 ----
+ rettv->vval.v_string =
+ getcmdline_prompt(inputsecret_flag ? NUL : '@', p, echo_attr,
+ xp_type, xp_arg);
+! if (inputdialog && rettv->vval.v_string == NULL
+ && argvars[1].v_type != VAR_UNKNOWN
+ && argvars[2].v_type != VAR_UNKNOWN)
+ rettv->vval.v_string = vim_strsave(get_tv_string_buf(
+*** ../vim-7.3.623/src/version.c 2012-08-08 13:17:26.000000000 +0200
+--- src/version.c 2012-08-08 14:28:46.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 624,
+ /**/
+
+--
+Your fault: core dumped
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.625 b/source/ap/vim/patches/7.3.625
new file mode 100644
index 000000000..5334bc8f9
--- /dev/null
+++ b/source/ap/vim/patches/7.3.625
@@ -0,0 +1,140 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.625
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.625
+Problem: "gn" does not handle zero-width matches correctly.
+Solution: Handle zero-width patterns specially. (Christian Brabandt)
+Files: src/search.c
+
+
+*** ../vim-7.3.624/src/search.c 2012-08-02 21:24:38.000000000 +0200
+--- src/search.c 2012-08-08 15:25:12.000000000 +0200
+***************
+*** 4546,4551 ****
+--- 4546,4554 ----
+ int visual_active = FALSE;
+ int flags = 0;
+ pos_T save_VIsual;
++ regmmatch_T regmatch;
++ int nmatched = 0;
++ int zerowidth = FALSE;
+
+
+ /* wrapping should not occur */
+***************
+*** 4581,4603 ****
+ orig_pos = pos = start_pos = curwin->w_cursor;
+
+ /*
+ * The trick is to first search backwards and then search forward again,
+ * so that a match at the current cursor position will be correctly
+ * captured.
+ */
+ for (i = 0; i < 2; i++)
+ {
+- if (i && count == 1)
+- flags = SEARCH_START;
+-
+ if (forward)
+ dir = i;
+ else
+ dir = !i;
+ result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD),
+ spats[last_idx].pat, (long) (i ? count : 1),
+! SEARCH_KEEP | flags | (dir ? 0 : SEARCH_END),
+! RE_SEARCH, 0, NULL);
+
+ /* First search may fail, but then start searching from the
+ * beginning of the file (cursor might be on the search match)
+--- 4584,4625 ----
+ orig_pos = pos = start_pos = curwin->w_cursor;
+
+ /*
++ * Check for zero-width pattern.
++ */
++ if (search_regcomp(spats[last_idx].pat, RE_SEARCH, RE_SEARCH,
++ ((SEARCH_HIS + SEARCH_KEEP)), &regmatch) == FAIL)
++ return FAIL;
++
++ /* Zero-width pattern should match somewhere, then we can check if start
++ * and end are in the same position. */
++ nmatched = vim_regexec_multi(&regmatch, curwin, curbuf,
++ curwin->w_cursor.lnum, (colnr_T)0, NULL);
++ if (called_emsg)
++ return FAIL;
++ if (nmatched && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum
++ && regmatch.endpos[0].col == regmatch.startpos[0].col)
++ zerowidth = TRUE;
++ vim_free(regmatch.regprog);
++
++ /*
+ * The trick is to first search backwards and then search forward again,
+ * so that a match at the current cursor position will be correctly
+ * captured.
+ */
+ for (i = 0; i < 2; i++)
+ {
+ if (forward)
+ dir = i;
+ else
+ dir = !i;
++
++ flags = 0;
++ if (!dir && !zerowidth)
++ flags = SEARCH_END;
++
+ result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD),
+ spats[last_idx].pat, (long) (i ? count : 1),
+! SEARCH_KEEP | flags, RE_SEARCH, 0, NULL);
+
+ /* First search may fail, but then start searching from the
+ * beginning of the file (cursor might be on the search match)
+***************
+*** 4629,4638 ****
+ }
+
+ start_pos = pos;
+! flags = (forward ? SEARCH_END : 0);
+
+! /* move to match */
+! result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD),
+ spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL);
+
+ if (!VIsual_active)
+--- 4651,4662 ----
+ }
+
+ start_pos = pos;
+! flags = forward ? SEARCH_END : 0;
+
+! /* move to match, except for zero-width matches, in which case, we are
+! * already on the next match */
+! if (!zerowidth)
+! result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD),
+ spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL);
+
+ if (!VIsual_active)
+*** ../vim-7.3.624/src/version.c 2012-08-08 14:33:16.000000000 +0200
+--- src/version.c 2012-08-08 15:21:53.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 625,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+222. You send more than 20 personal e-mails a day.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.626 b/source/ap/vim/patches/7.3.626
new file mode 100644
index 000000000..33b154565
--- /dev/null
+++ b/source/ap/vim/patches/7.3.626
@@ -0,0 +1,49 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.626
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.626
+Problem: Python interface doesn't build with Python 2.4 or older.
+Solution: Define Py_ssize_t. (Benjamin Bannier)
+Files: src/if_py_both.h
+
+
+*** ../vim-7.3.625/src/if_py_both.h 2012-07-25 15:36:00.000000000 +0200
+--- src/if_py_both.h 2012-08-08 15:53:24.000000000 +0200
+***************
+*** 12,17 ****
+--- 12,21 ----
+ * Common code for if_python.c and if_python3.c.
+ */
+
++ #if PY_VERSION_HEX < 0x02050000
++ typedef int Py_ssize_t; /* Python 2.4 and earlier don't have this type. */
++ #endif
++
+ #ifdef FEAT_MBYTE
+ # define ENC_OPT p_enc
+ #else
+*** ../vim-7.3.625/src/version.c 2012-08-08 15:27:54.000000000 +0200
+--- src/version.c 2012-08-08 15:52:07.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 626,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+224. You set up your own Web page. You set up a Web page for each
+ of your kids... and your pets.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.627 b/source/ap/vim/patches/7.3.627
new file mode 100644
index 000000000..97a0298dc
--- /dev/null
+++ b/source/ap/vim/patches/7.3.627
@@ -0,0 +1,102 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.627
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.627
+Problem: When using the "n" flag with the ":s" command a \= substitution
+ will not be evaluated.
+Solution: Do perform the evaluation, so that a function can be invoked at
+ every matching position without changing the text. (Christian
+ Brabandt)
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.3.626/src/ex_cmds.c 2012-07-10 15:18:18.000000000 +0200
+--- src/ex_cmds.c 2012-08-08 16:44:16.000000000 +0200
+***************
+*** 4264,4269 ****
+--- 4264,4272 ----
+ int endcolumn = FALSE; /* cursor in last column when done */
+ pos_T old_cursor = curwin->w_cursor;
+ int start_nsubs;
++ #ifdef FEAT_EVAL
++ int save_ma = 0;
++ #endif
+
+ cmd = eap->arg;
+ if (!global_busy)
+***************
+*** 4668,4674 ****
+ }
+ sub_nsubs++;
+ did_sub = TRUE;
+! goto skip;
+ }
+
+ if (do_ask)
+--- 4671,4682 ----
+ }
+ sub_nsubs++;
+ did_sub = TRUE;
+! #ifdef FEAT_EVAL
+! /* Skip the substitution, unless an expression is used,
+! * then it is evaluated in the sandbox. */
+! if (!(sub[0] == '\\' && sub[1] == '='))
+! #endif
+! goto skip;
+ }
+
+ if (do_ask)
+***************
+*** 4840,4849 ****
+--- 4848,4874 ----
+ /*
+ * 3. substitute the string.
+ */
++ #ifdef FEAT_EVAL
++ if (do_count)
++ {
++ /* prevent accidently changing the buffer by a function */
++ save_ma = curbuf->b_p_ma;
++ curbuf->b_p_ma = FALSE;
++ sandbox++;
++ }
++ #endif
+ /* get length of substitution part */
+ sublen = vim_regsub_multi(&regmatch,
+ sub_firstlnum - regmatch.startpos[0].lnum,
+ sub, sub_firstline, FALSE, p_magic, TRUE);
++ #ifdef FEAT_EVAL
++ if (do_count)
++ {
++ curbuf->b_p_ma = save_ma;
++ sandbox--;
++ goto skip;
++ }
++ #endif
+
+ /* When the match included the "$" of the last line it may
+ * go beyond the last line of the buffer. */
+*** ../vim-7.3.626/src/version.c 2012-08-08 16:05:03.000000000 +0200
+--- src/version.c 2012-08-08 16:48:45.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 627,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+225. You sign up for free subscriptions for all the computer magazines
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.628 b/source/ap/vim/patches/7.3.628
new file mode 100644
index 000000000..bab314796
--- /dev/null
+++ b/source/ap/vim/patches/7.3.628
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.628
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.628
+Problem: ":open" does not allow for a !, which results in a confusing error
+ message. (Shawn Wilson)
+Solution: Allow ! on ":open". (Christian Brabandt)
+Files: src/ex_cmds.h
+
+
+*** ../vim-7.3.627/src/ex_cmds.h 2012-07-06 18:27:34.000000000 +0200
+--- src/ex_cmds.h 2012-08-08 17:15:45.000000000 +0200
+***************
+*** 662,668 ****
+ EX(CMD_nunmenu, "nunmenu", ex_menu,
+ EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
+ EX(CMD_open, "open", ex_open,
+! RANGE|EXTRA),
+ EX(CMD_oldfiles, "oldfiles", ex_oldfiles,
+ BANG|TRLBAR|SBOXOK|CMDWIN),
+ EX(CMD_omap, "omap", ex_map,
+--- 662,668 ----
+ EX(CMD_nunmenu, "nunmenu", ex_menu,
+ EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
+ EX(CMD_open, "open", ex_open,
+! RANGE|BANG|EXTRA),
+ EX(CMD_oldfiles, "oldfiles", ex_oldfiles,
+ BANG|TRLBAR|SBOXOK|CMDWIN),
+ EX(CMD_omap, "omap", ex_map,
+*** ../vim-7.3.627/src/version.c 2012-08-08 16:50:40.000000000 +0200
+--- src/version.c 2012-08-08 17:30:14.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 628,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+226. You sit down at the computer right after dinner and your spouse
+ says "See you in the morning."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.629 b/source/ap/vim/patches/7.3.629
new file mode 100644
index 000000000..8e26dd49d
--- /dev/null
+++ b/source/ap/vim/patches/7.3.629
@@ -0,0 +1,437 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.629
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.629
+Problem: There is no way to make 'shiftwidth' follow 'tabstop'.
+Solution: When 'shiftwidth' is zero use the value of 'tabstop'. (Christian
+ Brabandt)
+Files: src/edit.c, src/ex_getln.c, src/fold.c, src/misc1.c, src/ops.c,
+ src/option.c, src/proto/option.pro
+
+
+*** ../vim-7.3.628/src/edit.c 2012-07-25 16:46:59.000000000 +0200
+--- src/edit.c 2012-08-08 17:55:37.000000000 +0200
+***************
+*** 8899,8907 ****
+
+ *inserted_space_p = FALSE;
+ if (p_sta && in_indent)
+! ts = curbuf->b_p_sw;
+ else
+! ts = curbuf->b_p_sts;
+ /* Compute the virtual column where we want to be. Since
+ * 'showbreak' may get in the way, need to get the last column of
+ * the previous character. */
+--- 8899,8907 ----
+
+ *inserted_space_p = FALSE;
+ if (p_sta && in_indent)
+! ts = (int)get_sw_value();
+ else
+! ts = (int)curbuf->b_p_sts;
+ /* Compute the virtual column where we want to be. Since
+ * 'showbreak' may get in the way, need to get the last column of
+ * the previous character. */
+***************
+*** 9589,9595 ****
+ * When nothing special, insert TAB like a normal character
+ */
+ if (!curbuf->b_p_et
+! && !(p_sta && ind && curbuf->b_p_ts != curbuf->b_p_sw)
+ && curbuf->b_p_sts == 0)
+ return TRUE;
+
+--- 9589,9595 ----
+ * When nothing special, insert TAB like a normal character
+ */
+ if (!curbuf->b_p_et
+! && !(p_sta && ind && curbuf->b_p_ts != get_sw_value())
+ && curbuf->b_p_sts == 0)
+ return TRUE;
+
+***************
+*** 9605,9611 ****
+ AppendToRedobuff((char_u *)"\t");
+
+ if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */
+! temp = (int)curbuf->b_p_sw;
+ else if (curbuf->b_p_sts > 0) /* use 'softtabstop' when set */
+ temp = (int)curbuf->b_p_sts;
+ else /* otherwise use 'tabstop' */
+--- 9605,9611 ----
+ AppendToRedobuff((char_u *)"\t");
+
+ if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */
+! temp = (int)get_sw_value();
+ else if (curbuf->b_p_sts > 0) /* use 'softtabstop' when set */
+ temp = (int)curbuf->b_p_sts;
+ else /* otherwise use 'tabstop' */
+*** ../vim-7.3.628/src/ex_getln.c 2012-06-29 13:44:37.000000000 +0200
+--- src/ex_getln.c 2012-08-08 17:39:40.000000000 +0200
+***************
+*** 2268,2277 ****
+
+ if (c1 == Ctrl_T)
+ {
+ p = (char_u *)line_ga.ga_data;
+ p[line_ga.ga_len] = NUL;
+ indent = get_indent_str(p, 8);
+! indent += curbuf->b_p_sw - indent % curbuf->b_p_sw;
+ add_indent:
+ while (get_indent_str(p, 8) < indent)
+ {
+--- 2268,2279 ----
+
+ if (c1 == Ctrl_T)
+ {
++ long sw = get_sw_value();
++
+ p = (char_u *)line_ga.ga_data;
+ p[line_ga.ga_len] = NUL;
+ indent = get_indent_str(p, 8);
+! indent += sw - indent % sw;
+ add_indent:
+ while (get_indent_str(p, 8) < indent)
+ {
+***************
+*** 2323,2329 ****
+ p[line_ga.ga_len] = NUL;
+ indent = get_indent_str(p, 8);
+ --indent;
+! indent -= indent % curbuf->b_p_sw;
+ }
+ while (get_indent_str(p, 8) > indent)
+ {
+--- 2325,2331 ----
+ p[line_ga.ga_len] = NUL;
+ indent = get_indent_str(p, 8);
+ --indent;
+! indent -= indent % get_sw_value();
+ }
+ while (get_indent_str(p, 8) > indent)
+ {
+*** ../vim-7.3.628/src/fold.c 2012-02-29 19:19:57.000000000 +0100
+--- src/fold.c 2012-08-08 17:40:11.000000000 +0200
+***************
+*** 3025,3031 ****
+ flp->lvl = -1;
+ }
+ else
+! flp->lvl = get_indent_buf(buf, lnum) / buf->b_p_sw;
+ if (flp->lvl > flp->wp->w_p_fdn)
+ {
+ flp->lvl = flp->wp->w_p_fdn;
+--- 3025,3031 ----
+ flp->lvl = -1;
+ }
+ else
+! flp->lvl = get_indent_buf(buf, lnum) / get_sw_value();
+ if (flp->lvl > flp->wp->w_p_fdn)
+ {
+ flp->lvl = flp->wp->w_p_fdn;
+*** ../vim-7.3.628/src/misc1.c 2012-07-25 16:09:59.000000000 +0200
+--- src/misc1.c 2012-08-08 17:43:07.000000000 +0200
+***************
+*** 1389,1397 ****
+ #ifdef FEAT_SMARTINDENT
+ if (did_si)
+ {
+ if (p_sr)
+! newindent -= newindent % (int)curbuf->b_p_sw;
+! newindent += (int)curbuf->b_p_sw;
+ }
+ #endif
+ /* Copy the indent */
+--- 1389,1399 ----
+ #ifdef FEAT_SMARTINDENT
+ if (did_si)
+ {
++ int sw = (int)get_sw_value();
++
+ if (p_sr)
+! newindent -= newindent % sw;
+! newindent += sw;
+ }
+ #endif
+ /* Copy the indent */
+***************
+*** 6461,6471 ****
+ int
+ get_c_indent()
+ {
+ /*
+ * spaces from a block's opening brace the prevailing indent for that
+ * block should be
+ */
+! int ind_level = curbuf->b_p_sw;
+
+ /*
+ * spaces from the edge of the line an open brace that's at the end of a
+--- 6463,6476 ----
+ int
+ get_c_indent()
+ {
++ int sw = (int)get_sw_value();
++
+ /*
+ * spaces from a block's opening brace the prevailing indent for that
+ * block should be
+ */
+!
+! int ind_level = sw;
+
+ /*
+ * spaces from the edge of the line an open brace that's at the end of a
+***************
+*** 6512,6523 ****
+ /*
+ * spaces from the switch() indent a "case xx" label should be located
+ */
+! int ind_case = curbuf->b_p_sw;
+
+ /*
+ * spaces from the "case xx:" code after a switch() should be located
+ */
+! int ind_case_code = curbuf->b_p_sw;
+
+ /*
+ * lineup break at end of case in switch() with case label
+--- 6517,6528 ----
+ /*
+ * spaces from the switch() indent a "case xx" label should be located
+ */
+! int ind_case = sw;
+
+ /*
+ * spaces from the "case xx:" code after a switch() should be located
+ */
+! int ind_case_code = sw;
+
+ /*
+ * lineup break at end of case in switch() with case label
+***************
+*** 6528,6572 ****
+ * spaces from the class declaration indent a scope declaration label
+ * should be located
+ */
+! int ind_scopedecl = curbuf->b_p_sw;
+
+ /*
+ * spaces from the scope declaration label code should be located
+ */
+! int ind_scopedecl_code = curbuf->b_p_sw;
+
+ /*
+ * amount K&R-style parameters should be indented
+ */
+! int ind_param = curbuf->b_p_sw;
+
+ /*
+ * amount a function type spec should be indented
+ */
+! int ind_func_type = curbuf->b_p_sw;
+
+ /*
+ * amount a cpp base class declaration or constructor initialization
+ * should be indented
+ */
+! int ind_cpp_baseclass = curbuf->b_p_sw;
+
+ /*
+ * additional spaces beyond the prevailing indent a continuation line
+ * should be located
+ */
+! int ind_continuation = curbuf->b_p_sw;
+
+ /*
+ * spaces from the indent of the line with an unclosed parentheses
+ */
+! int ind_unclosed = curbuf->b_p_sw * 2;
+
+ /*
+ * spaces from the indent of the line with an unclosed parentheses, which
+ * itself is also unclosed
+ */
+! int ind_unclosed2 = curbuf->b_p_sw;
+
+ /*
+ * suppress ignoring spaces from the indent of a line starting with an
+--- 6533,6577 ----
+ * spaces from the class declaration indent a scope declaration label
+ * should be located
+ */
+! int ind_scopedecl = sw;
+
+ /*
+ * spaces from the scope declaration label code should be located
+ */
+! int ind_scopedecl_code = sw;
+
+ /*
+ * amount K&R-style parameters should be indented
+ */
+! int ind_param = sw;
+
+ /*
+ * amount a function type spec should be indented
+ */
+! int ind_func_type = sw;
+
+ /*
+ * amount a cpp base class declaration or constructor initialization
+ * should be indented
+ */
+! int ind_cpp_baseclass = sw;
+
+ /*
+ * additional spaces beyond the prevailing indent a continuation line
+ * should be located
+ */
+! int ind_continuation = sw;
+
+ /*
+ * spaces from the indent of the line with an unclosed parentheses
+ */
+! int ind_unclosed = sw * 2;
+
+ /*
+ * spaces from the indent of the line with an unclosed parentheses, which
+ * itself is also unclosed
+ */
+! int ind_unclosed2 = sw;
+
+ /*
+ * suppress ignoring spaces from the indent of a line starting with an
+***************
+*** 6719,6730 ****
+ if (*options == 's') /* "2s" means two times 'shiftwidth' */
+ {
+ if (options == digits)
+! n = curbuf->b_p_sw; /* just "s" is one 'shiftwidth' */
+ else
+ {
+! n *= curbuf->b_p_sw;
+ if (divider)
+! n += (curbuf->b_p_sw * fraction + divider / 2) / divider;
+ }
+ ++options;
+ }
+--- 6724,6735 ----
+ if (*options == 's') /* "2s" means two times 'shiftwidth' */
+ {
+ if (options == digits)
+! n = sw; /* just "s" is one 'shiftwidth' */
+ else
+ {
+! n *= sw;
+ if (divider)
+! n += (sw * fraction + divider / 2) / divider;
+ }
+ ++options;
+ }
+*** ../vim-7.3.628/src/ops.c 2012-07-10 16:49:08.000000000 +0200
+--- src/ops.c 2012-08-08 17:34:28.000000000 +0200
+***************
+*** 332,338 ****
+ {
+ int count;
+ int i, j;
+! int p_sw = (int)curbuf->b_p_sw;
+
+ count = get_indent(); /* get current indent */
+
+--- 332,338 ----
+ {
+ int count;
+ int i, j;
+! int p_sw = (int)get_sw_value();
+
+ count = get_indent(); /* get current indent */
+
+***************
+*** 388,394 ****
+ int total;
+ char_u *newp, *oldp;
+ int oldcol = curwin->w_cursor.col;
+! int p_sw = (int)curbuf->b_p_sw;
+ int p_ts = (int)curbuf->b_p_ts;
+ struct block_def bd;
+ int incr;
+--- 388,394 ----
+ int total;
+ char_u *newp, *oldp;
+ int oldcol = curwin->w_cursor.col;
+! int p_sw = (int)get_sw_value();
+ int p_ts = (int)curbuf->b_p_ts;
+ struct block_def bd;
+ int incr;
+*** ../vim-7.3.628/src/option.c 2012-07-10 18:31:49.000000000 +0200
+--- src/option.c 2012-08-08 17:45:01.000000000 +0200
+***************
+*** 8125,8131 ****
+ need_mouse_correct = TRUE;
+ #endif
+
+! if (curbuf->b_p_sw <= 0)
+ {
+ errmsg = e_positive;
+ curbuf->b_p_sw = curbuf->b_p_ts;
+--- 8125,8131 ----
+ need_mouse_correct = TRUE;
+ #endif
+
+! if (curbuf->b_p_sw < 0)
+ {
+ errmsg = e_positive;
+ curbuf->b_p_sw = curbuf->b_p_ts;
+***************
+*** 11419,11421 ****
+--- 11419,11431 ----
+ {
+ return check_opt_strings(p, p_ff_values, FALSE);
+ }
++
++ /*
++ * Return the effective shiftwidth value for current buffer, using the
++ * 'tabstop' value when 'shiftwidth' is zero.
++ */
++ long
++ get_sw_value()
++ {
++ return curbuf->b_p_sw ? curbuf->b_p_sw : curbuf->b_p_ts;
++ }
+*** ../vim-7.3.628/src/proto/option.pro 2011-01-22 00:11:42.000000000 +0100
+--- src/proto/option.pro 2012-08-08 17:34:33.000000000 +0200
+***************
+*** 56,59 ****
+--- 56,60 ----
+ void save_file_ff __ARGS((buf_T *buf));
+ int file_ff_differs __ARGS((buf_T *buf, int ignore_empty));
+ int check_ff_value __ARGS((char_u *p));
++ long get_sw_value __ARGS((void));
+ /* vim: set ft=c : */
+*** ../vim-7.3.628/src/version.c 2012-08-08 17:31:36.000000000 +0200
+--- src/version.c 2012-08-08 17:57:48.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 629,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+228. You spend Saturday night making the counter on your home page
+ pass that 2000 mark.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.630 b/source/ap/vim/patches/7.3.630
new file mode 100644
index 000000000..d89cfbfe3
--- /dev/null
+++ b/source/ap/vim/patches/7.3.630
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.630
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.630
+Problem: "|" does not behave correctly when 'virtualedit' is set.
+Solution: Call validate_virtcol(). (David Bürgin)
+Files: src/normal.c
+
+
+*** ../vim-7.3.629/src/normal.c 2012-07-29 12:55:21.000000000 +0200
+--- src/normal.c 2012-08-15 13:20:13.000000000 +0200
+***************
+*** 7786,7792 ****
+--- 7786,7795 ----
+ * virtualedit. Recalculate curwin->w_cursor to avoid bad hilighting.
+ */
+ if (c == Ctrl_V && (ve_flags & VE_BLOCK) && gchar_cursor() == TAB)
++ {
++ validate_virtcol();
+ coladvance(curwin->w_virtcol);
++ }
+ #endif
+ VIsual = curwin->w_cursor;
+
+*** ../vim-7.3.629/src/version.c 2012-08-08 18:01:00.000000000 +0200
+--- src/version.c 2012-08-15 13:30:30.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 630,
+ /**/
+
+--
+"Marriage is when a man and woman become as one; the trouble starts
+when they try to decide which one"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.631 b/source/ap/vim/patches/7.3.631
new file mode 100644
index 000000000..b7bff4fc4
--- /dev/null
+++ b/source/ap/vim/patches/7.3.631
@@ -0,0 +1,322 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.631
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.631
+Problem: Cannot complete user names.
+Solution: Add user name completion. (Dominique Pelle)
+Files: runtime/doc/map.txt, src/auto/configure, src/config.h.in,
+ src/configure.in, src/ex_docmd.c, src/ex_getln.c,
+ src/misc1.c, src/misc2.c, src/proto/misc1.pro, src/vim.h
+
+
+*** ../vim-7.3.630/runtime/doc/map.txt 2012-04-30 18:48:38.000000000 +0200
+--- runtime/doc/map.txt 2012-08-15 13:46:34.000000000 +0200
+***************
+*** 1227,1232 ****
+--- 1244,1250 ----
+ -complete=syntax syntax file names |'syntax'|
+ -complete=tag tags
+ -complete=tag_listfiles tags, file names are shown when CTRL-D is hit
++ -complete=user user names
+ -complete=var user variables
+ -complete=custom,{func} custom completion, defined via {func}
+ -complete=customlist,{func} custom completion, defined via {func}
+*** ../vim-7.3.630/src/auto/configure 2012-07-25 16:32:03.000000000 +0200
+--- src/auto/configure 2012-08-15 13:48:06.000000000 +0200
+***************
+*** 10631,10637 ****
+ fi
+
+ for ac_func in bcmp fchdir fchown fsync getcwd getpseudotty \
+! getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
+ memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
+ setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
+ sigvec strcasecmp strerror strftime stricmp strncasecmp \
+--- 10631,10637 ----
+ fi
+
+ for ac_func in bcmp fchdir fchown fsync getcwd getpseudotty \
+! getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
+ memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
+ setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
+ sigvec strcasecmp strerror strftime stricmp strncasecmp \
+*** ../vim-7.3.630/src/config.h.in 2012-02-05 22:51:27.000000000 +0100
+--- src/config.h.in 2012-08-15 13:46:35.000000000 +0200
+***************
+*** 161,166 ****
+--- 161,167 ----
+ #undef HAVE_FSYNC
+ #undef HAVE_GETCWD
+ #undef HAVE_GETPSEUDOTTY
++ #undef HAVE_GETPWENT
+ #undef HAVE_GETPWNAM
+ #undef HAVE_GETPWUID
+ #undef HAVE_GETRLIMIT
+*** ../vim-7.3.630/src/configure.in 2012-07-25 16:32:03.000000000 +0200
+--- src/configure.in 2012-08-15 13:46:35.000000000 +0200
+***************
+*** 2994,3000 ****
+ dnl Check for functions in one big call, to reduce the size of configure.
+ dnl Can only be used for functions that do not require any include.
+ AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
+! getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
+ memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
+ setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
+ sigvec strcasecmp strerror strftime stricmp strncasecmp \
+--- 2994,3000 ----
+ dnl Check for functions in one big call, to reduce the size of configure.
+ dnl Can only be used for functions that do not require any include.
+ AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
+! getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
+ memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
+ setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
+ sigvec strcasecmp strerror strftime stricmp strncasecmp \
+*** ../vim-7.3.630/src/ex_docmd.c 2012-08-02 21:24:38.000000000 +0200
+--- src/ex_docmd.c 2012-08-15 13:54:29.000000000 +0200
+***************
+*** 3515,3520 ****
+--- 3515,3537 ----
+ #endif
+ }
+ }
++ #if defined(FEAT_CMDL_COMPL)
++ /* Check for user names */
++ if (*xp->xp_pattern == '~')
++ {
++ for (p = xp->xp_pattern + 1; *p != NUL && *p != '/'; ++p)
++ ;
++ /* Complete ~user only if it partially matches a user name.
++ * A full match ~user<Tab> will be replaced by user's home
++ * directory i.e. something like ~user<Tab> -> /home/user/ */
++ if (*p == NUL && p > xp->xp_pattern + 1
++ && match_user(xp->xp_pattern + 1) == 1)
++ {
++ xp->xp_context = EXPAND_USER;
++ ++xp->xp_pattern;
++ }
++ }
++ #endif
+ }
+
+ /*
+***************
+*** 5396,5401 ****
+--- 5413,5419 ----
+ #endif
+ {EXPAND_TAGS, "tag"},
+ {EXPAND_TAGS_LISTFILES, "tag_listfiles"},
++ {EXPAND_USER, "user"},
+ {EXPAND_USER_VARS, "var"},
+ {0, NULL}
+ };
+*** ../vim-7.3.630/src/ex_getln.c 2012-08-08 18:01:00.000000000 +0200
+--- src/ex_getln.c 2012-08-15 13:46:35.000000000 +0200
+***************
+*** 4336,4341 ****
+--- 4336,4342 ----
+ * EXPAND_EXPRESSION Complete internal or user defined function/variable
+ * names in expressions, eg :while s^I
+ * EXPAND_ENV_VARS Complete environment variable names
++ * EXPAND_USER Complete user names
+ */
+ static void
+ set_expand_context(xp)
+***************
+*** 4681,4686 ****
+--- 4682,4688 ----
+ {EXPAND_LOCALES, get_locales, TRUE, FALSE},
+ #endif
+ {EXPAND_ENV_VARS, get_env_name, TRUE, TRUE},
++ {EXPAND_USER, get_users, TRUE, FALSE},
+ };
+ int i;
+
+*** ../vim-7.3.630/src/misc1.c 2012-08-08 18:01:00.000000000 +0200
+--- src/misc1.c 2012-08-15 13:57:53.000000000 +0200
+***************
+*** 18,23 ****
+--- 18,28 ----
+ static char_u *remove_tail __ARGS((char_u *p, char_u *pend, char_u *name));
+ static int copy_indent __ARGS((int size, char_u *src));
+
++ /* All user names (for ~user completion as done by shell). */
++ #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
++ static garray_T ga_users;
++ #endif
++
+ /*
+ * Count the size (in window cells) of the indent in the current line.
+ */
+***************
+*** 3782,3787 ****
+--- 3787,3800 ----
+ {
+ vim_free(homedir);
+ }
++
++ # ifdef FEAT_CMDL_COMPL
++ void
++ free_users()
++ {
++ ga_clear_strings(&ga_users);
++ }
++ # endif
+ #endif
+
+ /*
+***************
+*** 4451,4456 ****
+--- 4464,4543 ----
+ return name;
+ # endif
+ }
++
++ /*
++ * Find all user names for user completion.
++ * Done only once and then cached.
++ */
++ static void
++ init_users() {
++ static int lazy_init_done = FALSE;
++
++ if (lazy_init_done)
++ return;
++
++ lazy_init_done = TRUE;
++ ga_init2(&ga_users, sizeof(char_u *), 20);
++
++ # if defined(HAVE_GETPWENT) && defined(HAVE_PWD_H)
++ {
++ char_u* user;
++ struct passwd* pw;
++
++ setpwent();
++ while ((pw = getpwent()) != NULL)
++ /* pw->pw_name shouldn't be NULL but just in case... */
++ if (pw->pw_name != NULL)
++ {
++ if (ga_grow(&ga_users, 1) == FAIL)
++ break;
++ user = vim_strsave((char_u*)pw->pw_name);
++ if (user == NULL)
++ break;
++ ((char_u **)(ga_users.ga_data))[ga_users.ga_len++] = user;
++ }
++ endpwent();
++ }
++ # endif
++ }
++
++ /*
++ * Function given to ExpandGeneric() to obtain an user names.
++ */
++ char_u*
++ get_users(xp, idx)
++ expand_T *xp UNUSED;
++ int idx;
++ {
++ init_users();
++ if (idx < ga_users.ga_len)
++ return ((char_u **)ga_users.ga_data)[idx];
++ return NULL;
++ }
++
++ /*
++ * Check whether name matches a user name. Return:
++ * 0 if name does not match any user name.
++ * 1 if name partially matches the beginning of a user name.
++ * 2 is name fully matches a user name.
++ */
++ int match_user(name)
++ char_u* name;
++ {
++ int i;
++ int n = (int)STRLEN(name);
++ int result = 0;
++
++ init_users();
++ for (i = 0; i < ga_users.ga_len; i++)
++ {
++ if (STRCMP(((char_u **)ga_users.ga_data)[i], name) == 0)
++ return 2; /* full match */
++ if (STRNCMP(((char_u **)ga_users.ga_data)[i], name, n) == 0)
++ result = 1; /* partial match */
++ }
++ return result;
++ }
+ #endif
+
+ /*
+*** ../vim-7.3.630/src/misc2.c 2012-06-29 15:51:26.000000000 +0200
+--- src/misc2.c 2012-08-15 13:46:35.000000000 +0200
+***************
+*** 1110,1115 ****
+--- 1110,1118 ----
+ free_all_marks();
+ alist_clear(&global_alist);
+ free_homedir();
++ # if defined(FEAT_CMDL_COMPL)
++ free_users();
++ # endif
+ free_search_patterns();
+ free_old_sub();
+ free_last_insert();
+*** ../vim-7.3.630/src/proto/misc1.pro 2012-06-06 16:12:54.000000000 +0200
+--- src/proto/misc1.pro 2012-08-15 13:46:35.000000000 +0200
+***************
+*** 50,55 ****
+--- 50,56 ----
+ void vim_beep __ARGS((void));
+ void init_homedir __ARGS((void));
+ void free_homedir __ARGS((void));
++ void free_users __ARGS((void));
+ char_u *expand_env_save __ARGS((char_u *src));
+ char_u *expand_env_save_opt __ARGS((char_u *src, int one));
+ void expand_env __ARGS((char_u *src, char_u *dst, int dstlen));
+***************
+*** 57,62 ****
+--- 58,65 ----
+ char_u *vim_getenv __ARGS((char_u *name, int *mustfree));
+ void vim_setenv __ARGS((char_u *name, char_u *val));
+ char_u *get_env_name __ARGS((expand_T *xp, int idx));
++ char_u *get_users __ARGS((expand_T *xp, int idx));
++ int match_user __ARGS((char_u* name));
+ void home_replace __ARGS((buf_T *buf, char_u *src, char_u *dst, int dstlen, int one));
+ char_u *home_replace_save __ARGS((buf_T *buf, char_u *src));
+ int fullpathcmp __ARGS((char_u *s1, char_u *s2, int checkname));
+*** ../vim-7.3.630/src/vim.h 2012-07-10 17:14:50.000000000 +0200
+--- src/vim.h 2012-08-15 13:46:35.000000000 +0200
+***************
+*** 782,787 ****
+--- 782,788 ----
+ #define EXPAND_OWNSYNTAX 39
+ #define EXPAND_LOCALES 40
+ #define EXPAND_HISTORY 41
++ #define EXPAND_USER 42
+
+ /* Values for exmode_active (0 is no exmode) */
+ #define EXMODE_NORMAL 1
+*** ../vim-7.3.630/src/version.c 2012-08-15 13:30:55.000000000 +0200
+--- src/version.c 2012-08-15 14:01:12.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 631,
+ /**/
+
+--
+"Marriage is the process of finding out what kind of man your wife
+would have preferred"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.632 b/source/ap/vim/patches/7.3.632
new file mode 100644
index 000000000..9e38969e6
--- /dev/null
+++ b/source/ap/vim/patches/7.3.632
@@ -0,0 +1,537 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.632
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.632
+Problem: Cannot select beyond 222 columns with the mouse in xterm.
+Solution: Add support for SGR mouse tracking. (Hayaki Saito)
+Files: runtime/doc/options.txt, src/feature.h, src/keymap.h, src/misc2.c,
+ src/option.h, src/os_unix.c, src/term.c, src/version.c
+
+
+*** ../vim-7.3.631/runtime/doc/options.txt 2012-07-10 16:49:08.000000000 +0200
+--- runtime/doc/options.txt 2012-08-15 16:04:26.000000000 +0200
+***************
+*** 7383,7388 ****
+--- 7424,7435 ----
+ jsbterm JSB term mouse handling.
+ *pterm-mouse*
+ pterm QNX pterm mouse handling.
++ *urxvt-mouse*
++ urxvt Mouse handling for the urxvt (rxvt-unicode) terminal.
++ *sgr-mouse*
++ sgr Mouse handling for the terminal that emits SGR-styled
++ mouse reporting. Works with xterm version 277 or
++ later.
+
+ The mouse handling must be enabled at compile time |+mouse_xterm|
+ |+mouse_dec| |+mouse_netterm|.
+***************
+*** 7395,7400 ****
+--- 7442,7448 ----
+ or "xterm2" already. The main use of this option is to set it to
+ "xterm", when the terminal name doesn't start with "xterm", but it can
+ handle xterm mouse codes.
++ The "sgr" value will be set if the xterm version is 277 or later.
+ The "xterm2" value will be set if the xterm version is reported to be
+ 95 or higher. This only works when compiled with the |+termresponse|
+ feature and if |t_RV| is set to the escape sequence to request the
+*** ../vim-7.3.631/src/feature.h 2012-04-25 16:50:44.000000000 +0200
+--- src/feature.h 2012-08-15 15:46:07.000000000 +0200
+***************
+*** 1056,1061 ****
+--- 1056,1064 ----
+ # ifdef FEAT_BIG
+ # define FEAT_MOUSE_URXVT
+ # endif
++ # ifdef FEAT_BIG
++ # define FEAT_MOUSE_SGR
++ # endif
+ # if defined(FEAT_NORMAL) && (defined(MSDOS) || defined(WIN3264))
+ # define DOS_MOUSE
+ # endif
+***************
+*** 1077,1082 ****
+--- 1080,1090 ----
+ # define FEAT_MOUSE_XTERM
+ #endif
+
++ /* sgr is a small variation of mouse_xterm, and shares its code */
++ #if defined(FEAT_MOUSE_SGR) && !defined(FEAT_MOUSE_XTERM)
++ # define FEAT_MOUSE_XTERM
++ #endif
++
+ /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */
+ #if !defined(FEAT_MOUSE_TTY) \
+ && (defined(FEAT_MOUSE_XTERM) \
+***************
+*** 1087,1093 ****
+ || defined(FEAT_MOUSE_JSB) \
+ || defined(FEAT_MOUSE_PTERM) \
+ || defined(FEAT_SYSMOUSE) \
+! || defined(FEAT_MOUSE_URXVT))
+ # define FEAT_MOUSE_TTY /* include non-GUI mouse support */
+ #endif
+ #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI))
+--- 1095,1102 ----
+ || defined(FEAT_MOUSE_JSB) \
+ || defined(FEAT_MOUSE_PTERM) \
+ || defined(FEAT_SYSMOUSE) \
+! || defined(FEAT_MOUSE_URXVT) \
+! || defined(FEAT_MOUSE_SGR))
+ # define FEAT_MOUSE_TTY /* include non-GUI mouse support */
+ #endif
+ #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI))
+*** ../vim-7.3.631/src/keymap.h 2012-01-20 17:15:47.000000000 +0100
+--- src/keymap.h 2012-08-15 15:46:07.000000000 +0200
+***************
+*** 110,115 ****
+--- 110,118 ----
+ /* Used for the urxvt mouse. */
+ #define KS_URXVT_MOUSE 238
+
++ /* Used for the sgr mouse. */
++ #define KS_SGR_MOUSE 237
++
+ /*
+ * Filler used after KS_SPECIAL and others
+ */
+***************
+*** 412,417 ****
+--- 415,421 ----
+ #define K_JSBTERM_MOUSE TERMCAP2KEY(KS_JSBTERM_MOUSE, KE_FILLER)
+ #define K_PTERM_MOUSE TERMCAP2KEY(KS_PTERM_MOUSE, KE_FILLER)
+ #define K_URXVT_MOUSE TERMCAP2KEY(KS_URXVT_MOUSE, KE_FILLER)
++ #define K_SGR_MOUSE TERMCAP2KEY(KS_SGR_MOUSE, KE_FILLER)
+
+ #define K_SELECT TERMCAP2KEY(KS_SELECT, KE_FILLER)
+ #define K_TEAROFF TERMCAP2KEY(KS_TEAROFF, KE_FILLER)
+*** ../vim-7.3.631/src/misc2.c 2012-08-15 14:04:50.000000000 +0200
+--- src/misc2.c 2012-08-15 15:46:07.000000000 +0200
+***************
+*** 2433,2438 ****
+--- 2433,2441 ----
+ #ifdef FEAT_MOUSE_URXVT
+ {K_URXVT_MOUSE, (char_u *)"UrxvtMouse"},
+ #endif
++ #ifdef FEAT_MOUSE_SGR
++ {K_SGR_MOUSE, (char_u *)"SgrMouse"},
++ #endif
+ {K_LEFTMOUSE, (char_u *)"LeftMouse"},
+ {K_LEFTMOUSE_NM, (char_u *)"LeftMouseNM"},
+ {K_LEFTDRAG, (char_u *)"LeftDrag"},
+*** ../vim-7.3.631/src/option.h 2012-07-10 16:49:08.000000000 +0200
+--- src/option.h 2012-08-15 15:46:07.000000000 +0200
+***************
+*** 822,828 ****
+ EXTERN char_u *p_ttym; /* 'ttymouse' */
+ EXTERN unsigned ttym_flags;
+ # ifdef IN_OPTION_C
+! static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", "urxvt", NULL};
+ # endif
+ # define TTYM_XTERM 0x01
+ # define TTYM_XTERM2 0x02
+--- 822,828 ----
+ EXTERN char_u *p_ttym; /* 'ttymouse' */
+ EXTERN unsigned ttym_flags;
+ # ifdef IN_OPTION_C
+! static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", "urxvt", "sgr", NULL};
+ # endif
+ # define TTYM_XTERM 0x01
+ # define TTYM_XTERM2 0x02
+***************
+*** 831,836 ****
+--- 831,837 ----
+ # define TTYM_JSBTERM 0x10
+ # define TTYM_PTERM 0x20
+ # define TTYM_URXVT 0x40
++ # define TTYM_SGR 0x80
+ #endif
+ EXTERN char_u *p_udir; /* 'undodir' */
+ EXTERN long p_ul; /* 'undolevels' */
+*** ../vim-7.3.631/src/os_unix.c 2012-04-20 15:55:10.000000000 +0200
+--- src/os_unix.c 2012-08-15 16:06:54.000000000 +0200
+***************
+*** 2159,2168 ****
+--- 2159,2171 ----
+ * Return 1 for "xterm".
+ * Return 2 for "xterm2".
+ * Return 3 for "urxvt".
++ * Return 4 for "sgr".
+ */
+ int
+ use_xterm_mouse()
+ {
++ if (ttym_flags == TTYM_SGR)
++ return 4;
+ if (ttym_flags == TTYM_URXVT)
+ return 3;
+ if (ttym_flags == TTYM_XTERM2)
+***************
+*** 3339,3345 ****
+ xterm_mouse_vers = use_xterm_mouse();
+
+ # ifdef FEAT_MOUSE_URXVT
+! if (ttym_flags == TTYM_URXVT) {
+ out_str_nf((char_u *)
+ (on
+ ? IF_EB("\033[?1015h", ESC_STR "[?1015h")
+--- 3342,3349 ----
+ xterm_mouse_vers = use_xterm_mouse();
+
+ # ifdef FEAT_MOUSE_URXVT
+! if (ttym_flags == TTYM_URXVT)
+! {
+ out_str_nf((char_u *)
+ (on
+ ? IF_EB("\033[?1015h", ESC_STR "[?1015h")
+***************
+*** 3348,3353 ****
+--- 3352,3368 ----
+ }
+ # endif
+
++ # ifdef FEAT_MOUSE_SGR
++ if (ttym_flags == TTYM_SGR)
++ {
++ out_str_nf((char_u *)
++ (on
++ ? IF_EB("\033[?1006h", ESC_STR "[?1006h")
++ : IF_EB("\033[?1006l", ESC_STR "[?1006l")));
++ ison = on;
++ }
++ # endif
++
+ if (xterm_mouse_vers > 0)
+ {
+ if (on) /* enable mouse events, use mouse tracking if available */
+***************
+*** 3577,3582 ****
+--- 3592,3618 ----
+ else
+ del_mouse_termcode(KS_URXVT_MOUSE);
+ # endif
++ # ifdef FEAT_MOUSE_SGR
++ /* same as the dec mouse */
++ if (use_xterm_mouse() == 4
++ # ifdef FEAT_GUI
++ && !gui.in_use
++ # endif
++ )
++ {
++ set_mouse_termcode(KS_SGR_MOUSE, (char_u *)(term_is_8bit(T_NAME)
++ ? IF_EB("\233<", CSI_STR "<")
++ : IF_EB("\033[<", ESC_STR "[<")));
++
++ if (*p_mouse != NUL)
++ {
++ mch_setmouse(FALSE);
++ setmouse();
++ }
++ }
++ else
++ del_mouse_termcode(KS_SGR_MOUSE);
++ # endif
+ }
+ #endif
+
+*** ../vim-7.3.631/src/term.c 2012-02-05 22:05:44.000000000 +0100
+--- src/term.c 2012-08-15 16:14:09.000000000 +0200
+***************
+*** 1997,2002 ****
+--- 1997,2003 ----
+ # define HMT_JSBTERM 8
+ # define HMT_PTERM 16
+ # define HMT_URXVT 32
++ # define HMT_SGR 64
+ static int has_mouse_termcode = 0;
+ # endif
+
+***************
+*** 2037,2042 ****
+--- 2038,2048 ----
+ has_mouse_termcode |= HMT_URXVT;
+ else
+ # endif
++ # ifdef FEAT_MOUSE_SGR
++ if (n == KS_SGR_MOUSE)
++ has_mouse_termcode |= HMT_SGR;
++ else
++ # endif
+ has_mouse_termcode |= HMT_NORMAL;
+ # endif
+ }
+***************
+*** 2079,2084 ****
+--- 2085,2095 ----
+ has_mouse_termcode &= ~HMT_URXVT;
+ else
+ # endif
++ # ifdef FEAT_MOUSE_SGR
++ if (n == KS_SGR_MOUSE)
++ has_mouse_termcode &= ~HMT_SGR;
++ else
++ # endif
+ has_mouse_termcode &= ~HMT_NORMAL;
+ # endif
+ }
+***************
+*** 4023,4029 ****
+ #ifdef FEAT_TERMRESPONSE
+ if (key_name[0] == NUL
+ /* URXVT mouse uses <ESC>[#;#;#M, but we are matching <ESC>[ */
+! || key_name[0] == KS_URXVT_MOUSE)
+ {
+ /* Check for xterm version string: "<Esc>[>{x};{vers};{y}c". Also
+ * eat other possible responses to t_RV, rxvt returns
+--- 4034,4041 ----
+ #ifdef FEAT_TERMRESPONSE
+ if (key_name[0] == NUL
+ /* URXVT mouse uses <ESC>[#;#;#M, but we are matching <ESC>[ */
+! || key_name[0] == KS_URXVT_MOUSE
+! || key_name[0] == KS_SGR_MOUSE)
+ {
+ /* Check for xterm version string: "<Esc>[>{x};{vers};{y}c". Also
+ * eat other possible responses to t_RV, rxvt returns
+***************
+*** 4061,4066 ****
+--- 4073,4088 ----
+
+ if (tp[1 + (tp[0] != CSI)] == '>' && j == 2)
+ {
++ # ifdef TTYM_SGR
++ if (extra >= 277
++ # ifdef TTYM_URXVT
++ && ttym_flags != TTYM_URXVT
++ # endif
++ )
++ set_option_value((char_u *)"ttym", 0L,
++ (char_u *)"sgr", 0);
++ else
++ # endif
+ /* if xterm version >= 95 use mouse dragging */
+ if (extra >= 95
+ # ifdef TTYM_URXVT
+***************
+*** 4147,4167 ****
+ /*
+ * If it is a mouse click, get the coordinates.
+ */
+! if (key_name[0] == (int)KS_MOUSE
+ # ifdef FEAT_MOUSE_JSB
+! || key_name[0] == (int)KS_JSBTERM_MOUSE
+ # endif
+ # ifdef FEAT_MOUSE_NET
+! || key_name[0] == (int)KS_NETTERM_MOUSE
+ # endif
+ # ifdef FEAT_MOUSE_DEC
+! || key_name[0] == (int)KS_DEC_MOUSE
+ # endif
+ # ifdef FEAT_MOUSE_PTERM
+! || key_name[0] == (int)KS_PTERM_MOUSE
+ # endif
+ # ifdef FEAT_MOUSE_URXVT
+! || key_name[0] == (int)KS_URXVT_MOUSE
+ # endif
+ )
+ {
+--- 4169,4192 ----
+ /*
+ * If it is a mouse click, get the coordinates.
+ */
+! if (key_name[0] == KS_MOUSE
+ # ifdef FEAT_MOUSE_JSB
+! || key_name[0] == KS_JSBTERM_MOUSE
+ # endif
+ # ifdef FEAT_MOUSE_NET
+! || key_name[0] == KS_NETTERM_MOUSE
+ # endif
+ # ifdef FEAT_MOUSE_DEC
+! || key_name[0] == KS_DEC_MOUSE
+ # endif
+ # ifdef FEAT_MOUSE_PTERM
+! || key_name[0] == KS_PTERM_MOUSE
+ # endif
+ # ifdef FEAT_MOUSE_URXVT
+! || key_name[0] == KS_URXVT_MOUSE
+! # endif
+! # ifdef FEAT_MOUSE_SGR
+! || key_name[0] == KS_SGR_MOUSE
+ # endif
+ )
+ {
+***************
+*** 4243,4250 ****
+ }
+ }
+
+! # ifdef FEAT_MOUSE_URXVT
+! if (key_name[0] == (int)KS_URXVT_MOUSE)
+ {
+ for (;;)
+ {
+--- 4268,4276 ----
+ }
+ }
+
+! # if defined(FEAT_MOUSE_URXVT) || defined(FEAT_MOUSE_SGR)
+! if (key_name[0] == KS_URXVT_MOUSE
+! || key_name[0] == KS_SGR_MOUSE)
+ {
+ for (;;)
+ {
+***************
+*** 4256,4261 ****
+--- 4282,4301 ----
+ * ^-- row
+ * ^----- column
+ * ^-------- code
++ *
++ * SGR 1006 mouse reporting mode:
++ * Almost identical to xterm mouse mode, except the values
++ * are decimal instead of bytes.
++ *
++ * \033[<%d;%d;%dM
++ * ^-- row
++ * ^----- column
++ * ^-------- code
++ *
++ * \033[<%d;%d;%dm : mouse release event
++ * ^-- row
++ * ^----- column
++ * ^-------- code
+ */
+ p = tp + slen;
+
+***************
+*** 4263,4294 ****
+ if (*p++ != ';')
+ return -1;
+
+ mouse_col = getdigits(&p) - 1;
+ if (*p++ != ';')
+ return -1;
+
+ mouse_row = getdigits(&p) - 1;
+! if (*p++ != 'M')
+ return -1;
+
+ slen += (int)(p - (tp + slen));
+
+ /* skip this one if next one has same code (like xterm
+ * case) */
+ j = termcodes[idx].len;
+! if (STRNCMP(tp, tp + slen, (size_t)j) == 0) {
+! /* check if the command is complete by looking for the
+! * M */
+ int slen2;
+ int cmd_complete = 0;
+! for (slen2 = slen; slen2 < len; slen2++) {
+! if (tp[slen2] == 'M') {
+ cmd_complete = 1;
+ break;
+ }
+ }
+ p += j;
+! if (cmd_complete && getdigits(&p) == mouse_code) {
+ slen += j; /* skip the \033[ */
+ continue;
+ }
+--- 4303,4348 ----
+ if (*p++ != ';')
+ return -1;
+
++ /* when mouse reporting is SGR, add 32 to mouse code */
++ if (key_name[0] == KS_SGR_MOUSE)
++ mouse_code += 32;
++
+ mouse_col = getdigits(&p) - 1;
+ if (*p++ != ';')
+ return -1;
+
+ mouse_row = getdigits(&p) - 1;
+! if (key_name[0] == KS_SGR_MOUSE && *p == 'm')
+! mouse_code |= MOUSE_RELEASE;
+! else if (*p != 'M')
+ return -1;
++ p++;
+
+ slen += (int)(p - (tp + slen));
+
+ /* skip this one if next one has same code (like xterm
+ * case) */
+ j = termcodes[idx].len;
+! if (STRNCMP(tp, tp + slen, (size_t)j) == 0)
+! {
+ int slen2;
+ int cmd_complete = 0;
+!
+! /* check if the command is complete by looking for the
+! * 'M' */
+! for (slen2 = slen; slen2 < len; slen2++)
+! {
+! if (tp[slen2] == 'M'
+! || (key_name[0] == KS_SGR_MOUSE
+! && tp[slen2] == 'm'))
+! {
+ cmd_complete = 1;
+ break;
+ }
+ }
+ p += j;
+! if (cmd_complete && getdigits(&p) == mouse_code)
+! {
+ slen += j; /* skip the \033[ */
+ continue;
+ }
+***************
+*** 4302,4307 ****
+--- 4356,4364 ----
+ #ifdef FEAT_MOUSE_URXVT
+ || key_name[0] == (int)KS_URXVT_MOUSE
+ #endif
++ #ifdef FEAT_MOUSE_SGR
++ || key_name[0] == KS_SGR_MOUSE
++ #endif
+ )
+ {
+ # if !defined(MSWIN) && !defined(MSDOS)
+*** ../vim-7.3.631/src/version.c 2012-08-15 14:04:50.000000000 +0200
+--- src/version.c 2012-08-15 15:47:30.000000000 +0200
+***************
+*** 384,389 ****
+--- 384,394 ----
+ # else
+ "-mouse_urxvt",
+ # endif
++ # ifdef FEAT_MOUSE_SGR
++ "+mouse_sgr",
++ # else
++ "-mouse_sgr",
++ # endif
+ #endif
+ #ifdef __QNX__
+ # ifdef FEAT_MOUSE_PTERM
+*** ../vim-7.3.631/src/version.c 2012-08-15 14:04:50.000000000 +0200
+--- src/version.c 2012-08-15 15:47:30.000000000 +0200
+***************
+*** 716,717 ****
+--- 721,724 ----
+ { /* Add new patch number below this line */
++ /**/
++ 632,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+243. You unsuccessfully try to download a pizza from www.dominos.com.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.633 b/source/ap/vim/patches/7.3.633
new file mode 100644
index 000000000..899ccb387
--- /dev/null
+++ b/source/ap/vim/patches/7.3.633
@@ -0,0 +1,81 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.633
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.633
+Problem: Selection remains displayed as selected after selecting another
+ text.
+Solution: Call xterm_update() before select(). (Andrew Pimlott)
+Files: src/os_unix.c
+
+
+*** ../vim-7.3.632/src/os_unix.c 2012-08-15 16:20:59.000000000 +0200
+--- src/os_unix.c 2012-08-15 17:15:58.000000000 +0200
+***************
+*** 5196,5201 ****
+--- 5196,5205 ----
+ FD_SET(ConnectionNumber(xterm_dpy), &rfds);
+ if (maxfd < ConnectionNumber(xterm_dpy))
+ maxfd = ConnectionNumber(xterm_dpy);
++
++ /* An event may have already been read but not handled. In
++ * particulary, XFlush may cause this. */
++ xterm_update();
+ }
+ # endif
+ # ifdef FEAT_MOUSE_GPM
+***************
+*** 5216,5229 ****
+ maxfd = xsmp_icefd;
+ }
+ # endif
+! #ifdef FEAT_NETBEANS_INTG
+ if (nb_fd != -1)
+ {
+ FD_SET(nb_fd, &rfds);
+ if (maxfd < nb_fd)
+ maxfd = nb_fd;
+ }
+! #endif
+
+ # ifdef OLD_VMS
+ /* Old VMS as v6.2 and older have broken select(). It waits more than
+--- 5220,5233 ----
+ maxfd = xsmp_icefd;
+ }
+ # endif
+! # ifdef FEAT_NETBEANS_INTG
+ if (nb_fd != -1)
+ {
+ FD_SET(nb_fd, &rfds);
+ if (maxfd < nb_fd)
+ maxfd = nb_fd;
+ }
+! # endif
+
+ # ifdef OLD_VMS
+ /* Old VMS as v6.2 and older have broken select(). It waits more than
+*** ../vim-7.3.632/src/version.c 2012-08-15 16:20:59.000000000 +0200
+--- src/version.c 2012-08-15 17:22:17.000000000 +0200
+***************
+*** 721,722 ****
+--- 721,724 ----
+ { /* Add new patch number below this line */
++ /**/
++ 633,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+245. You use Real Audio to listen to a radio station from a distant
+ city rather than turn on your stereo system.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.634 b/source/ap/vim/patches/7.3.634
new file mode 100644
index 000000000..3262bab3c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.634
@@ -0,0 +1,57 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.634
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.634
+Problem: Month/Day format for undo is confusing. (Marcin Szamotulski)
+Solution: Always use Year/Month/Day, should work for everybody.
+Files: src/undo.c
+
+
+*** ../vim-7.3.633/src/undo.c 2012-06-01 13:46:06.000000000 +0200
+--- src/undo.c 2012-08-23 12:43:24.000000000 +0200
+***************
+*** 2880,2890 ****
+ if (time(NULL) - tt < (60L * 60L * 12L))
+ /* within 12 hours */
+ (void)strftime((char *)buf, buflen, "%H:%M:%S", curtime);
+- else if (time(NULL) - tt < (60L * 60L * 24L * 180L))
+- /* within 6 months */
+- (void)strftime((char *)buf, buflen, "%m/%d %H:%M:%S", curtime);
+ else
+! /* long ago */
+ (void)strftime((char *)buf, buflen, "%Y/%m/%d %H:%M:%S", curtime);
+ }
+ else
+--- 2880,2887 ----
+ if (time(NULL) - tt < (60L * 60L * 12L))
+ /* within 12 hours */
+ (void)strftime((char *)buf, buflen, "%H:%M:%S", curtime);
+ else
+! /* longer ago */
+ (void)strftime((char *)buf, buflen, "%Y/%m/%d %H:%M:%S", curtime);
+ }
+ else
+*** ../vim-7.3.633/src/version.c 2012-08-15 17:26:53.000000000 +0200
+--- src/version.c 2012-08-23 12:58:36.000000000 +0200
+***************
+*** 721,722 ****
+--- 721,724 ----
+ { /* Add new patch number below this line */
++ /**/
++ 634,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+10E. You start counting in hex.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.635 b/source/ap/vim/patches/7.3.635
new file mode 100644
index 000000000..4a677025f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.635
@@ -0,0 +1,50 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.635
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.635
+Problem: Issue 21: System call during startup sets 'lines' to a wrong
+ value. (Karl Yngve)
+Solution: Don't set the shell size while the GUI is still starting up.
+ (Christian Brabandt)
+Files: src/ui.c
+
+
+*** ../vim-7.3.634/src/ui.c 2012-07-10 16:49:08.000000000 +0200
+--- src/ui.c 2012-08-23 13:25:26.000000000 +0200
+***************
+*** 298,303 ****
+--- 298,306 ----
+ int retval;
+
+ #ifdef FEAT_GUI
++ if (gui.starting)
++ /* possibly a system call during startup, check later */
++ return OK;
+ if (gui.in_use)
+ retval = gui_get_shellsize();
+ else
+*** ../vim-7.3.634/src/version.c 2012-08-23 12:58:56.000000000 +0200
+--- src/version.c 2012-08-23 13:27:00.000000000 +0200
+***************
+*** 721,722 ****
+--- 721,724 ----
+ { /* Add new patch number below this line */
++ /**/
++ 635,
+ /**/
+
+--
+ARTHUR: This new learning amazes me, Sir Bedevere. Explain again how sheep's
+ bladders may be employed to prevent earthquakes.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.636 b/source/ap/vim/patches/7.3.636
new file mode 100644
index 000000000..453a7fc99
--- /dev/null
+++ b/source/ap/vim/patches/7.3.636
@@ -0,0 +1,148 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.636
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.636 (after 7.3.625)
+Problem: Not all zero-width matches handled correctly for "gn".
+Solution: Move zero-width detection to a separate function. (Christian
+ Brabandt)
+Files: src/search.c
+
+
+*** ../vim-7.3.635/src/search.c 2012-08-08 15:27:54.000000000 +0200
+--- src/search.c 2012-08-23 15:52:50.000000000 +0200
+***************
+*** 4526,4531 ****
+--- 4526,4533 ----
+ #endif /* FEAT_TEXTOBJ */
+
+ #if defined(FEAT_VISUAL) || defined(PROTO)
++ static int is_zerowidth __ARGS((char_u *pattern));
++
+ /*
+ * Find next search match under cursor, cursor at end.
+ * Used while an operator is pending, and in Visual mode.
+***************
+*** 4546,4556 ****
+ int visual_active = FALSE;
+ int flags = 0;
+ pos_T save_VIsual;
+- regmmatch_T regmatch;
+- int nmatched = 0;
+ int zerowidth = FALSE;
+
+-
+ /* wrapping should not occur */
+ p_ws = FALSE;
+
+--- 4548,4555 ----
+***************
+*** 4583,4606 ****
+ else
+ orig_pos = pos = start_pos = curwin->w_cursor;
+
+! /*
+! * Check for zero-width pattern.
+! */
+! if (search_regcomp(spats[last_idx].pat, RE_SEARCH, RE_SEARCH,
+! ((SEARCH_HIS + SEARCH_KEEP)), &regmatch) == FAIL)
+ return FAIL;
+
+- /* Zero-width pattern should match somewhere, then we can check if start
+- * and end are in the same position. */
+- nmatched = vim_regexec_multi(&regmatch, curwin, curbuf,
+- curwin->w_cursor.lnum, (colnr_T)0, NULL);
+- if (called_emsg)
+- return FAIL;
+- if (nmatched && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum
+- && regmatch.endpos[0].col == regmatch.startpos[0].col)
+- zerowidth = TRUE;
+- vim_free(regmatch.regprog);
+-
+ /*
+ * The trick is to first search backwards and then search forward again,
+ * so that a match at the current cursor position will be correctly
+--- 4582,4592 ----
+ else
+ orig_pos = pos = start_pos = curwin->w_cursor;
+
+! /* Is the pattern is zero-width? */
+! zerowidth = is_zerowidth(spats[last_idx].pat);
+! if (zerowidth == -1)
+ return FAIL;
+
+ /*
+ * The trick is to first search backwards and then search forward again,
+ * so that a match at the current cursor position will be correctly
+***************
+*** 4693,4698 ****
+--- 4679,4721 ----
+
+ return OK;
+ }
++
++ /*
++ * Check if the pattern is zero-width.
++ * Returns TRUE, FALSE or -1 for failure.
++ */
++ static int
++ is_zerowidth(pattern)
++ char_u *pattern;
++ {
++ regmmatch_T regmatch;
++ int nmatched = 0;
++ int result = -1;
++ pos_T pos;
++
++ if (search_regcomp(pattern, RE_SEARCH, RE_SEARCH,
++ SEARCH_KEEP, &regmatch) == FAIL)
++ return -1;
++
++ /* move to match */
++ clearpos(&pos);
++ if (searchit(curwin, curbuf, &pos, FORWARD, spats[last_idx].pat, 1,
++ SEARCH_KEEP, RE_SEARCH, 0, NULL) != FAIL)
++ {
++ /* Zero-width pattern should match somewhere, then we can check if
++ * start and end are in the same position. */
++ nmatched = vim_regexec_multi(&regmatch, curwin, curbuf,
++ pos.lnum, (colnr_T)0, NULL);
++
++ if (!called_emsg)
++ result = (nmatched != 0
++ && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum
++ && regmatch.startpos[0].col == regmatch.endpos[0].col);
++ }
++
++ vim_free(regmatch.regprog);
++ return result;
++ }
+ #endif /* FEAT_VISUAL */
+
+ #if defined(FEAT_LISP) || defined(FEAT_CINDENT) || defined(FEAT_TEXTOBJ) \
+*** ../vim-7.3.635/src/version.c 2012-08-23 13:28:50.000000000 +0200
+--- src/version.c 2012-08-23 15:25:23.000000000 +0200
+***************
+*** 721,722 ****
+--- 721,724 ----
+ { /* Add new patch number below this line */
++ /**/
++ 636,
+ /**/
+
+--
+Edison's greatest achievement came in 1879, when he invented the
+electric company. Edison's design was a brilliant adaptation of the
+simple electrical circuit: the electric company sends electricity
+through a wire to a customer, then immediately gets the electricity
+back through another wire
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.637 b/source/ap/vim/patches/7.3.637
new file mode 100644
index 000000000..f7f1d903a
--- /dev/null
+++ b/source/ap/vim/patches/7.3.637
@@ -0,0 +1,94 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.637
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.637
+Problem: Cannot catch the error caused by a foldopen when there is no fold.
+ (ZyX, Issue 48)
+Solution: Do not break out of the loop early when inside try/catch.
+ (Christian Brabandt) Except when there is a syntax error.
+Files: src/ex_docmd.c, src/globals.h
+
+
+*** ../vim-7.3.636/src/ex_docmd.c 2012-08-15 14:04:50.000000000 +0200
+--- src/ex_docmd.c 2012-08-23 18:39:08.000000000 +0200
+***************
+*** 1295,1301 ****
+ && cstack.cs_trylevel == 0
+ #endif
+ )
+! && !(did_emsg && used_getline
+ && (getline_equal(fgetline, cookie, getexmodeline)
+ || getline_equal(fgetline, cookie, getexline)))
+ && (next_cmdline != NULL
+--- 1295,1308 ----
+ && cstack.cs_trylevel == 0
+ #endif
+ )
+! && !(did_emsg
+! #ifdef FEAT_EVAL
+! /* Keep going when inside try/catch, so that the error can be
+! * dealth with, except when it is a syntax error, it may cause
+! * the :endtry to be missed. */
+! && (cstack.cs_trylevel == 0 || did_emsg_syntax)
+! #endif
+! && used_getline
+ && (getline_equal(fgetline, cookie, getexmodeline)
+ || getline_equal(fgetline, cookie, getexline)))
+ && (next_cmdline != NULL
+***************
+*** 1305,1310 ****
+--- 1312,1318 ----
+ || (flags & DOCMD_REPEAT)));
+
+ vim_free(cmdline_copy);
++ did_emsg_syntax = FALSE;
+ #ifdef FEAT_EVAL
+ free_cmdlines(&lines_ga);
+ ga_clear(&lines_ga);
+***************
+*** 2137,2142 ****
+--- 2145,2151 ----
+ if (!sourcing)
+ append_command(*cmdlinep);
+ errormsg = IObuff;
++ did_emsg_syntax = TRUE;
+ }
+ goto doend;
+ }
+*** ../vim-7.3.636/src/globals.h 2012-07-10 16:49:08.000000000 +0200
+--- src/globals.h 2012-08-23 18:29:09.000000000 +0200
+***************
+*** 183,188 ****
+--- 183,190 ----
+ #endif
+ EXTERN int did_emsg; /* set by emsg() when the message
+ is displayed or thrown */
++ EXTERN int did_emsg_syntax; /* did_emsg set because of a
++ syntax error */
+ EXTERN int called_emsg; /* always set by emsg() */
+ EXTERN int ex_exitval INIT(= 0); /* exit value for ex mode */
+ EXTERN int emsg_on_display INIT(= FALSE); /* there is an error message */
+*** ../vim-7.3.636/src/version.c 2012-08-23 15:53:00.000000000 +0200
+--- src/version.c 2012-08-23 17:59:12.000000000 +0200
+***************
+*** 721,722 ****
+--- 721,724 ----
+ { /* Add new patch number below this line */
++ /**/
++ 637,
+ /**/
+
+--
+GOD: That is your purpose Arthur ... the Quest for the Holy Grail ...
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.638 b/source/ap/vim/patches/7.3.638
new file mode 100644
index 000000000..f88a9399b
--- /dev/null
+++ b/source/ap/vim/patches/7.3.638
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.638
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.638
+Problem: Unecessary redraw of the previous character.
+Solution: Check if the character is double-width. (Jon Long)
+Files: src/screen.c
+
+
+*** ../vim-7.3.637/src/screen.c 2012-07-10 16:49:08.000000000 +0200
+--- src/screen.c 2012-08-23 18:49:33.000000000 +0200
+***************
+*** 5332,5339 ****
+ && (ScreenLinesUC[off_from] != ScreenLinesUC[off_to]
+ || (ScreenLinesUC[off_from] != 0
+ && comp_char_differs(off_from, off_to))
+! || (cols > 1 && ScreenLines[off_from + 1]
+! != ScreenLines[off_to + 1])))
+ #endif
+ ))
+ return TRUE;
+--- 5332,5340 ----
+ && (ScreenLinesUC[off_from] != ScreenLinesUC[off_to]
+ || (ScreenLinesUC[off_from] != 0
+ && comp_char_differs(off_from, off_to))
+! || ((*mb_off2cells)(off_from, off_from + cols) > 1
+! && ScreenLines[off_from + 1]
+! != ScreenLines[off_to + 1])))
+ #endif
+ ))
+ return TRUE;
+*** ../vim-7.3.637/src/version.c 2012-08-23 18:43:06.000000000 +0200
+--- src/version.c 2012-08-23 18:47:11.000000000 +0200
+***************
+*** 721,722 ****
+--- 721,724 ----
+ { /* Add new patch number below this line */
++ /**/
++ 638,
+ /**/
+
+--
+There is a fine line between courage and foolishness.
+Unfortunately, it's not a fence.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.639 b/source/ap/vim/patches/7.3.639
new file mode 100644
index 000000000..359dc6d88
--- /dev/null
+++ b/source/ap/vim/patches/7.3.639
@@ -0,0 +1,846 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.639
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.639
+Problem: It's not easy to build Vim on Windows with XPM support.
+Solution: Include the required files, they are quite small. Update the
+ MSVC makefile to use them. Binary files are in the next patch.
+ (Sergey Khorev)
+Files: src/xpm/COPYRIGHT, src/xpm/README.txt, src/xpm/include/simx.h,
+ src/xpm/include/xpm.h, src/Make_mvc.mak, src/bigvim.bat,
+ src/bigvim64.bat, Filelist
+
+
+*** ../vim-7.3.638/src/xpm/COPYRIGHT 1970-01-01 01:00:00.000000000 +0100
+--- src/xpm/COPYRIGHT 1998-03-19 23:51:00.000000000 +0100
+***************
+*** 0 ****
+--- 1,31 ----
++ /*
++ * Copyright (C) 1989-95 GROUPE BULL
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to
++ * deal in the Software without restriction, including without limitation the
++ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
++ * sell copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
++ * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
++ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
++ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++ *
++ * Except as contained in this notice, the name of GROUPE BULL shall not be
++ * used in advertising or otherwise to promote the sale, use or other dealings
++ * in this Software without prior written authorization from GROUPE BULL.
++ */
++
++ Arnaud LE HORS BULL Research FRANCE -- Koala Project
++ (XPM - X PixMap format version 2 & 3)
++ Internet: lehors@sophia.inria.fr
++ Surface Mail: Arnaud LE HORS, INRIA - Sophia Antipolis,
++ 2004, route des Lucioles, 06565 Valbonne Cedex -- FRANCE
++ Voice phone: (33) 93.65.77.71, Fax: (33) 93 65 77 66, Telex: 97 00 50 F
+*** ../vim-7.3.638/src/xpm/README.txt 1970-01-01 01:00:00.000000000 +0100
+--- src/xpm/README.txt 2012-08-29 13:29:17.000000000 +0200
+***************
+*** 0 ****
+--- 1,23 ----
++ This is XPM library compiled for Windows which is intended for use with Vim
++ 'signs' feature.
++
++ Libraries in x86 directory were compiled with MSVC6 and MinGW. Proposed
++ commands to compile Vim are:
++
++ Any version of MSVC starting from version 6.0:
++ nmake -f Make_mvc.mak GUI=yes CSCOPE=yes NETBEANS=yes XPM=e:\hg\xpm\x86
++
++ MinGW:
++ mingw32-make -f Make_ming.mak GUI=yes CSCOPE=yes XPM=e:/hg/xpm/x86
++
++ Microsoft Visual C++ on x64 (tested with versions 2008 and 2010):
++ nmake -f Make_mvc.mak GUI=yes CSCOPE=yes XPM=E:\HG\xpm\x64
++
++ To test, open some file in Vim and execute commands below:
++ :exe 'sign define vimxpm icon='.$VIMRUNTIME.'\\vim32x32.xpm'
++ :exe 'sign place 1 line=1 name=vimxpm file='.expand('%:p')
++
++
++ See COPYRIGHT for XPM licence.
++
++ If you have questions please email sergey.khorev@gmail.com.
+*** ../vim-7.3.638/src/xpm/include/simx.h 1970-01-01 01:00:00.000000000 +0100
+--- src/xpm/include/simx.h 1998-03-19 23:51:00.000000000 +0100
+***************
+*** 0 ****
+--- 1,139 ----
++ /*
++ * Copyright (C) 1989-95 GROUPE BULL
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to
++ * deal in the Software without restriction, including without limitation the
++ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
++ * sell copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
++ * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
++ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
++ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++ *
++ * Except as contained in this notice, the name of GROUPE BULL shall not be
++ * used in advertising or otherwise to promote the sale, use or other dealings
++ * in this Software without prior written authorization from GROUPE BULL.
++ */
++
++ /*****************************************************************************\
++ * simx.h: 0.1a *
++ * *
++ * This emulates some Xlib functionality for MSW. It's not a general solution, *
++ * it is close related to XPM-lib. It is only intended to satisfy what is need *
++ * there. Thus allowing to read XPM files under MS windows. *
++ * *
++ * Developed by HeDu 3/94 (hedu@cul-ipn.uni-kiel.de) *
++ \*****************************************************************************/
++
++
++ #ifndef _SIMX_H
++ #define _SIMX_H
++
++ #ifdef FOR_MSW
++
++ #include "windows.h" /* MS windows GDI types */
++
++ /*
++ * minimal portability layer between ansi and KR C
++ */
++ /* this comes from xpm.h, and is here again, to avoid complicated
++ includes, since this is included from xpm.h */
++ /* these defines get undefed at the end of this file */
++ #if __STDC__ || defined(__cplusplus) || defined(c_plusplus)
++ /* ANSI || C++ */
++ #define FUNC(f, t, p) extern t f p
++ #define LFUNC(f, t, p) static t f p
++ #else /* k&R */
++ #define FUNC(f, t, p) extern t f()
++ #define LFUNC(f, t, p) static t f()
++ #endif
++
++
++ FUNC(boundCheckingMalloc, void *, (long s));
++ FUNC(boundCheckingCalloc, void *, (long num, long s));
++ FUNC(boundCheckingRealloc, void *, (void *p, long s));
++
++ /* define MSW types for X window types,
++ I don't know much about MSW, but the following defines do the job */
++
++ typedef HDC Display; /* this should be similar */
++ typedef void *Screen; /* not used */
++ typedef void *Visual; /* not used yet, is for GRAY, COLOR,
++ * MONO */
++
++ typedef void *Colormap; /* should be COLORPALETTE, not done
++ * yet */
++
++ typedef COLORREF Pixel;
++
++ #define PIXEL_ALREADY_TYPEDEFED /* to let xpm.h know about it */
++
++ typedef struct {
++ Pixel pixel;
++ BYTE red, green, blue;
++ } XColor;
++
++ typedef struct {
++ HBITMAP bitmap;
++ unsigned int width;
++ unsigned int height;
++ unsigned int depth;
++ } XImage;
++
++ #if defined(__cplusplus) || defined(c_plusplus)
++ extern "C" {
++ #endif
++ /* some replacements for X... functions */
++
++ /* XDefaultXXX */
++ FUNC(XDefaultVisual, Visual *, (Display *display, Screen *screen));
++ FUNC(XDefaultScreen, Screen *, (Display *d));
++ FUNC(XDefaultColormap, Colormap *, (Display *display, Screen *screen));
++ FUNC(XDefaultDepth, int, (Display *d, Screen *s));
++
++ /* color related */
++ FUNC(XParseColor, int, (Display *, Colormap *, char *, XColor *));
++ FUNC(XAllocColor, int, (Display *, Colormap *, XColor *));
++ FUNC(XQueryColors, void, (Display *display, Colormap *colormap,
++ XColor *xcolors, int ncolors));
++ FUNC(XFreeColors, int, (Display *d, Colormap cmap,
++ unsigned long pixels[],
++ int npixels, unsigned long planes));
++ /* XImage */
++ FUNC(XCreateImage, XImage *, (Display *, Visual *, int depth, int format,
++ int x, int y, int width, int height,
++ int pad, int foo));
++
++ /* free and destroy bitmap */
++ FUNC(XDestroyImage, void /* ? */ , (XImage *));
++ /* free only, bitmap remains */
++ FUNC(XImageFree, void, (XImage *));
++ #if defined(__cplusplus) || defined(c_plusplus)
++ } /* end of extern "C" */
++ #endif /* cplusplus */
++
++ #define ZPixmap 1 /* not really used */
++ #define XYBitmap 1 /* not really used */
++
++ #ifndef True
++ #define True 1
++ #define False 0
++ #endif
++ #ifndef Bool
++ typedef BOOL Bool; /* take MSW bool */
++ #endif
++ /* make these local here, simx.c gets the same from xpm.h */
++ #undef LFUNC
++ #undef FUNC
++
++ #endif /* def FOR_MSW */
++
++ #endif /* _SIMX_H */
+*** ../vim-7.3.638/src/xpm/include/xpm.h 1970-01-01 01:00:00.000000000 +0100
+--- src/xpm/include/xpm.h 1998-03-19 23:51:00.000000000 +0100
+***************
+*** 0 ****
+--- 1,501 ----
++ /*
++ * Copyright (C) 1989-95 GROUPE BULL
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to
++ * deal in the Software without restriction, including without limitation the
++ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
++ * sell copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
++ * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
++ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
++ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++ *
++ * Except as contained in this notice, the name of GROUPE BULL shall not be
++ * used in advertising or otherwise to promote the sale, use or other dealings
++ * in this Software without prior written authorization from GROUPE BULL.
++ */
++
++ /*****************************************************************************\
++ * xpm.h: *
++ * *
++ * XPM library *
++ * Include file *
++ * *
++ * Developed by Arnaud Le Hors *
++ \*****************************************************************************/
++
++ /*
++ * The code related to FOR_MSW has been added by
++ * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94
++ */
++
++ /*
++ * The code related to AMIGA has been added by
++ * Lorens Younes (d93-hyo@nada.kth.se) 4/96
++ */
++
++ #ifndef XPM_h
++ #define XPM_h
++
++ /*
++ * first some identification numbers:
++ * the version and revision numbers are determined with the following rule:
++ * SO Major number = LIB minor version number.
++ * SO Minor number = LIB sub-minor version number.
++ * e.g: Xpm version 3.2f
++ * we forget the 3 which is the format number, 2 gives 2, and f gives 6.
++ * thus we have XpmVersion = 2 and XpmRevision = 6
++ * which gives SOXPMLIBREV = 2.6
++ *
++ * Then the XpmIncludeVersion number is built from these numbers.
++ */
++ #define XpmFormat 3
++ #define XpmVersion 4
++ #define XpmRevision 11
++ #define XpmIncludeVersion ((XpmFormat * 100 + XpmVersion) * 100 + XpmRevision)
++
++ #ifndef XPM_NUMBERS
++
++ #ifdef FOR_MSW
++ # define SYSV /* uses memcpy string.h etc. */
++ # include <malloc.h>
++ # include "simx.h" /* defines some X stuff using MSW types */
++ #define NEED_STRCASECMP /* at least for MSVC++ */
++ #else /* FOR_MSW */
++ # ifdef AMIGA
++ # include "amigax.h"
++ # else /* not AMIGA */
++ # include <X11/Xlib.h>
++ # include <X11/Xutil.h>
++ # endif /* not AMIGA */
++ #endif /* FOR_MSW */
++
++ /* let's define Pixel if it is not done yet */
++ #if ! defined(_XtIntrinsic_h) && ! defined(PIXEL_ALREADY_TYPEDEFED)
++ typedef unsigned long Pixel; /* Index into colormap */
++ # define PIXEL_ALREADY_TYPEDEFED
++ #endif
++
++ /* make sure we know whether function prototypes are needed or not */
++ #ifndef NeedFunctionPrototypes
++ # if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)
++ # define NeedFunctionPrototypes 1
++ # else
++ # define NeedFunctionPrototypes 0
++ # endif
++ #endif
++
++
++ /* Return ErrorStatus codes:
++ * null if full success
++ * positive if partial success
++ * negative if failure
++ */
++
++ #define XpmColorError 1
++ #define XpmSuccess 0
++ #define XpmOpenFailed -1
++ #define XpmFileInvalid -2
++ #define XpmNoMemory -3
++ #define XpmColorFailed -4
++
++ typedef struct {
++ char *name; /* Symbolic color name */
++ char *value; /* Color value */
++ Pixel pixel; /* Color pixel */
++ } XpmColorSymbol;
++
++ typedef struct {
++ char *name; /* name of the extension */
++ unsigned int nlines; /* number of lines in this extension */
++ char **lines; /* pointer to the extension array of strings */
++ } XpmExtension;
++
++ typedef struct {
++ char *string; /* characters string */
++ char *symbolic; /* symbolic name */
++ char *m_color; /* monochrom default */
++ char *g4_color; /* 4 level grayscale default */
++ char *g_color; /* other level grayscale default */
++ char *c_color; /* color default */
++ } XpmColor;
++
++ typedef struct {
++ unsigned int width; /* image width */
++ unsigned int height; /* image height */
++ unsigned int cpp; /* number of characters per pixel */
++ unsigned int ncolors; /* number of colors */
++ XpmColor *colorTable; /* list of related colors */
++ unsigned int *data; /* image data */
++ } XpmImage;
++
++ typedef struct {
++ unsigned long valuemask; /* Specifies which attributes are defined */
++ char *hints_cmt; /* Comment of the hints section */
++ char *colors_cmt; /* Comment of the colors section */
++ char *pixels_cmt; /* Comment of the pixels section */
++ unsigned int x_hotspot; /* Returns the x hotspot's coordinate */
++ unsigned int y_hotspot; /* Returns the y hotspot's coordinate */
++ unsigned int nextensions; /* number of extensions */
++ XpmExtension *extensions; /* pointer to array of extensions */
++ } XpmInfo;
++
++ typedef int (*XpmAllocColorFunc)(
++ #if NeedFunctionPrototypes
++ Display* /* display */,
++ Colormap /* colormap */,
++ char* /* colorname */,
++ XColor* /* xcolor */,
++ void* /* closure */
++ #endif
++ );
++
++ typedef int (*XpmFreeColorsFunc)(
++ #if NeedFunctionPrototypes
++ Display* /* display */,
++ Colormap /* colormap */,
++ Pixel* /* pixels */,
++ int /* npixels */,
++ void* /* closure */
++ #endif
++ );
++
++ typedef struct {
++ unsigned long valuemask; /* Specifies which attributes are
++ defined */
++
++ Visual *visual; /* Specifies the visual to use */
++ Colormap colormap; /* Specifies the colormap to use */
++ unsigned int depth; /* Specifies the depth */
++ unsigned int width; /* Returns the width of the created
++ pixmap */
++ unsigned int height; /* Returns the height of the created
++ pixmap */
++ unsigned int x_hotspot; /* Returns the x hotspot's
++ coordinate */
++ unsigned int y_hotspot; /* Returns the y hotspot's
++ coordinate */
++ unsigned int cpp; /* Specifies the number of char per
++ pixel */
++ Pixel *pixels; /* List of used color pixels */
++ unsigned int npixels; /* Number of used pixels */
++ XpmColorSymbol *colorsymbols; /* List of color symbols to override */
++ unsigned int numsymbols; /* Number of symbols */
++ char *rgb_fname; /* RGB text file name */
++ unsigned int nextensions; /* Number of extensions */
++ XpmExtension *extensions; /* List of extensions */
++
++ unsigned int ncolors; /* Number of colors */
++ XpmColor *colorTable; /* List of colors */
++ /* 3.2 backward compatibility code */
++ char *hints_cmt; /* Comment of the hints section */
++ char *colors_cmt; /* Comment of the colors section */
++ char *pixels_cmt; /* Comment of the pixels section */
++ /* end 3.2 bc */
++ unsigned int mask_pixel; /* Color table index of transparent
++ color */
++
++ /* Color Allocation Directives */
++ Bool exactColors; /* Only use exact colors for visual */
++ unsigned int closeness; /* Allowable RGB deviation */
++ unsigned int red_closeness; /* Allowable red deviation */
++ unsigned int green_closeness; /* Allowable green deviation */
++ unsigned int blue_closeness; /* Allowable blue deviation */
++ int color_key; /* Use colors from this color set */
++
++ Pixel *alloc_pixels; /* Returns the list of alloc'ed color
++ pixels */
++ int nalloc_pixels; /* Returns the number of alloc'ed
++ color pixels */
++
++ Bool alloc_close_colors; /* Specify whether close colors should
++ be allocated using XAllocColor
++ or not */
++ int bitmap_format; /* Specify the format of 1bit depth
++ images: ZPixmap or XYBitmap */
++
++ /* Color functions */
++ XpmAllocColorFunc alloc_color; /* Application color allocator */
++ XpmFreeColorsFunc free_colors; /* Application color de-allocator */
++ void *color_closure; /* Application private data to pass to
++ alloc_color and free_colors */
++
++ } XpmAttributes;
++
++ /* XpmAttributes value masks bits */
++ #define XpmVisual (1L<<0)
++ #define XpmColormap (1L<<1)
++ #define XpmDepth (1L<<2)
++ #define XpmSize (1L<<3) /* width & height */
++ #define XpmHotspot (1L<<4) /* x_hotspot & y_hotspot */
++ #define XpmCharsPerPixel (1L<<5)
++ #define XpmColorSymbols (1L<<6)
++ #define XpmRgbFilename (1L<<7)
++ /* 3.2 backward compatibility code */
++ #define XpmInfos (1L<<8)
++ #define XpmReturnInfos XpmInfos
++ /* end 3.2 bc */
++ #define XpmReturnPixels (1L<<9)
++ #define XpmExtensions (1L<<10)
++ #define XpmReturnExtensions XpmExtensions
++
++ #define XpmExactColors (1L<<11)
++ #define XpmCloseness (1L<<12)
++ #define XpmRGBCloseness (1L<<13)
++ #define XpmColorKey (1L<<14)
++
++ #define XpmColorTable (1L<<15)
++ #define XpmReturnColorTable XpmColorTable
++
++ #define XpmReturnAllocPixels (1L<<16)
++ #define XpmAllocCloseColors (1L<<17)
++ #define XpmBitmapFormat (1L<<18)
++
++ #define XpmAllocColor (1L<<19)
++ #define XpmFreeColors (1L<<20)
++ #define XpmColorClosure (1L<<21)
++
++
++ /* XpmInfo value masks bits */
++ #define XpmComments XpmInfos
++ #define XpmReturnComments XpmComments
++
++ /* XpmAttributes mask_pixel value when there is no mask */
++ #ifndef FOR_MSW
++ #define XpmUndefPixel 0x80000000
++ #else
++ /* int is only 16 bit for MSW */
++ #define XpmUndefPixel 0x8000
++ #endif
++
++ /*
++ * color keys for visual type, they must fit along with the number key of
++ * each related element in xpmColorKeys[] defined in XpmI.h
++ */
++ #define XPM_MONO 2
++ #define XPM_GREY4 3
++ #define XPM_GRAY4 3
++ #define XPM_GREY 4
++ #define XPM_GRAY 4
++ #define XPM_COLOR 5
++
++
++ /* macros for forward declarations of functions with prototypes */
++ #if NeedFunctionPrototypes
++ #define FUNC(f, t, p) extern t f p
++ #define LFUNC(f, t, p) static t f p
++ #else
++ #define FUNC(f, t, p) extern t f()
++ #define LFUNC(f, t, p) static t f()
++ #endif
++
++
++ /*
++ * functions declarations
++ */
++
++ #ifdef __cplusplus
++ extern "C" {
++ #endif
++
++ /* FOR_MSW, all ..Pixmap.. are excluded, only the ..XImage.. are used */
++ /* Same for Amiga! */
++
++ #if !defined(FOR_MSW) && !defined(AMIGA)
++ FUNC(XpmCreatePixmapFromData, int, (Display *display,
++ Drawable d,
++ char **data,
++ Pixmap *pixmap_return,
++ Pixmap *shapemask_return,
++ XpmAttributes *attributes));
++
++ FUNC(XpmCreateDataFromPixmap, int, (Display *display,
++ char ***data_return,
++ Pixmap pixmap,
++ Pixmap shapemask,
++ XpmAttributes *attributes));
++
++ FUNC(XpmReadFileToPixmap, int, (Display *display,
++ Drawable d,
++ char *filename,
++ Pixmap *pixmap_return,
++ Pixmap *shapemask_return,
++ XpmAttributes *attributes));
++
++ FUNC(XpmWriteFileFromPixmap, int, (Display *display,
++ char *filename,
++ Pixmap pixmap,
++ Pixmap shapemask,
++ XpmAttributes *attributes));
++ #endif
++
++ FUNC(XpmCreateImageFromData, int, (Display *display,
++ char **data,
++ XImage **image_return,
++ XImage **shapemask_return,
++ XpmAttributes *attributes));
++
++ FUNC(XpmCreateDataFromImage, int, (Display *display,
++ char ***data_return,
++ XImage *image,
++ XImage *shapeimage,
++ XpmAttributes *attributes));
++
++ FUNC(XpmReadFileToImage, int, (Display *display,
++ char *filename,
++ XImage **image_return,
++ XImage **shapeimage_return,
++ XpmAttributes *attributes));
++
++ FUNC(XpmWriteFileFromImage, int, (Display *display,
++ char *filename,
++ XImage *image,
++ XImage *shapeimage,
++ XpmAttributes *attributes));
++
++ FUNC(XpmCreateImageFromBuffer, int, (Display *display,
++ char *buffer,
++ XImage **image_return,
++ XImage **shapemask_return,
++ XpmAttributes *attributes));
++ #if !defined(FOR_MSW) && !defined(AMIGA)
++ FUNC(XpmCreatePixmapFromBuffer, int, (Display *display,
++ Drawable d,
++ char *buffer,
++ Pixmap *pixmap_return,
++ Pixmap *shapemask_return,
++ XpmAttributes *attributes));
++
++ FUNC(XpmCreateBufferFromImage, int, (Display *display,
++ char **buffer_return,
++ XImage *image,
++ XImage *shapeimage,
++ XpmAttributes *attributes));
++
++ FUNC(XpmCreateBufferFromPixmap, int, (Display *display,
++ char **buffer_return,
++ Pixmap pixmap,
++ Pixmap shapemask,
++ XpmAttributes *attributes));
++ #endif
++ FUNC(XpmReadFileToBuffer, int, (char *filename, char **buffer_return));
++ FUNC(XpmWriteFileFromBuffer, int, (char *filename, char *buffer));
++
++ FUNC(XpmReadFileToData, int, (char *filename, char ***data_return));
++ FUNC(XpmWriteFileFromData, int, (char *filename, char **data));
++
++ FUNC(XpmAttributesSize, int, ());
++ FUNC(XpmFreeAttributes, void, (XpmAttributes *attributes));
++ FUNC(XpmFreeExtensions, void, (XpmExtension *extensions,
++ int nextensions));
++
++ FUNC(XpmFreeXpmImage, void, (XpmImage *image));
++ FUNC(XpmFreeXpmInfo, void, (XpmInfo *info));
++ FUNC(XpmGetErrorString, char *, (int errcode));
++ FUNC(XpmLibraryVersion, int, ());
++
++ /* XpmImage functions */
++ FUNC(XpmReadFileToXpmImage, int, (char *filename,
++ XpmImage *image,
++ XpmInfo *info));
++
++ FUNC(XpmWriteFileFromXpmImage, int, (char *filename,
++ XpmImage *image,
++ XpmInfo *info));
++ #if !defined(FOR_MSW) && !defined(AMIGA)
++ FUNC(XpmCreatePixmapFromXpmImage, int, (Display *display,
++ Drawable d,
++ XpmImage *image,
++ Pixmap *pixmap_return,
++ Pixmap *shapemask_return,
++ XpmAttributes *attributes));
++ #endif
++ FUNC(XpmCreateImageFromXpmImage, int, (Display *display,
++ XpmImage *image,
++ XImage **image_return,
++ XImage **shapeimage_return,
++ XpmAttributes *attributes));
++
++ FUNC(XpmCreateXpmImageFromImage, int, (Display *display,
++ XImage *image,
++ XImage *shapeimage,
++ XpmImage *xpmimage,
++ XpmAttributes *attributes));
++ #if !defined(FOR_MSW) && !defined(AMIGA)
++ FUNC(XpmCreateXpmImageFromPixmap, int, (Display *display,
++ Pixmap pixmap,
++ Pixmap shapemask,
++ XpmImage *xpmimage,
++ XpmAttributes *attributes));
++ #endif
++ FUNC(XpmCreateDataFromXpmImage, int, (char ***data_return,
++ XpmImage *image,
++ XpmInfo *info));
++
++ FUNC(XpmCreateXpmImageFromData, int, (char **data,
++ XpmImage *image,
++ XpmInfo *info));
++
++ FUNC(XpmCreateXpmImageFromBuffer, int, (char *buffer,
++ XpmImage *image,
++ XpmInfo *info));
++
++ FUNC(XpmCreateBufferFromXpmImage, int, (char **buffer_return,
++ XpmImage *image,
++ XpmInfo *info));
++
++ FUNC(XpmGetParseError, int, (char *filename,
++ int *linenum_return,
++ int *charnum_return));
++
++ FUNC(XpmFree, void, (void *ptr));
++
++ #ifdef __cplusplus
++ } /* for C++ V2.0 */
++ #endif
++
++
++ /* backward compatibility */
++
++ /* for version 3.0c */
++ #define XpmPixmapColorError XpmColorError
++ #define XpmPixmapSuccess XpmSuccess
++ #define XpmPixmapOpenFailed XpmOpenFailed
++ #define XpmPixmapFileInvalid XpmFileInvalid
++ #define XpmPixmapNoMemory XpmNoMemory
++ #define XpmPixmapColorFailed XpmColorFailed
++
++ #define XpmReadPixmapFile(dpy, d, file, pix, mask, att) \
++ XpmReadFileToPixmap(dpy, d, file, pix, mask, att)
++ #define XpmWritePixmapFile(dpy, file, pix, mask, att) \
++ XpmWriteFileFromPixmap(dpy, file, pix, mask, att)
++
++ /* for version 3.0b */
++ #define PixmapColorError XpmColorError
++ #define PixmapSuccess XpmSuccess
++ #define PixmapOpenFailed XpmOpenFailed
++ #define PixmapFileInvalid XpmFileInvalid
++ #define PixmapNoMemory XpmNoMemory
++ #define PixmapColorFailed XpmColorFailed
++
++ #define ColorSymbol XpmColorSymbol
++
++ #define XReadPixmapFile(dpy, d, file, pix, mask, att) \
++ XpmReadFileToPixmap(dpy, d, file, pix, mask, att)
++ #define XWritePixmapFile(dpy, file, pix, mask, att) \
++ XpmWriteFileFromPixmap(dpy, file, pix, mask, att)
++ #define XCreatePixmapFromData(dpy, d, data, pix, mask, att) \
++ XpmCreatePixmapFromData(dpy, d, data, pix, mask, att)
++ #define XCreateDataFromPixmap(dpy, data, pix, mask, att) \
++ XpmCreateDataFromPixmap(dpy, data, pix, mask, att)
++
++ #endif /* XPM_NUMBERS */
++ #endif
+*** ../vim-7.3.638/src/Make_mvc.mak 2012-08-02 21:48:20.000000000 +0200
+--- src/Make_mvc.mak 2012-08-29 13:46:05.000000000 +0200
+***************
+*** 89,94 ****
+--- 89,96 ----
+ # Netbeans Support: NETBEANS=[yes or no] (default is yes if GUI is yes)
+ #
+ # XPM Image Support: XPM=[path to XPM directory]
++ # Default is "xpm", using the files included in the distribution.
++ # Use "no" to disable this feature.
+ #
+ # Optimization: OPTIMIZE=[SPACE, SPEED, MAXSPEED] (default is MAXSPEED)
+ #
+***************
+*** 279,295 ****
+ NETBEANS_LIB = WSock32.lib
+ !endif
+
+! !ifdef XPM
+ # XPM - Include support for XPM signs
+! # You need to download or build xpm.lib somehow.
+! # You can get the most recent version of libXpm-*.zip from
+! # http://cgit.freedesktop.org/xorg/lib/libXpm
+! # from which you must build xpm.lib yourself
+! # OR get and unpack: ftp://ftp.vim.org/pub/vim/pcextra/xpm.zip
+ XPM_OBJ = $(OBJDIR)/xpm_w32.obj
+ XPM_DEFS = -DFEAT_XPM_W32
+ XPM_LIB = $(XPM)\lib\libXpm.lib
+! XPM_INC = -I $(XPM)\include
+ !endif
+ !endif
+
+--- 281,301 ----
+ NETBEANS_LIB = WSock32.lib
+ !endif
+
+! !ifndef XPM
+! # XPM is not set, use the included xpm files, depending on the architecture.
+! !if ("$(CPU)" == "AMD64") || ("$(CPU)" == "IA64")
+! XPM = xpm\x64
+! !else
+! XPM = xpm\x86
+! !endif
+! !endif
+! !if "$(XPM)" != "no"
+ # XPM - Include support for XPM signs
+! # See the xpm directory for more information.
+ XPM_OBJ = $(OBJDIR)/xpm_w32.obj
+ XPM_DEFS = -DFEAT_XPM_W32
+ XPM_LIB = $(XPM)\lib\libXpm.lib
+! XPM_INC = -I $(XPM)\include -I $(XPM)\..\include
+ !endif
+ !endif
+
+*** ../vim-7.3.638/src/bigvim.bat 2010-08-15 21:57:29.000000000 +0200
+--- src/bigvim.bat 2012-08-29 13:46:18.000000000 +0200
+***************
+*** 1,3 ****
+ :: command to build big Vim with OLE, Perl, Python, Ruby and Tcl
+! nmake -f Make_mvc.mak GUI=yes OLE=yes PERL=E:\perl512 DYNAMIC_PERL=yes PERL_VER=512 PYTHON=e:\python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=e:\python31 DYNAMIC_PYTHON3=yes PYTHON3_VER=31 RUBY=e:\ruby191 DYNAMIC_RUBY=yes RUBY_VER=191 RUBY_VER_LONG=1.9.1 TCL=e:\tcl DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes XPM=e:\xpm
+
+--- 1,5 ----
+ :: command to build big Vim with OLE, Perl, Python, Ruby and Tcl
+! SET VCDIR="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\"
+! SET TOOLDIR=E:\
+! %VCDIR%nmake -f Make_mvc.mak GUI=yes OLE=yes PERL=E:\perl514 DYNAMIC_PERL=yes PERL_VER=514 PYTHON=%TOOLDIR%python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=%TOOLDIR%python32 DYNAMIC_PYTHON3=yes PYTHON3_VER=32 RUBY=%TOOLDIR%ruby192 DYNAMIC_RUBY=yes RUBY_VER=192 RUBY_VER_LONG=1.9.2 TCL=%TOOLDIR%tcl TCL_VER=85 TCL_VER_LONG=8.5 DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes
+
+*** ../vim-7.3.638/src/bigvim64.bat 2012-08-29 14:16:38.000000000 +0200
+--- src/bigvim64.bat 2012-08-29 13:46:35.000000000 +0200
+***************
+*** 0 ****
+--- 1,6 ----
++ :: command to build big Vim 64 bit with OLE, Perl, Python, Ruby and Tcl
++ :: First run: %VCDIR%\vcvarsall.bat x86_amd64
++ SET VCDIR="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\"
++ SET TOOLDIR=E:\
++ %VCDIR%\bin\nmake -f Make_mvc.mak CPU=AMD64 GUI=yes OLE=yes PERL=E:\perl514 DYNAMIC_PERL=yes PERL_VER=514 PYTHON=%TOOLDIR%python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=%TOOLDIR%python32 DYNAMIC_PYTHON3=yes PYTHON3_VER=32 RUBY=%TOOLDIR%ruby192 DYNAMIC_RUBY=yes RUBY_VER=192 RUBY_VER_LONG=1.9.2 TCL=%TOOLDIR%tcl TCL_VER=85 TCL_VER_LONG=8.5 DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes
++
+*** ../vim-7.3.638/Filelist 2012-07-16 17:27:57.000000000 +0200
+--- Filelist 2012-08-29 13:53:52.000000000 +0200
+***************
+*** 349,354 ****
+--- 349,360 ----
+ src/vim*.ico \
+ src/vim.tlb \
+ src/vimtbar.lib \
++ src/xpm/COPYRIGHT \
++ src/xpm/README.txt \
++ src/xpm/include/*.h \
++ src/xpm/x64/lib/libXpm.lib \
++ src/xpm/x86/lib/libXpm.a \
++ src/xpm/x86/lib/libXpm.lib \
+ src/vimtbar.dll \
+ nsis/icons/*.bmp \
+ nsis/icons/*.ico \
+*** ../vim-7.3.638/src/version.c 2012-08-29 14:17:51.000000000 +0200
+--- src/version.c 2012-08-29 14:14:19.000000000 +0200
+***************
+*** 721,722 ****
+--- 721,724 ----
+ { /* Add new patch number below this line */
++ /**/
++ 639,
+ /**/
+
+--
+A successful man is one who makes more money than his wife can spend.
+A successful woman is one who can find such a man.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.640 b/source/ap/vim/patches/7.3.640
new file mode 100644
index 000000000..984df6400
--- /dev/null
+++ b/source/ap/vim/patches/7.3.640
Binary files differ
diff --git a/source/ap/vim/patches/7.3.641 b/source/ap/vim/patches/7.3.641
new file mode 100644
index 000000000..daacdb4ff
--- /dev/null
+++ b/source/ap/vim/patches/7.3.641
@@ -0,0 +1,68 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.641
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.641
+Problem: ":mkview" uses ":normal" instead of ":normal!" for folds. (Dan)
+Solution: Add the bang. (Christian Brabandt)
+Files: src/fold.c
+
+
+*** ../vim-7.3.640/src/fold.c 2012-08-08 18:01:00.000000000 +0200
+--- src/fold.c 2012-08-29 15:17:39.000000000 +0200
+***************
+*** 3373,3379 ****
+ /* open nested folds while this fold is open */
+ if (fprintf(fd, "%ld", fp->fd_top + off) < 0
+ || put_eol(fd) == FAIL
+! || put_line(fd, "normal zo") == FAIL)
+ return FAIL;
+ if (put_foldopen_recurse(fd, wp, &fp->fd_nested,
+ off + fp->fd_top)
+--- 3373,3379 ----
+ /* open nested folds while this fold is open */
+ if (fprintf(fd, "%ld", fp->fd_top + off) < 0
+ || put_eol(fd) == FAIL
+! || put_line(fd, "normal! zo") == FAIL)
+ return FAIL;
+ if (put_foldopen_recurse(fd, wp, &fp->fd_nested,
+ off + fp->fd_top)
+***************
+*** 3417,3423 ****
+ {
+ if (fprintf(fd, "%ld", fp->fd_top + off) < 0
+ || put_eol(fd) == FAIL
+! || fprintf(fd, "normal z%c",
+ fp->fd_flags == FD_CLOSED ? 'c' : 'o') < 0
+ || put_eol(fd) == FAIL)
+ return FAIL;
+--- 3417,3423 ----
+ {
+ if (fprintf(fd, "%ld", fp->fd_top + off) < 0
+ || put_eol(fd) == FAIL
+! || fprintf(fd, "normal! z%c",
+ fp->fd_flags == FD_CLOSED ? 'c' : 'o') < 0
+ || put_eol(fd) == FAIL)
+ return FAIL;
+*** ../vim-7.3.640/src/version.c 2012-08-29 14:23:06.000000000 +0200
+--- src/version.c 2012-08-29 15:18:26.000000000 +0200
+***************
+*** 721,722 ****
+--- 721,724 ----
+ { /* Add new patch number below this line */
++ /**/
++ 641,
+ /**/
+
+--
+You cannot propel yourself forward by patting yourself on the back.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.642 b/source/ap/vim/patches/7.3.642
new file mode 100644
index 000000000..ddc40321f
--- /dev/null
+++ b/source/ap/vim/patches/7.3.642
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.642
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.642
+Problem: Segfault with specific autocommands. Was OK after 7.3.449 and
+ before 7.3.545. (Richard Brown)
+Solution: Pass TRUE for abort_if_last in the call to close_buffer().
+ (Christian Brabandt)
+Files: src/window.c
+
+
+*** ../vim-7.3.641/src/window.c 2012-07-19 18:05:40.000000000 +0200
+--- src/window.c 2012-08-29 15:42:15.000000000 +0200
+***************
+*** 2269,2275 ****
+ #ifdef FEAT_AUTOCMD
+ win->w_closing = TRUE;
+ #endif
+! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, FALSE);
+ #ifdef FEAT_AUTOCMD
+ if (win_valid(win))
+ win->w_closing = FALSE;
+--- 2269,2275 ----
+ #ifdef FEAT_AUTOCMD
+ win->w_closing = TRUE;
+ #endif
+! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, TRUE);
+ #ifdef FEAT_AUTOCMD
+ if (win_valid(win))
+ win->w_closing = FALSE;
+*** ../vim-7.3.641/src/version.c 2012-08-29 15:22:14.000000000 +0200
+--- src/version.c 2012-08-29 15:49:52.000000000 +0200
+***************
+*** 721,722 ****
+--- 721,724 ----
+ { /* Add new patch number below this line */
++ /**/
++ 642,
+ /**/
+
+--
+The psychic said, "God bless you." I said, "I didn't sneeze." She
+looked deep into my eyes and said, "You will, eventually." And, damn
+if she wasn't right. Two days later, I sneezed. --Ellen Degeneres
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.643 b/source/ap/vim/patches/7.3.643
new file mode 100644
index 000000000..c2f700c58
--- /dev/null
+++ b/source/ap/vim/patches/7.3.643
@@ -0,0 +1,73 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.643
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.643 (after 7.3.635)
+Problem: MS-Windows: When starting gvim maximized 'lines' and 'columns' are
+ wrong. (Christian Robinson)
+Solution: Move the check for gui.starting from ui_get_shellsize() to
+ check_shellsize().
+Files: src/ui.c, src/term.c
+
+
+*** ../vim-7.3.642/src/ui.c 2012-08-23 13:28:50.000000000 +0200
+--- src/ui.c 2012-08-29 16:20:04.000000000 +0200
+***************
+*** 298,306 ****
+ int retval;
+
+ #ifdef FEAT_GUI
+- if (gui.starting)
+- /* possibly a system call during startup, check later */
+- return OK;
+ if (gui.in_use)
+ retval = gui_get_shellsize();
+ else
+--- 298,303 ----
+*** ../vim-7.3.642/src/term.c 2012-08-15 16:20:59.000000000 +0200
+--- src/term.c 2012-08-29 16:22:25.000000000 +0200
+***************
+*** 3006,3012 ****
+ int old_Rows = Rows;
+ int old_Columns = Columns;
+
+! if (!exiting)
+ {
+ (void)ui_get_shellsize();
+ check_shellsize();
+--- 3006,3018 ----
+ int old_Rows = Rows;
+ int old_Columns = Columns;
+
+! if (!exiting
+! #ifdef FEAT_GUI
+! /* Do not get the size when executing a shell command during
+! * startup. */
+! && !gui.starting
+! #endif
+! )
+ {
+ (void)ui_get_shellsize();
+ check_shellsize();
+*** ../vim-7.3.642/src/version.c 2012-08-29 15:50:22.000000000 +0200
+--- src/version.c 2012-08-29 16:25:42.000000000 +0200
+***************
+*** 721,722 ****
+--- 721,724 ----
+ { /* Add new patch number below this line */
++ /**/
++ 643,
+ /**/
+
+--
+Eight Megabytes And Continually Swapping.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.644 b/source/ap/vim/patches/7.3.644
new file mode 100644
index 000000000..6f2630cc4
--- /dev/null
+++ b/source/ap/vim/patches/7.3.644
@@ -0,0 +1,72 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.644
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.644
+Problem: Dead code for BeOS GUI.
+Solution: Remove unused __BEOS__ stuff.
+Files: src/gui.c
+
+
+*** ../vim-7.3.643/src/gui.c 2012-07-10 16:49:08.000000000 +0200
+--- src/gui.c 2012-08-29 16:28:46.000000000 +0200
+***************
+*** 37,44 ****
+ static void gui_set_bg_color __ARGS((char_u *name));
+ static win_T *xy2win __ARGS((int x, int y));
+
+! #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X) \
+! && !defined(__APPLE__)
+ # define MAY_FORK
+ static void gui_do_fork __ARGS((void));
+
+--- 37,43 ----
+ static void gui_set_bg_color __ARGS((char_u *name));
+ static win_T *xy2win __ARGS((int x, int y));
+
+! #if defined(UNIX) && !defined(MACOS_X) && !defined(__APPLE__)
+ # define MAY_FORK
+ static void gui_do_fork __ARGS((void));
+
+***************
+*** 784,794 ****
+ gui_exit(rc)
+ int rc;
+ {
+- #ifndef __BEOS__
+ /* don't free the fonts, it leads to a BUS error
+ * richard@whitequeen.com Jul 99 */
+ free_highlight_fonts();
+- #endif
+ gui.in_use = FALSE;
+ gui_mch_exit(rc);
+ }
+--- 783,791 ----
+*** ../vim-7.3.643/src/version.c 2012-08-29 16:26:01.000000000 +0200
+--- src/version.c 2012-08-29 16:33:30.000000000 +0200
+***************
+*** 721,722 ****
+--- 721,724 ----
+ { /* Add new patch number below this line */
++ /**/
++ 644,
+ /**/
+
+--
+E M A C S
+s e l o h
+c t t n i
+a a t f
+p r t
+e o
+ l
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.3.645 b/source/ap/vim/patches/7.3.645
new file mode 100644
index 000000000..40d8ee0b8
--- /dev/null
+++ b/source/ap/vim/patches/7.3.645
@@ -0,0 +1,118 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.645
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.645
+Problem: No tests for patch 7.3.625 and 7.3.637.
+Solution: Add more tests for the "gn" command and try/catch. (Christian
+ Brabandt)
+Files: src/testdir/test53.in, src/testdir/test53.ok,
+ src/testdir/test55.in, src/testdir/test55.ok
+
+
+*** ../vim-7.3.644/src/testdir/test53.in 2012-07-25 15:06:20.000000000 +0200
+--- src/testdir/test53.in 2012-08-29 16:37:44.000000000 +0200
+***************
+*** 34,40 ****
+ gnd
+ /[a]bcdx
+ :1
+! 2gnd
+ :/^start:/,/^end:/wq! test.out
+ ENDTEST
+
+--- 34,46 ----
+ gnd
+ /[a]bcdx
+ :1
+! 2gnd/join
+! /$
+! 0gnd
+! /\>\zs
+! 0gnd/^
+! gnd$h/\zs
+! gnd
+ :/^start:/,/^end:/wq! test.out
+ ENDTEST
+
+***************
+*** 57,60 ****
+--- 63,70 ----
+ one
+ two
+ abcdx | abcdx | abcdx
++ join
++ lines
++ zero width pattern
++ delete first and last chars
+ end:
+*** ../vim-7.3.644/src/testdir/test53.ok 2012-07-25 15:06:20.000000000 +0200
+--- src/testdir/test53.ok 2012-08-29 16:37:48.000000000 +0200
+***************
+*** 21,24 ****
+--- 21,27 ----
+ SEARCH:
+ searchmatch
+ abcdx | | abcdx
++ join lines
++ zerowidth pattern
++ elete first and last char
+ end:
+*** ../vim-7.3.644/src/testdir/test55.in 2012-05-18 12:06:58.000000000 +0200
+--- src/testdir/test55.in 2012-08-29 16:50:51.000000000 +0200
+***************
+*** 378,383 ****
+--- 378,393 ----
+ :unlet dict
+ :call garbagecollect(1)
+ :"
++ :" test for patch 7.3.637
++ :let a = 'No error caught'
++ :try|foldopen|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
++ o=a :"
++ :lang C
++ :redir => a
++ :try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
++ :redir END
++ o=a :"
++ :"
+ :/^start:/,$wq! test.out
+ ENDTEST
+
+*** ../vim-7.3.644/src/testdir/test55.ok 2012-05-18 12:06:58.000000000 +0200
+--- src/testdir/test55.ok 2012-08-29 16:51:15.000000000 +0200
+***************
+*** 115,117 ****
+--- 115,123 ----
+ {'a': {'b': 'B'}}
+ Vim(call):E737: a
+ {'a': {'b': 'B'}}
++ Vim(foldopen):E490:
++
++
++ Error detected while processing :
++ E492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
++
+*** ../vim-7.3.644/src/version.c 2012-08-29 16:34:23.000000000 +0200
+--- src/version.c 2012-08-29 16:37:20.000000000 +0200
+***************
+*** 721,722 ****
+--- 721,724 ----
+ { /* Add new patch number below this line */
++ /**/
++ 645,
+ /**/
+
+--
+TALL KNIGHT OF NI: Ni!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/zsh/zsh.SlackBuild b/source/ap/zsh/zsh.SlackBuild
index dc6dcf2a4..7c0a46b3e 100755
--- a/source/ap/zsh/zsh.SlackBuild
+++ b/source/ap/zsh/zsh.SlackBuild
@@ -21,7 +21,7 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PKGNAM=zsh
-VERSION=${VERSION:-$(echo ${PKGNAM}-4.*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+VERSION=${VERSION:-$(echo ${PKGNAM}-5.*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
@@ -68,9 +68,6 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# fix regex crash:
-zcat $CWD/zsh.regex.oh.bah.diff.gz | patch -p0 --verbose || exit 1
-
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
diff --git a/source/ap/zsh/zsh.regex.oh.bah.diff b/source/ap/zsh/zsh.regex.oh.bah.diff
deleted file mode 100644
index 15e3d5b43..000000000
--- a/source/ap/zsh/zsh.regex.oh.bah.diff
+++ /dev/null
@@ -1,12 +0,0 @@
---- ./Src/text.c.orig 2010-09-14 09:46:26.000000000 -0500
-+++ ./Src/text.c 2011-03-19 18:50:22.270001467 -0500
-@@ -785,8 +785,7 @@
- taddstr(" ");
- taddstr(ecgetstr(state, EC_NODUP, NULL));
- if (ctype == COND_STREQ ||
-- ctype == COND_STRNEQ ||
-- ctype == COND_REGEX)
-+ ctype == COND_STRNEQ)
- state->pc++;
- } else {
- /* Unary test: `-f foo' etc. */