summaryrefslogtreecommitdiffstats
path: root/patches/source/vim/patches
diff options
context:
space:
mode:
Diffstat (limited to 'patches/source/vim/patches')
-rw-r--r--patches/source/vim/patches/7.4.001489
-rw-r--r--patches/source/vim/patches/7.4.00277
-rw-r--r--patches/source/vim/patches/7.4.003100
-rw-r--r--patches/source/vim/patches/7.4.004232
-rw-r--r--patches/source/vim/patches/7.4.00548
-rw-r--r--patches/source/vim/patches/7.4.00666
-rw-r--r--patches/source/vim/patches/7.4.00795
-rw-r--r--patches/source/vim/patches/7.4.00871
-rw-r--r--patches/source/vim/patches/7.4.00964
-rw-r--r--patches/source/vim/patches/7.4.01079
-rw-r--r--patches/source/vim/patches/7.4.011100
-rw-r--r--patches/source/vim/patches/7.4.012202
-rw-r--r--patches/source/vim/patches/7.4.01399
-rw-r--r--patches/source/vim/patches/7.4.014102
-rw-r--r--patches/source/vim/patches/7.4.015106
-rw-r--r--patches/source/vim/patches/7.4.016221
-rw-r--r--patches/source/vim/patches/7.4.01778
-rw-r--r--patches/source/vim/patches/7.4.01845
-rw-r--r--patches/source/vim/patches/7.4.01961
-rw-r--r--patches/source/vim/patches/7.4.02082
-rw-r--r--patches/source/vim/patches/7.4.02186
-rw-r--r--patches/source/vim/patches/7.4.022148
-rw-r--r--patches/source/vim/patches/7.4.02353
-rw-r--r--patches/source/vim/patches/7.4.02461
-rw-r--r--patches/source/vim/patches/7.4.02562
-rw-r--r--patches/source/vim/patches/7.4.02665
-rw-r--r--patches/source/vim/patches/7.4.02789
-rw-r--r--patches/source/vim/patches/7.4.028753
-rw-r--r--patches/source/vim/patches/7.4.02963
-rw-r--r--patches/source/vim/patches/7.4.030109
-rw-r--r--patches/source/vim/patches/7.4.03154
-rw-r--r--patches/source/vim/patches/7.4.03282
-rw-r--r--patches/source/vim/patches/7.4.033116
-rw-r--r--patches/source/vim/patches/7.4.034180
-rw-r--r--patches/source/vim/patches/7.4.03553
-rw-r--r--patches/source/vim/patches/7.4.036273
-rw-r--r--patches/source/vim/patches/7.4.037130
-rw-r--r--patches/source/vim/patches/7.4.038116
-rw-r--r--patches/source/vim/patches/7.4.039217
-rw-r--r--patches/source/vim/patches/7.4.04068
-rw-r--r--patches/source/vim/patches/7.4.04161
-rw-r--r--patches/source/vim/patches/7.4.04271
-rw-r--r--patches/source/vim/patches/7.4.04389
-rw-r--r--patches/source/vim/patches/7.4.04483
-rw-r--r--patches/source/vim/patches/7.4.045111
-rw-r--r--patches/source/vim/patches/7.4.04680
-rw-r--r--patches/source/vim/patches/7.4.04756
-rw-r--r--patches/source/vim/patches/7.4.04896
-rw-r--r--patches/source/vim/patches/7.4.04967
-rw-r--r--patches/source/vim/patches/7.4.05090
-rw-r--r--patches/source/vim/patches/7.4.05167
-rw-r--r--patches/source/vim/patches/7.4.052197
-rw-r--r--patches/source/vim/patches/7.4.05345
-rw-r--r--patches/source/vim/patches/7.4.05453
-rw-r--r--patches/source/vim/patches/7.4.055138
-rw-r--r--patches/source/vim/patches/7.4.05651
-rw-r--r--patches/source/vim/patches/7.4.057252
-rw-r--r--patches/source/vim/patches/7.4.05867
-rw-r--r--patches/source/vim/patches/7.4.05953
-rw-r--r--patches/source/vim/patches/7.4.06071
-rw-r--r--patches/source/vim/patches/7.4.061144
-rw-r--r--patches/source/vim/patches/7.4.06287
-rw-r--r--patches/source/vim/patches/7.4.063105
-rw-r--r--patches/source/vim/patches/7.4.064bin0 -> 5346 bytes
-rw-r--r--patches/source/vim/patches/7.4.06570
-rw-r--r--patches/source/vim/patches/7.4.066354
-rw-r--r--patches/source/vim/patches/7.4.067126
-rw-r--r--patches/source/vim/patches/7.4.068131
-rw-r--r--patches/source/vim/patches/7.4.0692559
-rw-r--r--patches/source/vim/patches/7.4.07047
-rw-r--r--patches/source/vim/patches/7.4.0711302
-rw-r--r--patches/source/vim/patches/7.4.07261
-rw-r--r--patches/source/vim/patches/7.4.073404
-rw-r--r--patches/source/vim/patches/7.4.07467
-rw-r--r--patches/source/vim/patches/7.4.075290
-rw-r--r--patches/source/vim/patches/7.4.07666
-rw-r--r--patches/source/vim/patches/7.4.07763
-rw-r--r--patches/source/vim/patches/7.4.078114
-rw-r--r--patches/source/vim/patches/7.4.079470
-rw-r--r--patches/source/vim/patches/7.4.08052
-rw-r--r--patches/source/vim/patches/7.4.08152
-rw-r--r--patches/source/vim/patches/7.4.082344
-rw-r--r--patches/source/vim/patches/7.4.083136
-rw-r--r--patches/source/vim/patches/7.4.084184
-rw-r--r--patches/source/vim/patches/7.4.085118
-rw-r--r--patches/source/vim/patches/7.4.086145
-rw-r--r--patches/source/vim/patches/7.4.08756
-rw-r--r--patches/source/vim/patches/7.4.088564
-rw-r--r--patches/source/vim/patches/7.4.08947
-rw-r--r--patches/source/vim/patches/7.4.090223
-rw-r--r--patches/source/vim/patches/7.4.09159
-rw-r--r--patches/source/vim/patches/7.4.09262
-rw-r--r--patches/source/vim/patches/7.4.09372
-rw-r--r--patches/source/vim/patches/7.4.094139
-rw-r--r--patches/source/vim/patches/7.4.09573
-rw-r--r--patches/source/vim/patches/7.4.09696
-rw-r--r--patches/source/vim/patches/7.4.09750
-rw-r--r--patches/source/vim/patches/7.4.098243
-rw-r--r--patches/source/vim/patches/7.4.099113
-rw-r--r--patches/source/vim/patches/7.4.10082
-rw-r--r--patches/source/vim/patches/7.4.10193
-rw-r--r--patches/source/vim/patches/7.4.10284
-rw-r--r--patches/source/vim/patches/7.4.10393
-rw-r--r--patches/source/vim/patches/7.4.104107
-rw-r--r--patches/source/vim/patches/7.4.10558
-rw-r--r--patches/source/vim/patches/7.4.10668
-rw-r--r--patches/source/vim/patches/7.4.107639
-rw-r--r--patches/source/vim/patches/7.4.108215
-rw-r--r--patches/source/vim/patches/7.4.109123
-rw-r--r--patches/source/vim/patches/7.4.110102
-rw-r--r--patches/source/vim/patches/7.4.11163
-rw-r--r--patches/source/vim/patches/7.4.11270
-rw-r--r--patches/source/vim/patches/7.4.113101
-rw-r--r--patches/source/vim/patches/7.4.11456
-rw-r--r--patches/source/vim/patches/7.4.11552
-rw-r--r--patches/source/vim/patches/7.4.11646
-rw-r--r--patches/source/vim/patches/7.4.117263
-rw-r--r--patches/source/vim/patches/7.4.11890
-rw-r--r--patches/source/vim/patches/7.4.119245
-rw-r--r--patches/source/vim/patches/7.4.12053
-rw-r--r--patches/source/vim/patches/7.4.12148
-rw-r--r--patches/source/vim/patches/7.4.122215
-rw-r--r--patches/source/vim/patches/7.4.12364
-rw-r--r--patches/source/vim/patches/7.4.12463
-rw-r--r--patches/source/vim/patches/7.4.12557
-rw-r--r--patches/source/vim/patches/7.4.12668
-rw-r--r--patches/source/vim/patches/7.4.12767
-rw-r--r--patches/source/vim/patches/7.4.12866
-rw-r--r--patches/source/vim/patches/7.4.12956
-rw-r--r--patches/source/vim/patches/7.4.13069
-rw-r--r--patches/source/vim/patches/7.4.131113
-rw-r--r--patches/source/vim/patches/7.4.13254
-rw-r--r--patches/source/vim/patches/7.4.13374
-rw-r--r--patches/source/vim/patches/7.4.13453
-rw-r--r--patches/source/vim/patches/7.4.13551
-rw-r--r--patches/source/vim/patches/7.4.13675
-rw-r--r--patches/source/vim/patches/7.4.137239
-rw-r--r--patches/source/vim/patches/7.4.13855
-rw-r--r--patches/source/vim/patches/7.4.13976
-rw-r--r--patches/source/vim/patches/7.4.140174
-rw-r--r--patches/source/vim/patches/7.4.14188
-rw-r--r--patches/source/vim/patches/7.4.142186
-rw-r--r--patches/source/vim/patches/7.4.143214
-rw-r--r--patches/source/vim/patches/7.4.14452
-rw-r--r--patches/source/vim/patches/7.4.14575
-rw-r--r--patches/source/vim/patches/7.4.14667
-rw-r--r--patches/source/vim/patches/7.4.147bin0 -> 2583 bytes
-rw-r--r--patches/source/vim/patches/7.4.14883
-rw-r--r--patches/source/vim/patches/7.4.149822
-rw-r--r--patches/source/vim/patches/7.4.15093
-rw-r--r--patches/source/vim/patches/7.4.1511470
-rw-r--r--patches/source/vim/patches/7.4.152708
-rw-r--r--patches/source/vim/patches/7.4.153176
-rw-r--r--patches/source/vim/patches/7.4.154153
-rw-r--r--patches/source/vim/patches/7.4.15583
-rw-r--r--patches/source/vim/patches/7.4.15649
-rw-r--r--patches/source/vim/patches/7.4.15753
-rw-r--r--patches/source/vim/patches/7.4.158140
-rw-r--r--patches/source/vim/patches/7.4.159116
-rw-r--r--patches/source/vim/patches/7.4.16066
-rw-r--r--patches/source/vim/patches/7.4.16175
-rw-r--r--patches/source/vim/patches/7.4.16245
-rw-r--r--patches/source/vim/patches/7.4.16375
-rw-r--r--patches/source/vim/patches/7.4.16478
-rw-r--r--patches/source/vim/patches/7.4.16571
-rw-r--r--patches/source/vim/patches/7.4.16653
-rw-r--r--patches/source/vim/patches/7.4.167195
-rw-r--r--patches/source/vim/patches/7.4.16891
-rw-r--r--patches/source/vim/patches/7.4.16953
-rw-r--r--patches/source/vim/patches/7.4.17090
-rw-r--r--patches/source/vim/patches/7.4.171841
-rw-r--r--patches/source/vim/patches/7.4.172346
-rw-r--r--patches/source/vim/patches/7.4.17361
-rw-r--r--patches/source/vim/patches/7.4.17494
-rw-r--r--patches/source/vim/patches/7.4.175180
-rw-r--r--patches/source/vim/patches/7.4.17691
-rw-r--r--patches/source/vim/patches/7.4.17748
-rw-r--r--patches/source/vim/patches/7.4.17862
-rw-r--r--patches/source/vim/patches/7.4.17957
-rw-r--r--patches/source/vim/patches/7.4.18076
-rw-r--r--patches/source/vim/patches/7.4.18168
-rw-r--r--patches/source/vim/patches/7.4.18256
-rw-r--r--patches/source/vim/patches/7.4.18349
-rw-r--r--patches/source/vim/patches/7.4.184250
-rw-r--r--patches/source/vim/patches/7.4.18564
-rw-r--r--patches/source/vim/patches/7.4.186164
-rw-r--r--patches/source/vim/patches/7.4.187136
-rw-r--r--patches/source/vim/patches/7.4.188617
-rw-r--r--patches/source/vim/patches/7.4.18952
-rw-r--r--patches/source/vim/patches/7.4.19070
-rw-r--r--patches/source/vim/patches/7.4.191689
-rw-r--r--patches/source/vim/patches/7.4.19244
-rw-r--r--patches/source/vim/patches/7.4.193106
-rw-r--r--patches/source/vim/patches/7.4.19453
-rw-r--r--patches/source/vim/patches/7.4.195164
-rw-r--r--patches/source/vim/patches/7.4.19651
-rw-r--r--patches/source/vim/patches/7.4.1971052
-rw-r--r--patches/source/vim/patches/7.4.198103
-rw-r--r--patches/source/vim/patches/7.4.199106
-rw-r--r--patches/source/vim/patches/7.4.20068
-rw-r--r--patches/source/vim/patches/7.4.201273
-rw-r--r--patches/source/vim/patches/7.4.202281
-rw-r--r--patches/source/vim/patches/7.4.203203
-rw-r--r--patches/source/vim/patches/7.4.204113
-rw-r--r--patches/source/vim/patches/7.4.205113
-rw-r--r--patches/source/vim/patches/7.4.20672
-rw-r--r--patches/source/vim/patches/7.4.207176
-rw-r--r--patches/source/vim/patches/7.4.20836
-rw-r--r--patches/source/vim/patches/7.4.20963
-rw-r--r--patches/source/vim/patches/7.4.210133
-rw-r--r--patches/source/vim/patches/7.4.21168
-rw-r--r--patches/source/vim/patches/7.4.2125720
-rw-r--r--patches/source/vim/patches/7.4.213211
-rw-r--r--patches/source/vim/patches/7.4.21450
-rw-r--r--patches/source/vim/patches/7.4.21587
-rw-r--r--patches/source/vim/patches/7.4.21673
-rw-r--r--patches/source/vim/patches/7.4.21785
-rw-r--r--patches/source/vim/patches/7.4.218578
-rw-r--r--patches/source/vim/patches/7.4.219100
-rw-r--r--patches/source/vim/patches/7.4.220106
-rw-r--r--patches/source/vim/patches/7.4.22162
-rw-r--r--patches/source/vim/patches/7.4.22283
-rw-r--r--patches/source/vim/patches/7.4.2236557
-rw-r--r--patches/source/vim/patches/7.4.224210
-rw-r--r--patches/source/vim/patches/7.4.22583
-rw-r--r--patches/source/vim/patches/7.4.226136
-rw-r--r--patches/source/vim/patches/7.4.22787
-rw-r--r--patches/source/vim/patches/7.4.228189
-rw-r--r--patches/source/vim/patches/7.4.229141
-rw-r--r--patches/source/vim/patches/7.4.23053
-rw-r--r--patches/source/vim/patches/7.4.231267
-rw-r--r--patches/source/vim/patches/7.4.232109
-rw-r--r--patches/source/vim/patches/7.4.23380
-rw-r--r--patches/source/vim/patches/7.4.23495
-rw-r--r--patches/source/vim/patches/7.4.235552
-rw-r--r--patches/source/vim/patches/7.4.236159
-rw-r--r--patches/source/vim/patches/7.4.237127
-rw-r--r--patches/source/vim/patches/7.4.238505
-rw-r--r--patches/source/vim/patches/7.4.23955
-rw-r--r--patches/source/vim/patches/7.4.24057
-rw-r--r--patches/source/vim/patches/7.4.241386
-rw-r--r--patches/source/vim/patches/7.4.242520
-rw-r--r--patches/source/vim/patches/7.4.2431109
-rw-r--r--patches/source/vim/patches/7.4.24460
-rw-r--r--patches/source/vim/patches/7.4.24552
-rw-r--r--patches/source/vim/patches/7.4.246121
-rw-r--r--patches/source/vim/patches/7.4.247227
-rw-r--r--patches/source/vim/patches/7.4.248515
-rw-r--r--patches/source/vim/patches/7.4.249bin0 -> 6037 bytes
-rw-r--r--patches/source/vim/patches/7.4.25052
-rw-r--r--patches/source/vim/patches/7.4.251164
-rw-r--r--patches/source/vim/patches/7.4.25247
-rw-r--r--patches/source/vim/patches/7.4.25376
-rw-r--r--patches/source/vim/patches/7.4.254183
-rw-r--r--patches/source/vim/patches/7.4.255108
-rw-r--r--patches/source/vim/patches/7.4.25683
-rw-r--r--patches/source/vim/patches/7.4.25764
-rw-r--r--patches/source/vim/patches/7.4.258114
-rw-r--r--patches/source/vim/patches/7.4.25953
-rw-r--r--patches/source/vim/patches/7.4.260281
-rw-r--r--patches/source/vim/patches/7.4.261106
-rw-r--r--patches/source/vim/patches/7.4.262314
-rw-r--r--patches/source/vim/patches/7.4.26344
-rw-r--r--patches/source/vim/patches/7.4.264176
-rw-r--r--patches/source/vim/patches/7.4.265153
-rw-r--r--patches/source/vim/patches/7.4.26646
-rw-r--r--patches/source/vim/patches/7.4.267438
-rw-r--r--patches/source/vim/patches/7.4.268108
-rw-r--r--patches/source/vim/patches/7.4.269213
-rw-r--r--patches/source/vim/patches/7.4.27062
-rw-r--r--patches/source/vim/patches/7.4.27152
-rw-r--r--patches/source/vim/patches/7.4.272148
-rw-r--r--patches/source/vim/patches/7.4.27357
-rw-r--r--patches/source/vim/patches/7.4.27446
-rw-r--r--patches/source/vim/patches/7.4.27556
-rw-r--r--patches/source/vim/patches/7.4.276302
-rw-r--r--patches/source/vim/patches/7.4.27780
-rw-r--r--patches/source/vim/patches/7.4.278183
-rw-r--r--patches/source/vim/patches/7.4.279616
-rw-r--r--patches/source/vim/patches/7.4.280125
-rw-r--r--patches/source/vim/patches/7.4.28180
-rw-r--r--patches/source/vim/patches/7.4.28248
-rw-r--r--patches/source/vim/patches/7.4.28356
-rw-r--r--patches/source/vim/patches/7.4.28453
-rw-r--r--patches/source/vim/patches/7.4.28549
-rw-r--r--patches/source/vim/patches/7.4.28652
-rw-r--r--patches/source/vim/patches/7.4.28747
-rw-r--r--patches/source/vim/patches/7.4.28846
-rw-r--r--patches/source/vim/patches/7.4.289122
-rw-r--r--patches/source/vim/patches/7.4.290156
-rw-r--r--patches/source/vim/patches/7.4.29156
-rw-r--r--patches/source/vim/patches/7.4.292139
-rw-r--r--patches/source/vim/patches/7.4.293301
-rw-r--r--patches/source/vim/patches/7.4.294125
-rw-r--r--patches/source/vim/patches/7.4.295144
-rw-r--r--patches/source/vim/patches/7.4.29653
-rw-r--r--patches/source/vim/patches/7.4.29776
-rw-r--r--patches/source/vim/patches/7.4.29852
-rw-r--r--patches/source/vim/patches/7.4.299458
-rw-r--r--patches/source/vim/patches/7.4.30062
-rw-r--r--patches/source/vim/patches/7.4.30153
-rw-r--r--patches/source/vim/patches/7.4.30278
-rw-r--r--patches/source/vim/patches/7.4.30385
-rw-r--r--patches/source/vim/patches/7.4.30445
-rw-r--r--patches/source/vim/patches/7.4.305.gzbin0 -> 2653 bytes
-rw-r--r--patches/source/vim/patches/7.4.30684
-rw-r--r--patches/source/vim/patches/7.4.307147
-rw-r--r--patches/source/vim/patches/7.4.30847
-rw-r--r--patches/source/vim/patches/7.4.30988
-rw-r--r--patches/source/vim/patches/7.4.310373
-rw-r--r--patches/source/vim/patches/7.4.311127
-rw-r--r--patches/source/vim/patches/7.4.312194
-rw-r--r--patches/source/vim/patches/7.4.313320
-rw-r--r--patches/source/vim/patches/7.4.314178
-rw-r--r--patches/source/vim/patches/7.4.315229
-rw-r--r--patches/source/vim/patches/7.4.31652
-rw-r--r--patches/source/vim/patches/7.4.31757
-rw-r--r--patches/source/vim/patches/7.4.31852
-rw-r--r--patches/source/vim/patches/7.4.31955
-rw-r--r--patches/source/vim/patches/7.4.320143
-rw-r--r--patches/source/vim/patches/7.4.32171
-rw-r--r--patches/source/vim/patches/7.4.32292
-rw-r--r--patches/source/vim/patches/7.4.32396
-rw-r--r--patches/source/vim/patches/7.4.324190
-rw-r--r--patches/source/vim/patches/7.4.32562
-rw-r--r--patches/source/vim/patches/7.4.32651
-rw-r--r--patches/source/vim/patches/7.4.327163
-rw-r--r--patches/source/vim/patches/7.4.32882
-rw-r--r--patches/source/vim/patches/7.4.32955
-rw-r--r--patches/source/vim/patches/7.4.3301131
-rw-r--r--patches/source/vim/patches/7.4.33147
-rw-r--r--patches/source/vim/patches/7.4.332118
-rw-r--r--patches/source/vim/patches/7.4.33372
-rw-r--r--patches/source/vim/patches/7.4.334112
-rw-r--r--patches/source/vim/patches/7.4.335108
-rw-r--r--patches/source/vim/patches/7.4.336100
-rw-r--r--patches/source/vim/patches/7.4.33751
-rw-r--r--patches/source/vim/patches/7.4.3381830
-rw-r--r--patches/source/vim/patches/7.4.33979
-rw-r--r--patches/source/vim/patches/7.4.34097
-rw-r--r--patches/source/vim/patches/7.4.341178
-rw-r--r--patches/source/vim/patches/7.4.34267
-rw-r--r--patches/source/vim/patches/7.4.34360
-rw-r--r--patches/source/vim/patches/7.4.344180
-rw-r--r--patches/source/vim/patches/7.4.34573
-rw-r--r--patches/source/vim/patches/7.4.34661
-rw-r--r--patches/source/vim/patches/7.4.34774
-rw-r--r--patches/source/vim/patches/7.4.34858
-rw-r--r--patches/source/vim/patches/7.4.349111
-rw-r--r--patches/source/vim/patches/7.4.350139
-rw-r--r--patches/source/vim/patches/7.4.351160
-rw-r--r--patches/source/vim/patches/7.4.352101
-rw-r--r--patches/source/vim/patches/7.4.353489
-rw-r--r--patches/source/vim/patches/7.4.35456
-rw-r--r--patches/source/vim/patches/7.4.355929
-rw-r--r--patches/source/vim/patches/7.4.35638
-rw-r--r--patches/source/vim/patches/7.4.35752
-rw-r--r--patches/source/vim/patches/7.4.358290
-rw-r--r--patches/source/vim/patches/7.4.359103
-rw-r--r--patches/source/vim/patches/7.4.36080
-rw-r--r--patches/source/vim/patches/7.4.36148
-rw-r--r--patches/source/vim/patches/7.4.36253
-rw-r--r--patches/source/vim/patches/7.4.363160
-rw-r--r--patches/source/vim/patches/7.4.36470
-rw-r--r--patches/source/vim/patches/7.4.365159
-rw-r--r--patches/source/vim/patches/7.4.36653
-rw-r--r--patches/source/vim/patches/7.4.36767
-rw-r--r--patches/source/vim/patches/7.4.36879
-rw-r--r--patches/source/vim/patches/7.4.36970
-rw-r--r--patches/source/vim/patches/7.4.370316
-rw-r--r--patches/source/vim/patches/7.4.37159
-rw-r--r--patches/source/vim/patches/7.4.372188
-rw-r--r--patches/source/vim/patches/7.4.37398
-rw-r--r--patches/source/vim/patches/7.4.37471
-rw-r--r--patches/source/vim/patches/7.4.37559
-rw-r--r--patches/source/vim/patches/7.4.37657
-rw-r--r--patches/source/vim/patches/7.4.377144
-rw-r--r--patches/source/vim/patches/7.4.378336
-rw-r--r--patches/source/vim/patches/7.4.37945
-rw-r--r--patches/source/vim/patches/7.4.380115
-rw-r--r--patches/source/vim/patches/7.4.38145
-rw-r--r--patches/source/vim/patches/7.4.38252
-rw-r--r--patches/source/vim/patches/7.4.38352
-rw-r--r--patches/source/vim/patches/7.4.38447
-rw-r--r--patches/source/vim/patches/7.4.38576
-rw-r--r--patches/source/vim/patches/7.4.386186
-rw-r--r--patches/source/vim/patches/7.4.387199
-rw-r--r--patches/source/vim/patches/7.4.38898
-rw-r--r--patches/source/vim/patches/7.4.389490
-rw-r--r--patches/source/vim/patches/7.4.39051
-rw-r--r--patches/source/vim/patches/7.4.391118
-rw-r--r--patches/source/vim/patches/7.4.39286
-rw-r--r--patches/source/vim/patches/7.4.3931946
-rw-r--r--patches/source/vim/patches/7.4.39456
-rw-r--r--patches/source/vim/patches/7.4.39599
-rw-r--r--patches/source/vim/patches/7.4.396291
-rw-r--r--patches/source/vim/patches/7.4.397150
-rw-r--r--patches/source/vim/patches/7.4.39852
-rw-r--r--patches/source/vim/patches/7.4.3995059
399 files changed, 81635 insertions, 0 deletions
diff --git a/patches/source/vim/patches/7.4.001 b/patches/source/vim/patches/7.4.001
new file mode 100644
index 00000000..5788972a
--- /dev/null
+++ b/patches/source/vim/patches/7.4.001
@@ -0,0 +1,489 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.001
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.001
+Problem: Character classes such as [a-z] to not react to 'ignorecase'.
+ Breaks man page highlighting. (Mario Grgic)
+Solution: Add separate items for classes that react to 'ignorecase'. Clean
+ up logic handling character classes. Add more tests.
+Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok
+
+
+*** ../vim-7.4.000/src/regexp_nfa.c 2013-08-01 18:27:51.000000000 +0200
+--- src/regexp_nfa.c 2013-08-14 11:49:50.000000000 +0200
+***************
+*** 29,34 ****
+--- 29,37 ----
+ # define NFA_REGEXP_DEBUG_LOG "nfa_regexp_debug.log"
+ #endif
+
++ /* Added to NFA_ANY - NFA_NUPPER_IC to include a NL. */
++ #define NFA_ADD_NL 31
++
+ enum
+ {
+ NFA_SPLIT = -1024,
+***************
+*** 183,188 ****
+--- 186,198 ----
+ NFA_NLOWER, /* Match non-lowercase char */
+ NFA_UPPER, /* Match uppercase char */
+ NFA_NUPPER, /* Match non-uppercase char */
++ NFA_LOWER_IC, /* Match [a-z] */
++ NFA_NLOWER_IC, /* Match [^a-z] */
++ NFA_UPPER_IC, /* Match [A-Z] */
++ NFA_NUPPER_IC, /* Match [^A-Z] */
++
++ NFA_FIRST_NL = NFA_ANY + NFA_ADD_NL,
++ NFA_LAST_NL = NFA_NUPPER_IC + NFA_ADD_NL,
+
+ NFA_CURSOR, /* Match cursor pos */
+ NFA_LNUM, /* Match line number */
+***************
+*** 199,207 ****
+ NFA_MARK_LT, /* Match < mark */
+ NFA_VISUAL, /* Match Visual area */
+
+- NFA_FIRST_NL = NFA_ANY + ADD_NL,
+- NFA_LAST_NL = NFA_NUPPER + ADD_NL,
+-
+ /* Character classes [:alnum:] etc */
+ NFA_CLASS_ALNUM,
+ NFA_CLASS_ALPHA,
+--- 209,214 ----
+***************
+*** 578,583 ****
+--- 585,592 ----
+ * On failure, return 0 (=FAIL)
+ * Start points to the first char of the range, while end should point
+ * to the closing brace.
++ * Keep in mind that 'ignorecase' applies at execution time, thus [a-z] may
++ * need to be interpreted as [a-zA-Z].
+ */
+ static int
+ nfa_recognize_char_class(start, end, extra_newl)
+***************
+*** 681,687 ****
+ return FAIL;
+
+ if (newl == TRUE)
+! extra_newl = ADD_NL;
+
+ switch (config)
+ {
+--- 690,696 ----
+ return FAIL;
+
+ if (newl == TRUE)
+! extra_newl = NFA_ADD_NL;
+
+ switch (config)
+ {
+***************
+*** 710,722 ****
+ case CLASS_not | CLASS_az | CLASS_AZ:
+ return extra_newl + NFA_NALPHA;
+ case CLASS_az:
+! return extra_newl + NFA_LOWER;
+ case CLASS_not | CLASS_az:
+! return extra_newl + NFA_NLOWER;
+ case CLASS_AZ:
+! return extra_newl + NFA_UPPER;
+ case CLASS_not | CLASS_AZ:
+! return extra_newl + NFA_NUPPER;
+ }
+ return FAIL;
+ }
+--- 719,731 ----
+ case CLASS_not | CLASS_az | CLASS_AZ:
+ return extra_newl + NFA_NALPHA;
+ case CLASS_az:
+! return extra_newl + NFA_LOWER_IC;
+ case CLASS_not | CLASS_az:
+! return extra_newl + NFA_NLOWER_IC;
+ case CLASS_AZ:
+! return extra_newl + NFA_UPPER_IC;
+ case CLASS_not | CLASS_AZ:
+! return extra_newl + NFA_NUPPER_IC;
+ }
+ return FAIL;
+ }
+***************
+*** 914,920 ****
+ break;
+ }
+
+! extra = ADD_NL;
+
+ /* "\_[" is collection plus newline */
+ if (c == '[')
+--- 923,929 ----
+ break;
+ }
+
+! extra = NFA_ADD_NL;
+
+ /* "\_[" is collection plus newline */
+ if (c == '[')
+***************
+*** 970,976 ****
+ }
+ #endif
+ EMIT(nfa_classcodes[p - classchars]);
+! if (extra == ADD_NL)
+ {
+ EMIT(NFA_NEWL);
+ EMIT(NFA_OR);
+--- 979,985 ----
+ }
+ #endif
+ EMIT(nfa_classcodes[p - classchars]);
+! if (extra == NFA_ADD_NL)
+ {
+ EMIT(NFA_NEWL);
+ EMIT(NFA_OR);
+***************
+*** 1240,1260 ****
+ {
+ /*
+ * Try to reverse engineer character classes. For example,
+! * recognize that [0-9] stands for \d and [A-Za-z_] with \h,
+ * and perform the necessary substitutions in the NFA.
+ */
+ result = nfa_recognize_char_class(regparse, endp,
+! extra == ADD_NL);
+ if (result != FAIL)
+ {
+! if (result >= NFA_DIGIT && result <= NFA_NUPPER)
+! EMIT(result);
+! else /* must be char class + newline */
+ {
+! EMIT(result - ADD_NL);
+ EMIT(NFA_NEWL);
+ EMIT(NFA_OR);
+ }
+ regparse = endp;
+ mb_ptr_adv(regparse);
+ return OK;
+--- 1249,1269 ----
+ {
+ /*
+ * Try to reverse engineer character classes. For example,
+! * recognize that [0-9] stands for \d and [A-Za-z_] for \h,
+ * and perform the necessary substitutions in the NFA.
+ */
+ result = nfa_recognize_char_class(regparse, endp,
+! extra == NFA_ADD_NL);
+ if (result != FAIL)
+ {
+! if (result >= NFA_FIRST_NL && result <= NFA_LAST_NL)
+ {
+! EMIT(result - NFA_ADD_NL);
+ EMIT(NFA_NEWL);
+ EMIT(NFA_OR);
+ }
++ else
++ EMIT(result);
+ regparse = endp;
+ mb_ptr_adv(regparse);
+ return OK;
+***************
+*** 1504,1510 ****
+ * collection, add an OR below. But not for negated
+ * range. */
+ if (!negated)
+! extra = ADD_NL;
+ }
+ else
+ {
+--- 1513,1519 ----
+ * collection, add an OR below. But not for negated
+ * range. */
+ if (!negated)
+! extra = NFA_ADD_NL;
+ }
+ else
+ {
+***************
+*** 1537,1543 ****
+ EMIT(NFA_END_COLL);
+
+ /* \_[] also matches \n but it's not negated */
+! if (extra == ADD_NL)
+ {
+ EMIT(reg_string ? NL : NFA_NEWL);
+ EMIT(NFA_OR);
+--- 1546,1552 ----
+ EMIT(NFA_END_COLL);
+
+ /* \_[] also matches \n but it's not negated */
+! if (extra == NFA_ADD_NL)
+ {
+ EMIT(reg_string ? NL : NFA_NEWL);
+ EMIT(NFA_OR);
+***************
+*** 2011,2017 ****
+ if (c >= NFA_FIRST_NL && c <= NFA_LAST_NL)
+ {
+ addnl = TRUE;
+! c -= ADD_NL;
+ }
+
+ STRCPY(code, "");
+--- 2020,2026 ----
+ if (c >= NFA_FIRST_NL && c <= NFA_LAST_NL)
+ {
+ addnl = TRUE;
+! c -= NFA_ADD_NL;
+ }
+
+ STRCPY(code, "");
+***************
+*** 2217,2222 ****
+--- 2226,2235 ----
+ case NFA_NLOWER:STRCPY(code, "NFA_NLOWER"); break;
+ case NFA_UPPER: STRCPY(code, "NFA_UPPER"); break;
+ case NFA_NUPPER:STRCPY(code, "NFA_NUPPER"); break;
++ case NFA_LOWER_IC: STRCPY(code, "NFA_LOWER_IC"); break;
++ case NFA_NLOWER_IC: STRCPY(code, "NFA_NLOWER_IC"); break;
++ case NFA_UPPER_IC: STRCPY(code, "NFA_UPPER_IC"); break;
++ case NFA_NUPPER_IC: STRCPY(code, "NFA_NUPPER_IC"); break;
+
+ default:
+ STRCPY(code, "CHAR(x)");
+***************
+*** 2687,2692 ****
+--- 2700,2709 ----
+ case NFA_NLOWER:
+ case NFA_UPPER:
+ case NFA_NUPPER:
++ case NFA_LOWER_IC:
++ case NFA_NLOWER_IC:
++ case NFA_UPPER_IC:
++ case NFA_NUPPER_IC:
+ /* possibly non-ascii */
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+***************
+*** 3841,3846 ****
+--- 3858,3867 ----
+ case NFA_NLOWER:
+ case NFA_UPPER:
+ case NFA_NUPPER:
++ case NFA_LOWER_IC:
++ case NFA_NLOWER_IC:
++ case NFA_UPPER_IC:
++ case NFA_NUPPER_IC:
+ case NFA_START_COLL:
+ case NFA_START_NEG_COLL:
+ case NFA_NEWL:
+***************
+*** 5872,5877 ****
+--- 5893,5920 ----
+ ADD_STATE_IF_MATCH(t->state);
+ break;
+
++ case NFA_LOWER_IC: /* [a-z] */
++ result = ri_lower(curc) || (ireg_ic && ri_upper(curc));
++ ADD_STATE_IF_MATCH(t->state);
++ break;
++
++ case NFA_NLOWER_IC: /* [^a-z] */
++ result = curc != NUL
++ && !(ri_lower(curc) || (ireg_ic && ri_upper(curc)));
++ ADD_STATE_IF_MATCH(t->state);
++ break;
++
++ case NFA_UPPER_IC: /* [A-Z] */
++ result = ri_upper(curc) || (ireg_ic && ri_lower(curc));
++ ADD_STATE_IF_MATCH(t->state);
++ break;
++
++ case NFA_NUPPER_IC: /* ^[A-Z] */
++ result = curc != NUL
++ && !(ri_upper(curc) || (ireg_ic && ri_lower(curc)));
++ ADD_STATE_IF_MATCH(t->state);
++ break;
++
+ case NFA_BACKREF1:
+ case NFA_BACKREF2:
+ case NFA_BACKREF3:
+*** ../vim-7.4.000/src/testdir/test64.in 2013-08-01 17:45:33.000000000 +0200
+--- src/testdir/test64.in 2013-08-14 11:50:11.000000000 +0200
+***************
+*** 289,303 ****
+ :call add(tl, [2, '.a\%$', " a\n "])
+ :call add(tl, [2, '.a\%$', " a\n_a", "_a"])
+ :"
+! :"""" Test recognition of some character classes
+! :call add(tl, [2, '[0-9]', '8', '8'])
+! :call add(tl, [2, '[^0-9]', '8'])
+! :call add(tl, [2, '[0-9a-fA-F]*', '0a7', '0a7'])
+! :call add(tl, [2, '[^0-9A-Fa-f]\+', '0a7'])
+! :call add(tl, [2, '[a-z_A-Z0-9]\+', 'aso_sfoij', 'aso_sfoij'])
+! :call add(tl, [2, '[a-z]', 'a', 'a'])
+! :call add(tl, [2, '[a-zA-Z]', 'a', 'a'])
+! :call add(tl, [2, '[A-Z]', 'a'])
+ :call add(tl, [2, '\C[^A-Z]\+', 'ABCOIJDEOIFNSD jsfoij sa', ' jsfoij sa'])
+ :"
+ :"""" Tests for \z features
+--- 289,317 ----
+ :call add(tl, [2, '.a\%$', " a\n "])
+ :call add(tl, [2, '.a\%$', " a\n_a", "_a"])
+ :"
+! :"""" Test recognition of character classes
+! :call add(tl, [2, '[0-7]\+', 'x0123456789x', '01234567'])
+! :call add(tl, [2, '[^0-7]\+', '0a;X+% 897', 'a;X+% 89'])
+! :call add(tl, [2, '[0-9]\+', 'x0123456789x', '0123456789'])
+! :call add(tl, [2, '[^0-9]\+', '0a;X+% 9', 'a;X+% '])
+! :call add(tl, [2, '[0-9a-fA-F]\+', 'x0189abcdefg', '0189abcdef'])
+! :call add(tl, [2, '[^0-9A-Fa-f]\+', '0189g;X+% ab', 'g;X+% '])
+! :call add(tl, [2, '[a-z_A-Z0-9]\+', ';+aso_SfOij ', 'aso_SfOij'])
+! :call add(tl, [2, '[^a-z_A-Z0-9]\+', 'aSo_;+% sfOij', ';+% '])
+! :call add(tl, [2, '[a-z_A-Z]\+', '0abyz_ABYZ;', 'abyz_ABYZ'])
+! :call add(tl, [2, '[^a-z_A-Z]\+', 'abAB_09;+% yzYZ', '09;+% '])
+! :call add(tl, [2, '[a-z]\+', '0abcxyz1', 'abcxyz'])
+! :call add(tl, [2, '[a-z]\+', 'AabxyzZ', 'abxyz'])
+! :call add(tl, [2, '[^a-z]\+', 'a;X09+% x', ';X09+% '])
+! :call add(tl, [2, '[^a-z]\+', 'abX0;%yz', 'X0;%'])
+! :call add(tl, [2, '[a-zA-Z]\+', '0abABxzXZ9', 'abABxzXZ'])
+! :call add(tl, [2, '[^a-zA-Z]\+', 'ab09_;+ XZ', '09_;+ '])
+! :call add(tl, [2, '[A-Z]\+', 'aABXYZz', 'ABXYZ'])
+! :call add(tl, [2, '[^A-Z]\+', 'ABx0;%YZ', 'x0;%'])
+! :call add(tl, [2, '[a-z]\+\c', '0abxyzABXYZ;', 'abxyzABXYZ'])
+! :call add(tl, [2, '[A-Z]\+\c', '0abABxzXZ9', 'abABxzXZ'])
+! :call add(tl, [2, '\c[^a-z]\+', 'ab09_;+ XZ', '09_;+ '])
+! :call add(tl, [2, '\c[^A-Z]\+', 'ab09_;+ XZ', '09_;+ '])
+ :call add(tl, [2, '\C[^A-Z]\+', 'ABCOIJDEOIFNSD jsfoij sa', ' jsfoij sa'])
+ :"
+ :"""" Tests for \z features
+*** ../vim-7.4.000/src/testdir/test64.ok 2013-08-01 18:28:56.000000000 +0200
+--- src/testdir/test64.ok 2013-08-14 11:50:37.000000000 +0200
+***************
+*** 650,679 ****
+ OK 0 - .a\%$
+ OK 1 - .a\%$
+ OK 2 - .a\%$
+! OK 0 - [0-9]
+! OK 1 - [0-9]
+! OK 2 - [0-9]
+! OK 0 - [^0-9]
+! OK 1 - [^0-9]
+! OK 2 - [^0-9]
+! OK 0 - [0-9a-fA-F]*
+! OK 1 - [0-9a-fA-F]*
+! OK 2 - [0-9a-fA-F]*
+ OK 0 - [^0-9A-Fa-f]\+
+ OK 1 - [^0-9A-Fa-f]\+
+ OK 2 - [^0-9A-Fa-f]\+
+ OK 0 - [a-z_A-Z0-9]\+
+ OK 1 - [a-z_A-Z0-9]\+
+ OK 2 - [a-z_A-Z0-9]\+
+! OK 0 - [a-z]
+! OK 1 - [a-z]
+! OK 2 - [a-z]
+! OK 0 - [a-zA-Z]
+! OK 1 - [a-zA-Z]
+! OK 2 - [a-zA-Z]
+! OK 0 - [A-Z]
+! OK 1 - [A-Z]
+! OK 2 - [A-Z]
+ OK 0 - \C[^A-Z]\+
+ OK 1 - \C[^A-Z]\+
+ OK 2 - \C[^A-Z]\+
+--- 650,721 ----
+ OK 0 - .a\%$
+ OK 1 - .a\%$
+ OK 2 - .a\%$
+! OK 0 - [0-7]\+
+! OK 1 - [0-7]\+
+! OK 2 - [0-7]\+
+! OK 0 - [^0-7]\+
+! OK 1 - [^0-7]\+
+! OK 2 - [^0-7]\+
+! OK 0 - [0-9]\+
+! OK 1 - [0-9]\+
+! OK 2 - [0-9]\+
+! OK 0 - [^0-9]\+
+! OK 1 - [^0-9]\+
+! OK 2 - [^0-9]\+
+! OK 0 - [0-9a-fA-F]\+
+! OK 1 - [0-9a-fA-F]\+
+! OK 2 - [0-9a-fA-F]\+
+ OK 0 - [^0-9A-Fa-f]\+
+ OK 1 - [^0-9A-Fa-f]\+
+ OK 2 - [^0-9A-Fa-f]\+
+ OK 0 - [a-z_A-Z0-9]\+
+ OK 1 - [a-z_A-Z0-9]\+
+ OK 2 - [a-z_A-Z0-9]\+
+! OK 0 - [^a-z_A-Z0-9]\+
+! OK 1 - [^a-z_A-Z0-9]\+
+! OK 2 - [^a-z_A-Z0-9]\+
+! OK 0 - [a-z_A-Z]\+
+! OK 1 - [a-z_A-Z]\+
+! OK 2 - [a-z_A-Z]\+
+! OK 0 - [^a-z_A-Z]\+
+! OK 1 - [^a-z_A-Z]\+
+! OK 2 - [^a-z_A-Z]\+
+! OK 0 - [a-z]\+
+! OK 1 - [a-z]\+
+! OK 2 - [a-z]\+
+! OK 0 - [a-z]\+
+! OK 1 - [a-z]\+
+! OK 2 - [a-z]\+
+! OK 0 - [^a-z]\+
+! OK 1 - [^a-z]\+
+! OK 2 - [^a-z]\+
+! OK 0 - [^a-z]\+
+! OK 1 - [^a-z]\+
+! OK 2 - [^a-z]\+
+! OK 0 - [a-zA-Z]\+
+! OK 1 - [a-zA-Z]\+
+! OK 2 - [a-zA-Z]\+
+! OK 0 - [^a-zA-Z]\+
+! OK 1 - [^a-zA-Z]\+
+! OK 2 - [^a-zA-Z]\+
+! OK 0 - [A-Z]\+
+! OK 1 - [A-Z]\+
+! OK 2 - [A-Z]\+
+! OK 0 - [^A-Z]\+
+! OK 1 - [^A-Z]\+
+! OK 2 - [^A-Z]\+
+! OK 0 - [a-z]\+\c
+! OK 1 - [a-z]\+\c
+! OK 2 - [a-z]\+\c
+! OK 0 - [A-Z]\+\c
+! OK 1 - [A-Z]\+\c
+! OK 2 - [A-Z]\+\c
+! OK 0 - \c[^a-z]\+
+! OK 1 - \c[^a-z]\+
+! OK 2 - \c[^a-z]\+
+! OK 0 - \c[^A-Z]\+
+! OK 1 - \c[^A-Z]\+
+! OK 2 - \c[^A-Z]\+
+ OK 0 - \C[^A-Z]\+
+ OK 1 - \C[^A-Z]\+
+ OK 2 - \C[^A-Z]\+
+*** ../vim-7.4.000/src/version.c 2013-08-10 13:29:20.000000000 +0200
+--- src/version.c 2013-08-14 11:54:57.000000000 +0200
+***************
+*** 729,730 ****
+--- 729,732 ----
+ { /* Add new patch number below this line */
++ /**/
++ 1,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.002 b/patches/source/vim/patches/7.4.002
new file mode 100644
index 00000000..d92f4de6
--- /dev/null
+++ b/patches/source/vim/patches/7.4.002
@@ -0,0 +1,77 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.002
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4b.002
+Problem: Pattern with two alternative look-behind matches does not match.
+ (Amadeus Demarzi)
+Solution: When comparing PIMs also compare their state ID to see if they are
+ different.
+Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok
+
+
+*** ../vim-7.4.001/src/regexp_nfa.c 2013-08-14 12:05:54.000000000 +0200
+--- src/regexp_nfa.c 2013-08-14 13:12:09.000000000 +0200
+***************
+*** 3782,3787 ****
+--- 3782,3790 ----
+ if (two_unused)
+ /* one is used and two is not: not equal */
+ return FALSE;
++ /* compare the state id */
++ if (one->state->id != two->state->id)
++ return FALSE;
+ /* compare the position */
+ if (REG_MULTI)
+ return one->end.pos.lnum == two->end.pos.lnum
+*** ../vim-7.4.001/src/testdir/test64.in 2013-08-14 12:05:54.000000000 +0200
+--- src/testdir/test64.in 2013-08-14 12:58:38.000000000 +0200
+***************
+*** 421,426 ****
+--- 421,429 ----
+ :call add(tl, [2, '\(foo\)\@<=\>', 'barfoo', '', 'foo'])
+ :call add(tl, [2, '\(foo\)\@<=.*', 'foobar', 'bar', 'foo'])
+ :"
++ :" complicated look-behind match
++ :call add(tl, [2, '\(r\@<=\|\w\@<!\)\/', 'x = /word/;', '/'])
++ :"
+ :""""" \@>
+ :call add(tl, [2, '\(a*\)\@>a', 'aaaa'])
+ :call add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa'])
+*** ../vim-7.4.001/src/testdir/test64.ok 2013-08-14 12:05:54.000000000 +0200
+--- src/testdir/test64.ok 2013-08-14 13:14:09.000000000 +0200
+***************
+*** 974,979 ****
+--- 974,982 ----
+ OK 0 - \(foo\)\@<=.*
+ OK 1 - \(foo\)\@<=.*
+ OK 2 - \(foo\)\@<=.*
++ OK 0 - \(r\@<=\|\w\@<!\)\/
++ OK 1 - \(r\@<=\|\w\@<!\)\/
++ OK 2 - \(r\@<=\|\w\@<!\)\/
+ OK 0 - \(a*\)\@>a
+ OK 1 - \(a*\)\@>a
+ OK 2 - \(a*\)\@>a
+*** ../vim-7.4.001/src/version.c 2013-08-14 12:05:54.000000000 +0200
+--- src/version.c 2013-08-14 13:13:45.000000000 +0200
+***************
+*** 729,730 ****
+--- 729,732 ----
+ { /* Add new patch number below this line */
++ /**/
++ 2,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.003 b/patches/source/vim/patches/7.4.003
new file mode 100644
index 00000000..9aad3c8c
--- /dev/null
+++ b/patches/source/vim/patches/7.4.003
@@ -0,0 +1,100 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.003
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.003
+Problem: Memory access error in Ruby syntax highlighting. (Christopher Chow)
+Solution: Refresh stale pointer. (James McCoy)
+Files: src/regexp_nfa.c
+
+
+*** ../vim-7.4.002/src/regexp_nfa.c 2013-08-14 13:31:03.000000000 +0200
+--- src/regexp_nfa.c 2013-08-14 14:02:06.000000000 +0200
+***************
+*** 4120,4126 ****
+ sub = &subs->norm;
+ }
+ #ifdef FEAT_SYN_HL
+! else if (state->c >= NFA_ZOPEN)
+ {
+ subidx = state->c - NFA_ZOPEN;
+ sub = &subs->synt;
+--- 4120,4126 ----
+ sub = &subs->norm;
+ }
+ #ifdef FEAT_SYN_HL
+! else if (state->c >= NFA_ZOPEN && state->c <= NFA_ZOPEN9)
+ {
+ subidx = state->c - NFA_ZOPEN;
+ sub = &subs->synt;
+***************
+*** 4189,4194 ****
+--- 4189,4201 ----
+ }
+
+ subs = addstate(l, state->out, subs, pim, off);
++ /* "subs" may have changed, need to set "sub" again */
++ #ifdef FEAT_SYN_HL
++ if (state->c >= NFA_ZOPEN && state->c <= NFA_ZOPEN9)
++ sub = &subs->synt;
++ else
++ #endif
++ sub = &subs->norm;
+
+ if (save_in_use == -1)
+ {
+***************
+*** 4237,4243 ****
+ sub = &subs->norm;
+ }
+ #ifdef FEAT_SYN_HL
+! else if (state->c >= NFA_ZCLOSE)
+ {
+ subidx = state->c - NFA_ZCLOSE;
+ sub = &subs->synt;
+--- 4244,4250 ----
+ sub = &subs->norm;
+ }
+ #ifdef FEAT_SYN_HL
+! else if (state->c >= NFA_ZCLOSE && state->c <= NFA_ZCLOSE9)
+ {
+ subidx = state->c - NFA_ZCLOSE;
+ sub = &subs->synt;
+***************
+*** 4281,4286 ****
+--- 4288,4300 ----
+ }
+
+ subs = addstate(l, state->out, subs, pim, off);
++ /* "subs" may have changed, need to set "sub" again */
++ #ifdef FEAT_SYN_HL
++ if (state->c >= NFA_ZCLOSE && state->c <= NFA_ZCLOSE9)
++ sub = &subs->synt;
++ else
++ #endif
++ sub = &subs->norm;
+
+ if (REG_MULTI)
+ sub->list.multi[subidx].end = save_lpos;
+*** ../vim-7.4.002/src/version.c 2013-08-14 13:31:03.000000000 +0200
+--- src/version.c 2013-08-14 14:03:51.000000000 +0200
+***************
+*** 729,730 ****
+--- 729,732 ----
+ { /* Add new patch number below this line */
++ /**/
++ 3,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.004 b/patches/source/vim/patches/7.4.004
new file mode 100644
index 00000000..f629d673
--- /dev/null
+++ b/patches/source/vim/patches/7.4.004
@@ -0,0 +1,232 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.004
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.004
+Problem: When closing a window fails ":bwipe" may hang.
+Solution: Let win_close() return FAIL and break out of the loop.
+Files: src/window.c, src/proto/window.pro, src/buffer.c
+
+
+*** ../vim-7.4.003/src/window.c 2013-07-24 17:38:29.000000000 +0200
+--- src/window.c 2013-08-14 16:52:44.000000000 +0200
+***************
+*** 2172,2179 ****
+ * If "free_buf" is TRUE related buffer may be unloaded.
+ *
+ * Called by :quit, :close, :xit, :wq and findtag().
+ */
+! void
+ win_close(win, free_buf)
+ win_T *win;
+ int free_buf;
+--- 2172,2180 ----
+ * If "free_buf" is TRUE related buffer may be unloaded.
+ *
+ * Called by :quit, :close, :xit, :wq and findtag().
++ * Returns FAIL when the window was not closed.
+ */
+! int
+ win_close(win, free_buf)
+ win_T *win;
+ int free_buf;
+***************
+*** 2190,2210 ****
+ if (last_window())
+ {
+ EMSG(_("E444: Cannot close last window"));
+! return;
+ }
+
+ #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)
+ {
+ EMSG(_("E813: Cannot close autocmd window"));
+! return;
+ }
+ if ((firstwin == aucmd_win || lastwin == aucmd_win) && one_window())
+ {
+ EMSG(_("E814: Cannot close window, only autocmd window would remain"));
+! return;
+ }
+ #endif
+
+--- 2191,2211 ----
+ if (last_window())
+ {
+ EMSG(_("E444: Cannot close last window"));
+! return FAIL;
+ }
+
+ #ifdef FEAT_AUTOCMD
+ if (win->w_closing || (win->w_buffer != NULL && win->w_buffer->b_closing))
+! return FAIL; /* window is already being closed */
+ if (win == aucmd_win)
+ {
+ EMSG(_("E813: Cannot close autocmd window"));
+! return FAIL;
+ }
+ if ((firstwin == aucmd_win || lastwin == aucmd_win) && one_window())
+ {
+ EMSG(_("E814: Cannot close window, only autocmd window would remain"));
+! return FAIL;
+ }
+ #endif
+
+***************
+*** 2212,2218 ****
+ * 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. */
+--- 2213,2219 ----
+ * 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 FAIL;
+
+ /* When closing the help window, try restoring a snapshot after closing
+ * the window. Otherwise clear the snapshot, it's now invalid. */
+***************
+*** 2240,2261 ****
+ 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 */
+ if (aborting())
+! return;
+ # endif
+ }
+ #endif
+--- 2241,2262 ----
+ win->w_closing = TRUE;
+ apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf);
+ if (!win_valid(win))
+! return FAIL;
+ win->w_closing = FALSE;
+ if (last_window())
+! return FAIL;
+ }
+ win->w_closing = TRUE;
+ apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf);
+ if (!win_valid(win))
+! return FAIL;
+ win->w_closing = FALSE;
+ if (last_window())
+! return FAIL;
+ # ifdef FEAT_EVAL
+ /* autocmds may abort script processing */
+ if (aborting())
+! return FAIL;
+ # endif
+ }
+ #endif
+***************
+*** 2303,2309 ****
+ * other window or moved to another tab page. */
+ else 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
+ * the screen space. */
+--- 2304,2310 ----
+ * other window or moved to another tab page. */
+ else if (!win_valid(win) || last_window() || curtab != prev_curtab
+ || close_last_window_tabpage(win, free_buf, prev_curtab))
+! return FAIL;
+
+ /* Free the memory used for the window and get the window that received
+ * the screen space. */
+***************
+*** 2383,2388 ****
+--- 2384,2390 ----
+ #endif
+
+ redraw_all_later(NOT_VALID);
++ return OK;
+ }
+
+ /*
+*** ../vim-7.4.003/src/proto/window.pro 2013-08-10 13:37:30.000000000 +0200
+--- src/proto/window.pro 2013-08-14 16:52:50.000000000 +0200
+***************
+*** 9,15 ****
+ 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));
+ win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp));
+--- 9,15 ----
+ 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));
+! int 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));
+ win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp));
+*** ../vim-7.4.003/src/buffer.c 2013-07-17 16:39:00.000000000 +0200
+--- src/buffer.c 2013-08-14 16:54:34.000000000 +0200
+***************
+*** 1186,1192 ****
+ && !(curwin->w_closing || curwin->w_buffer->b_closing)
+ # endif
+ && (firstwin != lastwin || first_tabpage->tp_next != NULL))
+! win_close(curwin, FALSE);
+ #endif
+
+ /*
+--- 1186,1195 ----
+ && !(curwin->w_closing || curwin->w_buffer->b_closing)
+ # endif
+ && (firstwin != lastwin || first_tabpage->tp_next != NULL))
+! {
+! if (win_close(curwin, FALSE) == FAIL)
+! break;
+! }
+ #endif
+
+ /*
+*** ../vim-7.4.003/src/version.c 2013-08-14 14:18:37.000000000 +0200
+--- src/version.c 2013-08-14 17:10:23.000000000 +0200
+***************
+*** 729,730 ****
+--- 729,732 ----
+ { /* Add new patch number below this line */
++ /**/
++ 4,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.005 b/patches/source/vim/patches/7.4.005
new file mode 100644
index 00000000..f85d1f0e
--- /dev/null
+++ b/patches/source/vim/patches/7.4.005
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.005
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.005
+Problem: Using "vaB" while 'virtualedit' is set selects the wrong area.
+ (Dimitar Dimitrov)
+Solution: Reset coladd when finding a match.
+Files: src/search.c
+
+
+*** ../vim-7.4.004/src/search.c 2013-07-17 19:20:47.000000000 +0200
+--- src/search.c 2013-08-14 17:32:38.000000000 +0200
+***************
+*** 1760,1765 ****
+--- 1760,1768 ----
+ #endif
+
+ pos = curwin->w_cursor;
++ #ifdef FEAT_VIRTUALEDIT
++ pos.coladd = 0;
++ #endif
+ linep = ml_get(pos.lnum);
+
+ cpo_match = (vim_strchr(p_cpo, CPO_MATCH) != NULL);
+*** ../vim-7.4.004/src/version.c 2013-08-14 17:11:14.000000000 +0200
+--- src/version.c 2013-08-14 17:38:05.000000000 +0200
+***************
+*** 729,730 ****
+--- 729,732 ----
+ { /* Add new patch number below this line */
++ /**/
++ 5,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.006 b/patches/source/vim/patches/7.4.006
new file mode 100644
index 00000000..55d3802c
--- /dev/null
+++ b/patches/source/vim/patches/7.4.006
@@ -0,0 +1,66 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.006
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.006
+Problem: mkdir("foo/bar/", "p") gives an error message. (David Barnett)
+Solution: Remove the trailing slash. (lcd)
+Files: src/eval.c
+
+
+*** ../vim-7.4.005/src/eval.c 2013-07-05 18:23:42.000000000 +0200
+--- src/eval.c 2013-08-22 12:00:28.000000000 +0200
+***************
+*** 14292,14297 ****
+--- 14292,14301 ----
+ return;
+
+ dir = get_tv_string_buf(&argvars[0], buf);
++ if (*gettail(dir) == NUL)
++ /* remove trailing slashes */
++ *gettail_sep(dir) = NUL;
++
+ if (argvars[1].v_type != VAR_UNKNOWN)
+ {
+ if (argvars[2].v_type != VAR_UNKNOWN)
+***************
+*** 14299,14305 ****
+ if (prot != -1 && STRCMP(get_tv_string(&argvars[1]), "p") == 0)
+ mkdir_recurse(dir, prot);
+ }
+! rettv->vval.v_number = prot != -1 ? vim_mkdir_emsg(dir, prot) : 0;
+ }
+ #endif
+
+--- 14303,14309 ----
+ if (prot != -1 && STRCMP(get_tv_string(&argvars[1]), "p") == 0)
+ mkdir_recurse(dir, prot);
+ }
+! rettv->vval.v_number = prot == -1 ? FAIL : vim_mkdir_emsg(dir, prot);
+ }
+ #endif
+
+*** ../vim-7.4.005/src/version.c 2013-08-14 17:45:25.000000000 +0200
+--- src/version.c 2013-08-22 12:02:46.000000000 +0200
+***************
+*** 729,730 ****
+--- 729,732 ----
+ { /* Add new patch number below this line */
++ /**/
++ 6,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+97. Your mother tells you to remember something, and you look for
+ a File/Save command.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.007 b/patches/source/vim/patches/7.4.007
new file mode 100644
index 00000000..5495ffbf
--- /dev/null
+++ b/patches/source/vim/patches/7.4.007
@@ -0,0 +1,95 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.007
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.007
+Problem: Creating a preview window on startup leaves the screen layout in a
+ messed up state. (Marius Gedminas)
+Solution: Don't change firstwin. (Christian Brabandt)
+Files: src/main.c
+
+
+*** ../vim-7.4.006/src/main.c 2013-07-03 12:36:49.000000000 +0200
+--- src/main.c 2013-08-22 14:02:39.000000000 +0200
+***************
+*** 2727,2732 ****
+--- 2727,2733 ----
+ int arg_idx; /* index in argument list */
+ int i;
+ int advance = TRUE;
++ win_T *win;
+
+ # ifdef FEAT_AUTOCMD
+ /*
+***************
+*** 2816,2839 ****
+ # ifdef FEAT_AUTOCMD
+ --autocmd_no_enter;
+ # endif
+ #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+! /*
+! * Avoid making a preview window the current window.
+! */
+! if (firstwin->w_p_pvw)
+ {
+! win_T *win;
+!
+! for (win = firstwin; win != NULL; win = win->w_next)
+! if (!win->w_p_pvw)
+! {
+! firstwin = win;
+! break;
+! }
+ }
+ #endif
+! /* make the first window the current window */
+! win_enter(firstwin, FALSE);
+
+ # ifdef FEAT_AUTOCMD
+ --autocmd_no_leave;
+--- 2817,2838 ----
+ # ifdef FEAT_AUTOCMD
+ --autocmd_no_enter;
+ # endif
++
++ /* make the first window the current window */
++ win = firstwin;
+ #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+! /* Avoid making a preview window the current window. */
+! while (win->w_p_pvw)
+ {
+! win = win->w_next;
+! if (win == NULL)
+! {
+! win = firstwin;
+! break;
+! }
+ }
+ #endif
+! win_enter(win, FALSE);
+
+ # ifdef FEAT_AUTOCMD
+ --autocmd_no_leave;
+*** ../vim-7.4.006/src/version.c 2013-08-22 12:06:50.000000000 +0200
+--- src/version.c 2013-08-22 14:04:11.000000000 +0200
+***************
+*** 729,730 ****
+--- 729,732 ----
+ { /* Add new patch number below this line */
++ /**/
++ 7,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.008 b/patches/source/vim/patches/7.4.008
new file mode 100644
index 00000000..6abd493f
--- /dev/null
+++ b/patches/source/vim/patches/7.4.008
@@ -0,0 +1,71 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.008
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.008
+Problem: New regexp engine can't be interrupted.
+Solution: Check for CTRL-C pressed. (Yasuhiro Matsumoto)
+Files: src/regexp_nfa.c, src/regexp.c
+
+
+*** ../vim-7.4.007/src/regexp_nfa.c 2013-08-14 14:18:37.000000000 +0200
+--- src/regexp_nfa.c 2013-08-25 16:55:56.000000000 +0200
+***************
+*** 5089,5094 ****
+--- 5089,5100 ----
+ return FALSE;
+ }
+ #endif
++ /* Some patterns may take a long time to match, especially when using
++ * recursive_regmatch(). Allow interrupting them with CTRL-C. */
++ fast_breakcheck();
++ if (got_int)
++ return FALSE;
++
+ nfa_match = FALSE;
+
+ /* Allocate memory for the lists of nodes. */
+*** ../vim-7.4.007/src/regexp.c 2013-08-01 18:31:30.000000000 +0200
+--- src/regexp.c 2013-08-25 16:57:35.000000000 +0200
+***************
+*** 4311,4318 ****
+ */
+ for (;;)
+ {
+! /* Some patterns may cause a long time to match, even though they are not
+! * illegal. E.g., "\([a-z]\+\)\+Q". Allow breaking them with CTRL-C. */
+ fast_breakcheck();
+
+ #ifdef DEBUG
+--- 4311,4318 ----
+ */
+ for (;;)
+ {
+! /* Some patterns may take a long time to match, e.g., "\([a-z]\+\)\+Q".
+! * Allow interrupting them with CTRL-C. */
+ fast_breakcheck();
+
+ #ifdef DEBUG
+*** ../vim-7.4.007/src/version.c 2013-08-22 14:14:23.000000000 +0200
+--- src/version.c 2013-08-25 16:57:51.000000000 +0200
+***************
+*** 729,730 ****
+--- 729,732 ----
+ { /* Add new patch number below this line */
++ /**/
++ 8,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+124. You begin conversations with, "Who is your internet 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/patches/source/vim/patches/7.4.009 b/patches/source/vim/patches/7.4.009
new file mode 100644
index 00000000..f5e5fa60
--- /dev/null
+++ b/patches/source/vim/patches/7.4.009
@@ -0,0 +1,64 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.009
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.009
+Problem: When a file was not decrypted (yet), writing it may destroy the
+ contents.
+Solution: Mark the file as readonly until decryption was done. (Christian
+ Brabandt)
+Files: src/fileio.c
+
+
+*** ../vim-7.4.008/src/fileio.c 2013-08-05 21:58:03.000000000 +0200
+--- src/fileio.c 2013-08-25 17:45:27.000000000 +0200
+***************
+*** 2926,2934 ****
+--- 2926,2939 ----
+ int *did_ask; /* flag: whether already asked for key */
+ {
+ int method = crypt_method_from_magic((char *)ptr, *sizep);
++ int b_p_ro = curbuf->b_p_ro;
+
+ if (method >= 0)
+ {
++ /* Mark the buffer as read-only until the decryption has taken place.
++ * Avoids accidentally overwriting the file with garbage. */
++ curbuf->b_p_ro = TRUE;
++
+ set_crypt_method(curbuf, method);
+ if (method > 0)
+ (void)blowfish_self_test();
+***************
+*** 2977,2982 ****
+--- 2982,2989 ----
+ *sizep -= CRYPT_MAGIC_LEN + salt_len + seed_len;
+ mch_memmove(ptr, ptr + CRYPT_MAGIC_LEN + salt_len + seed_len,
+ (size_t)*sizep);
++ /* Restore the read-only flag. */
++ curbuf->b_p_ro = b_p_ro;
+ }
+ }
+ /* When starting to edit a new file which does not have encryption, clear
+*** ../vim-7.4.008/src/version.c 2013-08-25 17:01:36.000000000 +0200
+--- src/version.c 2013-08-25 17:44:30.000000000 +0200
+***************
+*** 729,730 ****
+--- 729,732 ----
+ { /* Add new patch number below this line */
++ /**/
++ 9,
+ /**/
+
+--
+I have a watch cat! Just break in and she'll watch.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.010 b/patches/source/vim/patches/7.4.010
new file mode 100644
index 00000000..fee6ba5b
--- /dev/null
+++ b/patches/source/vim/patches/7.4.010
@@ -0,0 +1,79 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.010
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.010 (after 7.4.006)
+Problem: Crash with invalid argument to mkdir().
+Solution: Check for empty string. (lcd47)
+Files: src/eval.c
+
+
+*** ../vim-7.4.009/src/eval.c 2013-08-22 12:06:50.000000000 +0200
+--- src/eval.c 2013-08-30 15:47:47.000000000 +0200
+***************
+*** 14292,14309 ****
+ return;
+
+ dir = get_tv_string_buf(&argvars[0], buf);
+! if (*gettail(dir) == NUL)
+! /* remove trailing slashes */
+! *gettail_sep(dir) = NUL;
+!
+! if (argvars[1].v_type != VAR_UNKNOWN)
+ {
+! if (argvars[2].v_type != VAR_UNKNOWN)
+! prot = get_tv_number_chk(&argvars[2], NULL);
+! if (prot != -1 && STRCMP(get_tv_string(&argvars[1]), "p") == 0)
+! mkdir_recurse(dir, prot);
+ }
+- rettv->vval.v_number = prot == -1 ? FAIL : vim_mkdir_emsg(dir, prot);
+ }
+ #endif
+
+--- 14292,14314 ----
+ return;
+
+ dir = get_tv_string_buf(&argvars[0], buf);
+! if (*dir == NUL)
+! rettv->vval.v_number = FAIL;
+! else
+ {
+! if (*gettail(dir) == NUL)
+! /* remove trailing slashes */
+! *gettail_sep(dir) = NUL;
+!
+! if (argvars[1].v_type != VAR_UNKNOWN)
+! {
+! if (argvars[2].v_type != VAR_UNKNOWN)
+! prot = get_tv_number_chk(&argvars[2], NULL);
+! if (prot != -1 && STRCMP(get_tv_string(&argvars[1]), "p") == 0)
+! mkdir_recurse(dir, prot);
+! }
+! rettv->vval.v_number = prot == -1 ? FAIL : vim_mkdir_emsg(dir, prot);
+ }
+ }
+ #endif
+
+*** ../vim-7.4.009/src/version.c 2013-08-25 17:46:05.000000000 +0200
+--- src/version.c 2013-08-30 15:48:37.000000000 +0200
+***************
+*** 729,730 ****
+--- 729,732 ----
+ { /* Add new patch number below this line */
++ /**/
++ 10,
+ /**/
+
+--
+I wish there was a knob on the TV to turn up the intelligence.
+There's a knob called "brightness", but it doesn't seem to work.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.011 b/patches/source/vim/patches/7.4.011
new file mode 100644
index 00000000..efff82c5
--- /dev/null
+++ b/patches/source/vim/patches/7.4.011
@@ -0,0 +1,100 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.011
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.011
+Problem: Cannot find out if "acl" and "xpm" features are supported.
+Solution: Add "acl" and "xpm" to the list of features. (Ken Takata)
+Files: src/eval.c, src/version.c
+
+
+*** ../vim-7.4.010/src/eval.c 2013-08-30 16:00:04.000000000 +0200
+--- src/eval.c 2013-08-30 16:34:12.000000000 +0200
+***************
+*** 12135,12140 ****
+--- 12135,12143 ----
+ #ifndef CASE_INSENSITIVE_FILENAME
+ "fname_case",
+ #endif
++ #ifdef HAVE_ACL
++ "acl",
++ #endif
+ #ifdef FEAT_ARABIC
+ "arabic",
+ #endif
+***************
+*** 12538,12544 ****
+ "xfontset",
+ #endif
+ #ifdef FEAT_XPM_W32
+! "xpm_w32",
+ #endif
+ #ifdef USE_XSMP
+ "xsmp",
+--- 12541,12552 ----
+ "xfontset",
+ #endif
+ #ifdef FEAT_XPM_W32
+! "xpm",
+! "xpm_w32", /* for backward compatibility */
+! #else
+! # if defined(HAVE_XPM)
+! "xpm",
+! # endif
+ #endif
+ #ifdef USE_XSMP
+ "xsmp",
+*** ../vim-7.4.010/src/version.c 2013-08-30 16:00:04.000000000 +0200
+--- src/version.c 2013-08-30 16:34:37.000000000 +0200
+***************
+*** 60,65 ****
+--- 60,70 ----
+
+ static char *(features[]) =
+ {
++ #ifdef HAVE_ACL
++ "+acl",
++ #else
++ "-acl",
++ #endif
+ #ifdef AMIGA /* only for Amiga systems */
+ # ifdef FEAT_ARP
+ "+ARP",
+***************
+*** 721,726 ****
+--- 726,737 ----
+ # else
+ "-xpm_w32",
+ # endif
++ #else
++ # ifdef HAVE_XPM
++ "+xpm",
++ # else
++ "-xpm",
++ # endif
+ #endif
+ NULL
+ };
+*** ../vim-7.4.010/src/version.c 2013-08-30 16:00:04.000000000 +0200
+--- src/version.c 2013-08-30 16:34:37.000000000 +0200
+***************
+*** 729,730 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 11,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+141. You'd rather go to http://www.weather.com/ than look out your window.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.012 b/patches/source/vim/patches/7.4.012
new file mode 100644
index 00000000..f831442e
--- /dev/null
+++ b/patches/source/vim/patches/7.4.012
@@ -0,0 +1,202 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.012
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.012
+Problem: MS-Windows: resolving shortcut does not work properly with
+ multi-byte characters.
+Solution: Use wide system functions. (Ken Takata)
+Files: src/os_mswin.c
+
+
+*** ../vim-7.4.011/src/os_mswin.c 2013-06-16 16:41:11.000000000 +0200
+--- src/os_mswin.c 2013-08-30 16:43:23.000000000 +0200
+***************
+*** 1761,1769 ****
+ IPersistFile *ppf = NULL;
+ OLECHAR wsz[MAX_PATH];
+ WIN32_FIND_DATA ffd; // we get those free of charge
+! TCHAR buf[MAX_PATH]; // could have simply reused 'wsz'...
+ char_u *rfname = NULL;
+ int len;
+
+ /* Check if the file name ends in ".lnk". Avoid calling
+ * CoCreateInstance(), it's quite slow. */
+--- 1761,1773 ----
+ IPersistFile *ppf = NULL;
+ OLECHAR wsz[MAX_PATH];
+ WIN32_FIND_DATA ffd; // we get those free of charge
+! CHAR buf[MAX_PATH]; // could have simply reused 'wsz'...
+ char_u *rfname = NULL;
+ int len;
++ # ifdef FEAT_MBYTE
++ IShellLinkW *pslw = NULL;
++ WIN32_FIND_DATAW ffdw; // we get those free of charge
++ # endif
+
+ /* Check if the file name ends in ".lnk". Avoid calling
+ * CoCreateInstance(), it's quite slow. */
+***************
+*** 1775,1792 ****
+
+ CoInitialize(NULL);
+
+ // create a link manager object and request its interface
+ hr = CoCreateInstance(
+ &CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
+ &IID_IShellLink, (void**)&psl);
+ if (hr != S_OK)
+! goto shortcut_error;
+
+ // Get a pointer to the IPersistFile interface.
+ hr = psl->lpVtbl->QueryInterface(
+ psl, &IID_IPersistFile, (void**)&ppf);
+ if (hr != S_OK)
+! goto shortcut_error;
+
+ // full path string must be in Unicode.
+ MultiByteToWideChar(CP_ACP, 0, fname, -1, wsz, MAX_PATH);
+--- 1779,1840 ----
+
+ CoInitialize(NULL);
+
++ # ifdef FEAT_MBYTE
++ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
++ {
++ // create a link manager object and request its interface
++ hr = CoCreateInstance(
++ &CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
++ &IID_IShellLinkW, (void**)&pslw);
++ if (hr == S_OK)
++ {
++ WCHAR *p = enc_to_utf16(fname, NULL);
++
++ if (p != NULL)
++ {
++ // Get a pointer to the IPersistFile interface.
++ hr = pslw->lpVtbl->QueryInterface(
++ pslw, &IID_IPersistFile, (void**)&ppf);
++ if (hr != S_OK)
++ goto shortcut_errorw;
++
++ // "load" the name and resolve the link
++ hr = ppf->lpVtbl->Load(ppf, p, STGM_READ);
++ if (hr != S_OK)
++ goto shortcut_errorw;
++ # if 0 // This makes Vim wait a long time if the target does not exist.
++ hr = pslw->lpVtbl->Resolve(pslw, NULL, SLR_NO_UI);
++ if (hr != S_OK)
++ goto shortcut_errorw;
++ # endif
++
++ // Get the path to the link target.
++ ZeroMemory(wsz, MAX_PATH * sizeof(WCHAR));
++ hr = pslw->lpVtbl->GetPath(pslw, wsz, MAX_PATH, &ffdw, 0);
++ if (hr == S_OK && wsz[0] != NUL)
++ rfname = utf16_to_enc(wsz, NULL);
++
++ shortcut_errorw:
++ vim_free(p);
++ if (hr == S_OK)
++ goto shortcut_end;
++ }
++ }
++ /* Retry with non-wide function (for Windows 98). */
++ }
++ # endif
+ // create a link manager object and request its interface
+ hr = CoCreateInstance(
+ &CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
+ &IID_IShellLink, (void**)&psl);
+ if (hr != S_OK)
+! goto shortcut_end;
+
+ // Get a pointer to the IPersistFile interface.
+ hr = psl->lpVtbl->QueryInterface(
+ psl, &IID_IPersistFile, (void**)&ppf);
+ if (hr != S_OK)
+! goto shortcut_end;
+
+ // full path string must be in Unicode.
+ MultiByteToWideChar(CP_ACP, 0, fname, -1, wsz, MAX_PATH);
+***************
+*** 1794,1805 ****
+ // "load" the name and resolve the link
+ hr = ppf->lpVtbl->Load(ppf, wsz, STGM_READ);
+ if (hr != S_OK)
+! goto shortcut_error;
+! #if 0 // This makes Vim wait a long time if the target doesn't exist.
+ hr = psl->lpVtbl->Resolve(psl, NULL, SLR_NO_UI);
+ if (hr != S_OK)
+! goto shortcut_error;
+! #endif
+
+ // Get the path to the link target.
+ ZeroMemory(buf, MAX_PATH);
+--- 1842,1853 ----
+ // "load" the name and resolve the link
+ hr = ppf->lpVtbl->Load(ppf, wsz, STGM_READ);
+ if (hr != S_OK)
+! goto shortcut_end;
+! # if 0 // This makes Vim wait a long time if the target doesn't exist.
+ hr = psl->lpVtbl->Resolve(psl, NULL, SLR_NO_UI);
+ if (hr != S_OK)
+! goto shortcut_end;
+! # endif
+
+ // Get the path to the link target.
+ ZeroMemory(buf, MAX_PATH);
+***************
+*** 1807,1818 ****
+ if (hr == S_OK && buf[0] != NUL)
+ rfname = vim_strsave(buf);
+
+! shortcut_error:
+ // Release all interface pointers (both belong to the same object)
+ if (ppf != NULL)
+ ppf->lpVtbl->Release(ppf);
+ if (psl != NULL)
+ psl->lpVtbl->Release(psl);
+
+ CoUninitialize();
+ return rfname;
+--- 1855,1870 ----
+ if (hr == S_OK && buf[0] != NUL)
+ rfname = vim_strsave(buf);
+
+! shortcut_end:
+ // Release all interface pointers (both belong to the same object)
+ if (ppf != NULL)
+ ppf->lpVtbl->Release(ppf);
+ if (psl != NULL)
+ psl->lpVtbl->Release(psl);
++ # ifdef FEAT_MBYTE
++ if (pslw != NULL)
++ pslw->lpVtbl->Release(pslw);
++ # endif
+
+ CoUninitialize();
+ return rfname;
+*** ../vim-7.4.011/src/version.c 2013-08-30 16:35:41.000000000 +0200
+--- src/version.c 2013-08-30 16:39:40.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 12,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+142. You dream about creating the world's greatest web site.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.013 b/patches/source/vim/patches/7.4.013
new file mode 100644
index 00000000..dcbe0fb3
--- /dev/null
+++ b/patches/source/vim/patches/7.4.013
@@ -0,0 +1,99 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.013
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.013
+Problem: File name buffer too small for utf-8.
+Solution: Use character count instead of byte count. (Ken Takata)
+Files: src/os_mswin.c
+
+
+*** ../vim-7.4.012/src/os_mswin.c 2013-08-30 16:44:15.000000000 +0200
+--- src/os_mswin.c 2013-08-30 16:47:54.000000000 +0200
+***************
+*** 456,462 ****
+--- 456,469 ----
+ int
+ mch_isFullName(char_u *fname)
+ {
++ #ifdef FEAT_MBYTE
++ /* WinNT and later can use _MAX_PATH wide characters for a pathname, which
++ * means that the maximum pathname is _MAX_PATH * 3 bytes when 'enc' is
++ * UTF-8. */
++ char szName[_MAX_PATH * 3 + 1];
++ #else
+ char szName[_MAX_PATH + 1];
++ #endif
+
+ /* A name like "d:/foo" and "//server/share" is absolute */
+ if ((fname[0] && fname[1] == ':' && (fname[2] == '/' || fname[2] == '\\'))
+***************
+*** 464,470 ****
+ return TRUE;
+
+ /* A name that can't be made absolute probably isn't absolute. */
+! if (mch_FullName(fname, szName, _MAX_PATH, FALSE) == FAIL)
+ return FALSE;
+
+ return pathcmp(fname, szName, -1) == 0;
+--- 471,477 ----
+ return TRUE;
+
+ /* A name that can't be made absolute probably isn't absolute. */
+! if (mch_FullName(fname, szName, sizeof(szName) - 1, FALSE) == FAIL)
+ return FALSE;
+
+ return pathcmp(fname, szName, -1) == 0;
+***************
+*** 498,507 ****
+ int
+ vim_stat(const char *name, struct stat *stp)
+ {
+ char buf[_MAX_PATH + 1];
+ char *p;
+
+! vim_strncpy((char_u *)buf, (char_u *)name, _MAX_PATH);
+ p = buf + strlen(buf);
+ if (p > buf)
+ mb_ptr_back(buf, p);
+--- 505,521 ----
+ int
+ vim_stat(const char *name, struct stat *stp)
+ {
++ #ifdef FEAT_MBYTE
++ /* WinNT and later can use _MAX_PATH wide characters for a pathname, which
++ * means that the maximum pathname is _MAX_PATH * 3 bytes when 'enc' is
++ * UTF-8. */
++ char buf[_MAX_PATH * 3 + 1];
++ #else
+ char buf[_MAX_PATH + 1];
++ #endif
+ char *p;
+
+! vim_strncpy((char_u *)buf, (char_u *)name, sizeof(buf) - 1);
+ p = buf + strlen(buf);
+ if (p > buf)
+ mb_ptr_back(buf, p);
+*** ../vim-7.4.012/src/version.c 2013-08-30 16:44:15.000000000 +0200
+--- src/version.c 2013-08-30 16:47:36.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 13,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+143. You dream in pallettes of 216 websafe colors.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.014 b/patches/source/vim/patches/7.4.014
new file mode 100644
index 00000000..f6554337
--- /dev/null
+++ b/patches/source/vim/patches/7.4.014
@@ -0,0 +1,102 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.014
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.014
+Problem: MS-Windows: check for writing to device does not work.
+Solution: Fix #ifdefs. (Ken Takata)
+Files: src/fileio.c
+
+
+*** ../vim-7.4.013/src/fileio.c 2013-08-25 17:46:05.000000000 +0200
+--- src/fileio.c 2013-08-30 16:56:46.000000000 +0200
+***************
+*** 428,440 ****
+ }
+ }
+
+- #ifdef UNIX
+- /*
+- * On Unix it is possible to read a directory, so we have to
+- * check for it before the mch_open().
+- */
+ if (!read_stdin && !read_buffer)
+ {
+ perm = mch_getperm(fname);
+ if (perm >= 0 && !S_ISREG(perm) /* not a regular file ... */
+ # ifdef S_ISFIFO
+--- 428,440 ----
+ }
+ }
+
+ if (!read_stdin && !read_buffer)
+ {
++ #ifdef UNIX
++ /*
++ * On Unix it is possible to read a directory, so we have to
++ * check for it before the mch_open().
++ */
+ perm = mch_getperm(fname);
+ if (perm >= 0 && !S_ISREG(perm) /* not a regular file ... */
+ # ifdef S_ISFIFO
+***************
+*** 457,464 ****
+ msg_scroll = msg_save;
+ return FAIL;
+ }
+!
+! # if defined(MSDOS) || defined(MSWIN) || defined(OS2)
+ /*
+ * MS-Windows allows opening a device, but we will probably get stuck
+ * trying to read it.
+--- 457,464 ----
+ msg_scroll = msg_save;
+ return FAIL;
+ }
+! #endif
+! #if defined(MSDOS) || defined(MSWIN) || defined(OS2)
+ /*
+ * MS-Windows allows opening a device, but we will probably get stuck
+ * trying to read it.
+***************
+*** 470,478 ****
+ msg_scroll = msg_save;
+ return FAIL;
+ }
+- # endif
+- }
+ #endif
+
+ /* Set default or forced 'fileformat' and 'binary'. */
+ set_file_options(set_options, eap);
+--- 470,477 ----
+ msg_scroll = msg_save;
+ return FAIL;
+ }
+ #endif
++ }
+
+ /* Set default or forced 'fileformat' and 'binary'. */
+ set_file_options(set_options, eap);
+*** ../vim-7.4.013/src/version.c 2013-08-30 16:51:15.000000000 +0200
+--- src/version.c 2013-08-30 16:54:33.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 14,
+ /**/
+
+--
+Drink wet cement and get really stoned.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.015 b/patches/source/vim/patches/7.4.015
new file mode 100644
index 00000000..e8b284d1
--- /dev/null
+++ b/patches/source/vim/patches/7.4.015
@@ -0,0 +1,106 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.015
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.015
+Problem: MS-Windows: Detecting node type does not work for multi-byte
+ characters.
+Solution: Use wide character function when needed. (Ken Takata)
+Files: src/os_win32.c
+
+
+*** ../vim-7.4.014/src/os_win32.c 2013-08-10 12:39:12.000000000 +0200
+--- src/os_win32.c 2013-08-30 17:09:47.000000000 +0200
+***************
+*** 3107,3112 ****
+--- 3107,3115 ----
+ {
+ HANDLE hFile;
+ int type;
++ #ifdef FEAT_MBYTE
++ WCHAR *wn = NULL;
++ #endif
+
+ /* We can't open a file with a name "\\.\con" or "\\.\prn" and trying to
+ * read from it later will cause Vim to hang. Thus return NODE_WRITABLE
+***************
+*** 3114,3127 ****
+ if (STRNCMP(name, "\\\\.\\", 4) == 0)
+ return NODE_WRITABLE;
+
+! hFile = CreateFile(name, /* file name */
+! GENERIC_WRITE, /* 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)
+ return NODE_NORMAL;
+
+--- 3117,3157 ----
+ if (STRNCMP(name, "\\\\.\\", 4) == 0)
+ return NODE_WRITABLE;
+
+! #ifdef FEAT_MBYTE
+! if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+! {
+! wn = enc_to_utf16(name, NULL);
+! if (wn != NULL)
+! {
+! hFile = CreateFileW(wn, /* file name */
+! GENERIC_WRITE, /* 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);
+! wn = NULL;
+! }
+! }
+! }
+! if (wn == NULL)
+! #endif
+! hFile = CreateFile(name, /* file name */
+! GENERIC_WRITE, /* access mode */
+! 0, /* share mode */
+! NULL, /* security descriptor */
+! OPEN_EXISTING, /* creation disposition */
+! 0, /* file attributes */
+! NULL); /* handle to template file */
+
++ #ifdef FEAT_MBYTE
++ vim_free(wn);
++ #endif
+ if (hFile == INVALID_HANDLE_VALUE)
+ return NODE_NORMAL;
+
+*** ../vim-7.4.014/src/version.c 2013-08-30 17:06:56.000000000 +0200
+--- src/version.c 2013-08-30 17:09:35.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 15,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+144. You eagerly await the update of the "Cool Site of the 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/patches/source/vim/patches/7.4.016 b/patches/source/vim/patches/7.4.016
new file mode 100644
index 00000000..c58c605f
--- /dev/null
+++ b/patches/source/vim/patches/7.4.016
@@ -0,0 +1,221 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.016
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.016
+Problem: MS-Windows: File name completion doesn't work properly with
+ Chinese characters. (Yue Wu)
+Solution: Add fname_casew(). (Ken Takata)
+Files: src/os_win32.c
+
+
+*** ../vim-7.4.015/src/os_win32.c 2013-08-30 17:11:29.000000000 +0200
+--- src/os_win32.c 2013-08-30 17:28:30.000000000 +0200
+***************
+*** 2500,2508 ****
+--- 2500,2624 ----
+ }
+
+
++ #ifdef FEAT_MBYTE
++ /*
++ * fname_casew(): Wide version of fname_case(). Set the case of the file name,
++ * if it already exists. When "len" is > 0, also expand short to long
++ * filenames.
++ * Return FAIL if wide functions are not available, OK otherwise.
++ * NOTE: much of this is identical to fname_case(), keep in sync!
++ */
++ static int
++ fname_casew(
++ WCHAR *name,
++ int len)
++ {
++ WCHAR szTrueName[_MAX_PATH + 2];
++ WCHAR szTrueNameTemp[_MAX_PATH + 2];
++ WCHAR *ptrue, *ptruePrev;
++ WCHAR *porig, *porigPrev;
++ int flen;
++ WIN32_FIND_DATAW fb;
++ HANDLE hFind;
++ int c;
++ int slen;
++
++ flen = (int)wcslen(name);
++ if (flen > _MAX_PATH)
++ return OK;
++
++ /* slash_adjust(name) not needed, already adjusted by fname_case(). */
++
++ /* Build the new name in szTrueName[] one component at a time. */
++ porig = name;
++ ptrue = szTrueName;
++
++ if (iswalpha(porig[0]) && porig[1] == L':')
++ {
++ /* copy leading drive letter */
++ *ptrue++ = *porig++;
++ *ptrue++ = *porig++;
++ *ptrue = NUL; /* in case nothing follows */
++ }
++
++ while (*porig != NUL)
++ {
++ /* copy \ characters */
++ while (*porig == psepc)
++ *ptrue++ = *porig++;
++
++ ptruePrev = ptrue;
++ porigPrev = porig;
++ while (*porig != NUL && *porig != psepc)
++ {
++ *ptrue++ = *porig++;
++ }
++ *ptrue = NUL;
++
++ /* To avoid a slow failure append "\*" when searching a directory,
++ * server or network share. */
++ wcscpy(szTrueNameTemp, szTrueName);
++ slen = (int)wcslen(szTrueNameTemp);
++ if (*porig == psepc && slen + 2 < _MAX_PATH)
++ wcscpy(szTrueNameTemp + slen, L"\\*");
++
++ /* Skip "", "." and "..". */
++ if (ptrue > ptruePrev
++ && (ptruePrev[0] != L'.'
++ || (ptruePrev[1] != NUL
++ && (ptruePrev[1] != L'.' || ptruePrev[2] != NUL)))
++ && (hFind = FindFirstFileW(szTrueNameTemp, &fb))
++ != INVALID_HANDLE_VALUE)
++ {
++ c = *porig;
++ *porig = NUL;
++
++ /* Only use the match when it's the same name (ignoring case) or
++ * expansion is allowed and there is a match with the short name
++ * and there is enough room. */
++ if (_wcsicoll(porigPrev, fb.cFileName) == 0
++ || (len > 0
++ && (_wcsicoll(porigPrev, fb.cAlternateFileName) == 0
++ && (int)(ptruePrev - szTrueName)
++ + (int)wcslen(fb.cFileName) < len)))
++ {
++ wcscpy(ptruePrev, fb.cFileName);
++
++ /* Look for exact match and prefer it if found. Must be a
++ * long name, otherwise there would be only one match. */
++ while (FindNextFileW(hFind, &fb))
++ {
++ if (*fb.cAlternateFileName != NUL
++ && (wcscoll(porigPrev, fb.cFileName) == 0
++ || (len > 0
++ && (_wcsicoll(porigPrev,
++ fb.cAlternateFileName) == 0
++ && (int)(ptruePrev - szTrueName)
++ + (int)wcslen(fb.cFileName) < len))))
++ {
++ wcscpy(ptruePrev, fb.cFileName);
++ break;
++ }
++ }
++ }
++ FindClose(hFind);
++ *porig = c;
++ ptrue = ptruePrev + wcslen(ptruePrev);
++ }
++ else if (hFind == INVALID_HANDLE_VALUE
++ && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
++ return FAIL;
++ }
++
++ wcscpy(name, szTrueName);
++ return OK;
++ }
++ #endif
++
+ /*
+ * fname_case(): Set the case of the file name, if it already exists.
+ * When "len" is > 0, also expand short to long filenames.
++ * NOTE: much of this is identical to fname_casew(), keep in sync!
+ */
+ void
+ fname_case(
+***************
+*** 2520,2530 ****
+ int slen;
+
+ flen = (int)STRLEN(name);
+! if (flen == 0 || flen > _MAX_PATH)
+ return;
+
+ slash_adjust(name);
+
+ /* Build the new name in szTrueName[] one component at a time. */
+ porig = name;
+ ptrue = szTrueName;
+--- 2636,2679 ----
+ int slen;
+
+ flen = (int)STRLEN(name);
+! if (flen == 0)
+ return;
+
+ slash_adjust(name);
+
++ #ifdef FEAT_MBYTE
++ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
++ {
++ WCHAR *p = enc_to_utf16(name, NULL);
++
++ if (p != NULL)
++ {
++ char_u *q;
++ WCHAR buf[_MAX_PATH + 2];
++
++ wcscpy(buf, p);
++ vim_free(p);
++
++ if (fname_casew(buf, (len > 0) ? _MAX_PATH : 0) == OK)
++ {
++ q = utf16_to_enc(buf, NULL);
++ if (q != NULL)
++ {
++ vim_strncpy(name, q, (len > 0) ? len - 1 : flen);
++ vim_free(q);
++ return;
++ }
++ }
++ }
++ /* Retry with non-wide function (for Windows 98). */
++ }
++ #endif
++
++ /* If 'enc' is utf-8, flen can be larger than _MAX_PATH.
++ * So we should check this after calling wide function. */
++ if (flen > _MAX_PATH)
++ return;
++
+ /* Build the new name in szTrueName[] one component at a time. */
+ porig = name;
+ ptrue = szTrueName;
+*** ../vim-7.4.015/src/version.c 2013-08-30 17:11:29.000000000 +0200
+--- src/version.c 2013-08-30 17:15:06.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 16,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.017 b/patches/source/vim/patches/7.4.017
new file mode 100644
index 00000000..7d7fad83
--- /dev/null
+++ b/patches/source/vim/patches/7.4.017
@@ -0,0 +1,78 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.017
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.017
+Problem: ":help !!" does not find the "!!" tag in the help file. (Ben
+ Fritz)
+Solution: When reading the start of the tags file do parse lines that are
+ not header lines.
+Files: src/tag.c
+
+
+*** ../vim-7.4.016/src/tag.c 2013-06-15 22:26:26.000000000 +0200
+--- src/tag.c 2013-09-05 12:03:38.000000000 +0200
+***************
+*** 1797,1809 ****
+ */
+ if (state == TS_START)
+ {
+! /* The header ends when the line sorts below "!_TAG_".
+! * There may be non-header items before the header though,
+! * e.g. "!" itself. When case is folded lower case letters
+! * sort before "_". */
+ if (STRNCMP(lbuf, "!_TAG_", 6) <= 0
+ || (lbuf[0] == '!' && ASCII_ISLOWER(lbuf[1])))
+ {
+ /*
+ * Read header line.
+ */
+--- 1797,1812 ----
+ */
+ if (state == TS_START)
+ {
+! /* The header ends when the line sorts below "!_TAG_". When
+! * case is folded lower case letters sort before "_". */
+ if (STRNCMP(lbuf, "!_TAG_", 6) <= 0
+ || (lbuf[0] == '!' && ASCII_ISLOWER(lbuf[1])))
+ {
++ if (STRNCMP(lbuf, "!_TAG_", 6) != 0)
++ /* Non-header item before the header, e.g. "!" itself.
++ */
++ goto parse_line;
++
+ /*
+ * Read header line.
+ */
+***************
+*** 1898,1903 ****
+--- 1901,1907 ----
+ #endif
+ }
+
++ parse_line:
+ /*
+ * Figure out where the different strings are in this line.
+ * For "normal" tags: Do a quick check if the tag matches.
+*** ../vim-7.4.016/src/version.c 2013-08-30 17:29:10.000000000 +0200
+--- src/version.c 2013-09-05 12:02:01.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 17,
+ /**/
+
+--
+An error has occurred. Hit any user 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/patches/source/vim/patches/7.4.018 b/patches/source/vim/patches/7.4.018
new file mode 100644
index 00000000..2214c30b
--- /dev/null
+++ b/patches/source/vim/patches/7.4.018
@@ -0,0 +1,45 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.018
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.018
+Problem: When completing item becomes unselected. (Shougo Matsu)
+Solution: Revert patch 7.3.1269.
+Files: src/edit.c
+
+
+*** ../vim-7.4.017/src/edit.c 2013-07-04 20:22:25.000000000 +0200
+--- src/edit.c 2013-09-05 12:39:53.000000000 +0200
+***************
+*** 3467,3473 ****
+ }
+
+ compl_enter_selects = !compl_used_match;
+- compl_shown_match = compl_curr_match = compl_first_match;
+
+ /* Show the popup menu with a different set of matches. */
+ ins_compl_show_pum();
+--- 3467,3472 ----
+*** ../vim-7.4.017/src/version.c 2013-09-05 12:06:26.000000000 +0200
+--- src/version.c 2013-09-05 12:40:34.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 18,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.019 b/patches/source/vim/patches/7.4.019
new file mode 100644
index 00000000..b1532c19
--- /dev/null
+++ b/patches/source/vim/patches/7.4.019
@@ -0,0 +1,61 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.019
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.019
+Problem: MS-Windows: File name completion doesn't work properly with
+ Chinese characters. (Yue Wu)
+Solution: Take care of multi-byte characters when looking for the start of
+ the file name. (Ken Takata)
+Files: src/edit.c
+
+
+*** ../vim-7.4.018/src/edit.c 2013-09-05 12:49:48.000000000 +0200
+--- src/edit.c 2013-09-05 13:45:27.000000000 +0200
+***************
+*** 5183,5190 ****
+ }
+ else if (ctrl_x_mode == CTRL_X_FILES)
+ {
+! while (--startcol >= 0 && vim_isfilec(line[startcol]))
+! ;
+ compl_col += ++startcol;
+ compl_length = (int)curs_col - startcol;
+ compl_pattern = addstar(line + compl_col, compl_length,
+--- 5183,5196 ----
+ }
+ else if (ctrl_x_mode == CTRL_X_FILES)
+ {
+! char_u *p = line + startcol;
+!
+! /* Go back to just before the first filename character. */
+! mb_ptr_back(line, p);
+! while (vim_isfilec(PTR2CHAR(p)) && p >= line)
+! mb_ptr_back(line, p);
+! startcol = p - line;
+!
+ compl_col += ++startcol;
+ compl_length = (int)curs_col - startcol;
+ compl_pattern = addstar(line + compl_col, compl_length,
+*** ../vim-7.4.018/src/version.c 2013-09-05 12:49:48.000000000 +0200
+--- src/version.c 2013-09-05 13:41:47.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 19,
+ /**/
+
+--
+ Very funny, Scotty. Now beam down my clothes.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.020 b/patches/source/vim/patches/7.4.020
new file mode 100644
index 00000000..942d82fe
--- /dev/null
+++ b/patches/source/vim/patches/7.4.020
@@ -0,0 +1,82 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.020
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.020
+Problem: NFA engine matches too much with \@>. (John McGowan)
+Solution: When a whole pattern match is found stop searching.
+Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok
+
+
+*** ../vim-7.4.019/src/regexp_nfa.c 2013-08-25 17:01:36.000000000 +0200
+--- src/regexp_nfa.c 2013-09-05 15:59:44.000000000 +0200
+***************
+*** 5322,5328 ****
+ log_subsexpr(m);
+ #endif
+ nfa_match = TRUE;
+! break;
+
+ case NFA_START_INVISIBLE:
+ case NFA_START_INVISIBLE_FIRST:
+--- 5322,5331 ----
+ log_subsexpr(m);
+ #endif
+ nfa_match = TRUE;
+! /* See comment above at "goto nextchar". */
+! if (nextlist->n == 0)
+! clen = 0;
+! goto nextchar;
+
+ case NFA_START_INVISIBLE:
+ case NFA_START_INVISIBLE_FIRST:
+*** ../vim-7.4.019/src/testdir/test64.in 2013-08-14 13:31:03.000000000 +0200
+--- src/testdir/test64.in 2013-09-05 15:35:44.000000000 +0200
+***************
+*** 427,432 ****
+--- 427,433 ----
+ :""""" \@>
+ :call add(tl, [2, '\(a*\)\@>a', 'aaaa'])
+ :call add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa'])
++ :call add(tl, [2, '^\(.\{-}b\)\@>.', ' abcbd', ' abc', ' ab'])
+ :" TODO: BT engine does not restore submatch after failure
+ :call add(tl, [1, '\(a*\)\@>a\|a\+', 'aaaa', 'aaaa'])
+ :"
+*** ../vim-7.4.019/src/testdir/test64.ok 2013-08-14 13:31:03.000000000 +0200
+--- src/testdir/test64.ok 2013-09-05 16:03:34.000000000 +0200
+***************
+*** 983,988 ****
+--- 983,991 ----
+ OK 0 - \(a*\)\@>b
+ OK 1 - \(a*\)\@>b
+ OK 2 - \(a*\)\@>b
++ OK 0 - ^\(.\{-}b\)\@>.
++ OK 1 - ^\(.\{-}b\)\@>.
++ OK 2 - ^\(.\{-}b\)\@>.
+ OK 0 - \(a*\)\@>a\|a\+
+ OK 2 - \(a*\)\@>a\|a\+
+ OK 0 - \_[^8-9]\+
+*** ../vim-7.4.019/src/version.c 2013-09-05 13:50:49.000000000 +0200
+--- src/version.c 2013-09-05 16:04:32.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 20,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.021 b/patches/source/vim/patches/7.4.021
new file mode 100644
index 00000000..0936d9a1
--- /dev/null
+++ b/patches/source/vim/patches/7.4.021
@@ -0,0 +1,86 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.021
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.021
+Problem: NFA regexp: Using \ze in one branch which doesn't match may cause
+ end of another branch to be wrong. (William Fugh)
+Solution: Set end position if it wasn't set yet.
+Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok
+
+
+*** ../vim-7.4.020/src/regexp_nfa.c 2013-09-05 16:05:32.000000000 +0200
+--- src/regexp_nfa.c 2013-09-05 20:56:25.000000000 +0200
+***************
+*** 4209,4218 ****
+ break;
+
+ case NFA_MCLOSE:
+! if (nfa_has_zend)
+ {
+! /* Do not overwrite the position set by \ze. If no \ze
+! * encountered end will be set in nfa_regtry(). */
+ subs = addstate(l, state->out, subs, pim, off);
+ break;
+ }
+--- 4209,4219 ----
+ break;
+
+ case NFA_MCLOSE:
+! if (nfa_has_zend && (REG_MULTI
+! ? subs->norm.list.multi[0].end.lnum >= 0
+! : subs->norm.list.line[0].end != NULL))
+ {
+! /* Do not overwrite the position set by \ze. */
+ subs = addstate(l, state->out, subs, pim, off);
+ break;
+ }
+*** ../vim-7.4.020/src/testdir/test64.in 2013-09-05 16:05:32.000000000 +0200
+--- src/testdir/test64.in 2013-09-05 20:55:18.000000000 +0200
+***************
+*** 328,333 ****
+--- 328,334 ----
+ :call add(tl, [2, 'abc \zsmatch\ze abc', 'abc abc abc match abc abc', 'match'])
+ :call add(tl, [2, '\v(a \zsif .*){2}', 'a if then a if last', 'if last', 'a if last'])
+ :call add(tl, [2, '\>\zs.', 'aword. ', '.'])
++ :call add(tl, [2, '\s\+\ze\[/\|\s\zs\s\+', 'is [a t', ' '])
+ :"
+ :"""" Tests for \@= and \& features
+ :call add(tl, [2, 'abc\@=', 'abc', 'ab'])
+*** ../vim-7.4.020/src/testdir/test64.ok 2013-09-05 16:05:32.000000000 +0200
+--- src/testdir/test64.ok 2013-09-05 21:09:56.000000000 +0200
+***************
+*** 752,757 ****
+--- 752,760 ----
+ OK 0 - \>\zs.
+ OK 1 - \>\zs.
+ OK 2 - \>\zs.
++ OK 0 - \s\+\ze\[/\|\s\zs\s\+
++ OK 1 - \s\+\ze\[/\|\s\zs\s\+
++ OK 2 - \s\+\ze\[/\|\s\zs\s\+
+ OK 0 - abc\@=
+ OK 1 - abc\@=
+ OK 2 - abc\@=
+*** ../vim-7.4.020/src/version.c 2013-09-05 16:05:32.000000000 +0200
+--- src/version.c 2013-09-05 21:11:38.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 21,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.022 b/patches/source/vim/patches/7.4.022
new file mode 100644
index 00000000..81a0901f
--- /dev/null
+++ b/patches/source/vim/patches/7.4.022
@@ -0,0 +1,148 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.022
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.022
+Problem: Deadlock while exiting, because of allocating memory.
+Solution: Do not use gettext() in deathtrap(). (James McCoy)
+Files: src/os_unix.c, src/misc1.c
+
+
+*** ../vim-7.4.021/src/os_unix.c 2013-07-03 16:32:32.000000000 +0200
+--- src/os_unix.c 2013-09-05 21:40:06.000000000 +0200
+***************
+*** 957,964 ****
+
+ /*
+ * This function handles deadly signals.
+! * It tries to preserve any swap file and exit properly.
+ * (partly from Elvis).
+ */
+ static RETSIGTYPE
+ deathtrap SIGDEFARG(sigarg)
+--- 957,966 ----
+
+ /*
+ * This function handles deadly signals.
+! * It tries to preserve any swap files and exit properly.
+ * (partly from Elvis).
++ * NOTE: Avoid unsafe functions, such as allocating memory, they can result in
++ * a deadlock.
+ */
+ static RETSIGTYPE
+ deathtrap SIGDEFARG(sigarg)
+***************
+*** 1090,1107 ****
+ }
+ if (entered == 2)
+ {
+! OUT_STR(_("Vim: Double signal, exiting\n"));
+ out_flush();
+ getout(1);
+ }
+
+ #ifdef SIGHASARG
+! sprintf((char *)IObuff, _("Vim: Caught deadly signal %s\n"),
+ signal_info[i].name);
+ #else
+! sprintf((char *)IObuff, _("Vim: Caught deadly signal\n"));
+ #endif
+! preserve_exit(); /* preserve files and exit */
+
+ #ifdef NBDEBUG
+ reset_signals();
+--- 1092,1114 ----
+ }
+ if (entered == 2)
+ {
+! /* No translation, it may call malloc(). */
+! OUT_STR("Vim: Double signal, exiting\n");
+ out_flush();
+ getout(1);
+ }
+
++ /* No translation, it may call malloc(). */
+ #ifdef SIGHASARG
+! sprintf((char *)IObuff, "Vim: Caught deadly signal %s\n",
+ signal_info[i].name);
+ #else
+! sprintf((char *)IObuff, "Vim: Caught deadly signal\n");
+ #endif
+!
+! /* Preserve files and exit. This sets the really_exiting flag to prevent
+! * calling free(). */
+! preserve_exit();
+
+ #ifdef NBDEBUG
+ reset_signals();
+*** ../vim-7.4.021/src/misc1.c 2013-08-03 17:29:33.000000000 +0200
+--- src/misc1.c 2013-09-05 21:34:04.000000000 +0200
+***************
+*** 9174,9179 ****
+--- 9174,9181 ----
+ /*
+ * Preserve files and exit.
+ * When called IObuff must contain a message.
++ * NOTE: This may be called from deathtrap() in a signal handler, avoid unsafe
++ * functions, such as allocating memory.
+ */
+ void
+ preserve_exit()
+***************
+*** 9196,9202 ****
+ {
+ if (buf->b_ml.ml_mfp != NULL && buf->b_ml.ml_mfp->mf_fname != NULL)
+ {
+! OUT_STR(_("Vim: preserving files...\n"));
+ screen_start(); /* don't know where cursor is now */
+ out_flush();
+ ml_sync_all(FALSE, FALSE); /* preserve all swap files */
+--- 9198,9204 ----
+ {
+ if (buf->b_ml.ml_mfp != NULL && buf->b_ml.ml_mfp->mf_fname != NULL)
+ {
+! OUT_STR("Vim: preserving files...\n");
+ screen_start(); /* don't know where cursor is now */
+ out_flush();
+ ml_sync_all(FALSE, FALSE); /* preserve all swap files */
+***************
+*** 9206,9212 ****
+
+ ml_close_all(FALSE); /* close all memfiles, without deleting */
+
+! OUT_STR(_("Vim: Finished.\n"));
+
+ getout(1);
+ }
+--- 9208,9214 ----
+
+ ml_close_all(FALSE); /* close all memfiles, without deleting */
+
+! OUT_STR("Vim: Finished.\n");
+
+ getout(1);
+ }
+*** ../vim-7.4.021/src/version.c 2013-09-05 21:15:38.000000000 +0200
+--- src/version.c 2013-09-05 21:30:18.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 22,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+175. You send yourself e-mail before you go to bed to remind you
+ what to do when you wake 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/patches/source/vim/patches/7.4.023 b/patches/source/vim/patches/7.4.023
new file mode 100644
index 00000000..03005213
--- /dev/null
+++ b/patches/source/vim/patches/7.4.023
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.023
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.023
+Problem: Compiler warning on 64 bit windows.
+Solution: Add type cast. (Mike Williams)
+Files: src/edit.c
+
+
+*** ../vim-7.4.022/src/edit.c 2013-09-05 13:50:49.000000000 +0200
+--- src/edit.c 2013-09-06 17:32:55.000000000 +0200
+***************
+*** 5189,5195 ****
+ mb_ptr_back(line, p);
+ while (vim_isfilec(PTR2CHAR(p)) && p >= line)
+ mb_ptr_back(line, p);
+! startcol = p - line;
+
+ compl_col += ++startcol;
+ compl_length = (int)curs_col - startcol;
+--- 5189,5195 ----
+ mb_ptr_back(line, p);
+ while (vim_isfilec(PTR2CHAR(p)) && p >= line)
+ mb_ptr_back(line, p);
+! startcol = (int)(p - line);
+
+ compl_col += ++startcol;
+ compl_length = (int)curs_col - startcol;
+*** ../vim-7.4.022/src/version.c 2013-09-05 21:41:35.000000000 +0200
+--- src/version.c 2013-09-06 17:33:41.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 23,
+ /**/
+
+--
+Wizards had always known that the act of observation changed the thing that
+was observed, and sometimes forgot that it also changed the observer too.
+ Terry Pratchett - Interesting times
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.024 b/patches/source/vim/patches/7.4.024
new file mode 100644
index 00000000..da0df9c6
--- /dev/null
+++ b/patches/source/vim/patches/7.4.024
@@ -0,0 +1,61 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.024
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.024
+Problem: When root edits a file the undo file is owned by root while the
+ edited file may be owned by another user, which is not allowed.
+ (cac2s)
+Solution: Accept an undo file owned by the current user.
+Files: src/undo.c
+
+
+*** ../vim-7.4.023/src/undo.c 2013-06-10 20:13:37.000000000 +0200
+--- src/undo.c 2013-09-07 15:45:56.000000000 +0200
+***************
+*** 1604,1613 ****
+
+ #ifdef UNIX
+ /* For safety we only read an undo file if the owner is equal to the
+! * owner of the text file. */
+ if (mch_stat((char *)orig_name, &st_orig) >= 0
+ && mch_stat((char *)file_name, &st_undo) >= 0
+! && st_orig.st_uid != st_undo.st_uid)
+ {
+ if (p_verbose > 0)
+ {
+--- 1604,1614 ----
+
+ #ifdef UNIX
+ /* For safety we only read an undo file if the owner is equal to the
+! * owner of the text file or equal to the current user. */
+ if (mch_stat((char *)orig_name, &st_orig) >= 0
+ && mch_stat((char *)file_name, &st_undo) >= 0
+! && st_orig.st_uid != st_undo.st_uid
+! && st_undo.st_uid != getuid())
+ {
+ if (p_verbose > 0)
+ {
+*** ../vim-7.4.023/src/version.c 2013-09-07 16:35:38.000000000 +0200
+--- src/version.c 2013-09-08 15:38:52.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 24,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+186. You overstay in the office so you can have more time 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/patches/source/vim/patches/7.4.025 b/patches/source/vim/patches/7.4.025
new file mode 100644
index 00000000..9ead176e
--- /dev/null
+++ b/patches/source/vim/patches/7.4.025
@@ -0,0 +1,62 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.025
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.025 (after 7.4.019
+Problem: Reading before start of a string.
+Solution: Do not call mb_ptr_back() at start of a string. (Dominique Pelle)
+Files: src/edit.c
+
+
+*** ../vim-7.4.024/src/edit.c 2013-09-07 16:35:38.000000000 +0200
+--- src/edit.c 2013-09-08 15:57:20.000000000 +0200
+***************
+*** 5187,5197 ****
+
+ /* Go back to just before the first filename character. */
+ mb_ptr_back(line, p);
+! while (vim_isfilec(PTR2CHAR(p)) && p >= line)
+ mb_ptr_back(line, p);
+! startcol = (int)(p - line);
+
+! compl_col += ++startcol;
+ compl_length = (int)curs_col - startcol;
+ compl_pattern = addstar(line + compl_col, compl_length,
+ EXPAND_FILES);
+--- 5187,5199 ----
+
+ /* Go back to just before the first filename character. */
+ mb_ptr_back(line, p);
+! while (p > line && vim_isfilec(PTR2CHAR(p)))
+ mb_ptr_back(line, p);
+! startcol = (int)(p - line) + 1;
+! if (p == line && vim_isfilec(PTR2CHAR(p)))
+! startcol = 0;
+
+! compl_col += startcol;
+ compl_length = (int)curs_col - startcol;
+ compl_pattern = addstar(line + compl_col, compl_length,
+ EXPAND_FILES);
+*** ../vim-7.4.024/src/version.c 2013-09-08 15:40:45.000000000 +0200
+--- src/version.c 2013-09-08 15:52:39.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 25,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+188. You purchase a laptop so you can surf while sitting on the can.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.026 b/patches/source/vim/patches/7.4.026
new file mode 100644
index 00000000..8add91f7
--- /dev/null
+++ b/patches/source/vim/patches/7.4.026
@@ -0,0 +1,65 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.026
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.026
+Problem: Clang warning for int shift overflow.
+Solution: Use unsigned and cast back to int. (Dominique Pelle)
+Files: src/misc2.c
+
+
+*** ../vim-7.4.025/src/misc2.c 2013-07-07 16:03:35.000000000 +0200
+--- src/misc2.c 2013-09-08 16:04:54.000000000 +0200
+***************
+*** 6496,6508 ****
+ get4c(fd)
+ FILE *fd;
+ {
+! int n;
+
+! n = getc(fd);
+! n = (n << 8) + getc(fd);
+! n = (n << 8) + getc(fd);
+! n = (n << 8) + getc(fd);
+! return n;
+ }
+
+ /*
+--- 6496,6510 ----
+ get4c(fd)
+ FILE *fd;
+ {
+! /* Use unsigned rather than int otherwise result is undefined
+! * when left-shift sets the MSB. */
+! unsigned n;
+
+! n = (unsigned)getc(fd);
+! n = (n << 8) + (unsigned)getc(fd);
+! n = (n << 8) + (unsigned)getc(fd);
+! n = (n << 8) + (unsigned)getc(fd);
+! return (int)n;
+ }
+
+ /*
+*** ../vim-7.4.025/src/version.c 2013-09-08 16:03:40.000000000 +0200
+--- src/version.c 2013-09-08 16:05:40.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 26,
+ /**/
+
+--
+A computer program does what you tell it to do, not what you want it to do.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.027 b/patches/source/vim/patches/7.4.027
new file mode 100644
index 00000000..ab43d59a
--- /dev/null
+++ b/patches/source/vim/patches/7.4.027
@@ -0,0 +1,89 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.027
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.027 (after 7.4.025)
+Problem: Another valgrind error when using CTRL-X CTRL-F at the start of
+ the line. (Dominique Pelle)
+Solution: Don't call mb_ptr_back() at the start of the line. Add a test.
+Files: src/edit.c, src/testdir/test32.in
+
+
+*** ../vim-7.4.026/src/edit.c 2013-09-08 16:03:40.000000000 +0200
+--- src/edit.c 2013-09-08 18:18:32.000000000 +0200
+***************
+*** 5183,5197 ****
+ }
+ else if (ctrl_x_mode == CTRL_X_FILES)
+ {
+- char_u *p = line + startcol;
+-
+ /* Go back to just before the first filename character. */
+! mb_ptr_back(line, p);
+! while (p > line && vim_isfilec(PTR2CHAR(p)))
+ mb_ptr_back(line, p);
+! startcol = (int)(p - line) + 1;
+! if (p == line && vim_isfilec(PTR2CHAR(p)))
+! startcol = 0;
+
+ compl_col += startcol;
+ compl_length = (int)curs_col - startcol;
+--- 5183,5201 ----
+ }
+ else if (ctrl_x_mode == CTRL_X_FILES)
+ {
+ /* Go back to just before the first filename character. */
+! if (startcol > 0)
+! {
+! char_u *p = line + startcol;
+!
+ mb_ptr_back(line, p);
+! while (p > line && vim_isfilec(PTR2CHAR(p)))
+! mb_ptr_back(line, p);
+! if (p == line && vim_isfilec(PTR2CHAR(p)))
+! startcol = 0;
+! else
+! startcol = (int)(p - line) + 1;
+! }
+
+ compl_col += startcol;
+ compl_length = (int)curs_col - startcol;
+*** ../vim-7.4.026/src/testdir/test32.in 2010-05-15 13:04:10.000000000 +0200
+--- src/testdir/test32.in 2013-09-08 18:08:07.000000000 +0200
+***************
+*** 36,41 ****
+--- 36,44 ----
+ :w Xtest11.one
+ :w Xtest11.two
+ OIXA
++ :" use CTRL-X CTRL-F to complete Xtest11.one, remove it and then use
++ :" CTRL-X CTRL-F again to verify this doesn't cause trouble.
++ OXddk
+ :se cpt=w
+ OST
+ :se cpt=u nohid
+*** ../vim-7.4.026/src/version.c 2013-09-08 16:07:03.000000000 +0200
+--- src/version.c 2013-09-08 18:14:17.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 27,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.028 b/patches/source/vim/patches/7.4.028
new file mode 100644
index 00000000..4a0e3cf9
--- /dev/null
+++ b/patches/source/vim/patches/7.4.028
@@ -0,0 +1,753 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.028
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.028
+Problem: Equivalence classes are not working for multi-byte characters.
+Solution: Copy the rules from the old to the new regexp engine. Add a test
+ to check both engines.
+Files: src/regexp_nfa.c, src/testdir/test44.in, src/testdir/test99.in,
+ src/testdir/test99.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.4.027/src/regexp_nfa.c 2013-09-05 21:15:38.000000000 +0200
+--- src/regexp_nfa.c 2013-09-19 16:40:08.000000000 +0200
+***************
+*** 742,748 ****
+ nfa_emit_equi_class(c)
+ int c;
+ {
+! #define EMIT2(c) EMIT(c); EMIT(NFA_CONCAT);
+
+ #ifdef FEAT_MBYTE
+ if (enc_utf8 || STRCMP(p_enc, "latin1") == 0
+--- 742,753 ----
+ nfa_emit_equi_class(c)
+ int c;
+ {
+! #define EMIT2(c) EMIT(c); EMIT(NFA_CONCAT);
+! #ifdef FEAT_MBYTE
+! # define EMITMBC(c) EMIT(c); EMIT(NFA_CONCAT);
+! #else
+! # define EMITMBC(c)
+! #endif
+
+ #ifdef FEAT_MBYTE
+ if (enc_utf8 || STRCMP(p_enc, "latin1") == 0
+***************
+*** 753,844 ****
+ {
+ case 'A': case 0300: case 0301: case 0302:
+ case 0303: case 0304: case 0305:
+! EMIT2('A'); EMIT2(0300); EMIT2(0301);
+! EMIT2(0302); EMIT2(0303); EMIT2(0304);
+! EMIT2(0305);
+ return OK;
+
+ case 'C': case 0307:
+! EMIT2('C'); EMIT2(0307);
+ return OK;
+
+ case 'E': case 0310: case 0311: case 0312: case 0313:
+! EMIT2('E'); EMIT2(0310); EMIT2(0311);
+! EMIT2(0312); EMIT2(0313);
+ return OK;
+
+ case 'I': case 0314: case 0315: case 0316: case 0317:
+! EMIT2('I'); EMIT2(0314); EMIT2(0315);
+! EMIT2(0316); EMIT2(0317);
+ return OK;
+
+ case 'N': case 0321:
+! EMIT2('N'); EMIT2(0321);
+ return OK;
+
+ case 'O': case 0322: case 0323: case 0324: case 0325:
+! case 0326:
+! EMIT2('O'); EMIT2(0322); EMIT2(0323);
+! EMIT2(0324); EMIT2(0325); EMIT2(0326);
+ return OK;
+
+ case 'U': case 0331: case 0332: case 0333: case 0334:
+! EMIT2('U'); EMIT2(0331); EMIT2(0332);
+! EMIT2(0333); EMIT2(0334);
+ return OK;
+
+ case 'Y': case 0335:
+! EMIT2('Y'); EMIT2(0335);
+ return OK;
+
+ case 'a': case 0340: case 0341: case 0342:
+ case 0343: case 0344: case 0345:
+! EMIT2('a'); EMIT2(0340); EMIT2(0341);
+! EMIT2(0342); EMIT2(0343); EMIT2(0344);
+! EMIT2(0345);
+ return OK;
+
+ case 'c': case 0347:
+! EMIT2('c'); EMIT2(0347);
+ return OK;
+
+ case 'e': case 0350: case 0351: case 0352: case 0353:
+! EMIT2('e'); EMIT2(0350); EMIT2(0351);
+! EMIT2(0352); EMIT2(0353);
+ return OK;
+
+ case 'i': case 0354: case 0355: case 0356: case 0357:
+! EMIT2('i'); EMIT2(0354); EMIT2(0355);
+! EMIT2(0356); EMIT2(0357);
+ return OK;
+
+ case 'n': case 0361:
+! EMIT2('n'); EMIT2(0361);
+ return OK;
+
+ case 'o': case 0362: case 0363: case 0364: case 0365:
+! case 0366:
+! EMIT2('o'); EMIT2(0362); EMIT2(0363);
+! EMIT2(0364); EMIT2(0365); EMIT2(0366);
+ return OK;
+
+ case 'u': case 0371: case 0372: case 0373: case 0374:
+! EMIT2('u'); EMIT2(0371); EMIT2(0372);
+! EMIT2(0373); EMIT2(0374);
+ return OK;
+
+ case 'y': case 0375: case 0377:
+! EMIT2('y'); EMIT2(0375); EMIT2(0377);
+ return OK;
+
+! default:
+! return FAIL;
+ }
+ }
+
+! EMIT(c);
+ return OK;
+ #undef EMIT2
+ }
+
+ /*
+--- 758,1095 ----
+ {
+ case 'A': case 0300: case 0301: case 0302:
+ case 0303: case 0304: case 0305:
+! CASEMBC(0x100) CASEMBC(0x102) CASEMBC(0x104) CASEMBC(0x1cd)
+! CASEMBC(0x1de) CASEMBC(0x1e0) CASEMBC(0x1ea2)
+! EMIT2('A'); EMIT2(0300); EMIT2(0301); EMIT2(0302);
+! EMIT2(0303); EMIT2(0304); EMIT2(0305);
+! EMITMBC(0x100) EMITMBC(0x102) EMITMBC(0x104)
+! EMITMBC(0x1cd) EMITMBC(0x1de) EMITMBC(0x1e0)
+! EMITMBC(0x1ea2)
+! return OK;
+!
+! case 'B': CASEMBC(0x1e02) CASEMBC(0x1e06)
+! EMIT2('B'); EMITMBC(0x1e02) EMITMBC(0x1e06)
+ return OK;
+
+ case 'C': case 0307:
+! CASEMBC(0x106) CASEMBC(0x108) CASEMBC(0x10a) CASEMBC(0x10c)
+! EMIT2('C'); EMIT2(0307); EMITMBC(0x106) EMITMBC(0x108)
+! EMITMBC(0x10a) EMITMBC(0x10c)
+! return OK;
+!
+! case 'D': CASEMBC(0x10e) CASEMBC(0x110) CASEMBC(0x1e0a)
+! CASEMBC(0x1e0e) CASEMBC(0x1e10)
+! EMIT2('D'); EMITMBC(0x10e) EMITMBC(0x110) EMITMBC(0x1e0a)
+! EMITMBC(0x1e0e) EMITMBC(0x1e10)
+ return OK;
+
+ case 'E': case 0310: case 0311: case 0312: case 0313:
+! CASEMBC(0x112) CASEMBC(0x114) CASEMBC(0x116) CASEMBC(0x118)
+! CASEMBC(0x11a) CASEMBC(0x1eba) CASEMBC(0x1ebc)
+! EMIT2('E'); EMIT2(0310); EMIT2(0311); EMIT2(0312);
+! EMIT2(0313);
+! EMITMBC(0x112) EMITMBC(0x114) EMITMBC(0x116)
+! EMITMBC(0x118) EMITMBC(0x11a) EMITMBC(0x1eba)
+! EMITMBC(0x1ebc)
+! return OK;
+!
+! case 'F': CASEMBC(0x1e1e)
+! EMIT2('F'); EMITMBC(0x1e1e)
+! return OK;
+!
+! case 'G': CASEMBC(0x11c) CASEMBC(0x11e) CASEMBC(0x120)
+! CASEMBC(0x122) CASEMBC(0x1e4) CASEMBC(0x1e6) CASEMBC(0x1f4)
+! CASEMBC(0x1e20)
+! EMIT2('G'); EMITMBC(0x11c) EMITMBC(0x11e) EMITMBC(0x120)
+! EMITMBC(0x122) EMITMBC(0x1e4) EMITMBC(0x1e6)
+! EMITMBC(0x1f4) EMITMBC(0x1e20)
+! return OK;
+!
+! case 'H': CASEMBC(0x124) CASEMBC(0x126) CASEMBC(0x1e22)
+! CASEMBC(0x1e26) CASEMBC(0x1e28)
+! EMIT2('H'); EMITMBC(0x124) EMITMBC(0x126) EMITMBC(0x1e22)
+! EMITMBC(0x1e26) EMITMBC(0x1e28)
+ return OK;
+
+ case 'I': case 0314: case 0315: case 0316: case 0317:
+! CASEMBC(0x128) CASEMBC(0x12a) CASEMBC(0x12c) CASEMBC(0x12e)
+! CASEMBC(0x130) CASEMBC(0x1cf) CASEMBC(0x1ec8)
+! EMIT2('I'); EMIT2(0314); EMIT2(0315); EMIT2(0316);
+! EMIT2(0317); EMITMBC(0x128) EMITMBC(0x12a)
+! EMITMBC(0x12c) EMITMBC(0x12e) EMITMBC(0x130)
+! EMITMBC(0x1cf) EMITMBC(0x1ec8)
+! return OK;
+!
+! case 'J': CASEMBC(0x134)
+! EMIT2('J'); EMITMBC(0x134)
+! return OK;
+!
+! case 'K': CASEMBC(0x136) CASEMBC(0x1e8) CASEMBC(0x1e30)
+! CASEMBC(0x1e34)
+! EMIT2('K'); EMITMBC(0x136) EMITMBC(0x1e8) EMITMBC(0x1e30)
+! EMITMBC(0x1e34)
+! return OK;
+!
+! case 'L': CASEMBC(0x139) CASEMBC(0x13b) CASEMBC(0x13d)
+! CASEMBC(0x13f) CASEMBC(0x141) CASEMBC(0x1e3a)
+! EMIT2('L'); EMITMBC(0x139) EMITMBC(0x13b) EMITMBC(0x13d)
+! EMITMBC(0x13f) EMITMBC(0x141) EMITMBC(0x1e3a)
+! return OK;
+!
+! case 'M': CASEMBC(0x1e3e) CASEMBC(0x1e40)
+! EMIT2('M'); EMITMBC(0x1e3e) EMITMBC(0x1e40)
+ return OK;
+
+ case 'N': case 0321:
+! CASEMBC(0x143) CASEMBC(0x145) CASEMBC(0x147) CASEMBC(0x1e44)
+! CASEMBC(0x1e48)
+! EMIT2('N'); EMIT2(0321); EMITMBC(0x143) EMITMBC(0x145)
+! EMITMBC(0x147) EMITMBC(0x1e44) EMITMBC(0x1e48)
+ return OK;
+
+ case 'O': case 0322: case 0323: case 0324: case 0325:
+! case 0326: case 0330:
+! CASEMBC(0x14c) CASEMBC(0x14e) CASEMBC(0x150) CASEMBC(0x1a0)
+! CASEMBC(0x1d1) CASEMBC(0x1ea) CASEMBC(0x1ec) CASEMBC(0x1ece)
+! EMIT2('O'); EMIT2(0322); EMIT2(0323); EMIT2(0324);
+! EMIT2(0325); EMIT2(0326); EMIT2(0330);
+! EMITMBC(0x14c) EMITMBC(0x14e) EMITMBC(0x150)
+! EMITMBC(0x1a0) EMITMBC(0x1d1) EMITMBC(0x1ea)
+! EMITMBC(0x1ec) EMITMBC(0x1ece)
+! return OK;
+!
+! case 'P': case 0x1e54: case 0x1e56:
+! EMIT2('P'); EMITMBC(0x1e54) EMITMBC(0x1e56)
+! return OK;
+!
+! case 'R': CASEMBC(0x154) CASEMBC(0x156) CASEMBC(0x158)
+! CASEMBC(0x1e58) CASEMBC(0x1e5e)
+! EMIT2('R'); EMITMBC(0x154) EMITMBC(0x156) EMITMBC(0x158)
+! EMITMBC(0x1e58) EMITMBC(0x1e5e)
+! return OK;
+!
+! case 'S': CASEMBC(0x15a) CASEMBC(0x15c) CASEMBC(0x15e)
+! CASEMBC(0x160) CASEMBC(0x1e60)
+! EMIT2('S'); EMITMBC(0x15a) EMITMBC(0x15c) EMITMBC(0x15e)
+! EMITMBC(0x160) EMITMBC(0x1e60)
+! return OK;
+!
+! case 'T': CASEMBC(0x162) CASEMBC(0x164) CASEMBC(0x166)
+! CASEMBC(0x1e6a) CASEMBC(0x1e6e)
+! EMIT2('T'); EMITMBC(0x162) EMITMBC(0x164) EMITMBC(0x166)
+! EMITMBC(0x1e6a) EMITMBC(0x1e6e)
+ return OK;
+
+ case 'U': case 0331: case 0332: case 0333: case 0334:
+! CASEMBC(0x168) CASEMBC(0x16a) CASEMBC(0x16c) CASEMBC(0x16e)
+! CASEMBC(0x170) CASEMBC(0x172) CASEMBC(0x1af) CASEMBC(0x1d3)
+! CASEMBC(0x1ee6)
+! EMIT2('U'); EMIT2(0331); EMIT2(0332); EMIT2(0333);
+! EMIT2(0334); EMITMBC(0x168) EMITMBC(0x16a)
+! EMITMBC(0x16c) EMITMBC(0x16e) EMITMBC(0x170)
+! EMITMBC(0x172) EMITMBC(0x1af) EMITMBC(0x1d3)
+! EMITMBC(0x1ee6)
+! return OK;
+!
+! case 'V': CASEMBC(0x1e7c)
+! EMIT2('V'); EMITMBC(0x1e7c)
+! return OK;
+!
+! case 'W': CASEMBC(0x174) CASEMBC(0x1e80) CASEMBC(0x1e82)
+! CASEMBC(0x1e84) CASEMBC(0x1e86)
+! EMIT2('W'); EMITMBC(0x174) EMITMBC(0x1e80) EMITMBC(0x1e82)
+! EMITMBC(0x1e84) EMITMBC(0x1e86)
+! return OK;
+!
+! case 'X': CASEMBC(0x1e8a) CASEMBC(0x1e8c)
+! EMIT2('X'); EMITMBC(0x1e8a) EMITMBC(0x1e8c)
+ return OK;
+
+ case 'Y': case 0335:
+! CASEMBC(0x176) CASEMBC(0x178) CASEMBC(0x1e8e) CASEMBC(0x1ef2)
+! CASEMBC(0x1ef6) CASEMBC(0x1ef8)
+! EMIT2('Y'); EMIT2(0335); EMITMBC(0x176) EMITMBC(0x178)
+! EMITMBC(0x1e8e) EMITMBC(0x1ef2) EMITMBC(0x1ef6)
+! EMITMBC(0x1ef8)
+! return OK;
+!
+! case 'Z': CASEMBC(0x179) CASEMBC(0x17b) CASEMBC(0x17d)
+! CASEMBC(0x1b5) CASEMBC(0x1e90) CASEMBC(0x1e94)
+! EMIT2('Z'); EMITMBC(0x179) EMITMBC(0x17b) EMITMBC(0x17d)
+! EMITMBC(0x1b5) EMITMBC(0x1e90) EMITMBC(0x1e94)
+ return OK;
+
+ case 'a': case 0340: case 0341: case 0342:
+ case 0343: case 0344: case 0345:
+! CASEMBC(0x101) CASEMBC(0x103) CASEMBC(0x105) CASEMBC(0x1ce)
+! CASEMBC(0x1df) CASEMBC(0x1e1) CASEMBC(0x1ea3)
+! EMIT2('a'); EMIT2(0340); EMIT2(0341); EMIT2(0342);
+! EMIT2(0343); EMIT2(0344); EMIT2(0345);
+! EMITMBC(0x101) EMITMBC(0x103) EMITMBC(0x105)
+! EMITMBC(0x1ce) EMITMBC(0x1df) EMITMBC(0x1e1)
+! EMITMBC(0x1ea3)
+! return OK;
+!
+! case 'b': CASEMBC(0x1e03) CASEMBC(0x1e07)
+! EMIT2('b'); EMITMBC(0x1e03) EMITMBC(0x1e07)
+ return OK;
+
+ case 'c': case 0347:
+! CASEMBC(0x107) CASEMBC(0x109) CASEMBC(0x10b) CASEMBC(0x10d)
+! EMIT2('c'); EMIT2(0347); EMITMBC(0x107) EMITMBC(0x109)
+! EMITMBC(0x10b) EMITMBC(0x10d)
+! return OK;
+!
+! case 'd': CASEMBC(0x10f) CASEMBC(0x111) CASEMBC(0x1d0b)
+! CASEMBC(0x1e11)
+! EMIT2('d'); EMITMBC(0x10f) EMITMBC(0x111) EMITMBC(0x1e0b)
+! EMITMBC(0x01e0f) EMITMBC(0x1e11)
+ return OK;
+
+ case 'e': case 0350: case 0351: case 0352: case 0353:
+! CASEMBC(0x113) CASEMBC(0x115) CASEMBC(0x117) CASEMBC(0x119)
+! CASEMBC(0x11b) CASEMBC(0x1ebb) CASEMBC(0x1ebd)
+! EMIT2('e'); EMIT2(0350); EMIT2(0351); EMIT2(0352);
+! EMIT2(0353); EMITMBC(0x113) EMITMBC(0x115)
+! EMITMBC(0x117) EMITMBC(0x119) EMITMBC(0x11b)
+! EMITMBC(0x1ebb) EMITMBC(0x1ebd)
+! return OK;
+!
+! case 'f': CASEMBC(0x1e1f)
+! EMIT2('f'); EMITMBC(0x1e1f)
+! return OK;
+!
+! case 'g': CASEMBC(0x11d) CASEMBC(0x11f) CASEMBC(0x121)
+! CASEMBC(0x123) CASEMBC(0x1e5) CASEMBC(0x1e7) CASEMBC(0x1f5)
+! CASEMBC(0x1e21)
+! EMIT2('g'); EMITMBC(0x11d) EMITMBC(0x11f) EMITMBC(0x121)
+! EMITMBC(0x123) EMITMBC(0x1e5) EMITMBC(0x1e7)
+! EMITMBC(0x1f5) EMITMBC(0x1e21)
+! return OK;
+!
+! case 'h': CASEMBC(0x125) CASEMBC(0x127) CASEMBC(0x1e23)
+! CASEMBC(0x1e27) CASEMBC(0x1e29) CASEMBC(0x1e96)
+! EMIT2('h'); EMITMBC(0x125) EMITMBC(0x127) EMITMBC(0x1e23)
+! EMITMBC(0x1e27) EMITMBC(0x1e29) EMITMBC(0x1e96)
+ return OK;
+
+ case 'i': case 0354: case 0355: case 0356: case 0357:
+! CASEMBC(0x129) CASEMBC(0x12b) CASEMBC(0x12d) CASEMBC(0x12f)
+! CASEMBC(0x1d0) CASEMBC(0x1ec9)
+! EMIT2('i'); EMIT2(0354); EMIT2(0355); EMIT2(0356);
+! EMIT2(0357); EMITMBC(0x129) EMITMBC(0x12b)
+! EMITMBC(0x12d) EMITMBC(0x12f) EMITMBC(0x1d0)
+! EMITMBC(0x1ec9)
+! return OK;
+!
+! case 'j': CASEMBC(0x135) CASEMBC(0x1f0)
+! EMIT2('j'); EMITMBC(0x135) EMITMBC(0x1f0)
+! return OK;
+!
+! case 'k': CASEMBC(0x137) CASEMBC(0x1e9) CASEMBC(0x1e31)
+! CASEMBC(0x1e35)
+! EMIT2('k'); EMITMBC(0x137) EMITMBC(0x1e9) EMITMBC(0x1e31)
+! EMITMBC(0x1e35)
+! return OK;
+!
+! case 'l': CASEMBC(0x13a) CASEMBC(0x13c) CASEMBC(0x13e)
+! CASEMBC(0x140) CASEMBC(0x142) CASEMBC(0x1e3b)
+! EMIT2('l'); EMITMBC(0x13a) EMITMBC(0x13c) EMITMBC(0x13e)
+! EMITMBC(0x140) EMITMBC(0x142) EMITMBC(0x1e3b)
+! return OK;
+!
+! case 'm': CASEMBC(0x1e3f) CASEMBC(0x1e41)
+! EMIT2('m'); EMITMBC(0x1e3f) EMITMBC(0x1e41)
+ return OK;
+
+ case 'n': case 0361:
+! CASEMBC(0x144) CASEMBC(0x146) CASEMBC(0x148) CASEMBC(0x149)
+! CASEMBC(0x1e45) CASEMBC(0x1e49)
+! EMIT2('n'); EMIT2(0361); EMITMBC(0x144) EMITMBC(0x146)
+! EMITMBC(0x148) EMITMBC(0x149) EMITMBC(0x1e45)
+! EMITMBC(0x1e49)
+ return OK;
+
+ case 'o': case 0362: case 0363: case 0364: case 0365:
+! case 0366: case 0370:
+! CASEMBC(0x14d) CASEMBC(0x14f) CASEMBC(0x151) CASEMBC(0x1a1)
+! CASEMBC(0x1d2) CASEMBC(0x1eb) CASEMBC(0x1ed) CASEMBC(0x1ecf)
+! EMIT2('o'); EMIT2(0362); EMIT2(0363); EMIT2(0364);
+! EMIT2(0365); EMIT2(0366); EMIT2(0370);
+! EMITMBC(0x14d) EMITMBC(0x14f) EMITMBC(0x151)
+! EMITMBC(0x1a1) EMITMBC(0x1d2) EMITMBC(0x1eb)
+! EMITMBC(0x1ed) EMITMBC(0x1ecf)
+! return OK;
+!
+! case 'p': CASEMBC(0x1e55) CASEMBC(0x1e57)
+! EMIT2('p'); EMITMBC(0x1e55) EMITMBC(0x1e57)
+! return OK;
+!
+! case 'r': CASEMBC(0x155) CASEMBC(0x157) CASEMBC(0x159)
+! CASEMBC(0x1e59) CASEMBC(0x1e5f)
+! EMIT2('r'); EMITMBC(0x155) EMITMBC(0x157) EMITMBC(0x159)
+! EMITMBC(0x1e59) EMITMBC(0x1e5f)
+! return OK;
+!
+! case 's': CASEMBC(0x15b) CASEMBC(0x15d) CASEMBC(0x15f)
+! CASEMBC(0x161) CASEMBC(0x1e61)
+! EMIT2('s'); EMITMBC(0x15b) EMITMBC(0x15d) EMITMBC(0x15f)
+! EMITMBC(0x161) EMITMBC(0x1e61)
+! return OK;
+!
+! case 't': CASEMBC(0x163) CASEMBC(0x165) CASEMBC(0x167)
+! CASEMBC(0x1e6b) CASEMBC(0x1e6f) CASEMBC(0x1e97)
+! EMIT2('t'); EMITMBC(0x163) EMITMBC(0x165) EMITMBC(0x167)
+! EMITMBC(0x1e6b) EMITMBC(0x1e6f) EMITMBC(0x1e97)
+ return OK;
+
+ case 'u': case 0371: case 0372: case 0373: case 0374:
+! CASEMBC(0x169) CASEMBC(0x16b) CASEMBC(0x16d) CASEMBC(0x16f)
+! CASEMBC(0x171) CASEMBC(0x173) CASEMBC(0x1b0) CASEMBC(0x1d4)
+! CASEMBC(0x1ee7)
+! EMIT2('u'); EMIT2(0371); EMIT2(0372); EMIT2(0373);
+! EMIT2(0374); EMITMBC(0x169) EMITMBC(0x16b)
+! EMITMBC(0x16d) EMITMBC(0x16f) EMITMBC(0x171)
+! EMITMBC(0x173) EMITMBC(0x1b0) EMITMBC(0x1d4)
+! EMITMBC(0x1ee7)
+! return OK;
+!
+! case 'v': CASEMBC(0x1e7d)
+! EMIT2('v'); EMITMBC(0x1e7d)
+! return OK;
+!
+! case 'w': CASEMBC(0x175) CASEMBC(0x1e81) CASEMBC(0x1e83)
+! CASEMBC(0x1e85) CASEMBC(0x1e87) CASEMBC(0x1e98)
+! EMIT2('w'); EMITMBC(0x175) EMITMBC(0x1e81) EMITMBC(0x1e83)
+! EMITMBC(0x1e85) EMITMBC(0x1e87) EMITMBC(0x1e98)
+! return OK;
+!
+! case 'x': CASEMBC(0x1e8b) CASEMBC(0x1e8d)
+! EMIT2('x'); EMITMBC(0x1e8b) EMITMBC(0x1e8d)
+ return OK;
+
+ case 'y': case 0375: case 0377:
+! CASEMBC(0x177) CASEMBC(0x1e8f) CASEMBC(0x1e99)
+! CASEMBC(0x1ef3) CASEMBC(0x1ef7) CASEMBC(0x1ef9)
+! EMIT2('y'); EMIT2(0375); EMIT2(0377); EMITMBC(0x177)
+! EMITMBC(0x1e8f) EMITMBC(0x1e99) EMITMBC(0x1ef3)
+! EMITMBC(0x1ef7) EMITMBC(0x1ef9)
+! return OK;
+!
+! case 'z': CASEMBC(0x17a) CASEMBC(0x17c) CASEMBC(0x17e)
+! CASEMBC(0x1b6) CASEMBC(0x1e91) CASEMBC(0x1e95)
+! EMIT2('z'); EMITMBC(0x17a) EMITMBC(0x17c) EMITMBC(0x17e)
+! EMITMBC(0x1b6) EMITMBC(0x1e91) EMITMBC(0x1e95)
+ return OK;
+
+! /* default: character itself */
+ }
+ }
+
+! EMIT2(c);
+ return OK;
+ #undef EMIT2
++ #undef EMITMBC
+ }
+
+ /*
+*** ../vim-7.4.027/src/testdir/test44.in 2013-05-26 14:16:31.000000000 +0200
+--- src/testdir/test44.in 2013-09-19 16:49:14.000000000 +0200
+***************
+*** 1,9 ****
+--- 1,11 ----
+ Tests for regexp with multi-byte encoding and various magic settings.
+ Test matchstr() with a count and multi-byte chars.
++ See test99 for exactly the same test with re=2.
+
+ STARTTEST
+ :so mbyte.vim
+ :set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
++ :set re=1
+ /^1
+ /a*b\{2}c\+/e
+ x/\Md\*e\{2}f\+/e
+*** ../vim-7.4.027/src/testdir/test99.in 2013-09-19 16:59:30.000000000 +0200
+--- src/testdir/test99.in 2013-09-19 16:50:00.000000000 +0200
+***************
+*** 0 ****
+--- 1,68 ----
++ Tests for regexp with multi-byte encoding and various magic settings.
++ Test matchstr() with a count and multi-byte chars.
++ See test44 for exactly the same test with re=1.
++
++ STARTTEST
++ :so mbyte.vim
++ :set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
++ :set re=2
++ /^1
++ /a*b\{2}c\+/e
++ x/\Md\*e\{2}f\+/e
++ x:set nomagic
++ /g\*h\{2}i\+/e
++ x/\mj*k\{2}l\+/e
++ x/\vm*n{2}o+/e
++ x/\V^aa$
++ x:set magic
++ /\v(a)(b)\2\1\1/e
++ x/\V[ab]\(\[xy]\)\1
++ x:" Now search for multi-byte without composing char
++ /ม
++ x:" Now search for multi-byte with composing char
++ /ม่
++ x:" find word by change of word class
++ /ち\<カヨ\>は
++ x:" Test \%u, [\u] and friends
++ /\%u20ac
++ x/[\u4f7f\u5929]\+
++ 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:" Test backwards search from a multi-byte char
++ /x
++ x?.
++ x:let @w=':%s#comb[i]nations#œ̄ṣ́m̥̄ᾱ̆́#g'
++ :@w
++ :?^1?,$w! test.out
++ :e! test.out
++ G:put =matchstr(\"אבגד\", \".\", 0, 2) " ב
++ :put =matchstr(\"אבגד\", \"..\", 0, 2) " בג
++ :put =matchstr(\"אבגד\", \".\", 0, 0) " א
++ :put =matchstr(\"אבגד\", \".\", 4, -1) " ג
++ :w!
++ :qa!
++ ENDTEST
++
++ 1 a aa abb abbccc
++ 2 d dd dee deefff
++ 3 g gg ghh ghhiii
++ 4 j jj jkk jkklll
++ 5 m mm mnn mnnooo
++ 6 x ^aa$ x
++ 7 (a)(b) abbaa
++ 8 axx [ab]xx
++ 9 หม่x อมx
++ a อมx หม่x
++ b ちカヨは
++ c x ¬€x
++ d 天使x
++ 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źżžƶẑẕ
++ j 0123❤x
++ k combinations
+*** ../vim-7.4.027/src/testdir/test99.ok 2013-09-19 16:59:30.000000000 +0200
+--- src/testdir/test99.ok 2013-09-19 16:50:16.000000000 +0200
+***************
+*** 0 ****
+--- 1,24 ----
++ 1 a aa abb abbcc
++ 2 d dd dee deeff
++ 3 g gg ghh ghhii
++ 4 j jj jkk jkkll
++ 5 m mm mnn mnnoo
++ 6 x aa$ x
++ 7 (a)(b) abba
++ 8 axx ab]xx
++ 9 หม่x อx
++ a อมx หx
++ b カヨは
++ c x ¬x
++ d 使x
++ 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źżžƶẑ
++ j 012❤
++ k œ̄ṣ́m̥̄ᾱ̆́
++ ב
++ בג
++ א
++ ג
+*** ../vim-7.4.027/src/testdir/Make_amiga.mak 2013-07-09 13:40:02.000000000 +0200
+--- src/testdir/Make_amiga.mak 2013-09-19 16:51:48.000000000 +0200
+***************
+*** 33,39 ****
+ test76.out test77.out test78.out test79.out test80.out \
+ test81.out test82.out test83.out test84.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+! test94.out test95.out test96.out test97.out test98.out
+
+ .SUFFIXES: .in .out
+
+--- 33,40 ----
+ test76.out test77.out test78.out test79.out test80.out \
+ test81.out test82.out test83.out test84.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+! test94.out test95.out test96.out test97.out test98.out \
+! test99.out
+
+ .SUFFIXES: .in .out
+
+***************
+*** 148,150 ****
+--- 149,152 ----
+ test96.out: test96.in
+ test97.out: test97.in
+ test98.out: test98.in
++ test99.out: test99.in
+*** ../vim-7.4.027/src/testdir/Make_dos.mak 2013-07-09 13:40:30.000000000 +0200
+--- src/testdir/Make_dos.mak 2013-09-19 16:51:56.000000000 +0200
+***************
+*** 32,38 ****
+ test79.out test80.out test81.out test82.out test83.out \
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+! test94.out test95.out test96.out test98.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 32,38 ----
+ test79.out test80.out test81.out test82.out test83.out \
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+! test94.out test95.out test96.out test98.out test99.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.4.027/src/testdir/Make_ming.mak 2013-07-09 13:40:38.000000000 +0200
+--- src/testdir/Make_ming.mak 2013-09-19 16:52:01.000000000 +0200
+***************
+*** 52,58 ****
+ test79.out test80.out test81.out test82.out test83.out \
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+! test94.out test95.out test96.out test98.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 52,58 ----
+ test79.out test80.out test81.out test82.out test83.out \
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+! test94.out test95.out test96.out test98.out test99.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.4.027/src/testdir/Make_os2.mak 2013-07-09 13:40:43.000000000 +0200
+--- src/testdir/Make_os2.mak 2013-09-19 16:52:07.000000000 +0200
+***************
+*** 34,40 ****
+ test76.out test77.out test78.out test79.out test80.out \
+ test81.out test82.out test83.out test84.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+! test94.out test95.out test96.out test98.out
+
+ .SUFFIXES: .in .out
+
+--- 34,40 ----
+ test76.out test77.out test78.out test79.out test80.out \
+ test81.out test82.out test83.out test84.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+! test94.out test95.out test96.out test98.out test99.out
+
+ .SUFFIXES: .in .out
+
+*** ../vim-7.4.027/src/testdir/Make_vms.mms 2013-07-09 13:40:47.000000000 +0200
+--- src/testdir/Make_vms.mms 2013-09-19 16:52:13.000000000 +0200
+***************
+*** 4,10 ****
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2013 Jul 09
+ #
+ # 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: 2013 Sep 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.
+***************
+*** 78,84 ****
+ test77.out test78.out test79.out test80.out test81.out \
+ test82.out test83.out test84.out test88.out test89.out \
+ test90.out test91.out test92.out test93.out test94.out \
+! test95.out test96.out test97.out test98.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+--- 78,84 ----
+ test77.out test78.out test79.out test80.out test81.out \
+ test82.out test83.out test84.out test88.out test89.out \
+ test90.out test91.out test92.out test93.out test94.out \
+! test95.out test96.out test97.out test98.out test99.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+*** ../vim-7.4.027/src/testdir/Makefile 2013-08-10 14:20:20.000000000 +0200
+--- src/testdir/Makefile 2013-09-19 16:52:22.000000000 +0200
+***************
+*** 29,35 ****
+ test79.out test80.out test81.out test82.out test83.out \
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+! test94.out test95.out test96.out test97.out test98.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 29,36 ----
+ test79.out test80.out test81.out test82.out test83.out \
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+! test94.out test95.out test96.out test97.out test98.out \
+! test99.out
+
+ SCRIPTS_GUI = test16.out
+
+*** ../vim-7.4.027/src/version.c 2013-09-08 20:00:45.000000000 +0200
+--- src/version.c 2013-09-19 13:54:35.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 28,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+232. You start conversations with, "Have you gotten an ISDN line?"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.029 b/patches/source/vim/patches/7.4.029
new file mode 100644
index 00000000..b87e3a35
--- /dev/null
+++ b/patches/source/vim/patches/7.4.029
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.029
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.029
+Problem: An error in a pattern is reported twice.
+Solution: Remove the retry with the backtracking engine, it won't work.
+Files: src/regexp.c
+
+
+*** ../vim-7.4.028/src/regexp.c 2013-08-25 17:01:36.000000000 +0200
+--- src/regexp.c 2013-09-19 17:03:31.000000000 +0200
+***************
+*** 8016,8027 ****
+ }
+ #endif
+ /*
+! * If NFA engine failed, then revert to the backtracking engine.
+! * Except when there was a syntax error, which was properly handled by
+! * NFA engine.
+! */
+ if (regexp_engine == AUTOMATIC_ENGINE)
+ prog = bt_regengine.regcomp(expr, re_flags);
+ }
+
+ return prog;
+--- 8016,8026 ----
+ }
+ #endif
+ /*
+! * If the NFA engine failed, the backtracking engine won't work either.
+! *
+ if (regexp_engine == AUTOMATIC_ENGINE)
+ prog = bt_regengine.regcomp(expr, re_flags);
++ */
+ }
+
+ return prog;
+*** ../vim-7.4.028/src/version.c 2013-09-19 17:00:14.000000000 +0200
+--- src/version.c 2013-09-19 17:01:13.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 29,
+ /**/
+
+--
+The term "free software" is defined by Richard M. Stallman as
+being software that isn't necessarily for free. Confusing?
+Let's call it "Stallman software" then!
+ -- 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/patches/source/vim/patches/7.4.030 b/patches/source/vim/patches/7.4.030
new file mode 100644
index 00000000..d685df67
--- /dev/null
+++ b/patches/source/vim/patches/7.4.030
@@ -0,0 +1,109 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.030
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.030
+Problem: The -mno-cygwin argument is no longer supported by Cygwin.
+Solution: Remove the arguments. (Steve Hall)
+Files: src/GvimExt/Make_cyg.mak, src/Make_cyg.mak, src/xxd/Make_cyg.mak
+
+
+*** ../vim-7.4.029/src/GvimExt/Make_cyg.mak 2011-09-30 16:45:49.000000000 +0200
+--- src/GvimExt/Make_cyg.mak 2013-09-19 20:46:46.000000000 +0200
+***************
+*** 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
+*** ../vim-7.4.029/src/Make_cyg.mak 2013-07-06 13:32:11.000000000 +0200
+--- src/Make_cyg.mak 2013-09-19 20:46:55.000000000 +0200
+***************
+*** 1,6 ****
+ #
+ # Makefile for VIM on Win32, using Cygnus gcc
+! # Last updated by Dan Sharp. Last Change: 2013 Apr 22
+ #
+ # Also read INSTALLpc.txt!
+ #
+--- 1,6 ----
+ #
+ # Makefile for VIM on Win32, using Cygnus gcc
+! # Last updated by Dan Sharp. Last Change: 2013 Sep 19
+ #
+ # Also read INSTALLpc.txt!
+ #
+***************
+*** 439,446 ****
+ ##############################
+ ifeq (yes, $(USEDLL))
+ DEFINES += -D_MAX_PATH=256 -D__CYGWIN__
+- else
+- INCLUDES += -mno-cygwin
+ endif
+
+ ##############################
+--- 439,444 ----
+*** ../vim-7.4.029/src/xxd/Make_cyg.mak 2010-05-15 13:04:06.000000000 +0200
+--- src/xxd/Make_cyg.mak 2013-09-19 20:47:05.000000000 +0200
+***************
+*** 8,14 ****
+ DEFINES =
+ LIBS = -lc
+ else
+! DEFINES = -mno-cygwin
+ LIBS =
+ endif
+
+--- 8,14 ----
+ DEFINES =
+ LIBS = -lc
+ else
+! DEFINES =
+ LIBS =
+ endif
+
+*** ../vim-7.4.029/src/version.c 2013-09-19 17:03:57.000000000 +0200
+--- src/version.c 2013-09-19 20:46:32.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 30,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+237. You tattoo your email address on your forehead.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.031 b/patches/source/vim/patches/7.4.031
new file mode 100644
index 00000000..f4e49d86
--- /dev/null
+++ b/patches/source/vim/patches/7.4.031
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.031
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.031
+Problem: ":diffoff!" resets options even when 'diff' is not set. (Charles
+ Cooper)
+Solution: Only resets related options in a window where 'diff' is set.
+Files: src/diff.c
+
+
+*** ../vim-7.4.030/src/diff.c 2013-07-17 13:43:15.000000000 +0200
+--- src/diff.c 2013-09-20 19:58:47.000000000 +0200
+***************
+*** 1203,1209 ****
+
+ for (wp = firstwin; wp != NULL; wp = wp->w_next)
+ {
+! if (wp == curwin || (eap->forceit && wp->w_p_diff))
+ {
+ /* Set 'diff', 'scrollbind' off and 'wrap' on. If option values
+ * were saved in diff_win_options() restore them. */
+--- 1203,1209 ----
+
+ for (wp = firstwin; wp != NULL; wp = wp->w_next)
+ {
+! if (eap->forceit ? wp->w_p_diff : wp == curwin)
+ {
+ /* Set 'diff', 'scrollbind' off and 'wrap' on. If option values
+ * were saved in diff_win_options() restore them. */
+*** ../vim-7.4.030/src/version.c 2013-09-19 20:48:59.000000000 +0200
+--- src/version.c 2013-09-20 19:59:45.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 31,
+ /**/
+
+--
+"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/patches/source/vim/patches/7.4.032 b/patches/source/vim/patches/7.4.032
new file mode 100644
index 00000000..9e25dc4e
--- /dev/null
+++ b/patches/source/vim/patches/7.4.032
@@ -0,0 +1,82 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.032
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.032
+Problem: NFA engine does not match the NUL character. (Jonathon Merz)
+Solution: Ues 0x0a instead of NUL. (Christian Brabandt)
+Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok
+
+
+*** ../vim-7.4.031/src/regexp_nfa.c 2013-09-19 17:00:14.000000000 +0200
+--- src/regexp_nfa.c 2013-09-22 13:53:46.000000000 +0200
+***************
+*** 1383,1390 ****
+ EMSG2_RET_FAIL(
+ _("E678: Invalid character after %s%%[dxouU]"),
+ reg_magic == MAGIC_ALL);
+ /* TODO: what if a composing character follows? */
+! EMIT(nr);
+ }
+ break;
+
+--- 1383,1391 ----
+ EMSG2_RET_FAIL(
+ _("E678: Invalid character after %s%%[dxouU]"),
+ reg_magic == MAGIC_ALL);
++ /* A NUL is stored in the text as NL */
+ /* TODO: what if a composing character follows? */
+! EMIT(nr == 0 ? 0x0a : nr);
+ }
+ break;
+
+*** ../vim-7.4.031/src/testdir/test64.in 2013-09-05 21:15:38.000000000 +0200
+--- src/testdir/test64.in 2013-09-22 13:51:53.000000000 +0200
+***************
+*** 373,378 ****
+--- 373,379 ----
+ :call add(tl, [2, '\%x20', 'yes no', ' '])
+ :call add(tl, [2, '\%u0020', 'yes no', ' '])
+ :call add(tl, [2, '\%U00000020', 'yes no', ' '])
++ :call add(tl, [2, '\%d0', "yes\x0ano", "\x0a"])
+ :"
+ :""""" \%[abc]
+ :call add(tl, [2, 'foo\%[bar]', 'fobar'])
+*** ../vim-7.4.031/src/testdir/test64.ok 2013-09-05 21:15:38.000000000 +0200
+--- src/testdir/test64.ok 2013-09-22 13:52:41.000000000 +0200
+***************
+*** 863,868 ****
+--- 863,871 ----
+ OK 0 - \%U00000020
+ OK 1 - \%U00000020
+ OK 2 - \%U00000020
++ OK 0 - \%d0
++ OK 1 - \%d0
++ OK 2 - \%d0
+ OK 0 - foo\%[bar]
+ OK 1 - foo\%[bar]
+ OK 2 - foo\%[bar]
+*** ../vim-7.4.031/src/version.c 2013-09-20 20:13:48.000000000 +0200
+--- src/version.c 2013-09-22 13:56:45.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 32,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.033 b/patches/source/vim/patches/7.4.033
new file mode 100644
index 00000000..7eba8a0a
--- /dev/null
+++ b/patches/source/vim/patches/7.4.033
@@ -0,0 +1,116 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.033
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.033
+Problem: When the terminal has only 20 lines test 92 and 93 overwrite the
+ input file.
+Solution: Explicitly write test.out. Check that the terminal is large enough
+ to run the tests. (Hirohito Higashi)
+Files: src/testdir/test92.in, src/testdir/test93.in,
+ src/testdir/test1.in, src/testdir/Makefile
+
+
+*** ../vim-7.4.032/src/testdir/test92.in 2013-04-18 23:33:45.000000000 +0200
+--- src/testdir/test92.in 2013-09-22 14:45:06.000000000 +0200
+***************
+*** 33,39 ****
+ :mksession! test.out
+ :new test.out
+ :v/\(^ *normal! 0\|^ *exe 'normal!\)/d
+! :w
+ :qa!
+ ENDTEST
+
+--- 33,39 ----
+ :mksession! test.out
+ :new test.out
+ :v/\(^ *normal! 0\|^ *exe 'normal!\)/d
+! :w! test.out
+ :qa!
+ ENDTEST
+
+*** ../vim-7.4.032/src/testdir/test93.in 2013-02-26 17:13:01.000000000 +0100
+--- src/testdir/test93.in 2013-09-22 14:45:17.000000000 +0200
+***************
+*** 33,39 ****
+ :mksession! test.out
+ :new test.out
+ :v/\(^ *normal! 0\|^ *exe 'normal!\)/d
+! :w
+ :qa!
+ ENDTEST
+
+--- 33,39 ----
+ :mksession! test.out
+ :new test.out
+ :v/\(^ *normal! 0\|^ *exe 'normal!\)/d
+! :w! test.out
+ :qa!
+ ENDTEST
+
+*** ../vim-7.4.032/src/testdir/test1.in 2012-04-05 16:37:37.000000000 +0200
+--- src/testdir/test1.in 2013-09-22 14:52:43.000000000 +0200
+***************
+*** 18,23 ****
+--- 18,27 ----
+ Similar logic is applied to the +lua feature, using lua.vim.
+
+ STARTTEST
++ :" If columns or lines are too small, create wrongtermsize.
++ :" (Some tests will fail. When columns and/or lines are small)
++ :if &lines < 24 || &columns < 80 | sp another | w! wrongtermsize | qa! | endif
++ :"
+ :" Write a single line to test.out to check if testing works at all.
+ :%d
+ athis is a test:w! test.out
+*** ../vim-7.4.032/src/testdir/Makefile 2013-09-19 17:00:14.000000000 +0200
+--- src/testdir/Makefile 2013-09-22 14:54:39.000000000 +0200
+***************
+*** 58,66 ****
+ -rm -rf *.out *.failed *.rej *.orig test.log $(RM_ON_RUN) $(RM_ON_START) valgrind.*
+
+ test1.out: test1.in
+! -rm -rf $*.failed $(RM_ON_RUN) $(RM_ON_START)
+ $(RUN_VIM) $*.in
+! @/bin/sh -c "if diff test.out $*.ok; \
+ then mv -f test.out $*.out; \
+ else echo; \
+ echo test1 FAILED - Something basic is wrong; \
+--- 58,70 ----
+ -rm -rf *.out *.failed *.rej *.orig test.log $(RM_ON_RUN) $(RM_ON_START) valgrind.*
+
+ test1.out: test1.in
+! -rm -rf $*.failed $(RM_ON_RUN) $(RM_ON_START) wrongtermsize
+ $(RUN_VIM) $*.in
+! @/bin/sh -c "if test -e wrongtermsize; \
+! then echo; \
+! echo test1 FAILED - terminal size must be 80x24 or larger; \
+! echo; exit 1; \
+! elif diff test.out $*.ok; \
+ then mv -f test.out $*.out; \
+ else echo; \
+ echo test1 FAILED - Something basic is wrong; \
+*** ../vim-7.4.032/src/version.c 2013-09-22 13:57:19.000000000 +0200
+--- src/version.c 2013-09-22 15:02:04.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 33,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.034 b/patches/source/vim/patches/7.4.034
new file mode 100644
index 00000000..f111e116
--- /dev/null
+++ b/patches/source/vim/patches/7.4.034
@@ -0,0 +1,180 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.034
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.034
+Problem: Using "p" in Visual block mode only changes the first line.
+Solution: Repeat the put in all text in the block. (Christian Brabandt)
+Files: runtime/doc/change.txt, src/ops.c, src/normal.c,
+ src/testdir/test20.in, src/testdir/test20.ok
+
+
+*** ../vim-7.4.033/runtime/doc/change.txt 2013-08-10 13:24:52.000000000 +0200
+--- runtime/doc/change.txt 2013-09-22 15:12:20.000000000 +0200
+***************
+*** 1069,1074 ****
+--- 1069,1079 ----
+ replace and use "0p . You can repeat this as many times as you like, the
+ unnamed register will be changed each time.
+
++ When you use a blockwise Visual mode command and yank only a single line into
++ a register, a paste on a visual selected area will paste that single line on
++ each of the selected lines (thus replacing the blockwise selected region by a
++ block of the pasted line).
++
+ *blockwise-register*
+ If you use a blockwise Visual mode command to get the text into the register,
+ the block of text will be inserted before ("P") or after ("p") the cursor
+*** ../vim-7.4.033/src/ops.c 2013-08-09 19:34:32.000000000 +0200
+--- src/ops.c 2013-09-22 15:18:03.000000000 +0200
+***************
+*** 3776,3800 ****
+ */
+ if (y_type == MCHAR && y_size == 1)
+ {
+! totlen = count * yanklen;
+! if (totlen)
+! {
+! oldp = ml_get(lnum);
+! newp = alloc_check((unsigned)(STRLEN(oldp) + totlen + 1));
+! if (newp == NULL)
+! goto end; /* alloc() will give error message */
+! mch_memmove(newp, oldp, (size_t)col);
+! ptr = newp + col;
+! for (i = 0; i < count; ++i)
+ {
+! mch_memmove(ptr, y_array[0], (size_t)yanklen);
+! ptr += yanklen;
+ }
+! STRMOVE(ptr, oldp + col);
+! ml_replace(lnum, newp, FALSE);
+! /* Put cursor on last putted char. */
+! curwin->w_cursor.col += (colnr_T)(totlen - 1);
+! }
+ curbuf->b_op_end = curwin->w_cursor;
+ /* For "CTRL-O p" in Insert mode, put cursor after last char */
+ if (totlen && (restart_edit != 0 || (flags & PUT_CURSEND)))
+--- 3776,3817 ----
+ */
+ if (y_type == MCHAR && y_size == 1)
+ {
+! do {
+! totlen = count * yanklen;
+! if (totlen > 0)
+ {
+! oldp = ml_get(lnum);
+! newp = alloc_check((unsigned)(STRLEN(oldp) + totlen + 1));
+! if (newp == NULL)
+! goto end; /* alloc() gave an error message */
+! mch_memmove(newp, oldp, (size_t)col);
+! ptr = newp + col;
+! for (i = 0; i < count; ++i)
+! {
+! mch_memmove(ptr, y_array[0], (size_t)yanklen);
+! ptr += yanklen;
+! }
+! STRMOVE(ptr, oldp + col);
+! ml_replace(lnum, newp, FALSE);
+! /* Place cursor on last putted char. */
+! if (lnum == curwin->w_cursor.lnum)
+! curwin->w_cursor.col += (colnr_T)(totlen - 1);
+ }
+! #ifdef FEAT_VISUAL
+! if (VIsual_active)
+! lnum++;
+! #endif
+! } while (
+! #ifdef FEAT_VISUAL
+! VIsual_active && lnum <= curbuf->b_visual.vi_end.lnum
+! #else
+! FALSE /* stop after 1 paste */
+! #endif
+! );
+! #ifdef FEAT_VISUAL
+! VIsual_active = FALSE;
+! #endif
+!
+ curbuf->b_op_end = curwin->w_cursor;
+ /* For "CTRL-O p" in Insert mode, put cursor after last char */
+ if (totlen && (restart_edit != 0 || (flags & PUT_CURSEND)))
+*** ../vim-7.4.033/src/normal.c 2013-07-14 13:24:37.000000000 +0200
+--- src/normal.c 2013-09-22 15:15:18.000000000 +0200
+***************
+*** 9518,9523 ****
+--- 9518,9525 ----
+ /* cursor is at the end of the line or end of file, put
+ * forward. */
+ dir = FORWARD;
++ /* May have been reset in do_put(). */
++ VIsual_active = TRUE;
+ }
+ #endif
+ do_put(cap->oap->regname, dir, cap->count1, flags);
+*** ../vim-7.4.033/src/testdir/test20.in 2010-05-15 13:04:10.000000000 +0200
+--- src/testdir/test20.in 2013-09-22 15:11:37.000000000 +0200
+***************
+*** 9,19 ****
+ @auY:quit!
+ GP
+ /start here$
+! jjlld
+! :/here$/,$-1w! test.out
+ :qa!
+ ENDTEST
+
+ test text test tex start here
+ some text
+ test text
+--- 9,25 ----
+ @auY:quit!
+ GP
+ /start here$
+! "by$jjlld
+! /456$
+! jj"bP
+! :/56$/,$-1w! test.out
+ :qa!
+ ENDTEST
+
++ 123456
++ 234567
++ 345678
++
+ test text test tex start here
+ some text
+ test text
+*** ../vim-7.4.033/src/testdir/test20.ok 2010-05-15 13:04:10.000000000 +0200
+--- src/testdir/test20.ok 2013-09-22 15:11:37.000000000 +0200
+***************
+*** 1,3 ****
+--- 1,7 ----
++ 123start here56
++ 234start here67
++ 345start here78
++
+ test text test tex rt here
+ somext
+ tesext
+*** ../vim-7.4.033/src/version.c 2013-09-22 15:03:34.000000000 +0200
+--- src/version.c 2013-09-22 15:14:04.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 34,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+249. You've forgotten what the outside 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/patches/source/vim/patches/7.4.035 b/patches/source/vim/patches/7.4.035
new file mode 100644
index 00000000..9c4664a6
--- /dev/null
+++ b/patches/source/vim/patches/7.4.035
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.035
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.035
+Problem: MS-Windows: The mouse pointer flickers when going from command
+ line mode to Normal mode.
+Solution: Check for WM_NCMOUSEMOVE. (Ken Takata)
+Files: src/gui_w48.c
+
+
+*** ../vim-7.4.034/src/gui_w48.c 2013-08-10 13:36:45.000000000 +0200
+--- src/gui_w48.c 2013-09-22 15:41:56.000000000 +0200
+***************
+*** 1008,1014 ****
+ static LPARAM last_lParam = 0L;
+
+ /* We sometimes get a mousemove when the mouse didn't move... */
+! if (uMsg == WM_MOUSEMOVE)
+ {
+ if (lParam == last_lParam)
+ return;
+--- 1008,1014 ----
+ static LPARAM last_lParam = 0L;
+
+ /* We sometimes get a mousemove when the mouse didn't move... */
+! if (uMsg == WM_MOUSEMOVE || uMsg == WM_NCMOUSEMOVE)
+ {
+ if (lParam == last_lParam)
+ return;
+*** ../vim-7.4.034/src/version.c 2013-09-22 15:23:38.000000000 +0200
+--- src/version.c 2013-09-22 15:41:29.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 35,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+251. You've never seen your closest friends who usually live WAY too far away.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.036 b/patches/source/vim/patches/7.4.036
new file mode 100644
index 00000000..49afc269
--- /dev/null
+++ b/patches/source/vim/patches/7.4.036
@@ -0,0 +1,273 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.036
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.036
+Problem: NFA engine does not capture group correctly when using \@>. (ZyX)
+Solution: Copy submatches before doing the recursive match.
+Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok
+
+
+*** ../vim-7.4.035/src/regexp_nfa.c 2013-09-22 13:57:19.000000000 +0200
+--- src/regexp_nfa.c 2013-09-25 16:35:54.000000000 +0200
+***************
+*** 36,42 ****
+ {
+ NFA_SPLIT = -1024,
+ NFA_MATCH,
+! NFA_SKIP_CHAR, /* matches a 0-length char */
+
+ NFA_START_COLL, /* [abc] start */
+ NFA_END_COLL, /* [abc] end */
+--- 36,42 ----
+ {
+ NFA_SPLIT = -1024,
+ NFA_MATCH,
+! NFA_EMPTY, /* matches 0-length */
+
+ NFA_START_COLL, /* [abc] start */
+ NFA_END_COLL, /* [abc] end */
+***************
+*** 2005,2012 ****
+ {
+ /* Ignore result of previous call to nfa_regatom() */
+ post_ptr = post_start + my_post_start;
+! /* NFA_SKIP_CHAR has 0-length and works everywhere */
+! EMIT(NFA_SKIP_CHAR);
+ return OK;
+ }
+
+--- 2005,2012 ----
+ {
+ /* Ignore result of previous call to nfa_regatom() */
+ post_ptr = post_start + my_post_start;
+! /* NFA_EMPTY is 0-length and works everywhere */
+! EMIT(NFA_EMPTY);
+ return OK;
+ }
+
+***************
+*** 2170,2185 ****
+ old_post_pos = (int)(post_ptr - post_start);
+ if (nfa_regconcat() == FAIL)
+ return FAIL;
+! /* if concat is empty, skip a input char. But do emit a node */
+ if (old_post_pos == (int)(post_ptr - post_start))
+! EMIT(NFA_SKIP_CHAR);
+ EMIT(NFA_CONCAT);
+ ch = peekchr();
+ }
+
+! /* Even if a branch is empty, emit one node for it */
+ if (old_post_pos == (int)(post_ptr - post_start))
+! EMIT(NFA_SKIP_CHAR);
+
+ return OK;
+ }
+--- 2170,2185 ----
+ old_post_pos = (int)(post_ptr - post_start);
+ if (nfa_regconcat() == FAIL)
+ return FAIL;
+! /* if concat is empty do emit a node */
+ if (old_post_pos == (int)(post_ptr - post_start))
+! EMIT(NFA_EMPTY);
+ EMIT(NFA_CONCAT);
+ ch = peekchr();
+ }
+
+! /* if a branch is empty, emit one node for it */
+ if (old_post_pos == (int)(post_ptr - post_start))
+! EMIT(NFA_EMPTY);
+
+ return OK;
+ }
+***************
+*** 2423,2429 ****
+ case NFA_STAR_NONGREEDY: STRCPY(code, "NFA_STAR_NONGREEDY "); break;
+ case NFA_QUEST: STRCPY(code, "NFA_QUEST"); break;
+ case NFA_QUEST_NONGREEDY: STRCPY(code, "NFA_QUEST_NON_GREEDY"); break;
+! case NFA_SKIP_CHAR: STRCPY(code, "NFA_SKIP_CHAR"); break;
+ case NFA_OR: STRCPY(code, "NFA_OR"); break;
+
+ case NFA_START_COLL: STRCPY(code, "NFA_START_COLL"); break;
+--- 2423,2429 ----
+ case NFA_STAR_NONGREEDY: STRCPY(code, "NFA_STAR_NONGREEDY "); break;
+ case NFA_QUEST: STRCPY(code, "NFA_QUEST"); break;
+ case NFA_QUEST_NONGREEDY: STRCPY(code, "NFA_QUEST_NON_GREEDY"); break;
+! case NFA_EMPTY: STRCPY(code, "NFA_EMPTY"); break;
+ case NFA_OR: STRCPY(code, "NFA_OR"); break;
+
+ case NFA_START_COLL: STRCPY(code, "NFA_START_COLL"); break;
+***************
+*** 3067,3073 ****
+ case NFA_ZSTART:
+ case NFA_ZEND:
+ case NFA_OPT_CHARS:
+! case NFA_SKIP_CHAR:
+ case NFA_START_PATTERN:
+ case NFA_END_PATTERN:
+ case NFA_COMPOSING:
+--- 3067,3073 ----
+ case NFA_ZSTART:
+ case NFA_ZEND:
+ case NFA_OPT_CHARS:
+! case NFA_EMPTY:
+ case NFA_START_PATTERN:
+ case NFA_END_PATTERN:
+ case NFA_COMPOSING:
+***************
+*** 3265,3279 ****
+ PUSH(frag(e1.start, e2.out));
+ break;
+
+! case NFA_SKIP_CHAR:
+! /* Symbol of 0-length, Used in a repetition
+! * with max/min count of 0 */
+ if (nfa_calc_size == TRUE)
+ {
+ nstate++;
+ break;
+ }
+! s = alloc_state(NFA_SKIP_CHAR, NULL, NULL);
+ if (s == NULL)
+ goto theend;
+ PUSH(frag(s, list1(&s->out)));
+--- 3265,3278 ----
+ PUSH(frag(e1.start, e2.out));
+ break;
+
+! case NFA_EMPTY:
+! /* 0-length, used in a repetition with max/min count of 0 */
+ if (nfa_calc_size == TRUE)
+ {
+ nstate++;
+ break;
+ }
+! s = alloc_state(NFA_EMPTY, NULL, NULL);
+ if (s == NULL)
+ goto theend;
+ PUSH(frag(s, list1(&s->out)));
+***************
+*** 4209,4215 ****
+ case NFA_MOPEN:
+ case NFA_ZEND:
+ case NFA_SPLIT:
+! case NFA_SKIP_CHAR:
+ /* These nodes are not added themselves but their "out" and/or
+ * "out1" may be added below. */
+ break;
+--- 4208,4214 ----
+ case NFA_MOPEN:
+ case NFA_ZEND:
+ case NFA_SPLIT:
+! case NFA_EMPTY:
+ /* These nodes are not added themselves but their "out" and/or
+ * "out1" may be added below. */
+ break;
+***************
+*** 4337,4343 ****
+ subs = addstate(l, state->out1, subs, pim, off);
+ break;
+
+! case NFA_SKIP_CHAR:
+ case NFA_NOPEN:
+ case NFA_NCLOSE:
+ subs = addstate(l, state->out, subs, pim, off);
+--- 4336,4342 ----
+ subs = addstate(l, state->out1, subs, pim, off);
+ break;
+
+! case NFA_EMPTY:
+ case NFA_NOPEN:
+ case NFA_NCLOSE:
+ subs = addstate(l, state->out, subs, pim, off);
+***************
+*** 5604,5612 ****
+ {
+ int in_use = m->norm.in_use;
+
+! /* Copy submatch info for the recursive call, so that
+! * \1 can be matched. */
+ copy_sub_off(&m->norm, &t->subs.norm);
+
+ /*
+ * First try matching the invisible match, then what
+--- 5603,5615 ----
+ {
+ int in_use = m->norm.in_use;
+
+! /* Copy submatch info for the recursive call, opposite
+! * of what happens on success below. */
+ copy_sub_off(&m->norm, &t->subs.norm);
++ #ifdef FEAT_SYN_HL
++ if (nfa_has_zsubexpr)
++ copy_sub_off(&m->synt, &t->subs.synt);
++ #endif
+
+ /*
+ * First try matching the invisible match, then what
+***************
+*** 5713,5718 ****
+--- 5716,5728 ----
+ #endif
+ break;
+ }
++ /* Copy submatch info to the recursive call, opposite of what
++ * happens afterwards. */
++ copy_sub_off(&m->norm, &t->subs.norm);
++ #ifdef FEAT_SYN_HL
++ if (nfa_has_zsubexpr)
++ copy_sub_off(&m->synt, &t->subs.synt);
++ #endif
+
+ /* First try matching the pattern. */
+ result = recursive_regmatch(t->state, NULL, prog,
+*** ../vim-7.4.035/src/testdir/test64.in 2013-09-22 13:57:19.000000000 +0200
+--- src/testdir/test64.in 2013-09-25 15:51:12.000000000 +0200
+***************
+*** 430,435 ****
+--- 430,436 ----
+ :call add(tl, [2, '\(a*\)\@>a', 'aaaa'])
+ :call add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa'])
+ :call add(tl, [2, '^\(.\{-}b\)\@>.', ' abcbd', ' abc', ' ab'])
++ :call add(tl, [2, '\(.\{-}\)\(\)\@>$', 'abc', 'abc', 'abc', ''])
+ :" TODO: BT engine does not restore submatch after failure
+ :call add(tl, [1, '\(a*\)\@>a\|a\+', 'aaaa', 'aaaa'])
+ :"
+*** ../vim-7.4.035/src/testdir/test64.ok 2013-09-22 13:57:19.000000000 +0200
+--- src/testdir/test64.ok 2013-09-25 16:39:31.000000000 +0200
+***************
+*** 992,997 ****
+--- 992,1000 ----
+ OK 0 - ^\(.\{-}b\)\@>.
+ OK 1 - ^\(.\{-}b\)\@>.
+ OK 2 - ^\(.\{-}b\)\@>.
++ OK 0 - \(.\{-}\)\(\)\@>$
++ OK 1 - \(.\{-}\)\(\)\@>$
++ OK 2 - \(.\{-}\)\(\)\@>$
+ OK 0 - \(a*\)\@>a\|a\+
+ OK 2 - \(a*\)\@>a\|a\+
+ OK 0 - \_[^8-9]\+
+*** ../vim-7.4.035/src/version.c 2013-09-22 15:43:34.000000000 +0200
+--- src/version.c 2013-09-25 16:40:01.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 36,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.037 b/patches/source/vim/patches/7.4.037
new file mode 100644
index 00000000..3c6369b7
--- /dev/null
+++ b/patches/source/vim/patches/7.4.037
@@ -0,0 +1,130 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.037
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.037
+Problem: Using "\ze" in a sub-pattern does not result in the end of the
+ match to be set. (Axel Bender)
+Solution: Copy the end of match position when a recursive match was
+ successful.
+Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok
+
+
+*** ../vim-7.4.036/src/regexp_nfa.c 2013-09-25 16:41:50.000000000 +0200
+--- src/regexp_nfa.c 2013-09-25 18:09:59.000000000 +0200
+***************
+*** 3822,3827 ****
+--- 3822,3828 ----
+ static void clear_sub __ARGS((regsub_T *sub));
+ static void copy_sub __ARGS((regsub_T *to, regsub_T *from));
+ static void copy_sub_off __ARGS((regsub_T *to, regsub_T *from));
++ static void copy_ze_off __ARGS((regsub_T *to, regsub_T *from));
+ static int sub_equal __ARGS((regsub_T *sub1, regsub_T *sub2));
+ static int match_backref __ARGS((regsub_T *sub, int subidx, int *bytelen));
+ static int has_state_with_pos __ARGS((nfa_list_T *l, nfa_state_T *state, regsubs_T *subs, nfa_pim_T *pim));
+***************
+*** 3909,3914 ****
+--- 3910,3938 ----
+ }
+
+ /*
++ * Like copy_sub() but only do the end of the main match if \ze is present.
++ */
++ static void
++ copy_ze_off(to, from)
++ regsub_T *to;
++ regsub_T *from;
++ {
++ if (nfa_has_zend)
++ {
++ if (REG_MULTI)
++ {
++ if (from->list.multi[0].end.lnum >= 0)
++ to->list.multi[0].end = from->list.multi[0].end;
++ }
++ else
++ {
++ if (from->list.line[0].end != NULL)
++ to->list.line[0].end = from->list.line[0].end;
++ }
++ }
++ }
++
++ /*
+ * Return TRUE if "sub1" and "sub2" have the same start positions.
+ */
+ static int
+***************
+*** 5308,5313 ****
+--- 5332,5338 ----
+ * When "nfa_endp" is not NULL it is a required end-of-match position.
+ *
+ * Return TRUE if there is a match, FALSE otherwise.
++ * When there is a match "submatch" contains the positions.
+ * Note: Caller must ensure that: start != NULL.
+ */
+ static int
+***************
+*** 5633,5638 ****
+--- 5658,5666 ----
+ if (nfa_has_zsubexpr)
+ copy_sub_off(&t->subs.synt, &m->synt);
+ #endif
++ /* If the pattern has \ze and it matched in the
++ * sub pattern, use it. */
++ copy_ze_off(&t->subs.norm, &m->norm);
+
+ /* t->state->out1 is the corresponding
+ * END_INVISIBLE node; Add its out to the current
+*** ../vim-7.4.036/src/testdir/test64.in 2013-09-25 16:41:50.000000000 +0200
+--- src/testdir/test64.in 2013-09-25 18:09:16.000000000 +0200
+***************
+*** 425,430 ****
+--- 425,431 ----
+ :"
+ :" complicated look-behind match
+ :call add(tl, [2, '\(r\@<=\|\w\@<!\)\/', 'x = /word/;', '/'])
++ :call add(tl, [2, '^[a-z]\+\ze \&\(asdf\)\@<!', 'foo bar', 'foo'])
+ :"
+ :""""" \@>
+ :call add(tl, [2, '\(a*\)\@>a', 'aaaa'])
+*** ../vim-7.4.036/src/testdir/test64.ok 2013-09-25 16:41:50.000000000 +0200
+--- src/testdir/test64.ok 2013-09-25 18:10:05.000000000 +0200
+***************
+*** 983,988 ****
+--- 983,991 ----
+ OK 0 - \(r\@<=\|\w\@<!\)\/
+ OK 1 - \(r\@<=\|\w\@<!\)\/
+ OK 2 - \(r\@<=\|\w\@<!\)\/
++ OK 0 - ^[a-z]\+\ze \&\(asdf\)\@<!
++ OK 1 - ^[a-z]\+\ze \&\(asdf\)\@<!
++ OK 2 - ^[a-z]\+\ze \&\(asdf\)\@<!
+ OK 0 - \(a*\)\@>a
+ OK 1 - \(a*\)\@>a
+ OK 2 - \(a*\)\@>a
+*** ../vim-7.4.036/src/version.c 2013-09-25 16:41:50.000000000 +0200
+--- src/version.c 2013-09-25 18:14:36.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 37,
+ /**/
+
+--
+MAN: You don't frighten us, English pig-dog! Go and boil your bottoms,
+ son of a silly person. I blow my nose on you, so-called Arthur-king,
+ you and your silly English K...kaniggets.
+ He puts hands to his ears and blows a raspberry.
+ "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/patches/source/vim/patches/7.4.038 b/patches/source/vim/patches/7.4.038
new file mode 100644
index 00000000..0aae370e
--- /dev/null
+++ b/patches/source/vim/patches/7.4.038
@@ -0,0 +1,116 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.038
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.038
+Problem: Using "zw" and "zg" when 'spell' is off give a confusing error
+ message. (Gary Johnson)
+Solution: Ignore the error when locating the word. Explicitly mention what
+ word was added. (Christian Brabandt)
+Files: src/normal.c, src/spell.c
+
+
+*** ../vim-7.4.037/src/normal.c 2013-09-22 15:23:38.000000000 +0200
+--- src/normal.c 2013-09-25 18:54:08.000000000 +0200
+***************
+*** 5246,5253 ****
+ {
+ pos_T pos = curwin->w_cursor;
+
+! /* Find bad word under the cursor. */
+ len = spell_move_to(curwin, FORWARD, TRUE, TRUE, NULL);
+ if (len != 0 && curwin->w_cursor.col <= pos.col)
+ ptr = ml_get_pos(&curwin->w_cursor);
+ curwin->w_cursor = pos;
+--- 5246,5257 ----
+ {
+ pos_T pos = curwin->w_cursor;
+
+! /* Find bad word under the cursor. When 'spell' is
+! * off this fails and find_ident_under_cursor() is
+! * used below. */
+! emsg_off++;
+ len = spell_move_to(curwin, FORWARD, TRUE, TRUE, NULL);
++ emsg_off--;
+ if (len != 0 && curwin->w_cursor.col <= pos.col)
+ ptr = ml_get_pos(&curwin->w_cursor);
+ curwin->w_cursor = pos;
+*** ../vim-7.4.037/src/spell.c 2013-07-17 17:28:28.000000000 +0200
+--- src/spell.c 2013-09-25 18:48:55.000000000 +0200
+***************
+*** 9479,9485 ****
+ if (undo)
+ {
+ home_replace(NULL, fname, NameBuff, MAXPATHL, TRUE);
+! smsg((char_u *)_("Word removed from %s"), NameBuff);
+ }
+ }
+ fseek(fd, fpos_next, SEEK_SET);
+--- 9479,9486 ----
+ if (undo)
+ {
+ home_replace(NULL, fname, NameBuff, MAXPATHL, TRUE);
+! smsg((char_u *)_("Word '%.*s' removed from %s"),
+! len, word, NameBuff);
+ }
+ }
+ fseek(fd, fpos_next, SEEK_SET);
+***************
+*** 9525,9531 ****
+ fclose(fd);
+
+ home_replace(NULL, fname, NameBuff, MAXPATHL, TRUE);
+! smsg((char_u *)_("Word added to %s"), NameBuff);
+ }
+ }
+
+--- 9526,9532 ----
+ fclose(fd);
+
+ home_replace(NULL, fname, NameBuff, MAXPATHL, TRUE);
+! smsg((char_u *)_("Word '%.*s' added to %s"), len, word, NameBuff);
+ }
+ }
+
+***************
+*** 10135,10141 ****
+ }
+
+ /*
+! * "z?": Find badly spelled word under or after the cursor.
+ * Give suggestions for the properly spelled word.
+ * In Visual mode use the highlighted word as the bad word.
+ * When "count" is non-zero use that suggestion.
+--- 10136,10142 ----
+ }
+
+ /*
+! * "z=": Find badly spelled word under or after the cursor.
+ * Give suggestions for the properly spelled word.
+ * In Visual mode use the highlighted word as the bad word.
+ * When "count" is non-zero use that suggestion.
+*** ../vim-7.4.037/src/version.c 2013-09-25 18:16:34.000000000 +0200
+--- src/version.c 2013-09-25 18:52:47.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 38,
+ /**/
+
+--
+MAN: Fetchez la vache!
+GUARD: Quoi?
+MAN: Fetchez la vache!
+ "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/patches/source/vim/patches/7.4.039 b/patches/source/vim/patches/7.4.039
new file mode 100644
index 00000000..5d653e35
--- /dev/null
+++ b/patches/source/vim/patches/7.4.039
@@ -0,0 +1,217 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.039
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.039
+Problem: MS-Windows: MSCV10 and earlier can't handle symlinks to a
+ directory properly.
+Solution: Add stat_symlink_aware() and wstat_symlink_aware(). (Ken Takata)
+Files: src/os_mswin.c, src/os_win32.c, src/os_win32.h
+
+
+*** ../vim-7.4.038/src/os_mswin.c 2013-08-30 16:51:15.000000000 +0200
+--- src/os_mswin.c 2013-09-25 19:09:53.000000000 +0200
+***************
+*** 498,503 ****
+--- 498,595 ----
+ }
+ }
+
++ static int
++ stat_symlink_aware(const char *name, struct stat *stp)
++ {
++ #if defined(_MSC_VER) && _MSC_VER < 1700
++ /* Work around for VC10 or earlier. stat() can't handle symlinks properly.
++ * VC9 or earlier: stat() doesn't support a symlink at all. It retrieves
++ * status of a symlink itself.
++ * VC10: stat() supports a symlink to a normal file, but it doesn't support
++ * a symlink to a directory (always returns an error). */
++ WIN32_FIND_DATA findData;
++ HANDLE hFind, h;
++ DWORD attr = 0;
++ BOOL is_symlink = FALSE;
++
++ hFind = FindFirstFile(name, &findData);
++ if (hFind != INVALID_HANDLE_VALUE)
++ {
++ attr = findData.dwFileAttributes;
++ if ((attr & FILE_ATTRIBUTE_REPARSE_POINT)
++ && (findData.dwReserved0 == IO_REPARSE_TAG_SYMLINK))
++ is_symlink = TRUE;
++ FindClose(hFind);
++ }
++ if (is_symlink)
++ {
++ h = CreateFile(name, FILE_READ_ATTRIBUTES,
++ FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
++ OPEN_EXISTING,
++ (attr & FILE_ATTRIBUTE_DIRECTORY)
++ ? FILE_FLAG_BACKUP_SEMANTICS : 0,
++ NULL);
++ if (h != INVALID_HANDLE_VALUE)
++ {
++ int fd, n;
++
++ fd = _open_osfhandle((intptr_t)h, _O_RDONLY);
++ n = _fstat(fd, (struct _stat*)stp);
++ _close(fd);
++ return n;
++ }
++ }
++ #endif
++ return stat(name, stp);
++ }
++
++ #ifdef FEAT_MBYTE
++ static int
++ wstat_symlink_aware(const WCHAR *name, struct _stat *stp)
++ {
++ # if defined(_MSC_VER) && _MSC_VER < 1700
++ /* Work around for VC10 or earlier. _wstat() can't handle symlinks properly.
++ * VC9 or earlier: _wstat() doesn't support a symlink at all. It retrieves
++ * status of a symlink itself.
++ * VC10: _wstat() supports a symlink to a normal file, but it doesn't
++ * support a symlink to a directory (always returns an error). */
++ int n;
++ BOOL is_symlink = FALSE;
++ HANDLE hFind, h;
++ DWORD attr = 0;
++ WIN32_FIND_DATAW findDataW;
++
++ hFind = FindFirstFileW(name, &findDataW);
++ if (hFind != INVALID_HANDLE_VALUE)
++ {
++ attr = findDataW.dwFileAttributes;
++ if ((attr & FILE_ATTRIBUTE_REPARSE_POINT)
++ && (findDataW.dwReserved0 == IO_REPARSE_TAG_SYMLINK))
++ is_symlink = TRUE;
++ FindClose(hFind);
++ }
++ if (is_symlink)
++ {
++ h = CreateFileW(name, FILE_READ_ATTRIBUTES,
++ FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
++ OPEN_EXISTING,
++ (attr & FILE_ATTRIBUTE_DIRECTORY)
++ ? FILE_FLAG_BACKUP_SEMANTICS : 0,
++ NULL);
++ if (h != INVALID_HANDLE_VALUE)
++ {
++ int fd;
++
++ fd = _open_osfhandle((intptr_t)h, _O_RDONLY);
++ n = _fstat(fd, stp);
++ _close(fd);
++ return n;
++ }
++ }
++ # endif
++ return _wstat(name, stp);
++ }
++ #endif
+
+ /*
+ * stat() can't handle a trailing '/' or '\', remove it first.
+***************
+*** 534,540 ****
+
+ if (wp != NULL)
+ {
+! n = _wstat(wp, (struct _stat *)stp);
+ vim_free(wp);
+ if (n >= 0)
+ return n;
+--- 626,632 ----
+
+ if (wp != NULL)
+ {
+! n = wstat_symlink_aware(wp, (struct _stat *)stp);
+ vim_free(wp);
+ if (n >= 0)
+ return n;
+***************
+*** 544,550 ****
+ }
+ }
+ #endif
+! return stat(buf, stp);
+ }
+
+ #if defined(FEAT_GUI_MSWIN) || defined(PROTO)
+--- 636,642 ----
+ }
+ }
+ #endif
+! return stat_symlink_aware(buf, stp);
+ }
+
+ #if defined(FEAT_GUI_MSWIN) || defined(PROTO)
+*** ../vim-7.4.038/src/os_win32.c 2013-08-30 17:29:10.000000000 +0200
+--- src/os_win32.c 2013-09-25 19:09:53.000000000 +0200
+***************
+*** 78,93 ****
+ # endif
+ #endif
+
+- /*
+- * Reparse Point
+- */
+- #ifndef FILE_ATTRIBUTE_REPARSE_POINT
+- # define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
+- #endif
+- #ifndef IO_REPARSE_TAG_SYMLINK
+- # define IO_REPARSE_TAG_SYMLINK 0xA000000C
+- #endif
+-
+ /* Record all output and all keyboard & mouse input */
+ /* #define MCH_WRITE_DUMP */
+
+--- 78,83 ----
+*** ../vim-7.4.038/src/os_win32.h 2013-07-21 17:53:13.000000000 +0200
+--- src/os_win32.h 2013-09-25 19:09:53.000000000 +0200
+***************
+*** 130,135 ****
+--- 130,148 ----
+ # define DFLT_MAXMEMTOT (5*1024) /* use up to 5 Mbyte for Vim */
+ #endif
+
++ /*
++ * Reparse Point
++ */
++ #ifndef FILE_ATTRIBUTE_REPARSE_POINT
++ # define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
++ #endif
++ #ifndef IO_REPARSE_TAG_MOUNT_POINT
++ # define IO_REPARSE_TAG_MOUNT_POINT 0xA0000003
++ #endif
++ #ifndef IO_REPARSE_TAG_SYMLINK
++ # define IO_REPARSE_TAG_SYMLINK 0xA000000C
++ #endif
++
+ #if defined(_MSC_VER) || defined(__BORLANDC__)
+ /* Support for __try / __except. All versions of MSVC and Borland C are
+ * expected to have this. Any other compilers that support it? */
+*** ../vim-7.4.038/src/version.c 2013-09-25 18:54:20.000000000 +0200
+--- src/version.c 2013-09-25 19:08:55.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 39,
+ /**/
+
+--
+ A cow comes flying over the battlements, lowing aggressively. The cow
+ lands on GALAHAD'S PAGE, squashing him completely.
+ "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/patches/source/vim/patches/7.4.040 b/patches/source/vim/patches/7.4.040
new file mode 100644
index 00000000..a6002236
--- /dev/null
+++ b/patches/source/vim/patches/7.4.040
@@ -0,0 +1,68 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.040
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.040
+Problem: Valgrind error on exit when a script-local variable holds a
+ reference to the scope of another script.
+Solution: First clear all variables, then free the scopes. (ZyX)
+Files: src/eval.c
+
+
+*** ../vim-7.4.039/src/eval.c 2013-08-30 16:35:41.000000000 +0200
+--- src/eval.c 2013-09-25 20:28:15.000000000 +0200
+***************
+*** 915,926 ****
+ /* autoloaded script names */
+ ga_clear_strings(&ga_loaded);
+
+! /* script-local variables */
+ for (i = 1; i <= ga_scripts.ga_len; ++i)
+- {
+ vars_clear(&SCRIPT_VARS(i));
+ vim_free(SCRIPT_SV(i));
+- }
+ ga_clear(&ga_scripts);
+
+ /* unreferenced lists and dicts */
+--- 915,927 ----
+ /* autoloaded script names */
+ ga_clear_strings(&ga_loaded);
+
+! /* Script-local variables. First clear all the variables and in a second
+! * loop free the scriptvar_T, because a variable in one script might hold
+! * a reference to the whole scope of another script. */
+ for (i = 1; i <= ga_scripts.ga_len; ++i)
+ vars_clear(&SCRIPT_VARS(i));
++ for (i = 1; i <= ga_scripts.ga_len; ++i)
+ vim_free(SCRIPT_SV(i));
+ ga_clear(&ga_scripts);
+
+ /* unreferenced lists and dicts */
+*** ../vim-7.4.039/src/version.c 2013-09-25 19:13:32.000000000 +0200
+--- src/version.c 2013-09-25 20:30:06.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 40,
+ /**/
+
+--
+ A KNIGHT rides into shot and hacks him to the ground. He rides off.
+ We stay for a moment on the glade. A MIDDLE-AGED LADY in a C. & A.
+ twin-set emerges from the trees and looks in horror at the body of her
+ HUSBAND.
+MRS HISTORIAN: FRANK!
+ "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/patches/source/vim/patches/7.4.041 b/patches/source/vim/patches/7.4.041
new file mode 100644
index 00000000..190604e9
--- /dev/null
+++ b/patches/source/vim/patches/7.4.041
@@ -0,0 +1,61 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.041
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.041 (after 7.4.034)
+Problem: Visual selection does not remain after being copied over. (Axel
+ Bender)
+Solution: Move when VIsual_active is reset. (Christian Brabandt)
+Files: src/ops.c
+
+
+*** ../vim-7.4.040/src/ops.c 2013-09-22 15:23:38.000000000 +0200
+--- src/ops.c 2013-09-25 23:20:37.000000000 +0200
+***************
+*** 3808,3816 ****
+ FALSE /* stop after 1 paste */
+ #endif
+ );
+- #ifdef FEAT_VISUAL
+- VIsual_active = FALSE;
+- #endif
+
+ curbuf->b_op_end = curwin->w_cursor;
+ /* For "CTRL-O p" in Insert mode, put cursor after last char */
+--- 3808,3813 ----
+***************
+*** 3972,3977 ****
+--- 3969,3978 ----
+ if (regname == '=')
+ vim_free(y_array);
+
++ #ifdef FEAT_VISUAL
++ VIsual_active = FALSE;
++ #endif
++
+ /* If the cursor is past the end of the line put it at the end. */
+ adjust_cursor_eol();
+ }
+*** ../vim-7.4.040/src/version.c 2013-09-25 21:00:24.000000000 +0200
+--- src/version.c 2013-09-25 23:20:46.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 41,
+ /**/
+
+
+--
+press CTRL-ALT-DEL for more information
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.042 b/patches/source/vim/patches/7.4.042
new file mode 100644
index 00000000..648a1bfe
--- /dev/null
+++ b/patches/source/vim/patches/7.4.042
@@ -0,0 +1,71 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.042
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.042
+Problem: When using ":setlocal" for 'spell' and 'spellang' then :spelldump
+ doesn't work. (Dimitar Dimitrov)
+Solution: Copy the option variables to the new window used to show the dump.
+ (Christian Brabandt)
+Files: src/spell.c
+
+
+*** ../vim-7.4.041/src/spell.c 2013-09-25 18:54:20.000000000 +0200
+--- src/spell.c 2013-09-29 13:15:51.000000000 +0200
+***************
+*** 15569,15579 ****
+ ex_spelldump(eap)
+ exarg_T *eap;
+ {
+ if (no_spell_checking(curwin))
+ return;
+
+! /* Create a new empty buffer by splitting the window. */
+ do_cmdline_cmd((char_u *)"new");
+ if (!bufempty() || !buf_valid(curbuf))
+ return;
+
+--- 15569,15589 ----
+ ex_spelldump(eap)
+ exarg_T *eap;
+ {
++ char_u *spl;
++ long dummy;
++
+ if (no_spell_checking(curwin))
+ return;
++ get_option_value((char_u*)"spl", &dummy, &spl, OPT_LOCAL);
+
+! /* Create a new empty buffer in a new window. */
+ do_cmdline_cmd((char_u *)"new");
++
++ /* enable spelling locally in the new window */
++ set_option_value((char_u*)"spell", TRUE, (char_u*)"", OPT_LOCAL);
++ set_option_value((char_u*)"spl", dummy, spl, OPT_LOCAL);
++ vim_free(spl);
++
+ if (!bufempty() || !buf_valid(curbuf))
+ return;
+
+*** ../vim-7.4.041/src/version.c 2013-09-25 23:24:54.000000000 +0200
+--- src/version.c 2013-09-29 13:15:17.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 42,
+ /**/
+
+--
+Experience is what you get when you don't get what you want.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.043 b/patches/source/vim/patches/7.4.043
new file mode 100644
index 00000000..0c3d852c
--- /dev/null
+++ b/patches/source/vim/patches/7.4.043
@@ -0,0 +1,89 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.043
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.043
+Problem: VMS can't handle long function names.
+Solution: Shorten may_req_ambiguous_character_width. (Samuel Ferencik)
+Files: src/main.c, src/term.c, src/proto/term.pro
+
+
+*** ../vim-7.4.042/src/main.c 2013-08-22 14:14:23.000000000 +0200
+--- src/main.c 2013-09-29 16:23:49.000000000 +0200
+***************
+*** 812,818 ****
+ starttermcap(); /* start termcap if not done by wait_return() */
+ TIME_MSG("start termcap");
+ #if defined(FEAT_TERMRESPONSE) && defined(FEAT_MBYTE)
+! may_req_ambiguous_character_width();
+ #endif
+
+ #ifdef FEAT_MOUSE
+--- 812,818 ----
+ starttermcap(); /* start termcap if not done by wait_return() */
+ TIME_MSG("start termcap");
+ #if defined(FEAT_TERMRESPONSE) && defined(FEAT_MBYTE)
+! may_req_ambiguous_char_width();
+ #endif
+
+ #ifdef FEAT_MOUSE
+*** ../vim-7.4.042/src/term.c 2013-07-04 22:29:28.000000000 +0200
+--- src/term.c 2013-09-29 16:27:12.000000000 +0200
+***************
+*** 3356,3362 ****
+ * it must be called immediately after entering termcap mode.
+ */
+ void
+! may_req_ambiguous_character_width()
+ {
+ if (u7_status == U7_GET
+ && cur_tmode == TMODE_RAW
+--- 3356,3362 ----
+ * it must be called immediately after entering termcap mode.
+ */
+ void
+! may_req_ambiguous_char_width()
+ {
+ if (u7_status == U7_GET
+ && cur_tmode == TMODE_RAW
+*** ../vim-7.4.042/src/proto/term.pro 2013-08-10 13:37:28.000000000 +0200
+--- src/proto/term.pro 2013-09-29 16:25:02.000000000 +0200
+***************
+*** 35,41 ****
+ void starttermcap __ARGS((void));
+ void stoptermcap __ARGS((void));
+ void may_req_termresponse __ARGS((void));
+! void may_req_ambiguous_character_width __ARGS((void));
+ int swapping_screen __ARGS((void));
+ void setmouse __ARGS((void));
+ int mouse_has __ARGS((int c));
+--- 35,41 ----
+ void starttermcap __ARGS((void));
+ void stoptermcap __ARGS((void));
+ void may_req_termresponse __ARGS((void));
+! void may_req_ambiguous_char_width __ARGS((void));
+ int swapping_screen __ARGS((void));
+ void setmouse __ARGS((void));
+ int mouse_has __ARGS((int c));
+*** ../vim-7.4.042/src/version.c 2013-09-29 13:38:25.000000000 +0200
+--- src/version.c 2013-09-29 16:25:16.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 43,
+ /**/
+
+--
+Back up my hard drive? I can't find the reverse switch!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.044 b/patches/source/vim/patches/7.4.044
new file mode 100644
index 00000000..3d8832df
--- /dev/null
+++ b/patches/source/vim/patches/7.4.044
@@ -0,0 +1,83 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.044
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.044 (after 7.4.039)
+Problem: Can't build with old MSVC. (Wang Shoulin)
+Solution: Define OPEN_OH_ARGTYPE instead of using intptr_t directly.
+Files: src/os_mswin.c
+
+
+*** ../vim-7.4.043/src/os_mswin.c 2013-09-25 19:13:32.000000000 +0200
+--- src/os_mswin.c 2013-09-26 20:37:38.000000000 +0200
+***************
+*** 498,503 ****
+--- 498,509 ----
+ }
+ }
+
++ #if (_MSC_VER >= 1300)
++ # define OPEN_OH_ARGTYPE intptr_t
++ #else
++ # define OPEN_OH_ARGTYPE long
++ #endif
++
+ static int
+ stat_symlink_aware(const char *name, struct stat *stp)
+ {
+***************
+*** 533,539 ****
+ {
+ int fd, n;
+
+! fd = _open_osfhandle((intptr_t)h, _O_RDONLY);
+ n = _fstat(fd, (struct _stat*)stp);
+ _close(fd);
+ return n;
+--- 539,545 ----
+ {
+ int fd, n;
+
+! fd = _open_osfhandle((OPEN_OH_ARGTYPE)h, _O_RDONLY);
+ n = _fstat(fd, (struct _stat*)stp);
+ _close(fd);
+ return n;
+***************
+*** 580,586 ****
+ {
+ int fd;
+
+! fd = _open_osfhandle((intptr_t)h, _O_RDONLY);
+ n = _fstat(fd, stp);
+ _close(fd);
+ return n;
+--- 586,592 ----
+ {
+ int fd;
+
+! fd = _open_osfhandle((OPEN_OH_ARGTYPE)h, _O_RDONLY);
+ n = _fstat(fd, stp);
+ _close(fd);
+ return n;
+*** ../vim-7.4.043/src/version.c 2013-09-29 16:27:42.000000000 +0200
+--- src/version.c 2013-09-29 18:27:58.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 44,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.045 b/patches/source/vim/patches/7.4.045
new file mode 100644
index 00000000..0e82735a
--- /dev/null
+++ b/patches/source/vim/patches/7.4.045
@@ -0,0 +1,111 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.045
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.045
+Problem: substitute() does not work properly when the pattern starts with
+ "\ze".
+Solution: Detect an empty match. (Christian Brabandt)
+Files: src/eval.c, src/testdir/test80.in, src/testdir/test80.ok
+
+
+*** ../vim-7.4.044/src/eval.c 2013-09-25 21:00:24.000000000 +0200
+--- src/eval.c 2013-09-29 21:03:22.000000000 +0200
+***************
+*** 24301,24306 ****
+--- 24301,24307 ----
+ garray_T ga;
+ char_u *ret;
+ char_u *save_cpo;
++ int zero_width;
+
+ /* Make 'cpoptions' empty, so that the 'l' flag doesn't work here */
+ save_cpo = p_cpo;
+***************
+*** 24339,24358 ****
+ (void)vim_regsub(&regmatch, sub, (char_u *)ga.ga_data
+ + ga.ga_len + i, TRUE, TRUE, FALSE);
+ ga.ga_len += i + sublen - 1;
+! /* avoid getting stuck on a match with an empty string */
+! if (tail == regmatch.endp[0])
+ {
+! if (*tail == NUL)
+! break;
+ *((char_u *)ga.ga_data + ga.ga_len) = *tail++;
+ ++ga.ga_len;
+ }
+- else
+- {
+- tail = regmatch.endp[0];
+- if (*tail == NUL)
+- break;
+- }
+ if (!do_all)
+ break;
+ }
+--- 24340,24356 ----
+ (void)vim_regsub(&regmatch, sub, (char_u *)ga.ga_data
+ + ga.ga_len + i, TRUE, TRUE, FALSE);
+ ga.ga_len += i + sublen - 1;
+! zero_width = (tail == regmatch.endp[0]
+! || regmatch.startp[0] == regmatch.endp[0]);
+! tail = regmatch.endp[0];
+! if (*tail == NUL)
+! break;
+! if (zero_width)
+ {
+! /* avoid getting stuck on a match with an empty string */
+ *((char_u *)ga.ga_data + ga.ga_len) = *tail++;
+ ++ga.ga_len;
+ }
+ if (!do_all)
+ break;
+ }
+*** ../vim-7.4.044/src/testdir/test80.in 2013-03-19 17:30:51.000000000 +0100
+--- src/testdir/test80.in 2013-09-29 20:59:00.000000000 +0200
+***************
+*** 142,147 ****
+--- 142,149 ----
+ :$put =\"\n\nTEST_7:\"
+ :$put =substitute('A A', 'A.', '\=submatch(0)', '')
+ :$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')
++ :$put =substitute('-bb', '\zeb', 'a', 'g')
++ :$put =substitute('-bb', '\ze', 'c', 'g')
+ /^TEST_8
+ ENDTEST
+
+*** ../vim-7.4.044/src/testdir/test80.ok 2013-03-19 17:31:45.000000000 +0100
+--- src/testdir/test80.ok 2013-09-29 20:59:35.000000000 +0200
+***************
+*** 103,108 ****
+--- 103,110 ----
+ A A
+ B
+ B
++ -abab
++ c-cbcbc
+
+
+ TEST_8:
+*** ../vim-7.4.044/src/version.c 2013-09-29 19:05:17.000000000 +0200
+--- src/version.c 2013-09-29 21:04:50.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 45,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.046 b/patches/source/vim/patches/7.4.046
new file mode 100644
index 00000000..5bb42658
--- /dev/null
+++ b/patches/source/vim/patches/7.4.046
@@ -0,0 +1,80 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.046
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.046
+Problem: Can't use Tcl 8.6.
+Solution: Change how Tcl_FindExecutable is called. (Jan Nijtmans)
+Files: src/if_tcl.c
+
+
+*** ../vim-7.4.045/src/if_tcl.c 2013-08-02 19:31:15.000000000 +0200
+--- src/if_tcl.c 2013-10-02 13:44:48.000000000 +0200
+***************
+*** 165,170 ****
+--- 165,171 ----
+ */
+ static HANDLE hTclLib = NULL;
+ Tcl_Interp* (*dll_Tcl_CreateInterp)();
++ void (*dll_Tcl_FindExecutable)(const void *);
+
+ /*
+ * Table of name to function pointer of tcl.
+***************
+*** 175,180 ****
+--- 176,182 ----
+ TCL_PROC* ptr;
+ } tcl_funcname_table[] = {
+ {"Tcl_CreateInterp", (TCL_PROC*)&dll_Tcl_CreateInterp},
++ {"Tcl_FindExecutable", (TCL_PROC*)&dll_Tcl_FindExecutable},
+ {NULL, NULL},
+ };
+
+***************
+*** 248,258 ****
+ {
+ Tcl_Interp *interp;
+
+ if (interp = dll_Tcl_CreateInterp())
+ {
+ if (Tcl_InitStubs(interp, DYNAMIC_TCL_VER, 0))
+ {
+- Tcl_FindExecutable(find_executable_arg);
+ Tcl_DeleteInterp(interp);
+ stubs_initialized = TRUE;
+ }
+--- 250,261 ----
+ {
+ Tcl_Interp *interp;
+
++ dll_Tcl_FindExecutable(find_executable_arg);
++
+ if (interp = dll_Tcl_CreateInterp())
+ {
+ if (Tcl_InitStubs(interp, DYNAMIC_TCL_VER, 0))
+ {
+ Tcl_DeleteInterp(interp);
+ stubs_initialized = TRUE;
+ }
+*** ../vim-7.4.045/src/version.c 2013-09-29 21:11:00.000000000 +0200
+--- src/version.c 2013-10-02 13:46:47.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 46,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.047 b/patches/source/vim/patches/7.4.047
new file mode 100644
index 00000000..2871340b
--- /dev/null
+++ b/patches/source/vim/patches/7.4.047
@@ -0,0 +1,56 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.047
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.047
+Problem: When using input() in a function invoked by a mapping it doesn't
+ work.
+Solution: Temporarily reset ex_normal_busy. (Yasuhiro Matsumoto)
+Files: src/eval.c
+
+
+*** ../vim-7.4.046/src/eval.c 2013-09-29 21:11:00.000000000 +0200
+--- src/eval.c 2013-10-02 16:40:52.000000000 +0200
+***************
+*** 13054,13062 ****
+--- 13054,13071 ----
+ }
+
+ if (defstr != NULL)
++ {
++ # ifdef FEAT_EX_EXTRA
++ int save_ex_normal_busy = ex_normal_busy;
++ ex_normal_busy = 0;
++ # endif
+ rettv->vval.v_string =
+ getcmdline_prompt(inputsecret_flag ? NUL : '@', p, echo_attr,
+ xp_type, xp_arg);
++ # ifdef FEAT_EX_EXTRA
++ ex_normal_busy = save_ex_normal_busy;
++ # endif
++ }
+ if (inputdialog && rettv->vval.v_string == NULL
+ && argvars[1].v_type != VAR_UNKNOWN
+ && argvars[2].v_type != VAR_UNKNOWN)
+*** ../vim-7.4.046/src/version.c 2013-10-02 14:25:39.000000000 +0200
+--- src/version.c 2013-10-02 16:45:45.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 47,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.048 b/patches/source/vim/patches/7.4.048
new file mode 100644
index 00000000..6e911a0b
--- /dev/null
+++ b/patches/source/vim/patches/7.4.048
@@ -0,0 +1,96 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.048
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.048
+Problem: Recent clang version complains about -fno-strength-reduce.
+Solution: Add a configure check for the clang version. (Kazunobu Kuriyama)
+Files: src/configure.in, src/auto/configure
+
+
+*** ../vim-7.4.047/src/configure.in 2013-08-04 20:00:50.000000000 +0200
+--- src/configure.in 2013-10-02 17:56:25.000000000 +0200
+***************
+*** 62,67 ****
+--- 62,90 ----
+ fi
+ fi
+
++ dnl clang-500.2.75 or around has abandoned -f[no-]strength-reduce and issues a
++ dnl warning when that flag is passed to. Accordingly, adjust CFLAGS based on
++ dnl the version number of the clang in use.
++ dnl Note that this does not work to get the version of clang 3.1 or 3.2.
++ AC_MSG_CHECKING(for recent clang version)
++ CLANG_VERSION_STRING=`"$CC" --version 2>/dev/null | sed -n -e 's/^.*clang.*\([[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\).*$/\1/p'`
++ if test x"$CLANG_VERSION_STRING" != x"" ; then
++ CLANG_MAJOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*/\1/p'`
++ CLANG_MINOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/p'`
++ CLANG_REVISION=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)/\1/p'`
++ CLANG_VERSION=`expr $CLANG_MAJOR '*' 1000000 '+' $CLANG_MINOR '*' 1000 '+' $CLANG_REVISION`
++ AC_MSG_RESULT($CLANG_VERSION)
++ dnl If you find the same issue with versions earlier than 500.2.75,
++ dnl change the constant 500002075 below appropriately. To get the
++ dnl integer corresponding to a version number, refer to the
++ dnl definition of CLANG_VERSION above.
++ if test "$CLANG_VERSION" -ge 500002075 ; then
++ CFLAGS=`echo "$CFLAGS" | sed -n -e 's/-fno-strength-reduce/ /p'`
++ fi
++ else
++ AC_MSG_RESULT(no)
++ fi
++
+ dnl If configure thinks we are cross compiling, there might be something
+ dnl wrong with the CC or CFLAGS settings, give a useful warning message
+ if test "$cross_compiling" = yes; then
+*** ../vim-7.4.047/src/auto/configure 2013-08-04 20:01:06.000000000 +0200
+--- src/auto/configure 2013-10-02 17:56:52.000000000 +0200
+***************
+*** 3989,3994 ****
+--- 3989,4012 ----
+ fi
+ fi
+
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for recent clang version" >&5
++ $as_echo_n "checking for recent clang version... " >&6; }
++ CLANG_VERSION_STRING=`"$CC" --version 2>/dev/null | sed -n -e 's/^.*clang.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$/\1/p'`
++ if test x"$CLANG_VERSION_STRING" != x"" ; then
++ CLANG_MAJOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*/\1/p'`
++ CLANG_MINOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[0-9][0-9]*\.\([0-9][0-9]*\)\.[0-9][0-9]*/\1/p'`
++ CLANG_REVISION=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\)/\1/p'`
++ CLANG_VERSION=`expr $CLANG_MAJOR '*' 1000000 '+' $CLANG_MINOR '*' 1000 '+' $CLANG_REVISION`
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CLANG_VERSION" >&5
++ $as_echo "$CLANG_VERSION" >&6; }
++ if test "$CLANG_VERSION" -ge 500002075 ; then
++ CFLAGS=`echo "$CFLAGS" | sed -n -e 's/-fno-strength-reduce/ /p'`
++ fi
++ else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++ $as_echo "no" >&6; }
++ fi
++
+ if test "$cross_compiling" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot compile a simple program; if not cross compiling check CC and CFLAGS" >&5
+ $as_echo "cannot compile a simple program; if not cross compiling check CC and CFLAGS" >&6; }
+*** ../vim-7.4.047/src/version.c 2013-10-02 16:46:23.000000000 +0200
+--- src/version.c 2013-10-02 17:19:31.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 48,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.049 b/patches/source/vim/patches/7.4.049
new file mode 100644
index 00000000..c1a23b98
--- /dev/null
+++ b/patches/source/vim/patches/7.4.049
@@ -0,0 +1,67 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.049
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.049
+Problem: In Ex mode, when line numbers are enabled the substitute prompt is
+ wrong.
+Solution: Adjust for the line number size. (Benoit Pierre)
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.4.048/src/ex_cmds.c 2013-08-07 15:15:51.000000000 +0200
+--- src/ex_cmds.c 2013-10-02 18:31:24.000000000 +0200
+***************
+*** 4740,4750 ****
+ char_u *resp;
+ colnr_T sc, ec;
+
+! print_line_no_prefix(lnum, FALSE, FALSE);
+
+ getvcol(curwin, &curwin->w_cursor, &sc, NULL, NULL);
+ curwin->w_cursor.col = regmatch.endpos[0].col - 1;
+ getvcol(curwin, &curwin->w_cursor, NULL, NULL, &ec);
+ msg_start();
+ for (i = 0; i < (long)sc; ++i)
+ msg_putchar(' ');
+--- 4740,4756 ----
+ char_u *resp;
+ colnr_T sc, ec;
+
+! print_line_no_prefix(lnum, do_number, do_list);
+
+ getvcol(curwin, &curwin->w_cursor, &sc, NULL, NULL);
+ curwin->w_cursor.col = regmatch.endpos[0].col - 1;
+ getvcol(curwin, &curwin->w_cursor, NULL, NULL, &ec);
++ if (do_number || curwin->w_p_nu)
++ {
++ int numw = number_width(curwin) + 1;
++ sc += numw;
++ ec += numw;
++ }
+ msg_start();
+ for (i = 0; i < (long)sc; ++i)
+ msg_putchar(' ');
+*** ../vim-7.4.048/src/version.c 2013-10-02 18:22:58.000000000 +0200
+--- src/version.c 2013-10-02 18:33:22.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 49,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.050 b/patches/source/vim/patches/7.4.050
new file mode 100644
index 00000000..afe2b044
--- /dev/null
+++ b/patches/source/vim/patches/7.4.050
@@ -0,0 +1,90 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.050
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.050
+Problem: "gn" selects too much for the pattern "\d" when there are two
+ lines with a single digit. (Ryan Carney)
+Solution: Adjust the logic of is_one_char(). (Christian Brabandt)
+Files: src/search.c, src/testdir/test53.in, src/testdir/test53.ok
+
+
+*** ../vim-7.4.049/src/search.c 2013-08-14 17:45:25.000000000 +0200
+--- src/search.c 2013-10-02 21:49:40.000000000 +0200
+***************
+*** 4680,4687 ****
+ && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum
+ && regmatch.startpos[0].col == regmatch.endpos[0].col);
+
+! if (!result && incl(&pos) == 0 && pos.col == regmatch.endpos[0].col)
+! result = TRUE;
+ }
+
+ called_emsg |= save_called_emsg;
+--- 4680,4687 ----
+ && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum
+ && regmatch.startpos[0].col == regmatch.endpos[0].col);
+
+! if (!result && inc(&pos) >= 0 && pos.col == regmatch.endpos[0].col)
+! result = TRUE;
+ }
+
+ called_emsg |= save_called_emsg;
+*** ../vim-7.4.049/src/testdir/test53.in 2013-06-30 14:31:56.000000000 +0200
+--- src/testdir/test53.in 2013-10-02 21:47:10.000000000 +0200
+***************
+*** 46,51 ****
+--- 46,54 ----
+ :set selection=exclusive
+ $cgNmongoose/i
+ cgnj
++ :" Make sure there is no other match y uppercase.
++ /x59
++ gggnd
+ :/^start:/,/^end:/wq! test.out
+ ENDTEST
+
+***************
+*** 75,78 ****
+--- 78,84 ----
+ uniquepattern uniquepattern
+ my very excellent mother just served us nachos
+ for (i=0; i<=10; i++)
++ Y
++ text
++ Y
+ end:
+*** ../vim-7.4.049/src/testdir/test53.ok 2013-06-30 14:31:56.000000000 +0200
+--- src/testdir/test53.ok 2013-10-02 21:47:34.000000000 +0200
+***************
+*** 27,30 ****
+--- 27,33 ----
+ uniquepattern
+ my very excellent mongoose just served us nachos
+ for (j=0; i<=10; i++)
++
++ text
++ Y
+ end:
+*** ../vim-7.4.049/src/version.c 2013-10-02 18:43:00.000000000 +0200
+--- src/version.c 2013-10-02 21:51:34.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 50,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.051 b/patches/source/vim/patches/7.4.051
new file mode 100644
index 00000000..ca5c3a04
--- /dev/null
+++ b/patches/source/vim/patches/7.4.051
@@ -0,0 +1,67 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.051
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.051
+Problem: Syntax highlighting a Yaml file causes a crash. (Blake Preston)
+Solution: Copy the pim structure before calling addstate() to avoid it
+ becoming invalide when the state list is reallocated.
+Files: src/regexp_nfa.c
+
+
+*** ../vim-7.4.050/src/regexp_nfa.c 2013-09-25 18:16:34.000000000 +0200
+--- src/regexp_nfa.c 2013-10-06 15:44:31.000000000 +0200
+***************
+*** 6458,6463 ****
+--- 6458,6464 ----
+ if (add_state != NULL)
+ {
+ nfa_pim_T *pim;
++ nfa_pim_T pim_copy;
+
+ if (t->pim.result == NFA_PIM_UNUSED)
+ pim = NULL;
+***************
+*** 6531,6536 ****
+--- 6532,6546 ----
+ pim = NULL;
+ }
+
++ /* If "pim" points into l->t it will become invalid when
++ * adding the state causes the list to be reallocated. Make a
++ * local copy to avoid that. */
++ if (pim == &t->pim)
++ {
++ copy_pim(&pim_copy, pim);
++ pim = &pim_copy;
++ }
++
+ if (add_here)
+ addstate_here(thislist, add_state, &t->subs, pim, &listidx);
+ else
+*** ../vim-7.4.050/src/version.c 2013-10-02 21:54:57.000000000 +0200
+--- src/version.c 2013-10-06 15:21:16.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 51,
+ /**/
+
+--
+GUARD #2: It could be carried by an African swallow!
+GUARD #1: Oh, yeah, an African swallow maybe, but not a European swallow,
+ that's my point.
+GUARD #2: Oh, yeah, I agree with that...
+ The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.052 b/patches/source/vim/patches/7.4.052
new file mode 100644
index 00000000..502d07b5
--- /dev/null
+++ b/patches/source/vim/patches/7.4.052
@@ -0,0 +1,197 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.052
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.052
+Problem: With 'fo' set to "a2" inserting a space in the first column may
+ cause the cursor to jump to the previous line.
+Solution: Handle the case when there is no comment leader properly. (Tor
+ Perkins) Also fix that cursor is in the wrong place when spaces
+ get replaced with a Tab.
+Files: src/misc1.c, src/ops.c, src/testdir/test68.in,
+ src/testdir/test68.ok
+
+
+*** ../vim-7.4.051/src/misc1.c 2013-09-05 21:41:35.000000000 +0200
+--- src/misc1.c 2013-10-06 17:46:18.000000000 +0200
+***************
+*** 303,312 ****
+ ml_replace(curwin->w_cursor.lnum, newline, FALSE);
+ if (flags & SIN_CHANGED)
+ changed_bytes(curwin->w_cursor.lnum, 0);
+! /* Correct saved cursor position if it's after the indent. */
+! if (saved_cursor.lnum == curwin->w_cursor.lnum
+! && saved_cursor.col >= (colnr_T)(p - oldline))
+! saved_cursor.col += ind_len - (colnr_T)(p - oldline);
+ retval = TRUE;
+ }
+ else
+--- 303,320 ----
+ ml_replace(curwin->w_cursor.lnum, newline, FALSE);
+ if (flags & SIN_CHANGED)
+ changed_bytes(curwin->w_cursor.lnum, 0);
+! /* Correct saved cursor position if it is in this line. */
+! if (saved_cursor.lnum == curwin->w_cursor.lnum)
+! {
+! if (saved_cursor.col >= (colnr_T)(p - oldline))
+! /* cursor was after the indent, adjust for the number of
+! * bytes added/removed */
+! saved_cursor.col += ind_len - (colnr_T)(p - oldline);
+! else if (saved_cursor.col >= (colnr_T)(s - newline))
+! /* cursor was in the indent, and is now after it, put it back
+! * at the start of the indent (replacing spaces with TAB) */
+! saved_cursor.col = (colnr_T)(s - newline);
+! }
+ retval = TRUE;
+ }
+ else
+***************
+*** 1581,1589 ****
+
+ #if defined(FEAT_COMMENTS) || defined(PROTO)
+ /*
+! * get_leader_len() returns the length of the prefix of the given string
+! * which introduces a comment. If this string is not a comment then 0 is
+! * returned.
+ * 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.
+--- 1589,1597 ----
+
+ #if defined(FEAT_COMMENTS) || defined(PROTO)
+ /*
+! * get_leader_len() returns the length in bytes of the prefix of the given
+! * string which introduces a comment. If this string is not a comment then
+! * 0 is returned.
+ * 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.
+*** ../vim-7.4.051/src/ops.c 2013-09-25 23:24:54.000000000 +0200
+--- src/ops.c 2013-10-06 17:11:51.000000000 +0200
+***************
+*** 4989,4995 ****
+
+ /*
+ * When still in same paragraph, join the lines together. But
+! * first delete the comment leader from the second line.
+ */
+ if (!is_end_par)
+ {
+--- 4989,4995 ----
+
+ /*
+ * When still in same paragraph, join the lines together. But
+! * first delete the leader from the second line.
+ */
+ if (!is_end_par)
+ {
+***************
+*** 4999,5009 ****
+ if (line_count < 0 && u_save_cursor() == FAIL)
+ break;
+ #ifdef FEAT_COMMENTS
+- (void)del_bytes((long)next_leader_len, FALSE, FALSE);
+ if (next_leader_len > 0)
+ mark_col_adjust(curwin->w_cursor.lnum, (colnr_T)0, 0L,
+ (long)-next_leader_len);
+ #endif
+ curwin->w_cursor.lnum--;
+ if (do_join(2, TRUE, FALSE, FALSE) == FAIL)
+ {
+--- 4999,5023 ----
+ if (line_count < 0 && u_save_cursor() == FAIL)
+ break;
+ #ifdef FEAT_COMMENTS
+ if (next_leader_len > 0)
++ {
++ (void)del_bytes((long)next_leader_len, FALSE, FALSE);
+ mark_col_adjust(curwin->w_cursor.lnum, (colnr_T)0, 0L,
+ (long)-next_leader_len);
++ } else
+ #endif
++ if (second_indent > 0) /* the "leader" for FO_Q_SECOND */
++ {
++ char_u *p = ml_get_curline();
++ int indent = skipwhite(p) - p;
++
++ if (indent > 0)
++ {
++ (void)del_bytes(indent, FALSE, FALSE);
++ mark_col_adjust(curwin->w_cursor.lnum,
++ (colnr_T)0, 0L, (long)-indent);
++ }
++ }
+ curwin->w_cursor.lnum--;
+ if (do_join(2, TRUE, FALSE, FALSE) == FAIL)
+ {
+*** ../vim-7.4.051/src/testdir/test68.in 2012-07-25 15:57:06.000000000 +0200
+--- src/testdir/test68.in 2013-10-06 16:20:33.000000000 +0200
+***************
+*** 62,67 ****
+--- 62,81 ----
+ }
+
+ STARTTEST
++ /^{/+3
++ :set tw=5 fo=t2a si
++ i A_
++ ENDTEST
++
++ {
++
++ x a
++ b
++ c
++
++ }
++
++ STARTTEST
+ /^{/+1
+ :set tw=5 fo=qn comments=:#
+ gwap
+*** ../vim-7.4.051/src/testdir/test68.ok 2012-07-25 16:03:05.000000000 +0200
+--- src/testdir/test68.ok 2013-10-06 16:20:33.000000000 +0200
+***************
+*** 43,48 ****
+--- 43,57 ----
+
+
+ {
++
++ x a
++ b_
++ c
++
++ }
++
++
++ {
+ # 1 a
+ # b
+ }
+*** ../vim-7.4.051/src/version.c 2013-10-06 15:46:06.000000000 +0200
+--- src/version.c 2013-10-06 17:25:27.000000000 +0200
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 52,
+ /**/
+
+--
+ARTHUR: Will you ask your master if he wants to join my court at Camelot?!
+GUARD #1: But then of course African swallows are not migratory.
+GUARD #2: Oh, yeah...
+GUARD #1: So they couldn't bring a coconut back anyway...
+ 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/patches/source/vim/patches/7.4.053 b/patches/source/vim/patches/7.4.053
new file mode 100644
index 00000000..22724fc7
--- /dev/null
+++ b/patches/source/vim/patches/7.4.053
@@ -0,0 +1,45 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.053
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.053
+Problem: Test75 has a wrong header. (ZyX)
+Solution: Fix the text and remove leading ".
+Files: src/testdir/test75.in
+
+
+*** ../vim-7.4.052/src/testdir/test75.in 2013-06-29 13:48:42.000000000 +0200
+--- src/testdir/test75.in 2013-10-19 20:28:53.000000000 +0200
+***************
+*** 1,4 ****
+! " Tests for functions.
+
+ STARTTEST
+ :so small.vim
+--- 1,4 ----
+! Tests for maparg().
+
+ STARTTEST
+ :so small.vim
+*** ../vim-7.4.052/src/version.c 2013-10-06 17:46:48.000000000 +0200
+--- src/version.c 2013-11-02 04:18:07.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 53,
+ /**/
+
+--
+Every exit is an entrance into something else.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.054 b/patches/source/vim/patches/7.4.054
new file mode 100644
index 00000000..0fcffac2
--- /dev/null
+++ b/patches/source/vim/patches/7.4.054
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.054
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.054
+Problem: Reading past end of the 'stl' string.
+Solution: Don't increment pointer when already at the NUL. (Christian
+ Brabandt)
+Files: src/buffer.c
+
+
+*** ../vim-7.4.053/src/buffer.c 2013-08-14 17:11:14.000000000 +0200
+--- src/buffer.c 2013-11-02 04:34:26.000000000 +0100
+***************
+*** 4062,4068 ****
+ item[curitem].minwid = -syn_namen2id(t, (int)(s - t));
+ curitem++;
+ }
+! ++s;
+ continue;
+ }
+
+--- 4062,4069 ----
+ item[curitem].minwid = -syn_namen2id(t, (int)(s - t));
+ curitem++;
+ }
+! if (*s != NUL)
+! ++s;
+ continue;
+ }
+
+*** ../vim-7.4.053/src/version.c 2013-11-02 04:19:10.000000000 +0100
+--- src/version.c 2013-11-02 04:31:50.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 54,
+ /**/
+
+--
+Every person is responsible for the choices he makes.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.055 b/patches/source/vim/patches/7.4.055
new file mode 100644
index 00000000..b6adc044
--- /dev/null
+++ b/patches/source/vim/patches/7.4.055
@@ -0,0 +1,138 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.055
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.055
+Problem: Mac: Where availability macros are defined depends on the system.
+Solution: Add a configure check. (Felix Bünemann)
+Files: src/config.h.in, src/configure.in, src/auto/configure,
+ src/os_mac.h
+
+*** ../vim-7.4.054/src/config.h.in 2013-02-26 14:18:19.000000000 +0100
+--- src/config.h.in 2013-11-02 20:52:08.000000000 +0100
+***************
+*** 442,444 ****
+--- 442,447 ----
+
+ /* Define if you want Cygwin to use the WIN32 clipboard, not compatible with X11*/
+ #undef FEAT_CYGWIN_WIN32_CLIPBOARD
++
++ /* Define if we have AvailabilityMacros.h on Mac OS X */
++ #undef HAVE_AVAILABILITYMACROS_H
+*** ../vim-7.4.054/src/configure.in 2013-10-02 18:22:58.000000000 +0200
+--- src/configure.in 2013-11-02 20:58:58.000000000 +0100
+***************
+*** 206,211 ****
+--- 206,215 ----
+ dnl TODO: use -arch i386 on Intel machines
+ CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
+
++ dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon
++ dnl so we need to include it to have access to version macros.
++ AC_CHECK_HEADER(AvailabilityMacros.h, [AC_DEFINE(HAVE_AVAILABILITYMACROS_H, 1, [ Define if we have AvailabilityMacros.h on Mac OS X ])])
++
+ dnl If Carbon is found, assume we don't want X11
+ dnl unless it was specifically asked for (--with-x)
+ dnl or Motif, Athena or GTK GUI is used.
+*** ../vim-7.4.054/src/auto/configure 2013-10-02 18:22:58.000000000 +0200
+--- src/auto/configure 2013-11-02 21:00:40.000000000 +0100
+***************
+*** 4223,4229 ****
+ OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
+ CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
+
+! # On IRIX 5.3, sys/types and inttypes.h are conflicting.
+ for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+ do :
+--- 4223,4229 ----
+ OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
+ CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
+
+! # On IRIX 5.3, sys/types and inttypes.h are conflicting.
+ for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+ do :
+***************
+*** 4241,4247 ****
+ done
+
+
+! ac_fn_c_check_header_mongrel "$LINENO" "Carbon/Carbon.h" "ac_cv_header_Carbon_Carbon_h" "$ac_includes_default"
+ if test "x$ac_cv_header_Carbon_Carbon_h" = x""yes; then :
+ CARBON=yes
+ fi
+--- 4241,4256 ----
+ done
+
+
+! ac_fn_c_check_header_mongrel "$LINENO" "AvailabilityMacros.h" "ac_cv_header_AvailabilityMacros_h" "$ac_includes_default"
+! if test "x$ac_cv_header_AvailabilityMacros_h" = x""yes; then :
+!
+! $as_echo "#define HAVE_AVAILABILITYMACROS_H 1" >>confdefs.h
+!
+! fi
+!
+!
+!
+! ac_fn_c_check_header_mongrel "$LINENO" "Carbon/Carbon.h" "ac_cv_header_Carbon_Carbon_h" "$ac_includes_default"
+ if test "x$ac_cv_header_Carbon_Carbon_h" = x""yes; then :
+ CARBON=yes
+ fi
+*** ../vim-7.4.054/src/os_mac.h 2013-05-06 04:06:04.000000000 +0200
+--- src/os_mac.h 2013-11-02 20:59:46.000000000 +0100
+***************
+*** 16,21 ****
+--- 16,26 ----
+ # define OPAQUE_TOOLBOX_STRUCTS 0
+ #endif
+
++ /* Include MAC_OS_X_VERSION_* macros */
++ #ifdef HAVE_AVAILABILITYMACROS_H
++ # include <AvailabilityMacros.h>
++ #endif
++
+ /*
+ * Macintosh machine-dependent things.
+ *
+***************
+*** 263,269 ****
+ #endif
+
+ /* Some "prep work" definition to be able to compile the MacOS X
+! * version with os_unix.x instead of os_mac.c. Based on the result
+ * of ./configure for console MacOS X.
+ */
+
+--- 268,274 ----
+ #endif
+
+ /* Some "prep work" definition to be able to compile the MacOS X
+! * version with os_unix.c instead of os_mac.c. Based on the result
+ * of ./configure for console MacOS X.
+ */
+
+*** ../vim-7.4.054/src/version.c 2013-11-02 04:39:34.000000000 +0100
+--- src/version.c 2013-11-02 21:01:10.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 55,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.056 b/patches/source/vim/patches/7.4.056
new file mode 100644
index 00000000..e8c1a346
--- /dev/null
+++ b/patches/source/vim/patches/7.4.056
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.056
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.056
+Problem: Mac: Compilation problem with OS X 10.9 Mavericks.
+Solution: Include AvailabilityMacros.h when available. (Kazunobu Kuriyama)
+Files: src/os_unix.c
+
+
+*** ../vim-7.4.055/src/os_unix.c 2013-09-05 21:41:35.000000000 +0200
+--- src/os_unix.c 2013-11-02 21:46:05.000000000 +0100
+***************
+*** 804,809 ****
+--- 804,815 ----
+ * completely full.
+ */
+
++ #if defined(HAVE_AVAILABILITYMACROS_H) \
++ && defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) \
++ && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090)
++ # include <AvailabilityMacros.h>
++ #endif
++
+ #ifndef SIGSTKSZ
+ # define SIGSTKSZ 8000 /* just a guess of how much stack is needed... */
+ #endif
+*** ../vim-7.4.055/src/version.c 2013-11-02 21:04:32.000000000 +0100
+--- src/version.c 2013-11-02 21:44:10.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 56,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.057 b/patches/source/vim/patches/7.4.057
new file mode 100644
index 00000000..aee16b6a
--- /dev/null
+++ b/patches/source/vim/patches/7.4.057
@@ -0,0 +1,252 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.057
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.057
+Problem: byteidx() does not work for composing characters.
+Solution: Add byteidxcomp().
+Files: src/eval.c, src/testdir/test69.in, src/testdir/test69.ok,
+ runtime/doc/eval.txt
+
+
+*** ../vim-7.4.056/src/eval.c 2013-10-02 16:46:23.000000000 +0200
+--- src/eval.c 2013-11-02 22:30:08.000000000 +0100
+***************
+*** 474,480 ****
+--- 474,482 ----
+ static void f_bufnr __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_bufwinnr __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_byte2line __ARGS((typval_T *argvars, typval_T *rettv));
++ static void byteidx __ARGS((typval_T *argvars, typval_T *rettv, int comp));
+ static void f_byteidx __ARGS((typval_T *argvars, typval_T *rettv));
++ static void f_byteidxcomp __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_call __ARGS((typval_T *argvars, typval_T *rettv));
+ #ifdef FEAT_FLOAT
+ static void f_ceil __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 7861,7866 ****
+--- 7863,7869 ----
+ {"bufwinnr", 1, 1, f_bufwinnr},
+ {"byte2line", 1, 1, f_byte2line},
+ {"byteidx", 2, 2, f_byteidx},
++ {"byteidxcomp", 2, 2, f_byteidxcomp},
+ {"call", 2, 3, f_call},
+ #ifdef FEAT_FLOAT
+ {"ceil", 1, 1, f_ceil},
+***************
+*** 9177,9189 ****
+ #endif
+ }
+
+- /*
+- * "byteidx()" function
+- */
+ static void
+! f_byteidx(argvars, rettv)
+ typval_T *argvars;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_MBYTE
+ char_u *t;
+--- 9180,9190 ----
+ #endif
+ }
+
+ static void
+! byteidx(argvars, rettv, comp)
+ typval_T *argvars;
+ typval_T *rettv;
++ int comp;
+ {
+ #ifdef FEAT_MBYTE
+ char_u *t;
+***************
+*** 9203,9209 ****
+ {
+ if (*t == NUL) /* EOL reached */
+ return;
+! t += (*mb_ptr2len)(t);
+ }
+ rettv->vval.v_number = (varnumber_T)(t - str);
+ #else
+--- 9204,9213 ----
+ {
+ if (*t == NUL) /* EOL reached */
+ return;
+! if (enc_utf8 && comp)
+! t += utf_ptr2len(t);
+! else
+! t += (*mb_ptr2len)(t);
+ }
+ rettv->vval.v_number = (varnumber_T)(t - str);
+ #else
+***************
+*** 9212,9217 ****
+--- 9216,9243 ----
+ #endif
+ }
+
++ /*
++ * "byteidx()" function
++ */
++ static void
++ f_byteidx(argvars, rettv)
++ typval_T *argvars;
++ typval_T *rettv;
++ {
++ byteidx(argvars, rettv, FALSE);
++ }
++
++ /*
++ * "byteidxcomp()" function
++ */
++ static void
++ f_byteidxcomp(argvars, rettv)
++ typval_T *argvars;
++ typval_T *rettv;
++ {
++ byteidx(argvars, rettv, TRUE);
++ }
++
+ int
+ func_call(name, args, selfdict, rettv)
+ char_u *name;
+*** ../vim-7.4.056/src/testdir/test69.in 2013-03-07 18:30:50.000000000 +0100
+--- src/testdir/test69.in 2013-11-02 22:46:02.000000000 +0100
+***************
+*** 1,6 ****
+--- 1,7 ----
+ Test for multi-byte text formatting.
+ Also test, that 'mps' with multibyte chars works.
+ And test "ra" on multi-byte characters.
++ Also test byteidx() and byteidxcomp()
+
+ STARTTEST
+ :so mbyte.vim
+***************
+*** 154,159 ****
+--- 155,175 ----
+ aab
+
+ STARTTEST
++ :let a = '.é.' " one char of two bytes
++ :let b = '.é.' " normal e with composing char
++ /^byteidx
++ :put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteidx(a, 4)])
++ :put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteidx(b, 4)])
++ /^byteidxcomp
++ :put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcomp(a, 3), byteidxcomp(a, 4)])
++ :let b = '.é.'
++ :put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])
++ ENDTEST
++
++ byteidx
++ byteidxcomp
++
++ STARTTEST
+ :g/^STARTTEST/.,/^ENDTEST/d
+ :1;/^Results/,$wq! test.out
+ ENDTEST
+*** ../vim-7.4.056/src/testdir/test69.ok 2013-03-07 18:31:32.000000000 +0100
+--- src/testdir/test69.ok 2013-11-02 22:43:25.000000000 +0100
+***************
+*** 149,151 ****
+--- 149,159 ----
+ aaaa
+ aaa
+
++
++ byteidx
++ [0, 1, 3, 4, -1]
++ [0, 1, 4, 5, -1]
++ byteidxcomp
++ [0, 1, 3, 4, -1]
++ [0, 1, 2, 4, 5, -1]
++
+*** ../vim-7.4.056/runtime/doc/eval.txt 2013-08-10 13:24:53.000000000 +0200
+--- runtime/doc/eval.txt 2013-11-02 23:27:24.000000000 +0100
+***************
+*** 1712,1717 ****
+--- 1713,1719 ----
+ bufwinnr( {expr}) Number window number of buffer {expr}
+ byte2line( {byte}) Number line number at byte count {byte}
+ byteidx( {expr}, {nr}) Number byte index of {nr}'th char in {expr}
++ byteidxcomp( {expr}, {nr}) Number byte index of {nr}'th char in {expr}
+ call( {func}, {arglist} [, {dict}])
+ any call {func} with arguments {arglist}
+ ceil( {expr}) Float round {expr} up
+***************
+*** 2260,2266 ****
+ {expr}. Use zero for the first character, it returns zero.
+ This function is only useful when there are multibyte
+ characters, otherwise the returned value is equal to {nr}.
+! Composing characters are counted as a separate character.
+ Example : >
+ echo matchstr(str, ".", byteidx(str, 3))
+ < will display the fourth character. Another way to do the
+--- 2262,2271 ----
+ {expr}. Use zero for the first character, it returns zero.
+ This function is only useful when there are multibyte
+ characters, otherwise the returned value is equal to {nr}.
+! Composing characters are not counted separately, their byte
+! length is added to the preceding base character. See
+! |byteidxcomp()| below for counting composing characters
+! separately.
+ Example : >
+ echo matchstr(str, ".", byteidx(str, 3))
+ < will display the fourth character. Another way to do the
+***************
+*** 2269,2275 ****
+ echo strpart(s, 0, byteidx(s, 1))
+ < If there are less than {nr} characters -1 is returned.
+ If there are exactly {nr} characters the length of the string
+! is returned.
+
+ call({func}, {arglist} [, {dict}]) *call()* *E699*
+ Call function {func} with the items in |List| {arglist} as
+--- 2274,2293 ----
+ echo strpart(s, 0, byteidx(s, 1))
+ < If there are less than {nr} characters -1 is returned.
+ If there are exactly {nr} characters the length of the string
+! in bytes is returned.
+!
+! byteidxcomp({expr}, {nr}) *byteidxcomp()*
+! Like byteidx(), except that a composing character is counted
+! as a separate character. Example: >
+! let s = 'e' . nr2char(0x301)
+! echo byteidx(s, 1)
+! echo byteidxcomp(s, 1)
+! echo byteidxcomp(s, 2)
+! < The first and third echo result in 3 ('e' plus composing
+! character is 3 bytes), the second echo results in 1 ('e' is
+! one byte).
+! Only works different from byteidx() when 'encoding' is set to
+! a Unicode encoding.
+
+ call({func}, {arglist} [, {dict}]) *call()* *E699*
+ Call function {func} with the items in |List| {arglist} as
+*** ../vim-7.4.056/src/version.c 2013-11-02 21:49:28.000000000 +0100
+--- src/version.c 2013-11-02 22:45:13.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 57,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.058 b/patches/source/vim/patches/7.4.058
new file mode 100644
index 00000000..0715c848
--- /dev/null
+++ b/patches/source/vim/patches/7.4.058
@@ -0,0 +1,67 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.058
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.058
+Problem: Warnings on 64 bit Windows.
+Solution: Add type casts. (Mike Williams)
+Files: src/ops.c
+
+
+*** ../vim-7.4.057/src/ops.c 2013-10-06 17:46:48.000000000 +0200
+--- src/ops.c 2013-11-02 23:56:15.000000000 +0100
+***************
+*** 5009,5022 ****
+ if (second_indent > 0) /* the "leader" for FO_Q_SECOND */
+ {
+ char_u *p = ml_get_curline();
+! int indent = skipwhite(p) - p;
+
+ if (indent > 0)
+ {
+ (void)del_bytes(indent, FALSE, FALSE);
+ mark_col_adjust(curwin->w_cursor.lnum,
+ (colnr_T)0, 0L, (long)-indent);
+! }
+ }
+ curwin->w_cursor.lnum--;
+ if (do_join(2, TRUE, FALSE, FALSE) == FAIL)
+--- 5009,5022 ----
+ if (second_indent > 0) /* the "leader" for FO_Q_SECOND */
+ {
+ char_u *p = ml_get_curline();
+! int indent = (int)(skipwhite(p) - p);
+
+ if (indent > 0)
+ {
+ (void)del_bytes(indent, FALSE, FALSE);
+ mark_col_adjust(curwin->w_cursor.lnum,
+ (colnr_T)0, 0L, (long)-indent);
+! }
+ }
+ curwin->w_cursor.lnum--;
+ if (do_join(2, TRUE, FALSE, FALSE) == FAIL)
+*** ../vim-7.4.057/src/version.c 2013-11-02 23:29:17.000000000 +0100
+--- src/version.c 2013-11-02 23:55:01.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 58,
+ /**/
+
+--
+Citizens are not allowed to attend a movie house or theater nor ride in a
+public streetcar within at least four hours after eating garlic.
+ [real standing law in Indiana, 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/patches/source/vim/patches/7.4.059 b/patches/source/vim/patches/7.4.059
new file mode 100644
index 00000000..b00cbfe0
--- /dev/null
+++ b/patches/source/vim/patches/7.4.059
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.059
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.059
+Problem: set_last_cursor() may encounter w_buffer being NULL. (Matt
+ Mkaniaris)
+Solution: Check for NULL.
+Files: src/mark.c
+
+
+*** ../vim-7.4.058/src/mark.c 2013-08-02 17:22:10.000000000 +0200
+--- src/mark.c 2013-11-03 00:18:35.000000000 +0100
+***************
+*** 1374,1380 ****
+ set_last_cursor(win)
+ win_T *win;
+ {
+! win->w_buffer->b_last_cursor = win->w_cursor;
+ }
+
+ #if defined(EXITFREE) || defined(PROTO)
+--- 1374,1381 ----
+ set_last_cursor(win)
+ win_T *win;
+ {
+! if (win->w_buffer != NULL)
+! win->w_buffer->b_last_cursor = win->w_cursor;
+ }
+
+ #if defined(EXITFREE) || defined(PROTO)
+*** ../vim-7.4.058/src/version.c 2013-11-02 23:59:30.000000000 +0100
+--- src/version.c 2013-11-03 00:17:55.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 59,
+ /**/
+
+--
+How do you know when you have run out of invisible ink?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.060 b/patches/source/vim/patches/7.4.060
new file mode 100644
index 00000000..d6a76727
--- /dev/null
+++ b/patches/source/vim/patches/7.4.060
@@ -0,0 +1,71 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.060
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.060
+Problem: Declaration has wrong return type for PyObject_SetAttrString().
+Solution: Use int instead of PyObject. (Andreas Schwab)
+Files: src/if_python.c, src/if_python3.c
+
+
+*** ../vim-7.4.059/src/if_python.c 2013-07-09 21:40:11.000000000 +0200
+--- src/if_python.c 2013-11-03 00:24:57.000000000 +0100
+***************
+*** 359,365 ****
+ static PyObject *(*dll_PyRun_String)(char *, int, PyObject *, PyObject *);
+ static PyObject* (*dll_PyObject_GetAttrString)(PyObject *, const char *);
+ static int (*dll_PyObject_HasAttrString)(PyObject *, const char *);
+! static PyObject* (*dll_PyObject_SetAttrString)(PyObject *, const char *, PyObject *);
+ static PyObject* (*dll_PyObject_CallFunctionObjArgs)(PyObject *, ...);
+ static PyObject* (*dll_PyObject_CallFunction)(PyObject *, char *, ...);
+ static PyObject* (*dll_PyObject_Call)(PyObject *, PyObject *, PyObject *);
+--- 359,365 ----
+ static PyObject *(*dll_PyRun_String)(char *, int, PyObject *, PyObject *);
+ static PyObject* (*dll_PyObject_GetAttrString)(PyObject *, const char *);
+ static int (*dll_PyObject_HasAttrString)(PyObject *, const char *);
+! static int (*dll_PyObject_SetAttrString)(PyObject *, const char *, PyObject *);
+ static PyObject* (*dll_PyObject_CallFunctionObjArgs)(PyObject *, ...);
+ static PyObject* (*dll_PyObject_CallFunction)(PyObject *, char *, ...);
+ static PyObject* (*dll_PyObject_Call)(PyObject *, PyObject *, PyObject *);
+*** ../vim-7.4.059/src/if_python3.c 2013-07-09 21:53:21.000000000 +0200
+--- src/if_python3.c 2013-11-03 00:24:57.000000000 +0100
+***************
+*** 302,308 ****
+ static PyObject* (*py3_PyRun_String)(char *, int, PyObject *, PyObject *);
+ static PyObject* (*py3_PyObject_GetAttrString)(PyObject *, const char *);
+ static int (*py3_PyObject_HasAttrString)(PyObject *, const char *);
+! static PyObject* (*py3_PyObject_SetAttrString)(PyObject *, const char *, PyObject *);
+ static PyObject* (*py3_PyObject_CallFunctionObjArgs)(PyObject *, ...);
+ static PyObject* (*py3__PyObject_CallFunction_SizeT)(PyObject *, char *, ...);
+ static PyObject* (*py3_PyObject_Call)(PyObject *, PyObject *, PyObject *);
+--- 302,308 ----
+ static PyObject* (*py3_PyRun_String)(char *, int, PyObject *, PyObject *);
+ static PyObject* (*py3_PyObject_GetAttrString)(PyObject *, const char *);
+ static int (*py3_PyObject_HasAttrString)(PyObject *, const char *);
+! static int (*py3_PyObject_SetAttrString)(PyObject *, const char *, PyObject *);
+ static PyObject* (*py3_PyObject_CallFunctionObjArgs)(PyObject *, ...);
+ static PyObject* (*py3__PyObject_CallFunction_SizeT)(PyObject *, char *, ...);
+ static PyObject* (*py3_PyObject_Call)(PyObject *, PyObject *, PyObject *);
+*** ../vim-7.4.059/src/version.c 2013-11-03 00:20:46.000000000 +0100
+--- src/version.c 2013-11-03 00:26:19.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 60,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.061 b/patches/source/vim/patches/7.4.061
new file mode 100644
index 00000000..ebd5b2d7
--- /dev/null
+++ b/patches/source/vim/patches/7.4.061
@@ -0,0 +1,144 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.061
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.061 (after 7.4.055 and 7.4.056)
+Problem: Availability macros configure check in wrong place.
+Solution: Also check when not using Darwin. Remove version check.
+Files: src/configure.in, src/auto/configure, src/os_unix.c
+
+
+*** ../vim-7.4.060/src/configure.in 2013-11-02 21:04:32.000000000 +0100
+--- src/configure.in 2013-11-03 00:34:07.000000000 +0100
+***************
+*** 206,215 ****
+ dnl TODO: use -arch i386 on Intel machines
+ CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
+
+- dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon
+- dnl so we need to include it to have access to version macros.
+- AC_CHECK_HEADER(AvailabilityMacros.h, [AC_DEFINE(HAVE_AVAILABILITYMACROS_H, 1, [ Define if we have AvailabilityMacros.h on Mac OS X ])])
+-
+ dnl If Carbon is found, assume we don't want X11
+ dnl unless it was specifically asked for (--with-x)
+ dnl or Motif, Athena or GTK GUI is used.
+--- 206,211 ----
+***************
+*** 232,237 ****
+--- 228,237 ----
+ AC_MSG_RESULT(no)
+ fi
+
++ dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon
++ dnl so we need to include it to have access to version macros.
++ AC_CHECK_HEADER(AvailabilityMacros.h, HAVE_AVAILABILITYMACROS_H=1)
++
+ AC_SUBST(OS_EXTRA_SRC)
+ AC_SUBST(OS_EXTRA_OBJ)
+
+*** ../vim-7.4.060/src/auto/configure 2013-11-02 21:04:32.000000000 +0100
+--- src/auto/configure 2013-11-03 00:36:20.000000000 +0100
+***************
+*** 4223,4229 ****
+ OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
+ CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
+
+! # On IRIX 5.3, sys/types and inttypes.h are conflicting.
+ for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+ do :
+--- 4223,4229 ----
+ OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
+ CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
+
+! # On IRIX 5.3, sys/types and inttypes.h are conflicting.
+ for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+ do :
+***************
+*** 4241,4256 ****
+ done
+
+
+! ac_fn_c_check_header_mongrel "$LINENO" "AvailabilityMacros.h" "ac_cv_header_AvailabilityMacros_h" "$ac_includes_default"
+! if test "x$ac_cv_header_AvailabilityMacros_h" = x""yes; then :
+!
+! $as_echo "#define HAVE_AVAILABILITYMACROS_H 1" >>confdefs.h
+!
+! fi
+!
+!
+!
+! ac_fn_c_check_header_mongrel "$LINENO" "Carbon/Carbon.h" "ac_cv_header_Carbon_Carbon_h" "$ac_includes_default"
+ if test "x$ac_cv_header_Carbon_Carbon_h" = x""yes; then :
+ CARBON=yes
+ fi
+--- 4241,4247 ----
+ done
+
+
+! ac_fn_c_check_header_mongrel "$LINENO" "Carbon/Carbon.h" "ac_cv_header_Carbon_Carbon_h" "$ac_includes_default"
+ if test "x$ac_cv_header_Carbon_Carbon_h" = x""yes; then :
+ CARBON=yes
+ fi
+***************
+*** 4272,4277 ****
+--- 4263,4275 ----
+ $as_echo "no" >&6; }
+ fi
+
++ ac_fn_c_check_header_mongrel "$LINENO" "AvailabilityMacros.h" "ac_cv_header_AvailabilityMacros_h" "$ac_includes_default"
++ if test "x$ac_cv_header_AvailabilityMacros_h" = x""yes; then :
++ HAVE_AVAILABILITYMACROS_H=1
++ fi
++
++
++
+
+
+
+*** ../vim-7.4.060/src/os_unix.c 2013-11-02 21:49:28.000000000 +0100
+--- src/os_unix.c 2013-11-03 00:34:29.000000000 +0100
+***************
+*** 804,812 ****
+ * completely full.
+ */
+
+! #if defined(HAVE_AVAILABILITYMACROS_H) \
+! && defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) \
+! && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090)
+ # include <AvailabilityMacros.h>
+ #endif
+
+--- 804,810 ----
+ * completely full.
+ */
+
+! #if defined(HAVE_AVAILABILITYMACROS_H)
+ # include <AvailabilityMacros.h>
+ #endif
+
+*** ../vim-7.4.060/src/version.c 2013-11-03 00:28:20.000000000 +0100
+--- src/version.c 2013-11-03 00:37:02.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 61,
+ /**/
+
+--
+It is illegal to rob a bank and then shoot at the bank teller with a water
+pistol.
+ [real standing law in Louisana, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.062 b/patches/source/vim/patches/7.4.062
new file mode 100644
index 00000000..dad0a420
--- /dev/null
+++ b/patches/source/vim/patches/7.4.062
@@ -0,0 +1,87 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.062
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.062 (after 7.4.061)
+Problem: Configure check for AvailabilityMacros.h is wrong.
+Solution: Use AC_CHECK_HEADERS().
+Files: src/configure.in, src/auto/configure
+
+
+*** ../vim-7.4.061/src/configure.in 2013-11-03 00:40:54.000000000 +0100
+--- src/configure.in 2013-11-03 20:19:42.000000000 +0100
+***************
+*** 230,236 ****
+
+ dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon
+ dnl so we need to include it to have access to version macros.
+! AC_CHECK_HEADER(AvailabilityMacros.h, HAVE_AVAILABILITYMACROS_H=1)
+
+ AC_SUBST(OS_EXTRA_SRC)
+ AC_SUBST(OS_EXTRA_OBJ)
+--- 230,236 ----
+
+ dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon
+ dnl so we need to include it to have access to version macros.
+! AC_CHECK_HEADERS(AvailabilityMacros.h)
+
+ AC_SUBST(OS_EXTRA_SRC)
+ AC_SUBST(OS_EXTRA_OBJ)
+*** ../vim-7.4.061/src/auto/configure 2013-11-03 00:40:54.000000000 +0100
+--- src/auto/configure 2013-11-03 20:22:56.000000000 +0100
+***************
+*** 4263,4273 ****
+ $as_echo "no" >&6; }
+ fi
+
+! ac_fn_c_check_header_mongrel "$LINENO" "AvailabilityMacros.h" "ac_cv_header_AvailabilityMacros_h" "$ac_includes_default"
+ if test "x$ac_cv_header_AvailabilityMacros_h" = x""yes; then :
+! HAVE_AVAILABILITYMACROS_H=1
+ fi
+
+
+
+
+--- 4263,4279 ----
+ $as_echo "no" >&6; }
+ fi
+
+! for ac_header in AvailabilityMacros.h
+! do :
+! ac_fn_c_check_header_mongrel "$LINENO" "AvailabilityMacros.h" "ac_cv_header_AvailabilityMacros_h" "$ac_includes_default"
+ if test "x$ac_cv_header_AvailabilityMacros_h" = x""yes; then :
+! cat >>confdefs.h <<_ACEOF
+! #define HAVE_AVAILABILITYMACROS_H 1
+! _ACEOF
+!
+ fi
+
++ done
+
+
+
+*** ../vim-7.4.061/src/version.c 2013-11-03 00:40:54.000000000 +0100
+--- src/version.c 2013-11-03 20:25:31.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 62,
+ /**/
+
+--
+Yesterday, all my deadlines seemed so far away
+now it looks as though it's freeze in four days
+oh I believe in cvs..
+ [ 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/patches/source/vim/patches/7.4.063 b/patches/source/vim/patches/7.4.063
new file mode 100644
index 00000000..b72b0b76
--- /dev/null
+++ b/patches/source/vim/patches/7.4.063
@@ -0,0 +1,105 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.063
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.063
+Problem: Crash when using invalid key in Python dictionary.
+Solution: Check for object to be NULL. Add tests. (ZyX)
+Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok,
+ src/testdir/test87.in, src/testdir/test87.ok
+
+
+*** ../vim-7.4.062/src/if_py_both.h 2013-07-24 17:09:19.000000000 +0200
+--- src/if_py_both.h 2013-11-04 00:27:40.000000000 +0100
+***************
+*** 1624,1629 ****
+--- 1624,1632 ----
+ PyObject *rObj = _DictionaryItem(self, keyObject, DICT_FLAG_RETURN_BOOL);
+ int ret;
+
++ if (rObj == NULL)
++ return -1;
++
+ ret = (rObj == Py_True);
+
+ Py_DECREF(rObj);
+*** ../vim-7.4.062/src/testdir/test86.in 2013-07-13 14:00:31.000000000 +0200
+--- src/testdir/test86.in 2013-11-04 00:27:11.000000000 +0100
+***************
+*** 1088,1093 ****
+--- 1088,1096 ----
+ stringtochars_test('d.get(%s)')
+ ee('d.pop("a")')
+ ee('dl.pop("a")')
++ cb.append(">> DictionaryContains")
++ ee('"" in d')
++ ee('0 in d')
+ cb.append(">> DictionaryIterNext")
+ ee('for i in ned: ned["a"] = 1')
+ del i
+*** ../vim-7.4.062/src/testdir/test86.ok 2013-06-23 16:38:39.000000000 +0200
+--- src/testdir/test86.ok 2013-11-04 00:27:11.000000000 +0100
+***************
+*** 516,521 ****
+--- 516,524 ----
+ <<< Finished
+ d.pop("a"):KeyError:('a',)
+ dl.pop("a"):error:('dictionary is locked',)
++ >> DictionaryContains
++ "" in d:ValueError:('empty keys are not allowed',)
++ 0 in d:TypeError:('expected str() or unicode() instance, but got int',)
+ >> DictionaryIterNext
+ for i in ned: ned["a"] = 1:RuntimeError:('hashtab changed during iteration',)
+ >> DictionaryAssItem
+*** ../vim-7.4.062/src/testdir/test87.in 2013-07-06 13:41:30.000000000 +0200
+--- src/testdir/test87.in 2013-11-04 00:27:11.000000000 +0100
+***************
+*** 1039,1044 ****
+--- 1039,1047 ----
+ stringtochars_test('d.get(%s)')
+ ee('d.pop("a")')
+ ee('dl.pop("a")')
++ cb.append(">> DictionaryContains")
++ ee('"" in d')
++ ee('0 in d')
+ cb.append(">> DictionaryIterNext")
+ ee('for i in ned: ned["a"] = 1')
+ del i
+*** ../vim-7.4.062/src/testdir/test87.ok 2013-06-23 16:38:39.000000000 +0200
+--- src/testdir/test87.ok 2013-11-04 00:27:11.000000000 +0100
+***************
+*** 505,510 ****
+--- 505,513 ----
+ <<< Finished
+ d.pop("a"):(<class 'KeyError'>, KeyError('a',))
+ dl.pop("a"):(<class 'vim.error'>, error('dictionary is locked',))
++ >> DictionaryContains
++ "" in d:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
++ 0 in d:(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
+ >> DictionaryIterNext
+ for i in ned: ned["a"] = 1:(<class 'RuntimeError'>, RuntimeError('hashtab changed during iteration',))
+ >> DictionaryAssItem
+*** ../vim-7.4.062/src/version.c 2013-11-03 20:26:27.000000000 +0100
+--- src/version.c 2013-11-04 00:26:39.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 63,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.064 b/patches/source/vim/patches/7.4.064
new file mode 100644
index 00000000..77132085
--- /dev/null
+++ b/patches/source/vim/patches/7.4.064
Binary files differ
diff --git a/patches/source/vim/patches/7.4.065 b/patches/source/vim/patches/7.4.065
new file mode 100644
index 00000000..fd17fa06
--- /dev/null
+++ b/patches/source/vim/patches/7.4.065
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.065
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.065
+Problem: When recording, the character typed at the hit-enter prompt is
+ recorded twice. (Urtica Dioica)
+Solution: Avoid recording the character twice. (Christian Brabandt)
+Files: src/message.c
+
+
+*** ../vim-7.4.064/src/message.c 2013-08-09 20:30:45.000000000 +0200
+--- src/message.c 2013-11-04 01:56:09.000000000 +0100
+***************
+*** 887,892 ****
+--- 887,894 ----
+ int oldState;
+ int tmpState;
+ int had_got_int;
++ int save_Recording;
++ FILE *save_scriptout;
+
+ if (redraw == TRUE)
+ must_redraw = CLEAR;
+***************
+*** 957,967 ****
+--- 959,979 ----
+ * typeahead buffer. */
+ ++no_mapping;
+ ++allow_keys;
++
++ /* Temporarily disable Recording. If Recording is active, the
++ * character will be recorded later, since it will be added to the
++ * typebuf after the loop */
++ save_Recording = Recording;
++ save_scriptout = scriptout;
++ Recording = FALSE;
++ scriptout = NULL;
+ c = safe_vgetc();
+ if (had_got_int && !global_busy)
+ got_int = FALSE;
+ --no_mapping;
+ --allow_keys;
++ Recording = save_Recording;
++ scriptout = save_scriptout;
+
+ #ifdef FEAT_CLIPBOARD
+ /* Strange way to allow copying (yanking) a modeless selection at
+*** ../vim-7.4.064/src/version.c 2013-11-04 01:41:11.000000000 +0100
+--- src/version.c 2013-11-04 01:53:19.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 65,
+ /**/
+
+--
+Zen Microsystems: we're the om in .commmmmmmmm
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.066 b/patches/source/vim/patches/7.4.066
new file mode 100644
index 00000000..edab0926
--- /dev/null
+++ b/patches/source/vim/patches/7.4.066
@@ -0,0 +1,354 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.066
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.066
+Problem: MS-Windows: When there is a colon in the file name (sub-stream
+ feature) the swap file name is wrong.
+Solution: Change the colon to "%". (Yasuhiro Matsumoto)
+Files: src/fileio.c, src/memline.c, src/misc1.c, src/proto/misc1.pro
+
+
+*** ../vim-7.4.065/src/memline.c 2013-05-06 04:01:02.000000000 +0200
+--- src/memline.c 2013-11-04 02:52:44.000000000 +0100
+***************
+*** 4014,4019 ****
+--- 4014,4026 ----
+ else
+ retval = concat_fnames(dname, tail, TRUE);
+
++ #ifdef WIN3264
++ if (retval != NULL)
++ for (t = gettail(retval); *t != NUL; mb_ptr_adv(t))
++ if (*t == ':')
++ *t = '%';
++ #endif
++
+ return retval;
+ }
+
+***************
+*** 4137,4148 ****
+ #ifndef SHORT_FNAME
+ int r;
+ #endif
+
+ #if !defined(SHORT_FNAME) \
+! && ((!defined(UNIX) && !defined(OS2)) || defined(ARCHIE))
+ # define CREATE_DUMMY_FILE
+ FILE *dummyfd = NULL;
+
+ /*
+ * If we start editing a new file, e.g. "test.doc", which resides on an
+ * MSDOS compatible filesystem, it is possible that the file
+--- 4144,4172 ----
+ #ifndef SHORT_FNAME
+ int r;
+ #endif
++ char_u *buf_fname = buf->b_fname;
+
+ #if !defined(SHORT_FNAME) \
+! && ((!defined(UNIX) && !defined(OS2)) || defined(ARCHIE))
+ # define CREATE_DUMMY_FILE
+ FILE *dummyfd = NULL;
+
++ # ifdef WIN3264
++ if (buf_fname != NULL && !mch_isFullName(buf_fname)
++ && vim_strchr(gettail(buf_fname), ':'))
++ {
++ char_u *t;
++
++ buf_fname = vim_strsave(buf_fname);
++ if (buf_fname == NULL)
++ buf_fname = buf->b_fname;
++ else
++ for (t = gettail(buf_fname); *t != NUL; mb_ptr_adv(t))
++ if (*t == ':')
++ *t = '%';
++ }
++ # endif
++
+ /*
+ * If we start editing a new file, e.g. "test.doc", which resides on an
+ * MSDOS compatible filesystem, it is possible that the file
+***************
+*** 4150,4158 ****
+ * this problem we temporarily create "test.doc". Don't do this when the
+ * check below for a 8.3 file name is used.
+ */
+! if (!(buf->b_p_sn || buf->b_shortname) && buf->b_fname != NULL
+! && mch_getperm(buf->b_fname) < 0)
+! dummyfd = mch_fopen((char *)buf->b_fname, "w");
+ #endif
+
+ /*
+--- 4174,4182 ----
+ * this problem we temporarily create "test.doc". Don't do this when the
+ * check below for a 8.3 file name is used.
+ */
+! if (!(buf->b_p_sn || buf->b_shortname) && buf_fname != NULL
+! && mch_getperm(buf_fname) < 0)
+! dummyfd = mch_fopen((char *)buf_fname, "w");
+ #endif
+
+ /*
+***************
+*** 4171,4177 ****
+ if (dir_name == NULL) /* out of memory */
+ fname = NULL;
+ else
+! fname = makeswapname(buf->b_fname, buf->b_ffname, buf, dir_name);
+
+ for (;;)
+ {
+--- 4195,4201 ----
+ if (dir_name == NULL) /* out of memory */
+ fname = NULL;
+ else
+! fname = makeswapname(buf_fname, buf->b_ffname, buf, dir_name);
+
+ for (;;)
+ {
+***************
+*** 4204,4210 ****
+ * It either contains two dots, is longer than 8 chars, or starts
+ * with a dot.
+ */
+! tail = gettail(buf->b_fname);
+ if ( vim_strchr(tail, '.') != NULL
+ || STRLEN(tail) > (size_t)8
+ || *gettail(fname) == '.')
+--- 4228,4234 ----
+ * It either contains two dots, is longer than 8 chars, or starts
+ * with a dot.
+ */
+! tail = gettail(buf_fname);
+ if ( vim_strchr(tail, '.') != NULL
+ || STRLEN(tail) > (size_t)8
+ || *gettail(fname) == '.')
+***************
+*** 4273,4279 ****
+ {
+ buf->b_shortname = TRUE;
+ vim_free(fname);
+! fname = makeswapname(buf->b_fname, buf->b_ffname,
+ buf, dir_name);
+ continue; /* try again with b_shortname set */
+ }
+--- 4297,4303 ----
+ {
+ buf->b_shortname = TRUE;
+ vim_free(fname);
+! fname = makeswapname(buf_fname, buf->b_ffname,
+ buf, dir_name);
+ continue; /* try again with b_shortname set */
+ }
+***************
+*** 4344,4350 ****
+ {
+ buf->b_shortname = TRUE;
+ vim_free(fname);
+! fname = makeswapname(buf->b_fname, buf->b_ffname,
+ buf, dir_name);
+ continue; /* try again with '.' replaced with '_' */
+ }
+--- 4368,4374 ----
+ {
+ buf->b_shortname = TRUE;
+ vim_free(fname);
+! fname = makeswapname(buf_fname, buf->b_ffname,
+ buf, dir_name);
+ continue; /* try again with '.' replaced with '_' */
+ }
+***************
+*** 4356,4362 ****
+ * viewing a help file or when the path of the file is different
+ * (happens when all .swp files are in one directory).
+ */
+! if (!recoverymode && buf->b_fname != NULL
+ && !buf->b_help && !(buf->b_flags & BF_DUMMY))
+ {
+ int fd;
+--- 4380,4386 ----
+ * viewing a help file or when the path of the file is different
+ * (happens when all .swp files are in one directory).
+ */
+! if (!recoverymode && buf_fname != NULL
+ && !buf->b_help && !(buf->b_flags & BF_DUMMY))
+ {
+ int fd;
+***************
+*** 4433,4439 ****
+ {
+ fclose(dummyfd);
+ dummyfd = NULL;
+! mch_remove(buf->b_fname);
+ did_use_dummy = TRUE;
+ }
+ #endif
+--- 4457,4463 ----
+ {
+ fclose(dummyfd);
+ dummyfd = NULL;
+! mch_remove(buf_fname);
+ did_use_dummy = TRUE;
+ }
+ #endif
+***************
+*** 4448,4454 ****
+ * user anyway.
+ */
+ if (swap_exists_action != SEA_NONE
+! && has_autocmd(EVENT_SWAPEXISTS, buf->b_fname, buf))
+ choice = do_swapexists(buf, fname);
+
+ if (choice == 0)
+--- 4472,4478 ----
+ * user anyway.
+ */
+ if (swap_exists_action != SEA_NONE
+! && has_autocmd(EVENT_SWAPEXISTS, buf_fname, buf))
+ choice = do_swapexists(buf, fname);
+
+ if (choice == 0)
+***************
+*** 4549,4555 ****
+ #ifdef CREATE_DUMMY_FILE
+ /* Going to try another name, need the dummy file again. */
+ if (did_use_dummy)
+! dummyfd = mch_fopen((char *)buf->b_fname, "w");
+ #endif
+ }
+ }
+--- 4573,4579 ----
+ #ifdef CREATE_DUMMY_FILE
+ /* Going to try another name, need the dummy file again. */
+ if (did_use_dummy)
+! dummyfd = mch_fopen((char *)buf_fname, "w");
+ #endif
+ }
+ }
+***************
+*** 4581,4589 ****
+ if (dummyfd != NULL) /* file has been created temporarily */
+ {
+ fclose(dummyfd);
+! mch_remove(buf->b_fname);
+ }
+ #endif
+ return fname;
+ }
+
+--- 4605,4617 ----
+ if (dummyfd != NULL) /* file has been created temporarily */
+ {
+ fclose(dummyfd);
+! mch_remove(buf_fname);
+ }
+ #endif
++ #ifdef WIN3264
++ if (buf_fname != buf->b_fname)
++ vim_free(buf_fname);
++ #endif
+ return fname;
+ }
+
+*** ../vim-7.4.065/src/misc1.c 2013-10-06 17:46:48.000000000 +0200
+--- src/misc1.c 2013-11-04 02:44:28.000000000 +0100
+***************
+*** 4808,4816 ****
+
+ if (fname == NULL)
+ return (char_u *)"";
+! for (p1 = p2 = fname; *p2; ) /* find last part of path */
+ {
+! if (vim_ispathsep(*p2))
+ p1 = p2 + 1;
+ mb_ptr_adv(p2);
+ }
+--- 4808,4816 ----
+
+ if (fname == NULL)
+ return (char_u *)"";
+! for (p1 = p2 = get_past_head(fname); *p2; ) /* find last part of path */
+ {
+! if (vim_ispathsep_nocolon(*p2))
+ p1 = p2 + 1;
+ mb_ptr_adv(p2);
+ }
+***************
+*** 4929,4935 ****
+ }
+
+ /*
+! * return TRUE if 'c' is a path separator.
+ */
+ int
+ vim_ispathsep(c)
+--- 4929,4936 ----
+ }
+
+ /*
+! * Return TRUE if 'c' is a path separator.
+! * Note that for MS-Windows this includes the colon.
+ */
+ int
+ vim_ispathsep(c)
+***************
+*** 4952,4957 ****
+--- 4953,4972 ----
+ #endif
+ }
+
++ /*
++ * Like vim_ispathsep(c), but exclude the colon for MS-Windows.
++ */
++ int
++ vim_ispathsep_nocolon(c)
++ int c;
++ {
++ return vim_ispathsep(c)
++ #ifdef BACKSLASH_IN_FILENAME
++ && c != ':'
++ #endif
++ ;
++ }
++
+ #if defined(FEAT_SEARCHPATH) || defined(PROTO)
+ /*
+ * return TRUE if 'c' is a path list separator.
+*** ../vim-7.4.065/src/proto/misc1.pro 2013-08-10 13:37:20.000000000 +0200
+--- src/proto/misc1.pro 2013-11-04 02:44:30.000000000 +0100
+***************
+*** 69,74 ****
+--- 69,75 ----
+ char_u *getnextcomp __ARGS((char_u *fname));
+ char_u *get_past_head __ARGS((char_u *path));
+ int vim_ispathsep __ARGS((int c));
++ int vim_ispathsep_nocolon __ARGS((int c));
+ int vim_ispathlistsep __ARGS((int c));
+ void shorten_dir __ARGS((char_u *str));
+ int dir_of_file_exists __ARGS((char_u *fname));
+*** ../vim-7.4.065/src/version.c 2013-11-04 02:00:55.000000000 +0100
+--- src/version.c 2013-11-04 02:50:35.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 66,
+ /**/
+
+--
+Females are strictly forbidden to appear unshaven in public.
+ [real standing law in New Mexico, 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/patches/source/vim/patches/7.4.067 b/patches/source/vim/patches/7.4.067
new file mode 100644
index 00000000..75a89c2a
--- /dev/null
+++ b/patches/source/vim/patches/7.4.067
@@ -0,0 +1,126 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.067
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.067
+Problem: After inserting comment leader, CTRL-\ CTRL-O does move the
+ cursor. (Wiktor Ruben)
+Solution: Avoid moving the cursor. (Christian Brabandt)
+Files: src/edit.c
+
+
+*** ../vim-7.4.066/src/edit.c 2013-09-08 20:00:45.000000000 +0200
+--- src/edit.c 2013-11-04 03:57:43.000000000 +0100
+***************
+*** 199,205 ****
+ static void spell_back_to_badword __ARGS((void));
+ static int spell_bad_len = 0; /* length of located bad word */
+ #endif
+! static void stop_insert __ARGS((pos_T *end_insert_pos, int esc));
+ static int echeck_abbr __ARGS((int));
+ static int replace_pop __ARGS((void));
+ static void replace_join __ARGS((int off));
+--- 199,205 ----
+ static void spell_back_to_badword __ARGS((void));
+ static int spell_bad_len = 0; /* length of located bad word */
+ #endif
+! static void stop_insert __ARGS((pos_T *end_insert_pos, int esc, int nomove));
+ static int echeck_abbr __ARGS((int));
+ static int replace_pop __ARGS((void));
+ static void replace_join __ARGS((int off));
+***************
+*** 6698,6704 ****
+ if (!arrow_used) /* something has been inserted */
+ {
+ AppendToRedobuff(ESC_STR);
+! stop_insert(end_insert_pos, FALSE);
+ arrow_used = TRUE; /* this means we stopped the current insert */
+ }
+ #ifdef FEAT_SPELL
+--- 6698,6704 ----
+ if (!arrow_used) /* something has been inserted */
+ {
+ AppendToRedobuff(ESC_STR);
+! stop_insert(end_insert_pos, FALSE, FALSE);
+ arrow_used = TRUE; /* this means we stopped the current insert */
+ }
+ #ifdef FEAT_SPELL
+***************
+*** 6787,6795 ****
+ * to another window/buffer.
+ */
+ static void
+! stop_insert(end_insert_pos, esc)
+ pos_T *end_insert_pos;
+ int esc; /* called by ins_esc() */
+ {
+ int cc;
+ char_u *ptr;
+--- 6787,6796 ----
+ * to another window/buffer.
+ */
+ static void
+! stop_insert(end_insert_pos, esc, nomove)
+ pos_T *end_insert_pos;
+ int esc; /* called by ins_esc() */
++ int nomove; /* <c-\><c-o>, don't move cursor */
+ {
+ int cc;
+ char_u *ptr;
+***************
+*** 6860,6866 ****
+ * Do this when ESC was used or moving the cursor up/down.
+ * Check for the old position still being valid, just in case the text
+ * got changed unexpectedly. */
+! if (did_ai && (esc || (vim_strchr(p_cpo, CPO_INDENT) == NULL
+ && curwin->w_cursor.lnum != end_insert_pos->lnum))
+ && end_insert_pos->lnum <= curbuf->b_ml.ml_line_count)
+ {
+--- 6861,6867 ----
+ * Do this when ESC was used or moving the cursor up/down.
+ * Check for the old position still being valid, just in case the text
+ * got changed unexpectedly. */
+! if (!nomove && did_ai && (esc || (vim_strchr(p_cpo, CPO_INDENT) == NULL
+ && curwin->w_cursor.lnum != end_insert_pos->lnum))
+ && end_insert_pos->lnum <= curbuf->b_ml.ml_line_count)
+ {
+***************
+*** 8377,8383 ****
+ disabled_redraw = TRUE;
+ return FALSE; /* repeat the insert */
+ }
+! stop_insert(&curwin->w_cursor, TRUE);
+ undisplay_dollar();
+ }
+
+--- 8378,8384 ----
+ disabled_redraw = TRUE;
+ return FALSE; /* repeat the insert */
+ }
+! stop_insert(&curwin->w_cursor, TRUE, nomove);
+ undisplay_dollar();
+ }
+
+*** ../vim-7.4.066/src/version.c 2013-11-04 02:53:46.000000000 +0100
+--- src/version.c 2013-11-04 03:57:29.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 67,
+ /**/
+
+--
+Beer & pretzels can't be served at the same time in any bar or restaurant.
+ [real standing law in North Dakota, 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/patches/source/vim/patches/7.4.068 b/patches/source/vim/patches/7.4.068
new file mode 100644
index 00000000..a9093385
--- /dev/null
+++ b/patches/source/vim/patches/7.4.068
@@ -0,0 +1,131 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.068
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.068
+Problem: Cannot build Vim on Mac with non-Apple compilers.
+Solution: Remove the -no-cpp-precomp flag. (Misty De Meo)
+Files: src/configure.in, src/auto/configure, src/osdef.sh
+
+
+*** ../vim-7.4.067/src/configure.in 2013-11-03 20:26:26.000000000 +0100
+--- src/configure.in 2013-11-04 04:53:51.000000000 +0100
+***************
+*** 204,210 ****
+ OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
+ OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
+ dnl TODO: use -arch i386 on Intel machines
+! CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
+
+ dnl If Carbon is found, assume we don't want X11
+ dnl unless it was specifically asked for (--with-x)
+--- 204,211 ----
+ OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
+ OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
+ dnl TODO: use -arch i386 on Intel machines
+! dnl Removed -no-cpp-precomp, only for very old compilers.
+! CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX"
+
+ dnl If Carbon is found, assume we don't want X11
+ dnl unless it was specifically asked for (--with-x)
+***************
+*** 262,269 ****
+ ])
+ if test "$GCC" = yes -a "$local_dir" != no; then
+ echo 'void f(){}' > conftest.c
+! dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
+! have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
+ have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
+ rm -f conftest.c conftest.o
+ fi
+--- 263,270 ----
+ ])
+ if test "$GCC" = yes -a "$local_dir" != no; then
+ echo 'void f(){}' > conftest.c
+! dnl Removed -no-cpp-precomp, only needed for OS X 10.2 (Ben Fowler)
+! have_local_include=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
+ have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
+ rm -f conftest.c conftest.o
+ fi
+*** ../vim-7.4.067/src/auto/configure 2013-11-03 20:26:27.000000000 +0100
+--- src/auto/configure 2013-11-04 04:54:16.000000000 +0100
+***************
+*** 4221,4227 ****
+ MACOSX=yes
+ OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
+ OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
+! CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
+
+ # On IRIX 5.3, sys/types and inttypes.h are conflicting.
+ for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+--- 4221,4227 ----
+ MACOSX=yes
+ OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
+ OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
+! CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX"
+
+ # On IRIX 5.3, sys/types and inttypes.h are conflicting.
+ for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+***************
+*** 4311,4317 ****
+
+ if test "$GCC" = yes -a "$local_dir" != no; then
+ echo 'void f(){}' > conftest.c
+! have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
+ have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
+ rm -f conftest.c conftest.o
+ fi
+--- 4311,4317 ----
+
+ if test "$GCC" = yes -a "$local_dir" != no; then
+ echo 'void f(){}' > conftest.c
+! have_local_include=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
+ have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
+ rm -f conftest.c conftest.o
+ fi
+*** ../vim-7.4.067/src/osdef.sh 2010-05-15 13:04:08.000000000 +0200
+--- src/osdef.sh 2013-11-04 04:51:36.000000000 +0100
+***************
+*** 47,57 ****
+ #endif
+ EOF
+
+! # Mac uses precompiled headers, but we need real headers here.
+! case `uname` in
+! Darwin) $CC -I. -I$srcdir -E -no-cpp-precomp osdef0.c >osdef0.cc;;
+! *) $CC -I. -I$srcdir -E osdef0.c >osdef0.cc;;
+! esac
+
+ # insert a space in front of each line, so that a function name at the
+ # start of the line is matched with "[)*, ]\1[ (]"
+--- 47,53 ----
+ #endif
+ EOF
+
+! $CC -I. -I$srcdir -E osdef0.c >osdef0.cc
+
+ # insert a space in front of each line, so that a function name at the
+ # start of the line is matched with "[)*, ]\1[ (]"
+*** ../vim-7.4.067/src/version.c 2013-11-04 04:20:28.000000000 +0100
+--- src/version.c 2013-11-04 04:51:51.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 68,
+ /**/
+
+--
+Violators can be fined, arrested or jailed for making ugly faces at a dog.
+ [real standing law in Oklahoma, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.069 b/patches/source/vim/patches/7.4.069
new file mode 100644
index 00000000..ac52affc
--- /dev/null
+++ b/patches/source/vim/patches/7.4.069
@@ -0,0 +1,2559 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.069
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.069
+Problem: Cannot right shift lines starting with #.
+Solution: Allow the right shift when 'cino' contains #N with N > 0.
+ (Christian Brabandt)
+ Refactor parsing 'cino', store the values in the buffer.
+Files: runtime/doc/indent.txt, src/buffer.c, src/edit.c, src/eval.c,
+ src/ex_getln.c, src/fold.c, src/misc1.c, src/ops.c,
+ src/proto/misc1.pro, src/proto/option.pro, src/structs.h,
+ src/option.c
+
+
+*** ../vim-7.4.068/runtime/doc/indent.txt 2013-08-10 13:24:56.000000000 +0200
+--- runtime/doc/indent.txt 2013-11-05 07:10:56.000000000 +0100
+***************
+*** 545,554 ****
+ (default 70 lines).
+
+ *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:
+--- 545,556 ----
+ (default 70 lines).
+
+ *cino-#*
+! #N When N is non-zero recognize shell/Perl comments starting with
+! '#', do not recognize preprocessor lines; allow right-shifting
+! lines that start with "#".
+! When N is zero (default): don't recognize '#' comments, do
+! recognize preprocessor lines; right-shifting lines that start
+! with "#" does not work.
+
+
+ The defaults, spelled out in full, are:
+***************
+*** 556,562 ****
+ 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 '#'.
+ - It starts with a label (a keyword followed by ':', other than "case" and
+ "default") and 'cinoptions' does not contain an 'L' entry with a positive
+ value.
+--- 558,564 ----
+ 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 '#0'.
+ - It starts with a label (a keyword followed by ':', other than "case" and
+ "default") and 'cinoptions' does not contain an 'L' entry with a positive
+ value.
+***************
+*** 581,588 ****
+
+ Clojure indentation differs somewhat from traditional Lisps, due in part to
+ the use of square and curly brackets, and otherwise by community convention.
+! These conventions are not always universally followed, so the Clojure indent
+! script offers a few configurable options, listed below.
+
+ If the current vim does not include searchpairpos(), the indent script falls
+ back to normal 'lisp' indenting, and the following options are ignored.
+--- 583,590 ----
+
+ Clojure indentation differs somewhat from traditional Lisps, due in part to
+ the use of square and curly brackets, and otherwise by community convention.
+! These conventions are not universally followed, so the Clojure indent script
+! offers a few configurable options, listed below.
+
+ If the current vim does not include searchpairpos(), the indent script falls
+ back to normal 'lisp' indenting, and the following options are ignored.
+*** ../vim-7.4.068/src/buffer.c 2013-11-02 04:39:34.000000000 +0100
+--- src/buffer.c 2013-11-05 06:18:54.000000000 +0100
+***************
+*** 211,217 ****
+--- 211,220 ----
+
+ /* if first time loading this buffer, init b_chartab[] */
+ if (curbuf->b_flags & BF_NEVERLOADED)
++ {
+ (void)buf_init_chartab(curbuf, FALSE);
++ parse_cino(curbuf);
++ }
+
+ /*
+ * Set/reset the Changed flag first, autocmds may change the buffer.
+*** ../vim-7.4.068/src/edit.c 2013-11-04 04:20:28.000000000 +0100
+--- src/edit.c 2013-11-05 06:12:45.000000000 +0100
+***************
+*** 8958,8964 ****
+
+ *inserted_space_p = FALSE;
+ if (p_sta && in_indent)
+! ts = (int)get_sw_value();
+ else
+ ts = (int)get_sts_value();
+ /* Compute the virtual column where we want to be. Since
+--- 8958,8964 ----
+
+ *inserted_space_p = FALSE;
+ if (p_sta && in_indent)
+! ts = (int)get_sw_value(curbuf);
+ else
+ ts = (int)get_sts_value();
+ /* Compute the virtual column where we want to be. Since
+***************
+*** 9647,9653 ****
+ * When nothing special, insert TAB like a normal character
+ */
+ if (!curbuf->b_p_et
+! && !(p_sta && ind && curbuf->b_p_ts != get_sw_value())
+ && get_sts_value() == 0)
+ return TRUE;
+
+--- 9647,9653 ----
+ * 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))
+ && get_sts_value() == 0)
+ return TRUE;
+
+***************
+*** 9663,9669 ****
+ 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)get_sts_value();
+ else /* otherwise use 'tabstop' */
+--- 9663,9669 ----
+ AppendToRedobuff((char_u *)"\t");
+
+ if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */
+! temp = (int)get_sw_value(curbuf);
+ else if (curbuf->b_p_sts != 0) /* use 'softtabstop' when set */
+ temp = (int)get_sts_value();
+ else /* otherwise use 'tabstop' */
+*** ../vim-7.4.068/src/eval.c 2013-11-02 23:29:17.000000000 +0100
+--- src/eval.c 2013-11-05 06:12:49.000000000 +0100
+***************
+*** 16934,16940 ****
+ typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+! rettv->vval.v_number = get_sw_value();
+ }
+
+ /*
+--- 16934,16940 ----
+ typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+! rettv->vval.v_number = get_sw_value(curbuf);
+ }
+
+ /*
+*** ../vim-7.4.068/src/ex_getln.c 2013-07-05 19:44:21.000000000 +0200
+--- src/ex_getln.c 2013-11-05 06:12:57.000000000 +0100
+***************
+*** 2280,2286 ****
+
+ if (c1 == Ctrl_T)
+ {
+! long sw = get_sw_value();
+
+ p = (char_u *)line_ga.ga_data;
+ p[line_ga.ga_len] = NUL;
+--- 2280,2286 ----
+
+ if (c1 == Ctrl_T)
+ {
+! long sw = get_sw_value(curbuf);
+
+ p = (char_u *)line_ga.ga_data;
+ p[line_ga.ga_len] = NUL;
+***************
+*** 2337,2343 ****
+ 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)
+ {
+--- 2337,2343 ----
+ p[line_ga.ga_len] = NUL;
+ indent = get_indent_str(p, 8);
+ --indent;
+! indent -= indent % get_sw_value(curbuf);
+ }
+ while (get_indent_str(p, 8) > indent)
+ {
+***************
+*** 4178,4184 ****
+ /*
+ * Prepare a string for expansion.
+ * When expanding file names: The string will be used with expand_wildcards().
+! * Copy the file name into allocated memory and add a '*' at the end.
+ * When expanding other names: The string will be used with regcomp(). Copy
+ * the name into allocated memory and prepend "^".
+ */
+--- 4178,4184 ----
+ /*
+ * Prepare a string for expansion.
+ * When expanding file names: The string will be used with expand_wildcards().
+! * Copy "fname[len]" into allocated memory and add a '*' at the end.
+ * When expanding other names: The string will be used with regcomp(). Copy
+ * the name into allocated memory and prepend "^".
+ */
+*** ../vim-7.4.068/src/fold.c 2013-06-15 16:57:24.000000000 +0200
+--- src/fold.c 2013-11-05 06:13:03.000000000 +0100
+***************
+*** 3052,3058 ****
+ 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;
+--- 3052,3058 ----
+ flp->lvl = -1;
+ }
+ else
+! flp->lvl = get_indent_buf(buf, lnum) / get_sw_value(curbuf);
+ if (flp->lvl > flp->wp->w_p_fdn)
+ {
+ flp->lvl = flp->wp->w_p_fdn;
+*** ../vim-7.4.068/src/misc1.c 2013-11-04 02:53:46.000000000 +0100
+--- src/misc1.c 2013-11-05 06:45:15.000000000 +0100
+***************
+*** 1405,1411 ****
+ #ifdef FEAT_SMARTINDENT
+ if (did_si)
+ {
+! int sw = (int)get_sw_value();
+
+ if (p_sr)
+ newindent -= newindent % sw;
+--- 1405,1411 ----
+ #ifdef FEAT_SMARTINDENT
+ if (did_si)
+ {
+! int sw = (int)get_sw_value(curbuf);
+
+ if (p_sr)
+ newindent -= newindent % sw;
+***************
+*** 5342,5349 ****
+ 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 */
+-
+ /*
+ * Skip over white space and C comments within the line.
+ * Also skip over Perl/shell comments if desired.
+--- 5342,5347 ----
+***************
+*** 5360,5366 ****
+
+ /* Perl/shell # comment comment continues until eol. Require a space
+ * before # to avoid recognizing $#array. */
+! if (ind_hash_comment != 0 && s != prev_s && *s == '#')
+ {
+ s += STRLEN(s);
+ break;
+--- 5358,5364 ----
+
+ /* Perl/shell # comment comment continues until eol. Require a space
+ * before # to avoid recognizing $#array. */
+! if (curbuf->b_ind_hash_comment != 0 && s != prev_s && *s == '#')
+ {
+ s += STRLEN(s);
+ break;
+***************
+*** 6639,6839 ****
+ return retval;
+ }
+
+! 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
+! * line is imagined to be.
+! */
+! int ind_open_imag = 0;
+
+! /*
+! * spaces from the prevailing indent for a line that is not preceded by
+! * an opening brace.
+! */
+! int ind_no_brace = 0;
+!
+! /*
+! * column where the first { of a function should be located }
+! */
+! int ind_first_open = 0;
+
+! /*
+! * spaces from the prevailing indent a leftmost open brace should be
+! * located
+! */
+! int ind_open_extra = 0;
+
+! /*
+! * spaces from the matching open brace (real location for one at the left
+ * edge; imaginary location from one that ends a line) the matching close
+! * brace should be located
+! */
+! int ind_close_extra = 0;
+
+! /*
+! * spaces from the edge of the line an open brace sitting in the leftmost
+! * column is imagined to be
+! */
+! int ind_open_left_imag = 0;
+
+! /*
+! * Spaces jump labels should be shifted to the left if N is non-negative,
+! * otherwise the jump label will be put to column 1.
+! */
+! int ind_jump_label = -1;
+
+! /*
+! * 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
+! */
+! int ind_case_break = 0;
+
+! /*
+! * 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
+! * unclosed parentheses.
+! */
+! int ind_unclosed_noignore = 0;
+
+! /*
+! * If the opening paren is the last nonwhite character on the line, and
+! * ind_unclosed_wrapped is nonzero, use this indent relative to the outer
+! * context (for very long lines).
+! */
+! int ind_unclosed_wrapped = 0;
+
+! /*
+! * suppress ignoring white space when lining up with the character after
+! * an unclosed parentheses.
+! */
+! int ind_unclosed_whiteok = 0;
+
+! /*
+! * indent a closing parentheses under the line start of the matching
+! * opening parentheses.
+! */
+! int ind_matching_paren = 0;
+
+! /*
+! * indent a closing parentheses under the previous line.
+! */
+! int ind_paren_prev = 0;
+
+! /*
+! * Extra indent for comments.
+! */
+! int ind_comment = 0;
+
+! /*
+! * spaces from the comment opener when there is nothing after it.
+! */
+! int ind_in_comment = 3;
+
+! /*
+! * boolean: if non-zero, use ind_in_comment even if there is something
+! * after the comment opener.
+! */
+! int ind_in_comment2 = 0;
+
+! /*
+! * max lines to search for an open paren
+! */
+! int ind_maxparen = 20;
+
+! /*
+! * max lines to search for an open comment
+! */
+! int ind_maxcomment = 70;
+
+! /*
+! * handle braces for java code
+! */
+! int ind_java = 0;
+
+! /*
+! * not to confuse JS object properties with labels
+! */
+! int ind_js = 0;
+
+! /*
+! * handle blocked cases correctly
+! */
+! int ind_keep_case_label = 0;
+
+! /*
+! * handle C++ namespace
+! */
+! 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;
+--- 6637,6865 ----
+ return retval;
+ }
+
+! /*
+! * Parse 'cinoptions' and set the values in "curbuf".
+! * Must be called when 'cinoptions', 'shiftwidth' and/or 'tabstop' changes.
+! */
+! void
+! parse_cino(buf)
+! buf_T *buf;
+ {
+! char_u *p;
+! char_u *l;
+! char_u *digits;
+! int n;
+! int divider;
+! int fraction = 0;
+! int sw = (int)get_sw_value(buf);
+
+ /*
+! * Set the default values.
+ */
++ /* Spaces from a block's opening brace the prevailing indent for that
++ * block should be. */
++ buf->b_ind_level = sw;
+
+! /* Spaces from the edge of the line an open brace that's at the end of a
+! * line is imagined to be. */
+! buf->b_ind_open_imag = 0;
+
+! /* Spaces from the prevailing indent for a line that is not preceded by
+! * an opening brace. */
+! buf->b_ind_no_brace = 0;
+
+! /* Column where the first { of a function should be located }. */
+! buf->b_ind_first_open = 0;
+
+! /* Spaces from the prevailing indent a leftmost open brace should be
+! * located. */
+! buf->b_ind_open_extra = 0;
+
+! /* Spaces from the matching open brace (real location for one at the left
+ * edge; imaginary location from one that ends a line) the matching close
+! * brace should be located. */
+! buf->b_ind_close_extra = 0;
+
+! /* Spaces from the edge of the line an open brace sitting in the leftmost
+! * column is imagined to be. */
+! buf->b_ind_open_left_imag = 0;
+
+! /* Spaces jump labels should be shifted to the left if N is non-negative,
+! * otherwise the jump label will be put to column 1. */
+! buf->b_ind_jump_label = -1;
+
+! /* Spaces from the switch() indent a "case xx" label should be located. */
+! buf->b_ind_case = sw;
+
+! /* Spaces from the "case xx:" code after a switch() should be located. */
+! buf->b_ind_case_code = sw;
+
+! /* Lineup break at end of case in switch() with case label. */
+! buf->b_ind_case_break = 0;
+
+! /* Spaces from the class declaration indent a scope declaration label
+! * should be located. */
+! buf->b_ind_scopedecl = sw;
+
+! /* Spaces from the scope declaration label code should be located. */
+! buf->b_ind_scopedecl_code = sw;
+
+! /* Amount K&R-style parameters should be indented. */
+! buf->b_ind_param = sw;
+
+! /* Amount a function type spec should be indented. */
+! buf->b_ind_func_type = sw;
+
+! /* Amount a cpp base class declaration or constructor initialization
+! * should be indented. */
+! buf->b_ind_cpp_baseclass = sw;
+
+! /* additional spaces beyond the prevailing indent a continuation line
+! * should be located. */
+! buf->b_ind_continuation = sw;
+
+! /* Spaces from the indent of the line with an unclosed parentheses. */
+! buf->b_ind_unclosed = sw * 2;
+
+! /* Spaces from the indent of the line with an unclosed parentheses, which
+! * itself is also unclosed. */
+! buf->b_ind_unclosed2 = sw;
+
+! /* Suppress ignoring spaces from the indent of a line starting with an
+! * unclosed parentheses. */
+! buf->b_ind_unclosed_noignore = 0;
+
+! /* If the opening paren is the last nonwhite character on the line, and
+! * b_ind_unclosed_wrapped is nonzero, use this indent relative to the outer
+! * context (for very long lines). */
+! buf->b_ind_unclosed_wrapped = 0;
+
+! /* Suppress ignoring white space when lining up with the character after
+! * an unclosed parentheses. */
+! buf->b_ind_unclosed_whiteok = 0;
+
+! /* Indent a closing parentheses under the line start of the matching
+! * opening parentheses. */
+! buf->b_ind_matching_paren = 0;
+
+! /* Indent a closing parentheses under the previous line. */
+! buf->b_ind_paren_prev = 0;
+
+! /* Extra indent for comments. */
+! buf->b_ind_comment = 0;
+
+! /* Spaces from the comment opener when there is nothing after it. */
+! buf->b_ind_in_comment = 3;
+
+! /* Boolean: if non-zero, use b_ind_in_comment even if there is something
+! * after the comment opener. */
+! buf->b_ind_in_comment2 = 0;
+
+! /* Max lines to search for an open paren. */
+! buf->b_ind_maxparen = 20;
+
+! /* Max lines to search for an open comment. */
+! buf->b_ind_maxcomment = 70;
+
+! /* Handle braces for java code. */
+! buf->b_ind_java = 0;
+
+! /* Not to confuse JS object properties with labels. */
+! buf->b_ind_js = 0;
+
+! /* Handle blocked cases correctly. */
+! buf->b_ind_keep_case_label = 0;
+
+! /* Handle C++ namespace. */
+! buf->b_ind_cpp_namespace = 0;
+
+! /* Handle continuation lines containing conditions of if(), for() and
+! * while(). */
+! buf->b_ind_if_for_while = 0;
+!
+! for (p = buf->b_p_cino; *p; )
+! {
+! l = p++;
+! if (*p == '-')
+! ++p;
+! digits = p; /* remember where the digits start */
+! n = getdigits(&p);
+! divider = 0;
+! if (*p == '.') /* ".5s" means a fraction */
+! {
+! fraction = atol((char *)++p);
+! while (VIM_ISDIGIT(*p))
+! {
+! ++p;
+! if (divider)
+! divider *= 10;
+! else
+! divider = 10;
+! }
+! }
+! if (*p == 's') /* "2s" means two times 'shiftwidth' */
+! {
+! if (p == digits)
+! n = sw; /* just "s" is one 'shiftwidth' */
+! else
+! {
+! n *= sw;
+! if (divider)
+! n += (sw * fraction + divider / 2) / divider;
+! }
+! ++p;
+! }
+! if (l[1] == '-')
+! n = -n;
+
++ /* When adding an entry here, also update the default 'cinoptions' in
++ * doc/indent.txt, and add explanation for it! */
++ switch (*l)
++ {
++ case '>': buf->b_ind_level = n; break;
++ case 'e': buf->b_ind_open_imag = n; break;
++ case 'n': buf->b_ind_no_brace = n; break;
++ case 'f': buf->b_ind_first_open = n; break;
++ case '{': buf->b_ind_open_extra = n; break;
++ case '}': buf->b_ind_close_extra = n; break;
++ case '^': buf->b_ind_open_left_imag = n; break;
++ case 'L': buf->b_ind_jump_label = n; break;
++ case ':': buf->b_ind_case = n; break;
++ case '=': buf->b_ind_case_code = n; break;
++ case 'b': buf->b_ind_case_break = n; break;
++ case 'p': buf->b_ind_param = n; break;
++ case 't': buf->b_ind_func_type = n; break;
++ case '/': buf->b_ind_comment = n; break;
++ case 'c': buf->b_ind_in_comment = n; break;
++ case 'C': buf->b_ind_in_comment2 = n; break;
++ case 'i': buf->b_ind_cpp_baseclass = n; break;
++ case '+': buf->b_ind_continuation = n; break;
++ case '(': buf->b_ind_unclosed = n; break;
++ case 'u': buf->b_ind_unclosed2 = n; break;
++ case 'U': buf->b_ind_unclosed_noignore = n; break;
++ case 'W': buf->b_ind_unclosed_wrapped = n; break;
++ case 'w': buf->b_ind_unclosed_whiteok = n; break;
++ case 'm': buf->b_ind_matching_paren = n; break;
++ case 'M': buf->b_ind_paren_prev = n; break;
++ case ')': buf->b_ind_maxparen = n; break;
++ case '*': buf->b_ind_maxcomment = n; break;
++ case 'g': buf->b_ind_scopedecl = n; break;
++ case 'h': buf->b_ind_scopedecl_code = n; break;
++ case 'j': buf->b_ind_java = n; break;
++ case 'J': buf->b_ind_js = n; break;
++ case 'l': buf->b_ind_keep_case_label = n; break;
++ case '#': buf->b_ind_hash_comment = n; break;
++ case 'N': buf->b_ind_cpp_namespace = n; break;
++ case 'k': buf->b_ind_if_for_while = n; break;
++ }
++ if (*p == ',')
++ ++p;
++ }
++ }
++
++ int
++ get_c_indent()
++ {
+ pos_T cur_curpos;
+ int amount;
+ int scope_amount;
+***************
+*** 6868,6877 ****
+
+ int whilelevel;
+ linenr_T lnum;
+- char_u *options;
+- char_u *digits;
+- int fraction = 0; /* init for GCC */
+- int divider;
+ int n;
+ int iscase;
+ int lookfor_break;
+--- 6894,6899 ----
+***************
+*** 6880,6962 ****
+ int original_line_islabel;
+ int added_to_amount = 0;
+
+! for (options = curbuf->b_p_cino; *options; )
+! {
+! l = options++;
+! if (*options == '-')
+! ++options;
+! digits = options; /* remember where the digits start */
+! n = getdigits(&options);
+! divider = 0;
+! if (*options == '.') /* ".5s" means a fraction */
+! {
+! fraction = atol((char *)++options);
+! while (VIM_ISDIGIT(*options))
+! {
+! ++options;
+! if (divider)
+! divider *= 10;
+! else
+! divider = 10;
+! }
+! }
+! 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;
+! }
+! if (l[1] == '-')
+! n = -n;
+! /* When adding an entry here, also update the default 'cinoptions' in
+! * doc/indent.txt, and add explanation for it! */
+! switch (*l)
+! {
+! case '>': ind_level = n; break;
+! case 'e': ind_open_imag = n; break;
+! case 'n': ind_no_brace = n; break;
+! case 'f': ind_first_open = n; break;
+! case '{': ind_open_extra = n; break;
+! case '}': ind_close_extra = n; break;
+! case '^': ind_open_left_imag = n; break;
+! case 'L': ind_jump_label = n; break;
+! case ':': ind_case = n; break;
+! case '=': ind_case_code = n; break;
+! case 'b': ind_case_break = n; break;
+! case 'p': ind_param = n; break;
+! case 't': ind_func_type = n; break;
+! case '/': ind_comment = n; break;
+! case 'c': ind_in_comment = n; break;
+! case 'C': ind_in_comment2 = n; break;
+! case 'i': ind_cpp_baseclass = n; break;
+! case '+': ind_continuation = n; break;
+! case '(': ind_unclosed = n; break;
+! case 'u': ind_unclosed2 = n; break;
+! case 'U': ind_unclosed_noignore = n; break;
+! case 'W': ind_unclosed_wrapped = n; break;
+! case 'w': ind_unclosed_whiteok = n; break;
+! case 'm': ind_matching_paren = n; break;
+! case 'M': ind_paren_prev = n; break;
+! case ')': ind_maxparen = n; break;
+! case '*': ind_maxcomment = n; break;
+! case 'g': ind_scopedecl = n; break;
+! case 'h': ind_scopedecl_code = n; break;
+! case 'j': ind_java = n; break;
+! 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;
+! case 'k': ind_if_for_while = n; break;
+! }
+! if (*options == ',')
+! ++options;
+! }
+
+ /* remember where the cursor was when we started */
+ cur_curpos = curwin->w_cursor;
+--- 6902,6909 ----
+ int original_line_islabel;
+ int added_to_amount = 0;
+
+! /* make a copy, value is changed below */
+! int ind_continuation = curbuf->b_ind_continuation;
+
+ /* remember where the cursor was when we started */
+ cur_curpos = curwin->w_cursor;
+***************
+*** 6990,7011 ****
+
+ curwin->w_cursor.col = 0;
+
+! original_line_islabel = cin_islabel(ind_maxcomment); /* XXX */
+
+ /*
+ * #defines and so on always go at the left when included in 'cinkeys'.
+ */
+ if (*theline == '#' && (*linecopy == '#' || in_cinkeys('#', ' ', TRUE)))
+! {
+! amount = 0;
+! }
+
+ /*
+ * Is it a non-case label? Then that goes at the left margin too unless:
+ * - JS flag is set.
+ * - 'L' item has a positive value.
+ */
+! else if (original_line_islabel && !ind_js && ind_jump_label < 0)
+ {
+ amount = 0;
+ }
+--- 6937,6957 ----
+
+ curwin->w_cursor.col = 0;
+
+! original_line_islabel = cin_islabel(curbuf->b_ind_maxcomment); /* XXX */
+
+ /*
+ * #defines and so on always go at the left when included in 'cinkeys'.
+ */
+ if (*theline == '#' && (*linecopy == '#' || in_cinkeys('#', ' ', TRUE)))
+! amount = curbuf->b_ind_hash_comment;
+
+ /*
+ * Is it a non-case label? Then that goes at the left margin too unless:
+ * - JS flag is set.
+ * - 'L' item has a positive value.
+ */
+! else if (original_line_islabel && !curbuf->b_ind_js
+! && curbuf->b_ind_jump_label < 0)
+ {
+ amount = 0;
+ }
+***************
+*** 7027,7033 ****
+ * comment, try using the 'comments' option.
+ */
+ else if (!cin_iscomment(theline)
+! && (trypos = find_start_comment(ind_maxcomment)) != NULL) /* XXX */
+ {
+ int lead_start_len = 2;
+ int lead_middle_len = 1;
+--- 6973,6980 ----
+ * comment, try using the 'comments' option.
+ */
+ else if (!cin_iscomment(theline)
+! && (trypos = find_start_comment(curbuf->b_ind_maxcomment)) != NULL)
+! /* XXX */
+ {
+ int lead_start_len = 2;
+ int lead_middle_len = 1;
+***************
+*** 7161,7167 ****
+ }
+ if (amount == -1) /* use the comment opener */
+ {
+! if (!ind_in_comment2)
+ {
+ start = ml_get(trypos->lnum);
+ look = start + trypos->col + 2; /* skip / and * */
+--- 7108,7114 ----
+ }
+ if (amount == -1) /* use the comment opener */
+ {
+! if (!curbuf->b_ind_in_comment2)
+ {
+ start = ml_get(trypos->lnum);
+ look = start + trypos->col + 2; /* skip / and * */
+***************
+*** 7170,7177 ****
+ }
+ getvcol(curwin, trypos, &col, NULL, NULL);
+ amount = col;
+! if (ind_in_comment2 || *look == NUL)
+! amount += ind_in_comment;
+ }
+ }
+ }
+--- 7117,7124 ----
+ }
+ getvcol(curwin, trypos, &col, NULL, NULL);
+ amount = col;
+! if (curbuf->b_ind_in_comment2 || *look == NUL)
+! amount += curbuf->b_ind_in_comment;
+ }
+ }
+ }
+***************
+*** 7179,7187 ****
+ /*
+ * Are we inside parentheses or braces?
+ */ /* XXX */
+! else if (((trypos = find_match_paren(ind_maxparen, ind_maxcomment)) != NULL
+! && ind_java == 0)
+! || (tryposBrace = find_start_brace(ind_maxcomment)) != NULL
+ || trypos != NULL)
+ {
+ if (trypos != NULL && tryposBrace != NULL)
+--- 7126,7136 ----
+ /*
+ * Are we inside parentheses or braces?
+ */ /* XXX */
+! else if (((trypos = find_match_paren(curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)) != NULL
+! && curbuf->b_ind_java == 0)
+! || (tryposBrace =
+! find_start_brace(curbuf->b_ind_maxcomment)) != NULL
+ || trypos != NULL)
+ {
+ if (trypos != NULL && tryposBrace != NULL)
+***************
+*** 7202,7208 ****
+ * If the matching paren is more than one line away, use the indent of
+ * a previous non-empty line that matches the same paren.
+ */
+! if (theline[0] == ')' && ind_paren_prev)
+ {
+ /* Line up with the start of the matching paren line. */
+ amount = get_indent_lnum(curwin->w_cursor.lnum - 1); /* XXX */
+--- 7151,7157 ----
+ * If the matching paren is more than one line away, use the indent of
+ * a previous non-empty line that matches the same paren.
+ */
+! if (theline[0] == ')' && curbuf->b_ind_paren_prev)
+ {
+ /* Line up with the start of the matching paren line. */
+ amount = get_indent_lnum(curwin->w_cursor.lnum - 1); /* XXX */
+***************
+*** 7221,7227 ****
+ curwin->w_cursor.lnum = lnum;
+
+ /* Skip a comment. XXX */
+! if ((trypos = find_start_comment(ind_maxcomment)) != NULL)
+ {
+ lnum = trypos->lnum + 1;
+ continue;
+--- 7170,7177 ----
+ curwin->w_cursor.lnum = lnum;
+
+ /* Skip a comment. XXX */
+! if ((trypos = find_start_comment(curbuf->b_ind_maxcomment))
+! != NULL)
+ {
+ lnum = trypos->lnum + 1;
+ continue;
+***************
+*** 7229,7236 ****
+
+ /* XXX */
+ if ((trypos = find_match_paren(
+! corr_ind_maxparen(ind_maxparen, &cur_curpos),
+! ind_maxcomment)) != NULL
+ && trypos->lnum == our_paren_pos.lnum
+ && trypos->col == our_paren_pos.col)
+ {
+--- 7179,7186 ----
+
+ /* XXX */
+ if ((trypos = find_match_paren(
+! corr_ind_maxparen(curbuf->b_ind_maxparen, &cur_curpos),
+! curbuf->b_ind_maxcomment)) != NULL
+ && trypos->lnum == our_paren_pos.lnum
+ && trypos->col == our_paren_pos.col)
+ {
+***************
+*** 7258,7264 ****
+ 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". */
+--- 7208,7214 ----
+ int ignore_paren_col = 0;
+ int is_if_for_while = 0;
+
+! if (curbuf->b_ind_if_for_while)
+ {
+ /* Look for the outermost opening parenthesis on this line
+ * and check whether it belongs to an "if", "for" or "while". */
+***************
+*** 7273,7279 ****
+ 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;
+--- 7223,7230 ----
+ curwin->w_cursor.lnum = outermost.lnum;
+ curwin->w_cursor.col = outermost.col;
+
+! trypos = find_match_paren(curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment);
+ } while (trypos && trypos->lnum == outermost.lnum);
+
+ curwin->w_cursor = cursor_save;
+***************
+*** 7284,7290 ****
+ cin_is_if_for_while_before_offset(line, &outermost.col);
+ }
+
+! amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment);
+ look = skipwhite(look);
+ if (*look == '(')
+ {
+--- 7235,7242 ----
+ cin_is_if_for_while_before_offset(line, &outermost.col);
+ }
+
+! amount = skip_label(our_paren_pos.lnum, &look,
+! curbuf->b_ind_maxcomment);
+ look = skipwhite(look);
+ if (*look == '(')
+ {
+***************
+*** 7298,7304 ****
+ line = ml_get_curline();
+ look_col = (int)(look - line);
+ curwin->w_cursor.col = look_col + 1;
+! if ((trypos = findmatchlimit(NULL, ')', 0, ind_maxparen))
+ != NULL
+ && trypos->lnum == our_paren_pos.lnum
+ && trypos->col < our_paren_pos.col)
+--- 7250,7257 ----
+ line = ml_get_curline();
+ look_col = (int)(look - line);
+ curwin->w_cursor.col = look_col + 1;
+! if ((trypos = findmatchlimit(NULL, ')', 0,
+! curbuf->b_ind_maxparen))
+ != NULL
+ && trypos->lnum == our_paren_pos.lnum
+ && trypos->col < our_paren_pos.col)
+***************
+*** 7307,7330 ****
+ 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))
+ {
+ /*
+ * If we're looking at a close paren, line up right there;
+ * otherwise, line up with the next (non-white) character.
+! * When ind_unclosed_wrapped is set and the matching paren is
+ * the last nonwhite character of the line, use either the
+ * indent of the current line or the indentation of the next
+! * outer paren and add ind_unclosed_wrapped (for very long
+ * lines).
+ */
+ if (theline[0] != ')')
+ {
+ cur_amount = MAXCOL;
+ l = ml_get(our_paren_pos.lnum);
+! if (ind_unclosed_wrapped
+ && cin_ends_in(l, (char_u *)"(", NULL))
+ {
+ /* look for opening unmatched paren, indent one level
+--- 7260,7284 ----
+ curwin->w_cursor.lnum = save_lnum;
+ look = ml_get(our_paren_pos.lnum) + look_col;
+ }
+! if (theline[0] == ')' || (curbuf->b_ind_unclosed == 0
+! && is_if_for_while == 0)
+! || (!curbuf->b_ind_unclosed_noignore && *look == '('
+ && ignore_paren_col == 0))
+ {
+ /*
+ * If we're looking at a close paren, line up right there;
+ * otherwise, line up with the next (non-white) character.
+! * When b_ind_unclosed_wrapped is set and the matching paren is
+ * the last nonwhite character of the line, use either the
+ * indent of the current line or the indentation of the next
+! * outer paren and add b_ind_unclosed_wrapped (for very long
+ * lines).
+ */
+ if (theline[0] != ')')
+ {
+ cur_amount = MAXCOL;
+ l = ml_get(our_paren_pos.lnum);
+! if (curbuf->b_ind_unclosed_wrapped
+ && cin_ends_in(l, (char_u *)"(", NULL))
+ {
+ /* look for opening unmatched paren, indent one level
+***************
+*** 7346,7354 ****
+ }
+
+ our_paren_pos.col = 0;
+! amount += n * ind_unclosed_wrapped;
+ }
+! else if (ind_unclosed_whiteok)
+ our_paren_pos.col++;
+ else
+ {
+--- 7300,7308 ----
+ }
+
+ our_paren_pos.col = 0;
+! amount += n * curbuf->b_ind_unclosed_wrapped;
+ }
+! else if (curbuf->b_ind_unclosed_whiteok)
+ our_paren_pos.col++;
+ else
+ {
+***************
+*** 7374,7385 ****
+ }
+ }
+
+! if (theline[0] == ')' && ind_matching_paren)
+ {
+ /* 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)
+--- 7328,7339 ----
+ }
+ }
+
+! if (theline[0] == ')' && curbuf->b_ind_matching_paren)
+ {
+ /* Line up with the start of the matching paren line. */
+ }
+! else if ((curbuf->b_ind_unclosed == 0 && is_if_for_while == 0)
+! || (!curbuf->b_ind_unclosed_noignore
+ && *look == '(' && ignore_paren_col == 0))
+ {
+ if (cur_amount != MAXCOL)
+***************
+*** 7387,7425 ****
+ }
+ else
+ {
+! /* Add ind_unclosed2 for each '(' before our matching one, but
+! * ignore (void) before the line (ignore_paren_col). */
+ col = our_paren_pos.col;
+ while ((int)our_paren_pos.col > ignore_paren_col)
+ {
+ --our_paren_pos.col;
+ switch (*ml_get_pos(&our_paren_pos))
+ {
+! case '(': amount += ind_unclosed2;
+ col = our_paren_pos.col;
+ break;
+! case ')': amount -= ind_unclosed2;
+ col = MAXCOL;
+ break;
+ }
+ }
+
+! /* Use ind_unclosed once, when the first '(' is not inside
+ * braces */
+ if (col == MAXCOL)
+! amount += ind_unclosed;
+ else
+ {
+ 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
+ {
+ if (is_if_for_while)
+! amount += ind_if_for_while;
+ else
+! amount += ind_unclosed;
+ }
+ }
+ /*
+--- 7341,7380 ----
+ }
+ else
+ {
+! /* Add b_ind_unclosed2 for each '(' before our matching one,
+! * but ignore (void) before the line (ignore_paren_col). */
+ col = our_paren_pos.col;
+ while ((int)our_paren_pos.col > ignore_paren_col)
+ {
+ --our_paren_pos.col;
+ switch (*ml_get_pos(&our_paren_pos))
+ {
+! case '(': amount += curbuf->b_ind_unclosed2;
+ col = our_paren_pos.col;
+ break;
+! case ')': amount -= curbuf->b_ind_unclosed2;
+ col = MAXCOL;
+ break;
+ }
+ }
+
+! /* Use b_ind_unclosed once, when the first '(' is not inside
+ * braces */
+ if (col == MAXCOL)
+! amount += curbuf->b_ind_unclosed;
+ else
+ {
+ curwin->w_cursor.lnum = our_paren_pos.lnum;
+ curwin->w_cursor.col = col;
+! if (find_match_paren(curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment) != NULL)
+! amount += curbuf->b_ind_unclosed2;
+ else
+ {
+ if (is_if_for_while)
+! amount += curbuf->b_ind_if_for_while;
+ else
+! amount += curbuf->b_ind_unclosed;
+ }
+ }
+ /*
+***************
+*** 7437,7443 ****
+
+ /* add extra indent for a comment */
+ if (cin_iscomment(theline))
+! amount += ind_comment;
+ }
+
+ /*
+--- 7392,7398 ----
+
+ /* add extra indent for a comment */
+ if (cin_iscomment(theline))
+! amount += curbuf->b_ind_comment;
+ }
+
+ /*
+***************
+*** 7480,7487 ****
+ */
+ lnum = ourscope;
+ if (find_last_paren(start, '(', ')')
+! && (trypos = find_match_paren(ind_maxparen,
+! ind_maxcomment)) != NULL)
+ lnum = trypos->lnum;
+
+ /*
+--- 7435,7442 ----
+ */
+ lnum = ourscope;
+ if (find_last_paren(start, '(', ')')
+! && (trypos = find_match_paren(curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)) != NULL)
+ lnum = trypos->lnum;
+
+ /*
+***************
+*** 7490,7500 ****
+ * ldfd) {
+ * }
+ */
+! if (ind_js || (ind_keep_case_label
+ && cin_iscase(skipwhite(ml_get_curline()), FALSE)))
+ amount = get_indent();
+ else
+! amount = skip_label(lnum, &l, ind_maxcomment);
+
+ start_brace = BRACE_AT_END;
+ }
+--- 7445,7455 ----
+ * ldfd) {
+ * }
+ */
+! if (curbuf->b_ind_js || (curbuf->b_ind_keep_case_label
+ && cin_iscase(skipwhite(ml_get_curline()), FALSE)))
+ amount = get_indent();
+ else
+! amount = skip_label(lnum, &l, curbuf->b_ind_maxcomment);
+
+ start_brace = BRACE_AT_END;
+ }
+***************
+*** 7510,7516 ****
+ * they may want closing braces to line up with something
+ * other than the open brace. indulge them, if so.
+ */
+! amount += ind_close_extra;
+ }
+ else
+ {
+--- 7465,7471 ----
+ * they may want closing braces to line up with something
+ * other than the open brace. indulge them, if so.
+ */
+! amount += curbuf->b_ind_close_extra;
+ }
+ else
+ {
+***************
+*** 7523,7536 ****
+ lookfor = LOOKFOR_INITIAL;
+ if (cin_iselse(theline))
+ lookfor = LOOKFOR_IF;
+! else if (cin_iswhileofdo(theline, cur_curpos.lnum, ind_maxparen))
+! /* XXX */
+ lookfor = LOOKFOR_DO;
+ if (lookfor != LOOKFOR_INITIAL)
+ {
+ curwin->w_cursor.lnum = cur_curpos.lnum;
+! if (find_match(lookfor, ourscope, ind_maxparen,
+! ind_maxcomment) == OK)
+ {
+ amount = get_indent(); /* XXX */
+ goto theend;
+--- 7478,7491 ----
+ lookfor = LOOKFOR_INITIAL;
+ if (cin_iselse(theline))
+ lookfor = LOOKFOR_IF;
+! else if (cin_iswhileofdo(theline, cur_curpos.lnum,
+! curbuf->b_ind_maxparen)) /* XXX */
+ lookfor = LOOKFOR_DO;
+ if (lookfor != LOOKFOR_INITIAL)
+ {
+ curwin->w_cursor.lnum = cur_curpos.lnum;
+! if (find_match(lookfor, ourscope, curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment) == OK)
+ {
+ amount = get_indent(); /* XXX */
+ goto theend;
+***************
+*** 7547,7558 ****
+ /*
+ * if the '{' is _really_ at the left margin, use the imaginary
+ * location of a left-margin brace. Otherwise, correct the
+! * location for ind_open_extra.
+ */
+
+ 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 &&
+--- 7502,7513 ----
+ /*
+ * if the '{' is _really_ at the left margin, use the imaginary
+ * location of a left-margin brace. Otherwise, correct the
+! * location for b_ind_open_extra.
+ */
+
+ if (start_brace == BRACE_IN_COL0) /* '{' is in column 0 */
+ {
+! amount = curbuf->b_ind_open_left_imag;
+ lookfor_cpp_namespace = TRUE;
+ }
+ else if (start_brace == BRACE_AT_START &&
+***************
+*** 7565,7580 ****
+ {
+ 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. */
+! amount -= ind_open_extra;
+ if (amount < 0)
+ amount = 0;
+ }
+--- 7520,7535 ----
+ {
+ if (start_brace == BRACE_AT_END) /* '{' is at end of line */
+ {
+! amount += curbuf->b_ind_open_imag;
+
+ l = skipwhite(ml_get_curline());
+ if (cin_is_cpp_namespace(l))
+! amount += curbuf->b_ind_cpp_namespace;
+ }
+ else
+ {
+! /* Compensate for adding b_ind_open_extra later. */
+! amount -= curbuf->b_ind_open_extra;
+ if (amount < 0)
+ amount = 0;
+ }
+***************
+*** 7585,7604 ****
+ if (cin_iscase(theline, FALSE)) /* it's a switch() label */
+ {
+ lookfor = LOOKFOR_CASE; /* find a previous switch() label */
+! amount += ind_case;
+ }
+ else if (cin_isscopedecl(theline)) /* private:, ... */
+ {
+ lookfor = LOOKFOR_SCOPEDECL; /* class decl is this block */
+! amount += ind_scopedecl;
+ }
+ else
+ {
+! if (ind_case_break && cin_isbreak(theline)) /* break; ... */
+ lookfor_break = TRUE;
+
+ lookfor = LOOKFOR_INITIAL;
+! amount += ind_level; /* ind_level from start of block */
+ }
+ scope_amount = amount;
+ whilelevel = 0;
+--- 7540,7561 ----
+ if (cin_iscase(theline, FALSE)) /* it's a switch() label */
+ {
+ lookfor = LOOKFOR_CASE; /* find a previous switch() label */
+! amount += curbuf->b_ind_case;
+ }
+ else if (cin_isscopedecl(theline)) /* private:, ... */
+ {
+ lookfor = LOOKFOR_SCOPEDECL; /* class decl is this block */
+! amount += curbuf->b_ind_scopedecl;
+ }
+ else
+ {
+! if (curbuf->b_ind_case_break && cin_isbreak(theline))
+! /* break; ... */
+ lookfor_break = TRUE;
+
+ lookfor = LOOKFOR_INITIAL;
+! /* b_ind_level from start of block */
+! amount += curbuf->b_ind_level;
+ }
+ scope_amount = amount;
+ whilelevel = 0;
+***************
+*** 7636,7649 ****
+ {
+ if (curwin->w_cursor.lnum == 0
+ || curwin->w_cursor.lnum
+! < ourscope - ind_maxparen)
+ {
+! /* nothing found (abuse ind_maxparen as limit)
+! * assume terminated line (i.e. a variable
+ * initialization) */
+ if (cont_amount > 0)
+ amount = cont_amount;
+! else if (!ind_js)
+ amount += ind_continuation;
+ break;
+ }
+--- 7593,7606 ----
+ {
+ if (curwin->w_cursor.lnum == 0
+ || curwin->w_cursor.lnum
+! < ourscope - curbuf->b_ind_maxparen)
+ {
+! /* nothing found (abuse curbuf->b_ind_maxparen as
+! * limit) assume terminated line (i.e. a variable
+ * initialization) */
+ if (cont_amount > 0)
+ amount = cont_amount;
+! else if (!curbuf->b_ind_js)
+ amount += ind_continuation;
+ break;
+ }
+***************
+*** 7654,7660 ****
+ * 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;
+--- 7611,7617 ----
+ * If we're in a comment now, skip to the start of the
+ * comment.
+ */
+! trypos = find_start_comment(curbuf->b_ind_maxcomment);
+ if (trypos != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+***************
+*** 7680,7686 ****
+ */
+ 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.
+--- 7637,7644 ----
+ */
+ if (start_brace != BRACE_IN_COL0
+ || !cin_isfuncdecl(&l, curwin->w_cursor.lnum,
+! 0, curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment))
+ {
+ /* if the line is terminated with another ','
+ * it is a continued variable initialization.
+***************
+*** 7711,7721 ****
+ */ /* XXX */
+ trypos = NULL;
+ if (find_last_paren(l, '(', ')'))
+! trypos = find_match_paren(ind_maxparen,
+! ind_maxcomment);
+
+ if (trypos == NULL && find_last_paren(l, '{', '}'))
+! trypos = find_start_brace(ind_maxcomment);
+
+ if (trypos != NULL)
+ {
+--- 7669,7681 ----
+ */ /* XXX */
+ trypos = NULL;
+ if (find_last_paren(l, '(', ')'))
+! trypos = find_match_paren(
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment);
+
+ if (trypos == NULL && find_last_paren(l, '{', '}'))
+! trypos = find_start_brace(
+! curbuf->b_ind_maxcomment);
+
+ if (trypos != NULL)
+ {
+***************
+*** 7750,7757 ****
+ amount = scope_amount;
+ if (theline[0] == '{')
+ {
+! amount += ind_open_extra;
+! added_to_amount = ind_open_extra;
+ }
+ }
+
+--- 7710,7717 ----
+ amount = scope_amount;
+ if (theline[0] == '{')
+ {
+! amount += curbuf->b_ind_open_extra;
+! added_to_amount = curbuf->b_ind_open_extra;
+ }
+ }
+
+***************
+*** 7773,7779 ****
+
+ /* 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;
+--- 7733,7740 ----
+
+ /* If we're in a comment now, skip to the start of
+ * the comment. */
+! trypos = find_start_comment(
+! curbuf->b_ind_maxcomment);
+ if (trypos != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+***************
+*** 7788,7794 ****
+ /* Finally the actual check for "namespace". */
+ if (cin_is_cpp_namespace(l))
+ {
+! amount += ind_cpp_namespace - added_to_amount;
+ break;
+ }
+
+--- 7749,7756 ----
+ /* Finally the actual check for "namespace". */
+ if (cin_is_cpp_namespace(l))
+ {
+! amount += curbuf->b_ind_cpp_namespace
+! - added_to_amount;
+ break;
+ }
+
+***************
+*** 7802,7808 ****
+ /*
+ * If we're in a comment now, skip to the start of the comment.
+ */ /* XXX */
+! if ((trypos = find_start_comment(ind_maxcomment)) != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+--- 7764,7771 ----
+ /*
+ * If we're in a comment now, skip to the start of the comment.
+ */ /* XXX */
+! if ((trypos = find_start_comment(curbuf->b_ind_maxcomment))
+! != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+***************
+*** 7856,7863 ****
+ * Check that this case label is not for another
+ * switch()
+ */ /* XXX */
+! if ((trypos = find_start_brace(ind_maxcomment)) ==
+! NULL || trypos->lnum == ourscope)
+ {
+ amount = get_indent(); /* XXX */
+ break;
+--- 7819,7827 ----
+ * Check that this case label is not for another
+ * switch()
+ */ /* XXX */
+! if ((trypos = find_start_brace(
+! curbuf->b_ind_maxcomment)) == NULL
+! || trypos->lnum == ourscope)
+ {
+ amount = get_indent(); /* XXX */
+ break;
+***************
+*** 7900,7908 ****
+ if (l != NULL && cin_is_cinword(l))
+ {
+ if (theline[0] == '{')
+! amount += ind_open_extra;
+ else
+! amount += ind_level + ind_no_brace;
+ }
+ break;
+ }
+--- 7864,7873 ----
+ if (l != NULL && cin_is_cinword(l))
+ {
+ if (theline[0] == '{')
+! amount += curbuf->b_ind_open_extra;
+ else
+! amount += curbuf->b_ind_level
+! + curbuf->b_ind_no_brace;
+ }
+ break;
+ }
+***************
+*** 7916,7923 ****
+ * -> y = 1;
+ */
+ scope_amount = get_indent() + (iscase /* XXX */
+! ? ind_case_code : ind_scopedecl_code);
+! lookfor = ind_case_break ? LOOKFOR_NOBREAK : LOOKFOR_ANY;
+ continue;
+ }
+
+--- 7881,7890 ----
+ * -> y = 1;
+ */
+ scope_amount = get_indent() + (iscase /* XXX */
+! ? curbuf->b_ind_case_code
+! : curbuf->b_ind_scopedecl_code);
+! lookfor = curbuf->b_ind_case_break
+! ? LOOKFOR_NOBREAK : LOOKFOR_ANY;
+ continue;
+ }
+
+***************
+*** 7928,7934 ****
+ if (lookfor == LOOKFOR_CASE || lookfor == LOOKFOR_SCOPEDECL)
+ {
+ if (find_last_paren(l, '{', '}') && (trypos =
+! find_start_brace(ind_maxcomment)) != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+--- 7895,7901 ----
+ if (lookfor == LOOKFOR_CASE || lookfor == LOOKFOR_SCOPEDECL)
+ {
+ if (find_last_paren(l, '{', '}') && (trypos =
+! find_start_brace(curbuf->b_ind_maxcomment)) != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+***************
+*** 7939,7945 ****
+ /*
+ * Ignore jump labels with nothing after them.
+ */
+! if (!ind_js && cin_islabel(ind_maxcomment))
+ {
+ l = after_label(ml_get_curline());
+ if (l == NULL || cin_nocode(l))
+--- 7906,7912 ----
+ /*
+ * Ignore jump labels with nothing after them.
+ */
+! if (!curbuf->b_ind_js && cin_islabel(curbuf->b_ind_maxcomment))
+ {
+ l = after_label(ml_get_curline());
+ if (l == NULL || cin_nocode(l))
+***************
+*** 7962,7968 ****
+ * constructor initialization?
+ */ /* XXX */
+ n = FALSE;
+! if (lookfor != LOOKFOR_TERM && ind_cpp_baseclass > 0)
+ {
+ n = cin_is_cpp_baseclass(&col);
+ l = ml_get_curline();
+--- 7929,7935 ----
+ * constructor initialization?
+ */ /* XXX */
+ n = FALSE;
+! if (lookfor != LOOKFOR_TERM && curbuf->b_ind_cpp_baseclass > 0)
+ {
+ n = cin_is_cpp_baseclass(&col);
+ l = ml_get_curline();
+***************
+*** 7985,7992 ****
+ }
+ else
+ /* XXX */
+! amount = get_baseclass_amount(col, ind_maxparen,
+! ind_maxcomment, ind_cpp_baseclass);
+ break;
+ }
+ else if (lookfor == LOOKFOR_CPP_BASECLASS)
+--- 7952,7961 ----
+ }
+ else
+ /* XXX */
+! amount = get_baseclass_amount(col,
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment,
+! curbuf->b_ind_cpp_baseclass);
+ break;
+ }
+ else if (lookfor == LOOKFOR_CPP_BASECLASS)
+***************
+*** 8029,8036 ****
+ */
+ (void)find_last_paren(l, '(', ')');
+ trypos = find_match_paren(
+! corr_ind_maxparen(ind_maxparen, &cur_curpos),
+! ind_maxcomment);
+
+ /*
+ * If we are looking for ',', we also look for matching
+--- 7998,8005 ----
+ */
+ (void)find_last_paren(l, '(', ')');
+ trypos = find_match_paren(
+! corr_ind_maxparen(curbuf->b_ind_maxparen,
+! &cur_curpos), curbuf->b_ind_maxcomment);
+
+ /*
+ * If we are looking for ',', we also look for matching
+***************
+*** 8038,8044 ****
+ */
+ if (trypos == NULL && terminated == ','
+ && find_last_paren(l, '{', '}'))
+! trypos = find_start_brace(ind_maxcomment);
+
+ if (trypos != NULL)
+ {
+--- 8007,8013 ----
+ */
+ if (trypos == NULL && terminated == ','
+ && find_last_paren(l, '{', '}'))
+! trypos = find_start_brace(curbuf->b_ind_maxcomment);
+
+ if (trypos != NULL)
+ {
+***************
+*** 8081,8089 ****
+ * Get indent and pointer to text for current line,
+ * ignoring any jump label. XXX
+ */
+! if (!ind_js)
+ cur_amount = skip_label(curwin->w_cursor.lnum,
+! &l, ind_maxcomment);
+ else
+ cur_amount = get_indent();
+ /*
+--- 8050,8058 ----
+ * Get indent and pointer to text for current line,
+ * ignoring any jump label. XXX
+ */
+! if (!curbuf->b_ind_js)
+ cur_amount = skip_label(curwin->w_cursor.lnum,
+! &l, curbuf->b_ind_maxcomment);
+ else
+ cur_amount = get_indent();
+ /*
+***************
+*** 8098,8113 ****
+ {
+ amount = cur_amount;
+ /*
+! * Only add ind_open_extra when the current line
+ * doesn't start with a '{', which must have a match
+ * in the same line (scope is the same). Probably:
+ * { 1, 2 },
+ * -> { 3, 4 }
+ */
+ if (*skipwhite(l) != '{')
+! amount += ind_open_extra;
+
+! if (ind_cpp_baseclass)
+ {
+ /* have to look back, whether it is a cpp base
+ * class declaration or initialization */
+--- 8067,8082 ----
+ {
+ amount = cur_amount;
+ /*
+! * Only add b_ind_open_extra when the current line
+ * doesn't start with a '{', which must have a match
+ * in the same line (scope is the same). Probably:
+ * { 1, 2 },
+ * -> { 3, 4 }
+ */
+ if (*skipwhite(l) != '{')
+! amount += curbuf->b_ind_open_extra;
+
+! if (curbuf->b_ind_cpp_baseclass)
+ {
+ /* have to look back, whether it is a cpp base
+ * class declaration or initialization */
+***************
+*** 8155,8164 ****
+ */
+ amount = cur_amount;
+ if (theline[0] == '{')
+! amount += ind_open_extra;
+ if (lookfor != LOOKFOR_TERM)
+ {
+! amount += ind_level + ind_no_brace;
+ break;
+ }
+
+--- 8124,8134 ----
+ */
+ amount = cur_amount;
+ if (theline[0] == '{')
+! amount += curbuf->b_ind_open_extra;
+ if (lookfor != LOOKFOR_TERM)
+ {
+! amount += curbuf->b_ind_level
+! + curbuf->b_ind_no_brace;
+ break;
+ }
+
+***************
+*** 8192,8201 ****
+ curwin->w_cursor.col =
+ (colnr_T)(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;
+ }
+ }
+--- 8162,8172 ----
+ curwin->w_cursor.col =
+ (colnr_T)(l - ml_get_curline()) + 1;
+
+! if ((trypos = find_start_brace(
+! curbuf->b_ind_maxcomment)) == NULL
+ || find_match(LOOKFOR_IF, trypos->lnum,
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment) == FAIL)
+ break;
+ }
+ }
+***************
+*** 8232,8238 ****
+ * enumerations/initializations. */
+ if (terminated == ',')
+ {
+! if (ind_cpp_baseclass == 0)
+ break;
+
+ lookfor = LOOKFOR_CPP_BASECLASS;
+--- 8203,8209 ----
+ * enumerations/initializations. */
+ if (terminated == ',')
+ {
+! if (curbuf->b_ind_cpp_baseclass == 0)
+ break;
+
+ lookfor = LOOKFOR_CPP_BASECLASS;
+***************
+*** 8290,8297 ****
+ * If so: Ignore until the matching "do".
+ */
+ /* XXX */
+! else if (cin_iswhileofdo_end(terminated, ind_maxparen,
+! ind_maxcomment))
+ {
+ /*
+ * Found an unterminated line after a while ();, line up
+--- 8261,8268 ----
+ * If so: Ignore until the matching "do".
+ */
+ /* XXX */
+! else if (cin_iswhileofdo_end(terminated, curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment))
+ {
+ /*
+ * Found an unterminated line after a while ();, line up
+***************
+*** 8315,8321 ****
+ lookfor = LOOKFOR_TERM;
+ amount = get_indent(); /* XXX */
+ if (theline[0] == '{')
+! amount += ind_open_extra;
+ }
+ ++whilelevel;
+ }
+--- 8286,8292 ----
+ lookfor = LOOKFOR_TERM;
+ amount = get_indent(); /* XXX */
+ if (theline[0] == '{')
+! amount += curbuf->b_ind_open_extra;
+ }
+ ++whilelevel;
+ }
+***************
+*** 8408,8415 ****
+ term_again:
+ l = ml_get_curline();
+ if (find_last_paren(l, '(', ')')
+! && (trypos = find_match_paren(ind_maxparen,
+! ind_maxcomment)) != NULL)
+ {
+ /*
+ * Check if we are on a case label now. This is
+--- 8379,8387 ----
+ term_again:
+ l = ml_get_curline();
+ if (find_last_paren(l, '(', ')')
+! && (trypos = find_match_paren(
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)) != NULL)
+ {
+ /*
+ * Check if we are on a case label now. This is
+***************
+*** 8436,8456 ****
+ * stat;
+ * }
+ */
+! iscase = (ind_keep_case_label && cin_iscase(l, FALSE));
+
+ /*
+ * Get indent and pointer to text for current line,
+ * ignoring any jump label.
+ */
+ amount = skip_label(curwin->w_cursor.lnum,
+! &l, ind_maxcomment);
+
+ if (theline[0] == '{')
+! amount += ind_open_extra;
+! /* See remark above: "Only add ind_open_extra.." */
+ l = skipwhite(l);
+ if (*l == '{')
+! amount -= ind_open_extra;
+ lookfor = iscase ? LOOKFOR_ANY : LOOKFOR_TERM;
+
+ /*
+--- 8408,8429 ----
+ * stat;
+ * }
+ */
+! iscase = (curbuf->b_ind_keep_case_label
+! && cin_iscase(l, FALSE));
+
+ /*
+ * Get indent and pointer to text for current line,
+ * ignoring any jump label.
+ */
+ amount = skip_label(curwin->w_cursor.lnum,
+! &l, curbuf->b_ind_maxcomment);
+
+ if (theline[0] == '{')
+! amount += curbuf->b_ind_open_extra;
+! /* See remark above: "Only add b_ind_open_extra.." */
+ l = skipwhite(l);
+ if (*l == '{')
+! amount -= curbuf->b_ind_open_extra;
+ lookfor = iscase ? LOOKFOR_ANY : LOOKFOR_TERM;
+
+ /*
+***************
+*** 8466,8475 ****
+ && cin_iselse(l)
+ && whilelevel == 0)
+ {
+! if ((trypos = find_start_brace(ind_maxcomment))
+! == NULL
+ || find_match(LOOKFOR_IF, trypos->lnum,
+! ind_maxparen, ind_maxcomment) == FAIL)
+ break;
+ continue;
+ }
+--- 8439,8449 ----
+ && cin_iselse(l)
+ && whilelevel == 0)
+ {
+! if ((trypos = find_start_brace(
+! curbuf->b_ind_maxcomment)) == NULL
+ || find_match(LOOKFOR_IF, trypos->lnum,
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment) == FAIL)
+ break;
+ continue;
+ }
+***************
+*** 8480,8487 ****
+ */
+ l = ml_get_curline();
+ if (find_last_paren(l, '{', '}')
+! && (trypos = find_start_brace(ind_maxcomment))
+! != NULL) /* XXX */
+ {
+ curwin->w_cursor = *trypos;
+ /* if not "else {" check for terminated again */
+--- 8454,8461 ----
+ */
+ l = ml_get_curline();
+ if (find_last_paren(l, '{', '}')
+! && (trypos = find_start_brace(
+! curbuf->b_ind_maxcomment)) != NULL) /* XXX */
+ {
+ curwin->w_cursor = *trypos;
+ /* if not "else {" check for terminated again */
+***************
+*** 8500,8510 ****
+
+ /* add extra indent for a comment */
+ if (cin_iscomment(theline))
+! amount += ind_comment;
+
+ /* subtract extra left-shift for jump labels */
+! if (ind_jump_label > 0 && original_line_islabel)
+! amount -= ind_jump_label;
+ }
+
+ /*
+--- 8474,8484 ----
+
+ /* add extra indent for a comment */
+ if (cin_iscomment(theline))
+! amount += curbuf->b_ind_comment;
+
+ /* subtract extra left-shift for jump labels */
+! if (curbuf->b_ind_jump_label > 0 && original_line_islabel)
+! amount -= curbuf->b_ind_jump_label;
+ }
+
+ /*
+***************
+*** 8525,8531 ****
+
+ if (theline[0] == '{')
+ {
+! amount = ind_first_open;
+ }
+
+ /*
+--- 8499,8505 ----
+
+ if (theline[0] == '{')
+ {
+! amount = curbuf->b_ind_first_open;
+ }
+
+ /*
+***************
+*** 8543,8552 ****
+ && !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;
+ }
+ else
+ {
+--- 8517,8527 ----
+ && !cin_ends_in(theline, (char_u *)",", NULL)
+ && cin_isfuncdecl(NULL, cur_curpos.lnum + 1,
+ cur_curpos.lnum + 1,
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)
+ && !cin_isterminated(theline, FALSE, TRUE))
+ {
+! amount = curbuf->b_ind_func_type;
+ }
+ else
+ {
+***************
+*** 8565,8571 ****
+ /*
+ * If we're in a comment now, skip to the start of the comment.
+ */ /* XXX */
+! if ((trypos = find_start_comment(ind_maxcomment)) != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+--- 8540,8547 ----
+ /*
+ * If we're in a comment now, skip to the start of the comment.
+ */ /* XXX */
+! if ((trypos = find_start_comment(
+! curbuf->b_ind_maxcomment)) != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+***************
+*** 8577,8583 ****
+ * constructor initialization?
+ */ /* XXX */
+ n = FALSE;
+! if (ind_cpp_baseclass != 0 && theline[0] != '{')
+ {
+ n = cin_is_cpp_baseclass(&col);
+ l = ml_get_curline();
+--- 8553,8559 ----
+ * constructor initialization?
+ */ /* XXX */
+ n = FALSE;
+! if (curbuf->b_ind_cpp_baseclass != 0 && theline[0] != '{')
+ {
+ n = cin_is_cpp_baseclass(&col);
+ l = ml_get_curline();
+***************
+*** 8585,8592 ****
+ if (n)
+ {
+ /* XXX */
+! amount = get_baseclass_amount(col, ind_maxparen,
+! ind_maxcomment, ind_cpp_baseclass);
+ break;
+ }
+
+--- 8561,8569 ----
+ if (n)
+ {
+ /* XXX */
+! amount = get_baseclass_amount(col, curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment,
+! curbuf->b_ind_cpp_baseclass);
+ break;
+ }
+
+***************
+*** 8617,8624 ****
+ {
+ /* take us back to opening paren */
+ if (find_last_paren(l, '(', ')')
+! && (trypos = find_match_paren(ind_maxparen,
+! ind_maxcomment)) != NULL)
+ curwin->w_cursor = *trypos;
+
+ /* For a line ending in ',' that is a continuation line go
+--- 8594,8602 ----
+ {
+ /* take us back to opening paren */
+ if (find_last_paren(l, '(', ')')
+! && (trypos = find_match_paren(
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)) != NULL)
+ curwin->w_cursor = *trypos;
+
+ /* For a line ending in ',' that is a continuation line go
+***************
+*** 8650,8656 ****
+ * 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();
+
+--- 8628,8635 ----
+ * not in a comment, put it the left margin.
+ */
+ if (cin_isfuncdecl(NULL, cur_curpos.lnum, 0,
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)) /* XXX */
+ break;
+ l = ml_get_curline();
+
+***************
+*** 8699,8707 ****
+ * parameters.
+ */
+ if (cin_isfuncdecl(&l, curwin->w_cursor.lnum, 0,
+! ind_maxparen, ind_maxcomment))
+ {
+! amount = ind_param;
+ break;
+ }
+
+--- 8678,8687 ----
+ * parameters.
+ */
+ if (cin_isfuncdecl(&l, curwin->w_cursor.lnum, 0,
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment))
+ {
+! amount = curbuf->b_ind_param;
+ break;
+ }
+
+***************
+*** 8730,8737 ****
+ */
+ find_last_paren(l, '(', ')');
+
+! if ((trypos = find_match_paren(ind_maxparen,
+! ind_maxcomment)) != NULL)
+ curwin->w_cursor = *trypos;
+ amount = get_indent(); /* XXX */
+ break;
+--- 8710,8717 ----
+ */
+ find_last_paren(l, '(', ')');
+
+! if ((trypos = find_match_paren(curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)) != NULL)
+ curwin->w_cursor = *trypos;
+ amount = get_indent(); /* XXX */
+ break;
+***************
+*** 8739,8745 ****
+
+ /* add extra indent for a comment */
+ if (cin_iscomment(theline))
+! amount += ind_comment;
+
+ /* add extra indent if the previous line ended in a backslash:
+ * "asdfasdf\
+--- 8719,8725 ----
+
+ /* add extra indent for a comment */
+ if (cin_iscomment(theline))
+! amount += curbuf->b_ind_comment;
+
+ /* add extra indent if the previous line ended in a backslash:
+ * "asdfasdf\
+*** ../vim-7.4.068/src/ops.c 2013-11-04 01:41:11.000000000 +0100
+--- src/ops.c 2013-11-05 06:13:27.000000000 +0100
+***************
+*** 336,342 ****
+ {
+ int count;
+ int i, j;
+! int p_sw = (int)get_sw_value();
+
+ count = get_indent(); /* get current indent */
+
+--- 336,342 ----
+ {
+ int count;
+ int i, j;
+! int p_sw = (int)get_sw_value(curbuf);
+
+ count = get_indent(); /* get current indent */
+
+***************
+*** 392,398 ****
+ 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;
+--- 392,398 ----
+ int total;
+ char_u *newp, *oldp;
+ int oldcol = curwin->w_cursor.col;
+! int p_sw = (int)get_sw_value(curbuf);
+ int p_ts = (int)curbuf->b_p_ts;
+ struct block_def bd;
+ int incr;
+***************
+*** 4046,4052 ****
+ # endif
+ # endif
+ # ifdef FEAT_CINDENT
+! (curbuf->b_p_cin && in_cinkeys('#', ' ', TRUE))
+ # endif
+ ;
+ }
+--- 4046,4053 ----
+ # endif
+ # endif
+ # ifdef FEAT_CINDENT
+! (curbuf->b_p_cin && in_cinkeys('#', ' ', TRUE)
+! && curbuf->b_ind_hash_comment == 0)
+ # endif
+ ;
+ }
+*** ../vim-7.4.068/src/proto/misc1.pro 2013-11-04 02:53:46.000000000 +0100
+--- src/proto/misc1.pro 2013-11-05 06:08:46.000000000 +0100
+***************
+*** 84,89 ****
+--- 84,90 ----
+ int cin_islabel __ARGS((int ind_maxcomment));
+ int cin_iscase __ARGS((char_u *s, int strict));
+ int cin_isscopedecl __ARGS((char_u *s));
++ void parse_cino __ARGS((buf_T *buf));
+ int get_c_indent __ARGS((void));
+ int get_expr_indent __ARGS((void));
+ int get_lisp_indent __ARGS((void));
+*** ../vim-7.4.068/src/proto/option.pro 2013-08-10 13:37:22.000000000 +0200
+--- src/proto/option.pro 2013-11-05 06:14:46.000000000 +0100
+***************
+*** 59,65 ****
+ 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));
+ long get_sts_value __ARGS((void));
+ void find_mps_values __ARGS((int *initc, int *findc, int *backwards, int switchit));
+ /* vim: set ft=c : */
+--- 59,65 ----
+ 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((buf_T *buf));
+ long get_sts_value __ARGS((void));
+ void find_mps_values __ARGS((int *initc, int *findc, int *backwards, int switchit));
+ /* vim: set ft=c : */
+*** ../vim-7.4.068/src/structs.h 2013-07-03 15:35:59.000000000 +0200
+--- src/structs.h 2013-11-05 05:08:26.000000000 +0100
+***************
+*** 1633,1638 ****
+--- 1633,1677 ----
+
+ /* end of buffer options */
+
++ #ifdef FEAT_CINDENT
++ /* values set from b_p_cino */
++ int b_ind_level;
++ int b_ind_open_imag;
++ int b_ind_no_brace;
++ int b_ind_first_open;
++ int b_ind_open_extra;
++ int b_ind_close_extra;
++ int b_ind_open_left_imag;
++ int b_ind_jump_label;
++ int b_ind_case;
++ int b_ind_case_code;
++ int b_ind_case_break;
++ int b_ind_param;
++ int b_ind_func_type;
++ int b_ind_comment;
++ int b_ind_in_comment;
++ int b_ind_in_comment2;
++ int b_ind_cpp_baseclass;
++ int b_ind_continuation;
++ int b_ind_unclosed;
++ int b_ind_unclosed2;
++ int b_ind_unclosed_noignore;
++ int b_ind_unclosed_wrapped;
++ int b_ind_unclosed_whiteok;
++ int b_ind_matching_paren;
++ int b_ind_paren_prev;
++ int b_ind_maxparen;
++ int b_ind_maxcomment;
++ int b_ind_scopedecl;
++ int b_ind_scopedecl_code;
++ int b_ind_java;
++ int b_ind_js;
++ int b_ind_keep_case_label;
++ int b_ind_hash_comment;
++ int b_ind_cpp_namespace;
++ int b_ind_if_for_while;
++ #endif
++
+ linenr_T b_no_eol_lnum; /* non-zero lnum when last line of next binary
+ * write should not have an end-of-line */
+
+*** ../vim-7.4.068/src/option.c 2013-07-17 21:39:13.000000000 +0200
+--- src/option.c 2013-11-05 06:58:04.000000000 +0100
+***************
+*** 5372,5377 ****
+--- 5372,5378 ----
+ #ifdef FEAT_CINDENT
+ check_string_option(&buf->b_p_cink);
+ check_string_option(&buf->b_p_cino);
++ parse_cino(buf);
+ #endif
+ #ifdef FEAT_AUTOCMD
+ check_string_option(&buf->b_p_ft);
+***************
+*** 6990,6995 ****
+--- 6991,7005 ----
+ }
+ #endif
+
++ #ifdef FEAT_CINDENT
++ /* 'cinoptions' */
++ else if (gvarp == &p_cino)
++ {
++ /* TODO: recognize errors */
++ parse_cino(curbuf);
++ }
++ #endif
++
+ /* Options that are a list of flags. */
+ else
+ {
+***************
+*** 8338,8351 ****
+ curwin->w_p_fdc = 12;
+ }
+ }
+
+ /* 'shiftwidth' or 'tabstop' */
+ else if (pp == &curbuf->b_p_sw || pp == &curbuf->b_p_ts)
+ {
+ if (foldmethodIsIndent(curwin))
+ foldUpdateAll(curwin);
+ }
+! #endif /* FEAT_FOLDING */
+
+ #ifdef FEAT_MBYTE
+ /* 'maxcombine' */
+--- 8348,8371 ----
+ curwin->w_p_fdc = 12;
+ }
+ }
++ #endif /* FEAT_FOLDING */
+
++ #if defined(FEAT_FOLDING) || defined(FEAT_CINDENT)
+ /* 'shiftwidth' or 'tabstop' */
+ else if (pp == &curbuf->b_p_sw || pp == &curbuf->b_p_ts)
+ {
++ # ifdef FEAT_FOLDING
+ if (foldmethodIsIndent(curwin))
+ foldUpdateAll(curwin);
++ # endif
++ # ifdef FEAT_CINDENT
++ /* When 'shiftwidth' changes, or it's zero and 'tabstop' changes:
++ * parse 'cinoptions'. */
++ if (pp == &curbuf->b_p_sw || curbuf->b_p_sw == 0)
++ parse_cino(curbuf);
++ # endif
+ }
+! #endif
+
+ #ifdef FEAT_MBYTE
+ /* 'maxcombine' */
+***************
+*** 11729,11737 ****
+ * 'tabstop' value when 'shiftwidth' is zero.
+ */
+ long
+! get_sw_value()
+ {
+! return curbuf->b_p_sw ? curbuf->b_p_sw : curbuf->b_p_ts;
+ }
+
+ /*
+--- 11749,11758 ----
+ * 'tabstop' value when 'shiftwidth' is zero.
+ */
+ long
+! get_sw_value(buf)
+! buf_T *buf;
+ {
+! return buf->b_p_sw ? buf->b_p_sw : buf->b_p_ts;
+ }
+
+ /*
+***************
+*** 11741,11747 ****
+ long
+ get_sts_value()
+ {
+! return curbuf->b_p_sts < 0 ? get_sw_value() : curbuf->b_p_sts;
+ }
+
+ /*
+--- 11762,11768 ----
+ long
+ get_sts_value()
+ {
+! return curbuf->b_p_sts < 0 ? get_sw_value(curbuf) : curbuf->b_p_sts;
+ }
+
+ /*
+*** ../vim-7.4.068/src/version.c 2013-11-04 04:57:46.000000000 +0100
+--- src/version.c 2013-11-05 04:55:36.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 69,
+ /**/
+
+--
+A special cleaning ordinance bans housewives from hiding dirt and dust under a
+rug in a dwelling.
+ [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/patches/source/vim/patches/7.4.070 b/patches/source/vim/patches/7.4.070
new file mode 100644
index 00000000..749b7445
--- /dev/null
+++ b/patches/source/vim/patches/7.4.070
@@ -0,0 +1,47 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.070
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.070 (after 7.4.069)
+Problem: Can't compile with tiny features. (Tony Mechelynck)
+Solution: Add #ifdef.
+Files: src/buffer.c
+
+
+*** ../vim-7.4.069/src/buffer.c 2013-11-05 07:12:59.000000000 +0100
+--- src/buffer.c 2013-11-05 17:37:27.000000000 +0100
+***************
+*** 213,219 ****
+--- 213,221 ----
+ if (curbuf->b_flags & BF_NEVERLOADED)
+ {
+ (void)buf_init_chartab(curbuf, FALSE);
++ #ifdef FEAT_CINDENT
+ parse_cino(curbuf);
++ #endif
+ }
+
+ /*
+*** ../vim-7.4.069/src/version.c 2013-11-05 07:12:59.000000000 +0100
+--- src/version.c 2013-11-05 17:38:56.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 70,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.071 b/patches/source/vim/patches/7.4.071
new file mode 100644
index 00000000..71b2984e
--- /dev/null
+++ b/patches/source/vim/patches/7.4.071
@@ -0,0 +1,1302 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.071
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.071 (after 7.4.069)
+Problem: Passing limits around too often.
+Solution: Use limits from buffer.
+Files: src/edit.c, src/misc1.c, src/proto/misc1.pro
+
+
+*** ../vim-7.4.070/src/edit.c 2013-11-05 07:12:59.000000000 +0100
+--- src/edit.c 2013-11-06 03:19:10.000000000 +0100
+***************
+*** 7857,7864 ****
+ if (try_match && keytyped == ':')
+ {
+ p = ml_get_curline();
+! if (cin_iscase(p, FALSE) || cin_isscopedecl(p)
+! || cin_islabel(30))
+ return TRUE;
+ /* Need to get the line again after cin_islabel(). */
+ p = ml_get_curline();
+--- 7857,7863 ----
+ if (try_match && keytyped == ':')
+ {
+ p = ml_get_curline();
+! if (cin_iscase(p, FALSE) || cin_isscopedecl(p) || cin_islabel())
+ return TRUE;
+ /* Need to get the line again after cin_islabel(). */
+ p = ml_get_curline();
+***************
+*** 7868,7874 ****
+ {
+ p[curwin->w_cursor.col - 1] = ' ';
+ i = (cin_iscase(p, FALSE) || cin_isscopedecl(p)
+! || cin_islabel(30));
+ p = ml_get_curline();
+ p[curwin->w_cursor.col - 1] = ':';
+ if (i)
+--- 7867,7873 ----
+ {
+ p[curwin->w_cursor.col - 1] = ' ';
+ i = (cin_iscase(p, FALSE) || cin_isscopedecl(p)
+! || cin_islabel());
+ p = ml_get_curline();
+ p[curwin->w_cursor.col - 1] = ':';
+ if (i)
+*** ../vim-7.4.070/src/misc1.c 2013-11-05 07:12:59.000000000 +0100
+--- src/misc1.c 2013-11-06 03:46:59.000000000 +0100
+***************
+*** 5191,5201 ****
+--- 5191,5208 ----
+ #if defined(FEAT_CINDENT) || defined(FEAT_SYN_HL)
+
+ static char_u *skip_string __ARGS((char_u *p));
++ static pos_T *ind_find_start_comment __ARGS((void));
+
+ /*
+ * Find the start of a comment, not knowing if we are in a comment right now.
+ * Search starts at w_cursor.lnum and goes backwards.
+ */
++ static pos_T *
++ ind_find_start_comment() /* XXX */
++ {
++ return find_start_comment(curbuf->b_ind_maxcomment);
++ }
++
+ pos_T *
+ find_start_comment(ind_maxcomment) /* XXX */
+ int ind_maxcomment;
+***************
+*** 5313,5319 ****
+ static int cin_isdefault __ARGS((char_u *));
+ static char_u *after_label __ARGS((char_u *l));
+ static int get_indent_nolabel __ARGS((linenr_T lnum));
+! static int skip_label __ARGS((linenr_T, char_u **pp, int ind_maxcomment));
+ static int cin_first_id_amount __ARGS((void));
+ static int cin_get_equal_amount __ARGS((linenr_T lnum));
+ static int cin_ispreproc __ARGS((char_u *));
+--- 5320,5326 ----
+ static int cin_isdefault __ARGS((char_u *));
+ static char_u *after_label __ARGS((char_u *l));
+ static int get_indent_nolabel __ARGS((linenr_T lnum));
+! static int skip_label __ARGS((linenr_T, char_u **pp));
+ static int cin_first_id_amount __ARGS((void));
+ static int cin_get_equal_amount __ARGS((linenr_T lnum));
+ static int cin_ispreproc __ARGS((char_u *));
+***************
+*** 5322,5345 ****
+ 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 *));
+! 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));
+! static int get_baseclass_amount __ARGS((int col, int ind_maxparen, int ind_maxcomment, int ind_cpp_baseclass));
+ static int cin_ends_in __ARGS((char_u *, char_u *, char_u *));
+ static int cin_starts_with __ARGS((char_u *s, char *word));
+ static int cin_skip2pos __ARGS((pos_T *trypos));
+! static pos_T *find_start_brace __ARGS((int));
+! static pos_T *find_match_paren __ARGS((int, int));
+! 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 *));
+
+ /*
+--- 5329,5352 ----
+ 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));
+ static int cin_isif __ARGS((char_u *));
+ static int cin_iselse __ARGS((char_u *));
+ static int cin_isdo __ARGS((char_u *));
+! static int cin_iswhileofdo __ARGS((char_u *, linenr_T));
+ static int cin_is_if_for_while_before_offset __ARGS((char_u *line, int *poffset));
+! static int cin_iswhileofdo_end __ARGS((int terminated));
+ static int cin_isbreak __ARGS((char_u *));
+ static int cin_is_cpp_baseclass __ARGS((colnr_T *col));
+! static int get_baseclass_amount __ARGS((int col));
+ static int cin_ends_in __ARGS((char_u *, char_u *, char_u *));
+ static int cin_starts_with __ARGS((char_u *s, char *word));
+ static int cin_skip2pos __ARGS((pos_T *trypos));
+! static pos_T *find_start_brace __ARGS((void));
+! static pos_T *find_match_paren __ARGS((int));
+! static int corr_ind_maxparen __ARGS((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));
+ static int cin_is_cpp_namespace __ARGS((char_u *));
+
+ /*
+***************
+*** 5444,5451 ****
+ * Note: curwin->w_cursor must be where we are looking for the label.
+ */
+ int
+! cin_islabel(ind_maxcomment) /* XXX */
+! int ind_maxcomment;
+ {
+ char_u *s;
+
+--- 5451,5457 ----
+ * Note: curwin->w_cursor must be where we are looking for the label.
+ */
+ int
+! cin_islabel() /* XXX */
+ {
+ char_u *s;
+
+***************
+*** 5479,5485 ****
+ * If we're in a comment now, skip to the start of the comment.
+ */
+ curwin->w_cursor.col = 0;
+! if ((trypos = find_start_comment(ind_maxcomment)) != NULL) /* XXX */
+ curwin->w_cursor = *trypos;
+
+ line = ml_get_curline();
+--- 5485,5491 ----
+ * If we're in a comment now, skip to the start of the comment.
+ */
+ curwin->w_cursor.col = 0;
+! if ((trypos = ind_find_start_comment()) != NULL) /* XXX */
+ curwin->w_cursor = *trypos;
+
+ line = ml_get_curline();
+***************
+*** 5725,5734 ****
+ * ^
+ */
+ static int
+! skip_label(lnum, pp, ind_maxcomment)
+ linenr_T lnum;
+ char_u **pp;
+- int ind_maxcomment;
+ {
+ char_u *l;
+ int amount;
+--- 5731,5739 ----
+ * ^
+ */
+ static int
+! skip_label(lnum, pp)
+ linenr_T lnum;
+ char_u **pp;
+ {
+ char_u *l;
+ int amount;
+***************
+*** 5738,5745 ****
+ curwin->w_cursor.lnum = lnum;
+ l = ml_get_curline();
+ /* XXX */
+! if (cin_iscase(l, FALSE) || cin_isscopedecl(l)
+! || cin_islabel(ind_maxcomment))
+ {
+ amount = get_indent_nolabel(lnum);
+ l = after_label(ml_get_curline());
+--- 5743,5749 ----
+ curwin->w_cursor.lnum = lnum;
+ l = ml_get_curline();
+ /* XXX */
+! if (cin_iscase(l, FALSE) || cin_isscopedecl(l) || cin_islabel())
+ {
+ amount = get_indent_nolabel(lnum);
+ l = after_label(ml_get_curline());
+***************
+*** 5983,5994 ****
+ * "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;
+--- 5987,5996 ----
+ * "min_lnum" is the line before which we will not be looking.
+ */
+ static int
+! cin_isfuncdecl(sp, first_lnum, min_lnum)
+ char_u **sp;
+ linenr_T first_lnum;
+ linenr_T min_lnum;
+ {
+ char_u *s;
+ linenr_T lnum = first_lnum;
+***************
+*** 6002,6008 ****
+ s = *sp;
+
+ if (find_last_paren(s, '(', ')')
+! && (trypos = find_match_paren(ind_maxparen, ind_maxcomment)) != NULL)
+ {
+ lnum = trypos->lnum;
+ if (lnum < min_lnum)
+--- 6004,6010 ----
+ s = *sp;
+
+ if (find_last_paren(s, '(', ')')
+! && (trypos = find_match_paren(curbuf->b_ind_maxparen)) != NULL)
+ {
+ lnum = trypos->lnum;
+ if (lnum < min_lnum)
+***************
+*** 6110,6119 ****
+ * ')' and ';'. The condition may be spread over several lines.
+ */
+ static int
+! cin_iswhileofdo(p, lnum, ind_maxparen) /* XXX */
+ char_u *p;
+ linenr_T lnum;
+- int ind_maxparen;
+ {
+ pos_T cursor_save;
+ pos_T *trypos;
+--- 6112,6120 ----
+ * ')' and ';'. The condition may be spread over several lines.
+ */
+ static int
+! cin_iswhileofdo(p, lnum) /* XXX */
+ char_u *p;
+ linenr_T lnum;
+ {
+ pos_T cursor_save;
+ pos_T *trypos;
+***************
+*** 6133,6139 ****
+ ++p;
+ ++curwin->w_cursor.col;
+ }
+! if ((trypos = findmatchlimit(NULL, 0, 0, ind_maxparen)) != NULL
+ && *cin_skipcomment(ml_get_pos(trypos) + 1) == ';')
+ retval = TRUE;
+ curwin->w_cursor = cursor_save;
+--- 6134,6141 ----
+ ++p;
+ ++curwin->w_cursor.col;
+ }
+! if ((trypos = findmatchlimit(NULL, 0, 0,
+! curbuf->b_ind_maxparen)) != NULL
+ && *cin_skipcomment(ml_get_pos(trypos) + 1) == ';')
+ retval = TRUE;
+ curwin->w_cursor = cursor_save;
+***************
+*** 6196,6205 ****
+ * Adjust the cursor to the line with "while".
+ */
+ static int
+! cin_iswhileofdo_end(terminated, ind_maxparen, ind_maxcomment)
+ int terminated;
+- int ind_maxparen;
+- int ind_maxcomment;
+ {
+ char_u *line;
+ char_u *p;
+--- 6198,6205 ----
+ * Adjust the cursor to the line with "while".
+ */
+ static int
+! cin_iswhileofdo_end(terminated)
+ int terminated;
+ {
+ char_u *line;
+ char_u *p;
+***************
+*** 6223,6229 ****
+ * before the matching '('. XXX */
+ i = (int)(p - line);
+ curwin->w_cursor.col = i;
+! trypos = find_match_paren(ind_maxparen, ind_maxcomment);
+ if (trypos != NULL)
+ {
+ s = cin_skipcomment(ml_get(trypos->lnum));
+--- 6223,6229 ----
+ * before the matching '('. XXX */
+ i = (int)(p - line);
+ curwin->w_cursor.col = i;
+! trypos = find_match_paren(curbuf->b_ind_maxparen);
+ if (trypos != NULL)
+ {
+ s = cin_skipcomment(ml_get(trypos->lnum));
+***************
+*** 6415,6425 ****
+ }
+
+ static int
+! get_baseclass_amount(col, ind_maxparen, ind_maxcomment, ind_cpp_baseclass)
+ int col;
+- int ind_maxparen;
+- int ind_maxcomment;
+- int ind_cpp_baseclass;
+ {
+ int amount;
+ colnr_T vcol;
+--- 6415,6422 ----
+ }
+
+ static int
+! get_baseclass_amount(col)
+ int col;
+ {
+ int amount;
+ colnr_T vcol;
+***************
+*** 6429,6439 ****
+ {
+ amount = get_indent();
+ if (find_last_paren(ml_get_curline(), '(', ')')
+! && (trypos = find_match_paren(ind_maxparen,
+! ind_maxcomment)) != NULL)
+ amount = get_indent_lnum(trypos->lnum); /* XXX */
+ if (!cin_ends_in(ml_get_curline(), (char_u *)",", NULL))
+! amount += ind_cpp_baseclass;
+ }
+ else
+ {
+--- 6426,6435 ----
+ {
+ amount = get_indent();
+ if (find_last_paren(ml_get_curline(), '(', ')')
+! && (trypos = find_match_paren(curbuf->b_ind_maxparen)) != NULL)
+ amount = get_indent_lnum(trypos->lnum); /* XXX */
+ if (!cin_ends_in(ml_get_curline(), (char_u *)",", NULL))
+! amount += curbuf->b_ind_cpp_baseclass;
+ }
+ else
+ {
+***************
+*** 6441,6448 ****
+ getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL);
+ amount = (int)vcol;
+ }
+! if (amount < ind_cpp_baseclass)
+! amount = ind_cpp_baseclass;
+ return amount;
+ }
+
+--- 6437,6444 ----
+ getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL);
+ amount = (int)vcol;
+ }
+! if (amount < curbuf->b_ind_cpp_baseclass)
+! amount = curbuf->b_ind_cpp_baseclass;
+ return amount;
+ }
+
+***************
+*** 6526,6533 ****
+ /* } */
+
+ static pos_T *
+! find_start_brace(ind_maxcomment) /* XXX */
+! int ind_maxcomment;
+ {
+ pos_T cursor_save;
+ pos_T *trypos;
+--- 6522,6528 ----
+ /* } */
+
+ static pos_T *
+! find_start_brace() /* XXX */
+ {
+ pos_T cursor_save;
+ pos_T *trypos;
+***************
+*** 6543,6549 ****
+ pos = NULL;
+ /* ignore the { if it's in a // or / * * / comment */
+ if ((colnr_T)cin_skip2pos(trypos) == trypos->col
+! && (pos = find_start_comment(ind_maxcomment)) == NULL) /* XXX */
+ break;
+ if (pos != NULL)
+ curwin->w_cursor.lnum = pos->lnum;
+--- 6538,6544 ----
+ pos = NULL;
+ /* ignore the { if it's in a // or / * * / comment */
+ if ((colnr_T)cin_skip2pos(trypos) == trypos->col
+! && (pos = ind_find_start_comment()) == NULL) /* XXX */
+ break;
+ if (pos != NULL)
+ curwin->w_cursor.lnum = pos->lnum;
+***************
+*** 6557,6565 ****
+ * Return NULL if no match found.
+ */
+ static pos_T *
+! find_match_paren(ind_maxparen, ind_maxcomment) /* XXX */
+ int ind_maxparen;
+- int ind_maxcomment;
+ {
+ pos_T cursor_save;
+ pos_T *trypos;
+--- 6552,6559 ----
+ * Return NULL if no match found.
+ */
+ static pos_T *
+! find_match_paren(ind_maxparen) /* XXX */
+ int ind_maxparen;
+ {
+ pos_T cursor_save;
+ pos_T *trypos;
+***************
+*** 6576,6582 ****
+ pos_copy = *trypos; /* copy trypos, findmatch will change it */
+ trypos = &pos_copy;
+ curwin->w_cursor = *trypos;
+! if (find_start_comment(ind_maxcomment) != NULL) /* XXX */
+ trypos = NULL;
+ }
+ }
+--- 6570,6576 ----
+ pos_copy = *trypos; /* copy trypos, findmatch will change it */
+ trypos = &pos_copy;
+ curwin->w_cursor = *trypos;
+! if (ind_find_start_comment() != NULL) /* XXX */
+ trypos = NULL;
+ }
+ }
+***************
+*** 6591,6605 ****
+ * looking a few lines further.
+ */
+ static int
+! corr_ind_maxparen(ind_maxparen, startpos)
+! int ind_maxparen;
+ pos_T *startpos;
+ {
+ long n = (long)startpos->lnum - (long)curwin->w_cursor.lnum;
+
+! if (n > 0 && n < ind_maxparen / 2)
+! return ind_maxparen - (int)n;
+! return ind_maxparen;
+ }
+
+ /*
+--- 6585,6598 ----
+ * looking a few lines further.
+ */
+ static int
+! corr_ind_maxparen(startpos)
+ pos_T *startpos;
+ {
+ long n = (long)startpos->lnum - (long)curwin->w_cursor.lnum;
+
+! if (n > 0 && n < curbuf->b_ind_maxparen / 2)
+! return curbuf->b_ind_maxparen - (int)n;
+! return curbuf->b_ind_maxparen;
+ }
+
+ /*
+***************
+*** 6937,6943 ****
+
+ curwin->w_cursor.col = 0;
+
+! original_line_islabel = cin_islabel(curbuf->b_ind_maxcomment); /* XXX */
+
+ /*
+ * #defines and so on always go at the left when included in 'cinkeys'.
+--- 6930,6936 ----
+
+ curwin->w_cursor.col = 0;
+
+! original_line_islabel = cin_islabel(); /* XXX */
+
+ /*
+ * #defines and so on always go at the left when included in 'cinkeys'.
+***************
+*** 6973,6979 ****
+ * comment, try using the 'comments' option.
+ */
+ else if (!cin_iscomment(theline)
+! && (trypos = find_start_comment(curbuf->b_ind_maxcomment)) != NULL)
+ /* XXX */
+ {
+ int lead_start_len = 2;
+--- 6966,6972 ----
+ * comment, try using the 'comments' option.
+ */
+ else if (!cin_iscomment(theline)
+! && (trypos = ind_find_start_comment()) != NULL)
+ /* XXX */
+ {
+ int lead_start_len = 2;
+***************
+*** 7126,7136 ****
+ /*
+ * Are we inside parentheses or braces?
+ */ /* XXX */
+! else if (((trypos = find_match_paren(curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)) != NULL
+ && curbuf->b_ind_java == 0)
+! || (tryposBrace =
+! find_start_brace(curbuf->b_ind_maxcomment)) != NULL
+ || trypos != NULL)
+ {
+ if (trypos != NULL && tryposBrace != NULL)
+--- 7119,7127 ----
+ /*
+ * Are we inside parentheses or braces?
+ */ /* XXX */
+! else if (((trypos = find_match_paren(curbuf->b_ind_maxparen)) != NULL
+ && curbuf->b_ind_java == 0)
+! || (tryposBrace = find_start_brace()) != NULL
+ || trypos != NULL)
+ {
+ if (trypos != NULL && tryposBrace != NULL)
+***************
+*** 7170,7177 ****
+ curwin->w_cursor.lnum = lnum;
+
+ /* Skip a comment. XXX */
+! if ((trypos = find_start_comment(curbuf->b_ind_maxcomment))
+! != NULL)
+ {
+ lnum = trypos->lnum + 1;
+ continue;
+--- 7161,7167 ----
+ curwin->w_cursor.lnum = lnum;
+
+ /* Skip a comment. XXX */
+! if ((trypos = ind_find_start_comment()) != NULL)
+ {
+ lnum = trypos->lnum + 1;
+ continue;
+***************
+*** 7179,7186 ****
+
+ /* XXX */
+ if ((trypos = find_match_paren(
+! corr_ind_maxparen(curbuf->b_ind_maxparen, &cur_curpos),
+! curbuf->b_ind_maxcomment)) != NULL
+ && trypos->lnum == our_paren_pos.lnum
+ && trypos->col == our_paren_pos.col)
+ {
+--- 7169,7175 ----
+
+ /* XXX */
+ if ((trypos = find_match_paren(
+! corr_ind_maxparen(&cur_curpos))) != NULL
+ && trypos->lnum == our_paren_pos.lnum
+ && trypos->col == our_paren_pos.col)
+ {
+***************
+*** 7223,7230 ****
+ curwin->w_cursor.lnum = outermost.lnum;
+ curwin->w_cursor.col = outermost.col;
+
+! trypos = find_match_paren(curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment);
+ } while (trypos && trypos->lnum == outermost.lnum);
+
+ curwin->w_cursor = cursor_save;
+--- 7212,7218 ----
+ curwin->w_cursor.lnum = outermost.lnum;
+ curwin->w_cursor.col = outermost.col;
+
+! trypos = find_match_paren(curbuf->b_ind_maxparen);
+ } while (trypos && trypos->lnum == outermost.lnum);
+
+ curwin->w_cursor = cursor_save;
+***************
+*** 7235,7242 ****
+ cin_is_if_for_while_before_offset(line, &outermost.col);
+ }
+
+! amount = skip_label(our_paren_pos.lnum, &look,
+! curbuf->b_ind_maxcomment);
+ look = skipwhite(look);
+ if (*look == '(')
+ {
+--- 7223,7229 ----
+ cin_is_if_for_while_before_offset(line, &outermost.col);
+ }
+
+! amount = skip_label(our_paren_pos.lnum, &look);
+ look = skipwhite(look);
+ if (*look == '(')
+ {
+***************
+*** 7366,7373 ****
+ {
+ curwin->w_cursor.lnum = our_paren_pos.lnum;
+ curwin->w_cursor.col = col;
+! if (find_match_paren(curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment) != NULL)
+ amount += curbuf->b_ind_unclosed2;
+ else
+ {
+--- 7353,7359 ----
+ {
+ curwin->w_cursor.lnum = our_paren_pos.lnum;
+ curwin->w_cursor.col = col;
+! if (find_match_paren(curbuf->b_ind_maxparen) != NULL)
+ amount += curbuf->b_ind_unclosed2;
+ else
+ {
+***************
+*** 7435,7442 ****
+ */
+ lnum = ourscope;
+ if (find_last_paren(start, '(', ')')
+! && (trypos = find_match_paren(curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)) != NULL)
+ lnum = trypos->lnum;
+
+ /*
+--- 7421,7428 ----
+ */
+ lnum = ourscope;
+ if (find_last_paren(start, '(', ')')
+! && (trypos = find_match_paren(curbuf->b_ind_maxparen))
+! != NULL)
+ lnum = trypos->lnum;
+
+ /*
+***************
+*** 7449,7455 ****
+ && cin_iscase(skipwhite(ml_get_curline()), FALSE)))
+ amount = get_indent();
+ else
+! amount = skip_label(lnum, &l, curbuf->b_ind_maxcomment);
+
+ start_brace = BRACE_AT_END;
+ }
+--- 7435,7441 ----
+ && cin_iscase(skipwhite(ml_get_curline()), FALSE)))
+ amount = get_indent();
+ else
+! amount = skip_label(lnum, &l);
+
+ start_brace = BRACE_AT_END;
+ }
+***************
+*** 7478,7491 ****
+ lookfor = LOOKFOR_INITIAL;
+ if (cin_iselse(theline))
+ lookfor = LOOKFOR_IF;
+! else if (cin_iswhileofdo(theline, cur_curpos.lnum,
+! curbuf->b_ind_maxparen)) /* XXX */
+ lookfor = LOOKFOR_DO;
+ if (lookfor != LOOKFOR_INITIAL)
+ {
+ curwin->w_cursor.lnum = cur_curpos.lnum;
+! if (find_match(lookfor, ourscope, curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment) == OK)
+ {
+ amount = get_indent(); /* XXX */
+ goto theend;
+--- 7464,7475 ----
+ lookfor = LOOKFOR_INITIAL;
+ if (cin_iselse(theline))
+ lookfor = LOOKFOR_IF;
+! else if (cin_iswhileofdo(theline, cur_curpos.lnum)) /* XXX */
+ lookfor = LOOKFOR_DO;
+ if (lookfor != LOOKFOR_INITIAL)
+ {
+ curwin->w_cursor.lnum = cur_curpos.lnum;
+! if (find_match(lookfor, ourscope) == OK)
+ {
+ amount = get_indent(); /* XXX */
+ goto theend;
+***************
+*** 7611,7617 ****
+ * If we're in a comment now, skip to the start of the
+ * comment.
+ */
+! trypos = find_start_comment(curbuf->b_ind_maxcomment);
+ if (trypos != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+--- 7595,7601 ----
+ * If we're in a comment now, skip to the start of the
+ * comment.
+ */
+! trypos = ind_find_start_comment();
+ if (trypos != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+***************
+*** 7636,7644 ****
+ * (it's a variable declaration).
+ */
+ if (start_brace != BRACE_IN_COL0
+! || !cin_isfuncdecl(&l, curwin->w_cursor.lnum,
+! 0, curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment))
+ {
+ /* if the line is terminated with another ','
+ * it is a continued variable initialization.
+--- 7620,7626 ----
+ * (it's a variable declaration).
+ */
+ if (start_brace != BRACE_IN_COL0
+! || !cin_isfuncdecl(&l, curwin->w_cursor.lnum, 0))
+ {
+ /* if the line is terminated with another ','
+ * it is a continued variable initialization.
+***************
+*** 7670,7681 ****
+ trypos = NULL;
+ if (find_last_paren(l, '(', ')'))
+ trypos = find_match_paren(
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment);
+
+ if (trypos == NULL && find_last_paren(l, '{', '}'))
+! trypos = find_start_brace(
+! curbuf->b_ind_maxcomment);
+
+ if (trypos != NULL)
+ {
+--- 7652,7661 ----
+ trypos = NULL;
+ if (find_last_paren(l, '(', ')'))
+ trypos = find_match_paren(
+! curbuf->b_ind_maxparen);
+
+ if (trypos == NULL && find_last_paren(l, '{', '}'))
+! trypos = find_start_brace();
+
+ if (trypos != NULL)
+ {
+***************
+*** 7733,7740 ****
+
+ /* If we're in a comment now, skip to the start of
+ * the comment. */
+! trypos = find_start_comment(
+! curbuf->b_ind_maxcomment);
+ if (trypos != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+--- 7713,7719 ----
+
+ /* If we're in a comment now, skip to the start of
+ * the comment. */
+! trypos = ind_find_start_comment();
+ if (trypos != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+***************
+*** 7764,7771 ****
+ /*
+ * If we're in a comment now, skip to the start of the comment.
+ */ /* XXX */
+! if ((trypos = find_start_comment(curbuf->b_ind_maxcomment))
+! != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+--- 7743,7749 ----
+ /*
+ * If we're in a comment now, skip to the start of the comment.
+ */ /* XXX */
+! if ((trypos = ind_find_start_comment()) != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+***************
+*** 7819,7826 ****
+ * Check that this case label is not for another
+ * switch()
+ */ /* XXX */
+! if ((trypos = find_start_brace(
+! curbuf->b_ind_maxcomment)) == NULL
+ || trypos->lnum == ourscope)
+ {
+ amount = get_indent(); /* XXX */
+--- 7797,7803 ----
+ * Check that this case label is not for another
+ * switch()
+ */ /* XXX */
+! if ((trypos = find_start_brace()) == NULL
+ || trypos->lnum == ourscope)
+ {
+ amount = get_indent(); /* XXX */
+***************
+*** 7894,7901 ****
+ */
+ if (lookfor == LOOKFOR_CASE || lookfor == LOOKFOR_SCOPEDECL)
+ {
+! if (find_last_paren(l, '{', '}') && (trypos =
+! find_start_brace(curbuf->b_ind_maxcomment)) != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+--- 7871,7878 ----
+ */
+ if (lookfor == LOOKFOR_CASE || lookfor == LOOKFOR_SCOPEDECL)
+ {
+! if (find_last_paren(l, '{', '}')
+! && (trypos = find_start_brace()) != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+***************
+*** 7906,7912 ****
+ /*
+ * Ignore jump labels with nothing after them.
+ */
+! if (!curbuf->b_ind_js && cin_islabel(curbuf->b_ind_maxcomment))
+ {
+ l = after_label(ml_get_curline());
+ if (l == NULL || cin_nocode(l))
+--- 7883,7889 ----
+ /*
+ * Ignore jump labels with nothing after them.
+ */
+! if (!curbuf->b_ind_js && cin_islabel())
+ {
+ l = after_label(ml_get_curline());
+ if (l == NULL || cin_nocode(l))
+***************
+*** 7952,7961 ****
+ }
+ else
+ /* XXX */
+! amount = get_baseclass_amount(col,
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment,
+! curbuf->b_ind_cpp_baseclass);
+ break;
+ }
+ else if (lookfor == LOOKFOR_CPP_BASECLASS)
+--- 7929,7935 ----
+ }
+ else
+ /* XXX */
+! amount = get_baseclass_amount(col);
+ break;
+ }
+ else if (lookfor == LOOKFOR_CPP_BASECLASS)
+***************
+*** 7997,8005 ****
+ * matching it will take us back to the start of the line.
+ */
+ (void)find_last_paren(l, '(', ')');
+! trypos = find_match_paren(
+! corr_ind_maxparen(curbuf->b_ind_maxparen,
+! &cur_curpos), curbuf->b_ind_maxcomment);
+
+ /*
+ * If we are looking for ',', we also look for matching
+--- 7971,7977 ----
+ * matching it will take us back to the start of the line.
+ */
+ (void)find_last_paren(l, '(', ')');
+! trypos = find_match_paren(corr_ind_maxparen(&cur_curpos));
+
+ /*
+ * If we are looking for ',', we also look for matching
+***************
+*** 8007,8013 ****
+ */
+ if (trypos == NULL && terminated == ','
+ && find_last_paren(l, '{', '}'))
+! trypos = find_start_brace(curbuf->b_ind_maxcomment);
+
+ if (trypos != NULL)
+ {
+--- 7979,7985 ----
+ */
+ if (trypos == NULL && terminated == ','
+ && find_last_paren(l, '{', '}'))
+! trypos = find_start_brace();
+
+ if (trypos != NULL)
+ {
+***************
+*** 8051,8058 ****
+ * ignoring any jump label. XXX
+ */
+ if (!curbuf->b_ind_js)
+! cur_amount = skip_label(curwin->w_cursor.lnum,
+! &l, curbuf->b_ind_maxcomment);
+ else
+ cur_amount = get_indent();
+ /*
+--- 8023,8029 ----
+ * ignoring any jump label. XXX
+ */
+ if (!curbuf->b_ind_js)
+! cur_amount = skip_label(curwin->w_cursor.lnum, &l);
+ else
+ cur_amount = get_indent();
+ /*
+***************
+*** 8162,8172 ****
+ curwin->w_cursor.col =
+ (colnr_T)(l - ml_get_curline()) + 1;
+
+! if ((trypos = find_start_brace(
+! curbuf->b_ind_maxcomment)) == NULL
+! || find_match(LOOKFOR_IF, trypos->lnum,
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment) == FAIL)
+ break;
+ }
+ }
+--- 8133,8141 ----
+ curwin->w_cursor.col =
+ (colnr_T)(l - ml_get_curline()) + 1;
+
+! if ((trypos = find_start_brace()) == NULL
+! || find_match(LOOKFOR_IF, trypos->lnum)
+! == FAIL)
+ break;
+ }
+ }
+***************
+*** 8261,8268 ****
+ * If so: Ignore until the matching "do".
+ */
+ /* XXX */
+! else if (cin_iswhileofdo_end(terminated, curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment))
+ {
+ /*
+ * Found an unterminated line after a while ();, line up
+--- 8230,8236 ----
+ * If so: Ignore until the matching "do".
+ */
+ /* XXX */
+! else if (cin_iswhileofdo_end(terminated))
+ {
+ /*
+ * Found an unterminated line after a while ();, line up
+***************
+*** 8380,8387 ****
+ l = ml_get_curline();
+ if (find_last_paren(l, '(', ')')
+ && (trypos = find_match_paren(
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)) != NULL)
+ {
+ /*
+ * Check if we are on a case label now. This is
+--- 8348,8354 ----
+ l = ml_get_curline();
+ if (find_last_paren(l, '(', ')')
+ && (trypos = find_match_paren(
+! curbuf->b_ind_maxparen)) != NULL)
+ {
+ /*
+ * Check if we are on a case label now. This is
+***************
+*** 8415,8422 ****
+ * Get indent and pointer to text for current line,
+ * ignoring any jump label.
+ */
+! amount = skip_label(curwin->w_cursor.lnum,
+! &l, curbuf->b_ind_maxcomment);
+
+ if (theline[0] == '{')
+ amount += curbuf->b_ind_open_extra;
+--- 8382,8388 ----
+ * Get indent and pointer to text for current line,
+ * ignoring any jump label.
+ */
+! amount = skip_label(curwin->w_cursor.lnum, &l);
+
+ if (theline[0] == '{')
+ amount += curbuf->b_ind_open_extra;
+***************
+*** 8439,8449 ****
+ && cin_iselse(l)
+ && whilelevel == 0)
+ {
+! if ((trypos = find_start_brace(
+! curbuf->b_ind_maxcomment)) == NULL
+! || find_match(LOOKFOR_IF, trypos->lnum,
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment) == FAIL)
+ break;
+ continue;
+ }
+--- 8405,8413 ----
+ && cin_iselse(l)
+ && whilelevel == 0)
+ {
+! if ((trypos = find_start_brace()) == NULL
+! || find_match(LOOKFOR_IF, trypos->lnum)
+! == FAIL)
+ break;
+ continue;
+ }
+***************
+*** 8453,8461 ****
+ * that block.
+ */
+ l = ml_get_curline();
+! if (find_last_paren(l, '{', '}')
+! && (trypos = find_start_brace(
+! curbuf->b_ind_maxcomment)) != NULL) /* XXX */
+ {
+ curwin->w_cursor = *trypos;
+ /* if not "else {" check for terminated again */
+--- 8417,8424 ----
+ * that block.
+ */
+ l = ml_get_curline();
+! if (find_last_paren(l, '{', '}') /* XXX */
+! && (trypos = find_start_brace()) != NULL)
+ {
+ curwin->w_cursor = *trypos;
+ /* if not "else {" check for terminated again */
+***************
+*** 8516,8524 ****
+ && !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,
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)
+ && !cin_isterminated(theline, FALSE, TRUE))
+ {
+ amount = curbuf->b_ind_func_type;
+--- 8479,8485 ----
+ && !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)
+ && !cin_isterminated(theline, FALSE, TRUE))
+ {
+ amount = curbuf->b_ind_func_type;
+***************
+*** 8540,8547 ****
+ /*
+ * If we're in a comment now, skip to the start of the comment.
+ */ /* XXX */
+! if ((trypos = find_start_comment(
+! curbuf->b_ind_maxcomment)) != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+--- 8501,8507 ----
+ /*
+ * If we're in a comment now, skip to the start of the comment.
+ */ /* XXX */
+! if ((trypos = ind_find_start_comment()) != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+***************
+*** 8561,8569 ****
+ if (n)
+ {
+ /* XXX */
+! amount = get_baseclass_amount(col, curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment,
+! curbuf->b_ind_cpp_baseclass);
+ break;
+ }
+
+--- 8521,8527 ----
+ if (n)
+ {
+ /* XXX */
+! amount = get_baseclass_amount(col);
+ break;
+ }
+
+***************
+*** 8595,8602 ****
+ /* take us back to opening paren */
+ if (find_last_paren(l, '(', ')')
+ && (trypos = find_match_paren(
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)) != NULL)
+ curwin->w_cursor = *trypos;
+
+ /* For a line ending in ',' that is a continuation line go
+--- 8553,8559 ----
+ /* take us back to opening paren */
+ if (find_last_paren(l, '(', ')')
+ && (trypos = find_match_paren(
+! curbuf->b_ind_maxparen)) != NULL)
+ curwin->w_cursor = *trypos;
+
+ /* For a line ending in ',' that is a continuation line go
+***************
+*** 8627,8635 ****
+ * 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,
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)) /* XXX */
+ break;
+ l = ml_get_curline();
+
+--- 8584,8590 ----
+ * 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)) /* XXX */
+ break;
+ l = ml_get_curline();
+
+***************
+*** 8677,8685 ****
+ * line (and the ones that follow) needs to be indented as
+ * parameters.
+ */
+! if (cin_isfuncdecl(&l, curwin->w_cursor.lnum, 0,
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment))
+ {
+ amount = curbuf->b_ind_param;
+ break;
+--- 8632,8638 ----
+ * line (and the ones that follow) needs to be indented as
+ * parameters.
+ */
+! if (cin_isfuncdecl(&l, curwin->w_cursor.lnum, 0))
+ {
+ amount = curbuf->b_ind_param;
+ break;
+***************
+*** 8710,8717 ****
+ */
+ find_last_paren(l, '(', ')');
+
+! if ((trypos = find_match_paren(curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)) != NULL)
+ curwin->w_cursor = *trypos;
+ amount = get_indent(); /* XXX */
+ break;
+--- 8663,8669 ----
+ */
+ find_last_paren(l, '(', ')');
+
+! if ((trypos = find_match_paren(curbuf->b_ind_maxparen)) != NULL)
+ curwin->w_cursor = *trypos;
+ amount = get_indent(); /* XXX */
+ break;
+***************
+*** 8754,8764 ****
+ }
+
+ static int
+! find_match(lookfor, ourscope, ind_maxparen, ind_maxcomment)
+ int lookfor;
+ linenr_T ourscope;
+- int ind_maxparen;
+- int ind_maxcomment;
+ {
+ char_u *look;
+ pos_T *theirscope;
+--- 8706,8714 ----
+ }
+
+ static int
+! find_match(lookfor, ourscope)
+ int lookfor;
+ linenr_T ourscope;
+ {
+ char_u *look;
+ pos_T *theirscope;
+***************
+*** 8788,8800 ****
+ if (cin_iselse(look)
+ || cin_isif(look)
+ || cin_isdo(look) /* XXX */
+! || cin_iswhileofdo(look, curwin->w_cursor.lnum, ind_maxparen))
+ {
+ /*
+ * if we've gone outside the braces entirely,
+ * we must be out of scope...
+ */
+! theirscope = find_start_brace(ind_maxcomment); /* XXX */
+ if (theirscope == NULL)
+ break;
+
+--- 8738,8750 ----
+ if (cin_iselse(look)
+ || cin_isif(look)
+ || cin_isdo(look) /* XXX */
+! || cin_iswhileofdo(look, curwin->w_cursor.lnum))
+ {
+ /*
+ * if we've gone outside the braces entirely,
+ * we must be out of scope...
+ */
+! theirscope = find_start_brace(); /* XXX */
+ if (theirscope == NULL)
+ break;
+
+***************
+*** 8832,8838 ****
+ * if it was a "while" then we need to go back to
+ * another "do", so increment whilelevel. XXX
+ */
+! if (cin_iswhileofdo(look, curwin->w_cursor.lnum, ind_maxparen))
+ {
+ ++whilelevel;
+ continue;
+--- 8782,8788 ----
+ * if it was a "while" then we need to go back to
+ * another "do", so increment whilelevel. XXX
+ */
+! if (cin_iswhileofdo(look, curwin->w_cursor.lnum))
+ {
+ ++whilelevel;
+ continue;
+*** ../vim-7.4.070/src/proto/misc1.pro 2013-11-05 07:12:59.000000000 +0100
+--- src/proto/misc1.pro 2013-11-06 03:19:45.000000000 +0100
+***************
+*** 81,87 ****
+ char_u *FullName_save __ARGS((char_u *fname, int force));
+ pos_T *find_start_comment __ARGS((int ind_maxcomment));
+ void do_c_expr_indent __ARGS((void));
+! int cin_islabel __ARGS((int ind_maxcomment));
+ int cin_iscase __ARGS((char_u *s, int strict));
+ int cin_isscopedecl __ARGS((char_u *s));
+ void parse_cino __ARGS((buf_T *buf));
+--- 81,87 ----
+ char_u *FullName_save __ARGS((char_u *fname, int force));
+ pos_T *find_start_comment __ARGS((int ind_maxcomment));
+ void do_c_expr_indent __ARGS((void));
+! int cin_islabel __ARGS((void));
+ int cin_iscase __ARGS((char_u *s, int strict));
+ int cin_isscopedecl __ARGS((char_u *s));
+ void parse_cino __ARGS((buf_T *buf));
+*** ../vim-7.4.070/src/version.c 2013-11-05 17:40:47.000000000 +0100
+--- src/version.c 2013-11-06 03:43:44.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 71,
+ /**/
+
+--
+A law to reduce crime states: "It is mandatory for a motorist with criminal
+intentions to stop at the city limits and telephone the chief of police as he
+is entering the town.
+ [real standing law in Washington, 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/patches/source/vim/patches/7.4.072 b/patches/source/vim/patches/7.4.072
new file mode 100644
index 00000000..e96888e7
--- /dev/null
+++ b/patches/source/vim/patches/7.4.072
@@ -0,0 +1,61 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.072
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.072
+Problem: Crash when using Insert mode completion.
+Solution: Avoid going past the end of pum_array. (idea by Fransisco Lopes)
+Files: src/popupmnu.c
+
+
+*** ../vim-7.4.071/src/popupmnu.c 2011-08-17 18:04:28.000000000 +0200
+--- src/popupmnu.c 2013-11-02 04:01:06.000000000 +0100
+***************
+*** 282,287 ****
+--- 282,291 ----
+ int round;
+ int n;
+
++ /* Never display more than we have */
++ if (pum_first > pum_size - pum_height)
++ pum_first = pum_size - pum_height;
++
+ if (pum_scrollbar)
+ {
+ thumb_heigth = pum_height * pum_height / pum_size;
+***************
+*** 672,681 ****
+ #endif
+ }
+
+- /* Never display more than we have */
+- if (pum_first > pum_size - pum_height)
+- pum_first = pum_size - pum_height;
+-
+ if (!resized)
+ pum_redraw();
+
+--- 676,681 ----
+*** ../vim-7.4.071/src/version.c 2013-11-06 04:01:31.000000000 +0100
+--- src/version.c 2013-11-06 04:03:18.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 72,
+ /**/
+
+--
+No children may attend school with their breath smelling of "wild onions."
+ [real standing law in West Virginia, 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/patches/source/vim/patches/7.4.073 b/patches/source/vim/patches/7.4.073
new file mode 100644
index 00000000..7d9cedcf
--- /dev/null
+++ b/patches/source/vim/patches/7.4.073
@@ -0,0 +1,404 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.073
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.073
+Problem: Setting undolevels for one buffer changes undo in another.
+Solution: Make 'undolevels' a global-local option. (Christian Brabandt)
+Files: runtime/doc/options.txt, src/buffer.c, src/option.c, src/option.h
+ src/structs.h, src/undo.c
+
+
+*** ../vim-7.4.072/runtime/doc/options.txt 2013-08-10 13:24:57.000000000 +0200
+--- runtime/doc/options.txt 2013-11-06 04:18:43.000000000 +0100
+***************
+*** 7594,7600 ****
+ *'undolevels'* *'ul'*
+ 'undolevels' 'ul' number (default 100, 1000 for Unix, VMS,
+ Win32 and OS/2)
+! global
+ {not in Vi}
+ Maximum number of changes that can be undone. Since undo information
+ is kept in memory, higher numbers will cause more memory to be used
+--- 7594,7600 ----
+ *'undolevels'* *'ul'*
+ 'undolevels' 'ul' number (default 100, 1000 for Unix, VMS,
+ Win32 and OS/2)
+! global or local to buffer |global-local|
+ {not in Vi}
+ Maximum number of changes that can be undone. Since undo information
+ is kept in memory, higher numbers will cause more memory to be used
+***************
+*** 7605,7612 ****
+ < But you can also get Vi compatibility by including the 'u' flag in
+ 'cpoptions', and still be able to use CTRL-R to repeat undo.
+ Also see |undo-two-ways|.
+! Set to a negative number for no undo at all: >
+! set ul=-1
+ < This helps when you run out of memory for a single change.
+ Also see |clear-undo|.
+
+--- 7605,7613 ----
+ < But you can also get Vi compatibility by including the 'u' flag in
+ 'cpoptions', and still be able to use CTRL-R to repeat undo.
+ Also see |undo-two-ways|.
+! Set to -1 for no undo at all. You might want to do this only for the
+! current buffer: >
+! setlocal ul=-1
+ < This helps when you run out of memory for a single change.
+ Also see |clear-undo|.
+
+*** ../vim-7.4.072/src/buffer.c 2013-11-05 17:40:47.000000000 +0100
+--- src/buffer.c 2013-11-06 04:25:27.000000000 +0100
+***************
+*** 1949,1954 ****
+--- 1949,1955 ----
+ clear_string_option(&buf->b_p_qe);
+ #endif
+ buf->b_p_ar = -1;
++ buf->b_p_ul = NO_LOCAL_UNDOLEVEL;
+ }
+
+ /*
+*** ../vim-7.4.072/src/option.c 2013-11-05 07:12:59.000000000 +0100
+--- src/option.c 2013-11-06 04:34:23.000000000 +0100
+***************
+*** 234,239 ****
+--- 234,240 ----
+ #ifdef FEAT_STL_OPT
+ # define PV_STL OPT_BOTH(OPT_WIN(WV_STL))
+ #endif
++ #define PV_UL OPT_BOTH(OPT_BUF(BV_UL))
+ #ifdef FEAT_WINDOWS
+ # define PV_WFH OPT_WIN(WV_WFH)
+ #endif
+***************
+*** 2683,2689 ****
+ #endif
+ {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"undolevels", "ul", P_NUM|P_VI_DEF,
+! (char_u *)&p_ul, PV_NONE,
+ {
+ #if defined(UNIX) || defined(WIN3264) || defined(OS2) || defined(VMS)
+ (char_u *)1000L,
+--- 2684,2690 ----
+ #endif
+ {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"undolevels", "ul", P_NUM|P_VI_DEF,
+! (char_u *)&p_ul, PV_UL,
+ {
+ #if defined(UNIX) || defined(WIN3264) || defined(OS2) || defined(VMS)
+ (char_u *)1000L,
+***************
+*** 3313,3318 ****
+--- 3314,3320 ----
+
+ curbuf->b_p_initialized = TRUE;
+ curbuf->b_p_ar = -1; /* no local 'autoread' value */
++ curbuf->b_p_ul = NO_LOCAL_UNDOLEVEL;
+ check_buf_options(curbuf);
+ check_win_options(curwin);
+ check_options();
+***************
+*** 4512,4519 ****
+ ((flags & P_VI_DEF) || cp_val)
+ ? VI_DEFAULT : VIM_DEFAULT];
+ else if (nextchar == '<')
+! value = *(long *)get_varp_scope(&(options[opt_idx]),
+! OPT_GLOBAL);
+ else if (((long *)varp == &p_wc
+ || (long *)varp == &p_wcm)
+ && (*arg == '<'
+--- 4514,4529 ----
+ ((flags & P_VI_DEF) || cp_val)
+ ? VI_DEFAULT : VIM_DEFAULT];
+ else if (nextchar == '<')
+! {
+! /* For 'undolevels' NO_LOCAL_UNDOLEVEL means to
+! * use the global value. */
+! if ((long *)varp == &curbuf->b_p_ul
+! && opt_flags == OPT_LOCAL)
+! value = NO_LOCAL_UNDOLEVEL;
+! else
+! value = *(long *)get_varp_scope(
+! &(options[opt_idx]), OPT_GLOBAL);
+! }
+ else if (((long *)varp == &p_wc
+ || (long *)varp == &p_wcm)
+ && (*arg == '<'
+***************
+*** 8487,8492 ****
+--- 8497,8509 ----
+ u_sync(TRUE);
+ p_ul = value;
+ }
++ else if (pp == &curbuf->b_p_ul)
++ {
++ /* use the old value, otherwise u_sync() may not work properly */
++ curbuf->b_p_ul = old_value;
++ u_sync(TRUE);
++ curbuf->b_p_ul = value;
++ }
+
+ #ifdef FEAT_LINEBREAK
+ /* 'numberwidth' must be positive */
+***************
+*** 9720,9726 ****
+ /*
+ * Unset local option value, similar to ":set opt<".
+ */
+-
+ void
+ unset_global_local_option(name, from)
+ char_u *name;
+--- 9737,9742 ----
+***************
+*** 9793,9798 ****
+--- 9809,9817 ----
+ clear_string_option(&((win_T *)from)->w_p_stl);
+ break;
+ #endif
++ case PV_UL:
++ buf->b_p_ul = NO_LOCAL_UNDOLEVEL;
++ break;
+ }
+ }
+
+***************
+*** 9841,9846 ****
+--- 9860,9866 ----
+ #ifdef FEAT_STL_OPT
+ case PV_STL: return (char_u *)&(curwin->w_p_stl);
+ #endif
++ case PV_UL: return (char_u *)&(curbuf->b_p_ul);
+ }
+ return NULL; /* "cannot happen" */
+ }
+***************
+*** 9905,9910 ****
+--- 9925,9932 ----
+ case PV_STL: return *curwin->w_p_stl != NUL
+ ? (char_u *)&(curwin->w_p_stl) : p->var;
+ #endif
++ case PV_UL: return curbuf->b_p_ul != NO_LOCAL_UNDOLEVEL
++ ? (char_u *)&(curbuf->b_p_ul) : p->var;
+
+ #ifdef FEAT_ARABIC
+ case PV_ARAB: return (char_u *)&(curwin->w_p_arab);
+***************
+*** 10445,10450 ****
+--- 10467,10473 ----
+ /* options that are normally global but also have a local value
+ * are not copied, start using the global value */
+ buf->b_p_ar = -1;
++ buf->b_p_ul = NO_LOCAL_UNDOLEVEL;
+ #ifdef FEAT_QUICKFIX
+ buf->b_p_gp = empty_option;
+ buf->b_p_mp = empty_option;
+*** ../vim-7.4.072/src/option.h 2013-06-26 18:41:39.000000000 +0200
+--- src/option.h 2013-11-06 04:17:40.000000000 +0100
+***************
+*** 1031,1036 ****
+--- 1031,1037 ----
+ , BV_TW
+ , BV_TX
+ , BV_UDF
++ , BV_UL
+ , BV_WM
+ , BV_COUNT /* must be the last one */
+ };
+***************
+*** 1109,1111 ****
+--- 1110,1115 ----
+ , WV_WRAP
+ , WV_COUNT /* must be the last one */
+ };
++
++ /* Value for b_p_ul indicating the global value must be used. */
++ #define NO_LOCAL_UNDOLEVEL -123456
+*** ../vim-7.4.072/src/structs.h 2013-11-05 07:12:59.000000000 +0100
+--- src/structs.h 2013-11-06 04:26:17.000000000 +0100
+***************
+*** 1627,1632 ****
+--- 1627,1633 ----
+ char_u *b_p_dict; /* 'dictionary' local value */
+ char_u *b_p_tsr; /* 'thesaurus' local value */
+ #endif
++ long b_p_ul; /* 'undolevels' local value */
+ #ifdef FEAT_PERSISTENT_UNDO
+ int b_p_udf; /* 'undofile' */
+ #endif
+*** ../vim-7.4.072/src/undo.c 2013-09-08 15:40:45.000000000 +0200
+--- src/undo.c 2013-11-06 04:33:12.000000000 +0100
+***************
+*** 83,88 ****
+--- 83,89 ----
+
+ #include "vim.h"
+
++ static long get_undolevel __ARGS((void));
+ static void u_unch_branch __ARGS((u_header_T *uhp));
+ static u_entry_T *u_get_headentry __ARGS((void));
+ static void u_getbot __ARGS((void));
+***************
+*** 336,341 ****
+--- 337,353 ----
+ }
+
+ /*
++ * Get the undolevle value for the current buffer.
++ */
++ static long
++ get_undolevel()
++ {
++ if (curbuf->b_p_ul == NO_LOCAL_UNDOLEVEL)
++ return p_ul;
++ return curbuf->b_p_ul;
++ }
++
++ /*
+ * Common code for various ways to save text before a change.
+ * "top" is the line above the first changed line.
+ * "bot" is the line below the last changed line.
+***************
+*** 419,425 ****
+ curbuf->b_new_change = TRUE;
+ #endif
+
+! if (p_ul >= 0)
+ {
+ /*
+ * Make a new header entry. Do this first so that we don't mess
+--- 431,437 ----
+ curbuf->b_new_change = TRUE;
+ #endif
+
+! if (get_undolevel() >= 0)
+ {
+ /*
+ * Make a new header entry. Do this first so that we don't mess
+***************
+*** 449,455 ****
+ /*
+ * free headers to keep the size right
+ */
+! while (curbuf->b_u_numhead > p_ul && curbuf->b_u_oldhead != NULL)
+ {
+ u_header_T *uhfree = curbuf->b_u_oldhead;
+
+--- 461,468 ----
+ /*
+ * free headers to keep the size right
+ */
+! while (curbuf->b_u_numhead > get_undolevel()
+! && curbuf->b_u_oldhead != NULL)
+ {
+ u_header_T *uhfree = curbuf->b_u_oldhead;
+
+***************
+*** 530,536 ****
+ }
+ else
+ {
+! if (p_ul < 0) /* no undo at all */
+ return OK;
+
+ /*
+--- 543,549 ----
+ }
+ else
+ {
+! if (get_undolevel() < 0) /* no undo at all */
+ return OK;
+
+ /*
+***************
+*** 1972,1978 ****
+ {
+ if (curbuf->b_u_curhead == NULL) /* first undo */
+ curbuf->b_u_curhead = curbuf->b_u_newhead;
+! else if (p_ul > 0) /* multi level undo */
+ /* get next undo */
+ curbuf->b_u_curhead = curbuf->b_u_curhead->uh_next.ptr;
+ /* nothing to undo */
+--- 1985,1991 ----
+ {
+ if (curbuf->b_u_curhead == NULL) /* first undo */
+ curbuf->b_u_curhead = curbuf->b_u_newhead;
+! else if (get_undolevel() > 0) /* multi level undo */
+ /* get next undo */
+ curbuf->b_u_curhead = curbuf->b_u_curhead->uh_next.ptr;
+ /* nothing to undo */
+***************
+*** 1993,1999 ****
+ }
+ else
+ {
+! if (curbuf->b_u_curhead == NULL || p_ul <= 0)
+ {
+ beep_flush(); /* nothing to redo */
+ if (count == startcount - 1)
+--- 2006,2012 ----
+ }
+ else
+ {
+! if (curbuf->b_u_curhead == NULL || get_undolevel() <= 0)
+ {
+ beep_flush(); /* nothing to redo */
+ if (count == startcount - 1)
+***************
+*** 2751,2757 ****
+ if (im_is_preediting())
+ return; /* XIM is busy, don't break an undo sequence */
+ #endif
+! if (p_ul < 0)
+ curbuf->b_u_synced = TRUE; /* no entries, nothing to do */
+ else
+ {
+--- 2764,2770 ----
+ if (im_is_preediting())
+ return; /* XIM is busy, don't break an undo sequence */
+ #endif
+! if (get_undolevel() < 0)
+ curbuf->b_u_synced = TRUE; /* no entries, nothing to do */
+ else
+ {
+***************
+*** 2911,2917 ****
+ }
+ if (!curbuf->b_u_synced)
+ return; /* already unsynced */
+! if (p_ul < 0)
+ return; /* no entries, nothing to do */
+ else
+ {
+--- 2924,2930 ----
+ }
+ if (!curbuf->b_u_synced)
+ return; /* already unsynced */
+! if (get_undolevel() < 0)
+ return; /* no entries, nothing to do */
+ else
+ {
+*** ../vim-7.4.072/src/version.c 2013-11-06 04:04:29.000000000 +0100
+--- src/version.c 2013-11-06 05:21:43.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 73,
+ /**/
+
+--
+Living on Earth includes an annual free trip around the Sun.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.074 b/patches/source/vim/patches/7.4.074
new file mode 100644
index 00000000..70045c08
--- /dev/null
+++ b/patches/source/vim/patches/7.4.074
@@ -0,0 +1,67 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.074
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.074
+Problem: When undo'ing all changes and creating a new change the undo
+ structure is incorrect. (Christian Brabandt)
+Solution: When deleting the branch starting at the old header, delete the
+ whole branch, not just the first entry.
+Files: src/undo.c
+
+
+*** ../vim-7.4.073/src/undo.c 2013-11-06 05:26:08.000000000 +0100
+--- src/undo.c 2013-11-07 03:01:42.000000000 +0100
+***************
+*** 3121,3127 ****
+ * all the pointers. */
+ if (uhp == buf->b_u_oldhead)
+ {
+! u_freeheader(buf, uhp, uhpp);
+ return;
+ }
+
+--- 3121,3128 ----
+ * all the pointers. */
+ if (uhp == buf->b_u_oldhead)
+ {
+! while (buf->b_u_oldhead != NULL)
+! u_freeheader(buf, buf->b_u_oldhead, uhpp);
+ return;
+ }
+
+*** ../vim-7.4.073/src/version.c 2013-11-06 05:26:08.000000000 +0100
+--- src/version.c 2013-11-07 03:03:02.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 74,
+ /**/
+
+--
+LETTERS TO THE EDITOR (The Times of London)
+
+Dear Sir,
+
+I am firmly opposed to the spread of microchips either to the home or
+to the office.  We have more than enough of them foisted upon us in
+public places.  They are a disgusting Americanism, and can only result
+in the farmers being forced to grow smaller potatoes, which in turn
+will cause massive unemployment in the already severely depressed
+agricultural industry.
+
+Yours faithfully,
+        Capt. Quinton D'Arcy, J. P.
+        Sevenoaks
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.075 b/patches/source/vim/patches/7.4.075
new file mode 100644
index 00000000..f7ba21e1
--- /dev/null
+++ b/patches/source/vim/patches/7.4.075
@@ -0,0 +1,290 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.075
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.075
+Problem: Locally setting 'undolevels' is not tested.
+Solution: Add a test. (Christian Brabandt)
+Files: src/testdir/test100.in, src/testdir/test100.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, src/Makefile
+
+
+*** ../vim-7.4.074/src/testdir/test100.in 2013-11-07 03:24:56.000000000 +0100
+--- src/testdir/test100.in 2013-11-07 03:20:32.000000000 +0100
+***************
+*** 0 ****
+--- 1,42 ----
++ Tests for 'undolevel' setting being global-local
++
++ STARTTEST
++ :so small.vim
++ :set nocompatible viminfo+=nviminfo ul=5
++ :fu! FillBuffer()
++ :for i in range(1,13)
++ :put=i
++ :exe "setg ul=" . &g:ul
++ :endfor
++ :endfu
++ :fu! UndoLevel()
++ :redir @a | setglobal undolevels? | echon ' global' | setlocal undolevels? | echon ' local' |redir end
++ :$put a
++ :endfu
++ :new one
++ :0put ='ONE: expecting global undolevels: 5, local undolevels: -123456 (default)'
++ :call FillBuffer()
++ :call feedkeys(":earlier 10\n", 't')
++ :call UndoLevel()
++ :%w! test.out
++ :new two
++ :0put ='TWO: expecting global undolevels: 5, local undolevels: 2 (first) then 10 (afterwards)'
++ :setlocal ul=2
++ :call FillBuffer()
++ :call feedkeys(":earlier 10\n", 't')
++ :call UndoLevel()
++ :setlocal ul=10
++ :call UndoLevel()
++ :%w >> test.out
++ :wincmd p
++ :redir >>test.out | echo "global value shouldn't be changed and still be 5!" | echo 'ONE: expecting global undolevels: 5, local undolevels: -123456 (default)'|:setglobal undolevels? | echon ' global' | setlocal undolevels? | echon ' local' |echo "" |redir end
++ :new three
++ :setglobal ul=50
++ :1put ='global value should be changed to 50'
++ :2put ='THREE: expecting global undolevels: 50, local undolevels: -123456 (default)'
++ :call UndoLevel()
++ :%w >> test.out
++ :"sleep 10
++ :qa!
++ ENDTEST
++
+*** ../vim-7.4.074/src/testdir/test100.ok 2013-11-07 03:24:56.000000000 +0100
+--- src/testdir/test100.ok 2013-11-07 03:11:51.000000000 +0100
+***************
+*** 0 ****
+--- 1,41 ----
++ ONE: expecting global undolevels: 5, local undolevels: -123456 (default)
++ 1
++ 2
++ 3
++ 4
++ 5
++ 6
++ 7
++
++
++ undolevels=5 global
++ undolevels=-123456 local
++ TWO: expecting global undolevels: 5, local undolevels: 2 (first) then 10 (afterwards)
++ 1
++ 2
++ 3
++ 4
++ 5
++ 6
++ 7
++ 8
++ 9
++ 10
++
++
++ undolevels=5 global
++ undolevels=2 local
++
++ undolevels=5 global
++ undolevels=10 local
++
++ global value shouldn't be changed and still be 5!
++ ONE: expecting global undolevels: 5, local undolevels: -123456 (default)
++ undolevels=5 global
++ undolevels=-123456 local
++
++ global value should be changed to 50
++ THREE: expecting global undolevels: 50, local undolevels: -123456 (default)
++
++ undolevels=50 global
++ undolevels=-123456 local
+*** ../vim-7.4.074/src/testdir/Make_amiga.mak 2013-09-19 17:00:14.000000000 +0200
+--- src/testdir/Make_amiga.mak 2013-11-07 03:07:57.000000000 +0100
+***************
+*** 34,40 ****
+ test81.out test82.out test83.out test84.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test97.out test98.out \
+! test99.out
+
+ .SUFFIXES: .in .out
+
+--- 34,40 ----
+ test81.out test82.out test83.out test84.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test97.out test98.out \
+! test99.out test100.out
+
+ .SUFFIXES: .in .out
+
+***************
+*** 150,152 ****
+--- 150,153 ----
+ test97.out: test97.in
+ test98.out: test98.in
+ test99.out: test99.in
++ test100.out: test100.in
+*** ../vim-7.4.074/src/testdir/Make_dos.mak 2013-09-19 17:00:14.000000000 +0200
+--- src/testdir/Make_dos.mak 2013-11-07 03:08:05.000000000 +0100
+***************
+*** 32,38 ****
+ test79.out test80.out test81.out test82.out test83.out \
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+! test94.out test95.out test96.out test98.out test99.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 32,39 ----
+ test79.out test80.out test81.out test82.out test83.out \
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+! test94.out test95.out test96.out test98.out test99.out \
+! test100.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.4.074/src/testdir/Make_ming.mak 2013-09-19 17:00:14.000000000 +0200
+--- src/testdir/Make_ming.mak 2013-11-07 03:08:12.000000000 +0100
+***************
+*** 52,58 ****
+ test79.out test80.out test81.out test82.out test83.out \
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+! test94.out test95.out test96.out test98.out test99.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 52,59 ----
+ test79.out test80.out test81.out test82.out test83.out \
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+! test94.out test95.out test96.out test98.out test99.out \
+! test100out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.4.074/src/testdir/Make_os2.mak 2013-09-19 17:00:14.000000000 +0200
+--- src/testdir/Make_os2.mak 2013-11-07 03:08:18.000000000 +0100
+***************
+*** 34,40 ****
+ test76.out test77.out test78.out test79.out test80.out \
+ test81.out test82.out test83.out test84.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+! test94.out test95.out test96.out test98.out test99.out
+
+ .SUFFIXES: .in .out
+
+--- 34,41 ----
+ test76.out test77.out test78.out test79.out test80.out \
+ test81.out test82.out test83.out test84.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+! test94.out test95.out test96.out test98.out test99.out \
+! test100.out
+
+ .SUFFIXES: .in .out
+
+*** ../vim-7.4.074/src/testdir/Make_vms.mms 2013-09-19 17:00:14.000000000 +0200
+--- src/testdir/Make_vms.mms 2013-11-07 03:08:24.000000000 +0100
+***************
+*** 4,10 ****
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2013 Sep 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: 2013 Nov 07
+ #
+ # 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.
+***************
+*** 78,84 ****
+ test77.out test78.out test79.out test80.out test81.out \
+ test82.out test83.out test84.out test88.out test89.out \
+ test90.out test91.out test92.out test93.out test94.out \
+! test95.out test96.out test97.out test98.out test99.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+--- 78,85 ----
+ test77.out test78.out test79.out test80.out test81.out \
+ test82.out test83.out test84.out test88.out test89.out \
+ test90.out test91.out test92.out test93.out test94.out \
+! test95.out test96.out test97.out test98.out test99.out \
+! test100.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+*** ../vim-7.4.074/src/testdir/Makefile 2013-09-22 15:03:34.000000000 +0200
+--- src/testdir/Makefile 2013-11-07 03:08:31.000000000 +0100
+***************
+*** 30,36 ****
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test97.out test98.out \
+! test99.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 30,36 ----
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test97.out test98.out \
+! test99.out test100.out
+
+ SCRIPTS_GUI = test16.out
+
+*** ../vim-7.4.074/src/Makefile 2013-08-10 14:21:15.000000000 +0200
+--- src/Makefile 2013-11-07 03:10:40.000000000 +0100
+***************
+*** 1882,1888 ****
+ test60 test61 test62 test63 test64 test65 test66 test67 test68 test69 \
+ test70 test71 test72 test73 test74 test75 test76 test77 test78 test79 \
+ test80 test81 test82 test83 test84 test85 test86 test87 test88 test89 \
+! test90 test91 test92 test93 test94 test95 test96 test97 test98 test99:
+ cd testdir; rm $@.out; $(MAKE) -f Makefile $@.out VIMPROG=../$(VIMTARGET)
+
+ testclean:
+--- 1883,1890 ----
+ test60 test61 test62 test63 test64 test65 test66 test67 test68 test69 \
+ test70 test71 test72 test73 test74 test75 test76 test77 test78 test79 \
+ test80 test81 test82 test83 test84 test85 test86 test87 test88 test89 \
+! test90 test91 test92 test93 test94 test95 test96 test97 test98 test99 \
+! test100 test101 test102 test103 test104 test105 test106 test107:
+ cd testdir; rm $@.out; $(MAKE) -f Makefile $@.out VIMPROG=../$(VIMTARGET)
+
+ testclean:
+*** ../vim-7.4.074/src/version.c 2013-11-07 03:04:06.000000000 +0100
+--- src/version.c 2013-11-07 03:10:10.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 75,
+ /**/
+
+--
+Why is "abbreviation" such a long word?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.076 b/patches/source/vim/patches/7.4.076
new file mode 100644
index 00000000..fa9abbc2
--- /dev/null
+++ b/patches/source/vim/patches/7.4.076
@@ -0,0 +1,66 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.076
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.076
+Problem: "cgn" does not wrap around the end of the file. (Dimitrov
+ Dimitrov)
+Solution: Restore 'wrapscan' earlier. (Christian Brabandt)
+Files: src/search.c
+
+
+*** ../vim-7.4.075/src/search.c 2013-10-02 21:54:57.000000000 +0200
+--- src/search.c 2013-11-07 04:38:46.000000000 +0100
+***************
+*** 4592,4598 ****
+ ml_get(curwin->w_buffer->b_ml.ml_line_count));
+ }
+ }
+!
+ }
+
+ start_pos = pos;
+--- 4592,4598 ----
+ ml_get(curwin->w_buffer->b_ml.ml_line_count));
+ }
+ }
+! p_ws = old_p_ws;
+ }
+
+ start_pos = pos;
+***************
+*** 4607,4613 ****
+ if (!VIsual_active)
+ VIsual = start_pos;
+
+- p_ws = old_p_ws;
+ curwin->w_cursor = pos;
+ VIsual_active = TRUE;
+ VIsual_mode = 'v';
+--- 4607,4612 ----
+*** ../vim-7.4.075/src/version.c 2013-11-07 03:25:51.000000000 +0100
+--- src/version.c 2013-11-07 04:44:44.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 76,
+ /**/
+
+--
+INSPECTOR END OF FILM: Move along. There's nothing to see! Keep moving!
+ [Suddenly he notices the cameras.]
+INSPECTOR END OF FILM: (to Camera) All right, put that away sonny.
+ [He walks over to it and puts his hand over the lens.]
+ "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/patches/source/vim/patches/7.4.077 b/patches/source/vim/patches/7.4.077
new file mode 100644
index 00000000..fd2d3d7c
--- /dev/null
+++ b/patches/source/vim/patches/7.4.077
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.077
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.077
+Problem: DOS installer creates shortcut without a path, resulting in the
+ current directory to be C:\Windows\system32.
+Solution: Use environment variables.
+Files: src/dosinst.c
+
+
+*** ../vim-7.4.076/src/dosinst.c 2013-05-06 04:06:04.000000000 +0200
+--- src/dosinst.c 2013-11-06 18:18:47.000000000 +0100
+***************
+*** 1773,1781 ****
+
+ /*
+ * We used to use "homedir" as the working directory, but that is a bad choice
+! * on multi-user systems. Not specifying a directory appears to work best.
+ */
+! #define WORKDIR ""
+
+ /*
+ * Create shortcut(s) in the Start Menu\Programs\Vim folder.
+--- 1773,1783 ----
+
+ /*
+ * We used to use "homedir" as the working directory, but that is a bad choice
+! * on multi-user systems. However, not specifying a directory results in the
+! * current directory to be c:\Windows\system32 on Windows 7. Use environment
+! * variables instead.
+ */
+! #define WORKDIR "%HOMEDRIVE%%HOMEPATH%"
+
+ /*
+ * Create shortcut(s) in the Start Menu\Programs\Vim folder.
+*** ../vim-7.4.076/src/version.c 2013-11-07 04:46:43.000000000 +0100
+--- src/version.c 2013-11-07 04:47:42.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 77,
+ /**/
+
+--
+JOHN CLEESE PLAYED: SECOND SOLDIER WITH A KEEN INTEREST IN BIRDS, LARGE MAN
+ WITH DEAD BODY, BLACK KNIGHT, MR NEWT (A VILLAGE
+ BLACKSMITH INTERESTED IN BURNING WITCHES), A QUITE
+ EXTRAORDINARILY RUDE FRENCHMAN, TIM THE WIZARD, SIR
+ LAUNCELOT
+ "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/patches/source/vim/patches/7.4.078 b/patches/source/vim/patches/7.4.078
new file mode 100644
index 00000000..56b50763
--- /dev/null
+++ b/patches/source/vim/patches/7.4.078
@@ -0,0 +1,114 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.078
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.078
+Problem: MSVC 2013 is not supported.
+Solution: Recognize and support MSVC 2013. (Ed Brown)
+Files: src/Make_mvc.mak
+
+
+*** ../vim-7.4.077/src/Make_mvc.mak 2013-07-09 13:13:12.000000000 +0200
+--- src/Make_mvc.mak 2013-11-08 03:12:48.000000000 +0100
+***************
+*** 424,429 ****
+--- 424,432 ----
+ !if "$(_NMAKE_VER)" == "11.00.60610.1"
+ MSVCVER = 11.0
+ !endif
++ !if "$(_NMAKE_VER)" == "12.00.21005.1"
++ MSVCVER = 12.0
++ !endif
+ !endif
+
+ # Abort building VIM if version of VC is unrecognised.
+***************
+*** 438,444 ****
+ !endif
+
+ # Convert processor ID to MVC-compatible number
+! !if ("$(MSVCVER)" != "8.0") && ("$(MSVCVER)" != "9.0") && ("$(MSVCVER)" != "10.0") && ("$(MSVCVER)" != "11.0")
+ !if "$(CPUNR)" == "i386"
+ CPUARG = /G3
+ !elseif "$(CPUNR)" == "i486"
+--- 441,447 ----
+ !endif
+
+ # Convert processor ID to MVC-compatible number
+! !if ("$(MSVCVER)" != "8.0") && ("$(MSVCVER)" != "9.0") && ("$(MSVCVER)" != "10.0") && ("$(MSVCVER)" != "11.0") && ("$(MSVCVER)" != "12.0")
+ !if "$(CPUNR)" == "i386"
+ CPUARG = /G3
+ !elseif "$(CPUNR)" == "i486"
+***************
+*** 472,478 ****
+ OPTFLAG = /Ox
+ !endif
+
+! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0") || ("$(MSVCVER)" == "11.0")
+ # Use link time code generation if not worried about size
+ !if "$(OPTIMIZE)" != "SPACE"
+ OPTFLAG = $(OPTFLAG) /GL
+--- 475,481 ----
+ OPTFLAG = /Ox
+ !endif
+
+! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0") || ("$(MSVCVER)" == "11.0") || ("$(MSVCVER)" == "12.0")
+ # Use link time code generation if not worried about size
+ !if "$(OPTIMIZE)" != "SPACE"
+ OPTFLAG = $(OPTFLAG) /GL
+***************
+*** 485,491 ****
+ !endif
+
+ # Static code analysis generally available starting with VS2012
+! !if ("$(ANALYZE)" == "yes") && ("$(MSVCVER)" == "11.0")
+ CFLAGS=$(CFLAGS) /analyze
+ !endif
+
+--- 488,494 ----
+ !endif
+
+ # Static code analysis generally available starting with VS2012
+! !if ("$(ANALYZE)" == "yes") && ("$(MSVCVER)" == "11.0") && ("$(MSVCVER)" == "12.0")
+ CFLAGS=$(CFLAGS) /analyze
+ !endif
+
+***************
+*** 943,949 ****
+
+ # Report link time code generation progress if used.
+ !ifdef NODEBUG
+! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0") || ("$(MSVCVER)" == "11.0")
+ !if "$(OPTIMIZE)" != "SPACE"
+ LINKARGS1 = $(LINKARGS1) /LTCG:STATUS
+ !endif
+--- 946,952 ----
+
+ # Report link time code generation progress if used.
+ !ifdef NODEBUG
+! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0") || ("$(MSVCVER)" == "11.0") || ("$(MSVCVER)" == "12.0")
+ !if "$(OPTIMIZE)" != "SPACE"
+ LINKARGS1 = $(LINKARGS1) /LTCG:STATUS
+ !endif
+*** ../vim-7.4.077/src/version.c 2013-11-07 04:49:23.000000000 +0100
+--- src/version.c 2013-11-08 03:13:56.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 78,
+ /**/
+
+--
+Every time I lose weight, it finds me 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/patches/source/vim/patches/7.4.079 b/patches/source/vim/patches/7.4.079
new file mode 100644
index 00000000..fbda97d8
--- /dev/null
+++ b/patches/source/vim/patches/7.4.079
@@ -0,0 +1,470 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.079
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.079
+Problem: A script cannot detect whether 'hlsearch' highlighting is actually
+ displayed.
+Solution: Add the "v:hlsearch" variable. (ZyX)
+Files: src/runtime/doc/eval.txt, src/eval.c, src/ex_docmd.c,
+ src/option.c, src/screen.c, src/search.c, src/tag.c, src/vim.h,
+ src/testdir/test101.in, src/testdir/test101.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
+
+
+diff: ../vim-7.4.078/src/runtime/doc/eval.txt: No such file or directory
+diff: src/runtime/doc/eval.txt: No such file or directory
+*** ../vim-7.4.078/src/eval.c 2013-11-05 07:12:59.000000000 +0100
+--- src/eval.c 2013-11-08 04:11:46.000000000 +0100
+***************
+*** 356,361 ****
+--- 356,362 ----
+ {VV_NAME("mouse_col", VAR_NUMBER), 0},
+ {VV_NAME("operator", VAR_STRING), VV_RO},
+ {VV_NAME("searchforward", VAR_NUMBER), 0},
++ {VV_NAME("hlsearch", VAR_NUMBER), 0},
+ {VV_NAME("oldfiles", VAR_LIST), 0},
+ {VV_NAME("windowid", VAR_NUMBER), VV_RO},
+ };
+***************
+*** 871,876 ****
+--- 872,878 ----
+ hash_add(&compat_hashtab, p->vv_di.di_key);
+ }
+ set_vim_var_nr(VV_SEARCHFORWARD, 1L);
++ set_vim_var_nr(VV_HLSEARCH, 1L);
+ set_reg_var(0); /* default for v:register is not 0 but '"' */
+
+ #ifdef EBCDIC
+***************
+*** 20613,20618 ****
+--- 20615,20627 ----
+ v->di_tv.vval.v_number = get_tv_number(tv);
+ if (STRCMP(varname, "searchforward") == 0)
+ set_search_direction(v->di_tv.vval.v_number ? '/' : '?');
++ #ifdef FEAT_SEARCH_EXTRA
++ else if (STRCMP(varname, "hlsearch") == 0)
++ {
++ no_hlsearch = !v->di_tv.vval.v_number;
++ redraw_all_later(SOME_VALID);
++ }
++ #endif
+ }
+ return;
+ }
+*** ../vim-7.4.078/src/ex_docmd.c 2013-07-24 15:09:37.000000000 +0200
+--- src/ex_docmd.c 2013-11-08 04:17:01.000000000 +0100
+***************
+*** 11389,11395 ****
+ ex_nohlsearch(eap)
+ exarg_T *eap UNUSED;
+ {
+! no_hlsearch = TRUE;
+ redraw_all_later(SOME_VALID);
+ }
+
+--- 11389,11395 ----
+ ex_nohlsearch(eap)
+ exarg_T *eap UNUSED;
+ {
+! SET_NO_HLSEARCH(TRUE);
+ redraw_all_later(SOME_VALID);
+ }
+
+*** ../vim-7.4.078/src/option.c 2013-11-06 05:26:08.000000000 +0100
+--- src/option.c 2013-11-08 04:17:32.000000000 +0100
+***************
+*** 7811,7817 ****
+ /* when 'hlsearch' is set or reset: reset no_hlsearch */
+ else if ((int *)varp == &p_hls)
+ {
+! no_hlsearch = FALSE;
+ }
+ #endif
+
+--- 7811,7817 ----
+ /* when 'hlsearch' is set or reset: reset no_hlsearch */
+ else if ((int *)varp == &p_hls)
+ {
+! SET_NO_HLSEARCH(FALSE);
+ }
+ #endif
+
+*** ../vim-7.4.078/src/screen.c 2013-07-13 12:23:00.000000000 +0200
+--- src/screen.c 2013-11-08 04:17:48.000000000 +0100
+***************
+*** 7447,7453 ****
+ {
+ /* don't free regprog in the match list, it's a copy */
+ vim_regfree(shl->rm.regprog);
+! no_hlsearch = TRUE;
+ }
+ shl->rm.regprog = NULL;
+ shl->lnum = 0;
+--- 7447,7453 ----
+ {
+ /* don't free regprog in the match list, it's a copy */
+ vim_regfree(shl->rm.regprog);
+! SET_NO_HLSEARCH(TRUE);
+ }
+ shl->rm.regprog = NULL;
+ shl->lnum = 0;
+*** ../vim-7.4.078/src/search.c 2013-11-07 04:46:43.000000000 +0100
+--- src/search.c 2013-11-08 04:18:57.000000000 +0100
+***************
+*** 289,295 ****
+ /* If 'hlsearch' set and search pat changed: need redraw. */
+ if (p_hls)
+ redraw_all_later(SOME_VALID);
+! no_hlsearch = FALSE;
+ #endif
+ }
+ }
+--- 289,295 ----
+ /* If 'hlsearch' set and search pat changed: need redraw. */
+ if (p_hls)
+ redraw_all_later(SOME_VALID);
+! SET_NO_HLSEARCH(FALSE);
+ #endif
+ }
+ }
+***************
+*** 333,339 ****
+ spats[1] = saved_spats[1];
+ last_idx = saved_last_idx;
+ # ifdef FEAT_SEARCH_EXTRA
+! no_hlsearch = saved_no_hlsearch;
+ # endif
+ }
+ }
+--- 333,339 ----
+ spats[1] = saved_spats[1];
+ last_idx = saved_last_idx;
+ # ifdef FEAT_SEARCH_EXTRA
+! SET_NO_HLSEARCH(saved_no_hlsearch);
+ # endif
+ }
+ }
+***************
+*** 1148,1154 ****
+ if (no_hlsearch && !(options & SEARCH_KEEP))
+ {
+ redraw_all_later(SOME_VALID);
+! no_hlsearch = FALSE;
+ }
+ #endif
+
+--- 1148,1154 ----
+ if (no_hlsearch && !(options & SEARCH_KEEP))
+ {
+ redraw_all_later(SOME_VALID);
+! SET_NO_HLSEARCH(FALSE);
+ }
+ #endif
+
+***************
+*** 5561,5567 ****
+ spats[idx].off.off = off;
+ #ifdef FEAT_SEARCH_EXTRA
+ if (setlast)
+! no_hlsearch = !hlsearch_on;
+ #endif
+ }
+ }
+--- 5561,5569 ----
+ spats[idx].off.off = off;
+ #ifdef FEAT_SEARCH_EXTRA
+ if (setlast)
+! {
+! SET_NO_HLSEARCH(!hlsearch_on);
+! }
+ #endif
+ }
+ }
+*** ../vim-7.4.078/src/tag.c 2013-09-05 12:06:26.000000000 +0200
+--- src/tag.c 2013-11-08 04:19:14.000000000 +0100
+***************
+*** 3330,3336 ****
+ #ifdef FEAT_SEARCH_EXTRA
+ /* restore no_hlsearch when keeping the old search pattern */
+ if (search_options)
+! no_hlsearch = save_no_hlsearch;
+ #endif
+
+ /* Return OK if jumped to another file (at least we found the file!). */
+--- 3330,3338 ----
+ #ifdef FEAT_SEARCH_EXTRA
+ /* restore no_hlsearch when keeping the old search pattern */
+ if (search_options)
+! {
+! SET_NO_HLSEARCH(save_no_hlsearch);
+! }
+ #endif
+
+ /* Return OK if jumped to another file (at least we found the file!). */
+*** ../vim-7.4.078/src/vim.h 2013-08-02 16:02:27.000000000 +0200
+--- src/vim.h 2013-11-08 04:16:57.000000000 +0100
+***************
+*** 1864,1872 ****
+ #define VV_MOUSE_COL 51
+ #define VV_OP 52
+ #define VV_SEARCHFORWARD 53
+! #define VV_OLDFILES 54
+! #define VV_WINDOWID 55
+! #define VV_LEN 56 /* number of v: vars */
+
+ #ifdef FEAT_CLIPBOARD
+
+--- 1864,1873 ----
+ #define VV_MOUSE_COL 51
+ #define VV_OP 52
+ #define VV_SEARCHFORWARD 53
+! #define VV_HLSEARCH 54
+! #define VV_OLDFILES 55
+! #define VV_WINDOWID 56
+! #define VV_LEN 57 /* number of v: vars */
+
+ #ifdef FEAT_CLIPBOARD
+
+***************
+*** 2246,2249 ****
+--- 2247,2256 ----
+ /* Character used as separated in autoload function/variable names. */
+ #define AUTOLOAD_CHAR '#'
+
++ #ifdef FEAT_EVAL
++ # define SET_NO_HLSEARCH(flag) no_hlsearch = (flag); set_vim_var_nr(VV_HLSEARCH, !no_hlsearch)
++ #else
++ # define SET_NO_HLSEARCH(flag) no_hlsearch = (flag)
++ #endif
++
+ #endif /* VIM__H */
+*** ../vim-7.4.078/src/testdir/test101.in 2013-11-08 04:28:49.000000000 +0100
+--- src/testdir/test101.in 2013-11-08 04:11:46.000000000 +0100
+***************
+*** 0 ****
+--- 1,45 ----
++ Test for v:hlsearch vim: set ft=vim :
++
++ STARTTEST
++ :" Last abc: Q
++ :so small.vim
++ :new
++ :call setline(1, repeat(['aaa'], 10))
++ :set hlsearch nolazyredraw
++ :let r=[]
++ :command -nargs=0 -bar AddR :call add(r, [screenattr(1, 1), v:hlsearch])
++ /aaa
++ :AddR
++ :nohlsearch
++ :AddR
++ :let v:hlsearch=1
++ :AddR
++ :let v:hlsearch=0
++ :AddR
++ :set hlsearch
++ :AddR
++ :let v:hlsearch=0
++ :AddR
++ n:AddR
++ :let v:hlsearch=0
++ :AddR
++ /
++ :AddR
++ :let r1=r[0][0]
++ :" I guess it is not guaranteed that screenattr outputs always the same character
++ :call map(r, 'v:val[1].":".(v:val[0]==r1?"highlighted":"not highlighted")')
++ :try
++ : let v:hlsearch=[]
++ :catch
++ : call add(r, matchstr(v:exception,'^Vim(let):E\d\+:'))
++ :endtry
++ :bwipeout!
++ :$put=r
++ :call garbagecollect(1)
++ :"
++ :/^start:/,$wq! test.out
++ :" vim: et ts=4 isk-=\:
++ :call getchar()
++ ENDTEST
++
++ start:
+*** ../vim-7.4.078/src/testdir/test101.ok 2013-11-08 04:28:49.000000000 +0100
+--- src/testdir/test101.ok 2013-11-08 04:11:46.000000000 +0100
+***************
+*** 0 ****
+--- 1,11 ----
++ start:
++ 1:highlighted
++ 0:not highlighted
++ 1:highlighted
++ 0:not highlighted
++ 1:highlighted
++ 0:not highlighted
++ 1:highlighted
++ 0:not highlighted
++ 1:highlighted
++ Vim(let):E706:
+*** ../vim-7.4.078/src/testdir/Make_amiga.mak 2013-11-07 03:25:51.000000000 +0100
+--- src/testdir/Make_amiga.mak 2013-11-08 04:22:13.000000000 +0100
+***************
+*** 34,40 ****
+ test81.out test82.out test83.out test84.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test97.out test98.out \
+! test99.out test100.out
+
+ .SUFFIXES: .in .out
+
+--- 34,40 ----
+ test81.out test82.out test83.out test84.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test97.out test98.out \
+! test99.out test100.out test101.out
+
+ .SUFFIXES: .in .out
+
+***************
+*** 151,153 ****
+--- 151,154 ----
+ test98.out: test98.in
+ test99.out: test99.in
+ test100.out: test100.in
++ test101.out: test101.in
+*** ../vim-7.4.078/src/testdir/Make_dos.mak 2013-11-07 03:25:51.000000000 +0100
+--- src/testdir/Make_dos.mak 2013-11-08 04:22:17.000000000 +0100
+***************
+*** 33,39 ****
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test98.out test99.out \
+! test100.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 33,39 ----
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test98.out test99.out \
+! test100.out test101.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.4.078/src/testdir/Make_ming.mak 2013-11-07 03:25:51.000000000 +0100
+--- src/testdir/Make_ming.mak 2013-11-08 04:22:19.000000000 +0100
+***************
+*** 53,59 ****
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test98.out test99.out \
+! test100out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 53,59 ----
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test98.out test99.out \
+! test100out test101.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.4.078/src/testdir/Make_os2.mak 2013-11-07 03:25:51.000000000 +0100
+--- src/testdir/Make_os2.mak 2013-11-08 04:22:21.000000000 +0100
+***************
+*** 35,41 ****
+ test81.out test82.out test83.out test84.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test98.out test99.out \
+! test100.out
+
+ .SUFFIXES: .in .out
+
+--- 35,41 ----
+ test81.out test82.out test83.out test84.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test98.out test99.out \
+! test100.out test101.out
+
+ .SUFFIXES: .in .out
+
+*** ../vim-7.4.078/src/testdir/Make_vms.mms 2013-11-07 03:25:51.000000000 +0100
+--- src/testdir/Make_vms.mms 2013-11-08 04:22:23.000000000 +0100
+***************
+*** 4,10 ****
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2013 Nov 07
+ #
+ # 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: 2013 Nov 08
+ #
+ # 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.
+***************
+*** 79,85 ****
+ test82.out test83.out test84.out test88.out test89.out \
+ test90.out test91.out test92.out test93.out test94.out \
+ test95.out test96.out test97.out test98.out test99.out \
+! test100.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+--- 79,85 ----
+ test82.out test83.out test84.out test88.out test89.out \
+ test90.out test91.out test92.out test93.out test94.out \
+ test95.out test96.out test97.out test98.out test99.out \
+! test100.out test101.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+*** ../vim-7.4.078/src/testdir/Makefile 2013-11-07 03:25:51.000000000 +0100
+--- src/testdir/Makefile 2013-11-08 04:22:26.000000000 +0100
+***************
+*** 30,36 ****
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test97.out test98.out \
+! test99.out test100.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 30,36 ----
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test97.out test98.out \
+! test99.out test100.out test101.out
+
+ SCRIPTS_GUI = test16.out
+
+*** ../vim-7.4.078/src/version.c 2013-11-08 03:15:39.000000000 +0100
+--- src/version.c 2013-11-08 04:11:08.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 79,
+ /**/
+
+--
+Corn oil comes from corn and olive oil comes from olives, so where
+does baby oil come from?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.080 b/patches/source/vim/patches/7.4.080
new file mode 100644
index 00000000..eeec1dec
--- /dev/null
+++ b/patches/source/vim/patches/7.4.080
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.080
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.080 (after 7.4.079)
+Problem: Missing documentation for v:hlsearch.
+Solution: Include the right file in the patch.
+Files: runtime/doc/eval.txt
+
+
+*** ../vim-7.4.079/runtime/doc/eval.txt 2013-11-02 23:29:17.000000000 +0100
+--- runtime/doc/eval.txt 2013-11-08 04:20:27.000000000 +0100
+***************
+*** 1454,1459 ****
+--- 1455,1467 ----
+ v:foldstart Used for 'foldtext': first line of closed fold.
+ Read-only in the |sandbox|. |fold-foldtext|
+
++ *v:hlsearch* *hlsearch-variable*
++ v:hlsearch Variable that determines whether search highlighting is on.
++ Makes sense only if 'hlsearch' is enabled which requires
++ |+extra_search|. Setting this variable to zero acts the like
++ |:nohlsearch| command, setting it to one acts like >
++ let &hlsearch = &hlsearch
++ <
+ *v:insertmode* *insertmode-variable*
+ v:insertmode Used for the |InsertEnter| and |InsertChange| autocommand
+ events. Values:
+*** ../vim-7.4.079/src/version.c 2013-11-08 04:30:06.000000000 +0100
+--- src/version.c 2013-11-09 01:42:56.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 80,
+ /**/
+
+--
+The chat program is in public domain. This is not the GNU public license.
+If it breaks then you get to keep both pieces.
+ -- Copyright notice for the chat program
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.081 b/patches/source/vim/patches/7.4.081
new file mode 100644
index 00000000..b2c61d9a
--- /dev/null
+++ b/patches/source/vim/patches/7.4.081
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.081
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.081 (after 7.4.078)
+Problem: Wrong logic when ANALYZE is "yes".
+Solution: Use or instead of and. (KF Leong)
+Files: src/Make_mvc.mak
+
+
+*** ../vim-7.4.080/src/Make_mvc.mak 2013-11-08 03:15:39.000000000 +0100
+--- src/Make_mvc.mak 2013-11-08 18:02:54.000000000 +0100
+***************
+*** 488,494 ****
+ !endif
+
+ # Static code analysis generally available starting with VS2012
+! !if ("$(ANALYZE)" == "yes") && ("$(MSVCVER)" == "11.0") && ("$(MSVCVER)" == "12.0")
+ CFLAGS=$(CFLAGS) /analyze
+ !endif
+
+--- 488,494 ----
+ !endif
+
+ # Static code analysis generally available starting with VS2012
+! !if ("$(ANALYZE)" == "yes") && (("$(MSVCVER)" == "10.0") || ("$(MSVCVER)" == "11.0") || ("$(MSVCVER)" == "12.0"))
+ CFLAGS=$(CFLAGS) /analyze
+ !endif
+
+*** ../vim-7.4.080/src/version.c 2013-11-09 01:44:38.000000000 +0100
+--- src/version.c 2013-11-09 02:31:34.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 81,
+ /**/
+
+--
+Wi n0t trei a h0liday in Sweden thi yer?
+ "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/patches/source/vim/patches/7.4.082 b/patches/source/vim/patches/7.4.082
new file mode 100644
index 00000000..03089d66
--- /dev/null
+++ b/patches/source/vim/patches/7.4.082
@@ -0,0 +1,344 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.082
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.082
+Problem: Using "gf" in a changed buffer suggests adding "!", which is not
+ possible. (Tim Chase)
+Solution: Pass a flag to check_changed() wether adding ! make sense.
+Files: src/vim.h, src/ex_cmds2.c, src/proto/ex_cmds2.pro, src/globals.h,
+ src/ex_cmds.c, src/ex_docmd.c
+
+
+*** ../vim-7.4.081/src/vim.h 2013-11-08 04:30:06.000000000 +0100
+--- src/vim.h 2013-11-09 03:00:00.000000000 +0100
+***************
+*** 1176,1181 ****
+--- 1176,1190 ----
+ #define RESIZE_BOTH 15 /* resize in both directions */
+
+ /*
++ * flags for check_changed()
++ */
++ #define CCGD_AW 1 /* do autowrite if buffer was changed */
++ #define CCGD_MULTWIN 2 /* check also when several wins for the buf */
++ #define CCGD_FORCEIT 4 /* ! used */
++ #define CCGD_ALLBUF 8 /* may write all buffers */
++ #define CCGD_EXCMD 16 /* may suggest using ! */
++
++ /*
+ * "flags" values for option-setting functions.
+ * When OPT_GLOBAL and OPT_LOCAL are both missing, set both local and global
+ * values, get local value.
+*** ../vim-7.4.081/src/ex_cmds2.c 2013-06-28 20:14:53.000000000 +0200
+--- src/ex_cmds2.c 2013-11-09 03:14:44.000000000 +0100
+***************
+*** 1436,1455 ****
+ }
+
+ /*
+! * return TRUE if buffer was changed and cannot be abandoned.
+ */
+ int
+! check_changed(buf, checkaw, mult_win, forceit, allbuf)
+ buf_T *buf;
+! int checkaw; /* do autowrite if buffer was changed */
+! int mult_win; /* check also when several wins for the buf */
+! int forceit;
+! int allbuf UNUSED; /* may write all buffers */
+ {
+ if ( !forceit
+ && bufIsChanged(buf)
+! && (mult_win || buf->b_nwindows <= 1)
+! && (!checkaw || autowrite(buf, forceit) == FAIL))
+ {
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+ if ((p_confirm || cmdmod.confirm) && p_write)
+--- 1436,1455 ----
+ }
+
+ /*
+! * Return TRUE if buffer was changed and cannot be abandoned.
+! * For flags use the CCGD_ values.
+ */
+ int
+! check_changed(buf, flags)
+ buf_T *buf;
+! int flags;
+ {
++ int forceit = (flags & CCGD_FORCEIT);
++
+ if ( !forceit
+ && bufIsChanged(buf)
+! && ((flags & CCGD_MULTWIN) || buf->b_nwindows <= 1)
+! && (!(flags & CCGD_AW) || autowrite(buf, forceit) == FAIL))
+ {
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+ if ((p_confirm || cmdmod.confirm) && p_write)
+***************
+*** 1457,1463 ****
+ buf_T *buf2;
+ int count = 0;
+
+! if (allbuf)
+ for (buf2 = firstbuf; buf2 != NULL; buf2 = buf2->b_next)
+ if (bufIsChanged(buf2)
+ && (buf2->b_ffname != NULL
+--- 1457,1463 ----
+ buf_T *buf2;
+ int count = 0;
+
+! if (flags & CCGD_ALLBUF)
+ for (buf2 = firstbuf; buf2 != NULL; buf2 = buf2->b_next)
+ if (bufIsChanged(buf2)
+ && (buf2->b_ffname != NULL
+***************
+*** 1480,1486 ****
+ return bufIsChanged(buf);
+ }
+ #endif
+! EMSG(_(e_nowrtmsg));
+ return TRUE;
+ }
+ return FALSE;
+--- 1480,1489 ----
+ return bufIsChanged(buf);
+ }
+ #endif
+! if (flags & CCGD_EXCMD)
+! EMSG(_(e_nowrtmsg));
+! else
+! EMSG(_(e_nowrtmsg_nobang));
+ return TRUE;
+ }
+ return FALSE;
+***************
+*** 1690,1696 ****
+ {
+ /* 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 */
+ }
+ }
+--- 1693,1701 ----
+ {
+ /* 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 ? CCGD_AW : 0)
+! | CCGD_MULTWIN
+! | CCGD_ALLBUF) && buf_valid(buf))
+ break; /* didn't save - still changes */
+ }
+ }
+***************
+*** 2274,2280 ****
+ vim_free(p);
+ }
+ if ((!P_HID(curbuf) || !other)
+! && check_changed(curbuf, TRUE, !other, eap->forceit, FALSE))
+ return;
+ }
+
+--- 2279,2288 ----
+ vim_free(p);
+ }
+ if ((!P_HID(curbuf) || !other)
+! && check_changed(curbuf, CCGD_AW
+! | (other ? 0 : CCGD_MULTWIN)
+! | (eap->forceit ? CCGD_FORCEIT : 0)
+! | CCGD_EXCMD))
+ return;
+ }
+
+***************
+*** 2315,2321 ****
+ */
+ if ( P_HID(curbuf)
+ || eap->cmdidx == CMD_snext
+! || !check_changed(curbuf, TRUE, FALSE, eap->forceit, FALSE))
+ {
+ if (*eap->arg != NUL) /* redefine file list */
+ {
+--- 2323,2331 ----
+ */
+ if ( P_HID(curbuf)
+ || eap->cmdidx == CMD_snext
+! || !check_changed(curbuf, CCGD_AW
+! | (eap->forceit ? CCGD_FORCEIT : 0)
+! | CCGD_EXCMD))
+ {
+ if (*eap->arg != NUL) /* redefine file list */
+ {
+***************
+*** 2458,2464 ****
+ if (eap->cmdidx == CMD_windo
+ || eap->cmdidx == CMD_tabdo
+ || P_HID(curbuf)
+! || !check_changed(curbuf, TRUE, FALSE, eap->forceit, FALSE))
+ {
+ /* start at the first argument/window/buffer */
+ i = 0;
+--- 2468,2476 ----
+ if (eap->cmdidx == CMD_windo
+ || eap->cmdidx == CMD_tabdo
+ || P_HID(curbuf)
+! || !check_changed(curbuf, CCGD_AW
+! | (eap->forceit ? CCGD_FORCEIT : 0)
+! | CCGD_EXCMD))
+ {
+ /* start at the first argument/window/buffer */
+ i = 0;
+*** ../vim-7.4.081/src/proto/ex_cmds2.pro 2013-08-10 13:37:10.000000000 +0200
+--- src/proto/ex_cmds2.pro 2013-11-09 03:18:02.000000000 +0100
+***************
+*** 35,41 ****
+ int prof_def_func __ARGS((void));
+ int autowrite __ARGS((buf_T *buf, int forceit));
+ void autowrite_all __ARGS((void));
+! int check_changed __ARGS((buf_T *buf, int checkaw, int mult_win, int forceit, int allbuf));
+ void browse_save_fname __ARGS((buf_T *buf));
+ void dialog_changed __ARGS((buf_T *buf, int checkall));
+ int can_abandon __ARGS((buf_T *buf, int forceit));
+--- 35,41 ----
+ int prof_def_func __ARGS((void));
+ int autowrite __ARGS((buf_T *buf, int forceit));
+ void autowrite_all __ARGS((void));
+! int check_changed __ARGS((buf_T *buf, int flags));
+ void browse_save_fname __ARGS((buf_T *buf));
+ void dialog_changed __ARGS((buf_T *buf, int checkall));
+ int can_abandon __ARGS((buf_T *buf, int forceit));
+*** ../vim-7.4.081/src/globals.h 2013-07-04 19:53:44.000000000 +0200
+--- src/globals.h 2013-11-09 03:05:54.000000000 +0100
+***************
+*** 1490,1495 ****
+--- 1490,1496 ----
+ EXTERN char_u e_notopen[] INIT(= N_("E484: Can't open file %s"));
+ EXTERN char_u e_notread[] INIT(= N_("E485: Can't read file %s"));
+ EXTERN char_u e_nowrtmsg[] INIT(= N_("E37: No write since last change (add ! to override)"));
++ EXTERN char_u e_nowrtmsg_nobang[] INIT(= N_("E37: No write since last change"));
+ EXTERN char_u e_null[] INIT(= N_("E38: Null argument"));
+ #ifdef FEAT_DIGRAPHS
+ EXTERN char_u e_number_exp[] INIT(= N_("E39: Number expected"));
+*** ../vim-7.4.081/src/ex_cmds.c 2013-10-02 18:43:00.000000000 +0200
+--- src/ex_cmds.c 2013-11-09 03:19:25.000000000 +0100
+***************
+*** 3253,3260 ****
+ if ( ((!other_file && !(flags & ECMD_OLDBUF))
+ || (curbuf->b_nwindows == 1
+ && !(flags & (ECMD_HIDE | ECMD_ADDBUF))))
+! && check_changed(curbuf, p_awa, !other_file,
+! (flags & ECMD_FORCEIT), FALSE))
+ {
+ if (fnum == 0 && other_file && ffname != NULL)
+ (void)setaltfname(ffname, sfname, newlnum < 0 ? 0 : newlnum);
+--- 3253,3262 ----
+ if ( ((!other_file && !(flags & ECMD_OLDBUF))
+ || (curbuf->b_nwindows == 1
+ && !(flags & (ECMD_HIDE | ECMD_ADDBUF))))
+! && check_changed(curbuf, (p_awa ? CCGD_AW : 0)
+! | (other_file ? 0 : CCGD_MULTWIN)
+! | ((flags & ECMD_FORCEIT) ? CCGD_FORCEIT : 0)
+! | (eap == NULL ? 0 : CCGD_EXCMD)))
+ {
+ if (fnum == 0 && other_file && ffname != NULL)
+ (void)setaltfname(ffname, sfname, newlnum < 0 ? 0 : newlnum);
+***************
+*** 7664,7670 ****
+ # ifdef FEAT_WINDOWS
+ ++emsg_off;
+ # endif
+! split = check_changed(curbuf, TRUE, FALSE, FALSE, FALSE);
+ # ifdef FEAT_WINDOWS
+ --emsg_off;
+ # else
+--- 7666,7672 ----
+ # ifdef FEAT_WINDOWS
+ ++emsg_off;
+ # endif
+! split = check_changed(curbuf, CCGD_AW | CCGD_EXCMD);
+ # ifdef FEAT_WINDOWS
+ --emsg_off;
+ # else
+*** ../vim-7.4.081/src/ex_docmd.c 2013-11-08 04:30:06.000000000 +0100
+--- src/ex_docmd.c 2013-11-09 03:30:10.000000000 +0100
+***************
+*** 6565,6571 ****
+ if (check_more(FALSE, eap->forceit) == OK && only_one_window())
+ exiting = TRUE;
+ if ((!P_HID(curbuf)
+! && check_changed(curbuf, p_awa, FALSE, eap->forceit, FALSE))
+ || check_more(TRUE, eap->forceit) == FAIL
+ || (only_one_window() && check_changed_any(eap->forceit)))
+ {
+--- 6565,6573 ----
+ if (check_more(FALSE, eap->forceit) == OK && only_one_window())
+ exiting = TRUE;
+ if ((!P_HID(curbuf)
+! && check_changed(curbuf, (p_awa ? CCGD_AW : 0)
+! | (eap->forceit ? CCGD_FORCEIT : 0)
+! | CCGD_EXCMD))
+ || check_more(TRUE, eap->forceit) == FAIL
+ || (only_one_window() && check_changed_any(eap->forceit)))
+ {
+***************
+*** 7099,7105 ****
+ if (!P_HID(curbuf) && !split)
+ {
+ ++emsg_off;
+! split = check_changed(curbuf, TRUE, FALSE, FALSE, FALSE);
+ --emsg_off;
+ }
+ if (split)
+--- 7101,7107 ----
+ if (!P_HID(curbuf) && !split)
+ {
+ ++emsg_off;
+! split = check_changed(curbuf, CCGD_AW);
+ --emsg_off;
+ }
+ if (split)
+***************
+*** 7361,7367 ****
+ {
+ /* Set recoverymode right away to avoid the ATTENTION prompt. */
+ recoverymode = TRUE;
+! if (!check_changed(curbuf, p_awa, TRUE, eap->forceit, FALSE)
+ && (*eap->arg == NUL
+ || setfname(curbuf, eap->arg, NULL, TRUE) == OK))
+ ml_recover();
+--- 7363,7373 ----
+ {
+ /* Set recoverymode right away to avoid the ATTENTION prompt. */
+ recoverymode = TRUE;
+! if (!check_changed(curbuf, (p_awa ? CCGD_AW : 0)
+! | CCGD_MULTWIN
+! | (eap->forceit ? CCGD_FORCEIT : 0)
+! | CCGD_EXCMD)
+!
+ && (*eap->arg == NUL
+ || setfname(curbuf, eap->arg, NULL, TRUE) == OK))
+ ml_recover();
+*** ../vim-7.4.081/src/version.c 2013-11-09 02:32:15.000000000 +0100
+--- src/version.c 2013-11-09 03:26:06.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 82,
+ /**/
+
+--
+People who want to share their religious views with you
+almost never want you to share yours with 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/patches/source/vim/patches/7.4.083 b/patches/source/vim/patches/7.4.083
new file mode 100644
index 00000000..c71450eb
--- /dev/null
+++ b/patches/source/vim/patches/7.4.083
@@ -0,0 +1,136 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.083
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.083
+Problem: It's hard to avoid adding a used pattern to the search history.
+Solution: Add the ":keeppatterns" modifier. (Christian Brabandt)
+Files: runtime/doc/cmdline.txt, src/ex_cmds.h, src/ex_docmd.c,
+ src/ex_getln.c, src/structs.h
+
+
+*** ../vim-7.4.082/runtime/doc/cmdline.txt 2013-08-10 13:24:52.000000000 +0200
+--- runtime/doc/cmdline.txt 2013-11-09 04:26:30.000000000 +0100
+***************
+*** 356,361 ****
+--- 356,365 ----
+ List the recent five entries from all histories: >
+ :history all -5,
+
++ :keepp[atterns] {command} *:keepp* *:keeppatterns*
++ Execute {command}, without adding anything to the search
++ history
++
+ ==============================================================================
+ 2. Command-line completion *cmdline-completion*
+
+*** ../vim-7.4.082/src/ex_cmds.h 2013-06-08 15:08:20.000000000 +0200
+--- src/ex_cmds.h 2013-11-09 04:26:30.000000000 +0100
+***************
+*** 477,482 ****
+--- 477,484 ----
+ NEEDARG|EXTRA|NOTRLCOM),
+ EX(CMD_keepjumps, "keepjumps", ex_wrongmodifier,
+ NEEDARG|EXTRA|NOTRLCOM),
++ EX(CMD_keeppatterns, "keeppatterns", ex_wrongmodifier,
++ NEEDARG|EXTRA|NOTRLCOM),
+ EX(CMD_keepalt, "keepalt", ex_wrongmodifier,
+ NEEDARG|EXTRA|NOTRLCOM),
+ EX(CMD_list, "list", ex_print,
+*** ../vim-7.4.082/src/ex_docmd.c 2013-11-09 03:31:45.000000000 +0100
+--- src/ex_docmd.c 2013-11-09 04:31:36.000000000 +0100
+***************
+*** 1843,1848 ****
+--- 1843,1853 ----
+ cmdmod.keepalt = TRUE;
+ continue;
+ }
++ if (checkforcmd(&ea.cmd, "keeppatterns", 5))
++ {
++ cmdmod.keeppatterns = TRUE;
++ continue;
++ }
+ if (!checkforcmd(&ea.cmd, "keepjumps", 5))
+ break;
+ cmdmod.keepjumps = TRUE;
+***************
+*** 2584,2589 ****
+--- 2589,2595 ----
+ case CMD_keepalt:
+ case CMD_keepjumps:
+ case CMD_keepmarks:
++ case CMD_keeppatterns:
+ case CMD_leftabove:
+ case CMD_let:
+ case CMD_lockmarks:
+***************
+*** 3089,3094 ****
+--- 3095,3101 ----
+ {"keepalt", 5, FALSE},
+ {"keepjumps", 5, FALSE},
+ {"keepmarks", 3, FALSE},
++ {"keeppatterns", 5, FALSE},
+ {"leftabove", 5, FALSE},
+ {"lockmarks", 3, FALSE},
+ {"noautocmd", 3, FALSE},
+***************
+*** 3597,3602 ****
+--- 3604,3610 ----
+ case CMD_keepalt:
+ case CMD_keepjumps:
+ case CMD_keepmarks:
++ case CMD_keeppatterns:
+ case CMD_leftabove:
+ case CMD_lockmarks:
+ case CMD_rightbelow:
+*** ../vim-7.4.082/src/ex_getln.c 2013-11-05 07:12:59.000000000 +0100
+--- src/ex_getln.c 2013-11-09 04:26:30.000000000 +0100
+***************
+*** 5498,5503 ****
+--- 5498,5506 ----
+ if (hislen == 0) /* no history */
+ return;
+
++ if (cmdmod.keeppatterns && histype == HIST_SEARCH)
++ return;
++
+ /*
+ * Searches inside the same mapping overwrite each other, so that only
+ * the last line is kept. Be careful not to remove a line that was moved
+*** ../vim-7.4.082/src/structs.h 2013-11-06 05:26:08.000000000 +0100
+--- src/structs.h 2013-11-09 04:26:30.000000000 +0100
+***************
+*** 542,547 ****
+--- 542,548 ----
+ int keepmarks; /* TRUE when ":keepmarks" was used */
+ int keepjumps; /* TRUE when ":keepjumps" was used */
+ int lockmarks; /* TRUE when ":lockmarks" was used */
++ int keeppatterns; /* TRUE when ":keeppatterns" was used */
+ # ifdef FEAT_AUTOCMD
+ char_u *save_ei; /* saved value of 'eventignore' */
+ # endif
+*** ../vim-7.4.082/src/version.c 2013-11-09 03:31:45.000000000 +0100
+--- src/version.c 2013-11-09 04:29:07.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 83,
+ /**/
+
+--
+I am always surprised in the Linux world how quickly solutions can be
+obtained. (Imagine sending an email to Bill Gates, asking why Windows
+crashed, and how to fix it... and then getting an answer that fixed the
+problem... <0>_<0> !) -- Mark Langdon
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.084 b/patches/source/vim/patches/7.4.084
new file mode 100644
index 00000000..142e251d
--- /dev/null
+++ b/patches/source/vim/patches/7.4.084
@@ -0,0 +1,184 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.084
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.084
+Problem: Python: interrupt not being properly discarded. (Yggdroot Chen)
+Solution: Discard interrupt in VimTryEnd. (ZyX)
+Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok,
+ src/testdir/test87.in, src/testdir/test87.ok
+
+
+*** ../vim-7.4.083/src/if_py_both.h 2013-11-04 00:34:47.000000000 +0100
+--- src/if_py_both.h 2013-11-11 00:56:41.000000000 +0100
+***************
+*** 558,564 ****
+ /* Keyboard interrupt should be preferred over anything else */
+ if (got_int)
+ {
+! did_throw = got_int = FALSE;
+ PyErr_SetNone(PyExc_KeyboardInterrupt);
+ return -1;
+ }
+--- 558,568 ----
+ /* Keyboard interrupt should be preferred over anything else */
+ if (got_int)
+ {
+! if (current_exception != NULL)
+! discard_current_exception();
+! else
+! need_rethrow = did_throw = FALSE;
+! got_int = FALSE;
+ PyErr_SetNone(PyExc_KeyboardInterrupt);
+ return -1;
+ }
+***************
+*** 567,573 ****
+ /* Python exception is preferred over vim one; unlikely to occur though */
+ else if (PyErr_Occurred())
+ {
+! did_throw = FALSE;
+ return -1;
+ }
+ /* Finally transform VimL exception to python one */
+--- 571,580 ----
+ /* Python exception is preferred over vim one; unlikely to occur though */
+ else if (PyErr_Occurred())
+ {
+! if (current_exception != NULL)
+! discard_current_exception();
+! else
+! need_rethrow = did_throw = FALSE;
+ return -1;
+ }
+ /* Finally transform VimL exception to python one */
+*** ../vim-7.4.083/src/testdir/test86.in 2013-11-04 00:34:47.000000000 +0100
+--- src/testdir/test86.in 2013-11-11 00:56:11.000000000 +0100
+***************
+*** 1281,1286 ****
+--- 1281,1317 ----
+ EOF
+ :delfunction Exe
+ :"
++ :" Regression: interrupting vim.command propagates to next vim.command
++ py << EOF
++ def test_keyboard_interrupt():
++ try:
++ vim.command('while 1 | endwhile')
++ except KeyboardInterrupt:
++ cb.append('Caught KeyboardInterrupt')
++ except Exception:
++ cb.append('!!!!!!!! Caught exception: ' + repr(sys.exc_info))
++ else:
++ cb.append('!!!!!!!! No exception')
++ try:
++ vim.command('$ put =\'Running :put\'')
++ except KeyboardInterrupt:
++ cb.append('!!!!!!!! Caught KeyboardInterrupt')
++ except Exception:
++ cb.append('!!!!!!!! Caught exception: ' + repr(sys.exc_info))
++ else:
++ cb.append('No exception')
++ EOF
++ :debuggreedy
++ :call inputsave()
++ :call feedkeys("s\ns\ns\ns\nq\n")
++ :redir => output
++ :debug silent! py test_keyboard_interrupt()
++ :redir END
++ :0 debuggreedy
++ :silent $put =output
++ :unlet output
++ :py del test_keyboard_interrupt
++ :"
+ :" Cleanup
+ py << EOF
+ del cb
+*** ../vim-7.4.083/src/testdir/test86.ok 2013-11-04 00:34:47.000000000 +0100
+--- src/testdir/test86.ok 2013-11-11 00:56:11.000000000 +0100
+***************
+*** 1198,1200 ****
+--- 1198,1204 ----
+ vim.eval("Exe('echoerr ''jkl''')"):error:('Vim(echoerr):jkl',)
+ vim.eval("Exe('xxx_non_existent_command_xxx')"):error:('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',)
+ vim.bindeval("Exe('xxx_non_existent_command_xxx')"):error:('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',)
++ Caught KeyboardInterrupt
++ Running :put
++ No exception
++
+*** ../vim-7.4.083/src/testdir/test87.in 2013-11-04 00:34:47.000000000 +0100
+--- src/testdir/test87.in 2013-11-11 00:56:11.000000000 +0100
+***************
+*** 1232,1237 ****
+--- 1232,1268 ----
+ EOF
+ :delfunction Exe
+ :"
++ :" Regression: interrupting vim.command propagates to next vim.command
++ py3 << EOF
++ def test_keyboard_interrupt():
++ try:
++ vim.command('while 1 | endwhile')
++ except KeyboardInterrupt:
++ cb.append('Caught KeyboardInterrupt')
++ except Exception as e:
++ cb.append('!!!!!!!! Caught exception: ' + repr(e))
++ else:
++ cb.append('!!!!!!!! No exception')
++ try:
++ vim.command('$ put =\'Running :put\'')
++ except KeyboardInterrupt:
++ cb.append('!!!!!!!! Caught KeyboardInterrupt')
++ except Exception as e:
++ cb.append('!!!!!!!! Caught exception: ' + repr(e))
++ else:
++ cb.append('No exception')
++ EOF
++ :debuggreedy
++ :call inputsave()
++ :call feedkeys("s\ns\ns\ns\nq\n")
++ :redir => output
++ :debug silent! py3 test_keyboard_interrupt()
++ :redir END
++ :0 debuggreedy
++ :silent $put =output
++ :unlet output
++ :py3 del test_keyboard_interrupt
++ :"
+ :" Cleanup
+ py3 << EOF
+ del cb
+*** ../vim-7.4.083/src/testdir/test87.ok 2013-11-04 00:34:47.000000000 +0100
+--- src/testdir/test87.ok 2013-11-11 00:56:11.000000000 +0100
+***************
+*** 1187,1189 ****
+--- 1187,1193 ----
+ vim.eval("Exe('echoerr ''jkl''')"):(<class 'vim.error'>, error('Vim(echoerr):jkl',))
+ vim.eval("Exe('xxx_non_existent_command_xxx')"):(<class 'vim.error'>, error('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',))
+ vim.bindeval("Exe('xxx_non_existent_command_xxx')"):(<class 'vim.error'>, error('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',))
++ Caught KeyboardInterrupt
++ Running :put
++ No exception
++
+*** ../vim-7.4.083/src/version.c 2013-11-09 05:30:18.000000000 +0100
+--- src/version.c 2013-11-11 00:55:23.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 84,
+ /**/
+
+--
+Computers make very fast, very accurate, 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/patches/source/vim/patches/7.4.085 b/patches/source/vim/patches/7.4.085
new file mode 100644
index 00000000..a6e9a804
--- /dev/null
+++ b/patches/source/vim/patches/7.4.085
@@ -0,0 +1,118 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.085
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.085
+Problem: When inserting text in Visual block mode and moving the cursor the
+ wrong text gets repeated in other lines.
+Solution: Use the '[ mark to find the start of the actually inserted text.
+ (Christian Brabandt)
+Files: src/ops.c, src/testdir/test39.in, src/testdir/test39.ok
+
+
+*** ../vim-7.4.084/src/ops.c 2013-11-05 07:12:59.000000000 +0100
+--- src/ops.c 2013-11-11 01:23:14.000000000 +0100
+***************
+*** 2640,2645 ****
+--- 2640,2670 ----
+ {
+ struct block_def bd2;
+
++ /* The user may have moved the cursor before inserting something, try
++ * to adjust the block for that. */
++ if (oap->start.lnum == curbuf->b_op_start.lnum)
++ {
++ if (oap->op_type == OP_INSERT
++ && oap->start.col != curbuf->b_op_start.col)
++ {
++ oap->start.col = curbuf->b_op_start.col;
++ pre_textlen -= getviscol2(oap->start.col, oap->start.coladd)
++ - oap->start_vcol;
++ oap->start_vcol = getviscol2(oap->start.col, oap->start.coladd);
++ }
++ else if (oap->op_type == OP_APPEND
++ && oap->end.col >= curbuf->b_op_start.col)
++ {
++ oap->start.col = curbuf->b_op_start.col;
++ /* reset pre_textlen to the value of OP_INSERT */
++ pre_textlen += bd.textlen;
++ pre_textlen -= getviscol2(oap->start.col, oap->start.coladd)
++ - oap->start_vcol;
++ oap->start_vcol = getviscol2(oap->start.col, oap->start.coladd);
++ oap->op_type = OP_INSERT;
++ }
++ }
++
+ /*
+ * Spaces and tabs in the indent may have changed to other spaces and
+ * tabs. Get the starting column again and correct the length.
+*** ../vim-7.4.084/src/testdir/test39.in 2013-11-04 01:41:11.000000000 +0100
+--- src/testdir/test39.in 2013-11-11 01:20:51.000000000 +0100
+***************
+*** 19,24 ****
+--- 19,28 ----
+ :" Test block-change
+ G$khhhhhkkcmno
+ :$-4,$w! test.out
++ :" Test block-insert using cursor keys for movement
++ /^aaaa/
++ :exe ":norm! l\<C-V>jjjlllI\<Right>\<Right> \<Esc>"
++ :/^aa/,/^$/w >> test.out
+ :" gUe must uppercase a whole word, also when changes to SS
+ Gothe youtueuu endYpk0wgUe
+ :" gUfx must uppercase until x, inclusive.
+***************
+*** 40,45 ****
+--- 44,54 ----
+ :qa!
+ ENDTEST
+
++ aaaaaa
++ bbbbbb
++ cccccc
++ dddddd
++
+ abcdefghijklm
+ abcdefghijklm
+ abcdefghijklm
+*** ../vim-7.4.084/src/testdir/test39.ok 2013-11-04 01:41:11.000000000 +0100
+--- src/testdir/test39.ok 2013-11-11 01:20:51.000000000 +0100
+***************
+*** 3,8 ****
+--- 3,13 ----
+ axyzqqqqef mno ghijklm
+ axyzqqqqefgmnoklm
+ abcdqqqqijklm
++ aaa aaa
++ bbb bbb
++ ccc ccc
++ ddd ddd
++
+ the YOUTUSSEUU end
+ - yOUSSTUSSEXu -
+ THE YOUTUSSEUU END
+*** ../vim-7.4.084/src/version.c 2013-11-11 01:05:43.000000000 +0100
+--- src/version.c 2013-11-11 01:18:01.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 85,
+ /**/
+
+--
+SOLDIER: What? Ridden on a horse?
+ARTHUR: Yes!
+SOLDIER: You're using coconuts!
+ "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/patches/source/vim/patches/7.4.086 b/patches/source/vim/patches/7.4.086
new file mode 100644
index 00000000..46f9eb90
--- /dev/null
+++ b/patches/source/vim/patches/7.4.086
@@ -0,0 +1,145 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.086
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.086
+Problem: Skipping over an expression when not evaluating it does not work
+ properly for dict members.
+Solution: Skip over unrecognized expression. (ZyX)
+Files: src/eval.c, src/testdir/test34.in, src/testdir/test34.ok
+
+
+*** ../vim-7.4.085/src/eval.c 2013-11-08 04:30:06.000000000 +0100
+--- src/eval.c 2013-11-11 04:11:38.000000000 +0100
+***************
+*** 19845,19868 ****
+ while (ret == OK
+ && (**arg == '['
+ || (**arg == '.' && rettv->v_type == VAR_DICT)
+! || (**arg == '(' && rettv->v_type == VAR_FUNC))
+ && !vim_iswhite(*(*arg - 1)))
+ {
+ if (**arg == '(')
+ {
+ /* need to copy the funcref so that we can clear rettv */
+! functv = *rettv;
+! rettv->v_type = VAR_UNKNOWN;
+
+! /* Invoke the function. Recursive! */
+! s = functv.vval.v_string;
+ ret = get_func_tv(s, (int)STRLEN(s), rettv, arg,
+ curwin->w_cursor.lnum, curwin->w_cursor.lnum,
+ &len, evaluate, selfdict);
+
+ /* Clear the funcref afterwards, so that deleting it while
+ * evaluating the arguments is possible (see test55). */
+! clear_tv(&functv);
+
+ /* Stop the expression evaluation when immediately aborting on
+ * error, or when an interrupt occurred or an exception was thrown
+--- 19845,19874 ----
+ while (ret == OK
+ && (**arg == '['
+ || (**arg == '.' && rettv->v_type == VAR_DICT)
+! || (**arg == '(' && (!evaluate || rettv->v_type == VAR_FUNC)))
+ && !vim_iswhite(*(*arg - 1)))
+ {
+ if (**arg == '(')
+ {
+ /* need to copy the funcref so that we can clear rettv */
+! if (evaluate)
+! {
+! functv = *rettv;
+! rettv->v_type = VAR_UNKNOWN;
+
+! /* Invoke the function. Recursive! */
+! s = functv.vval.v_string;
+! }
+! else
+! s = (char_u *)"";
+ ret = get_func_tv(s, (int)STRLEN(s), rettv, arg,
+ curwin->w_cursor.lnum, curwin->w_cursor.lnum,
+ &len, evaluate, selfdict);
+
+ /* Clear the funcref afterwards, so that deleting it while
+ * evaluating the arguments is possible (see test55). */
+! if (evaluate)
+! clear_tv(&functv);
+
+ /* Stop the expression evaluation when immediately aborting on
+ * error, or when an interrupt occurred or an exception was thrown
+*** ../vim-7.4.085/src/testdir/test34.in 2012-07-16 16:51:29.000000000 +0200
+--- src/testdir/test34.in 2013-11-11 04:10:13.000000000 +0100
+***************
+*** 1,6 ****
+--- 1,7 ----
+ Test for user functions.
+ Also test an <expr> mapping calling a function.
+ Also test that a builtin function cannot be replaced.
++ Also test for regression when calling arbitrary expression.
+
+ STARTTEST
+ :so small.vim
+***************
+*** 62,68 ****
+ [(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
+--- 63,79 ----
+ [(one again:call append(line('$'), max([1, 2, 3]))
+ :call extend(g:, {'max': function('min')})
+ :call append(line('$'), max([1, 2, 3]))
+! :try
+! : " Regression: the first line below used to throw ?E110: Missing ')'?
+! : " Second is here just to prove that this line is correct when not skipping
+! : " rhs of &&.
+! : $put =(0&&(function('tr'))(1, 2, 3))
+! : $put =(1&&(function('tr'))(1, 2, 3))
+! :catch
+! : $put ='!!! Unexpected exception:'
+! : $put =v:exception
+! :endtry
+! :$-9,$w! test.out
+ :delfunc Table
+ :delfunc Compute
+ :delfunc Expr1
+*** ../vim-7.4.085/src/testdir/test34.ok 2012-07-16 16:43:15.000000000 +0200
+--- src/testdir/test34.ok 2013-11-11 04:10:13.000000000 +0100
+***************
+*** 6,8 ****
+--- 6,10 ----
+ 1. one again
+ 3
+ 3
++ 0
++ 1
+*** ../vim-7.4.085/src/version.c 2013-11-11 01:29:16.000000000 +0100
+--- src/version.c 2013-11-11 04:15:59.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 86,
+ /**/
+
+--
+ARTHUR: The swallow may fly south with the sun, or the house martin or the
+ plover seek warmer hot lands in winter, yet these are not strangers to
+ our land.
+SOLDIER: Are you suggesting coconuts migrate?
+ "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/patches/source/vim/patches/7.4.087 b/patches/source/vim/patches/7.4.087
new file mode 100644
index 00000000..b8c1a48a
--- /dev/null
+++ b/patches/source/vim/patches/7.4.087
@@ -0,0 +1,56 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.087
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.087
+Problem: Compiler warning on 64 bit Windows systems.
+Solution: Fix type cast. (Mike Williams)
+Files: src/ops.c
+
+
+*** ../vim-7.4.086/src/ops.c 2013-11-11 01:29:16.000000000 +0100
+--- src/ops.c 2013-11-11 23:16:06.000000000 +0100
+***************
+*** 2193,2199 ****
+ else
+ {
+ /* Replacing with \r or \n means splitting the line. */
+! after_p = alloc_check((unsigned)oldlen + 1 + n - STRLEN(newp));
+ if (after_p != NULL)
+ STRMOVE(after_p, oldp);
+ }
+--- 2193,2200 ----
+ else
+ {
+ /* Replacing with \r or \n means splitting the line. */
+! after_p = alloc_check(
+! (unsigned)(oldlen + 1 + n - STRLEN(newp)));
+ if (after_p != NULL)
+ STRMOVE(after_p, oldp);
+ }
+*** ../vim-7.4.086/src/version.c 2013-11-11 04:25:48.000000000 +0100
+--- src/version.c 2013-11-11 23:16:23.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 87,
+ /**/
+
+
+--
+SECOND SOLDIER: It could be carried by an African swallow!
+FIRST SOLDIER: Oh yes! An African swallow maybe ... but not a European
+ swallow. that's my point.
+ "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/patches/source/vim/patches/7.4.088 b/patches/source/vim/patches/7.4.088
new file mode 100644
index 00000000..62dc91ca
--- /dev/null
+++ b/patches/source/vim/patches/7.4.088
@@ -0,0 +1,564 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.088
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.088
+Problem: When spell checking is enabled Asian characters are always marked
+ as error.
+Solution: When 'spelllang' contains "cjk" do not mark Asian characters as
+ error. (Ken Takata)
+Files: runtime/doc/options.txt, runtime/doc/spell.txt, src/mbyte.c,
+ src/option.c, src/spell.c, src/structs.h
+
+
+*** ../vim-7.4.087/runtime/doc/options.txt 2013-11-06 05:26:08.000000000 +0100
+--- runtime/doc/options.txt 2013-11-12 04:00:51.000000000 +0100
+***************
+*** 6555,6560 ****
+--- 6555,6563 ----
+ region by listing them: "en_us,en_ca" supports both US and Canadian
+ English, but not words specific for Australia, New Zealand or Great
+ Britain.
++ If the name "cjk" is included East Asian characters are excluded from
++ spell checking. This is useful when editing text that also has Asian
++ words.
+ *E757*
+ As a special case the name of a .spl file can be given as-is. The
+ first "_xx" in the name is removed and used as the region name
+*** ../vim-7.4.087/runtime/doc/spell.txt 2013-08-10 13:25:01.000000000 +0200
+--- runtime/doc/spell.txt 2013-11-12 04:02:27.000000000 +0100
+***************
+*** 269,274 ****
+--- 269,281 ----
+ latin1 yi transliterated Yiddish
+ utf-8 yi-tr transliterated Yiddish
+
++ *spell-cjk*
++ Chinese, Japanese and other East Asian characters are normally marked as
++ errors, because spell checking of these characters is not supported. If
++ 'spelllang' includes "cjk", these characters are not marked as errors. This
++ is useful when editing text with spell checking while some Asian words are
++ present.
++
+
+ SPELL FILES *spell-load*
+
+*** ../vim-7.4.087/src/mbyte.c 2013-07-05 20:07:21.000000000 +0200
+--- src/mbyte.c 2013-11-12 03:55:50.000000000 +0100
+***************
+*** 947,954 ****
+ {
+ case 0x2121: /* ZENKAKU space */
+ return 0;
+! case 0x2122: /* KU-TEN (Japanese comma) */
+! case 0x2123: /* TOU-TEN (Japanese period) */
+ case 0x2124: /* ZENKAKU comma */
+ case 0x2125: /* ZENKAKU period */
+ return 1;
+--- 947,954 ----
+ {
+ case 0x2121: /* ZENKAKU space */
+ return 0;
+! case 0x2122: /* TOU-TEN (Japanese comma) */
+! case 0x2123: /* KU-TEN (Japanese period) */
+ case 0x2124: /* ZENKAKU comma */
+ case 0x2125: /* ZENKAKU period */
+ return 1;
+***************
+*** 2477,2485 ****
+ /* sorted list of non-overlapping intervals */
+ static struct clinterval
+ {
+! unsigned short first;
+! unsigned short last;
+! unsigned short class;
+ } classes[] =
+ {
+ {0x037e, 0x037e, 1}, /* Greek question mark */
+--- 2477,2485 ----
+ /* sorted list of non-overlapping intervals */
+ static struct clinterval
+ {
+! unsigned int first;
+! unsigned int last;
+! unsigned int class;
+ } classes[] =
+ {
+ {0x037e, 0x037e, 1}, /* Greek question mark */
+***************
+*** 2544,2549 ****
+--- 2544,2553 ----
+ {0xff1a, 0xff20, 1}, /* half/fullwidth ASCII */
+ {0xff3b, 0xff40, 1}, /* half/fullwidth ASCII */
+ {0xff5b, 0xff65, 1}, /* half/fullwidth ASCII */
++ {0x20000, 0x2a6df, 0x4e00}, /* CJK Ideographs */
++ {0x2a700, 0x2b73f, 0x4e00}, /* CJK Ideographs */
++ {0x2b740, 0x2b81f, 0x4e00}, /* CJK Ideographs */
++ {0x2f800, 0x2fa1f, 0x4e00}, /* CJK Ideographs */
+ };
+ int bot = 0;
+ int top = sizeof(classes) / sizeof(struct clinterval) - 1;
+***************
+*** 2563,2571 ****
+ while (top >= bot)
+ {
+ mid = (bot + top) / 2;
+! if (classes[mid].last < c)
+ bot = mid + 1;
+! else if (classes[mid].first > c)
+ top = mid - 1;
+ else
+ return (int)classes[mid].class;
+--- 2567,2575 ----
+ while (top >= bot)
+ {
+ mid = (bot + top) / 2;
+! if (classes[mid].last < (unsigned int)c)
+ bot = mid + 1;
+! else if (classes[mid].first > (unsigned int)c)
+ top = mid - 1;
+ else
+ return (int)classes[mid].class;
+*** ../vim-7.4.087/src/option.c 2013-11-08 04:30:06.000000000 +0100
+--- src/option.c 2013-11-12 04:34:46.000000000 +0100
+***************
+*** 7122,7127 ****
+--- 7122,7132 ----
+ if (varp == &(curwin->w_s->b_p_spl))
+ {
+ char_u fname[200];
++ char_u *q = curwin->w_s->b_p_spl;
++
++ /* Skip the first name if it is "cjk". */
++ if (STRNCMP(q, "cjk,", 4) == 0)
++ q += 4;
+
+ /*
+ * Source the spell/LANG.vim in 'runtimepath'.
+***************
+*** 7129,7139 ****
+ * Use the first name in 'spelllang' up to '_region' or
+ * '.encoding'.
+ */
+! for (p = curwin->w_s->b_p_spl; *p != NUL; ++p)
+ if (vim_strchr((char_u *)"_.,", *p) != NULL)
+ break;
+! vim_snprintf((char *)fname, 200, "spell/%.*s.vim",
+! (int)(p - curwin->w_s->b_p_spl), curwin->w_s->b_p_spl);
+ source_runtime(fname, TRUE);
+ }
+ #endif
+--- 7134,7143 ----
+ * Use the first name in 'spelllang' up to '_region' or
+ * '.encoding'.
+ */
+! for (p = q; *p != NUL; ++p)
+ if (vim_strchr((char_u *)"_.,", *p) != NULL)
+ break;
+! vim_snprintf((char *)fname, 200, "spell/%.*s.vim", (int)(p - q), q);
+ source_runtime(fname, TRUE);
+ }
+ #endif
+*** ../vim-7.4.087/src/spell.c 2013-09-29 13:38:25.000000000 +0200
+--- src/spell.c 2013-11-12 04:37:33.000000000 +0100
+***************
+*** 754,762 ****
+ static void clear_spell_chartab __ARGS((spelltab_T *sp));
+ static int set_spell_finish __ARGS((spelltab_T *new_st));
+ static int spell_iswordp __ARGS((char_u *p, win_T *wp));
+! static int spell_iswordp_nmw __ARGS((char_u *p));
+ #ifdef FEAT_MBYTE
+! static int spell_mb_isword_class __ARGS((int cl));
+ static int spell_iswordp_w __ARGS((int *p, win_T *wp));
+ #endif
+ static int write_spell_prefcond __ARGS((FILE *fd, garray_T *gap));
+--- 754,762 ----
+ static void clear_spell_chartab __ARGS((spelltab_T *sp));
+ static int set_spell_finish __ARGS((spelltab_T *new_st));
+ static int spell_iswordp __ARGS((char_u *p, win_T *wp));
+! static int spell_iswordp_nmw __ARGS((char_u *p, win_T *wp));
+ #ifdef FEAT_MBYTE
+! static int spell_mb_isword_class __ARGS((int cl, win_T *wp));
+ static int spell_iswordp_w __ARGS((int *p, win_T *wp));
+ #endif
+ static int write_spell_prefcond __ARGS((FILE *fd, garray_T *gap));
+***************
+*** 1149,1155 ****
+
+ /* When we are at a non-word character there is no error, just
+ * skip over the character (try looking for a word after it). */
+! else if (!spell_iswordp_nmw(ptr))
+ {
+ if (capcol != NULL && wp->w_s->b_cap_prog != NULL)
+ {
+--- 1149,1155 ----
+
+ /* When we are at a non-word character there is no error, just
+ * skip over the character (try looking for a word after it). */
+! else if (!spell_iswordp_nmw(ptr, wp))
+ {
+ if (capcol != NULL && wp->w_s->b_cap_prog != NULL)
+ {
+***************
+*** 1561,1567 ****
+ * accept a no-caps word, even when the dictionary
+ * word specifies ONECAP. */
+ mb_ptr_back(mip->mi_word, p);
+! if (spell_iswordp_nmw(p)
+ ? capflags == WF_ONECAP
+ : (flags & WF_ONECAP) != 0
+ && capflags != WF_ONECAP)
+--- 1561,1567 ----
+ * accept a no-caps word, even when the dictionary
+ * word specifies ONECAP. */
+ mb_ptr_back(mip->mi_word, p);
+! if (spell_iswordp_nmw(p, mip->mi_win)
+ ? capflags == WF_ONECAP
+ : (flags & WF_ONECAP) != 0
+ && capflags != WF_ONECAP)
+***************
+*** 4234,4240 ****
+ if (spl_copy == NULL)
+ goto theend;
+
+! /* loop over comma separated language names. */
+ for (splp = spl_copy; *splp != NUL; )
+ {
+ /* Get one language name. */
+--- 4234,4242 ----
+ if (spl_copy == NULL)
+ goto theend;
+
+! wp->w_s->b_cjk = 0;
+!
+! /* Loop over comma separated language names. */
+ for (splp = spl_copy; *splp != NUL; )
+ {
+ /* Get one language name. */
+***************
+*** 4242,4247 ****
+--- 4244,4255 ----
+ region = NULL;
+ len = (int)STRLEN(lang);
+
++ if (STRCMP(lang, "cjk") == 0)
++ {
++ wp->w_s->b_cjk = 1;
++ continue;
++ }
++
+ /* If the name ends in ".spl" use it as the name of the spell file.
+ * If there is a region name let "region" point to it and remove it
+ * from the name. */
+***************
+*** 4601,4607 ****
+ int past_second = FALSE; /* past second word char */
+
+ /* find first letter */
+! for (p = word; !spell_iswordp_nmw(p); mb_ptr_adv(p))
+ if (end == NULL ? *p == NUL : p >= end)
+ return 0; /* only non-word characters, illegal word */
+ #ifdef FEAT_MBYTE
+--- 4609,4615 ----
+ int past_second = FALSE; /* past second word char */
+
+ /* find first letter */
+! for (p = word; !spell_iswordp_nmw(p, curwin); mb_ptr_adv(p))
+ if (end == NULL ? *p == NUL : p >= end)
+ return 0; /* only non-word characters, illegal word */
+ #ifdef FEAT_MBYTE
+***************
+*** 4617,4623 ****
+ * But a word with an upper char only at start is a ONECAP.
+ */
+ for ( ; end == NULL ? *p != NUL : p < end; mb_ptr_adv(p))
+! if (spell_iswordp_nmw(p))
+ {
+ c = PTR2CHAR(p);
+ if (!SPELL_ISUPPER(c))
+--- 4625,4631 ----
+ * But a word with an upper char only at start is a ONECAP.
+ */
+ for ( ; end == NULL ? *p != NUL : p < end; mb_ptr_adv(p))
+! if (spell_iswordp_nmw(p, curwin))
+ {
+ c = PTR2CHAR(p);
+ if (!SPELL_ISUPPER(c))
+***************
+*** 9907,9913 ****
+
+ c = mb_ptr2char(s);
+ if (c > 255)
+! return spell_mb_isword_class(mb_get_class(s));
+ return spelltab.st_isw[c];
+ }
+ #endif
+--- 9915,9921 ----
+
+ c = mb_ptr2char(s);
+ if (c > 255)
+! return spell_mb_isword_class(mb_get_class(s), wp);
+ return spelltab.st_isw[c];
+ }
+ #endif
+***************
+*** 9920,9927 ****
+ * Unlike spell_iswordp() this doesn't check for "midword" characters.
+ */
+ static int
+! spell_iswordp_nmw(p)
+ char_u *p;
+ {
+ #ifdef FEAT_MBYTE
+ int c;
+--- 9928,9936 ----
+ * Unlike spell_iswordp() this doesn't check for "midword" characters.
+ */
+ static int
+! spell_iswordp_nmw(p, wp)
+ char_u *p;
++ win_T *wp;
+ {
+ #ifdef FEAT_MBYTE
+ int c;
+***************
+*** 9930,9936 ****
+ {
+ c = mb_ptr2char(p);
+ if (c > 255)
+! return spell_mb_isword_class(mb_get_class(p));
+ return spelltab.st_isw[c];
+ }
+ #endif
+--- 9939,9945 ----
+ {
+ c = mb_ptr2char(p);
+ if (c > 255)
+! return spell_mb_isword_class(mb_get_class(p), wp);
+ return spelltab.st_isw[c];
+ }
+ #endif
+***************
+*** 9942,9952 ****
+ * Return TRUE if word class indicates a word character.
+ * Only for characters above 255.
+ * Unicode subscript and superscript are not considered word characters.
+ */
+ static int
+! spell_mb_isword_class(cl)
+! int cl;
+ {
+ return cl >= 2 && cl != 0x2070 && cl != 0x2080;
+ }
+
+--- 9951,9966 ----
+ * Return TRUE if word class indicates a word character.
+ * Only for characters above 255.
+ * Unicode subscript and superscript are not considered word characters.
++ * See also dbcs_class() and utf_class() in mbyte.c.
+ */
+ static int
+! spell_mb_isword_class(cl, wp)
+! int cl;
+! win_T *wp;
+ {
++ if (wp->w_s->b_cjk)
++ /* East Asian characters are not considered word characters. */
++ return cl == 2 || cl == 0x2800;
+ return cl >= 2 && cl != 0x2070 && cl != 0x2080;
+ }
+
+***************
+*** 9971,9979 ****
+ if (*s > 255)
+ {
+ if (enc_utf8)
+! return spell_mb_isword_class(utf_class(*s));
+ if (enc_dbcs)
+! return dbcs_class((unsigned)*s >> 8, *s & 0xff) >= 2;
+ return 0;
+ }
+ return spelltab.st_isw[*s];
+--- 9985,9994 ----
+ if (*s > 255)
+ {
+ if (enc_utf8)
+! return spell_mb_isword_class(utf_class(*s), wp);
+ if (enc_dbcs)
+! return spell_mb_isword_class(
+! dbcs_class((unsigned)*s >> 8, *s & 0xff), wp);
+ return 0;
+ }
+ return spelltab.st_isw[*s];
+***************
+*** 10193,10205 ****
+ line = ml_get_curline();
+ p = line + curwin->w_cursor.col;
+ /* Backup to before start of word. */
+! while (p > line && spell_iswordp_nmw(p))
+ mb_ptr_back(line, p);
+ /* Forward to start of word. */
+! while (*p != NUL && !spell_iswordp_nmw(p))
+ mb_ptr_adv(p);
+
+! if (!spell_iswordp_nmw(p)) /* No word found. */
+ {
+ beep_flush();
+ return;
+--- 10208,10220 ----
+ line = ml_get_curline();
+ p = line + curwin->w_cursor.col;
+ /* Backup to before start of word. */
+! while (p > line && spell_iswordp_nmw(p, curwin))
+ mb_ptr_back(line, p);
+ /* Forward to start of word. */
+! while (*p != NUL && !spell_iswordp_nmw(p, curwin))
+ mb_ptr_adv(p);
+
+! if (!spell_iswordp_nmw(p, curwin)) /* No word found. */
+ {
+ beep_flush();
+ return;
+***************
+*** 10436,10442 ****
+ for (;;)
+ {
+ mb_ptr_back(line, p);
+! if (p == line || spell_iswordp_nmw(p))
+ break;
+ if (vim_regexec(&regmatch, p, 0)
+ && regmatch.endp[0] == line + endcol)
+--- 10451,10457 ----
+ for (;;)
+ {
+ mb_ptr_back(line, p);
+! if (p == line || spell_iswordp_nmw(p, curwin))
+ break;
+ if (vim_regexec(&regmatch, p, 0)
+ && regmatch.endp[0] == line + endcol)
+***************
+*** 11645,11651 ****
+
+ /* When appending a compound word after a word character don't
+ * use Onecap. */
+! if (p != NULL && spell_iswordp_nmw(p))
+ c &= ~WF_ONECAP;
+ make_case_word(tword + sp->ts_splitoff,
+ preword + sp->ts_prewordlen, c);
+--- 11660,11666 ----
+
+ /* When appending a compound word after a word character don't
+ * use Onecap. */
+! if (p != NULL && spell_iswordp_nmw(p, curwin))
+ c &= ~WF_ONECAP;
+ make_case_word(tword + sp->ts_splitoff,
+ preword + sp->ts_prewordlen, c);
+***************
+*** 11895,11901 ****
+ * character when the word ends. But only when the
+ * good word can end. */
+ if (((!try_compound && !spell_iswordp_nmw(fword
+! + sp->ts_fidx))
+ || fword_ends)
+ && fword[sp->ts_fidx] != NUL
+ && goodword_ends)
+--- 11910,11917 ----
+ * character when the word ends. But only when the
+ * good word can end. */
+ if (((!try_compound && !spell_iswordp_nmw(fword
+! + sp->ts_fidx,
+! curwin))
+ || fword_ends)
+ && fword[sp->ts_fidx] != NUL
+ && goodword_ends)
+***************
+*** 14226,14232 ****
+ }
+ else
+ {
+! if (spell_iswordp_nmw(s))
+ *t++ = *s;
+ ++s;
+ }
+--- 14242,14248 ----
+ }
+ else
+ {
+! if (spell_iswordp_nmw(s, curwin))
+ *t++ = *s;
+ ++s;
+ }
+***************
+*** 14521,14527 ****
+ else
+ {
+ did_white = FALSE;
+! if (!spell_iswordp_nmw(t))
+ continue;
+ }
+ }
+--- 14537,14543 ----
+ else
+ {
+ did_white = FALSE;
+! if (!spell_iswordp_nmw(t, curwin))
+ continue;
+ }
+ }
+***************
+*** 16045,16051 ****
+ for (p = line + startcol; p > line; )
+ {
+ mb_ptr_back(line, p);
+! if (spell_iswordp_nmw(p))
+ break;
+ }
+
+--- 16061,16067 ----
+ for (p = line + startcol; p > line; )
+ {
+ mb_ptr_back(line, p);
+! if (spell_iswordp_nmw(p, curwin))
+ break;
+ }
+
+*** ../vim-7.4.087/src/structs.h 2013-11-09 05:30:18.000000000 +0100
+--- src/structs.h 2013-11-12 03:55:50.000000000 +0100
+***************
+*** 1310,1315 ****
+--- 1310,1318 ----
+ regprog_T *b_cap_prog; /* program for 'spellcapcheck' */
+ char_u *b_p_spf; /* 'spellfile' */
+ char_u *b_p_spl; /* 'spelllang' */
++ # ifdef FEAT_MBYTE
++ int b_cjk; /* all CJK letters as OK */
++ # endif
+ #endif
+ #if !defined(FEAT_SYN_HL) && !defined(FEAT_SPELL)
+ int dummy;
+*** ../vim-7.4.087/src/version.c 2013-11-11 23:17:31.000000000 +0100
+--- src/version.c 2013-11-12 03:59:03.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 88,
+ /**/
+
+--
+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/patches/source/vim/patches/7.4.089 b/patches/source/vim/patches/7.4.089
new file mode 100644
index 00000000..80697cef
--- /dev/null
+++ b/patches/source/vim/patches/7.4.089
@@ -0,0 +1,47 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.089
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.089
+Problem: When editing a file in a directory mounted through sshfs Vim
+ doesn't set the security context on a renamed file.
+Solution: Add mch_copy_sec() to vim_rename(). (Peter Backes)
+Files: src/fileio.c
+
+
+*** ../vim-7.4.088/src/fileio.c 2013-08-30 17:06:56.000000000 +0200
+--- src/fileio.c 2013-11-12 05:07:22.000000000 +0100
+***************
+*** 6707,6712 ****
+--- 6707,6715 ----
+ mch_set_acl(to, acl);
+ mch_free_acl(acl);
+ #endif
++ #ifdef HAVE_SELINUX
++ mch_copy_sec(from, to)
++ #endif
+ if (errmsg != NULL)
+ {
+ EMSG2(errmsg, to);
+*** ../vim-7.4.088/src/version.c 2013-11-12 04:43:57.000000000 +0100
+--- src/version.c 2013-11-12 05:11:02.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 89,
+ /**/
+
+--
+Kiss me twice. I'm schizophrenic.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.090 b/patches/source/vim/patches/7.4.090
new file mode 100644
index 00000000..a7ee9275
--- /dev/null
+++ b/patches/source/vim/patches/7.4.090
@@ -0,0 +1,223 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.090
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.090
+Problem: Win32: When a directory name contains an exclamation mark,
+ completion doesn't complete the contents of the directory.
+Solution: Escape the exclamation mark. (Jan Stocker)
+Files: src/ex_getln.c, src/testdir/test102.in, src/testdir/test102.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.4.089/src/ex_getln.c 2013-11-09 05:30:18.000000000 +0100
+--- src/ex_getln.c 2013-11-12 05:23:15.000000000 +0100
+***************
+*** 3852,3860 ****
+ char_u buf[20];
+ int j = 0;
+
+! /* Don't escape '[' and '{' if they are in 'isfname'. */
+ for (p = PATH_ESC_CHARS; *p != NUL; ++p)
+! if ((*p != '[' && *p != '{') || !vim_isfilec(*p))
+ buf[j++] = *p;
+ buf[j] = NUL;
+ p = vim_strsave_escaped(fname, buf);
+--- 3852,3860 ----
+ char_u buf[20];
+ int j = 0;
+
+! /* Don't escape '[', '{' and '!' if they are in 'isfname'. */
+ for (p = PATH_ESC_CHARS; *p != NUL; ++p)
+! if ((*p != '[' && *p != '{' && *p != '!') || !vim_isfilec(*p))
+ buf[j++] = *p;
+ buf[j] = NUL;
+ p = vim_strsave_escaped(fname, buf);
+*** ../vim-7.4.089/src/testdir/test102.in 2013-11-12 05:27:48.000000000 +0100
+--- src/testdir/test102.in 2013-11-12 05:21:26.000000000 +0100
+***************
+*** 0 ****
+--- 1,12 ----
++ Test if fnameescape is correct for special chars like !
++
++ STARTTEST
++ :%d
++ :let fname = 'Xspa ce'
++ :try | exe "w! " . fnameescape(fname) | put='Space' | endtry
++ :let fname = 'Xemark!'
++ :try | exe "w! " . fnameescape(fname) | put='ExclamationMark' | endtry
++ :w! test.out
++ :qa!
++ ENDTEST
++
+*** ../vim-7.4.089/src/testdir/test102.ok 2013-11-12 05:27:48.000000000 +0100
+--- src/testdir/test102.ok 2013-11-12 05:21:19.000000000 +0100
+***************
+*** 0 ****
+--- 1,3 ----
++
++ Space
++ ExclamationMark
+*** ../vim-7.4.089/src/testdir/Make_amiga.mak 2013-11-08 04:30:06.000000000 +0100
+--- src/testdir/Make_amiga.mak 2013-11-12 05:20:03.000000000 +0100
+***************
+*** 34,40 ****
+ test81.out test82.out test83.out test84.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test97.out test98.out \
+! test99.out test100.out test101.out
+
+ .SUFFIXES: .in .out
+
+--- 34,40 ----
+ test81.out test82.out test83.out test84.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test97.out test98.out \
+! test99.out test100.out test101.out test102.out
+
+ .SUFFIXES: .in .out
+
+***************
+*** 152,154 ****
+--- 152,155 ----
+ test99.out: test99.in
+ test100.out: test100.in
+ test101.out: test101.in
++ test102.out: test102.in
+*** ../vim-7.4.089/src/testdir/Make_dos.mak 2013-11-08 04:30:06.000000000 +0100
+--- src/testdir/Make_dos.mak 2013-11-12 05:20:10.000000000 +0100
+***************
+*** 33,39 ****
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test98.out test99.out \
+! test100.out test101.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 33,39 ----
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test98.out test99.out \
+! test100.out test101.out test102.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.4.089/src/testdir/Make_ming.mak 2013-11-08 04:30:06.000000000 +0100
+--- src/testdir/Make_ming.mak 2013-11-12 05:20:14.000000000 +0100
+***************
+*** 53,59 ****
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test98.out test99.out \
+! test100out test101.out
+
+ SCRIPTS32 = test50.out test70.out
+
+--- 53,59 ----
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test98.out test99.out \
+! test100out test101.out test102.out
+
+ SCRIPTS32 = test50.out test70.out
+
+*** ../vim-7.4.089/src/testdir/Make_os2.mak 2013-11-08 04:30:06.000000000 +0100
+--- src/testdir/Make_os2.mak 2013-11-12 05:20:18.000000000 +0100
+***************
+*** 35,41 ****
+ test81.out test82.out test83.out test84.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test98.out test99.out \
+! test100.out test101.out
+
+ .SUFFIXES: .in .out
+
+--- 35,41 ----
+ test81.out test82.out test83.out test84.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test98.out test99.out \
+! test100.out test101.out test102.out
+
+ .SUFFIXES: .in .out
+
+*** ../vim-7.4.089/src/testdir/Make_vms.mms 2013-11-08 04:30:06.000000000 +0100
+--- src/testdir/Make_vms.mms 2013-11-12 05:20:21.000000000 +0100
+***************
+*** 4,10 ****
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2013 Nov 08
+ #
+ # 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: 2013 Nov 12
+ #
+ # 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.
+***************
+*** 79,85 ****
+ test82.out test83.out test84.out test88.out test89.out \
+ test90.out test91.out test92.out test93.out test94.out \
+ test95.out test96.out test97.out test98.out test99.out \
+! test100.out test101.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+--- 79,85 ----
+ test82.out test83.out test84.out test88.out test89.out \
+ test90.out test91.out test92.out test93.out test94.out \
+ test95.out test96.out test97.out test98.out test99.out \
+! test100.out test101.out test102.out
+
+ # Known problems:
+ # Test 30: a problem around mac format - unknown reason
+*** ../vim-7.4.089/src/testdir/Makefile 2013-11-08 04:30:06.000000000 +0100
+--- src/testdir/Makefile 2013-11-12 05:20:32.000000000 +0100
+***************
+*** 30,36 ****
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test97.out test98.out \
+! test99.out test100.out test101.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 30,36 ----
+ test84.out test85.out test86.out test87.out test88.out \
+ test89.out test90.out test91.out test92.out test93.out \
+ test94.out test95.out test96.out test97.out test98.out \
+! test99.out test100.out test101.out test102.out
+
+ SCRIPTS_GUI = test16.out
+
+*** ../vim-7.4.089/src/version.c 2013-11-12 05:11:58.000000000 +0100
+--- src/version.c 2013-11-12 05:24:24.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 90,
+ /**/
+
+--
+If you don't get everything you want, think of
+everything you didn't get and don't want.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.091 b/patches/source/vim/patches/7.4.091
new file mode 100644
index 00000000..230601df
--- /dev/null
+++ b/patches/source/vim/patches/7.4.091
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.091
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.091 (after 7.4.089)
+Problem: Missing semicolon.
+Solution: Add the semicolon.
+Files: src/fileio.c
+
+
+*** ../vim-7.4.090/src/fileio.c 2013-11-12 05:11:58.000000000 +0100
+--- src/fileio.c 2013-11-12 18:07:47.000000000 +0100
+***************
+*** 6708,6714 ****
+ mch_free_acl(acl);
+ #endif
+ #ifdef HAVE_SELINUX
+! mch_copy_sec(from, to)
+ #endif
+ if (errmsg != NULL)
+ {
+--- 6708,6714 ----
+ mch_free_acl(acl);
+ #endif
+ #ifdef HAVE_SELINUX
+! mch_copy_sec(from, to);
+ #endif
+ if (errmsg != NULL)
+ {
+*** ../vim-7.4.090/src/version.c 2013-11-12 05:28:08.000000000 +0100
+--- src/version.c 2013-11-12 18:08:33.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 91,
+ /**/
+
+--
+CART DRIVER: Bring out your dead!
+ We follow the cart through a wretched, impoverished plague-ridden village.
+ A few starved mongrels run about in the mud scavenging. In the open
+ doorway of one house perhaps we jug glimpse a pair of legs dangling from
+ the ceiling. In another doorway an OLD WOMAN is beating a cat against a
+ wall rather like one does with a mat. The cart passes round a dead donkey
+ or cow in the mud. And a MAN tied to a cart is being hammered to death by
+ four NUNS with huge mallets.
+ "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/patches/source/vim/patches/7.4.092 b/patches/source/vim/patches/7.4.092
new file mode 100644
index 00000000..e74888eb
--- /dev/null
+++ b/patches/source/vim/patches/7.4.092
@@ -0,0 +1,62 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.092
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.092 (after 7.4.088)
+Problem: Can't build small version.
+Solution: Add #ifdef where the b_cjk flag is used. (Ken Takata)
+Files: src/spell.c
+
+
+*** ../vim-7.4.091/src/spell.c 2013-11-12 04:43:57.000000000 +0100
+--- src/spell.c 2013-11-14 03:51:24.000000000 +0100
+***************
+*** 4234,4240 ****
+--- 4234,4242 ----
+ if (spl_copy == NULL)
+ goto theend;
+
++ #ifdef FEAT_MBYTE
+ wp->w_s->b_cjk = 0;
++ #endif
+
+ /* Loop over comma separated language names. */
+ for (splp = spl_copy; *splp != NUL; )
+***************
+*** 4246,4252 ****
+--- 4248,4256 ----
+
+ if (STRCMP(lang, "cjk") == 0)
+ {
++ #ifdef FEAT_MBYTE
+ wp->w_s->b_cjk = 1;
++ #endif
+ continue;
+ }
+
+*** ../vim-7.4.091/src/version.c 2013-11-12 18:09:20.000000000 +0100
+--- src/version.c 2013-11-14 03:52:18.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 92,
+ /**/
+
+--
+ARTHUR: Old woman!
+DENNIS: Man!
+ARTHUR: Man. I'm sorry. Old man, What knight live in that castle over there?
+DENNIS: I'm thirty-seven.
+ "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/patches/source/vim/patches/7.4.093 b/patches/source/vim/patches/7.4.093
new file mode 100644
index 00000000..24da0a8f
--- /dev/null
+++ b/patches/source/vim/patches/7.4.093
@@ -0,0 +1,72 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.093
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.093
+Problem: Configure can't use LuaJIT on ubuntu 12.04.
+Solution: Adjust the configure regexp that locates the version number.
+ (Charles Strahan)
+Files: src/configure.in, src/auto/configure
+
+
+*** ../vim-7.4.092/src/configure.in 2013-11-04 04:57:46.000000000 +0100
+--- src/configure.in 2013-11-17 20:12:04.000000000 +0100
+***************
+*** 496,502 ****
+ if test "X$vi_cv_path_luajit" != "X"; then
+ dnl -- find LuaJIT version
+ AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
+! [ vi_cv_version_luajit=`${vi_cv_path_luajit} -v | sed 's/LuaJIT \([[0-9.]]*\)\.[[0-9]] .*/\1/'` ])
+ AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
+ [ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
+ vi_cv_path_lua="$vi_cv_path_luajit"
+--- 496,502 ----
+ if test "X$vi_cv_path_luajit" != "X"; then
+ dnl -- find LuaJIT version
+ AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
+! [ vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([[0-9.]]*\)\.[[0-9]]\(-[[a-z0-9]]\+\)\? .*/\1/'` ])
+ AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
+ [ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
+ vi_cv_path_lua="$vi_cv_path_luajit"
+*** ../vim-7.4.092/src/auto/configure 2013-11-04 04:57:46.000000000 +0100
+--- src/auto/configure 2013-11-17 20:13:30.000000000 +0100
+***************
+*** 4743,4749 ****
+ if test "${vi_cv_version_luajit+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+ else
+! vi_cv_version_luajit=`${vi_cv_path_luajit} -v | sed 's/LuaJIT \([0-9.]*\)\.[0-9] .*/\1/'`
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_luajit" >&5
+ $as_echo "$vi_cv_version_luajit" >&6; }
+--- 4743,4749 ----
+ if test "${vi_cv_version_luajit+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+ else
+! vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([0-9.]*\)\.[0-9]\(-[a-z0-9]\+\)\? .*/\1/'`
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_luajit" >&5
+ $as_echo "$vi_cv_version_luajit" >&6; }
+*** ../vim-7.4.092/src/version.c 2013-11-14 03:54:02.000000000 +0100
+--- src/version.c 2013-11-17 20:13:43.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 93,
+ /**/
+
+--
+"Beware of bugs in the above code; I have only proved
+it correct, not tried it." -- Donald Knuth
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/patches/source/vim/patches/7.4.094 b/patches/source/vim/patches/7.4.094
new file mode 100644
index 00000000..96ebc4d4
--- /dev/null
+++ b/patches/source/vim/patches/7.4.094
@@ -0,0 +1,139 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.094
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.094
+Problem: Configure may not find that -lint is needed for gettext().
+Solution: Check for gettext() with empty $LIBS. (Thomas De Schampheleire)
+Files: src/configure.in, src/auto/configure
+
+
+*** ../vim-7.4.093/src/configure.in 2013-11-17 20:17:05.000000000 +0100
+--- src/configure.in 2013-11-17 20:23:49.000000000 +0100
+***************
+*** 3725,3730 ****
+--- 3725,3733 ----
+ fi
+
+ dnl Check if gettext() is working and if it needs -lintl
++ dnl We take care to base this on an empty LIBS: on some systems libelf would be
++ dnl in LIBS and implicitly take along libintl. The final LIBS would then not
++ dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
+ AC_MSG_CHECKING(--disable-nls argument)
+ AC_ARG_ENABLE(nls,
+ [ --disable-nls Don't support NLS (gettext()).], ,
+***************
+*** 3743,3758 ****
+ if test -f po/Makefile; then
+ have_gettext="no"
+ if test -n "$MSGFMT"; then
+ AC_TRY_LINK(
+ [#include <libintl.h>],
+ [gettext("Test");],
+! AC_MSG_RESULT([gettext() works]); have_gettext="yes",
+! olibs=$LIBS
+! LIBS="$LIBS -lintl"
+ AC_TRY_LINK(
+ [#include <libintl.h>],
+ [gettext("Test");],
+! AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
+ AC_MSG_RESULT([gettext() doesn't work]);
+ LIBS=$olibs))
+ else
+--- 3746,3763 ----
+ if test -f po/Makefile; then
+ have_gettext="no"
+ if test -n "$MSGFMT"; then
++ olibs=$LIBS
++ LIBS=""
+ AC_TRY_LINK(
+ [#include <libintl.h>],
+ [gettext("Test");],
+! AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
+! LIBS="-lintl"
+ AC_TRY_LINK(
+ [#include <libintl.h>],
+ [gettext("Test");],
+! AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
+! LIBS="$olibs -lintl",
+ AC_MSG_RESULT([gettext() doesn't work]);
+ LIBS=$olibs))
+ else
+*** ../vim-7.4.093/src/auto/configure 2013-11-17 20:17:05.000000000 +0100
+--- src/auto/configure 2013-11-17 20:25:13.000000000 +0100
+***************
+*** 12690,12695 ****
+--- 12690,12697 ----
+ if test -f po/Makefile; then
+ have_gettext="no"
+ if test -n "$MSGFMT"; then
++ olibs=$LIBS
++ LIBS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+ #include <libintl.h>
+***************
+*** 12703,12712 ****
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: gettext() works" >&5
+! $as_echo "gettext() works" >&6; }; have_gettext="yes"
+ else
+! olibs=$LIBS
+! LIBS="$LIBS -lintl"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+ #include <libintl.h>
+--- 12705,12713 ----
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: gettext() works" >&5
+! $as_echo "gettext() works" >&6; }; have_gettext="yes"; LIBS=$olibs
+ else
+! LIBS="-lintl"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+ #include <libintl.h>
+***************
+*** 12720,12726 ****
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: gettext() works with -lintl" >&5
+! $as_echo "gettext() works with -lintl" >&6; }; have_gettext="yes"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: gettext() doesn't work" >&5
+ $as_echo "gettext() doesn't work" >&6; };
+--- 12721,12728 ----
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: gettext() works with -lintl" >&5
+! $as_echo "gettext() works with -lintl" >&6; }; have_gettext="yes";
+! LIBS="$olibs -lintl"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: gettext() doesn't work" >&5
+ $as_echo "gettext() doesn't work" >&6; };
+*** ../vim-7.4.093/src/version.c 2013-11-17 20:17:05.000000000 +0100
+--- src/version.c 2013-11-17 20:27:43.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 94,
+ /**/
+
+--
+BLACK KNIGHT: The Black Knight always triumphs. Have at you!
+ ARTHUR takes his last leg off. The BLACK KNIGHT's body lands upright.
+BLACK KNIGHT: All right, we'll call it a draw.
+ "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/patches/source/vim/patches/7.4.095 b/patches/source/vim/patches/7.4.095
new file mode 100644
index 00000000..f7abfcaf
--- /dev/null
+++ b/patches/source/vim/patches/7.4.095
@@ -0,0 +1,73 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.095
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.095 (after 7.4.093)
+Problem: Regexp for LuaJIT version doesn't work on BSD.
+Solution: Use "*" instead of "\+" and "\?". (Ozaki)
+Files: src/configure.in, src/auto/configure
+
+
+*** ../vim-7.4.094/src/configure.in 2013-11-17 20:32:49.000000000 +0100
+--- src/configure.in 2013-11-21 12:04:46.000000000 +0100
+***************
+*** 496,502 ****
+ if test "X$vi_cv_path_luajit" != "X"; then
+ dnl -- find LuaJIT version
+ AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
+! [ vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([[0-9.]]*\)\.[[0-9]]\(-[[a-z0-9]]\+\)\? .*/\1/'` ])
+ AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
+ [ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
+ vi_cv_path_lua="$vi_cv_path_luajit"
+--- 496,502 ----
+ if test "X$vi_cv_path_luajit" != "X"; then
+ dnl -- find LuaJIT version
+ AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
+! [ vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([[0-9.]]*\)\.[[0-9]]\(-[[a-z0-9]]*\)* .*/\1/'` ])
+ AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
+ [ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
+ vi_cv_path_lua="$vi_cv_path_luajit"
+*** ../vim-7.4.094/src/auto/configure 2013-11-17 20:32:49.000000000 +0100
+--- src/auto/configure 2013-11-21 12:07:39.000000000 +0100
+***************
+*** 4743,4749 ****
+ if test "${vi_cv_version_luajit+